/
n-dimens
/
pascalabcnet
Обзор
Документация
Войти
/
n-dimens
/
pascalabcnet
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
3.0
TestSamples/CompilationSamples/VPNController.pas
101 строка
3 KB
Бондарев Иван
initial commit
14 май 2015, 22:35
14 май 2015, 22:35
e6e67c1
Код
Авторство
О чём код?
uses CRT, System.Net.NetworkInformation, System.Diagnostics; const PingTimeOut = 3000; procedure StartAndWait(Command:string; args: string); var Pr:Process; begin Pr := new Process; //Pr.StartInfo.CreateNoWindow := true; Pr.StartInfo.UseShellExecute := false; Pr.StartInfo.FileName := Command; Pr.StartInfo.Arguments := args; Pr.StartInfo.RedirectStandardOutput := true; Writeln(Command + ' ' + args); Pr.Start; try //Pr.BeginOutputReadLine(); Writeln(Pr.StandardOutput.ReadToEnd); //Pr.WaitForExit(); except Writeln('������: �� ���� ��������� ' + Command); end; end; function PingAdress(IP: string): boolean; var IPPing: Ping; res: PingReply; begin IPPing := new Ping; Result := true; try ClearLine; Write('Ping ' + IP + '...'); res := IPPing.Send(IP, PingTimeOut); except Result := false; end; if Result then Result := res.Status = IPStatus.Success; ClearLine; if Result then Write('Ping ' + IP + '... OK') else Write('Ping ' + IP + '... ERROR'); Sleep(1000); end; procedure SleepSEC(sec: integer; msg: string); begin for var i:=1 to sec do begin ClearLine; Write(String.Format(msg,sec-i)); Sleep(1000); end; end; procedure WritelnWithTime(s: string); begin Writeln(String.Format('[{0}] {1}', System.DateTime.Now.ToLongTimeString, s)); end; procedure WriteWithTime(s: string); begin Write(String.Format('[{0}] {1}', System.DateTime.Now.ToLongTimeString, s)); end; var VPNIP, IP, ServiceName: string; CheckPeriod, VPNRestartWait: integer; begin Writeln('VPNController v0.1 (c) DarkStar 2007'); try ServiceName := CommandLineArgs[0]; IP := CommandLineArgs[1]; VPNIP := CommandLineArgs[2]; CheckPeriod := System.Convert.ToInt32(CommandLineArgs[3]); VPNRestartWait := System.Convert.ToInt32(CommandLineArgs[4]); except Writeln('Comman Line Args: ServiceName IP VPNIP CheckPeriod VPNRestartWait'); exit; end; while true do begin SleepSEC(CheckPeriod,'��������� �������� ����� {0} ������'); if not PingAdress(VPNIP) then begin if not PingAdress(IP) then begin Writeln; WritelnWithTime('���������� ������������ ������ �.�. ��������� ������ � ���������� ���� '+ IP); end else begin Writeln; WritelnWithTime('��� ����� � ����� ' + VPNIP); WritelnWithTime('����������� '+ServiceName+'...'); StartAndWait('NET','STOP '+ServiceName); SleepSEC(VPNRestartWait,'������ ������� '+ServiceName+'... {0}'); Writeln; StartAndWait('NET','START '+ServiceName); end; end else begin WriteWithTime('��� � �����'); end; end; end.