mirror of
https://github.com/HeidiSQL/HeidiSQL.git
synced 2025-08-06 18:24:26 +08:00
Issue #2014: code refactor: move ParseSSLSettings into TUser class
This commit is contained in:
@ -22,6 +22,7 @@ type
|
|||||||
public
|
public
|
||||||
constructor Create;
|
constructor Create;
|
||||||
function HostRequiresNameResolve: Boolean;
|
function HostRequiresNameResolve: Boolean;
|
||||||
|
procedure ParseSSLSettings(GrantOrCreate: String);
|
||||||
end;
|
end;
|
||||||
PUser = ^TUser;
|
PUser = ^TUser;
|
||||||
TUserList = TObjectList<TUser>;
|
TUserList = TObjectList<TUser>;
|
||||||
@ -167,7 +168,6 @@ type
|
|||||||
procedure SetModified(Value: Boolean);
|
procedure SetModified(Value: Boolean);
|
||||||
property Modified: Boolean read FModified write SetModified;
|
property Modified: Boolean read FModified write SetModified;
|
||||||
function GetPrivByNode(Node: PVirtualNode): TPrivObj;
|
function GetPrivByNode(Node: PVirtualNode): TPrivObj;
|
||||||
procedure ParseSSLSettings(GrantOrCreate: String; User: TUser);
|
|
||||||
public
|
public
|
||||||
{ Public declarations }
|
{ Public declarations }
|
||||||
end;
|
end;
|
||||||
@ -680,7 +680,7 @@ begin
|
|||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
ParseSSLSettings(rxGrant.Match[11], User^);
|
User.ParseSSLSettings(rxGrant.Match[11]);
|
||||||
|
|
||||||
// WITH .. GRANT OPTION
|
// WITH .. GRANT OPTION
|
||||||
// MAX_QUERIES_PER_HOUR 20 MAX_UPDATES_PER_HOUR 10 MAX_CONNECTIONS_PER_HOUR 5 MAX_USER_CONNECTIONS 2
|
// MAX_QUERIES_PER_HOUR 20 MAX_UPDATES_PER_HOUR 10 MAX_CONNECTIONS_PER_HOUR 5 MAX_USER_CONNECTIONS 2
|
||||||
@ -716,11 +716,17 @@ begin
|
|||||||
CreateUser := '';
|
CreateUser := '';
|
||||||
try
|
try
|
||||||
CreateUser := FConnection.GetVar('SHOW CREATE USER '+UserHost);
|
CreateUser := FConnection.GetVar('SHOW CREATE USER '+UserHost);
|
||||||
ParseSSLSettings(CreateUser, User^);
|
User.ParseSSLSettings(CreateUser);
|
||||||
except
|
except
|
||||||
on E:EDbError do;
|
on E:EDbError do;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
comboSSL.ItemIndex := User.SSL;
|
||||||
|
comboSSL.OnChange(comboSSL);
|
||||||
|
editCipher.Text := User.Cipher;
|
||||||
|
editIssuer.Text := User.Issuer;
|
||||||
|
editSubject.Text := User.Subject;
|
||||||
|
|
||||||
|
|
||||||
// Generate grant code for column privs by hand
|
// Generate grant code for column privs by hand
|
||||||
for Ptmp in FPrivObjects do begin
|
for Ptmp in FPrivObjects do begin
|
||||||
@ -788,47 +794,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TUserManagerForm.ParseSSLSettings(GrantOrCreate: String; User: TUser);
|
|
||||||
var
|
|
||||||
rx: TRegExpr;
|
|
||||||
RequireClause: String;
|
|
||||||
begin
|
|
||||||
// REQUIRE SSL X509 ISSUER '456' SUBJECT '789' CIPHER '123' NONE
|
|
||||||
rx := TRegExpr.Create;
|
|
||||||
rx.ModifierI := True;
|
|
||||||
rx.Expression := '\sREQUIRE\s+(.+)';
|
|
||||||
if rx.Exec(GrantOrCreate) then begin
|
|
||||||
RequireClause := rx.Match[1];
|
|
||||||
User.SSL := 0;
|
|
||||||
User.Cipher := '';
|
|
||||||
User.Issuer := '';
|
|
||||||
User.Subject := '';
|
|
||||||
rx.Expression := '\bSSL\b';
|
|
||||||
if rx.Exec(RequireClause) then
|
|
||||||
User.SSL := 1;
|
|
||||||
rx.Expression := '\bX509\b';
|
|
||||||
if rx.Exec(RequireClause) then
|
|
||||||
User.SSL := 2;
|
|
||||||
rx.Expression := '\bCIPHER\s+''([^'']+)';
|
|
||||||
if rx.Exec(RequireClause) then
|
|
||||||
User.Cipher := rx.Match[1];
|
|
||||||
rx.Expression := '\bISSUER\s+''([^'']+)';
|
|
||||||
if rx.Exec(RequireClause) then
|
|
||||||
User.Issuer := rx.Match[1];
|
|
||||||
rx.Expression := '\bSUBJECT\s+''([^'']+)';
|
|
||||||
if rx.Exec(RequireClause) then
|
|
||||||
User.Subject := rx.Match[1];
|
|
||||||
if IsNotEmpty(User.Cipher) or IsNotEmpty(User.Issuer) or IsNotEmpty(User.Subject) then
|
|
||||||
User.SSL := 3;
|
|
||||||
|
|
||||||
comboSSL.ItemIndex := User.SSL;
|
|
||||||
comboSSL.OnChange(comboSSL);
|
|
||||||
editCipher.Text := User.Cipher;
|
|
||||||
editIssuer.Text := User.Issuer;
|
|
||||||
editSubject.Text := User.Subject;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TUserManagerForm.listUsersGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode;
|
procedure TUserManagerForm.listUsersGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode;
|
||||||
Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: TImageIndex);
|
Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: TImageIndex);
|
||||||
var
|
var
|
||||||
@ -1571,6 +1536,40 @@ begin
|
|||||||
rx.Free;
|
rx.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TUser.ParseSSLSettings(GrantOrCreate: String);
|
||||||
|
var
|
||||||
|
rx: TRegExpr;
|
||||||
|
RequireClause: String;
|
||||||
|
begin
|
||||||
|
// REQUIRE SSL X509 ISSUER '456' SUBJECT '789' CIPHER '123' NONE
|
||||||
|
rx := TRegExpr.Create;
|
||||||
|
rx.ModifierI := True;
|
||||||
|
rx.Expression := '\sREQUIRE\s+(.+)';
|
||||||
|
if rx.Exec(GrantOrCreate) then begin
|
||||||
|
RequireClause := rx.Match[1];
|
||||||
|
SSL := 0;
|
||||||
|
Cipher := '';
|
||||||
|
Issuer := '';
|
||||||
|
Subject := '';
|
||||||
|
rx.Expression := '\bSSL\b';
|
||||||
|
if rx.Exec(RequireClause) then
|
||||||
|
SSL := 1;
|
||||||
|
rx.Expression := '\bX509\b';
|
||||||
|
if rx.Exec(RequireClause) then
|
||||||
|
SSL := 2;
|
||||||
|
rx.Expression := '\bCIPHER\s+''([^'']+)';
|
||||||
|
if rx.Exec(RequireClause) then
|
||||||
|
Cipher := rx.Match[1];
|
||||||
|
rx.Expression := '\bISSUER\s+''([^'']+)';
|
||||||
|
if rx.Exec(RequireClause) then
|
||||||
|
Issuer := rx.Match[1];
|
||||||
|
rx.Expression := '\bSUBJECT\s+''([^'']+)';
|
||||||
|
if rx.Exec(RequireClause) then
|
||||||
|
Subject := rx.Match[1];
|
||||||
|
if IsNotEmpty(Cipher) or IsNotEmpty(Issuer) or IsNotEmpty(Subject) then
|
||||||
|
SSL := 3;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user