Tekee päivän rutiinin (esim. tarkistaa viirukset) kerran päivässä.
{
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.