admin 发表于 2022-6-18 11:27:25

C++XEngine网络验证授权项目源码

c++ 网络验证系统网络服务器 互联网受权网络服务器
这也是互联网受权认证网络服务器的代码库,这一服务项目主要是给予互联网受权认证作用.适用当地和互联网二种认证方式
网络验证系统适用TCP和WEBSOCKET协议书认证,换句话说,适用APP程序流程和WEB网页端
这是一个混合开发简易性能卓越互联网受权网络服务器,给予了完善的演试编码



功能展示

[*]采用标准私协议来处理网络通信
[*]支持加密通信
[*]支持用户管理
[*]支持序列卡管理
[*]支持日志管理
[*]支持配置管理
[*]序列卡多种类型支持(分钟卡,天数卡,次数卡,自定义卡)
[*]支持试用,支持快速验证
[*]支持通过邮件找回密码
[*]支持本地CDKEY注册验证
[*]支持APP程序和HTML网页授权验证
[*]支持权限控制


版本需求支持WINDOWS 7SP1和LINUX(UBUNT20.04,CENTOS8)以上系统
必须安装XEngine,版本需要V7.28或者以上版本Windows直接运行即可,使用XEngine_AuthorizeAppLinux在控制台运行,使用XEngine_AuthorizeService




**** Hidden Message *****
使用文档请前往第二页查看


XEngine网络验证服务文档






文件状态:

[] 草稿

[√] 正式发布

文件名称:

XEngine网络验证服务文档


适用版本:

V2.7


发布日期:

2022-05-31

拟制:   qyt

2.1.2 编译运行在完成环境配置后.你可以进入代码目录.使用VS打开XEngine.sln.
如果环境没有错误,编译会直接成功.包含5个模块和1个EXE程序
成功后,你需要拷贝XEngine_Release下的文件到你编译的目录下.然后拷贝依赖的XEngine模块到你的编译目录下,运行XEngine_AuthorizeApp.exe即可
注意:你可以直接运行程序,系统会提示你需要哪些,你直接进入XEngine目录搜索.
2.2 LINUX   LINUX只能使用XEngine_AuthorizeService不带界面的版本
2.2.1 环境配置如果使用LINUX来开发运行,那么你需要在UBUNTU或者CENTOS下面才可以使用,UBUNTU需要20.04 以上系统.CENTOS需要8.x版本(兼容相同版本)
2.2.2 编译运行配置完环境后,你可以编译它,打开终端,进入源码目录执行以下命令
编译:make
安装:make FLAGS=InstallAll
清理:make FLAGS=CleanAll
如果没有错误,你可以在XEngine_Release目录下看到编译的XEngine_AuthorizeService
然后直接在终端运行它即可.
2.3 版本要求2.3.1 系统版本
    最低版本要求:
WINDOWS: win7sp1 Ubuntu:20.04
Centos:8.x
2.3.2 软件需求最低版本要求:
XEngine:V7.28
三 TCP接口协议TCP接口协议用于适用于APP等应用程序验证.可用于登录,注册,注销,删除等操作.
请注意:验证协议使用了协议头的保留字段wReserve用于回复客户端请求,告诉客户端这次操作成功还是失败,0表示成功,其他表示失败
wCrypto表示加解密,目前仅仅支持类型4,XCrypto算法.如果需要加密,请填充4,否则请填充0
3.1 删除协议
    用于删除一个用户
3.1.1 请求请求一次删除用户,你需要使用协议头+注册协议来实现,这次协议里面的内容用于判断和验证用户是否有权限删除自己.当然,配合TOKEN使用,还可以实现权限分配.使用TOKEN来验证这个用户有没有权限删除另一个用户
    协议头:
wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER
xhToken = 0
unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_AUTH
unOperatorCode= XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REQDEL

unPacketSize = sizeof(XENGINE_PROTOCOL_USERINFO)
byVersion = 1
byIsReply = TRUE
wReserve = 0
wPacketSerial = 0
wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL
协议体:
typedef struct tag_XEngine_Protocol_UserReg{    TCHAR tszUserName;                                             //用户名    TCHAR tszUserPass;                                             //密码    TCHAR tszEMailAddr;                                             //电子邮件地址    TCHAR tszLoginTime;                                             //登录时间    TCHAR tszCreateTime;                                              //注册时间    __int64x nPhoneNumber;                                                //电话号码    __int64x nIDNumber;                                                //身份证号    int nUserLevel;                                                      //用户等级    int nUserState;                                                      //状态
}XENGINE_PROTOCOL_USERINFO, *LPXENGINE_PROTOCOL_USERINFO;
3.1.2 回复
wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER
xhToken = 0
unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_AUTH
unOperatorCode= XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REPDEL

