亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lmain.pas

?? 傳奇服務端代碼 LoginSrvSQL 通訊部分
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
unit LMain;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics,
  Controls, Forms, Dialogs, StdCtrls, ExtCtrls, JSocket, SyncObjs,
  Grids, Buttons, IniFiles, MudUtil, SDK, Parse,
  Menus, Grobal2, LSShare, ComCtrls;

type
  TConnInfo = record      //Size 0x20 Address: 0x00468601
    sAccount: string;     //0x00
    sIPaddr:  string;     //0x04
    sServerName: string;  //0x08
    nSessionID: integer;  //0x0C
    boPayCost: boolean;   //0x10
    dwKickTick: longword; //0x14
    dwStartTick: longword;//0x18
    boKicked: boolean;    //0x1C
    nLockCount: integer;
  end;
  pTConnInfo = ^TConnInfo;

  pTGateInfo = ^TGateInfo;
  TGateInfo = record //Size 0x14 Address: 0x004686A0
    Socket:      TCustomWinSocket; //0x00
    sIPaddr:     string;           //0x04
    sReceiveMsg: string;           //0x08
    UserList:    TList;            //0x0C
    dwKeepAliveTick: longword;         //0x10
  end;

  pTUserInfo = ^TUserInfo;
  TUserInfo = record //Size 0x68 Address: 0x004686C8
    sAccount:  string;            //0x00
    sUserIPaddr: string;            //0x0B
    sGateIPaddr: string;            //用戶連接到網關,網關的連接IP
    sSockIndex: string;            //0x20
    nVersionDate: integer;           //0x24
    boCertificationOK: boolean;           //0x28
    bo29:      boolean;           //0x29
    bo2A:      boolean;           //0x2A
    bo2B:      boolean;           //0x2B
    nSessionID: integer;           //0x2C
    boPayCost: boolean;           //0x30
    nIDDay:    integer;           //0x34
    nIDHour:   integer;           //0x38
    nIPDay:    integer;           //0x3C
    nIPHour:   integer;           //0x40
    dtDateTime: TDateTime;         //0x48
    boSelServer: boolean;           //0x50
    bo51:      boolean;           //0x51
    Socket:    TCustomWinSocket;  //0x54
    sReceiveMsg: string;            //0x58
    dwTime5C:  longword;          //0x5C
    bo60:      boolean;           //0x60
    bo61:      boolean;           //0x61
    bo62:      boolean;           //0x62
    bo63:      boolean;           //0x63
    dwClientTick: longword;          //0x64
    Gate:      pTGateInfo;
  end;

  TFrmMain = class(TForm)
    GSocket:    TServerSocket;
    ExecTimer:  TTimer;
    Timer1:     TTimer;
    StartTimer: TTimer;
    WebLogTimer: TTimer;
    LogTimer:   TTimer;
    CountLogTimer: TTimer;
    MonitorTimer: TTimer;
    MainMenu:   TMainMenu;
    MENU_CONTROL: TMenuItem;
    MENU_CONTROL_EXIT: TMenuItem;
    MENU_VIEW:  TMenuItem;
    MENU_OPTION: TMenuItem;
    MENU_HELP:  TMenuItem;
    MENU_HELP_ABOUT: TMenuItem;
    MENU_OPTION_ROUTE: TMenuItem;
    MENU_VIEW_SESSION: TMenuItem;
    R1: TMenuItem;
    C1: TMenuItem;
    G1: TMenuItem;
    BtnDump: TSpeedButton;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    Memo1: TMemo;
    TabSheet2: TTabSheet;
    MonitorGrid: TStringGrid;
    TabSheet3: TTabSheet;
    LbMasCount: TLabel;
    Label1: TLabel;
    CkLogin: TCheckBox;
    CbViewLog: TCheckBox;
    Button1: TButton;
    BtnView: TButton;
    BtnShowServerUsers: TButton;
    Button2: TButton;
    Button3: TButton;

    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure ExecTimerTimer(Sender: TObject);
    procedure Memo1DblClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure StartTimerTimer(Sender: TObject);

    procedure BtnViewClick(Sender: TObject);
    procedure CountLogTimerTimer(Sender: TObject);
    procedure BtnShowServerUsersClick(Sender: TObject);
    procedure MonitorTimerTimer(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
    procedure GSocketClientConnect(Sender: TObject; Socket: TCustomWinSocket);
    procedure GSocketClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
    procedure GSocketClientError(Sender: TObject; Socket: TCustomWinSocket;
      ErrorEvent: TErrorEvent; var ErrorCode: integer);
    procedure GSocketClientRead(Sender: TObject; Socket: TCustomWinSocket);
    procedure Panel2DblClick(Sender: TObject);
    procedure CbViewLogClick(Sender: TObject);
    procedure MENU_CONTROL_EXITClick(Sender: TObject);
    procedure MENU_OPTION_ROUTEClick(Sender: TObject);
    procedure MENU_VIEW_SESSIONClick(Sender: TObject);
    procedure R1Click(Sender: TObject);
    procedure C1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure G1Click(Sender: TObject);
    procedure MENU_HELP_ABOUTClick(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    //sGateIPaddr     :String;      //0x334
    //GateList        :TList;  //0x338
    //SessionList     :TList; //0x33C
    //ServerNameList  :TStringList;   //0x340
    SList_0344: TStringList;   //0x344
    //AccountCostList :TQuickList;   //0x348
    //IPaddrCostList  :TQuickList;   //0x34C
    ParseList:  TThreadParseList;   //0x350
    //m_boRemoteClose :Boolean;

    procedure GameCenterGetUserAccount(sData: string);
    procedure GameCenterChangeAccountInfo(sData: string);
    procedure OpenRouteConfig();
  public
    { Public declarations }
  end;

procedure StartService(Config: pTConfig);
procedure StopService(Config: pTConfig);
procedure InitializeConfig(Config: pTConfig);
procedure UnInitializeConfig(Config: pTConfig);
procedure LoadConfig(Config: pTConfig);
procedure LoadAddrTable(Config: pTConfig);
procedure GenServerNameList(Config: pTConfig);

procedure WriteLogMsg(Config: pTConfig; sType: string; var UserEntry: TUserEntry;
  var UserAddEntry: TUserEntryAdd);
procedure SaveContLogMsg(Config: pTConfig; sLogMsg: string);

procedure SendGateMsg(Socket: TCustomWinSocket; sSockIndex, sMsg: string);
procedure SendGateKickMsg(Socket: TCustomWinSocket; sSockIndex: string);
procedure SendKeepAlivePacket(Socket: TCustomWinSocket);

procedure SessionAdd(Config: pTConfig; sAccount, sIPaddr: string;
  nSessionID: integer; boPayCost: boolean);
procedure SessionDel(Config: pTConfig; nSessionID: integer);
procedure SessionKick(Config: pTConfig; sLoginID: string);
procedure SessionUpdate(Config: pTConfig; nSessionID: integer;
  sServerName: string; boPayCost: boolean);
procedure SessionClearKick(Config: pTConfig);
function IsPayMent(Config: pTConfig; sIPaddr, sAccount: string): boolean;
procedure SessionClearNoPayMent(Config: pTConfig);
function IsLogin(Config: pTConfig; sLoginID: string): boolean; overload;
function IsLogin(Config: pTConfig; nSessionID: integer): boolean; overload;

function GetServerListInfo(): string;
procedure GetSelGateInfo(Config: pTConfig; sServerName, sIPaddr: string;
  var sSelGateIP: string; var nSelGatePort: integer);

function KickUser(Config: pTConfig; UserInfo: pTUserInfo): boolean;
procedure CloseUser(Config: pTConfig; sAccount: string; nSessionID: integer);

procedure AccountCreate(Config: pTConfig; UserInfo: pTUserInfo; sData: string);
procedure AccountChangePassword(Config: pTConfig; UserInfo: pTUserInfo; sData: string);
procedure AccountCheckProtocol(UserInfo: pTUserInfo; nDate: integer);
procedure AccountLogin(Config: pTConfig; UserInfo: pTUserInfo; sData: string);
procedure AccountSelectServer(Config: pTConfig; UserInfo: pTUserInfo; sData: string);
procedure AccountUpdateUserInfo(Config: pTConfig; UserInfo: pTUserInfo; sData: string);
procedure AccountGetBackPassword(UserInfo: pTUserInfo; sData: string);

procedure ReceiveSendUser(Config: pTConfig; sSockIndex: string;
  GateInfo: pTGateInfo; sData: string);
procedure ReceiveOpenUser(Config: pTConfig; sSockIndex: string;
  sIPaddr: string; GateInfo: pTGateInfo);
procedure ReceiveCloseUser(Config: pTConfig; sSockIndex: string; GateInfo: pTGateInfo);

procedure ProcessUserMsg(Config: pTConfig; UserInfo: pTUserInfo; sMsg: string);

procedure DecodeGateData(Config: pTConfig; GateInfo: pTGateInfo);
procedure DecodeUserData(Config: pTConfig; UserInfo: pTUserInfo);
procedure ProcessGate(Config: pTConfig);

procedure LoadAccountCostList(Config: pTConfig; QuickList: TQuickList);
procedure LoadIPaddrCostList(Config: pTConfig; QuickList: TQuickList);

var
  FrmMain: TFrmMain;

implementation

uses
  SQLIDDB, MasSock, FrmFindId, HUtil32, EDcode, GateSet,
  FAccountView, GrobalSession, BasicSet;

{$R *.DFM}

procedure TFrmMain.OpenRouteConfig;
begin
  FrmGateSetting := TFrmGateSetting.Create(nil);
  FrmGateSetting.Open;
  FrmGateSetting.Free;
end;

{
procedure TFrmMain.OpenRouteConfig;
var
  Config  :pTConfig;
begin
  Config:=@g_Config;
  if FrmGateSetting.Open then begin
    LoadAddrTable(Config);
  end;
end;
}
procedure TFrmMain.MENU_OPTION_ROUTEClick(Sender: TObject);
begin
  OpenRouteConfig();
end;

procedure TFrmMain.MENU_VIEW_SESSIONClick(Sender: TObject);
begin
  frmGrobalSession := TfrmGrobalSession.Create(nil);
  frmGrobalSession.Open;
  frmGrobalSession.Free;
end;

procedure TFrmMain.CbViewLogClick(Sender: TObject);
var
  Config: pTConfig;
begin
  Config := @g_Config;
  Config.boShowDetailMsg := CbViewLog.Checked;
end;

//00469778
procedure TFrmMain.GSocketClientConnect(Sender: TObject; Socket: TCustomWinSocket);
var
  GateInfo: pTGateInfo;
  Config:   pTConfig;
begin
  Config := @g_Config;
  if not ExecTimer.Enabled then begin
    Socket.Close;
    exit;
  end;
  New(GateInfo);
  GateInfo.Socket      := Socket;
  GateInfo.sIPaddr     := GetGatePublicAddr(Config, Socket.RemoteAddress);
  GateInfo.sReceiveMsg := '';
  GateInfo.UserList    := TList.Create;
  GateInfo.dwKeepAliveTick := GetTickCount();
  EnterCriticalSection(Config.GateCriticalSection);
  try
    Config.GateList.Add(GateInfo);
  finally
    LeaveCriticalSection(Config.GateCriticalSection);
  end;
end;
//0x00469898
procedure TFrmMain.GSocketClientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
var
  I:      integer;
  II:     integer;
  GateInfo: pTGateInfo;
  UserInfo: pTUserInfo;
  Config: pTConfig;
begin
  Config := @g_Config;
  EnterCriticalSection(Config.GateCriticalSection);
  try
    for I := 0 to Config.GateList.Count - 1 do begin
      GateInfo := Config.GateList.Items[I];
      if GateInfo.Socket = Socket then begin
        for II := 0 to GateInfo.UserList.Count - 1 do begin
          UserInfo := GateInfo.UserList.Items[II];
          if Config.boShowDetailMsg then
            MainOutMessage('Close: ' + UserInfo.sUserIPaddr);
          Dispose(UserInfo);
        end;
        GateInfo.UserList.Free;
        Dispose(GateInfo);
        Config.GateList.Delete(i);
        break;
      end;
    end;
  finally
    LeaveCriticalSection(Config.GateCriticalSection);
  end;
end;

procedure TFrmMain.GSocketClientError(Sender: TObject; Socket: TCustomWinSocket;
  ErrorEvent: TErrorEvent; var ErrorCode: integer);
begin
  ErrorCode := 0;
  Socket.Close;
end;
//00469A60
procedure TFrmMain.GSocketClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
  I:      integer;
  GateInfo: pTGateInfo;
  Config: pTConfig;
begin
  Config := @g_Config;
  EnterCriticalSection(Config.GateCriticalSection);
  try
    for I := 0 to Config.GateList.Count - 1 do begin
      GateInfo := Config.GateList.Items[I];
      if GateInfo.Socket = Socket then begin
        GateInfo.sReceiveMsg := GateInfo.sReceiveMsg + Socket.ReceiveText;
        break;
      end;
    end;
  finally
    LeaveCriticalSection(Config.GateCriticalSection);
  end;
end;

//0046D19C
procedure LoadAddrTable(Config: pTConfig);
var
  LoadList: TStringList;
  sFileName: string;
  i: integer;
  nRouteIdx: integer;
  nSelGateIdx: integer;
  sLineText, sTitle, sServerName, sGate, sRemote, sPublic, sGatePort: string;
begin
  sFileName := '.\!addrtable.txt';
  LoadList  := TStringList.Create;
  if FileExists(sFileName) then begin
    LoadList.LoadFromFile(sFileName);
    nRouteIdx := 0;
    for i := 0 to LoadList.Count - 1 do begin
      sLineText := LoadList.Strings[i];
      if (sLineText <> '') and (sLineText[1] <> ';') then begin
        sLineText := GetValidStr3(sLineText, sServerName, [' ']);
        sLineText := GetValidStr3(sLineText, sTitle, [' ']);
        sLineText := GetValidStr3(sLineText, sRemote, [' ']);
        sLineText := GetValidStr3(sLineText, sPublic, [' ']);
        sLineText := Trim(sLineText);
        if (sTitle <> '') and (sRemote <> '') and (sPublic <> '') and
          (nRouteIdx < 60) then begin
          Config.GateRoute[nRouteIdx].sServerName := sServerName;
          Config.GateRoute[nRouteIdx].sTitle := sTitle;
          Config.GateRoute[nRouteIdx].sRemoteAddr := sRemote;
          Config.GateRoute[nRouteIdx].sPublicAddr := sPublic;
          nSelGateIdx := 0;
          while (sLineText <> '') do begin
            if nSelGateIdx > 9 then break;
            sLineText := GetValidStr3(sLineText, sGate, [' ']);
            if sGate <> '' then begin
              if sGate[1] = '*' then begin
                sGate := Copy(sGate, 2, length(sGate) - 1);
                Config.GateRoute[nRouteIdx].Gate[nSelGateIdx].boEnable := False;
              end else begin
                Config.GateRoute[nRouteIdx].Gate[nSelGateIdx].boEnable := True;
              end;
              sGatePort := GetValidStr3(sGate, sGate, [':']);
              Config.GateRoute[nRouteIdx].Gate[nSelGateIdx].sIPaddr := sGate;
              Config.GateRoute[nRouteIdx].Gate[nSelGateIdx].nPort :=
                Str_ToInt(sGatePort, 0);
              Config.GateRoute[nRouteIdx].nSelIdx := 0;
              Inc(nSelGateIdx);
            end;//0046D44B
            sLineText := Trim(sLineText);
          end;
          Inc(nRouteIdx);
        end;
      end;
    end;
    Config.nRouteCount := nRouteIdx;
  end;//0046D482
  LoadList.Free;
  GenServerNameList(Config);
end;
//00468F84
procedure TFrmMain.FormCreate(Sender: TObject);
var
  Config: pTConfig;
begin
  Config := @g_Config;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中国色在线观看另类| 狠狠色狠狠色综合| 免费看精品久久片| 91亚洲国产成人精品一区二区三 | 亚洲欧美一区二区三区久本道91| 性欧美大战久久久久久久久| 日本久久电影网| 精品国免费一区二区三区| 国产精品久久久久影视| 麻豆一区二区三区| 在线观看国产91| 中文字幕中文字幕一区二区| 韩国精品免费视频| 日韩一区二区三免费高清| 亚洲精品一二三区| 白白色 亚洲乱淫| 国产无遮挡一区二区三区毛片日本| 亚洲成av人片在线| 欧美午夜在线观看| 亚洲欧美日韩久久精品| 成人永久aaa| 中文字幕乱码日本亚洲一区二区 | 亚洲精品v日韩精品| 成人激情视频网站| 亚洲男人的天堂在线观看| 国产精品一区二区无线| 日韩精品中文字幕在线一区| 五月天亚洲婷婷| 7777精品久久久大香线蕉| 一区二区三区成人| 欧美系列在线观看| 亚洲成人动漫在线免费观看| 欧美专区亚洲专区| 亚洲综合色在线| 欧美日韩一区二区在线观看视频 | 美女www一区二区| 日韩三级在线观看| 蜜桃视频一区二区三区| 日韩欧美黄色影院| 免费观看在线综合色| 日韩欧美国产麻豆| 在线视频国内自拍亚洲视频| 亚洲人精品一区| 91黄色免费观看| 亚洲成人精品影院| 欧美不卡在线视频| 国产麻豆一精品一av一免费| 久久久99精品久久| 成人美女视频在线观看18| 亚洲免费在线观看| 欧美日韩一区二区电影| 青青草一区二区三区| 久久久久9999亚洲精品| 成人爱爱电影网址| 亚洲成av人影院| 欧美大白屁股肥臀xxxxxx| 福利一区二区在线| 一区二区三区精品视频| 91精品国产综合久久久蜜臀粉嫩| 国产中文一区二区三区| 青青草成人在线观看| 欧美哺乳videos| 成人爱爱电影网址| 午夜精品123| 国产欧美视频在线观看| 欧洲一区二区av| 精品亚洲免费视频| 亚洲视频一二三| 欧美大黄免费观看| 91蜜桃网址入口| 日本视频一区二区| 亚洲图片激情小说| 日韩一级片网站| 色88888久久久久久影院野外| 久久国产精品无码网站| 亚洲视频在线观看一区| 日韩精品一区二区三区蜜臀| 波多野结衣中文字幕一区二区三区| 亚洲国产精品一区二区久久 | 午夜精品影院在线观看| 久久精品视频免费| 欧美日韩国产一二三| 国内久久精品视频| 亚洲一区二区三区在线看| 国产亚洲精品免费| 91麻豆精品国产91久久久资源速度| 成人深夜在线观看| 麻豆久久一区二区| 亚洲综合一区在线| 成人免费在线观看入口| 精品国产污网站| 欧美日韩国产综合草草| 色综合一区二区| 成人av综合一区| 韩日欧美一区二区三区| 婷婷综合久久一区二区三区| 国产精品久久久久久久第一福利 | 日韩福利视频网| 亚洲免费av观看| 最新不卡av在线| 国产精品久久综合| 欧美激情一区在线观看| 精品国免费一区二区三区| 91精品国产色综合久久不卡蜜臀| 色猫猫国产区一区二在线视频| 成人午夜视频免费看| 国产精品一区二区果冻传媒| 久久精品72免费观看| 男男成人高潮片免费网站| 丝袜a∨在线一区二区三区不卡| 亚洲欧美日韩国产综合| 亚洲日本在线a| 一区二区三国产精华液| 亚洲一区二区三区在线| 亚洲综合丁香婷婷六月香| 夜夜精品视频一区二区 | 国产欧美日韩在线看| 亚洲曰韩产成在线| 亚洲日本丝袜连裤袜办公室| 国产精品毛片久久久久久| 国产精品乱子久久久久| 国产精品欧美经典| 亚洲你懂的在线视频| 伊人色综合久久天天人手人婷| 亚洲欧美日韩中文播放| 樱桃国产成人精品视频| 午夜日韩在线电影| 日精品一区二区三区| 免费成人在线视频观看| 国产一区二区三区黄视频| 国产成人av电影在线| www.亚洲免费av| 色狠狠一区二区三区香蕉| 欧美久久久久久久久久| 欧美不卡123| 国产精品美女www爽爽爽| 亚洲精品国产无天堂网2021 | 久久久久久综合| 国产无人区一区二区三区| 国产精品视频免费| 亚洲摸摸操操av| 蜜臀av性久久久久蜜臀aⅴ| 国产乱子伦视频一区二区三区| 丰满放荡岳乱妇91ww| 欧美伊人久久久久久午夜久久久久| 欧美日韩不卡视频| 久久亚区不卡日本| 一区av在线播放| 久久99久久久欧美国产| 丁香一区二区三区| 欧美日韩国产一级片| 国产午夜精品在线观看| 亚洲一区二区综合| 精品午夜一区二区三区在线观看| 国产成人免费在线观看| 在线观看av一区| 国产日韩欧美精品一区| 亚洲成人激情社区| 国产99久久精品| 欧美一区午夜视频在线观看| 中文字幕中文在线不卡住| 成人18视频在线播放| 制服.丝袜.亚洲.另类.中文| 欧美国产视频在线| 蜜桃av一区二区三区电影| av在线播放成人| 精品久久久久久久人人人人传媒| 亚洲欧美国产毛片在线| 国产真实乱偷精品视频免| 精品视频一区 二区 三区| 国产亚洲美州欧州综合国 | 亚洲人成影院在线观看| 精品一区二区三区免费视频| 91视视频在线直接观看在线看网页在线看| 欧美一区二区福利视频| 亚洲视频一二区| 成人免费视频视频在线观看免费| 88在线观看91蜜桃国自产| 亚洲黄色片在线观看| 成人精品一区二区三区四区| 精品盗摄一区二区三区| 日韩精品三区四区| 欧美视频在线播放| 亚洲精品高清在线观看| 欧美夫妻性生活| 亚洲欧美日韩久久精品| www.激情成人| 国产精品免费aⅴ片在线观看| 国产精品123| 久久精品欧美日韩精品| 国模大尺度一区二区三区| 欧美精品色综合| 亚洲国产cao| 欧美日韩亚洲不卡| 亚洲国产综合91精品麻豆| 在线免费亚洲电影| 亚洲综合网站在线观看| 欧美伊人久久久久久午夜久久久久| 中文字幕综合网| 在线影院国内精品|