📄 admuser.pas
字号:
unit admuser;
interface
uses Classes, abstuser;
type TAdmUser = class(TUser)
private
{ Private-Deklarationen }
protected
procedure Execute; override;
procedure IncommingData(st:string); override;
// public
procedure SendLine(cmd,stat,err:Char;msg:string);
end;
implementation
{ Wichtig: Methoden und Eigenschaften eines Objekts in der VCL
k鰊nen nur in einem Methodenaufruf mit SYNCHRONIZE
genutzt werden, z.B.
Synchronize(UpdateCaption);
und UpdateCaption k鰊nte sein,
procedure TAdmUser.UpdateCaption;
begin
Form1.Caption := 'Updated in einem Thread';
end; }
{ TAdmUser }
uses misc, WinSock, SysUtils;
{$I ..\..\defines.inc}
var adm_user:TAdmUser;
procedure TAdmUser.Execute;
begin
if (IP.S_addr<>16777343)and(AllowedIP(inet_ntoa(IP),AdminIPs,false)=false) then
begin
// SendLine(AM_DISCONN,SC_NORMAL,EC_BANNED,'');
Close;
Exit;
end;
// SendLine(AM_HELLO,SC_NORMAL,EC_NOERROR,#3+Char(Hi(Build))+Char(Lo(Build)));
inherited Execute;
end;
procedure TAdmUser.IncommingData(st:string);
var cmd,stat:Char;
begin
if Length(st)<2 then Exit;
cmd:=st[1];
stat:=st[2];
Delete(st,1,2);
{ case cmd of
AM_LOGIN :begin
if st<>IntToStr(adm_pwd) then
begin
SendLine(AM_LOGIN,SC_NORMAL,EC_WRONGPWD,'');
Close;
Exit;
end;
if (adm_user<>nil)and(adm_user<>self) then
begin
adm_user.SendLine(AM_DISCONN,SC_NORMAL,#,'');
adm_user.Close;
end;
adm_user:=self;
SendLine(AM_LOGIN,SC_NORMAL,EC_NOERROR,'');
end;
AM_GETDATA :begin
if adm_user<>self then
begin
SendLine(AM_GETDATA,SC_NORMAL,EC_NOTLOGGEDIN,'');
Exit;
end;
case stat of
end;
end;
end;}
end;
procedure TAdmUser.SendLine(cmd,stat,err:Char;msg:string);
begin
Send(cmd+stat+err+msg);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -