/********************************************************************************* * Copyright: (C) 2014 GuoWenxue * All rights reserved. * * Filename: cvd_conf.c * Description: This file * * Version: 1.0.0(11/19/2014) * Author: GuoWenxue * ChangeLog: 1, Release initial version on "11/19/2014 01:58:28 PM" * ********************************************************************************/ #include "cp_logger.h" #include "cvd_conf.h" #include "cp_iniparser.h" int parser_cvd_conf(char *ini_name, cp_logger *logger, comport_sock_bind_t *cvd_bind) { dictionary *ini; char *str; int val, i; if(!ini_name || !logger || !cvd_bind) { log_err("Invalid input arguments\n"); return -1 ; } ini = iniparser_load(ini_name); if (ini==NULL) { log_err("cannot parse file: %s\n", ini_name); return -2 ; } /************************************************ * Parser the Logger configuration ************************************************/ log_nrml("Parser configure file %s with original logger file [%s]\n", ini_name, logger->file); str = iniparser_getstring(ini, "log:file", NULL); strncpy(logger->file, (strlen(str)>0 ? str : CVD_DEF_LOG_FILE), FILENAME_LEN); log_nrml("Set log file [%d] from configuration.\n", logger->level); /*If not set the log level from command line, then use the configure one*/ if( !(logger->flag&CP_LOGGER_LEVEL_OPT) ) { val = iniparser_getint(ini, "log:level", -1); logger->level = (-1==val ? LOG_LEVEL_NRML : val); log_nrml("Set log level[%d] from configuration.\n", logger->level); } /* Set the log maximum file size in the configure file */ val = iniparser_getint(ini, "log:size", -1); logger->size = -1==val ? CVD_DEF_LOG_SIZE : val; log_nrml("Set log size [%dKiB] from configuration\n", logger->size); if ( cp_log_reopen() ) { printf("Log file reopen failure, exit now...\n"); return -3; } log_nrml("Configure Log file \"%s\" with level [%s], maximum size %d KiB.\n", logger->file, log_str[logger->level], logger->size); for(i=0; i 0 ) { strncpy(cvd_bind->comport_dev, str, DEVNAME_LEN); log_info("Configure comport: %s\n", cvd_bind->comport_dev); } else { log_err("Configure file lost serial port configuration\n"); return -3; } /*----------------------------------------------------------------------------- * Connect socket configuration *-----------------------------------------------------------------------------*/ snprintf(key, sizeof(key), "TUNNEL%d:conn_host", i+1); str = iniparser_getstring(ini, key, NULL); if( NULL!=str && strlen(str) > 0 ) { char *ptr; ptr = strtok(str, ":"); if(ptr) { strncpy(cvd_bind->sock.host, ptr, DOMAIN_MAX_LEN); if( NULL != (ptr=strtok(NULL, ":")) ) { cvd_bind->sock.port = atoi(ptr); } else { log_err("Configure file lost connect port configuration\n"); return -4; } } else { log_err("Configure file lost connect host configuration\n"); return -5; } } log_nrml("Bind tunnel serial[%s] <==> socket[%s:%d]\n", cvd_bind->comport_dev, cvd_bind->sock.host, cvd_bind->sock.port); } return 0; }