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

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

?? lmain.pas

?? 傳奇服務端代碼 LoginSrvSQL 通訊部分
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
        ConnInfo.boKicked   := True;

        break;
      end;
    end;
  finally
    Config.SessionList.UnLock;
  end;
end;

//00469F00
procedure SessionAdd(Config: pTConfig; sAccount, sIPaddr: string;
  nSessionID: integer; boPayCost: boolean);
var
  ConnInfo: pTConnInfo;
begin
  New(ConnInfo);
  ConnInfo.sAccount := sAccount;
  ConnInfo.sIPaddr  := sIPaddr;
  ConnInfo.nSessionID := nSessionID;
  ConnInfo.boPayCost := boPayCost;
  ConnInfo.dwKickTick := GetTickCount();
  ConnInfo.dwStartTick := GetTickCount();
  ConnInfo.boKicked := False;
  Config.SessionList.Lock;
  try
    Config.SessionList.Add(ConnInfo);
  finally
    Config.SessionList.UnLock;
  end;
end;
//0046A5AC
procedure SendGateKickMsg(Socket: TCustomWinSocket; sSockIndex: string);
var
  sSendMsg: string;
begin
  sSendMsg := '%+-' + sSockIndex + '$';
  Socket.SendText(sSendMsg);
end;

procedure SessionUpdate(Config: pTConfig; nSessionID: integer;
  sServerName: string; boPayCost: boolean);
var
  ConnInfo: pTConnInfo;
  I: integer;
begin
  Config.SessionList.Lock;
  try
    for I := 0 to Config.SessionList.Count - 1 do begin
      ConnInfo := Config.SessionList.Items[I];
      if (ConnInfo.nSessionID = nSessionID) then begin
        ConnInfo.sServerName := sServerName;
        ConnInfo.boPayCost := boPayCost;
        break;
      end;
    end;
  finally
    Config.SessionList.UnLock;
  end;
end;
//00469694
procedure GenServerNameList(Config: pTConfig);
var
  I, II: integer;
  boD:   boolean;
begin
  try
    Config.ServerNameList.Clear;
    for I := 0 to Config.nRouteCount - 1 do begin
      boD := True;
      for II := 0 to Config.ServerNameList.Count - 1 do begin
        if Config.ServerNameList.Strings[II] = Config.GateRoute[I].sServerName then
          boD := False;
      end;
      if boD then Config.ServerNameList.Add(Config.GateRoute[I].sServerName);
    end;
  except
    MainOutMessage('TFrmMain.GenServerNameList');
  end;
end;
//00469DB4
procedure SessionClearNoPayMent(Config: pTConfig);
var
  I: integer;
  ConnInfo: pTConnInfo;
begin
  Config.SessionList.Lock;
  try
    for I := Config.SessionList.Count - 1 downto 0 do begin
      ConnInfo := Config.SessionList.Items[I];
      if not ConnInfo.boKicked and not Config.boTestServer and not ConnInfo.boPayCost then
      begin
        if (GetTickCount - ConnInfo.dwStartTick) > 60 * 60 * 1000 then begin
          ConnInfo.dwStartTick := GetTickCount();
          if not IsPayMent(Config, ConnInfo.sIPaddr, ConnInfo.sAccount) then
          begin
            FrmMasSoc.SendServerMsg(SS_KICKUSER, ConnInfo.sServerName,
              ConnInfo.sAccount + '/' + IntToStr(ConnInfo.nSessionID));
            Dispose(ConnInfo);
            Config.SessionList.Delete(I);
          end;
        end;
      end;
    end;
  finally
    Config.SessionList.UnLock;
  end;
end;
//0046DD38
procedure LoadIPaddrCostList(Config: pTConfig; QuickList: TQuickList);
begin
  try
    CS_DB.Enter;
    Config.IPaddrCostList.Clear;
    Config.IPaddrCostList.AddStrings(QuickList);
  finally
    CS_DB.Leave;
  end;
end;
//0046DCD0
procedure LoadAccountCostList(Config: pTConfig; QuickList: TQuickList);
begin
  try
    CS_DB.Enter;
    Config.AccountCostList.Clear;
    Config.AccountCostList.AddStrings(QuickList);
  finally
    CS_DB.Leave;
  end;
end;



procedure TFrmMain.Panel2DblClick(Sender: TObject);
begin
  MainOutMessage(GetServerListInfo);
end;


procedure TFrmMain.GameCenterGetUserAccount(sData: string);
var
  DBRecord: TAccountDBRecord;
  nIndex:   integer;
  nCode:    integer;
  DefMsg:   TDefaultMessage;
