usersettingsform.pas

来自「著名的SecureBlackBox控件完整源码」· PAS 代码 · 共 123 行

PAS
123
字号
unit UserSettingsForm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, DemoSettings;

type
  TfrmUserSettings = class(TForm)
    gbUserSettings: TGroupBox;
    cbPassword: TCheckBox;
    cbPublicKey: TCheckBox;
    cbKeyboard: TCheckBox;
    btnOK: TButton;
    btnCancel: TButton;
    editUsername: TEdit;
    lUser: TLabel;
    rbAny: TRadioButton;
    rbAll: TRadioButton;
    btnSetPassword: TButton;
    btnSetPublicKey: TButton;
    procedure btnOKClick(Sender: TObject);
    procedure btnCancelClick(Sender: TObject);
    procedure cbPasswordClick(Sender: TObject);
    procedure cbPublicKeyClick(Sender: TObject);
    procedure btnSetPasswordClick(Sender: TObject);
    procedure btnSetPublicKeyClick(Sender: TObject);
    procedure cbKeyboardClick(Sender: TObject);
    procedure rbAnyClick(Sender: TObject);
    procedure rbAllClick(Sender: TObject);
  private
    FUser: TSSHServerUser;
  public
    procedure Initialize(User: TSSHServerUser);
  end;

var
  frmUserSettings: TfrmUserSettings;

implementation

{$R *.DFM}

uses
  SBSSHConstants, SetPasswordForm, SetPublicKeyForm;

procedure TfrmUserSettings.btnOKClick(Sender: TObject);
begin
  ModalResult := mrOk;
end;

procedure TfrmUserSettings.btnCancelClick(Sender: TObject);
begin
  ModalResult := mrCancel;
end;

procedure TfrmUserSettings.Initialize(User: TSSHServerUser);
begin
  FUser := User;
  editUsername.Text := User.Name;
  cbPassword.Checked := User.AuthTypes and SSH_AUTH_TYPE_PASSWORD > 0;
  cbPublicKey.Checked := User.AuthTypes and SSH_AUTH_TYPE_PUBLICKEY > 0;
  cbKeyboard.Checked := User.AuthTypes and SSH_AUTH_TYPE_KEYBOARD > 0;
  btnSetPassword.Enabled := cbPassword.Checked or cbKeyboard.Checked;
  btnSetPublicKey.Enabled := cbPublicKey.Checked;
  rbAny.Checked := not User.AuthAll;
  rbAll.Checked := User.AuthAll; 
end;

procedure TfrmUserSettings.cbPasswordClick(Sender: TObject);
begin
  btnSetPassword.Enabled := cbPassword.Checked or cbKeyboard.Checked;
  if cbPassword.Checked then
    FUser.AuthTypes := FUser.AuthTypes or SSH_AUTH_TYPE_PASSWORD
  else
    FUser.AuthTypes := FUser.AuthTypes and not SSH_AUTH_TYPE_PASSWORD;
end;

procedure TfrmUserSettings.cbPublicKeyClick(Sender: TObject);
begin
  btnSetPublicKey.Enabled := cbPublicKey.Checked;
  if cbPublicKey.Checked then
    FUser.AuthTypes := FUser.AuthTypes or SSH_AUTH_TYPE_PUBLICKEY
  else
    FUser.AuthTypes := FUser.AuthTypes and not SSH_AUTH_TYPE_PUBLICKEY;
end;

procedure TfrmUserSettings.cbKeyboardClick(Sender: TObject);
begin
  btnSetPassword.Enabled := cbPassword.Checked or cbKeyboard.Checked;
  if cbKeyboard.Checked then
    FUser.AuthTypes := FUser.AuthTypes or SSH_AUTH_TYPE_KEYBOARD
  else
    FUser.AuthTypes := FUser.AuthTypes and not SSH_AUTH_TYPE_KEYBOARD;
end;

procedure TfrmUserSettings.btnSetPasswordClick(Sender: TObject);
begin
  if frmSetPassword.ShowModal = mrOk then
    FUser.SetPassword(frmSetPassword.editPassword.Text);
end;

procedure TfrmUserSettings.btnSetPublicKeyClick(Sender: TObject);
begin
  frmSetPublicKey.memoPublicKey.Lines.Text := FUser.PublicKey;
  if frmSetPublicKey.ShowModal = mrOk then
    if not FUser.SetPublicKey(frmSetPublicKey.memoPublicKey.Text) then
      MessageDlg('Invalid public key format', mtError, [mbOk], 0);
end;

procedure TfrmUserSettings.rbAnyClick(Sender: TObject);
begin
  FUser.AuthAll := false;
end;

procedure TfrmUserSettings.rbAllClick(Sender: TObject);
begin
  FUser.AuthAll := true;
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?