Набросок авторизации на delphi.
Код:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Menus, Sockets, XPMan, Buttons, ComCtrls, ActnList;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
Button1: TButton;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
TcpClient1: TTcpClient;
Memo1: TMemo;
Button4: TButton;
XPManifest1: TXPManifest;
Button6: TButton;
TcpServer1: TTcpServer;
Label1: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit4: TEdit;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Edit5: TEdit;
Button2: TButton;
Label6: TLabel;
Edit3: TEdit;
Button3: TButton;
procedure N2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure cLog(msg: String);
procedure Button6Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure TcpServer1Accept(Sender: TObject; ClientSocket: TCustomIpClient);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private { Private declarations }
public { Public declarations }
end;
var Form1: TForm1;
implementation {$R *.dfm}
procedure TForm1.N2Click(Sender: TObject);
begin
close;
end;
procedure TForm1.cLog(msg: String);
begin
Memo1.Lines.Add(msg)
end;
procedure TForm1.Button1Click(Sender: TObject);
var line,s,j,msg,txt,w,key,kkk, time,timee, date,datee, login,pass,color,room:String;
int,i : Integer;
begin
Button1.Enabled:=false;
Button4.Enabled:=true;
Button6.Enabled:=true;
Button3.Enabled:=true;
Button2.Enabled:=true;
Edit5.Enabled:=true;
Edit1.Enabled:=false;
Edit2.Enabled:=false;
Edit3.Enabled:=false;
Edit4.Enabled:=false;
Memo1.Enabled:=true;
TcpClient1.RemoteHost:='71.6.147.234';
TcpClient1.RemotePort:='4000';
TcpClient1.Active := True;
TcpClient1.Connect;
txt:=TcpClient1.Receiveln(#$D#$A);
w := StringReplace(txt, 'C ', '', [rfReplaceAll, rfIgnoreCase]);
// txt := w;
int := StrToInt(w) Mod 47385 + 90204;
key:=IntToStr(int);
time:=TimeToStr(SysUtils.Time);
timee := StringReplace(time, ':', '_', [rfReplaceAll, rfIgnoreCase]);
date:=DateToStr(SysUtils.Date);
datee := StringReplace(date, '.', '_', [rfReplaceAll, rfIgnoreCase]);
login:=Edit1.Text;
pass:=Edit2.Text;
color:=Edit3.Text;
room:=Edit4.Text;
TCPClient1.connect;
TcpClient1.SendLn('HELLO "90204" "Atalk_1.0.2" "300" "300" "0.'+datee+'_'+timee+'_'+key+'" "3" "2" "'+key+'" "0"'#13'');
TcpClient1.SendLn('LOGIN "'+login+'"');
TcpClient1.SendLn('PASS "'+pass+'"');
TcpClient1.SendLn('S_COLOR "'+color+'"');
TcpClient1.SendLn('CHROOM "'+room+'"');
TcpClient1.SendLn('LSUSR');
//msg:=':-)';
//j:='S "'+msg+''+IntToStr(i)+'"'#13''#13;
//TcpClient1.SendLn(j);
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
Memo1.Clear;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
TcpClient1.Sendln('EXIT');
cLog('Exit...');
TcpClient1.Disconnect;
Button4.Enabled:=false;
Button1.Enabled:=true;
Button6.Enabled:=false;
Button3.Enabled:=false;
Button2.Enabled:=false;
Edit5.Enabled:=false;
end;
procedure TForm1.TcpServer1Accept(Sender: TObject; ClientSocket: TCustomIpClient);
var
s:string;
begin
s:=ClientSocket.receiveln;
while s<>'' do begin
CLog(ClientSocket.RemoteHost+': '+s);
s:=ClientSocket.receiveln;
end;
TCPClient1.Disconnect;
end;
procedure TForm1.Button2Click(Sender: TObject);
var j,g:String;
begin
TcpClient1.Connect;
j:='S "'+Edit5.Text+'"'#13''#13;
g := StringReplace(j, 'S', '"', [rfReplaceAll, rfReplaceAll]);
TcpClient1.Sendln(j);
cLog(Edit1.Text+':'+g);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Edit5.Clear;
end;
end.