begin
  try
    nCode := -1;
    if AccountDB.Open then begin
      nIndex := AccountDB.Index(sData);
      if (nIndex >= 0) and (AccountDB.Get(nIndex, DBRecord) >= 0) then begin
        nCode := 1;
      end;
    end;
  finally
    AccountDB.Close;
  end;

  if nCode > 0 then begin
    DefMsg := MakeDefaultMsg(0, nCode, 0, 0, 0);
  end else begin
    DefMsg := MakeDefaultMsg(SG_USERACCOUNTNOTFOUND, nCode, 0, 0, 0);
  end;
end;

procedure TFrmMain.GameCenterChangeAccountInfo(sData: string);
var
  NewRecord, DBRecord: TAccountDBRecord;
  DefMsg:  TDefaultMessage;
  sDefMsg: string;
  nCode, nIndex: integer;
begin
  if Length(sData) < DEFBLOCKSIZE then exit;
  sDefMsg := Copy(sData, 1, DEFBLOCKSIZE);
  sData   := Copy(sData, DEFBLOCKSIZE + 1, Length(sData) - DEFBLOCKSIZE);
  DefMsg  := DecodeMessage(sDefMsg);
  DecodeBuffer(sData, @NewRecord, SizeOf(NewRecord));
  nCode := -1;

  try
    if AccountDB.Open then begin
      nIndex := AccountDB.Index(NewRecord.UserEntry.sAccount);
      if (nIndex >= 0) and (AccountDB.Get(nIndex, DBRecord) >= 0) then begin
        if DBRecord.UserEntry.sAccount = NewRecord.UserEntry.sAccount then begin
          DBRecord.nErrorCount  := 0;
          DBRecord.dwActionTick := 0;
          DBRecord.UserEntry    := NewRecord.UserEntry;
          DBRecord.UserEntryAdd := NewRecord.UserEntryAdd;
          AccountDB.Update(nIndex, DBRecord);
          nCode := 1;
        end else begin
          nCode := 2;
        end;
      end;
    end;
  finally
    AccountDB.Close;
  end;

  DefMsg := MakeDefaultMsg(0, nCode, 0, 0, 0);
end;


procedure SaveContLogMsg(Config: pTConfig; sLogMsg: string);
var
  Year, Month, Day, Hour, Min, Sec, MSec: word;
  sLogDir, sLogFileName: string;
  LogFile: TextFile;
begin
  if sLogMsg = '' then exit;

  DecodeDate(Date, Year, Month, Day);
  DecodeTime(Time, Hour, Min, Sec, MSec);
  if not DirectoryExists(Config.sCountLogDir) then begin
    CreateDir(Config.sCountLogDir);
  end;
  sLogDir := Config.sCountLogDir + IntToStr(Year) + '-' + IntToStr2(Month);
  if not DirectoryExists(sLogDir) then begin
    CreateDirectory(PChar(sLogDir), nil);
  end;
  sLogFileName := sLogDir + '\' + IntToStr(Year) + '-' + IntToStr2(Month) +
    '-' + IntToStr2(Day) + '.txt';
  AssignFile(LogFile, sLogFileName);
  if not FileExists(sLogFileName) then begin
    Rewrite(LogFile);
  end else begin
    Append(LogFile);
  end;
  sLogMsg := sLogMsg + #9 + TimeToStr(Time);

  WriteLn(LogFile, sLogMsg);
  CloseFile(LogFile);
end;

procedure WriteLogMsg(Config: pTConfig; sType: string; var UserEntry: TUserEntry;
  var UserAddEntry: TUserEntryAdd);
var
  Year, Month, Day: word;
  sLogDir, sLogFileName: string;
  LogFile: TextFile;
  sLogFormat, sLogMsg: string;