unPacketSize = 0
byVersion = 0
byIsReply = FALSE
wReserve = 0
wPacketSerial = 0
wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL
3.2 注册协议3.2.1 请求
    协议头:
wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER
xhToken = 0
unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_AUTH
unOperatorCode= XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REQREGISTER

unPacketSize = sizeof(XENGINE_PROTOCOL_USERINFO)
byVersion = 1
byIsReply = TRUE
wReserve = 0
wPacketSerial = 0
wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL
协议体:
typedef struct tag_XEngine_Protocol_UserReg{    TCHAR tszUserName;                                             //用户名    TCHAR tszUserPass;                                             //密码    TCHAR tszEMailAddr;                                             //电子邮件地址    TCHAR tszLoginTime;                                             //登录时间    TCHAR tszCreateTime;                                              //注册时间    __int64x nPhoneNumber;                                                //电话号码    __int64x nIDNumber;                                                   //身份证号    int nUserLevel;                                                      //用户等级    int nUserState;                                                       //是否在线
}XENGINE_PROTOCOL_USERINFO, *LPXENGINE_PROTOCOL_USERINFO;3.2.2 回复
wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER
xhToken = 0
unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_AUTH
unOperatorCode= XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REPREGISTER

unPacketSize = 0
byVersion = 0
byIsReply = FALSE
wReserve = 0
wPacketSerial = 0
wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL
3.3 登录协议登录协议是客户端和服务器在请求服务器交换数据的时候所需要做的第一个步骤.只有登录成功,才能使用服务器
3.3.1 请求
    协议头:
wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER
xhToken = 0
unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_AUTH
unOperatorCode= XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REQLOGIN

unPacketSize = sizeof(XENGINE_PROTOCOL_USERAUTH)
byVersion = 1
byIsReply = TRUE
wReserve = 0
wPacketSerial = 0
wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL
协议体:
typedef struct tag_XEngine_Protocol_Auth{    CHAR tszUserName;                                             //用户名    CHAR tszUserPass;                                             //密码    ENUM_PROTOCOLCLIENT_TYPE enClientType;                            //客户端类型    ENUM_PROTOCOLDEVICE_TYPE enDeviceType;                            //设备类型
}XENGINE_PROTOCOL_USERAUTH, *LPXENGINE_PROTOCOL_USERAUTH;3.3.2 回复
wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER
xhToken = 0
unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_AUTH
unOperatorCode= XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REPLOGIN

unPacketSize = 0
byVersion = 0
byIsReply = FALSE
wReserve = 0
wPacketSerial = 0
wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL
3.3.2.1 回复类别服务器回复成功和失败,可以通过开发人员自定义,或者通过统一标识来确定.在这里.我们通过wReserver来确定,这个值在登录协议上面,返回的数值将表达以下意思:
l0:成功
l251:用户不存在
l252:密码错误
l253:用户没有权限
l254:用户已过期
l255:服务器内部错误
3.4 充值协议
    用户充值协议是通过充值卡来充值的,充值卡需要通过我们的序列号模块来生成.
3.4.1 请求
    协议头:
wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER
xhToken = 0
unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_AUTH
unOperatorCode= XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REQPAY

unPacketSize = sizeof(AUTHREG_PROTOCOL_USERPAY)
byVersion = 1
byIsReply = TRUE
wReserve = 0
wPacketSerial = 0
wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL
协议体:
typedef struct{    CHAR tszUserName[XENGINE_AUTHREG_SERVICE_SQL_MAX_USERNAME];      //用户    CHAR tszSerialNumber;                                           //序列号
}AUTHREG_PROTOCOL_USERPAY, *LPAUTHREG_PROTOCOL_USERPAY;3.4.2 回复
wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER
xhToken = 0
unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_AUTH
unOperatorCode= XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REPPAY

unPacketSize = 0
byVersion = 0
byIsReply = FALSE
wReserve = 0
wPacketSerial = 0
wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL
3.5 找回密码3.5.1 请求
    协议头:请求的协议,用户名和身份证以及电话号码不能为空
wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER
xhToken = 0
unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_AUTH
unOperatorCode= XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REQGETPASS

unPacketSize = sizeof(XENGINE_PROTOCOL_USERINFO)
byVersion = 1
byIsReply = TRUE
wReserve = 0
wPacketSerial = 0
wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL
协议体:
typedef struct tag_XEngine_Protocol_UserReg{    TCHAR tszUserName;                                  TCHAR tszUserPass;                                     TCHAR tszEMailAddr;                            TCHAR tszLoginTime;                                     TCHAR tszCreateTime;                                        __int64x nPhoneNumber;                                           __int64x nIDNumber;                                        int nUserLevel;                                                 int nUserState;                                 
}XENGINE_PROTOCOL_USERINFO, *LPXENGINE_PROTOCOL_USERINFO;3.5.2 回复
    协议头:
wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER
xhToken = 0
unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_AUTH
unOperatorCode= XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REPGETPASS

unPacketSize = sizeof(XENGINE_PROTOCOL_USERAUTH)
byVersion = 1
byIsReply = FALSE
wReserve = 0
wPacketSerial = 0
wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL
   协议体:
typedef struct tag_XEngine_Protocol_Auth{    CHAR tszUserName;                                             //用户名    CHAR tszUserPass;                                             //密码    ENUM_PROTOCOLCLIENT_TYPE enClientType;                            //用户类型    ENUM_PROTOCOLDEVICE_TYPE enDeviceType;                            //设备类型
}XENGINE_PROTOCOL_USERAUTH, *LPXENGINE_PROTOCOL_USERAUTH;2.5.2.1 错误定义l291:用户不存在l292:验证信息不正确3.6 获取时间获取时间表示获取用户所剩余的时间.需要登录
3.6.1 请求
    协议头:
wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER
xhToken = 0
unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_AUTH
unOperatorCode= XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REQGETTIME

unPacketSize = 0
byVersion = 1
byIsReply = TRUE
wReserve = 0
wPacketSerial = 0
wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL
3.6.2 回复
    协议头:
wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER
xhToken = 0
unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_AUTH
unOperatorCode= XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REPGETTIME

unPacketSize = sizeof(AUTHREG_PROTOCOL_TIME)
byVersion = 1
byIsReply = FALSE
wReserve = 0
wPacketSerial = 0
wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL
协议体:
typedef struct
{
         CHARtszUserAddr;    //地址
         CHARtszUserName;   //用户
         CHARtszLeftTime;                                             //过期日期
         __int64xnTimeLeft;                                                //剩余时间
         __int64xnTimeONLine;                                             //在线时间
         ENUM_AUTHREG_GENERATESERIALTYPEenSerialType;
}AUTHREG_PROTOCOL_TIME, *LPAUTHREG_PROTOCOL_TIME;
3.7 网络验证临时网络验证协议,可以不需要注册登录即可使用,通过一段唯一的识别码(CPUID,主板ID,硬盘ID)来进行注册.此注册会发送到服务器,服务器会自动进行记录保存,并且识别是否过期,方便用户使用.
此协议比本地验证更加安全.可以方便一些不想注册的用户使用.
3.7.1 请求
    协议头:
wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER
xhToken = 0
unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_AUTH
unOperatorCode= XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REQTRYVER

unPacketSize = IDLEN
byVersion = 1
byIsReply = TRUE
wReserve = 0
wPacketSerial = 0
wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL
协议体:填写唯一标识码,可以是CPUID等
3.7.2 回复协议头:成功将返回下面的内容,表示时间还没有过期
wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER
xhToken = 0
unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_AUTH
unOperatorCode= XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REPTRYVER

unPacketSize = 0
byVersion = 1
byIsReply = FALSE
wReserve = 0
wPacketSerial = 0
wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL
3.7.2.1 错误信息l0x2D1:表示用户的试用时间已经超过了
l0x2D2:表示服务器没有启用此功能
l0x2D3:服务器内部错误
3.8 获取用户
   登录用户级别比获取的用户高.
3.8.1 请求
   协议头:
wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER
xhToken = 0
unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_AUTH
unOperatorCode= XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REQGETUSER

unPacketSize = sizeof(XENGINE_PROTOCOL_USERAUTH)
byVersion = 1
byIsReply = TRUE
wReserve = 0
wPacketSerial = 0
wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL
协议体:
typedef struct tag_XEngine_Protocol_Auth{    CHAR tszUserName;                                             //仅仅需要用户名    CHAR tszUserPass;                                                 ENUM_PROTOCOLCLIENT_TYPE enClientType;                                ENUM_PROTOCOLDEVICE_TYPE enDeviceType;                           
}XENGINE_PROTOCOL_USERAUTH, *LPXENGINE_PROTOCOL_USERAUTH;3.8.2 回复
wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER
xhToken = 0
unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_AUTH
unOperatorCode= XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REPGETUSER

unPacketSize = sizeof(XENGINE_PROTOCOL_USERINFO)
byVersion = 1
byIsReply = FALSE
wReserve = 0
wPacketSerial = 0
wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL
Data(XENGINE_PROTOCOL_USERINFO)
3.9 设置用户
   登录用户需要比设置用户权限级别高
3.9.1 请求
   协议头:
wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER
xhToken = 0
unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_AUTH
unOperatorCode= XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REQSETUSER

unPacketSize = sizeof(XENGINE_PROTOCOL_USERINFO)
byVersion = 1
byIsReply = TRUE
wReserve = 0
wPacketSerial = 0
wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL
    协议体:
Data(XENGINE_PROTOCOL_USERINFO)
3.9.2 回复
   协议头:
wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER
xhToken = 0
unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_AUTH
unOperatorCode= XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REPSETUSER

unPacketSize = 0
byVersion = 1
byIsReply = FALSE
wReserve = 0
wPacketSerial = 0
wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL
3.10 公告协议
    此协议只用于发送文本内容.用于通知用户消息.
    协议头:
wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER
xhToken = 0
unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_AUTH
unOperatorCode= XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_NOTIFYMSG

unPacketSize = MSGLEN
byVersion = 1
byIsReply = TRUE
wReserve = 0
wPacketSerial = 0
wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL
协议体:协议体为要发送的内容.
3.11 超时通知此协议为通知协议,服务器主动下发,当客户端收到此协议后需要主动断开连接,否则服务器会一直下发此通知.
此协议表示了客户端的时间到期,没有剩余时间了.
wHeader = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_HEADER
xhToken = 0
unOperatorType = ENUM_XENGINE_COMMUNICATION_PROTOCOL_TYPE_AUTH
unOperatorCode= XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_TIMEDOUT

unPacketSize = 0
byVersion = 0
byIsReply = FALSE
wReserve = 0
wPacketSerial = 0
wTail = XENGIEN_COMMUNICATION_PACKET_PROTOCOL_TAIL
四 Websocket接口协议WEBSOCKET协议简称WS协议.
除了上面的TCP协议,WS协议可以支持HTML或前端网页处理授权验证,这样除了APP程序以外,我们还可以支持对网站进行授权验证.
前端网页的授权验证通过WEBSOCKET协议负载JSON实现.
4.1 用户信息协议用于删除,注册,找回密码,用户设置协议
4.1.1 请求{
    "unOperatorType":2,
    "unOperatorCode":8193,
    "byIsReply":1,
"wCrypto":0,
    "st_UserInfo":{
      "tszUserName":"123123aa",
      "tszUserPass":"123123",
      "tszEMailAddr":"486179@qq.com",
      "nPhoneNumber":1369999999,
      "nIDNumber":5000000000
    }
}4.1.2 回复4.1.2.1 用户删除,注册,设置{
    "wHeader":17,
    "wTail":255,
    "unOperatorType":2,
    "unOperatorCode":8197,
    "byIsReply":0,
    "wCrypto":0,
    "wReserve":0
}
4.1.2.2 找回密码{
    "wHeader":17,
    "wTail":255,
    "unOperatorType":2,
    "unOperatorCode":8197,
    "byIsReply":0,
    "wCrypto":0,
    "wReserve":0,
    "st_UserAuth":{
      "tszUserName":"123123aa",
      "tszUserPass":"123123",
      "enClientType":10,
      "enDeviceType":25
    }
}
4.2 用户验证协议用于登录,获取用户协议
4.2.1 请求{
    "unOperatorType":2,
    "unOperatorCode":8197,
    "byIsReply":1,
"wCrypto":0,
    "st_UserAuth":{
      "tszUserName":"123123aa",
      "tszUserPass":"123123",
      "enClientType":10,
      "enDeviceType":25
    }
}4.2.2 回复4.2.2.1 登录参考4.1.2.1
4.2.2.2 获取用户{
    "unOperatorType":2,
    "unOperatorCode":8203,
    "byIsReply":1,
    "wCrypto":0,
    "st_UserInfo":{
      "tszUserName":"用户名",
      "tszUserPass":"用户密码",
      "tszCreateTime":"注册时间",
      "tszEMailAddr":"邮件",
      "tszLoginTime":"最后登录时间",
      "nIDNumber":5151515151,
      "nPhoneNumber":13131313,
      "nUserLevel":1,
      "nUserState":0
    }
}
4.3 用户充值协议用于用户充值协议
4.3.1 请求{
    "unOperatorType":2,
    "unOperatorCode":8199,
    "byIsReply":1,
"wCrypto":0,
    "st_UserPay":{
      "tszUserName":"123123aa",
      "tszSerialNumber":"123123"
    }
}4.3.2 回复
   参考4.1.2.1节
4.4 用户时间协议
    用于获取剩余时间
4.4.1 请求{
    "unOperatorType":2,
    "unOperatorCode":8203,
    "byIsReply":1,
"wCrypto":0
}4.4.2 回复{
    "wHeader":17,
    "wTail":255,
    "unOperatorType":2,
    "unOperatorCode":8204,
    "byIsReply":0,
    "wCrypto":0,
    "wReserve":0,
    "st_UserTime":{
      "tszUserName":"123123aa",
      "tszUserAddr":"123123",
      "tszLeftTime":"2021-12-22 10:11:23",
      "nTimeLeft":25,
      "nTimeONLine":10,
      "enDeviceType":1,
      "enSerialType":1
    }
}
4.5 快速验证
    功能参考3.6节内容
4.5.1 请求{
    "unOperatorType":2,
    "unOperatorCode":8203,
    "byIsReply":1,
    "wCrypto":0,
    "lpszPayload":"唯一硬件码或者其他序列值"
}
4.5.2 回复
    回复内容参考4.1.2.1
4.6 通告协议协议内容功能参考3.10
4.6.1 请求{
    "unOperatorType":2,
    "unOperatorCode":12272,
    "byIsReply":1,
    "wCrypto":0,
    "lpszPayload":"发送的内容"
}
4.6.2 回复
    无
4.7 过期协议
    协议功能参考3.11
4.7.1 请求{
    "unOperatorType":2,
    "unOperatorCode":12287,
    "byIsReply":0,
    "wCrypto":0
}
4.7.2 回复无
4.8 获取用户
    参考3.8节
4.9 设置用户
    参考3.9节
五 配置说明
配置文件:XEngine_Config.ini
5.1 基础配置
配置信息:ServiceConfig
lTCPPort:TCP监听的端口
lWSPort:websocket端口
lThreadPool:允许的线程
lUserVerTimed:用户允许的验证时间
lAutoStart:是否自动运行
lTimeNotify:超时通知设置,为1为一直通知直到客户端主动关闭
5.2 验证配置
配置信息:Verification,快速验证不需要登录,连接后直接请求就可以得到验证授权信息
lVerTime:快速验证时间
lVerMode:快速验证模式
lTryTime:试用时间
lTryMode:试用模式
5.3 加密配置
配置信息:Crypto,建议使用加密传输,否则很容易被破解
lEnable:是否启用
lPass:密码,仅允许数字
5.4 邮件配置
配置信息:SmtpConfig
lbSmtpEnable:0不启用,1启用,启用后只返回成功失败给客户端,密码发送到邮箱
lSmtpService:电子邮件服务器
lSmtpFromAddr:回复地址
lSmtpUser:用户名
lSmtpPass:密码
5.5 数据库配置
配置信息:XSql
ltszSQLite:数据库地址
5.6 日志配置
配置信息:XLog 目前仅仅适用于不带界面版本
lnMaxSize:最大日志文件大小
lnMaxCount:文件备份个数
lnLogLeave:日志级别
ltszLogFile:日志保存路径
附录附录1 类型定义
    参考文件 XEngine_CommHdr.h
附录2 协议定义参考文件XEngine_ProtocolHdr.h
附录3 转换定义
    参考文件 XEngine_Types.h
附录4 更新历史

文件状态:

[] 草稿

[√] 正式发布

文件名称:

XEngine网络验证服务文档


适用版本:

V2.7


发布日期:

2022-05-31

拟制:   qyt


更新日期

更新说明

修改者

适用版本






ruonan 发表于 2022-6-18 21:31:56

1

仲谋心雨 发表于 2023-10-17 23:45:35

第一次评论啊,好紧张啊,该怎么说啊,打多少字才显的有文采啊,这样说好不好啊,会不会成热贴啊,我写的这么好会不会太招遥,写的这么深奥别人会不会看不懂啊,怎样才能写出我博士后的水平呢,半年写了这么多会不会太快啊,好激动啊。
页: [1]
查看完整版本: C++XEngine网络验证授权项目源码