zoukankan      html  css  js  c++  java
  • DIOCP转发型中间网关

    处理部分关键代码:

    中转类网关处理部分:
    procedure DiocpExecute(pvCMDObject: TSimpleMsgPack; pvContext:TDiocpStreamClientContext);
    var
    lvCMDIndex:Integer;
    lvSession:TCHATSession;
    ToUserID:string;
    DataDBID:string;
    begin
    if pvCMDObject.O['ResultCMD']<> nil then
    begin
    ToUserID:=pvCMDObject.ForcePathObject('FrmUser').asstring;
    pvCMDObject.ForcePathObject('CMD').AsInteger:=pvCMDObject.ForcePathObject('ResultCMD').asinteger;

    pvCMDObject.DeleteObject('ResultCMD');

    SendCMDObject(pvCMDObject,TCHATSession(ChatSessions.FindSession(ToUserID)).FContext);

    pvCMDObject.clear;
    exit;
    end;

    if pvCMDObject.O['cmd']<> nil then
    begin


    lvCMDIndex := pvCMDObject.ForcePathObject('cmd').AsInteger;

    case lvCMDIndex of
    0: ExecuteHeart (pvCMDObject, pvContext); // 心跳
    1: ExecuteLogin (pvCMDObject, pvContext); // 登陆
    10: ExecuteSql (pvCMDObject, pvContext);
    else //转发数据给处理端
    begin
    lvSession := TCHATSession(TDiocpStreamClientContext(pvContext).Data);
    if lvSession = nil then
    begin
    raise exception.CreateFmt(pvContext.RemoteAddr+'['+inttostr(pvcontext.RemotePort) +']非法连接关闭:[%d]', [lvCMDIndex]);
    end
    else
    begin

    pvCMDObject.ForcePathObject('FrmUser').asstring:=lvSession.useriD;

    if DataDBSrv.count>0 then

    begin

    Randomize;

    DataDBID:=DataDBSrv.strings[Random(DataDBSrv.count)];
    // sflogger.logMessage(datadbid);
    end

    else

    begin

    sflogger.logMessage('处理端未开启');
    end;


    SendCMDObject(pvCMDObject,TCHATSession(ChatSessions.FindSession(DataDBID)).FContext);

    end;
    // sfLogger.logMessage('转发成功');
    exception.CreateFmt(pvContext.RemoteAddr+'['+inttostr(pvcontext.RemotePort) +']执行未知命令:[%d]', [lvCMDIndex]);
    end;
    end;
    end;

    end;

  • 相关阅读:
    HITCON Training lab14 magic heap 堆技巧unsroted bin attack
    堆技巧Unsorted Bin Attack
    2014-hack-lu-oreo 堆技巧house of spirit
    极客时间JVM虚拟机
    堆技巧 housr_of_spirit 绕过检查源码分析
    babyheap_0ctf_2017 堆技巧 fastbin-attack
    gyctf_2020_borrowstack wp
    SqlServer Where后面Case When语句的写法
    EasyUI TextBox的onkeypress事件
    SQL
  • 原文地址:https://www.cnblogs.com/diocp/p/9347543.html
Copyright © 2011-2022 走看看