begin
  DecodeDate(Date, Year, Month, Day);
  if not DirectoryExists(Config.sChrLogDir) then begin
    CreateDir(Config.sChrLogDir);
  end;
  sLogDir := Config.sChrLogDir + IntToStr(Year) + '-' + IntToStr2(Month);
  if not DirectoryExists(sLogDir) then begin
    CreateDirectory(PChar(sLogDir), nil);
  end;
  sLogFileName := sLogDir + '\Id_' + IntToStr2(Day) + '.log';
  AssignFile(LogFile, sLogFileName);
  if not FileExists(sLogFileName) then begin
    Rewrite(LogFile);
  end else begin
    Append(LogFile);
  end;
  sLogFormat := '*%s*'#9'%s'#9'"%s"'#9'%s'#9'%s'#9'%s'#9'%s'#9'%s'#9'%s'#9'%s'#9'%s'#9'%s'#9'[%s]';
  sLogMsg    := format(sLogFormat, [sType, UserEntry.sAccount,
    UserEntry.sPassword, UserEntry.sUserName, UserEntry.sSSNo,
    UserEntry.sQuiz, UserEntry.sAnswer, UserEntry.sEMail, UserAddEntry.sQuiz2,
    UserAddEntry.sAnswer2, UserAddEntry.sBirthDay, UserAddEntry.sMobilePhone,
    TimeToStr(Now)]);

  //sLogMsg:= UserAddEntry.sQuiz2 + UserAddEntry.sAnswer2 + UserAddEntry.sBirthDay + UserAddEntry.sMobilePhone + '[' + TimeToStr(Now) + ']';

  WriteLn(LogFile, sLogMsg);
  CloseFile(LogFile);
end;

procedure StartService(Config: pTConfig);
begin
  InitializeConfig(Config);
  LoadConfig(Config);
  LoadDBSetup;
end;

procedure StopService(Config: pTConfig);
begin
  UnInitializeConfig(Config);
end;

procedure InitializeConfig(Config: pTConfig);
resourcestring
  sConfigFile = '.\Logsrv.ini';
begin
  Config.IniConf := TIniFile.Create(sConfigFile);
  InitializeCriticalSection(Config.GateCriticalSection);
end;

procedure UnInitializeConfig(Config: pTConfig);
begin
  Config.IniConf.Free;
  DeleteCriticalSection(Config.GateCriticalSection);
end;

procedure LoadConfig(Config: pTConfig);

  function LoadConfigString(sSection, sIdent, sDefault: string): string;
  var
    sString: string;
  begin
    sString := Config.IniConf.ReadString(sSection, sIdent, '');
    if sString = '' then begin
      Config.IniConf.WriteString(sSection, sIdent, sDefault);
      Result := sDefault;
    end else begin
      Result := sString;
    end;
  end;

  function LoadConfigInteger(sSection, sIdent: string; nDefault: integer): integer;
  var
    nLoadInteger: integer;
  begin
    nLoadInteger := Config.IniConf.ReadInteger(sSection, sIdent, -1);
    if nLoadInteger < 0 then begin
      Config.IniConf.WriteInteger(sSection, sIdent, nDefault);
      Result := nDefault;
    end else begin
      Result := nLoadInteger;
    end;
  end;

  function LoadConfigBoolean(sSection, sIdent: string; boDefault: boolean): boolean;
  var
    nLoadInteger: integer;
  begin
    nLoadInteger := Config.IniConf.ReadInteger(sSection, sIdent, -1);
    if nLoadInteger < 0 then begin
      Config.IniConf.WriteBool(sSection, sIdent, boDefault);
      Result := boDefault;
    end else begin
      Result := nLoadInteger = 1;
    end;
  end;

begin
  Config.g_sSQLHost  := LoadConfigString('SQL', 'SQLHost', Config.g_sSQLHost);
  Config.g_sSQLDatabase  := LoadConfigString('SQL', 'SQLDatabase', Config.g_sSQLDatabase);
  Config.g_sSQLPassword  := LoadConfigString('SQL', 'SQLPassword', Config.g_sSQLPassword);
  Config.g_sSQLUserName  := LoadConfigString('SQL', 'SQLUsername', Config.g_sSQLUserName);

  Config.sDBServer  := LoadConfigString('Server', 'DBServer', Config.sDBServer);
  Config.sFeeServer := LoadConfigString('Server', 'FeeServer', Config.sFeeServer);
  Config.sLogServer := LoadConfigString('Server', 'LogServer', Config.sLogServer);

  Config.sGateAddr   := LoadConfigString('Server', 'GateAddr', Config.sGateAddr);
  Config.nGatePort   := LoadConfigInteger('Server', 'GatePort', Config.nGatePort);
  Config.sServerAddr := LoadConfigString('Server', 'ServerAddr', Config.sServerAddr);
  Config.nServerPort := LoadConfigInteger('Server', 'ServerPort', Config.nServerPort);
  Config.sMonAddr    := LoadConfigString('Server', 'MonAddr', Config.sMonAddr);
  Config.nMonPort    := LoadConfigInteger('Server', 'MonPort', Config.nMonPort);

  Config.nDBSPort      := LoadConfigInteger('Server', 'DBSPort', Config.nDBSPort);
  Config.nFeePort      := LoadConfigInteger('Server', 'FeePort', Config.nFeePort);
  Config.nLogPort      := LoadConfigInteger('Server', 'LogPort', Config.nLogPort);
  Config.nReadyServers := LoadConfigInteger('Server', 'ReadyServers', Config.nReadyServers);
  Config.boEnableMakingID := LoadConfigBoolean('Server', 'EnableMakingID', Config.boEnableMakingID);
  Config.boTestServer  := LoadConfigBoolean('Server', 'TestServer', Config.boTestServer);
  Config.boDynamicIPMode := LoadConfigBoolean('Server', 'DynamicIPMode', Config.boDynamicIPMode);
  Config.boMinimize    := LoadConfigBoolean('Server', 'Minimize', Config.boMinimize);

  Config.sCountLogDir := LoadConfigString('DB', 'CountLogDir', Config.sCountLogDir);
  Config.sFeedIDList := LoadConfigString('DB', 'FeedIDList', Config.sFeedIDList);
  Config.sFeedIPList := LoadConfigString('DB', 'FeedIPList', Config.sFeedIPList);
