Beautified, Added Sudo Menu Input Password and Kill Capture either on Sudo for System Level, or User Level

This commit is contained in:
PSposito 2020-02-26 14:45:10 +02:00
parent b280bc80b1
commit 0131c7da53
No known key found for this signature in database
GPG Key ID: 92E2BB27E8617EFC
3 changed files with 290 additions and 59 deletions

142
main.frm
View File

@ -15837,12 +15837,6 @@ object Form1: TForm1
object PopupMenu5: TPopupMenu
Left = 208
Top = 208
object MenuItem35: TMenuItem
Caption = '-'
end
object MenuItem39: TMenuItem
Caption = '-'
end
object MenuItem40: TMenuItem
Caption = 'System Camera'
Bitmap.Data = {
@ -17298,10 +17292,7 @@ object Form1: TForm1
OnClick = MenuItem33Click
end
end
object MenuItem43: TMenuItem
Caption = '-'
end
object MenuItem30: TMenuItem
object MenuItem23: TMenuItem
Caption = '-'
end
object MenuItem44: TMenuItem
@ -17428,9 +17419,6 @@ object Form1: TForm1
}
OnClick = MenuItem9Click
end
object MenuItem23: TMenuItem
Caption = '-'
end
object MenuItem45: TMenuItem
Caption = 'Exit'
Bitmap.Data = {
@ -31258,6 +31246,7 @@ object Form1: TForm1
55C95D5D5DA76D6D6D707272722A6868680A666766036D6C6D006D6E6D006E6E
6E00000000000000000000000000000000000000000000000000
}
Visible = False
OnClick = MenuItem13Click
end
object MenuItem37: TMenuItem
@ -31397,10 +31386,137 @@ object Form1: TForm1
Visible = False
OnClick = MenuItem37Click
end
object MenuItem38: TMenuItem
Caption = 'Input Capture Password (Sudo)'
Bitmap.Data = {
B60E0000424DB60E0000000000003600000028000000200000001D0000000100
200000000000800E000064000000640000000000000000000000000000000000
000000000000000000000000000000000000FFFFFF00FFFFFF02FFFFFF09FFFF
FF12FFFFFF16FFFFFF16FFFFFF16FFFFFF16FFFFFF16FFFFFF16FFFFFF16FFFF
FF16FFFFFF16FFFFFF16FFFFFF16FFFFFF16FFFFFF15FFFFFF12FFFFFF08FFFF
FF01000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000FFFFFF01FFFFFF0FFFFFFF3EFFFF
FF6AFFFFFF75FFFFFF76FFFFFF76FFFFFF76FFFFFF76FFFFFF76FFFFFF76FFFF
FF76FFFFFF76FFFFFF76FFFFFF76FFFFFF76FFFFFF75FFFFFF67FFFFFF39FFFF
FF0DFFFFFF000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000FFFFFF02FEFEFE2CEDEDEDCCF1F1
F1E8F1F1F1EAF1F1F1EAF1F1F1EAF1F1F1EAF1F1F1EAF1F1F1EAF1F1F1EAF1F1
F1EAF1F1F1EAF1F1F1EAF1F1F1EAF1F1F1EAF2F2F2EAF9F9F9E6FFFFFF84FFFF
FF22FFFFFF010000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000FFFFFF03F6F6F656DBDBDBBAF6F6
F680F5F5F580F5F5F580F5F5F580F5F5F580F5F5F580F5F5F580F5F5F580F5F5
F580F5F5F580F5F5F580F5F5F580F5F5F580F7F7F781E5E5E5D6FBFBFBAAFFFF
FF2FFFFFFF020000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000FFFFFF03F3F3F35AB0B0B0B9F1F1
F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1
F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF2F2F27CE0E0E0CCFAFAFAACFFFF
FF30FFFFFF020000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000FFFFFF03F3F3F35AB0B0B0B9F1F1
F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1
F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF2F2F27CE0E0E0CCFAFAFAACFFFF
FF30FFFFFF020000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000FFFFFF03F3F3F35AB0B0B0B9F1F1
F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1
F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF2F2F27CE0E0E0CCFAFAFAACFFFF
FF30FFFFFF020000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000FFFFFF03F3F3F35AB0B0B0B9F1F1
F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1
F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF2F2F27CE0E0E0CCFAFAFAACFFFF
FF30FFFFFF020000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000FFFFFF03F3F3F35AB0B0B0B9F1F1
F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1
F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF2F2F27CE0E0E0CCFAFAFAACFFFF
FF30FFFFFF020000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000FFFFFF03F3F3F35AB0B0B0B9F1F1
F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1
F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF2F2F27CE0E0E0CCFAFAFAACFFFF
FF30FFFFFF020000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000FFFFFF03F3F3F35AB0B0B0B9F1F1
F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1
F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF2F2F27CE0E0E0CCFAFAFAACFFFF
FF30FFFFFF020000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000FFFFFF03F3F3F35AB0B0B0B9F1F1
F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1
F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF2F2F27CE0E0E0CCFAFAFAACFFFF
FF30FFFFFF020000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000FFFFFF03F3F3F35AB0B0B0B9F1F1
F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1
F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF2F2F27CE0E0E0CCFAFAFAACFFFF
FF30FFFFFF020000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000FFFFFF03F2F2F257B0B0B0B9F1F1
F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF1F1
F17CF1F1F17CF1F1F17CF1F1F17CF1F1F17CF2F2F27CE0E0E0CCF9F9F9A7FFFF
FF2DFFFFFF020000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000FFFFFF02F2F2F240A9A9A9C9D9D9
D98AEFEFEF7DDBDBDB87E6E6E689E5E5E58AE5E5E58AE5E5E58AE5E5E58AE5E5
E58AE5E5E58AE7E7E788E5E5E581E8E8E87FCBCBCB94E8E8E8D9FBFBFB80FFFF
FF1CFFFFFF010000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000FFFFFF00FFFFFF0AA2A2A26EB1B1
B1C2E4E4E483E7E7E7C0CFCFCFD0B7B7B7AEB0B0B0A2AFAFAFA1AFAFAFA1AFAF
AFA1B0B0B0A2A6A6A6BEC3C3C3A2F3F3F38EE7E7E7DDF7F7F798FFFFFF2DFFFF
FF08FFFFFF000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000003F3F3F00FFFFFF01FFFFFF16C0C0
C0BFE2E2E286E1E1E1DBFFFFFF9CFFFFFF2FFFFFFF0CFFFFFF0BFFFFFF0BFFFF
FF0BFFFFFF0EF1F1F160A6A6A6BBF8F8F898E1E1E1E1FFFFFF5DFFFFFF0EFFFF
FF002D2D2D000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000AFAFAF00FFFFFF00FFFFFF14BFBF
BFBEE2E2E286DBDBDBDBFFFFFF98FFFFFF26FFFFFF01ACACAC00ACACAC00ACAC
AC00FFFFFF03F0F0F059A5A5A5BBF9F9F995E1E1E1E2FFFFFF5DFFFFFF0DF5F5
F500000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000AFAFAF00FFFFFF00FFFFFF14BFBF
BFBEE2E2E286DBDBDBDBFFFFFF98FFFFFF26FFFFFF01FFFFFF00FFFFFF00FFFF
FF00FFFFFF03F0F0F059A5A5A5BBF9F9F993DEDEDEE4FFFFFF5EFFFFFF0EF5F5
F500000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000AFAFAF00FFFFFF00FFFFFF14BFBF
BFBEE1E1E186DBDBDBDBFFFFFF99FFFFFF27FFFFFF01FFFFFF00FFFFFF00FFFF
FF00FFFFFF03F0F0F05AA5A5A5BBF9F9F992E2E2E2E2FFFFFF5AFFFFFF0CF3F3
F300000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000AFAFAF00FFFFFF00FFFFFF12BFBF
BFBCE1E1E186DBDBDBDAFFFFFFA1FFFFFF2EFFFFFF02FFFFFF00FFFFFF002B2B
2B00FFFFFF06F1F1F161ADADADB8FAFAFA98EAEAEADAFFFFFF4FFFFFFF098E8E
8E00000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000AFAFAF00DCDCDC00FFFFFF0CCBCB
CBA9D7D7D78CE3E3E3CEFDFDFDC0FFFFFF4DFFFFFF0DFFFFFF01FFFFFF00FFFF
FF02FFFFFF15F2F2F28AD1D1D1A3FBFBFBA8F3F3F3C5FFFFFF3BFFFFFF058B8B
8B00000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000AFAFAF00FAFAFA00FFFFFF05E0E0
E07ACFCFCF9CF6F6F6A7F7F7F7EAFFFFFF92FFFFFF42FFFFFF1AFFFFFF12FFFF
FF1FFFFFFF52F9F9F9CAF7F7F783FCFCFCC9FDFDFD96FFFFFF24FFFFFF028B8B
8B00000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000AFAFAF00FFFFFF00FFFFFF01F7F7
F726A7A7A7C5E6E6E686F6F6F6CEFAFAFAE5FFFFFFA8FFFFFF79FFFFFF6CFDFD
FD87F7F7F7D2FCFCFCA2F4F4F48CFDFDFDD9FFFFFF55FFFFFF0EFFFFFF008B8B
8B00000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000AFAFAF00FFFFFF00FFFFFF00FFFF
FF06A5A5A56AA6A6A6BCEAEAEA86F7F7F7B9F4F4F4E8F5F5F5EAF2F2F2E7E8E8
E8DAFAFAFA9BDCDCDC8AF9F9F9CDFDFDFD82FFFFFF21FFFFFF03BCBCBC008B8B
8B00000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000AFAFAF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF0A94949476959595C6D6D6D68FEEEEEE83F8F8F88BF7F7F787E2E2
E285A9A9A9A9CFCFCFD5FCFCFC83FFFFFF26FFFFFF06FFFFFF00FFFFFF008B8B
8B00000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000AFAFAF00FFFFFF00FFFFFF00FFFF
FF00FFFFFF01FFFFFF08BABABA3E878787A6979797CAAAAAAACBC2C2C2C8D4D4
D4C4DFDFDFA5FCFCFC4EFFFFFF1AFFFFFF05FFFFFF00FFFFFF00FFFFFF008B8B
8B00000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000AFAFAF00FCFCFC00D5D5D500D6D6
D600D6D6D600FFFFFF00FFFFFF02FFFFFF0AFFFFFF17FFFFFF27FFFFFF29FFFF
FF20FFFFFF14FFFFFF08FFFFFF01FFFFFF00D6D6D600D6D6D600D6D6D6007474
7400000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000006A6A6A0099999900000000000000
0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF01FFFFFF01FFFF
FF01FFFFFF000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000
}
Visible = False
OnClick = MenuItem38Click
end
end
object UniqueInstance1: TUniqueInstance
Enabled = True
Identifier = 'CameraControl'
UpdateInterval = 500
OnOtherInstance = UniqueInstance1OtherInstance
Left = 832
Top = 664
end

