📄 loadconfig.cpp
字号:
//###################################################
//#Created: LIP
//#Description: The load config file code for JunQi(four country)
//#OS : linux.
//#My QQ number: 13066543
//#My e_mail: lip94101@btamail.net.cn
//###################################################
#include <string.h>
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include "cli_loadconfig.h"
extern char user_name_str[32];
extern char user_passwd_str[16];
extern char glb_svr_ip[16];
extern int glb_svr_port;
extern char glb_self_ip[16];
extern int glb_self_port;
char MarkerStr[MAX_MARKER_STR_NUM][32] = {
"Config",
"CONFIG",
"config"
};
char KeyWordStr[MAX_KEYWORD_STR_NUM][32] = {
"SvrIP",
"SvrPort",
"UserName",
"UserPass",
"SelfIP",
"SelfPort"
};
char SymBolChr[4]={
'[', //left bracket
']', //right bracket
'=', //evaluate
'#' //remark
};
int CheckKeyStr(char *ihead,char *itail)
{
int iType;
char tmpKey[32];
iType=-1;
if(ihead!=NULL && itail!=NULL){
while((*ihead ==' '||*ihead==9) && ihead<itail) ihead++;
while((*itail ==' '||*itail==9) && itail>ihead) itail--;
if(ihead<itail && itail-ihead<32-1){
memset(tmpKey,'\0',32);
strncpy(tmpKey,ihead,itail-ihead+1);
for(int i=0;i<MAX_KEYWORD_STR_NUM;i++){
if(!strcmp(tmpKey,KeyWordStr[i])){
iType = i;
break;
}
}
}
}
return iType;
}
int CheckLineType(char *lineBuf)
{
char *itailReturn,*iheadReturn,*iremarkReturn,*ievaluateReturn;//查找字符的指针
int iLineType,iKeyStrType;
iLineType = -1;
iremarkReturn=strchr(lineBuf,SymBolChr[REMARK_FLAG]);
if(iremarkReturn == lineBuf){
iLineType =REMARK_LINE;
}
else{
iheadReturn=strchr(lineBuf,SymBolChr[LEFT_BRACKET_FLAG]);
itailReturn=strchr(lineBuf,SymBolChr[RIGHT_BRACKET_FLAG]);
if((iheadReturn < itailReturn) &&
((iremarkReturn >itailReturn)||(iremarkReturn==NULL))){
iLineType = MARKER_LINE;
}
else if(((iheadReturn==NULL) && (itailReturn==NULL))
||(iheadReturn>iremarkReturn && itailReturn >iremarkReturn)){
ievaluateReturn=strchr(lineBuf,SymBolChr[EVALUATE_FLAG]);
if((iremarkReturn==NULL || ievaluateReturn<iremarkReturn)
&& ievaluateReturn!=NULL){
iKeyStrType=CheckKeyStr(lineBuf,ievaluateReturn-1);
if(iKeyStrType==-1){
iLineType = NOKEY_EVALUATE_LINE;
}
else{
iLineType = KEYWORD_EVALUATE_LINE;
}
}
}
}
return iLineType;
}
int GetMarker(char *lineBuf)
{
char *iheadReturn,*itailReturn,*iremarkReturn;
char tmpMarkerKey[32];
int iMarker;
iMarker = -1;
iremarkReturn=strchr(lineBuf,SymBolChr[REMARK_FLAG]);
iheadReturn=strchr(lineBuf,SymBolChr[LEFT_BRACKET_FLAG]);
itailReturn=strchr(lineBuf,SymBolChr[RIGHT_BRACKET_FLAG]);
if((iheadReturn < itailReturn) &&
((iremarkReturn >itailReturn)||(iremarkReturn==NULL))){
iheadReturn++;
itailReturn--;
while((*iheadReturn==' '||*iheadReturn==9) && iheadReturn<itailReturn) iheadReturn++;
while((*itailReturn==' '||*itailReturn==9) && itailReturn>iheadReturn) itailReturn--;
if(iheadReturn<itailReturn && itailReturn-iheadReturn<32-1){
memset(tmpMarkerKey,'\0',32);
strncpy(tmpMarkerKey,iheadReturn,itailReturn-iheadReturn+1);
for(int i=0;i<MAX_MARKER_STR_NUM;i++){
if(!strcmp(tmpMarkerKey,MarkerStr[i])){
iMarker = i;
break;
}
}
}
}
return iMarker;
}
int DoMS3_KE(char *lineBuf)
{
int iret;
int iKeyType;
char myIP[32];
char usr_str[32];
int myPort;
char *ievaluate;
ievaluate=strchr(lineBuf,SymBolChr[EVALUATE_FLAG]);
if(ievaluate>0){
iKeyType=CheckKeyStr(lineBuf,ievaluate-1);
iret=0;
switch(iKeyType){
case KEYWORD_STR1:
sscanf(ievaluate+1,"%s",myIP);
memset(glb_svr_ip,0,sizeof(glb_svr_ip));
strncpy(glb_svr_ip,myIP,16);
printf("LoadData the Svr_IP is %s\n",myIP);
break;
case KEYWORD_STR2:
sscanf(ievaluate+1,"%d",&myPort);
glb_svr_port = 0;
glb_svr_port = myPort;
printf("LoadData the svr_port is %d\n",myPort);
break;
case KEYWORD_STR3:
sscanf(ievaluate+1,"%s",usr_str);
memset(user_name_str,0,sizeof(user_name_str));
strncpy(user_name_str,usr_str,32);
printf("LoadData the user name is %s\n",usr_str);
break;
case KEYWORD_STR4:
sscanf(ievaluate+1,"%s",usr_str);
memset(user_passwd_str,0,sizeof(user_passwd_str));
strncpy(user_passwd_str,usr_str,16);
printf("LoadData the user passwd is %s\n",usr_str);
break;
case KEYWORD_STR5:
sscanf(ievaluate+1,"%s",myIP);
memset(glb_self_ip,0,sizeof(glb_self_ip));
strncpy(glb_self_ip,myIP,16);
printf("LoadData the Self_IP is %s\n",myIP);
break;
case KEYWORD_STR6:
sscanf(ievaluate+1,"%d",&myPort);
glb_self_port = 0;
glb_self_port = myPort;
printf("LoadData the Self_port is %d\n",myPort);
break;
default:
break;
}
}
else {
iret=-1;
}
return iret;
}
int LoadConfig(char *filename)
{
FILE *file;
char lineBuf[256];
int ilinecount;
int iError;
int iLineType;
int iCurMarker;
file = fopen(filename,"r");
if(file ==NULL){
printf("LoadConfig error!! file not found!\n");
return -1;
}
ilinecount=0;
iError=0;
iCurMarker=-1;
for(;!feof(file) && iError==0;) {
memset(lineBuf,'\0',256);
fgets((char *)lineBuf,256,file);
ilinecount++;
iLineType=CheckLineType(lineBuf);
switch(iLineType){
case REMARK_LINE:
break;
case MARKER_LINE:
iCurMarker=GetMarker(lineBuf);
break;
case KEYWORD_EVALUATE_LINE:
switch(iCurMarker){
case MARKER_STR1:
case MARKER_STR2:
case MARKER_STR3:
if(DoMS3_KE(lineBuf)<0) iError=1;
break;
default:
break;
}
break;
case NOKEY_EVALUATE_LINE:
break;
default:
break;
}
}//end of for,the file eof or error
fclose(file);
if(iError) return -1*iError;
else
return 0;
}
/*
int WriteBackConfig(char *filename)
{
FILE *file;
int ilinecount;
char trueStr[]="TRUE";
char falseStr[]="FALSE";
file = fopen(filename,"w");
if(file ==NULL){
printf("WriteBackConfig error!! file not found!\n");
return -1;
}
fprintf(file,"[Config]\n");
fprintf(file,"OpenCAIP = %s #This the Openca server IP.\n",pData->openca_IP);
fprintf(file,"OutNetIP = %s #This the OutNetIP IP.\n",pData->out_listen_IP);
fprintf(file,"InNetIP = %s #This the OutNetIP IP.\n",pData->in_listen_IP);
fprintf(file,"FarManagerPort = %d #This the FarManagerPort server port.\n",pData->FarManagerPort);
fprintf(file,"RTP_MinPort = %d #This the RTP_MinPort.\n",pData->RTP_MinPort);
fprintf(file,"RTP_MaxPort = %d #This the RTP_MaxPort.\n",pData->RTP_MaxPort);
fprintf(file,"\n");
fprintf(file,"[Flag]\n");
fprintf(file,"LogLevel = %d #The LogLevel.\n",pData->LogLevel);
fprintf(file,"LogPath = %s #This LogPath.\n",pData->LogPath);
fprintf(file,"LogFileSize = %d #The LogFileSize.\n",pData->LogFileSize);
fprintf(file,"\n");
fclose(file);
}
*/
/*
void main()
{
LoadConfig("/home/oscvmna/config/config.txt");
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -