文件----SoftXLic.DLL接口

录入时间:2017/2/7 16:18:02      最后更新:2017/3/14 15:36:38

SoftXLic.DLL的只有一个API接口: tt_cmd

验证的核心文件(Delphi7写的动态库),登陆器必须调用(进程通讯模式的子程序无需调用本文件,进程通讯模式易语言要用到的是ipc.ec其它编程语言要用到的是ipc.dll)

Delphi接口原型 Function tt_cmd(cmdName: PansiChar; cmdData: PansiChar): PansiChar; stdcall;
参数一[cmdName] 要执行的命令名(区分大小写)
参数二[cmdData] 根据cmdName的不同,需传入的相应的数据单元单元集,某些命令cmdData可传空字符串
返回值 有两种格式,原始格式加密格式
原始格式:就是一个(GBK码)单元集文本,主要包括state和message单元 <state>状态号</state><message>数据</message>
加密格式:对原始格式的单元集文本进行了一次base64编码和一次__myEncrypt算法加密, ___myEncrypt(base64_encode(原始格式))
解密方法是 base64_decode(__myDecrypt(加密的数据去softhead的值)) 最终就得出原始格式(GBK码)单元集文本
加解密 __myEncrypt:该加密方法在服务端网站软件参数设置->高级API里,可自定义(只对check和advapi的返回数据加密)
__myDecrypt:该解密算法在 DLL外部客户端自己的代码里定义
数据单元 <单元名>单元值</单元名>          注:本文档中  单元名 标注的均为有效的数据单元名
单元集 <A单元名>A单元值</A单元名><B单元名>B单元值</B单元名>... <C单元名>C单元值</C单元名>

 

cmdName cmdData 可包函的单元 备注&调用示例
set lickey 必填,授权码(定制版无)

set命令名表示设置验证需要的参数,具体设置哪些参数由cmdData的单元或单元集指定

例如最基本的一个例子
tt_cmd("set","<lickey>UIJ........dJue/+=</lickey>")
setstring= "<softcode>1000001</softcode><softver>1</softver><softhead>_Head</softhead>"
setstring=setstring+"<username>keke</username><password>myPassword</password>"
tt_cmd("set",setstring)
tt_cmd("check","")

 

你还可以分开或打乱调用set命令设置的数据单元顺序,但必须保证有效单元中lickey为首
tt_cmd("set","<abcd>这是一个无效的单元,DLL会返回出错信息,但可以不用理会</abcd>")
tt_cmd("set","<lickey>UIJdJue/+=</lickey>")
tt_cmd("set","<username>keke</username>")
tt_cmd("set","<password>myPassword</password>")
tt_cmd("set","<softcode>1000001</softcode>")
tt_cmd("set","<softver>1</softver>")
tt_cmd("set","<softhead>_Head</softhead>")

ipcapi设置回调函数的格式
procedure CallBack(P_read:integer; P_write:integer);
P_read 是客户端发送来的命令字符串的指针
P_write是函数处理后,你需要写入处理后数据的内存地址

 

softcode 必填,软件编号
softhead 必填,加密数据头标识需和服务端软件参数设置里的加密数据头标识相同
建议用5到8个asc字符 例如: [_Data] [_Head] [_Crypt]
softver 必填,客户端软件版本,整数
username 用户名(用户模式软件必填,卡号模式登入的软件,不用设置此值)
password 用户密码(用户模式软件必填,卡号模式登 入的软件,不用设置此值)
keystr 注册卡号(卡号模式软件必填,帐号密码模式登入的软件,不用设置此值)
pccode 可选,机器码(默认值请参考pccodemode,如果你想自定义机器码,就需要设置此参数,设置了此参数后pccodemode无效)
pccodemode 可选,默认值为0。 定义取哪些机器码使用哪个物理硬件(如果你定义了pccode,那么此参数无效)
可设置值 0,1,2,3
0:有网卡取网卡,取网卡出错取硬盘系列号
1:仅网卡
2:仅硬盘系列号
3:网卡和硬盘系列号
ininame 可选,默认值c:/x1.ini,自定义记录一些必要的数据的ini文件名
is2web 可选,默认值0,是否有备服,有备服需要设置此值为1
clientid 可选,通道号,多通道用户或注册卡需要传入此值,默认为1
bdinfo 可选,绑定信息,绑定信息不是机器码是用户自定义的一段用户信息
不设置此单元的话,系统默认值为空字符串
ssl 可选,默认值0,是否使用https,使用https://请设置1
ipcapi 可选,默认值0,处理子进程发送来的进程通讯命令的函数指针
cpname 可选,保留单元,默认为GBK
返回信息
state 成功返回100,失败为其它大于100的状态号
message 失败时为居体的错误信息

 

