Author: cgr Language: text
Description: Not specified Timestamp: 2017-08-25 05:01:38 +0000
View raw paste Reply
/*-----------------------------------------------------------------------------
*******  Modulo      : PRCMPRO ( PROCESADOR DE MENSAJES ISO8583)        *******
*******  Descripcion : Procesador de mensajes provenientes del ATM.     *******
*******                Modelo de cajero ISO8584.                        *******
*******                Ver. 02.00.00                                    *******
*******  Fecha       : 01/Junio/1998                                    *******
*******  Autor       : Ing. Jose Alfredo Pequeno Contreras              *******
*******  Copyright(c): BanRegio, S.A.                                   *******
 -----------------------------------------------------------------------------*/
#include <unistd.h>
#include <string.h>
#include <stdio.h>                /* Def. de rutinas estandares de C */
#include <stdlib.h>               /* Def. de rutinas estandares de C */
#include <errno.h>                /* Def. de errores internos del sistema */
#include <time.h>                 /* Encabezado para funciones de tiempo */
#include "sicca.h"                /* Definicion de estruc., var. y const. */
#include "memdin.h"

//#define DEBUG
/*** Estructura auxiliar de almacenamiento ***/
struct tx_rec {
   TRANSACTION tx;
   struct tx_rec *next;
   struct tx_rec *prev;
};

typedef struct tx_rec TX_REC;

/*** Estructura del nodo de cola de espera para ISO 8583 ***/
struct pend_iso {
   int               atm;
   unsigned int      secuencia;
   int               num_miso;
   char              prod[2];
   time_t            wait_time;
   int               lon;
   char              direccion; /*'0'= sicca->prosa,'1'= prosa->sicca */
   CAMPOS           *p_campos;
   char             *miso;
   struct pend_iso  *next;
   struct pend_iso  *prev;
};

typedef struct pend_iso PEND_ISO8583;

/* Mensaje de respuesta ISO8583, poner mascara de resp. ISO 8583 */
struct rsp_msg resp_msg;
RESP_ISO8583   *resp_iso = (RESP_ISO8583 *)    &resp_msg;
struct apl_msg *reqaut   = (struct apl_msg *)  &resp_msg;


/* Mensaje de requerimiento del autorizador hacia PROSA */
REQ_ISO8583    reqiso;             /* Mensaje de requerimiento de PROSA */

struct msg_rec prcm_cnfg;          /* Mensaje de configuracion */
struct tcpip   atms;               /* Lista de cajeros configurados */
struct tcpip_rec *atm_actual;      /* Apuntador a cajero actual */

TRANSACTION  buff;                 /* Almacenamiento auxiliar */

TX_REC        *tr_head;            /* Apuntador inicio lista de tipo de tran. */
TX_REC        *tr_last;            /* Apuntador final lista de tipo de tran. */
PEND_ISO8583  *pend_hISO;          /* Apuntador inicio lista de pend. ISO8583 */
PEND_ISO8583   phISO;              /* Inicio de la lista de pend. ISO8583 */
REG_CAMPOS_ISO c_iso[MAX_NCISO];   /* definicion de campos ISO */
MSJISO         m_iso[MAX_MSJ_ISO]; /* definicion de mensajes ISO */
MAPA_BITS      map_b[MAX_MSJ_ISO]; /* Mapa de bits iso por mensaje */
CAMPOS         pc_iso;             /* Posicion de los campos ISO de msj rec */
CAMPOS         pc_iso_rsp;         /* Posicion de los campos ISO de msj a env */

unsigned int   sig_nsec = 0;       /* Siguiente numero de secuencia */
char env_prosa[MAX_MSG_LEN];       /* Mensaje a enviar a PROSA */

FILE *trans_fptr;                  /* Apuntador al archivo transacciones */
FILE *a;                           /* Apuntador auxiliar a archivo */

char msg[MAX_MSG_LEN];             /* Buffer del mensaje */
char aux[MAX_MSG_LEN];             /* Buffer auxiliar */
char *ap_msjrec;                   /* Apuntador al mensaje recibido */
char *ap_msjenv;                   /* Apuntador al mensaje enviado */
char *ptr;                         /* Apuntador auxiliar al mensajes */
char luno[4];                      /* Identificador del ATM */
char llave_enc_desenc[17];         /* Llave de enc-desencripcion */

int  nm_iso = 0;                   /* numero de mensajes ISO configurados */
int  cnfg_wtime;                   /* Tiempo de espera */
int  ret_c;                        /* Codigo de retorno */
int  atm;                          /* Identificador del ATM. */
int  len;                          /* Longitud del mensaje */
int  type;                         /* Tipo de mensaje */
int  atm_ops;                      /* Estado operacional del ATM */
int  reason;                       /* Razon del rechazo de la operacion */
int  pos_atm_act;                  /* Posición en el arreglo del atm actual */
int  procomatm[MAX_NUM_ATM];       /* Enlace ISO en linea, 0 = no, 1 = si */
int  proaplatm[MAX_NUM_ATM];       /* Aplic. ISO en linea, 0 = no, 1 = si */
int  procompos[MAX_NUM_ATM];       /* Enlace ISO en linea, 0 = no, 1 = si */
int  proaplpos[MAX_NUM_ATM];       /* Aplic. ISO en linea, 0 = no, 1 = si */
int  sec_0800 = 0;                 /* Numero de secuencia para 0800 */
int  srvdes_conectado = 0;         /* Bandera para ver si el SRVDES est
                  conectado */
int  skt_local;                   /* Socket del PRCMPRO */

This paste is large and only partially shown.
View full paste

View raw paste Reply