📄 unit2.pas
字号:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ExtCtrls, StdCtrls, Buttons, Mask, IdBaseComponent,
IdSSLOpenSSL, Spin,SyncObjs,FileCtrl,
IdThreadMgr, IdThreadMgrPool, IdAntiFreezeBase, IdAntiFreeze,
IdComponent, IdTCPServer, ImgList,IdGlobal, IdThreadMgrDefault,
NotifyIcon, Menus, Tabs, IdServerIOHandler;
type
TSuperUser=record //超级用户安全信息
SysAllow :Boolean; //超级用户是否开放
UserTag :integer; //用户标签
UserPassWD :String; //登录口令
end;
TAuthorizeUser=record //授权用户安全信息
UserTag :integer;
UserPassWD :String;
AllowScreen:boolean; //屏幕查看
AllowMouse :boolean; //遥控鼠标
AllowKeyBD :boolean; //遥控键盘
AllowMKDir :boolean; //创建子目录
AllowRdF :boolean; //读文件
AllowWrF :boolean; //写文件
AllowCMD :boolean; //控制台命令
AllowReg :boolean; //注册表维护
AllowOpenF :boolean; //远程文件打开
AllowVideo :boolean; //监控摄像仪
AllowVoice :boolean; //声音交互
end;
TGuestUser=record //访客用户安全信息
UserTag :integer;
FileRead :boolean;//读文件
RecFile :boolean; //接收上传文件
MKDir :boolean; //创建目录
end;
TForm2 = class(TForm)
Panel1: TPanel;
Panel6: TPanel;
Panel10: TPanel;
BitBtn11: TBitBtn;
BitBtn12: TBitBtn;
BitBtn13: TBitBtn;
BitBtn15: TBitBtn;
PageControl1: TPageControl;
TabSheet3: TTabSheet;
TabSheet2: TTabSheet;
TabSheet4: TTabSheet;
IdTCPServer1: TIdTCPServer;
IdAntiFreeze1: TIdAntiFreeze;
SpeedButton19: TSpeedButton;
TabSheet8: TTabSheet;
IdThreadMgrDefault1: TIdThreadMgrDefault;
Panel3: TPanel;
Panel14: TPanel;
SpeedButton1: TSpeedButton;
SpeedButton6: TSpeedButton;
Panel15: TPanel;
ListView4: TListView;
Panel7: TPanel;
Panel11: TPanel;
GroupBox1: TGroupBox;
Label1: TLabel;
MaskEdit1: TMaskEdit;
GroupBox2: TGroupBox;
CheckBox7: TCheckBox;
CheckBox8: TCheckBox;
CheckBox9: TCheckBox;
CheckBox11: TCheckBox;
CheckBox12: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
CheckBox13: TCheckBox;
CheckBox17: TCheckBox;
CheckBox18: TCheckBox;
GroupBox3: TGroupBox;
Label2: TLabel;
MaskEdit2: TMaskEdit;
CheckBox1: TCheckBox;
Panel29: TPanel;
GroupBox5: TGroupBox;
Label6: TLabel;
SpeedButton11: TSpeedButton;
SpinEdit1: TSpinEdit;
CheckBox15: TCheckBox;
RadioGroup1: TRadioGroup;
SaveDialog1: TSaveDialog;
Panel4: TPanel;
Panel8: TPanel;
PageControl3: TPageControl;
TabSheet6: TTabSheet;
Panel17: TPanel;
Panel23: TPanel;
SpeedButton5: TSpeedButton;
SpeedButton8: TSpeedButton;
SpeedButton9: TSpeedButton;
ListView2: TListView;
TabSheet7: TTabSheet;
Panel19: TPanel;
Panel22: TPanel;
SpeedButton17: TSpeedButton;
SpeedButton21: TSpeedButton;
Label5: TLabel;
Label13: TLabel;
Label14: TLabel;
MaskEdit5: TMaskEdit;
MaskEdit6: TMaskEdit;
MaskEdit7: TMaskEdit;
CheckBox21: TCheckBox;
ListView6: TListView;
TabSheet11: TTabSheet;
Panel21: TPanel;
Panel30: TPanel;
SpeedButton22: TSpeedButton;
SpeedButton23: TSpeedButton;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
CheckBox22: TCheckBox;
MaskEdit8: TMaskEdit;
MaskEdit9: TMaskEdit;
MaskEdit10: TMaskEdit;
ListView7: TListView;
Panel5: TPanel;
ImageList2: TImageList;
NotifyIcon1: TNotifyIcon;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
TabSet1: TTabSet;
Panel18: TPanel;
Panel25: TPanel;
ListView3: TListView;
Panel31: TPanel;
SpeedButton10: TSpeedButton;
SpeedButton12: TSpeedButton;
Label3: TLabel;
Label10: TLabel;
Edit3: TEdit;
CheckBox20: TCheckBox;
Panel16: TPanel;
Panel26: TPanel;
SpeedButton3: TSpeedButton;
SpeedButton18: TSpeedButton;
Label11: TLabel;
Label12: TLabel;
Edit4: TEdit;
LogCheckBox: TCheckBox;
ListView5: TListView;
Panel2: TPanel;
Panel24: TPanel;
SpeedButton2: TSpeedButton;
SpeedButton4: TSpeedButton;
Label4: TLabel;
SpeedButton20: TSpeedButton;
ListView1: TListView;
TabSheet1: TTabSheet;
ImageList1: TImageList;
SpeedButton7: TSpeedButton;
SpeedButton13: TSpeedButton;
MaskEdit4: TMaskEdit;
Label7: TLabel;
CheckBox4: TCheckBox;
CheckBox5: TCheckBox;
CheckBox6: TCheckBox;
CheckBox14: TCheckBox;
CheckBox16: TCheckBox;
CheckBox19: TCheckBox;
CheckBox10: TCheckBox;
CheckBox23: TCheckBox;
CheckBox24: TCheckBox;
CheckBox25: TCheckBox;
IdServerIOHandlerSSL1: TIdServerIOHandlerSSL;
procedure TreeView3DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure ShellListView1DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
procedure CheckBox15Click(Sender: TObject);
procedure CheckBox14Click(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure IdTCPServer1Connect(AThread: TIdPeerThread);
procedure BitBtn13Click(Sender: TObject);
procedure CheckBox4Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BitBtn12Click(Sender: TObject);
procedure IdTCPServer1Disconnect(AThread: TIdPeerThread);
procedure FormDestroy(Sender: TObject);
procedure IdTCPServer1Execute(AThread: TIdPeerThread);
procedure SpeedButton19Click(Sender: TObject);
procedure ListView1Change(Sender: TObject; Item: TListItem;
Change: TItemChange);
procedure ListView3Change(Sender: TObject; Item: TListItem;
Change: TItemChange);
procedure ListView5Change(Sender: TObject; Item: TListItem;
Change: TItemChange);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton9Click(Sender: TObject);
procedure BitBtn11Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton18Click(Sender: TObject);
procedure SpeedButton10Click(Sender: TObject);
procedure SpeedButton12Click(Sender: TObject);
procedure SpeedButton22Click(Sender: TObject);
procedure SpeedButton23Click(Sender: TObject);
procedure SpeedButton17Click(Sender: TObject);
procedure SpeedButton21Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure BitBtn15Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure FormDeactivate(Sender: TObject);
procedure NotifyIcon1DblClick(Sender: TObject);
procedure ListView1Insert(Sender: TObject; Item: TListItem);
procedure ListView1Deletion(Sender: TObject; Item: TListItem);
procedure TabSet1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
SysSuper:TSuperUser; //超级用户信息
SysAuthorizer:TAuthorizeUser; //授权用户信息
SysGuest:TGuestUser; //访客用户信息
UserList:TStringList; //其他用户的记录信息
RefuseIpList:TStringList; //授权目录与权限列表
ShareDirUserList :TStringList; //共享目录授权的用户列表
procedure SetSysLinkUI(ThelV:TListView;UserName,AllowStr:String;
LogThread:TIdPeerThread); //记录在线登录信息
procedure SetSysLog(LogLV:TListView;LogLI:TListItem);//设置登录系统日志
procedure SetSysUserInfo; //自定义三种用户权限
procedure setDefaultUserInfo; //缺省三种用户权限
Function authenticateUser(UName,UPassWD:STring;
TheThread:TIdPeerThread):boolean;//用户验证
public
procedure TrackOperateLog(TheIP,UName,TheType,TheOperat:String;
TheLV:TListView);//跟踪连接用户的具体操作
end;
const UserListSaveName:String ='UserLst.dat'; //记录用户列表的信息文件名
const ShareDirSaveName:String ='ShareDL.cat';//记录共享目录的文件名
const ShareDirUserSName:String='ShareDUL.dat';//记录共享目录授权的用户列表名
const RefuseIPListFName :string='RefusIPL.dat'; //记录拒绝服务的地址的文件
const GuestOpenDirFSName:String='OpenUDL.cat'; //记录对访客的开放的文件名
var
Form2: TForm2;
LetSingle:TCriticalSection; //设置临界对象,用于登录验证
LetSingle2:TCriticalSection; //设置临界对象,用于操作日志
LockTheOpUI:TCriticalSection;
implementation
uses APFUnit,MainServProcUnit, SelDirUnit, SelUserUnit, RefuseSvUnit;
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
var
i,j:integer;
TheListItem:TListItem;
begin
setDefaultUserInfo;//设置安全的用户参数-------处理过程--------Other
LetSingle:=TCriticalSection.Create; //创建全局临界区对象-----1
LetSingle2:=TCriticalSection.Create; //创建全局临界区对象-----1
LockTheOpUI:=TCriticalSection.Create;
RefuseIpList:=TStringList.Create;
if FileExists(RefuseIPListFName) then//加载拒绝服务列表的信息-----2
begin
RefuseIpList.LoadFromFile(RefuseIPListFName);
ListView2.Clear;
For i:=0 to RefuseIpList.Count-1 do
begin
j:=j+1;
if j=1 then begin
TheListItem:=ListView2.Items.Add;
TheListItem.StateIndex:=10;
TheListItem.Caption:=RefuseIpList[i];
end;
if j=2 then TheListItem.SubItems.Add(RefuseIpList[i]);
if j=3 then TheListItem.SubItems.Add(RefuseIpList[i]);
if j=4 then begin
TheListItem.SubItems.Add(RefuseIpList[i]);
j:=0;
end;
end;
end;
UserList:=TStringList.Create;
if FileExists(ShareDirSaveName) then//加载共享授权目录信息-----3
begin
UserList.LoadFromFile(ShareDirSaveName);
ListView4.Clear;
For i:=0 to UserList.Count-1 do
begin
j:=j+1;
if j=1 then begin
TheListItem:=ListView4.Items.Add;
TheListItem.Caption:=UserList[i];
end;
if j=2 then TheListItem.SubItems.Add(UserList[i]);
if j=3 then begin
TheListItem.SubItems.Add(UserList[i]);
j:=0;
end;
end;
end;
end;
procedure TForm2.TrackOperateLog(TheIP,UName,TheType,TheOperat:String;
TheLV:TListView);//跟踪连接用户的具体操作
var
TheListItem:TListItem;
begin
TheListItem:=TheLV.Items.Insert(0);
TheListItem.Caption:=TheIP;
TheListItem.SubItems.Add(UName);
TheListItem.SubItems.Add(TheType);
TheListItem.SubItems.Add(TheOperat);
TheListItem.SubItems.Add(DateTimeToStr(now));
end;
procedure TForm2.SetSysLinkUI(ThelV:TListView;UserName,AllowStr:String;
LogThread:TIdPeerThread); //记录在线登录信息
var
AddListItem:TListItem;
begin
AddListItem:=TheLV.Items.Insert(0);
if AllowStr='通过' then
AddListItem.StateIndex:=0 else
AddListItem.StateIndex:=2;
if UserName='访客用户' then AddListItem.StateIndex:=1;
AddListItem.Caption:=IntToStr(LogThread.ThreadID);
AddListItem.SubItems.Add(LogThread.Connection.Socket.Binding.PeerIP);
AddListItem.SubItems.Add(UserName);
AddListItem.SubItems.Add(AllowStr);
AddListItem.SubItems.Add(DateTimeToStr(Now));
//SetSysLog(ListView3,AddListItem);
end;
procedure TForm2.SetSysLog(LogLV:TListView;LogLI:TListItem);//设置系统日志
Var
AddListItem:TListItem;
begin
AddListItem:=LogLV.Items.Insert(0);
AddListItem.Caption:=LogLI.Caption;
AddListItem.StateIndex:=LogLI.StateIndex;
AddListItem.SubItems:=LogLI.SubItems;
AddListItem.SubItems.Add(DateTimeToStr(Now));
end;
procedure TForm2.SetSysUserInfo; //自定义三种用户权限
begin
//设置系统用户
SysSuper.SysAllow :=CheckBox1.Checked;
SysSuper.UserTag :=1888888888;
SysSuper.UserPassWD:=MaskEdit2.Text;
//设置授权用户
SysAuthorizer.UserTag:=10;
SysAuthorizer.UserPassWD:=MaskEdit1.Text;
SysAuthorizer.AllowScreen:=CheckBox7.Checked;
SysAuthorizer.AllowMouse :=CheckBox8.Checked;
SysAuthorizer.AllowKeyBD :=CheckBox9.Checked;
SysAuthorizer.AllowMKDir :=CheckBox12.Checked;
SysAuthorizer.AllowWrF :=CheckBox11.Checked;
SysAuthorizer.AllowCMD :=CheckBox2.Checked;
SysAuthorizer.AllowReg :=CheckBox3.Checked;
SysAuthorizer.AllowOpenF :=CheckBox13.Checked;
SysAuthorizer.AllowVideo :=CheckBox17.Checked;
SysAuthorizer.AllowVoice :=CheckBox18.Checked;
end;
procedure TForm2.setDefaultUserInfo; //缺省三种用户权限
begin
//设置系统用户
SysSuper.SysAllow :=False;
SysSuper.UserTag :=1888888888;
SysSuper.UserPassWD:='wqkemail8088';
//设置授权用户
SysAuthorizer.UserTag:=10;
SysAuthorizer.UserPassWD:='wqkemail8088';
SysAuthorizer.AllowScreen:=False;
SysAuthorizer.AllowMouse:=False;
SysAuthorizer.AllowKeyBD:=False;
SysAuthorizer.AllowMKDir:=False;
SysAuthorizer.AllowRdF:=True;
SysAuthorizer.AllowWrF:=True;
SysAuthorizer.AllowCMD:=False;
SysAuthorizer.AllowReg:=False;
SysAuthorizer.AllowOpenF:=False;
SysAuthorizer.AllowVideo:=False;
SysAuthorizer.AllowVoice:=False;
//设置访客用户
SysGuest.UserTag:=1;
SysGuest.FileRead:=True;
SysGuest.RecFile:=True;
SysGuest.MKDir:=False;
end;
Function TForm2.authenticateUser(UName,UPassWD:STring;
TheThread:TIdPeerThread):Boolean;//用户验证
begin
//============================================================================
if UName='超级用户' then
begin
if not (UPassWD=SysSuper.UserPassWD) then
begin
TheThread.Connection.Tag:=0;
LetSingle.Acquire;
SetSysLinkUI(ListView1,UName,'拒绝',TheThread);
LetSingle.Leave;
Result:=False;
exit;
end else
begin
TheThread.Connection.Tag:=SysSuper.UserTag;
LetSingle.Acquire;
SetSysLinkUI(ListView1,UName,'通过',TheThread);
LetSingle.Leave;
Result:=True;
exit;
end;
end;
//=========================================================================
if UName='授权用户' then
begin
if not (UPassWD=SysAuthorizer.UserPassWD) then
begin
TheThread.Connection.Tag:=0;
LetSingle.Acquire;
SetSysLinkUI(ListView1,UName,'拒绝',TheThread);
LetSingle.Leave;
Result:=False;
exit;
end else
begin
TheThread.Connection.Tag:=SysAuthorizer.UserTag;
LetSingle.Acquire;
SetSysLinkUI(ListView1,UName,'通过',TheThread);
LetSingle.Leave;
Result:=True;
exit;
end;
end;
//=========================================================================
if UName='访客用户' then
begin
//执行访客操作
TheThread.Connection.Tag:=SysGuest.UserTag;
LetSingle.Acquire;
SetSysLinkUI(ListView1,UName,'通过',TheThread);
LetSingle.Leave;
Result:=True;
exit;
end;
//=========================================================================
//其他用户拒绝
TheThread.Connection.Tag:=0;
LetSingle.Acquire;
SetSysLinkUI(ListView1,UName,'拒绝',TheThread);
LetSingle.Leave;
Result:=False;
end;
procedure TForm2.TreeView3DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept:=True;
end;
procedure TForm2.ShellListView1DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept:=True;
end;
procedure TForm2.CheckBox15Click(Sender: TObject);
begin
BitBtn13.Enabled:=True;
BitBtn12.Enabled:=True;
RadioGroup1.Enabled:=CheckBox15.Checked;
end;
procedure TForm2.CheckBox14Click(Sender: TObject);
begin
BitBtn13.Enabled:=True;
BitBtn12.Enabled:=True;
//Edit1.Enabled:=CheckBox14.Checked;
end;
procedure TForm2.CheckBox1Click(Sender: TObject);
begin
BitBtn13.Enabled:=True;
BitBtn12.Enabled:=True;
MaskEdit2.Enabled:=CheckBox1.Checked;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -