rtn (tp7)

raspi 15.04.02 13:23

Tekee päivän rutiinin (esim. tarkistaa viirukset) kerran päivässä.

 Tekstiversio  Arvo: 0 (0 ääntä)  Äänestä: +  -
{
  raspi@bittivuoto.org
  Tällä ohjelmalla voi ajaa jonkun toimenpiteen kerran päivässä (esim. bootissa).
  Itse käytin tätä viirusten tarkistamiseen w9x aikoina.
  .INI -tiedostoon voi kirjoittaa useita toimenpiteitä, mutta ne ajetaan vain kerran päivässä.
}

uses dos; { k„ytt„„ DOS kirjastoa }
{$M $8000,0,0 }
var { muuttujat: }
  versio,chkfile,rtnname,rtnprog,rtnparam,chksis,sisalto,tanaan,inifile:string;
  kirjoitachk,chkloytyy,rtnloytyy,ajettu,iniloytyy:boolean;
  year, month, day, dow : Word;
  chktiedosto,initiedosto:text;

{----------------------------------------------------------------------------}
function IntToStr(I: Longint): String; {Integerist„ stringiksi}
var
 S: string;
begin
 Str(I, S);
 IntToStr := S;
end;
{----------------------------------------------------------------------------}
function DeleteFile(FN : PathStr) : Boolean; {t„ll„ voi tuhota tiedostoja}
var
Regs : Registers;
begin
  FN:=FN+#0;          { Add NUL chr for DOS }
  Regs.AH:=$41;
  Regs.DX:=Ofs(FN) + 1; { Add 1 to bypass length byte }
  Regs.DS:=Seg(FN);
  MsDos(Regs);
  DeleteFile:= NOT (Regs.Flags AND $0=$0)
end;
{----------------------------------------------------------------------------}
Function FileExists(FileName : String) : Boolean; {onko tiedostoa olemassa?}
Var
DirInfo : SearchRec;
begin
  FindFirst(FileName, AnyFile, DirInfo);
  if (DosError = 0) then
    FileExists := True
  else
  FileExists := False;
end;
{----------------------------------------------------------------------------}
begin
  inifile:='rtn.ini';
  chkfile:='rtn.chk';
  versio:='14.08.2000 beta5';
  chkloytyy:=false;
  iniloytyy:=false;
  ajettu:=false;
  rtnloytyy:=false;
  kirjoitachk:=false;
  GetDate(year,month,day,dow); {otetaan selville p„iv„m„„r„}
  tanaan:=IntToStr(day)+'.'+   {muunnetaan wordit stringiksi}
      IntToStr(month)+'.'+
      IntToStr(year);

  writeln('RUTINA (freeware) v', versio, ' | (C)opyright raspi 2000 ------');
  writeln('---------------------- raspi@nic.fi | http://www.nic.fi/~raspi/rtn/');
  writeln;

  if paramstr(1)='-?' then
     begin
      writeln('parametri    mit„ se tekee');
      writeln('-------------------------------------------------');
      writeln('-?           ohje, luet sit„ parhaillaan');
      writeln('-p           poistaa ohjelman k„ytt„m„t tiedostot');
      writeln;
      halt;
     end;
  if paramstr(1)='-p' then
     begin
      writeln('poistan ',inifile,' & ',chkfile);
      deletefile(inifile);
      deletefile(chkfile);
      {writeln('poistettu..');}
      halt;
     end;
  (*
  if paramstr(1)='-tietoa' then
     begin
      writeln('þ Mit„ t„ll„ ohjelmalla sitten tekee?');
      writeln('  T„ll„ ohjelmalla pystyy tarkistamaan esim.');
      writeln('  viirukset joka p„iv„');
      halt;
     end;

  *)

  iniloytyy:=fileexists(inifile); {l”ytyyk” INI tiedostoa (rtn.ini)}
  chkloytyy:=fileexists(chkfile); {l”ytyyk” CHK tiedostoa (rtn.chk)}

  if chkloytyy=false then {jos CHK -tiedostoa ei l”ydy, niin..}
     begin
      writeln('virhe: en l”yd„ ',chkfile,':„, teen sen nyt');
      assign(chktiedosto,chkfile);
      rewrite(chktiedosto);
      close(chktiedosto);
      chkloytyy:=true;
     end;

  if chkloytyy=true then {jos CHK -tiedosto l”ytyy, niin..}
     begin
      assign(chktiedosto,chkfile);
      reset(chktiedosto);
      readln(chktiedosto,chksis);
      close(chktiedosto);

      if chksis=tanaan then
         begin
          writeln('þ rutiini on jo ajettu t„n„„n');
          ajettu:=true;
          kirjoitachk:=false;
         end;
     end;

  if iniloytyy=false then {jos INI -tiedostoa ei l”ydy, niin..}
     begin
      writeln('virhe: en l”yd„ "',inifile,'", teen sen vakioasetuksilla');
      assign(initiedosto,inifile);
      rewrite(initiedosto);
      writeln(initiedosto,'esimerkki');
      writeln(initiedosto,'c:\hakemisto\ohjelma.exe');
      writeln(initiedosto,'/tee_sit„_ja_t„t„');
      writeln(initiedosto,'esimerkki 2 (saa tuhota)');
      writeln(initiedosto,'d:\ohjelma.com');
      writeln(initiedosto,'/blaablaa');
      close(initiedosto);
      writeln('þ "',inifile,'" on nyt tehty, MUOKKAA SE KUNTOON!');
      ajettu:=false;
     end;

  if iniloytyy=true then {jos INI -tiedosto l”ytyy, niin..}
     begin
      assign(initiedosto,inifile);
      reset(initiedosto);

      if ajettu=false then
         begin
           repeat
             readln(initiedosto,sisalto);
             rtnname:=sisalto;

             if sisalto='esimerkki' then
              begin
                writeln('muokkaa ensin "',inifile,'" kuntoon');
                kirjoitachk:=false;
                halt;
              end;

             {luetaan rutiini ohjelmat muistiin}
             readln(initiedosto,sisalto);
             rtnprog:=sisalto;
             readln(initiedosto,sisalto);
             rtnparam:=sisalto;
             writeln('ajan nyt rutiinin "',rtnname,'"');
             writeln;

             if rtnprog=' ' then rtnprog:=''; {}

             rtnloytyy:=fileexists(rtnprog); {l”ytyyk” INI -tiedostossa olevaa ohjelmaa}

             if rtnloytyy=false then {jossei INI -tiedostossa olevaa ohjelmaa ei l”ydy, niin..}
              begin
                writeln('virhe: en l”yd„ "',rtnprog,'", muokkaa ',inifile,':„!');
                writeln;
                kirjoitachk:=false;
                halt;
              end;

             {ajetaan INI -tiedostossa oleva ohjelma:}
             if rtnloytyy=true then
              begin
                rtnparam:=' '+rtnparam; {lis„t„„n v„lily”nti parametriin [ettei tapahdu n„in: c:\ohjelma.exe/parametrit (jotkut ohjelmat eiv„t siit„ tykk„„)]}
                swapvectors;
                exec(rtnprog,rtnparam); {ajetaan INI -tiedostossa oleva }
                swapvectors;
                kirjoitachk:=true
              end;
           until eof(initiedosto);

           ajettu:=true;

           {kirjoitetaan CHK -tiedostoon p„iv„m„„r„:}
           if kirjoitachk=true then
            begin
              assign(chktiedosto,chkfile);
              rewrite(chktiedosto);
              writeln(chktiedosto,tanaan);
              close(chktiedosto);
            end;
         end;

      close(initiedosto); {suljetaan INI -tiedosto}

     end;
end.