⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 net_login.c

📁 API
💻 C
字号:
/*=============================================================
功能: 		
作者:		
王永忠:2001/03/29:规范程序设计

周国祥 2001/04/05  修改有关jgbm_base==>bank_base
===============================================================*/

#include <time.h>
#include <sys/types.h>

#include "all.h"
#include "msgapi.h"
#include "macro_def.h"
#include "db_struct_c.h"

/***************************************************************
功能:
分行向中心签到或签退
ENTRY:
	log_flag	签到或签退标志
	PUBLIC结构
RETURN:
0:签到或签退成功
-1:读本地参数表失败
-2:读分行技术资料失败
-3:申请消息队列出错
-4:向消息队列注册失败或发送消息失败
-5:接收消息失败
-6:响应码非00
-7:申请共享内存错

****************************************************************/
int netlog_proc ( int log_flag , PUBLIC *pub_ptr )
{

	S_sys_param sys;
	struct tm *tm;
	time_t t;
	int Resp_msgid , Req_msgid;
	int i;
	S_bank_base bank;
	
	memset ( pub_ptr , '\0' , sizeof(PUBLIC) );
	
	strcpy( pub_ptr->Msg_id , "0800" );

	if ( log_flag == 0 )
		pub_ptr->Tran_type = NET_LOGIN;
	else
		pub_ptr->Tran_type = NET_LOGOUT;
	
	if ( select_sys_param ( &sys ) < 0 ) {
		errcall ( ERROR , "Unable select sys_param !" );
		return -1;
	}

	/*
	 * 应向管辖行NAS主机签到
	 */
	if ( !strcmp( sys.adm_bank_id, sys.bank_id ) &&
		!strcmp( sys.adm_host_id, sys.host_id ) ) {
		errcall( ERROR, "Not login myself!" );
		return -1;
	}
	
#ifdef zgx010429_modi
	sprintf ( pub_ptr->Rcv_bank_id , "%11.11s", sys.adm_bank_id );
	sprintf ( pub_ptr->Rcv_host_id , "%2.2s", sys.adm_host_id );
	sprintf ( pub_ptr->Snd_bank_id , "%11.11s", sys.bank_id );
	sprintf ( pub_ptr->Snd_host_id , "%2.2s", sys.host_id );
	sprintf ( pub_ptr->Iss_bank_id , "%11.11s", sys.adm_bank_id );
	sprintf ( pub_ptr->Acq_bank_id , "%11.11s", sys.bank_id );
	sprintf ( pub_ptr->Bank_id,	 "%11.11s", sys.bank_id );
	sprintf ( pub_ptr->Host_id,	 "%2.2s", sys.host_id );
#else
	sprintf ( pub_ptr->Rcv_bank_id , "%s", sys.adm_bank_id );
	sprintf ( pub_ptr->Rcv_host_id , "%s", sys.adm_host_id );
	sprintf ( pub_ptr->Snd_bank_id , "%s", sys.bank_id );
	sprintf ( pub_ptr->Snd_host_id , "%s", sys.host_id );
	sprintf ( pub_ptr->Iss_bank_id , "%s", sys.adm_bank_id );
	sprintf ( pub_ptr->Acq_bank_id , "%s", sys.bank_id );
	sprintf ( pub_ptr->Acq_host_id , "%s", sys.host_id );
	sprintf ( pub_ptr->Bank_id,	 "%s", sys.bank_id );
	sprintf ( pub_ptr->Host_id,	 "%s", sys.host_id );
#endif

	/*
	 * 获取管辖行技术资料
	 */
	strcpy ( bank.bank_id , sys.adm_bank_id );
	strcpy ( bank.host_id , sys.adm_host_id );
	if ( select_bank ( &bank ) < 0 ) {
		errcall(ERROR, "Unable select %s[%s]'s ipaddr!", bank.bank_id, bank.host_id);
		return -2;
	}
	
	strcpy(pub_ptr->Nas_version, bank.nas_version);
	strcpy(pub_ptr->Rcv_ip_addr1, bank.tran_ip_addr1);
	strcpy(pub_ptr->Rcv_ip_addr2, bank.tran_ip_addr2);
	
#ifdef DEBUG1
	errcall(ERROR, "%s %s", pub_ptr->Rcv_ip_addr1, bank.tran_ip_addr1);
#endif
	time ( &t );
	tm = localtime ( &t );
	
	sprintf ( pub_ptr->Local_sys_date , "%04d%02d%02d" , tm->tm_year+1900 ,
		tm->tm_mon+1 , tm->tm_mday );
	
	sprintf ( pub_ptr->Local_sys_time , "%02d%02d%02d" , tm->tm_hour , tm->\
		tm_min , tm->tm_sec );

	sprintf ( pub_ptr->Tran_sys_time , "%4.4s%6.6s", \
		pub_ptr->Local_sys_date+4, pub_ptr->Local_sys_time );

	Req_msgid = gmsg_nonb ( REQ_MSG );
	Resp_msgid = gmsg_nonb ( RESP_MSG );

	if ( Req_msgid < 0 || Resp_msgid < 0 ) {
		errcall ( ERROR , "Unable gmsg_nonb Req or Resp msg !" );
		return -3;
	}

	pub_ptr->Source_msg_type = getpid ();

	if ( message_r_login ( Resp_msgid , pub_ptr->Source_msg_type ) < 0 ) {
		errcall ( ERROR , "Unable message login !" );
		return -4;
	}
	
	/*
	 * 发送签到/签退交易
	 */
	if ( ( i= message_send ( Req_msgid , (char *)pub_ptr , sizeof(PUBLIC) ,
			TONAS_HOSTID , 3 , 0 ) ) < 0 ) {
		errcall ( ERROR , "Unable send message (%d) !" , i );
		return -4;
	}
	
	/*
	 * 等待应答
	 */
	i = message_recv ( Resp_msgid , (char *)pub_ptr , sizeof(PUBLIC) , \
		&(pub_ptr->Source_msg_type) , 60 , AUTO_LOGOUT );
	
	if ( i < 0 ) {
		message_r_logout ( Resp_msgid , pub_ptr->Source_msg_type );
		errcall ( ERROR , "Unable recv message (%d) !" , i );
		strcpy ( pub_ptr->Resp_code, TIME_OUT);
		return -5;
	}
	
	if (memcmp(pub_ptr->Resp_code, SUCCESS, 2)) {
		errcall ( ERROR , "Unable net login (%s) !" , pub_ptr->Resp_code);
		return -6;
	}
#ifndef zgx010518_added_for_nss
	if (log_flag == 0) {
		if (write_net_key(pub_ptr) < 0) {
			errcall ( ERROR , "Unable write net key! bank:%s(%s), Add_data:%s !" , pub_ptr->Resp_bank_id, pub_ptr->Resp_host_id, pub_ptr->Add_data);
			return -6;
		}
	}
#endif
	
	/*
	 * 置签到签退状态标志
	 */
	if ( log_flag == 0 ) 
		set_login_stat ( sys.adm_bank_id, sys.adm_host_id,'I' );
	else
		set_login_stat ( sys.adm_bank_id, sys.adm_host_id,'O' );
	
	/*
	 * 联行签到签退状态监控
	 */
	get_bank_stat_moni ();
/************
	if ( getipc () < 0 ) {
		errcall ( ERROR , "Unable get shm1 !" );
		return -7;
	}
************/

	/*
	 * 告诉网络监控进程需要重新装载状态信息
	 */
	set_reload_num ();

	/*
	 * 唤醒监控进程
	 */
	wackup_moni ();

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -