main.pas

来自「FIR引擎最新源码+注册」· PAS 代码 · 共 596 行 · 第 1/2 页

PAS
596
字号
begin
  if g_MySelf.boLogined then begin
    Application.MessageBox('你已经登陆在线!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
    Exit;
  end;
  sAccount := Trim(EditAccout.Text);
  sPassword := Trim(EditPassword.Text);
  if sAccount = '' then begin
    Application.MessageBox('请输入账号!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
    Exit;
  end;
  if sPassword = '' then begin
    Application.MessageBox('请输入账号!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
    Exit;
  end;
  ButtonLogin.Enabled := False;
  g_sAccount := sAccount;
  g_sPassword := sPassword;
  //Caption := '正在登陆...';
  ClientSocket.Active := False;
  ClientSocket.Host := g_sServerAddr;
  ClientSocket.Port := g_nServerPort;
  ClientSocket.Active := True;
  StatusBar.Panels[1].Text := '正在登陆...';
end;

procedure TfrmFMain.ButtonAddClick(Sender: TObject);
var
  UserSession: TUserSession;
  sAccount: string;
  sPassword: string;
  sSerialNumber: string;
  sUserIPaddr: string;
  btBind: Byte;
  nUserQQ: Integer;
  btMode: Byte;
  btPermission: Byte;
  btMainVersion: Byte; //引擎版本
  nUserIPaddr: Integer;
  nUserCount: Integer; //用户数
  nLicCount: Integer; //授权剩余次数
  dStartDate: TDateTime; //开始时间
  dEndDate: TDateTime; //结束时间
  nLicDays: Integer;
begin
  if not g_MySelf.boLogined then begin
    Application.MessageBox('请先登陆服务器!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
    Exit;
  end;
  sAccount := Trim(EditUserAccount.Text);
  sPassword := Trim(EditUserPassword.Text);
  sSerialNumber := Trim(EditSerialNumber.Text);
  btBind := RadioGroupBind.ItemIndex + 1;
  nUserQQ := Str_ToInt(Trim(EditUserQQ.Text), -1);
  btMode := RadioGroupUserMode.ItemIndex + 1;
  btPermission := SpinEditPermission.Value;
  btMainVersion := RadioGroupMainVersion.ItemIndex + 1; //引擎版本
  sUserIPaddr := Trim(EditIPaddr.Text);
  nUserCount := 99999; //用户数
  nLicCount := SpinEditMaxIpCount.Value; //授权剩余次数
  dStartDate := DateTimeEditStartDate.Date + Time; //开始时间
  dEndDate := DateTimeEditEndDate.Date + Time; //结束时间
  nLicDays := SpinEditMaxDay.Value;
  if (sAccount = '') or (sPassword = '') then begin
    Application.MessageBox('账号或者密码输入有误!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
    Exit;
  end;
  case btBind of
    1: begin
        if sSerialNumber = '' then begin
          Application.MessageBox('请输入机器码!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
          Exit;
        end;
      end;
    2: begin
        if not IsIpaddr(sUserIPaddr) then begin
          Application.MessageBox('请输入正确的IP地址!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
          Exit;
        end else begin
          nUserIPaddr := MakeIPToInt(sUserIPaddr);
          if nUserIPaddr = -1 then begin
            Application.MessageBox('请输入正确的IP地址!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
            Exit;
          end;
        end;
      end;
  end;
  case btMode of
    1: begin
        if nLicDays < 0 then begin
          Application.MessageBox('请输入正确的授权天数!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
          Exit;
        end;
      end;
    2: begin
        if nLicCount < 0 then begin
          Application.MessageBox('请输入正确的IP限制数量!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
          Exit;
        end;
      end;
    3: begin
        nLicCount := 99999;
      end;
  end;

  FillChar(UserSession, SizeOf(TUserSession), 0);
  UserSession.sAccount := sAccount;
  UserSession.sPassword := sPassword;
  UserSession.sSerialNumber := sSerialNumber;
  UserSession.btBind := btBind;
  UserSession.nUserQQ := nUserQQ;
  UserSession.btMode := btMode;
  UserSession.btPermission := btPermission;
  UserSession.btMainVersion := btMainVersion;
  UserSession.nUserIPaddr := nUserIPaddr;
  UserSession.nUserCount := nUserCount;
  UserSession.nLicCount := nLicCount;
  UserSession.dStartDate := dStartDate;
  UserSession.dEndDate := dEndDate;
  if Sender = ButtonAdd then begin
    if Application.MessageBox('是否确认增加此用户 ?', '确认信息', MB_YESNO + MB_ICONQUESTION) = mrYes then begin
      GroupBoxUser.Enabled := False;
      StatusBar.Panels[2].Text := '正在添加新用户...';
      SendAddUser(UserSession);
    end;
  end else
    if Sender = ButtonChg then begin
    if Application.MessageBox('是否确认修改此用户数据 ?', '确认信息', MB_YESNO + MB_ICONQUESTION) = mrYes then begin
      GroupBoxUser.Enabled := False;
      StatusBar.Panels[2].Text := '正在修改用户数据...';
      SendChgUser(UserSession);
    end;
  end;
end;

procedure TfrmFMain.ButtonDelClick(Sender: TObject);
var
  sData: string;
begin
  if not g_MySelf.boLogined then begin
    Application.MessageBox('请先登陆服务器!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
    Exit;
  end;
  if not InputQuery('删除用户', '输入用户账号:', sData) then Exit;
  GroupBoxUser.Enabled := False;
  StatusBar.Panels[2].Text := '正在删除用户数据...';
  SendDelUser(sData);
end;

procedure TfrmFMain.ButtonSearchClick(Sender: TObject);
var
  sData: string;
begin
  if not g_MySelf.boLogined then begin
    Application.MessageBox('请先登陆服务器!!!', '提示信息', MB_OK + MB_ICONINFORMATION);
    Exit;
  end;
  if not InputQuery('搜索用户', '输入用户账号:', sData) then Exit;
  GroupBoxUser.Enabled := False;
  StatusBar.Panels[2].Text := '正在搜索用户数据...';
  SendSearchUser(sData);
end;

procedure TfrmFMain.SendSocket(Socket: TCustomWinSocket; sSendMsg: string);
begin
  if Socket.Connected then begin
    sSendMsg := '#' + IntToStr(btCode) + sSendMsg + '!';
    Socket.SendText(sSendMsg);
    Inc(btCode);
    if btCode >= 10 then btCode := 1;
  end;
end;

procedure TfrmFMain.SendLoginUser(sAccount, sPassword: string);
  function GetSerialNumber: string;
    function GetDiskSerialNumber: string;
    var
      Storage: TStorage;
    begin
      Result := '';
      Storage := TStorage.Create;
      Storage.GetInfo;
      if Storage.DeviceCount > 0 then begin
        Result := Storage.Devices[0].SerialNumber;
      end;
      Storage.Free;
    end;

    function GetCPUSerialNumber: string;
    var
      CPU: TCPU;
    begin
      CPU := TCPU.Create;
      CPU.GetInfo();
      Result := CPU.SerialNumber;
      CPU.Free;
    end;
  begin
    Result := RivestStr(GetDiskSerialNumber + GetCPUSerialNumber);
  end;
var
  DefMsg: TDefaultMessage;
begin
  DefMsg := MakeDefaultMsg(GM_LOGIN, 0, 0, 0, 0);
  SendSocket(ClientSocket.Socket, EncodeMessage(DefMsg) + EncryptString(sAccount + '/' + sPassword + '/' + GetSerialNumber));
  //EditAccout.Text:=EncryptString(RivestStr(sAccount) + '/' + RivestStr(sPassword) + '/' + GetSerialNumber);
end;

procedure TfrmFMain.SendAddUser(UserSession: TUserSession);
var
  DefMsg: TDefaultMessage;
begin
  DefMsg := MakeDefaultMsg(SP_GM_ADDUSER, 0, 0, 0, 0);
  SendSocket(ClientSocket.Socket, EncodeMessage(DefMsg) + EncryptBuffer(@UserSession, SizeOf(TUserSession)));
end;

procedure TfrmFMain.SendChgUser(UserSession: TUserSession);
var
  DefMsg: TDefaultMessage;
begin
  DefMsg := MakeDefaultMsg(SP_GM_CHGUSER, 0, 0, 0, 0);
  SendSocket(ClientSocket.Socket, EncodeMessage(DefMsg) + EncryptBuffer(@UserSession, SizeOf(TUserSession)));
end;

procedure TfrmFMain.SendDelUser(sData: string);
var
  DefMsg: TDefaultMessage;
begin
  DefMsg := MakeDefaultMsg(SP_GM_DELUSER, 0, 0, 0, 0);
  SendSocket(ClientSocket.Socket, EncodeMessage(DefMsg) + EncryptString(sData));
end;

procedure TfrmFMain.SendSearchUser(sData: string);
var
  DefMsg: TDefaultMessage;
begin
  DefMsg := MakeDefaultMsg(SP_GM_SEARCHUSER, 0, 0, 0, 0);
  SendSocket(ClientSocket.Socket, EncodeMessage(DefMsg) + EncryptString(sData));
end;

procedure TfrmFMain.ButtonCloseSocketClick(Sender: TObject);
begin
  ClientSocket.Active := False;
end;

procedure TfrmFMain.FormCreate(Sender: TObject);
begin
  LoadConfig();
  g_sCaption := Caption;
  EditAccout.Text := g_sAccount;
  EditPassword.Text := g_sPassword;
  DateTimeEditStartDate.Date := Date;
  DateTimeEditEndDate.Date := Date + 30;
end;

procedure TfrmFMain.RadioGroupUserModeClick(Sender: TObject);
begin
  case RadioGroupUserMode.ItemIndex of
    0: begin
        SpinEditMaxIpCount.Enabled := False;
        SpinEditMaxDay.Enabled := True;
      end;
    1: begin
        SpinEditMaxIpCount.Enabled := True;
        SpinEditMaxDay.Enabled := False;
      end;
    2: begin
        SpinEditMaxIpCount.Enabled := False;
        SpinEditMaxDay.Enabled := False;
      end;
  end;
end;

procedure TfrmFMain.RadioGroupBindClick(Sender: TObject);
begin
  case RadioGroupBind.ItemIndex of
    0: begin
        EditIPaddr.Text := '127.0.0.1';
        EditIPaddr.Enabled := False;
        EditSerialNumber.Enabled := True;
      end;
    1: begin
        EditSerialNumber.Text := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
        EditIPaddr.Enabled := True;
        EditSerialNumber.Enabled := False;
      end;
  end;
end;

procedure TfrmFMain.SpinEditMaxDayChange(Sender: TObject);
begin
  DateTimeEditStartDate.Date := Date;
  DateTimeEditEndDate.Date := DateTimeEditStartDate.Date + SpinEditMaxDay.Value;
end;

end.

⌨️ 快捷键说明

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