📄 heng.c
字号:
#include <windows.h>#include <windowsx.h>#include <stdio.h>#include <string.h>#include <stdlib.h>#include <io.h> #include <sys\stat.h> #include <fcntl.h> #include <time.h>//#include "dbf_data.h"#include "sv_jy.h"#include "jydest.h"#include "rsa.h"#define __SERVER_CCR#include "heng.h"#define MAX_PATH_LEN 128#define START_REC_NO 94//DBF_DATA CommFile;typedef struct tag_ANSFILE{ HANDLE hf[MAX_ZQS_COUNT]; int recnum[MAX_ZQS_COUNT]; char path[MAX_ZQS_COUNT][MAX_PATH_LEN];}ANSFILE;ANSFILE AnsFile;typedef struct tag_REQFILE{ HANDLE hf[MAX_ZQS_COUNT]; int recnum[MAX_ZQS_COUNT]; int currec[MAX_ZQS_COUNT];}REQFILE;REQFILE ReqFile;int ZqsCount;//char * CommBuffer;short rlen,hlen;char RetFilePath[80];BOOL fUseJy =FALSE,fTestJy=FALSE,fRsa=FALSE;int Thrd_SendJycx(int sd, int reqType, void *lpBuf, int);extern int sdJy;extern BOOL GetInitString(LPSTR, LPSTR, LPSTR);extern BOOL PutInitString(LPSTR, LPSTR, LPSTR);extern BOOL ErrMsg(HWND, LPSTR);//extern int UDP_SendBuff(LPSTR, int, LPSTR, int, LPDEST_INFO );#define WriteRecord WriteDatRecint WriteDatRec(HANDLE hd,int no,short hlen,short rlen,char *rbuff){ DWORD bytes; int i=0; SetFilePointer(hd,(long)(hlen + rlen*(START_REC_NO +no -1)),NULL,FILE_BEGIN); do { if(LockFile(hd,(DWORD)(hlen + rlen*(START_REC_NO +no -1)),0,rlen,0)) break; else Sleep(RETRY_DELAY +RETRY_DELAY/2); }while(i<LOCK_RETRY_TIMES); if(i>=LOCK_RETRY_TIMES) return -1; if(WriteFile(hd,rbuff,rlen,&bytes,NULL)) { if(bytes!=(DWORD)rlen) { UnlockFile(hd,(DWORD)(hlen + rlen*(START_REC_NO +no -1)),0,rlen,0); return -1; } } else { UnlockFile(hd,(DWORD)(hlen + rlen*(START_REC_NO +no -1)),0,rlen,0); return -1; } UnlockFile(hd,(DWORD)(hlen + rlen*(START_REC_NO +no -1)),0,rlen,0); return 0;}#define ReadRecord ReadDatRecint ReadDatRec(HANDLE hd,int no,short hlen,short rlen,char *rbuff){ DWORD bytes; int i=0; SetFilePointer(hd,(long)(hlen + rlen*(START_REC_NO+no -1)),NULL,FILE_BEGIN); do { if(LockFile(hd,(DWORD)(hlen + rlen*(START_REC_NO +no -1)),0,rlen,0)) break; else Sleep(RETRY_DELAY +RETRY_DELAY/2); }while(i<LOCK_RETRY_TIMES); if(i>=LOCK_RETRY_TIMES) return -1; if(ReadFile(hd,rbuff,rlen,&bytes,NULL)) { if(bytes!=(DWORD)rlen) { UnlockFile(hd,(DWORD)(hlen + rlen*(START_REC_NO +no -1)),0,rlen,0); return -1; } } else { UnlockFile(hd,(DWORD)(hlen + rlen*(START_REC_NO +no -1)),0,rlen,0); return -1; } UnlockFile(hd,(DWORD)(hlen + rlen*(START_REC_NO +no -1)),0,rlen,0); return 0;}int JyInit(void){ int i,j; char tmp[256], temp[256],temp1[256]; char * prt; REQUEST_BUFFER ReqBuf; ANSWER Answer; DWORD bytes; memset(&ReqFile,0,sizeof(REQFILE)); memset(&AnsFile,0,sizeof(ANSFILE)); memset(&ReqBuf,0,sizeof(REQUEST_BUFFER)); memset(&Answer,0,sizeof(ANSWER)); if(GetInitString("JY", "RUN", tmp)) { if(tmp[0] =='N' || tmp[0] =='n') { fUseJy =FALSE; return 0; } else fUseJy =TRUE; } if(GetInitString("JY", "TEST", tmp)) { if(tmp[0] =='Y' || tmp[0] =='y') fTestJy =TRUE; else fTestJy =FALSE; } else fTestJy =FALSE; if(GetInitString("JY", "RSA", tmp)) { if(tmp[0] =='Y' || tmp[0] =='y') { fRsa =TRUE; if(!ReadRsaFile(R,PK,SK)) ErrMsg(NULL,"读RSA加密参数失败,请在系统启动后按[Init]"); } } ZqsCount=0; for(i=0;i<MAX_ZQS_COUNT;i++) { wsprintf(temp,"%s%d","COMMFILE",i); if(!GetInitString("JY", temp, tmp)) { if(ZqsCount==0) { wsprintf(temp, "不能发现配置%s:\n %s", (LPSTR)"COMMFILE", (LPSTR)tmp); ErrMsg(NULL, temp); } break; } else { ZqsCount++; prt=strstr(tmp,";"); if(prt==NULL) { ErrMsg(NULL,"format Reqfile;AnsFile"); return -1; } else *prt=0; strcpy(temp1,tmp); if(access(temp1,0)!=0) { ReqFile.hf[i]=CreateFile(temp1,GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); if(ReqFile.hf[i] ==INVALID_HANDLE_VALUE) { ErrMsg(NULL, "can not create comm file!"); return -1; } for(j=0;j<REQUESTLEN;j++) { if(WriteFile(ReqFile.hf[i],&ReqBuf,sizeof(REQUEST_BUFFER),&bytes,NULL)) { if(bytes!=sizeof(REQUEST_BUFFER)) { CloseHandle(ReqFile.hf[i]); return -1; } } else { CloseHandle(ReqFile.hf[i]); return -1; } } } else { if(access(temp1,_S_IREAD|_S_IWRITE) <0) { wsprintf(temp, "不能存取%s:\n %s", (LPSTR)"COMMFILE", (LPSTR)temp1); ErrMsg(NULL, temp); return -1; } ReqFile.hf[i]=CreateFile(temp1,GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); if(ReqFile.hf[i] ==INVALID_HANDLE_VALUE) { ErrMsg(NULL, "can not create comm file!"); return -1; } } //ReqFile.hf[i]=OpenDbfBase(temp1,O_RDWR);// if(i==0)// CommFile.hf=ReqFile.hf[0]; //if (ReqFile.hf[i]==-1) //{ // wsprintf(temp, "不能打开%s:\n %s", // (LPSTR)"COMMFILE", (LPSTR)temp1); // ErrMsg(NULL, temp); // return -1; //} if(i==0) { // if (InitBase(CommFile.hf,&CommFile.dbfStruct, // &CommFile.fldStruct,&CommFile.fldCount) // !=SUCCEED) // { // wsprintf(temp, "不能处始化%s:\n %s", // (LPSTR)"COMMFILE", (LPSTR)temp1); // ErrMsg(NULL, temp); // return -1; // } rlen= sizeof(REQUEST_BUFFER); hlen= 0; } //ReqFile.recnum[i]= REQUESTLEN; strcpy(temp1,++prt); if(access(temp1,0)!=0) { AnsFile.hf[i]=CreateFile(temp1,GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); if(ReqFile.hf[i] ==INVALID_HANDLE_VALUE) { ErrMsg(NULL, "can not create comm ans file!"); return -1; } for(j=0;j<ANSWERLEN;j++) { if(WriteFile(AnsFile.hf[i],&Answer,sizeof(ANSWER),&bytes,NULL)) { if(bytes!=sizeof(ANSWER)) { CloseHandle(ReqFile.hf[i]); CloseHandle(AnsFile.hf[i]); return -1; } } else { CloseHandle(AnsFile.hf[i]); return -1; } } } else { if(access(temp1,_S_IREAD|_S_IWRITE) <0) { wsprintf(temp, "不能存取%s:\n %s", (LPSTR)"COMMFILE", (LPSTR)temp1); ErrMsg(NULL, temp); return -1; } AnsFile.hf[i]=CreateFile(temp1,GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); if(AnsFile.hf[i] ==INVALID_HANDLE_VALUE) { ErrMsg(NULL, "can not create comm ans file!"); return -1; } } //AnsFile.hf[i]=OpenDbfBase(temp1,O_RDWR); //if (ReqFile.hf[i]==-1) //{ // wsprintf(temp, "不能打开%s:\n %s", // (LPSTR)"COMMFILE", (LPSTR)temp1); // ErrMsg(NULL, temp); // return -1; //} prt =strrchr(temp1,'\\'); ++prt; *prt =0; strcpy(&AnsFile.path[i][0],temp1); AnsFile.recnum[i]=ANSWERLEN; ReqFile.recnum[i]=REQUESTLEN; } } return 0; }int JyExit(void){ int i; for(i=0;i<ZqsCount;i++) { if(ReqFile.hf[i]!=INVALID_HANDLE_VALUE) CloseHandle(ReqFile.hf[i]); if(AnsFile.hf[i]!=INVALID_HANDLE_VALUE) CloseHandle(AnsFile.hf[i]); } return 0;}int Jy_Zqsxx(int sd){ int len; BYTE SendBuff[1024]; strcpy(SendBuff, JY_ZQSXX_HEAD); len =strlen(JY_ZQSXX_HEAD); //memcpy(&SendBuff[len],&Zqsxx,sizeof(ZQSXX)); //len+=sizeof(Zqsxx); memcpy(&SendBuff[len],R,DATALENGTH); len +=DATALENGTH; memcpy(&SendBuff[len],PK,DATALENGTH); len +=DATALENGTH; UDP_SendBuff("RSA.R.PK", sd, SendBuff, len,NULL); return 0;}void ClearAns(LPJY_DEST lpJyDest){ char* buff; buff =GlobalAllocPtr(GHND,rlen); if(buff !=NULL) { memset(buff,0,rlen); WriteRecord(AnsFile.hf[lpJyDest->zqsid],lpJyDest->recNum,hlen,rlen,buff); GlobalFreePtr(buff); }}void ClearReq(LPJY_DEST lpJyDest){ char* buff; buff =GlobalAllocPtr(GHND,rlen); if(buff !=NULL) { memset(buff,0,rlen); buff[0] =0; WriteRecord(ReqFile.hf[lpJyDest->zqsid],lpJyDest->recNum,hlen,rlen,buff); GlobalFreePtr(buff); }}int Jy_ChkUsr(int sd, int jyNum, LPJY_ASK_CHKUSR AskChkUser){ int ret; LPJY_DEST lpJyDest; short Qsid; REQUEST_BUFFER ReqBuf; ANSWER Answer; if(ZqsCount ==1) Qsid =1; else Qsid =AskChkUser->zqsid; if(ReqFile.hf[Qsid -1] ==INVALID_HANDLE_VALUE) return ANS_SYS_ERR; ret =CheckJyDest(sd,REQ_CHKUSR, AskChkUser->jys, AskChkUser->gddm, -1, &lpJyDest); memset(&ReqBuf,0,rlen); memset(&Answer,0,sizeof(ANSWER)); ReqBuf.command =3; ReqBuf.status ='\001'; strcpy(ReqBuf.request.r_inq_account.argment,AskChkUser->gddm); ReqBuf.request.r_inq_account.arg_type ='2'; ReqBuf.request.r_inq_account.password =atoi(AskChkUser->jymm); //StringToFld(CommBuffer,CommFile.fldStruct[fld_GDDM],AskChkUser->gddm); //CommBuffer[*(short*)(CommFile.fldStruct[fld_STKNO].offset)] // =(AskChkUser->jys ==0)?'Z':'H'; //StringToFld(CommBuffer,CommFile.fldStruct[fld_JYMM],AskChkUser->jymm); //CommBuffer[*(short*)(CommFile.fldStruct[fld_ASKNO].offset)]=REQ_CHKUSR; //CommBuffer[*(short*)(CommFile.fldStruct[fld_STAT].offset)]=';'; //wsprintf(temp,"%d",sd); //StringToFld(CommBuffer,CommFile.fldStruct[fld_ADDR],temp); //wsprintf(temp,"%d",jyNum); //StringToFld(CommBuffer,CommFile.fldStruct[fld_SERI],temp); if(lpJyDest==NULL) lpJyDest=GetFirstIdelRec(); if(lpJyDest==NULL) { ReqFile.currec[Qsid-1]++; if(ReqFile.currec[Qsid-1]>ReqFile.recnum[Qsid-1]) { ErrMsg(NULL, "无空闲交易表项!"); return ANS_SYS_ERR; } lpJyDest=AddJyDest(sd, REQ_CHKUSR, AskChkUser->jys, ReqFile.currec[Qsid-1], AskChkUser->gddm, jyNum,Qsid-1); if(lpJyDest ==NULL) { ErrMsg(NULL, "不能加交易表项!"); return ANS_SYS_ERR; } //ClearAns(lpJyDest); if(WriteRecord(ReqFile.hf[Qsid-1],lpJyDest->recNum, hlen,rlen,(char *)&ReqBuf) !=0) { ErrMsg(NULL, "不能写交换文件!"); return ANS_SYS_ERR; } } else { //ClearAns(lpJyDest); if(WriteRecord(ReqFile.hf[Qsid-1],lpJyDest->recNum, hlen,rlen,(char *)&ReqBuf)!=0) { ErrMsg(NULL, "不能写交换文件1!"); return ANS_SYS_ERR; } strcpy(lpJyDest->gddm,AskChkUser->gddm); ChangeJyDest(sd, lpJyDest, REQ_CHKUSR, AskChkUser->jys, Qsid -1,jyNum); } strcpy(lpJyDest->jymm,AskChkUser->jymm); if(fTestJy) { Sleep(1000); //CommBuffer[*(short*)(CommFile.fldStruct[fld_ASKNO].offset)]=REQ_NULL; //CommBuffer[*(short*)(CommFile.fldStruct[fld_ANSNO].offset)]=ANS_SUCC; //CommBuffer[*(short*)(CommFile.fldStruct[fld_STAT].offset)]=';'; //wsprintf(temp,"%d",jyNum); //StringToFld(CommBuffer,CommFile.fldStruct[fld_SERI],temp); strcpy(Answer.a_inq_account.status,"000"); Answer.a_inq_account.fund_account=atoi(AskChkUser->gddm); WriteRecord(AnsFile.hf[Qsid-1],lpJyDest->recNum, 0,sizeof(ANSWER),(char *)&Answer); } return 0;}int Jy_ChgPwd(int sd, int jyNum, LPJY_ASK_CHGPWD AskChgPwd){ LPJY_DEST lpJyDest=NULL;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -