已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南天电子信息股份有限公司 FED民生银行BST数据通信服务器程序设计说明书一 设计概要该服务器程序主要完成的功能为:主要作为数据通信数据转发系统;在UNIX平台上开启一个TCP/IP协议的服务器端程序,通过SOCKET接口接收到BST的WEB SERVER转发的BST交易请求包时有子进程完成与主机的通信;子进程将请求包按照民生银行提供的MAPFILE(交易数据格式)进行数据重组,形成主机请求包,并与银行通信服务器(ELINK)建立socket连接,发送请求包,并接收主机响应包。最后将响应包按照MAPFILE输出格式解包并发送给WEB SERVER。另外要完成申请终端工作密钥,交易时与银行加密机进行密钥交换的工作。具体说明在后面章节说明。二 目录说明$HOME/include/ 所有的头文件,包括银行接口的。$HOME/lib/ 所有的库文件。$HOME/bin/ 运行目录。运行文件名为server,运行./r为后台运行。$HOME/etc/mapfile 银行数据接口定义文件。$HOME/etc/syscfg 所有的配置文件。三 详细程序设计及流程说明3.1 主程序模块框图接收CLIENT数据主进程初始化应用申请初始工作密钥有连接申请?子进程是RQK交易?Y从加密机申请密钥N调用DoWithHost与主机通信返回响应数据包关闭SOCKET1 读配置表BstServ.cfg2 初始化MAP结构3 初始化包头配置结构释放MAP结构退出子进程启动应用 说明:(1) 配置表BstServ.cfg中定义了与WEB SERVER的SOCKET连接的PORT,与ELINK连接的IP地址和PORT端口。(2) 初始化MAP结构是将银行的主机接口数据格式定义文件(MAPFILE文件)全部用动态链表实现,以便提高访问速度。有关说明在后面章节。(3) 初始化包头配置结构,是将MAPFILE定义的报文头的配置表载入到全局变量Sys_Head中,也为了提高访问速度。具体配置见后面章节。(4) 将子进程中的MAP结构链表释放,防止占用内存。3.2 主机通信模块框图(DoWithHost()函数)功能:打主机包-发送-接收-解包-组返回响应包初始化POOL结构查找链表中相应交易结点释放POOL结构,返回按Sys_Head组交易包头将POOL转换为主机报文按输入MAP组交易数据有PAPSWD?与加密机交换PINBLOCKYNPackHostData()PackResponseData()初始化POOL结构将主机响应包转为POOL打印POOL到屏幕主机拒绝包?根据POOL组返回拒绝包释放POOL结构返回下传数据包长度FORM单元?根据输出MAP组返回数据包调用UnpackForm()解释FORM单元YNYN与ELINK建立连接开始调用PackHostData()组包发送主机数据包接收主机数据包调用PackResponseData解包关闭SOCKET(与ELINK)返回数据包长度3.3MAPFILE动态链表结构MAPFILE链表的结构定义在ltable.h中,如下:#define TMAP struct T_Map#define TINDEX struct T_Indexstruct T_Mapchar Tname16;int Tlen;char Ttype1;struct T_Map *next;T_Map;struct T_Indexchar Tcode5;char inqname16;char reqname16;char endaddr10;struct T_Map *inq;struct T_Map *req;struct T_Index *next;T_Index;每个交易对应一个T_Index结点,节点的Tcode为交易码;每个交易的结点中存放的信息有:交易码、输入MAP文件名、输出MAP文件名、交易目的地址、输入MAP链表的头指针和输出MAP链表的头指针。输入、输出MAP链表中分别储存了相应MAPFILE的前三个字段,以便打包、解包时使用。目前数据长度(int Tlen)与数据类型(char Ttype1)暂时没有用到,保留以后使用。即,交易输入、输出时的交易数据(除交易包头外)的长度是变长的。3.4 加密、验密方式的说明在服务器程序启动时,先向主机申请工作密钥,即发送9367交易;返回的PinKey保存在SERVER端。BST启动应用时先向SERVER发送RQK1交易包申请终端使用密钥;SERVER接收到RQK1交易时调用T_gt_working_key()函数向加密机申请,并将其返回给BST。BST做交易时,要将密钥(WorkingKey)和PinBlock上送至SERVER,SERVER要调用T_tr_pin_ansi_ansi()函数与加密机交换PinBlock,然后放在PAPSWD字段上送。 更改密码交易的旧密码字段也同样要加密,密钥同上。注意:如果PSPWKD=1或者2时,SERVER会对PAPSWD和PAOLWD进行PINBLOCK的交换;如果PSPWKD=0或者没有该DDU字段时,认为不做PINBLOCK交换,SERVER会将BST上送来的密码字段原样送主机。三 与WEB SERVER通信数据包格式说明4.1 BST上送包格式设备号交易码密钥保留字段交易包头部分交易数据部分5byte4byte16byte25个字符零用|分隔,数据域定长用|分隔,数据域变长前50个字节为与WEB SERVER的约定报文头。其中,交易包头部分的定义在./syscfg/下,由三个配置文件定义:system_head.cfgcmtran_head.cfgtran_head.cfg 具体内容请看配置文件。该部分中的数据域的顺序和据域的长度必须完全符合上述三个文件的定义,不能少送所有的域。对BST设备端不知道的数据(如交易目的地址),用同样长度的空格代替,其值由SERVER自己处理(为方便对交易包头的处理,将这三个文件组合成Head_Value.cfg,具体说明见后面章节)。 交易数据部分的定义为相应的MAPFILE,如1510交易的输入MAPFILE为(O15100)。该部分数据域的的顺序必须符合该MAPFILE的定义,长度可以是变长,用|进行分隔即可。无数据域不添值,但要用|分隔的空域。注意:加密后的PINBLOCK(密码和新密码均是)为十六位,存放在相应的数据域中。 申请密钥交易数据包: 设备号交易码密钥5byteRQK1或rqk1字符0 16+25 byte4.2 返回数据包格式SERVER对主机返回的数据包先转为POOL结构,再从该结构中按输出MAPFILE(如O15101)的定义将数据用|分隔组成字符串下传。4.2.1下传交易错误包设备号交易码错误码具体错误码保留字段5byte4byte3000如300123 byte a下送包的约定报文头为40BYTE。错误码为3000,与主机通信中有错误;文档最后有待扩充错误码表。注意:如果上送的数据包小于50BYTE,对上送不进行解释,返回的设备号和交易码均返回为零,返回包如下:B0000000030003105aaaaaaaaaaaaaaaaaaaaaaa4.2.2下传RQK失败错误包设备号交易码错误码保留字段5BYTE4BYTE200027 byte 04.2.3下传RQK正确包设备号交易码错误码保留字段Working-key5BYTE4BYTE000027 byte 0| |Working-key 为16位。4.2.4 下传主机拒绝包设备号交易码错误码保留字段|ERRNO|ERRID|ERRTEXT|5BYTE4BYTE100027byte 0主机错误码主机错误ID主机错误描述后三个字段由./syscfg/ERR000文件定义,为主机返回的错误信息。SERVER用|分隔变长数据。4.2.5下传主机正确数据包设备号交易码错误码保留字段输出MAPFILE的DDU域输出MAPFILE的FORM域5byte4byte000027byte 0用|分隔,数据域变长当前记录数|记录字段数|记录|FORM域的格式为:FORM文件名当前笔数记录字段数所有记录数据F1583|0012|0014|记录1|记录2|(字段间也有竖线)说明:PACOUT是该交易的总笔数,FORM域内的为当前笔数;FORM域的栏位数不下传,此处下传的是每条记录的字段数。如果FORM域的后面有DDU数据,那么将DDU数据解在FORM前面。FORM数据总是放在DDU数据之后。 1409补登交易的FORM数据中有打印控制字符,起始打印行数和打印控制字符(列数+字体.),均为一个字节的十六进制值。所以总字节数为(1+1)*字段数。在程序中,列数和字体号均不下传,只有起始打印行数下传,所以1409交易的下传包为:FORM名当前笔数记录字段数打印起始行所有记录数据F1583|0012|0014|0010|记录1|记录2|(字段间也有竖线)4.2.6下传FORM无明细数据包设备号交易码错误码保留字段DDU数据5BYTE4BYTE400027 byte 0用|分隔,数据域变长四 相关配置文件说明 为了方便,配置文件也放在“./syscfg/”目录下。5.1 BstServ.cfg该文件中配置了SERVER的初始化参数:SERVPORT = 2001 定义与WEB SERVER的SOCKET的端口HOSTIP = 1 定义ELINK(主机接口)的IP地址HOSTPORT = 6999 定义了ELINK的端口GET_KEYPATELR=06960001 不同分行的机构号的设置;申请主密钥时使用。PAPSWD=88888888 机构密码 FORM_NOF1583 = 10 定义了相应的FORM对象MAP文件中的字段数5.2 head_value.cfg 该文件定义了交易包头数据部分的字段及其赋值类型,sysSADDR40#源地址,sysDADDR4C#目的地址,c 表示由交易码查询确定sysRSRVD10#系统保留位sysEFLAG10#信息结束标志,默认为1sysSEQNUM20#报文序号,暂不使用,默认值为0sysMACFLAG10#校验标志,是否需MAC校验或其他校验sysMACVALUE80#校验值PDWSNO 5R#交易发起终端号。r表示由BST的数据中获得PDCTNO 4N#城市代码.n表示添空格PDSBNO 4R#银行机构代码PDUSID 8R#交易柜员号PDTRCD 4R#交易代码,TransCodePDTRSD 20#交易子码PDTRMD 10#交易模式PDTRSQ 40#交易序号PDOFF1 20#系统偏移1 #PDTRLN 2PDOFF2 20#系统偏移2PDAUUS 80#授权柜员PDAUPS 80#授权密码说明:第一列为交易包头部分应有的字段,不能少;第二列为该字段的长度,上送的字段长度必须与该定义一致;第三列为字段赋值类型: 0 : 由SERVER端为该字段赋值为0x00的串; N : 由SERVER端为该字段赋值为空格字符串; R :SERVER端从上送请求包中相应的域中取值; C :SERVER端根据tindex.cfg中每个交易的目的地址字段的定义来填写目的地址。该表可以使解释上送请求包的数据时更加灵活。 #后面是注释5.3 tindex.cfg 该文件是创建交易MAP链表结构的配置文件,它定义了四个字段: 交易码,交易输入MAPFILE文件名,交易输出MAPFILE文件名,该交易上送主机的目的地址。例如:#交易码 输入MAP 输出MAP 目的地址1583O15830O15831000000001401O14010O14011000000001482O14821O14822000000001483O14831O14832000000001485 O14851O1485200000000 目的地址为字符串表示的四字节的十六进制值。程序会将其转为十六进制。5.4 关于FTP相关文件的配置 目前FTP下传文件是由ELINK方向BST SERVER传送,使用的用户为:USER: sotftpPASSWD: cmbcsotPath: /usr/sotftp/ftpdata/ 在bstsrv用户下有后台程序定时将下传的文件导入数据库的shell程序。内容如下:文件:bstsrvcron#this job is load info file to database.10 3 * * * /usr/bstsrv/data/info.sh文件:info.sh#!/bin/shINFORMIXDIR=/usr/informixINFORMIXSERVER=dbserverexport INFORMIXDIR INFORMIXSERVERPATH=$INFORMIXDIR/binexport PATH/usr/bstsrv/data/info.sql文件 :info.sqlisql SERVER表示。SERVER发送给主机的数据包,用SERVER HOST表示。主机返回的数据包,用HOST SERVER表示。SERVER返回给WEB SERVER的数据包,用SERVER BST表示。Trace数据有两种形式:ASCII形式和十六进制。BstServ.LOG 为服务程序初始化的LOG文件,记录所载入的参数。B9999.LOG 为服务程序向主机申请密钥的LOG文件。Log 为后台运行程序时屏幕输出的重定向文件。2.Trace文件的备份放在/usr/websrv/log/目录下,以当天日期为目录,每次备份会自动替换上月同日期的目录。即备份只有一个月以内的。Websrv用户下有后台进程每天自动进行TRACE的备份与删除工作。Websrvcron:00 2 * * * /usr/websrv/bin/backlog.sh aa.logbacklog.sh:#backlog copyright by Jiang Huaming#This shell can backup Trace diretory for BST COMM-SERVER,which order by date of month.#2001/09/16#query system datedate +%d a.logread Date a.logif grep $TraceName$Date a.log b.log 2&1then rm -r $BackNameficp -r $TraceName $BackNamerm a.logrm b.log#create new Trace directory and log filecd $TraceNamerm *.LOGcp /dev/null ./log六 可能扩充的错误码表 3001: 连接ELINK失败3002: 向主机发送失败3003: 读超时/失败3100: 没有该交易的定义3101: head_value.cfg配置有错误3102: 上送数据少于MAP定义3103: 交换PINBLOCK失败3104: 上送包数据转换错误(PackEucpSendStr)3105: 请求包长度错误3106: PAPWKD 密码校验方式不正确,该值必须是0,1,2其中之一。3110: 主机响应包转换错误(UnpackEucpRecvStr)3111: 解释FORM数据出错3112: 接收FORM数据错误3113: FORM数据超出8K字节七 新加银证通交易接口证通交易使用与长天不同的通信接口及通信数据报文。所以需要定义新的与WEBSERVER的交易接口,但尽量保持原有风格。7.1 BST上送银证通包格式设备号交易码密钥交易子码保留字段交易数据部分5byte4byte16byte8byte17个字符零用|分隔,数据域变长B0001YZTT*200001120000007.2 下传交易错误包设备号交易码错误码具体错误码交易子码保留字段5byte4byte3000如32008byte15 byte a20000112下送包的约定报文头为40BYTE。银证通交易的错误码从3200-3299。7.3 下传主机拒绝包设备号交易码错误码交易子码保留字段|ERRNO|ERRID|ERRTEXT|5BYTE4BYTE10008byte19byte 0主机错误码主机错误ID主机错误描述20000112后三个字段由./syscfg/ERR000文件定义,为主机返回的错误信息。SERVER用|分隔变长数据。7.4下传主机正确数据包设备号交易码错误码交易子码保留字段输出MAPFILE的DDU域输出MAPFILE的FORM域5byte4byte00008byte19byte 0用|分隔,数据域变长当前记录数|记录字段数|记录|20000112FORM域的格式为:FORM文件名当前笔数记录字段数所有记录数据F1583|0012|0014|记录1|记录2|(字段间也有竖线)说明:PACOUT是该交易的总笔数,FORM域内的为当
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大学《服装设计与工程-服装CAD技术》考试备考试题及答案解析
- 2025年大学《交通管理工程-道路交通事故处理》考试模拟试题及答案解析
- 2025年大学《材料智能技术-材料智能技术概论》考试备考题库及答案解析
- 2025年大学《教育技术学-教学系统设计》考试参考题库及答案解析
- 2025年大学《临床药学-循证药学(循证医学在药学中的应用)》考试模拟试题及答案解析
- 2025年大学《家政学-家政服务管理》考试备考试题及答案解析
- 2025年大学《建筑学-建筑历史与理论》考试备考试题及答案解析
- 2025年大学《艺术教育-现代教育技术在艺术教育中的应用》考试参考题库及答案解析
- 2025年大学《消防政治工作-消防队伍建设与管理》考试备考试题及答案解析
- 2025年大学《质量管理工程-质量管理工程概论》考试备考题库及答案解析
- 2025-2026学年第一学期九年级道德与法治备考指导
- 2025安徽淮南交通控股(集团)有限公司二级公司外包服务人员招聘16人笔试考试参考试题及答案解析
- 药品相关法律法规培训
- 专题03 立方根重难点题型专训(3个知识点+8大题型+3大拓展训练+自我检测)(解析版)
- DB44∕T 2544-2024 黑木相思栽培技术规程
- 乙肝职业暴露处理流程
- 大唐电力锦州市2025秋招面试专业追问及参考自动化与测控岗位
- 学校教师意识形态培训
- bz-高标准农田建设项目勘察设计技术投标方案210
- 膀胱穿刺造瘘术课件
- 回转窑球团焙烧工三级安全教育(班组级)考核试卷及答案
评论
0/150
提交评论