Чутог доработать напильником и будет танк.
Предупреждаю исходник старый выложен только в ознакомительных целях.
unit uAuth;
interface
uses Windows, System.SysUtils, System.Classes, Vcl.Dialogs,
Xml.XMLIntf, Xml.XMLDoc, Xml.xmldom,
REST.Json, Data.DBXJSON,
[Ссылки могут видеть только зарегистрированные и активированные пользователи] Synacode, ssl_openssl;
const
UserAgent='Downloader/4410';
MimeType='application/x-[Ссылки могут видеть только зарегистрированные и активированные пользователи]';
MailRuDomains: array [0..3] of AnsiString = ('@mail.ru','@inbox.ru','@bk.ru','@list.ru');
type
TLogingMgr = procedure (_Str: string) of object;
TSelectDialog = procedure (_List: TStringList) of object;
FOnLogging: TLogingMgr;
FOnSelectDialog: TSelectDialog;
FDelay: Integer;
procedure Parser(_Stream: TStream);
procedure SetLogin(const Value: string);
procedure SetPassword(const Value: string);
// Авторизация под другим почтовым ящиком
function Auth: Boolean;
function AuthLogin: Boolean;
function AuthPersList: Boolean;
function GetPersList(_Stream: TStream): Boolean;
// Авторизация на мэйлсру
function AuthMailRu: Boolean; // Запрашиваем Токен для авторизации
function AuthMailRuUserInfo: Boolean; // Имитирует получение персональных данных
function AuthMailRuMrPage2: Boolean;
function AuthMailRuCoockie: Boolean;
function AuthMailRuAuth: Boolean;
function AuthMailRuAuthLogin: Boolean;
function AuthMailRuPersList: Boolean;
procedure SetOnLogging(const Value: TLogingMgr);
function GetOnLogging: TLogingMgr;
procedure SetOnSelectDialog(const Value: TSelectDialog);
function GetOnSelectDialog: TSelectDialog;
function GetPersID: string;
function GetTocken: string;
procedure SetDelay(const Value: Integer);
function GetDelay: Integer;
public
constructor Create;
destructor Destroy; override;
// Login (EMail) для авторизации
property Login: string read FLogin write SetLogin;
property Password: string read FPassword write SetPassword;
// Возвращает код ошибки (если 200 все ОК)
function GetErrorCode: Integer;
function Connect: Boolean; //deprecated;
function CheckAuth: Boolean;
function GetCommandLauncher: string;
// Относится ли логин к майл.ру
function IsMailRu(Login: string): Boolean; overload;
function IsMailRu: Boolean; overload;
end;
var
CommandLine: string;
implementation
{ TAuthClass }
function TAuthClass.Auth: Boolean;
var
[Ссылки могут видеть только зарегистрированные и активированные пользователи] T[Ссылки могут видеть только зарегистрированные и активированные пользователи]
XML: IXMLDocument;
Root: IXMLNode;
Child: IXMLNode;
Data: TStringStream;
begin
Result:= False;
HTTP := T[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Data:= TStringStream.Create;
Xml:= TXMLDocument.Create(nil);
try
[Ссылки могут видеть только зарегистрированные и активированные пользователи]'1.1';
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
[Ссылки могут видеть только зарегистрированные и активированные пользователи] MimeType;
Data.WriteString('<?xml version="1.0" encoding="UTF-8"?>');
Data.WriteString('<Auth ProjectId="61" SubProjectId="0" ShardId="0" Username="'+LowerCase(FLogin)+'" Password="'+Password+'"/>');
[Ссылки могут видеть только зарегистрированные и активированные пользователи](Data);
if [Ссылки могут видеть только зарегистрированные и активированные пользователи]('POST','[Ссылки могут видеть только зарегистрированные и активированные пользователи]') then begin
if [Ссылки могут видеть только зарегистрированные и активированные пользователи] <> 200 then begin
if Assigned(FOnLogging) then
FOnLogging(Format('Auth: HTTP ERROR [%d] %s',[[Ссылки могут видеть только зарегистрированные и активированные пользователи] [Ссылки могут видеть только зарегистрированные и активированные пользователи]]));
FErrorCode:= [Ссылки могут видеть только зарегистрированные и активированные пользователи]
Exit;
end;
if Assigned(FOnLogging) then
FOnLogging('Auth: '+[Ссылки могут видеть только зарегистрированные и активированные пользователи]);
Xml.LoadFromStream([Ссылки могут видеть только зарегистрированные и активированные пользователи]);
Xml.Active:= True;
if Assigned(FOnLogging) then
FOnLogging('Auth: PersID= '+FPersID);
Result:= True;
Xml.Active:= False;
end else raise Exception.Create('Произошла не предвиденная ошибка.'+#13#10+'Код ['+Inttostr([Ссылки могут видеть только зарегистрированные и активированные пользователи])+']'+[Ссылки могут видеть только зарегистрированные и активированные пользователи]);
finally
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Data.Free;
XML:= nil;
end;
end;
function TAuthClass.AuthLogin: Boolean;
var
[Ссылки могут видеть только зарегистрированные и активированные пользователи] T[Ссылки могут видеть только зарегистрированные и активированные пользователи]
XML: IXMLDocument;
Root: IXMLNode;
Data: TStringStream;
begin
Result:= False;
HTTP := T[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Data:= TStringStream.Create;
Xml:= TXMLDocument.Create(nil);
try
[Ссылки могут видеть только зарегистрированные и активированные пользователи]'1.1';
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
[Ссылки могут видеть только зарегистрированные и активированные пользователи] MimeType;
Data.WriteString('<?xml version="1.0" encoding="UTF-8"?>');
Data.WriteString('<AutoLogin ProjectId="61" SubProjectId="0" ShardId="0" Username="'+
LowerCase(FLogin)+'" Password="'+Password+'"/>');
[Ссылки могут видеть только зарегистрированные и активированные пользователи](Data);
if FErrorCode <> 200 then Exit;
if [Ссылки могут видеть только зарегистрированные и активированные пользователи]('POST','[Ссылки могут видеть только зарегистрированные и активированные пользователи]') then begin
if Assigned(FOnLogging) then
FOnLogging('AuthLogin: '+[Ссылки могут видеть только зарегистрированные и активированные пользователи]);
Xml.LoadFromStream([Ссылки могут видеть только зарегистрированные и активированные пользователи]);
Xml.Active:= True;
if Assigned(FOnLogging) then
FOnLogging('AuthLogin: Tocken= '+FTocken);
Result:= True;
Xml.Active:= False;
end else raise Exception.Create([Ссылки могут видеть только зарегистрированные и активированные пользователи]);
finally
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Data.Free;
XML:= nil;
end;
end;
function TAuthClass.AuthMailRu: Boolean;
var
[Ссылки могут видеть только зарегистрированные и активированные пользователи] T[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Data: TStringStream;
TS: TStringList;
JObject: TJSONObject;
begin
HTTP := T[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Data:= TStringStream.Create;
TS:= TStringList.Create;
try
[Ссылки могут видеть только зарегистрированные и активированные пользователи]'1.1';
[Ссылки могут видеть только зарегистрированные и активированные пользователи] UserAgent;
[Ссылки могут видеть только зарегистрированные и активированные пользователи] MimeType;
Data.WriteString('client_id=gamecenter.mail.ru&grant_type=password&username='+LowerCase(Login)+'&password='+Password);
[Ссылки могут видеть только зарегистрированные и активированные пользователи](Data);
if [Ссылки могут видеть только зарегистрированные и активированные пользователи]('POST','[Ссылки могут видеть только зарегистрированные и активированные пользователи]') then begin
if [Ссылки могут видеть только зарегистрированные и активированные пользователи] <> 200 then begin
if Assigned(FOnLogging) then
FOnLogging(Format('AuthMailRu: HTTP ERROR [%d] %s',[[Ссылки могут видеть только зарегистрированные и активированные пользователи] [Ссылки могут видеть только зарегистрированные и активированные пользователи]]));
FErrorCode:= [Ссылки могут видеть только зарегистрированные и активированные пользователи]
Exit;
end;
TS.LoadFromStream([Ссылки могут видеть только зарегистрированные и активированные пользователи]);
JObject:=TJSONObject.ParseJSONValue(TS.Text) as TJSONObject;
if Assigned(JObject) then begin
if JObject.Get(0).JsonString.Value = 'error' then begin
if Assigned(FOnLogging) then
FOnLogging(Format('AuthMailRu: JSON ERROR [%s] %s',[JObject.Get(1).JsonValue.Value, JObject.Get(JObject.Size-1).JsonValue.ToString]));
FErrorCode:= 400;
Exit;
end;
if JObject.Get(0).JsonString.Value = 'expires_in' then
FTocken:= JObject.Get(JObject.Size-1).JsonValue.Value;
end else begin
if Assigned(FOnLogging) then
FOnLogging('AuthMailRu: JSON ERROR Jsonobject not assigned!');
FErrorCode:= 400;
end;
end;
finally
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Data.Free;
end;
end;
function TAuthClass.AuthMailRuAuth: Boolean;
var
[Ссылки могут видеть только зарегистрированные и активированные пользователи] T[Ссылки могут видеть только зарегистрированные и активированные пользователи]
TS: TStringList;
Data: TStringStream;
Mpop: string;
begin
HTTP := T[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Data:= TStringStream.Create;
TS:= TStringList.Create;
try
[Ссылки могут видеть только зарегистрированные и активированные пользователи]'1.1';
[Ссылки могут видеть только зарегистрированные и активированные пользователи] UserAgent;
[Ссылки могут видеть только зарегистрированные и активированные пользователи] MimeType;
if FErrorCode <> 200 then Exit;
Data.WriteString('<?xml version="1.0" encoding="UTF-8"?><Auth Cookie="'+FMpop+'" ChannelId="0"/>');
[Ссылки могут видеть только зарегистрированные и активированные пользователи](Data);
if [Ссылки могут видеть только зарегистрированные и активированные пользователи]('POST', '[Ссылки могут видеть только зарегистрированные и активированные пользователи]') then begin
if [Ссылки могут видеть только зарегистрированные и активированные пользователи] <> 200 then begin
if Assigned(FOnLogging) then
FOnLogging(Format('AuthMailRuAuth: HTTP ERROR [%d] %s',[[Ссылки могут видеть только зарегистрированные и активированные пользователи] [Ссылки могут видеть только зарегистрированные и активированные пользователи]]));
FErrorCode:= [Ссылки могут видеть только зарегистрированные и активированные пользователи]
Exit;
end;
TS.LoadFromStream([Ссылки могут видеть только зарегистрированные и активированные пользователи]);
TS.SaveToFile('AuthMailRuAuth.txt');
end;
finally
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Data.Free;
TS.Free;
end;
end;
function TAuthClass.AuthMailRuAuthLogin: Boolean;
var
[Ссылки могут видеть только зарегистрированные и активированные пользователи] T[Ссылки могут видеть только зарегистрированные и активированные пользователи]
XML: IXMLDocument;
Root: IXMLNode;
Data: TStringStream;
begin
Result:= False;
HTTP := T[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Data:= TStringStream.Create;
Xml:= TXMLDocument.Create(nil);
try
[Ссылки могут видеть только зарегистрированные и активированные пользователи]'1.1';
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
[Ссылки могут видеть только зарегистрированные и активированные пользователи] MimeType;
[Ссылки могут видеть только зарегистрированные и активированные пользователи](Data);
if FErrorCode <> 200 then Exit;
if [Ссылки могут видеть только зарегистрированные и активированные пользователи]('POST','[Ссылки могут видеть только зарегистрированные и активированные пользователи]') then begin
if [Ссылки могут видеть только зарегистрированные и активированные пользователи] <> 200 then begin
if Assigned(FOnLogging) then
FOnLogging(Format('AuthMailRuAuth: HTTP ERROR [%d] %s',[[Ссылки могут видеть только зарегистрированные и активированные пользователи] [Ссылки могут видеть только зарегистрированные и активированные пользователи]]));
FErrorCode:= [Ссылки могут видеть только зарегистрированные и активированные пользователи]
Exit;
end;
Xml.LoadFromStream([Ссылки могут видеть только зарегистрированные и активированные пользователи]);
Xml.Active:= True;
if Assigned(FOnLogging) then
FOnLogging('AuthLogin: '+Xml.XML.Text);
if Assigned(FOnLogging) then
FOnLogging('AuthLogin: Tocken= '+FTocken);
Result:= True;
Xml.Active:= False;
end else raise Exception.Create([Ссылки могут видеть только зарегистрированные и активированные пользователи]);
finally
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Data.Free;
XML:= nil;
end;
end;
function TAuthClass.AuthMailRuCoockie: Boolean;
var
[Ссылки могут видеть только зарегистрированные и активированные пользователи] T[Ссылки могут видеть только зарегистрированные и активированные пользователи]
TS: TStringList;
Mpop: string;
begin
HTTP := T[Ссылки могут видеть только зарегистрированные и активированные пользователи]
TS:= TStringList.Create;
try
[Ссылки могут видеть только зарегистрированные и активированные пользователи]'1.1';
[Ссылки могут видеть только зарегистрированные и активированные пользователи] UserAgent;
[Ссылки могут видеть только зарегистрированные и активированные пользователи] MimeType;
if FErrorCode <> 200 then Exit;
if [Ссылки могут видеть только зарегистрированные и активированные пользователи]('GET', FPersID) then begin
if [Ссылки могут видеть только зарегистрированные и активированные пользователи] <> 200 then begin
if Assigned(FOnLogging) then
FOnLogging(Format('AuthMailRuCoockie: HTTP ERROR [%d] %s',[[Ссылки могут видеть только зарегистрированные и активированные пользователи] [Ссылки могут видеть только зарегистрированные и активированные пользователи]]));
FErrorCode:= [Ссылки могут видеть только зарегистрированные и активированные пользователи]
Exit;
end;
Mpop:= [Ссылки могут видеть только зарегистрированные и активированные пользователи]['Mpop'];
if Assigned(FOnLogging) then
FOnLogging(Format('AuthMailRuCoockie: HTTP Coockie Mpop = %s',[Mpop]));
FMpop:= Mpop;
end;
finally
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
TS.Free;
end;
end;
function TAuthClass.AuthMailRuMrPage2: Boolean;
var
[Ссылки могут видеть только зарегистрированные и активированные пользователи] T[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Data: TStringStream;
XML: IXMLDocument;
Root: IXMLNode;
begin
HTTP := T[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Data:= TStringStream.Create;
XML:= TXMLDocument.Create(nil);
try
[Ссылки могут видеть только зарегистрированные и активированные пользователи]'1.1';
[Ссылки могут видеть только зарегистрированные и активированные пользователи] UserAgent;
[Ссылки могут видеть только зарегистрированные и активированные пользователи] MimeType;
Data.WriteString('<?xml version="1.0" encoding="UTF-8"?><MrPage2 SessionKey="'+FTocken+'" Page="[Ссылки могут видеть только зарегистрированные и активированные пользователи]"/>');
[Ссылки могут видеть только зарегистрированные и активированные пользователи](Data);
if FErrorCode <> 200 then Exit;
if [Ссылки могут видеть только зарегистрированные и активированные пользователи]('POST','[Ссылки могут видеть только зарегистрированные и активированные пользователи]') then begin
if [Ссылки могут видеть только зарегистрированные и активированные пользователи] <> 200 then begin
if Assigned(FOnLogging) then
FOnLogging(Format('AuthMailRuMrPage2: HTTP ERROR [%d] %s',[[Ссылки могут видеть только зарегистрированные и активированные пользователи] [Ссылки могут видеть только зарегистрированные и активированные пользователи]]));
FErrorCode:= [Ссылки могут видеть только зарегистрированные и активированные пользователи]
Exit;
end;
XML.LoadFromStream([Ссылки могут видеть только зарегистрированные и активированные пользователи]);
XML.Active:= True;
if XML.IsEmptyDoc then begin
if Assigned(FOnLogging) then
FOnLogging('AuthMailRuMrPage2: XML ERROR IsEmptyDoc ');
FErrorCode:= 400;
Exit;
end;
Root:= XML.DocumentElement;
FPersID:= Root.Attributes['Location'];
if Assigned(FOnLogging) then
FOnLogging('AuthMailRuMrPage2: XML '+FPersID);
XML.Active:= False;
end;
finally
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Data.Free;
XML:= Nil;
end;
end;
function TAuthClass.AuthMailRuPersList: Boolean;
var
[Ссылки могут видеть только зарегистрированные и активированные пользователи] T[Ссылки могут видеть только зарегистрированные и активированные пользователи]
XML: IXMLDocument;
Root: IXMLNode;
TS: TStringList;
Data: TStringStream;
I: Int32;
begin
Result:= False;
HTTP := T[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Data:= TStringStream.Create;
Xml:= TXMLDocument.Create(nil);
TS:= TStringList.Create;
try
[Ссылки могут видеть только зарегистрированные и активированные пользователи]'1.1';
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
[Ссылки могут видеть только зарегистрированные и активированные пользователи] MimeType;
Data.WriteString('<?xml version="1.0" encoding="UTF-8"?>');
Data.WriteString('<PersList ProjectId="61" SubProjectId="0" ShardId="0" Mpop="'+FMpop+'"/>');
[Ссылки могут видеть только зарегистрированные и активированные пользователи](Data);
if FErrorCode <> 200 then Exit;
if [Ссылки могут видеть только зарегистрированные и активированные пользователи]('POST','[Ссылки могут видеть только зарегистрированные и активированные пользователи]') then begin
if FErrorCode <> 200 then begin
if Assigned(FOnLogging) then
FOnLogging('AuthMailRuPersList: '+[Ссылки могут видеть только зарегистрированные и активированные пользователи]);
FErrorCode:= [Ссылки могут видеть только зарегистрированные и активированные пользователи]
Exit;
end;
Xml.LoadFromStream([Ссылки могут видеть только зарегистрированные и активированные пользователи]);
Xml.Active:= True;
if Xml.IsEmptyDoc then Exit;
Root:= Xml.DocumentElement;
FPersID:= Root.Attributes['PersId'];
if Assigned(FOnLogging) then
FOnLogging('AuthPersList: PersId= '+FTocken);
for I := 0 to Root.ChildNodes.Count-1 do begin
TS.Add(Root.ChildNodes[i].Attributes['Title']+'='+Root.ChildNodes[i].Attributes['Id']);
end;
CommandLine:= GetCommandLauncher;
if Assigned(FOnSelectDialog) then
FOnSelectDialog(TS);
Result:= True;
end else raise Exception.Create([Ссылки могут видеть только зарегистрированные и активированные пользователи]);
finally
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Data.Free;
TS.Free;
XML:= nil;
end;
end;
function TAuthClass.AuthMailRuUserInfo: Boolean;
var
[Ссылки могут видеть только зарегистрированные и активированные пользователи] T[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Data: TStringStream;
JObject: TJSONObject;
begin
HTTP := T[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Data:= TStringStream.Create;
try
[Ссылки могут видеть только зарегистрированные и активированные пользователи]'1.1';
[Ссылки могут видеть только зарегистрированные и активированные пользователи] UserAgent;
[Ссылки могут видеть только зарегистрированные и активированные пользователи] MimeType;
Data.WriteString('client_id=gamecenter.mail.ru&access_token='+FTocken);
[Ссылки могут видеть только зарегистрированные и активированные пользователи](Data);
if [Ссылки могут видеть только зарегистрированные и активированные пользователи]('POST','[Ссылки могут видеть только зарегистрированные и активированные пользователи]') then begin
if [Ссылки могут видеть только зарегистрированные и активированные пользователи] <> 200 then begin
if Assigned(FOnLogging) then
FOnLogging(Format('AuthMailRuUserInfo: HTTP ERROR [%d] %s',[[Ссылки могут видеть только зарегистрированные и активированные пользователи] [Ссылки могут видеть только зарегистрированные и активированные пользователи]]));
FErrorCode:= [Ссылки могут видеть только зарегистрированные и активированные пользователи]
Exit;
end;
end;
finally
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Data.Free;
end;
end;
function TAuthClass.AuthPersList: Boolean;
var
[Ссылки могут видеть только зарегистрированные и активированные пользователи] T[Ссылки могут видеть только зарегистрированные и активированные пользователи]
XML: IXMLDocument;
Root: IXMLNode;
TS: TStringList;
Data: TStringStream;
I: Int32;
Str: string;
begin
Result:= False;
HTTP := T[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Data:= TStringStream.Create;
Xml:= TXMLDocument.Create(nil);
TS:= TStringList.Create;
try
[Ссылки могут видеть только зарегистрированные и активированные пользователи]'1.1';
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
[Ссылки могут видеть только зарегистрированные и активированные пользователи] MimeType;
Data.WriteString('<?xml version="1.0" encoding="UTF-8"?>');
Data.WriteString('<PersList ProjectId="61" SubProjectId="0" ShardId="0" Username="'+
LowerCase(FLogin)+'" Password="'+Password+'"/>');
[Ссылки могут видеть только зарегистрированные и активированные пользователи](Data);
if FErrorCode <> 200 then Exit;
if [Ссылки могут видеть только зарегистрированные и активированные пользователи]('POST','[Ссылки могут видеть только зарегистрированные и активированные пользователи]') then begin
if Assigned(FOnLogging) then
FOnLogging('AuthPersList: '+[Ссылки могут видеть только зарегистрированные и активированные пользователи]);
Xml.LoadFromStream([Ссылки могут видеть только зарегистрированные и активированные пользователи]);
Xml.Active:= True;
if Xml.IsEmptyDoc then Exit;
Root:= Xml.DocumentElement;
Str:= Root.Attributes['PersId'];
if Assigned(FOnLogging) then
FOnLogging('AuthPersList: PersId= '+Str);
for I := 0 to Root.ChildNodes.Count-1 do begin
TS.Add(Root.ChildNodes[i].Attributes['Title']+'='+Root.ChildNodes[i].Attributes['Id']);
end;
CommandLine:= GetCommandLauncher;
if Assigned(FOnSelectDialog) then
FOnSelectDialog(TS);
Result:= True;
end else raise Exception.Create([Ссылки могут видеть только зарегистрированные и активированные пользователи]);
finally
[Ссылки могут видеть только зарегистрированные и активированные пользователи]
Data.Free;
TS.Free;
XML:= nil;
end;
end;
function TAuthClass.CheckAuth: Boolean;
var
IsMail: Boolean;
begin
IsMail:= IsMailRu;
if IsMail then Result:= AuthMailRu
else Result:= Auth;
end;
function TAuthClass.Connect: Boolean;
var
IsMail: Boolean;
begin
Result:= False;
IsMail:= IsMailRu;
case IsMail of
True: begin
AuthMailRu;
Sleep(100);
AuthMailRuUserInfo;
Sleep(100);
AuthMailRuMrPage2;
Sleep(100);
AuthMailRuCoockie;
Sleep(100);
AuthMailRuAuth;
Sleep(1000);
AuthMailRuAuthLogin;
Sleep(1000);
AuthMailRuPersList;
Sleep(1000);
Result:= True;
end;
False: begin
Auth;
Sleep(100);
AuthLogin;
Sleep(1000);
AuthPersList;
Sleep(1000);
Result:= True;
end;
end;
end;
destructor TAuthClass.Destroy;
begin
FPassword:='';
FLogin:='';
FPersID:='';
FTocken:='';
FMpop:='';
inherited;
end;
function TAuthClass.GetCommandLauncher: string;
begin
Result:=' startbypatcher user:%s _user:'+FPersID+' token2:'+FTocken;
end;
function TAuthClass.GetDelay: Integer;
begin
Result:= FDelay;
end;
function TAuthClass.GetErrorCode: Integer;
begin
Result:= FErrorCode;
end;
function TAuthClass.GetOnLogging: TLogingMgr;
begin
Result:= FOnLogging;
end;
function TAuthClass.GetOnSelectDialog: TSelectDialog;
begin
Result:= FOnSelectDialog;
end;
function TAuthClass.GetPersID: string;
begin
Result:= FPersID;
end;
function TAuthClass.GetPersList(_Stream: TStream): Boolean;
var
XML: IXMLDocument;
Root, Node: IXMLNode;
TS: TStringList;
I: Integer;
begin
Result:= False;
if _Stream = nil then Exit;
TS:= TStringList.Create;
XML:= TXMLDocument.Create(nil);
try
XML.Active:= True;
XML.LoadFromStream(_Stream);
if XML.IsEmptyDoc then Exit;
Root:= XML.DocumentElement;
FPersID:= Root.Attributes['PersId'];
if Root.ChildNodes.Count <= 0 then Exit;
for I := 0 to Root.ChildNodes.Count-1 do begin
Node:= Root.ChildNodes.Nodes[i];
TS.Add(Node.Attributes['Title']+'='+ Node.Attributes['Id']);
end;
if Assigned(FOnLogging) then
FOnLogging('GetPersList: Pers count: '+IntToStr(TS.Count));
if (TS.Count>0) then
if Assigned(FOnSelectDialog) then begin
Result:= True;
FOnSelectDialog(TS);
end;
XML.Active:= False;
finally
XML:= nil;
TS.Free;
end;
end;
function TAuthClass.GetTocken: string;
begin
Result:= FTocken;
end;
function TAuthClass.IsMailRu: Boolean;
begin
Result:= IsMailRu(FLogin);
end;
function TAuthClass.IsMailRu(Login: string): Boolean;
var
I: Byte;
begin
Result:= False;
for I := 0 to Length(MailRuDomains)-1 do
if Pos(MailRuDomains[i], Login) > 0 then
Result:= True;
end;
procedure TAuthClass.Parser(_Stream: TStream);
begin
end;
procedure TAuthClass.SetDelay(const Value: Integer);
begin
FDelay := Value;
end;
procedure TAuthClass.SetLogin(const Value: string);
begin
FLogin := Value;
end;
procedure TAuthClass.SetOnLogging(const Value: TLogingMgr);
begin
FOnLogging := Value;
end;
procedure TAuthClass.SetOnSelectDialog(const Value: TSelectDialog);
begin
FOnSelectDialog := Value;
end;
procedure TAuthClass.SetPassword(const Value: string);
begin
FPassword := Value;
end;
end.
krysun
19.09.2016, 19:50
s:='startbypatcher user:'+pwidechar(user)+' _user:'+pwidechar(_user)+' token2:'+pwidechar(token2);
Вошел только изменив эту строчку на
s:=' startbypatcher user:'+user+' token2:'+token2;
(С поста Venzel)
unit Unit2;