110 lines
No EOL
3 KiB
ObjectPascal
110 lines
No EOL
3 KiB
ObjectPascal
unit RebootDialog;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
// Created at 23th of January 2020, by Linuxer (https://gitlab.com/psposito), from scratch with Free Pascal
|
|
// Redesigned and further Developed at 28th of January 2020, by Initial developer
|
|
// to provide Camera and Mic status alone with On/Off and Mute/Unmute fuctions
|
|
// Developed further for intrusion feeling and logging at 2nd of February 2020, by Initial developer
|
|
// Developed for Blacklisting/Whitelisting functions for both camera & audio at 7th of February 2020, by Initial developer
|
|
// Finalized, except traslations at 15th of February 2020.
|
|
// Further Capabilities added alone with better Logging at 22nd of February 2020
|
|
|
|
interface
|
|
|
|
uses
|
|
{$IFDEF UNIX}
|
|
cthreads,
|
|
{$ENDIF}
|
|
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, TplLabelUnit,
|
|
LCLIntf, Logs, Unix;
|
|
|
|
type
|
|
|
|
{ TForm5 }
|
|
|
|
TForm5 = class(TForm)
|
|
Button1: TButton;
|
|
Button2: TButton;
|
|
ListBox1: TListBox;
|
|
plURLLabel1: TplURLLabel;
|
|
procedure Button1Click(Sender: TObject);
|
|
procedure Button2Click(Sender: TObject);
|
|
procedure plURLLabel1Click(Sender: TObject);
|
|
private
|
|
|
|
public
|
|
|
|
end;
|
|
|
|
var
|
|
Form5 : TForm5;
|
|
S : LongInt;
|
|
FileString : String;
|
|
FileDestDir : String;
|
|
CmdString : String;
|
|
HomeDir : String;
|
|
Password : String;
|
|
|
|
implementation
|
|
|
|
{$R *.frm}
|
|
|
|
{ TForm5 }
|
|
|
|
procedure SaveLogs;
|
|
var
|
|
n : Integer;
|
|
LogsStringList : TStringlist;
|
|
DateString : String;
|
|
|
|
begin
|
|
HomeDir := expandfilename('~/');
|
|
DateString := FormatDateTime('DD/MM/YYYY-hh-mm-ss',now);
|
|
FileDestDir := Concat(HomeDir,'.cameracontrol-', DateString, '.log');
|
|
|
|
LogsStringList := TStringList.Create;
|
|
LogsStringList.Clear;
|
|
|
|
n := 0;
|
|
|
|
while n <= Logs.Form3.StringGrid1.RowCount - 1 do
|
|
begin
|
|
if Length(Form3.StringGrid1.Rows[n].Strings[0]) > 0 then
|
|
LogsStringList.Add(Concat(Form3.StringGrid1.Rows[n].Strings[0],',', Form3.StringGrid1.Rows[n].Strings[1],',', Form3.StringGrid1.Rows[n].Strings[2],',' , Form3.StringGrid1.Rows[n].Strings[3]));
|
|
Inc(n);
|
|
end;
|
|
|
|
ShowMessage(LogsStringList.Text);
|
|
|
|
n:= 0;
|
|
|
|
while n <= LogsStringList.Count - 1 do
|
|
begin
|
|
FileString := LogsStringList.Strings[n];
|
|
S := FpSystem(Concat('echo ' , FileString, ' >> ', FileDestDir));
|
|
Inc(n);
|
|
end;
|
|
|
|
LogsStringList.Free;
|
|
end;
|
|
|
|
procedure TForm5.Button2Click(Sender: TObject);
|
|
begin
|
|
Form5.Hide;
|
|
Halt(0);
|
|
end;
|
|
|
|
procedure TForm5.plURLLabel1Click(Sender: TObject);
|
|
begin
|
|
OpenUrl('https://gitlab.com/psposito/camera-control-webcam-switch-indicator/-/wikis/Project-History-and-other-Details#found-v4l2-limitations-forcing-for-reboot-when-v4l2-video-on-comes-to-number-60-it-is-mandatory-to-reboot-because-kernel-does-not-generate-more-devices-and-video-capture-is-not-possible');
|
|
|
|
end;
|
|
|
|
procedure TForm5.Button1Click(Sender: TObject);
|
|
begin
|
|
//SaveLogs;
|
|
S := FpSystem('reboot');
|
|
end;
|
|
|
|
end. |