View File

@ -31,5 +31,6 @@
{"hash":4691652,"name":"tform1.menuitem44.caption","sourcebytes":[65,98,111,117,116],"value":"About"},
{"hash":315140,"name":"tform1.menuitem45.caption","sourcebytes":[69,120,105,116],"value":"Exit"},
{"hash":185423705,"name":"tform1.menuitem13.caption","sourcebytes":[75,105,108,108,32,67,97,112,116,117,114,105,110,103,32,40,85,115,101,114,32,77,111,100,101,41],"value":"Kill Capturing (User Mode)"},
{"hash":200734201,"name":"tform1.menuitem37.caption","sourcebytes":[75,105,108,108,32,67,97,112,116,117,114,105,110,103,32,40,83,117,100,111,41],"value":"Kill Capturing (Sudo)"}
{"hash":200734201,"name":"tform1.menuitem37.caption","sourcebytes":[75,105,108,108,32,67,97,112,116,117,114,105,110,103,32,40,83,117,100,111,41],"value":"Kill Capturing (Sudo)"},
{"hash":49173897,"name":"tform1.menuitem38.caption","sourcebytes":[73,110,112,117,116,32,67,97,112,116,117,114,101,32,80,97,115,115,119,111,114,100,32,40,83,117,100,111,41],"value":"Input Capture Password (Sudo)"}
]}

