⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit2.pas

📁 DELPHI 下远程控制源码
💻 PAS
📖 第 1 页 / 共 2 页
字号:
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 + -