www.pudn.com > pino3srv-src.zip > 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önnen nur in einem Methodenaufruf mit SYNCHRONIZE 
           genutzt werden, z.B. 
 
      Synchronize(UpdateCaption); 
 
  und UpdateCaption könnte 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.