204
main.pas
View File

@ -49,7 +49,7 @@ type
MenuItem20 : TMenuItem;
MenuItem21 : TMenuItem;
MenuItem22 : TMenuItem;
MenuItem23 : TMenuItem;
MenuItem23: TMenuItem;
MenuItem24 : TMenuItem;
MenuItem25 : TMenuItem;
MenuItem26 : TMenuItem;
@ -57,20 +57,17 @@ type
MenuItem28 : TMenuItem;
MenuItem29 : TMenuItem;
MenuItem3 : TMenuItem;
MenuItem30 : TMenuItem;
MenuItem31 : TMenuItem;
MenuItem32 : TMenuItem;
MenuItem33 : TMenuItem;
MenuItem34 : TMenuItem;
MenuItem35 : TMenuItem;
MenuItem36 : TMenuItem;
MenuItem37 : TMenuItem;
MenuItem39 : TMenuItem;
MenuItem38: TMenuItem;
MenuItem4 : TMenuItem;
MenuItem40 : TMenuItem;
MenuItem41 : TMenuItem;
MenuItem42 : TMenuItem;
MenuItem43 : TMenuItem;
MenuItem44 : TMenuItem;
MenuItem45 : TMenuItem;
MenuItem5 : TMenuItem;
@ -115,6 +112,7 @@ type
procedure MenuItem34Click(Sender: TObject);
procedure MenuItem36Click(Sender: TObject);
procedure MenuItem37Click(Sender: TObject);
procedure MenuItem38Click(Sender: TObject);
procedure MenuItem3Click(Sender: TObject);
procedure MenuItem4Click(Sender: TObject);
procedure MenuItem6Click(Sender: TObject);
@ -129,6 +127,8 @@ type
procedure TrayIcon3Click(Sender: TObject);
procedure TrayIcon4Click(Sender: TObject);
procedure TrayIcon5Click(Sender: TObject);
procedure UniqueInstance1OtherInstance(Sender: TObject;
ParamCount: Integer; const Parameters: array of String);
procedure VpClock1SecondChange(Sender: TObject);
private
@ -221,14 +221,14 @@ end;
procedure PopUpWebcamOn;
begin
Form1.PopupNotifier2.Text := 'Camera is On' + LineEnding + 'Video Device: /dev/video' + IntToStr(CountNumber)+ '/';
Form1.PopupNotifier2.ShowAtPos(NewWidth - 100 , NewHeight div 2 - 550);
Form1.PopupNotifier2.ShowAtPos(NewWidth - 200 , NewHeight div 2 - 550);
Form1.TrayIcon5.Hint := 'Camera Status' + LineEnding + 'Camera is On';
end;
procedure PopUpWebcamOff;
begin
Form1.PopupNotifier1.Text := 'No Camera' + LineEnding + 'Video Device: /dev/video' + IntToStr(CountNumber)+ '/';
Form1.PopupNotifier1.ShowAtPos(NewWidth - 100 , NewHeight div 2 - 550);
Form1.PopupNotifier1.ShowAtPos(NewWidth - 200 , NewHeight div 2 - 550);
Form1.TrayIcon5.Hint := 'Camera Status' + LineEnding + 'Camera is Disabled';
end;
@ -236,21 +236,21 @@ procedure PopUpWebcamCaptures;
begin
Form1.PopupNotifier7.Text := 'Camera is Capturing' + LineEnding + 'Video Device: /dev/video'
+ IntToStr(CountNumber)+ '/' + LineEnding + 'Application Name: ' + CaptureAppName;
Form1.PopupNotifier7.ShowAtPos(NewWidth - 100 , NewHeight div 2 - 550);
Form1.PopupNotifier7.ShowAtPos(NewWidth - 200 , NewHeight div 2 - 550);
Form1.TrayIcon5.Hint := 'Camera Status' + LineEnding + 'Camera is Capturing' + LineEnding + CaptureAppName;
end;
procedure PopUpWebcamHacked;
begin
Form1.PopupNotifier8.Text := 'Camera is Hacked' + LineEnding + 'Video Device: /dev/video' + IntToStr(CountNumber)+ '/' + LineEnding + 'Check Logs';
Form1.PopupNotifier8.ShowAtPos(NewWidth - 100 , NewHeight div 2 - 550);
Form1.PopupNotifier8.ShowAtPos(NewWidth - 200 , NewHeight div 2 - 550);
Form1.TrayIcon5.Hint := 'Camera Status' + LineEnding + 'Camera is Hacked' + LineEnding + 'Check Logs';
end;
procedure PopUpMicHacked;
begin
Form1.PopupNotifier9.Text := 'Microphone is Hacked' + LineEnding + 'Alsa Driver Changed Status';
Form1.PopupNotifier9.ShowAtPos(NewWidth - 100 , NewHeight div 2 - 375);
Form1.PopupNotifier9.ShowAtPos(NewWidth - 200 , NewHeight div 2 - 375);
Form1.TrayIcon5.Hint := 'Microphone Status' + LineEnding + 'Microphone is Hacked' + LineEnding + 'Check Logs';
end;
@ -267,7 +267,7 @@ end;
procedure PopUpWebcamNotCapturing;
begin
Form1.PopupNotifier6.Text := 'Camera is not Capturing' + LineEnding + 'Video Device: /dev/video' + IntToStr(CountNumber)+ '/';
Form1.PopupNotifier6.ShowAtPos(NewWidth - 100 , NewHeight div 2 - 550);
Form1.PopupNotifier6.ShowAtPos(NewWidth - 200 , NewHeight div 2 - 550);
Form1.TrayIcon5.Hint := 'Camera On' + LineEnding + 'Camera is Enabled, but is not Capturing';
end;
@ -279,14 +279,14 @@ end;
procedure PopUpMicOn;
begin
Form1.PopupNotifier3.Text := 'Microphone is Unmuted' + LineEnding + 'Alsa Driver Status: cap';
Form1.PopupNotifier3.ShowAtPos(NewWidth - 100 , NewHeight div 2 - 375);
Form1.PopupNotifier3.ShowAtPos(NewWidth - 200 , NewHeight div 2 - 375);
Form1.TrayIcon2.Hint := 'Microphone Status & Menu' + LineEnding + 'Microphone is Unmuted';
end;
procedure PopUpMicOff;
begin
Form1.PopupNotifier4.Text := 'Microphone is Muted' + LineEnding + 'Alsa Driver Status: nocap';
Form1.PopupNotifier4.ShowAtPos(NewWidth - 100 , NewHeight div 2 - 375);
Form1.PopupNotifier4.ShowAtPos(NewWidth - 200 , NewHeight div 2 - 375);
Form1.TrayIcon2.Hint := 'Microphone Status & Menu' + LineEnding + 'Microphone is Muted';
end;
@ -351,7 +351,8 @@ begin
AProcess.Options := AProcess.Options + [poWaitOnExit, poUsePipes];
AProcess.Execute;
AStringList.LoadFromStream(AProcess.Output);
ShowMessage('Pids List of ' + CaptureAppName + ':' + sLineBreak + AStringList.Text);
ShowMessage( 'Pids List of ' + CaptureAppName + ':' + sLineBreak +
'---------------------------' + sLineBreak + AStringList.Text);
j := 0;
while j <= AStringList.Count - 1 do
@ -566,40 +567,84 @@ begin
end
else
begin
Form1.MenuItem13.Visible := true;
if Length(Password2) > 0 then
Form1.MenuItem37.Visible := true;
if HasPassword = false then
begin
Form1.MenuItem13.Visible := true;
Form1.MenuItem37.Visible := false;
end
else
begin
Form1.MenuItem13.Visible := false;
Form1.MenuItem37.Visible := true;
end;
//if Length(Password2) > 0 then
// Form1.MenuItem37.Visible := true;
end;
end;
procedure NoCapturePassword;
var
MessageStr : string;
BoxStyle : integer;
Reply : integer;
begin
BoxStyle := MB_ICONEXCLAMATION + MB_OK;
Reply := Application.MessageBox ( 'The Application will catch and will' + sLineBreak +
'be able to kill, only Users Events.' + sLineBreak + ' ' + sLineBreak +
'For Better Protection, please provide' + sLineBreak +
'the sudo password, on the Menu at' + sLineBreak +
'Camera''s Indicator Menu', 'Camera Control for Linux', BoxStyle);
Form1.MenuItem38.Visible := true;
end;
procedure PasswordInputQuery;
var
UserString : string;
begin
if InputQuery('Camera Control for Linux', 'For better functioning, please provide your sudo password', TRUE, UserString) then
begin
HasPassword := true;
Password := UserString;
end
else
begin
//NoCapturePassword;
WantsPassword := false;
Form1.MenuItem38.Visible := true;
HasPassword := false;
Password := '';
end;
end;
procedure GetCapturePassword;
begin
if (HasPassword = true) and (WantsPassword = true) then
if (HasPassword = false) and (WantsPassword = true) then
begin
PasswordInputQuery;
S := FpSystem(Concat('echo ', Password, ' | sudo -S sh -c "ls /root"'));
if S <> 0 then
AskPassword
begin
WantsPassword := false;
Form1.MenuItem38.Visible := true;
HasPassword := false;
Password2 := '';
NoCapturePassword;
end
else
Password2 := Password;
WantsPassword := true;
end
else
if (HasPassword = false) and (WantsPassword = true) then
begin
AskPassword;
S := FpSystem(Concat('echo ', Password, ' | sudo -S sh -c "ls /root"'));
if S <> 0 then
begin
ShowMessage('The Application will cath and will be able to kill, only Users Events.' + sLineBreak + 'For Better Protection, please Exit, re-run this application and provide sudo password');
WantsPassword := false;
end
else
begin
Password2 := Password;
WantsPassword := false;
end;
end;
begin
Password2 := Password;
WantsPassword := false;
Form1.MenuItem38.Visible := false;
HasPassword := true;
ShowMessage( 'Password is Correct' + sLineBreak +
'Now Kill Capturing (Sudo) is available' + sLineBreak +
'on the Camera Indicator Menu');
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
@ -632,6 +677,7 @@ begin
MenuItem37.Visible := false;
Password2 := '';
WantsPassword := true;
MenuItem38.Visible := false;
LogsStringList.Clear;
//Logs.Form3.StringGrid1.Clean;
@ -656,7 +702,7 @@ begin
if CamStatus = 0 then // -> Camera is off
begin
//ImageListCam.GetIcon(1, TrayIcon1.Icon);
PopUpWebcamOff;
//PopUpWebcamOff;
ImageListCam1.GetIcon(0, TrayIcon5.Icon);
CameraIcon := 0;
//ShowMessage('Camera is Off or No Camera exists');
@ -668,7 +714,7 @@ begin
if CamStatus = 1 then // -> Camera is On
begin
//ImageListCam.GetIcon(0, TrayIcon1.Icon);
PopUpWebcamOn;
//PopUpWebcamOn;
ImageListCam1.GetIcon(2, TrayIcon5.Icon);
CameraIcon := 2;
//ShowMessage('Camera is On');
@ -680,8 +726,8 @@ begin
if CamStatus = 2 then // -> Camera is Capturing
begin
ActionTime := now;
PopUpWebcamCaptures;
PopUpWebcamCaptStatus := true;
//PopUpWebcamCaptures;
//PopUpWebcamCaptStatus := true;
ImageListCam1.GetIcon(1, TrayIcon5.Icon);
CameraIcon := 1;
VideoCapt := true;
@ -698,7 +744,7 @@ begin
MicStatus := true;
MicClicked := false;
MicClicksCounter:= 0;
PopUpMicOn;
//PopUpMicOn;
MicIcon := 0;
end;
@ -708,7 +754,7 @@ begin
MicStatus := false;
MicClicked := false;
MicClicksCounter:= 0;
PopUpMicOff;
//PopUpMicOff;
MicIcon := 1;
PopUpMenu6.Close;
end;
@ -779,6 +825,8 @@ procedure AskPassword;
begin
Password := PasswordBox('Authorization Needed / User Input','Please Enter Password');
HasPassword := True;
end;
procedure TForm1.MenuItem10Click(Sender: TObject); // Exit
@ -820,6 +868,57 @@ begin
end;
end;
procedure MenuPasswordInputQuery;
var
UserString2 : string;
begin
if InputQuery('Camera Control for Linux', 'For better functioning, please provide your sudo password', TRUE, UserString2) then
begin
HasPassword := true;
Password := UserString2;
end
else
begin
//NoCapturePassword;
Form1.MenuItem38.Visible := true;
Password := '';
end;
end;
procedure MenuGetCapturePassword;
begin
if (HasPassword = false) then
begin
MenuPasswordInputQuery;
S := FpSystem(Concat('echo ', Password, ' | sudo -S sh -c "ls /root"'));
if S <> 0 then
begin
Form1.MenuItem38.Visible := true;
HasPassword := false;
Password2 := '';
NoCapturePassword;
end
else
begin
Password2 := Password;
Form1.MenuItem38.Visible := false;
HasPassword := true;
ShowMessage( 'Password is Correct' + sLineBreak +
'Now Kill Capturing (Sudo) is available' + sLineBreak +
'on the Camera Indicator Menu');
end;
end;
end;
procedure TForm1.MenuItem38Click(Sender: TObject);
begin
if (HasPassword = false) then
MenuGetCapturePassword;
end;
procedure DeleteOldLogs; // Deletes old Log files
var
SearchResult : TSearchRec;
@ -1351,6 +1450,15 @@ begin
PopUpMenu6.PopUp;
end;
procedure TForm1.UniqueInstance1OtherInstance(Sender: TObject;
ParamCount: Integer;
const Parameters: array of String);
begin
ShowMessage ( 'Another instance of Camera Control is running' + sLineBreak +
'Please close it and then run me again' );
Halt(0);
end;
procedure CheckEvents; // Check Statuses and External Events Notifications and Logs
var
HackedTime : TDateTime;
@ -1381,6 +1489,7 @@ begin
+ RightStr(DateTimeToStr(ActionTime), 8), 'Camera is Off', IntToStr(VideoDevicesNumber)]);
AppendLogs;
Inc(GridLine);
PopUpWebcamOff;
end;
if CamStatus = 1 then
@ -1390,6 +1499,7 @@ begin
+ RightStr(DateTimeToStr(ActionTime), 8), 'Camera is On', IntToStr(VideoDevicesNumber)]);
AppendLogs;
Inc(GridLine);
PopUpWebcamOn;
end;
if CamStatus = 2 then
@ -1399,6 +1509,8 @@ begin
+ RightStr(DateTimeToStr(ActionTime), 8), 'Camera is Captuting, by ' + CaptureAppName, IntToStr(VideoDevicesNumber)]);
AppendLogs;
Inc(GridLine);
PopUpWebcamCaptures;
PopUpWebcamCaptStatus := true;
end;
If MicStatus = true then
@ -1408,6 +1520,7 @@ begin
+ RightStr(DateTimeToStr(ActionTime), 8), 'Microphone is Unmuted', IntToStr(VideoDevicesNumber)]);
AppendLogs;
Inc(GridLine);
PopUpMicOn;
end;
If MicStatus = false then
@ -1417,6 +1530,7 @@ begin
+ RightStr(DateTimeToStr(ActionTime), 8), 'Microphone is Muted', IntToStr(VideoDevicesNumber)]);
AppendLogs;
Inc(GridLine);
PopUpMicOff;
end;
FromMain := false;