get 无参数,直接传空字符串 "" 适用:用户模式软件 + 卡模式软件
tt_cmd("get","")
返回信息
所包函的
单元集
state 成功返回100,失败为其它大于100的状态号
message 取软件信息成功,或出错的具体信息
pccode1 机器码
pccode2 仅供参考的附加机器码
upset 是否强制更新0或1
softver 服务端设置的软件版本号
softdownurl 服务端设置的软件下载地址
softgg 软件公告
yzpl 验证频率,单位分钟
check connect 可选,默认值为0。 可设置值0或1,0:自动判断本次验证是否连接服务器,1:强制本次验证连接服务器验证。 适用:用户模式软件 + 卡模式软件
check命令为基础验证功能, 返回信息的原始单元集出错时为原文,验证通过为密文
state等于100时返回的是单元集加密后的数据,需解密(未连接服务器本地验证时返回的是明文)
state大于100时返回的是单元集是明文单元集无需解密


调用示例:
tt_cmd("check","") 此行表示只进行本地验证,DLL会根据服务端设置的验证频率自行判断是否连接服务器进行验证
tt_cmd("check","<connect>1</connect>") 表示强制连接服务器进行验证
tt_cmd("check","<advapi>v_geta</advapi>") 表示强制连接服务器进行验证
tt_cmd("check","<advapi>v_getb,100,200</advapi>") 表示强制连接服务器进行验证
advapi 可选,首次登陆禁止带本单元,设置了本单元时是强制连接服务器的,可设置为高级API接口函数名加参数 <advapi>v_getb,100,100</advapi>
randomstr 可选,传入此值,DLL返回时也会返回相同的值randomstr建议随机传入,返回效验返回值
exturl 可选,扩展参数,自定义在URL尾附加一段数据 e=exturl单元的设定值
返回信息
所包函的
单元集
state 成功返回100,失败为其它大于100的状态号    
message 出错时会有详细的错误提示 bdinfo 绑定信息
advapi advapi接口返回的数据 tag 客户标签
randomstr 同传入值相同 keyextattr 客户附属性
ShengYuMiaoShu 剩余秒数 BeiZhu 客户备注
endtime 到期日期 SiYouShuJu 客户私有数据
shostname 服务器主机名 keystr 注册卡号
shosttime 服务器时间戮 InfoA 返回信息A
managerid 所属管理者ID InfoB 返回信息B
reg username 必填,用户名 适用:用户模式软件
功能:注册用户帐号
返回信息:是明文单元集
示例:
val2="<username>帐号</username><password>登陆密码</password>"
val2=val2 + "<password2>安全密码</password2><czkey>卡号A,卡号B</czkey>"
tt_cmd("reg",val2)
password 必填,登陆密码
password2 必填,安全密码
czkey 可选,充值卡,如果开启了无卡注册可不填
puser 可选,推广帐号的用户名,默认为空
bdinfo 可选,绑定信息,默认为空
返回信息
单元集
state 一个三位数,具体请看state表 VAL_Bpoints 本帐号赠送的点数
message 不论成功或失败,都会有详细的信息在这个单元 VAL_pBday 推广帐号赠送的天数
VAL_Aday 注册后的总天数 VAL_pBpoints 推广帐号赠送的点数
VAL_Apoints 注册后的点数 VAL_sqlerr 出错的SQL信息
VAL_Bday 本帐号赠送的天数 VAL_errkey 出错的注册卡号
cz username 必填,用户名 适用:用户模式软件
功能:给帐号充值口
返回信息:是明文单元集
示例:
val2="<username>keke</username><czkey>卡号A,卡号B</czkey>"
tt_cmd("cz",val2)
czkey 可选,充值卡号,多张卡号请用英文逗号为|线分隔,不要有空格
返回信息
单元集
state 一个三位数,具体请看state表 VAL_Bpoints 本帐号赠送的点数
message 不论成功或失败,都会有详细的信息在这个单元 VAL_pBday 推广帐号赠送的天数
VAL_Aday 充值后的总天数 VAL_pBpoints 推广帐号赠送的点数
VAL_Apoints 充值后的点数 VAL_sqlerr 出错的SQL信息
VAL_Bday 本帐号赠送的天数 VAL_errkey 出错的注册卡号
edit username (用户模式)必填,用户名

适用:用户模式软件 + 卡模式软件
功能:用户模式可修改登陆密码和绑定信息,卡模式可修改绑定信息
返回信息:是明文单元集
示例:
用户模式
val2="<username>keke</username><password2>安全密码</password2>"
val2=val2 + "<password>新的登陆密码</passwor2>"
val2=val2 + "<bdinfo>新的绑定信息</bdinfo>"
tt_cmd("edit",val2)

卡模式修改绑定信息
val2="<keystr>CDKYU531GDs2Aq1VvjnM2ypWk48aghY2</keystr>"
val2=val2 + "<bdinfo>新的绑定信息</bdinfo>"
tt_cmd("edit",val2)

password2 (用户模式)必填,安全密码
keystr (卡号模式)必填,注册卡号
password (用户模式)选填,新的登陆密码,不修改请留空默认为空
bdinfo 选填,新的绑定信息,不修改请留空默认为空
返回信息
单元集
state 一个三位数,具体请看state表 VAL_decday 修改绑定信息扣除的天数
message 不论成功或失败,都会有详细的信息在这个单元 VAL_sqlerr 出错的SQL信息
unbind username 用户模式必填,用户名 适用:用户模式软件 + 卡模式软件
功能:给用户或注册卡解绑机器码
返回信息:是明文单元集
示例:
用户模式
val2="<username>keke</username><password>mypassword</password><clientid>1</clientid>"
tt_cmd("unbind",val2)

卡模式
val2="<keystr>CDKYU531GDs2Aq1VvjnM2ypWk48aghY2</keystr><clientid>1</clientid>"
tt_cmd("unbind",val2)
password 用户模式必填,登陆密码
keystr 卡模式必填,注册卡号
clientid 必填,默认为1
返回信息
单元集
state 一个三位数,具体请看state表 VAL_decday 解绑扣除的天数
message 不论成功或失败,都会有详细的信息在这个单元 VAL_sqlerr 出错的SQL信息
search keyorusername 注册卡号或用户名 功能:查询用户或注册卡信息
返回信息:是明文单元集
示例:
val2="<keyorusername>keke</keyorusername>"
tt_cmd("search",val2)
返回信息
单元集
state 一个三位数,具体请看state表 VAL_sday 剩余天数
message 不论成功或失败,都会有详细的信息在这个单元 VAL_points 点数
VAL_newkey 新卡号,在查询老旧的格式卡时才会出现 VAL_linknum 通道数
VAL_adddate 添加日期 VAL_tag 标签
VAL_activedate 激活日期 VAL_bdinfo 绑定信息
VAL_enddate 到期日期 VAL_extattr 附属性
VAL_cday 卡或用户的天数    
exit 无参数,直接传空字符串 "" 如果启用了检查在线标识一定要调用这个,不然用户可能会卡在线上
调用示例:
tt_cmd("exit","")
返回信息
单元集
state 一个三位数,具体请看state表
message 失败时为居体的错误信息
ipc_start guid 必填,6位以上随机字符串 [a..zA..Z0..9],需和客户端进程调用的ipc_connect命令设置的一样 服务端主程序用(即登陆器进程),启动IPC进程通讯服务
调用示例:
tt_cmd("ipc_start","<guid>myguid78789798</guid>")
返回信息
单元集
state 成功返回100,失败返回大于100的状态号
message 失败时为居体的错误信息

 Copyright 2013-2018 土默特左旗灵盾网络工作室 图图网络验证系统
     蒙ICP备15001097号