end;

procedure TFrmMain.R1Click(Sender: TObject);
var
  Config: pTConfig;
  I, II: Integer;
begin
  Config := @g_Config;
  Config.ServerNameList.Clear;
  for I := Low(Config.GateRoute) to High(Config.GateRoute) do begin
    Config.GateRoute[I].sServerName := '';
    Config.GateRoute[I].sTitle := '';
    Config.GateRoute[I].sRemoteAddr := '';
    Config.GateRoute[I].sPublicAddr := '';
    Config.GateRoute[I].nSelIdx := 0;
    for II := Low(Config.GateRoute[I].Gate) to High(Config.GateRoute[I].Gate) do begin
      Config.GateRoute[I].Gate[II].sIPaddr := '';
      Config.GateRoute[I].Gate[II].nPort := 0;
      Config.GateRoute[I].Gate[II].boEnable := False;
    end;
  end;
  LoadAddrTable(Config);
  MainOutMessage('加載路由列表完成...');
end;

procedure TFrmMain.C1Click(Sender: TObject);
var
  I: Integer;
begin
  for I := Low(ServerAddr) to High(ServerAddr) do begin
    ServerAddr[I] := '';
  end;
  FrmMasSoc.LoadServerAddr();
  for I := Low(UserLimit) to High(UserLimit) do begin
    UserLimit[I].sServerName := '';
    UserLimit[I].sName := '';
    UserLimit[I].nLimi

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品自拍偷拍| www.亚洲在线| 成人少妇影院yyyy| 日本久久一区二区三区| 欧美精品视频www在线观看| 精品成人一区二区| 国产精品高潮呻吟久久| 亚洲国产综合91精品麻豆 | 色国产精品一区在线观看| 在线免费观看日韩欧美| 日韩一级视频免费观看在线| 精品sm捆绑视频| 亚洲免费观看高清完整| 日韩在线播放一区二区| 成人免费毛片片v| 8x福利精品第一导航| 国产色婷婷亚洲99精品小说| 亚洲激情六月丁香| 狠狠色狠狠色综合| 欧洲av一区二区嗯嗯嗯啊| 日韩欧美综合一区| 亚洲欧洲一区二区在线播放| 午夜不卡av免费| www.亚洲人| 欧美一二三四区在线| 亚洲欧美激情一区二区| 国内久久精品视频| 在线观看91精品国产入口| 26uuu成人网一区二区三区| 玉米视频成人免费看| 国产精品456| 欧美日韩mp4| 自拍偷在线精品自拍偷无码专区| 秋霞电影一区二区| 91麻豆视频网站| 久久亚洲捆绑美女| 日本不卡一二三| 91在线观看下载| 久久中文娱乐网| 午夜电影久久久| 日本韩国一区二区三区视频| 国产亚洲精品中文字幕| 日韩精品视频网站| 在线影院国内精品| 国产精品嫩草影院com| 韩国欧美国产一区| 777欧美精品| 亚洲综合无码一区二区| av动漫一区二区| 国产免费久久精品| 久久电影网站中文字幕| 69av一区二区三区| 亚洲国产精品天堂| 91视频国产资源| 国产精品国产自产拍高清av| 国产一二精品视频| 日韩天堂在线观看| 丝袜a∨在线一区二区三区不卡| 91小视频免费看| 亚洲欧洲99久久| 成人开心网精品视频| 久久久精品综合| 国内精品国产成人国产三级粉色| 欧美一级黄色片| 免播放器亚洲一区| 91精品国产麻豆国产自产在线| 亚洲国产精品尤物yw在线观看| 色婷婷激情一区二区三区| 亚洲色图在线看| av激情亚洲男人天堂| 中文字幕一区在线观看| av午夜一区麻豆| 亚洲天堂网中文字| 日本乱人伦一区| 亚洲电影一区二区三区| 欧美日韩国产片| 日韩精品一区第一页| 日韩一区二区免费视频| 麻豆国产一区二区| 久久综合久久综合久久综合| 国产乱码精品一区二区三区av| 久久久美女毛片| 成人久久久精品乱码一区二区三区 | 久久精品免视看| 国内精品免费**视频| 日韩一二三区视频| 精品在线视频一区| 日韩午夜在线影院| 久久精工是国产品牌吗| 欧美一三区三区四区免费在线看| 午夜精品国产更新| 国产盗摄精品一区二区三区在线| 国产午夜精品一区二区三区视频| 国产一区日韩二区欧美三区| 2017欧美狠狠色| 国产精品一区二区在线观看不卡 | 精品国产一二三区| 国内精品在线播放| 日本一区二区三区四区| a级精品国产片在线观看| 国产日韩av一区二区| 色综合久久中文字幕综合网| 国产亚洲一区二区三区在线观看| 美国十次了思思久久精品导航| 亚洲精品一区二区三区四区高清| 国产综合色产在线精品| 欧美国产一区二区| 99re这里只有精品6| 亚洲综合一区二区三区| 91精品麻豆日日躁夜夜躁| 国产呦精品一区二区三区网站| 中文字幕欧美国产| 91精品办公室少妇高潮对白| 午夜伦理一区二区| 精品少妇一区二区三区免费观看| 国产精品一品二品| 中文字幕第一区二区| 欧美日韩精品一区二区| 精品一区免费av| 国产精品久久久一本精品 | 亚洲精品一区二区三区香蕉| 99re亚洲国产精品| 日韩高清一区二区| 国产午夜久久久久| 日本道在线观看一区二区| 日韩在线卡一卡二| 国产嫩草影院久久久久| 波多野结衣中文一区| 丝袜亚洲另类欧美综合| 国产亚洲欧美在线| 在线视频国内自拍亚洲视频| 秋霞成人午夜伦在线观看| 久久―日本道色综合久久| 99精品欧美一区二区三区综合在线| 日韩美女视频一区二区| 精品国产乱码91久久久久久网站| 成人免费看片app下载| 五月天网站亚洲| 欧美激情在线免费观看| 欧美男男青年gay1069videost| 国产在线视频不卡二| 久久蜜桃香蕉精品一区二区三区| 欧美人动与zoxxxx乱| 粉嫩一区二区三区性色av| 一区二区三区日韩| 久久亚洲捆绑美女| 欧美三级蜜桃2在线观看| 国产精品正在播放| 美腿丝袜在线亚洲一区| 亚洲色图清纯唯美| 26uuu国产电影一区二区| 在线免费观看日本一区| 国产成人在线视频播放| 亚洲国产中文字幕在线视频综合| 欧美大尺度电影在线| 色一情一伦一子一伦一区| 国产一区二区精品久久91| 亚洲综合丁香婷婷六月香| 国产日韩欧美a| 欧美日韩日日骚| 风间由美中文字幕在线看视频国产欧美| 亚洲小说春色综合另类电影| 国产色产综合色产在线视频| 欧美一区二区三区在| 91在线观看免费视频| 国产精品一区二区久久不卡 | 久久99精品久久久久| 国产精品网曝门| 久久久久99精品一区| 欧美一区二区三区在线视频| 91久久精品一区二区三| 丁香婷婷综合网| 黑人巨大精品欧美一区| 久久国产人妖系列| 日韩av在线播放中文字幕| 怡红院av一区二区三区| 国产精品美女久久久久av爽李琼 | 亚洲精品日产精品乱码不卡| 久久久国际精品| 精品日韩在线观看| 欧美r级在线观看| 日韩一区二区三区免费观看| 欧美日韩激情一区二区| 色婷婷综合激情| 91尤物视频在线观看| 成人h动漫精品| 国产成人精品综合在线观看 | 国产精品一区免费视频| 久久精品国产**网站演员| 日本vs亚洲vs韩国一区三区二区| 亚洲欧洲成人av每日更新| 亚洲免费在线视频一区 二区| 最新中文字幕一区二区三区| 国产欧美视频一区二区| 久久久精品日韩欧美| 久久午夜电影网| 日韩欧美一卡二卡| 国产亚洲精品资源在线26u| 久久无码av三级| 国产精品水嫩水嫩|