Browse Source

core: added log_name config parameter

- log_name allows to set app name to be used when printing to syslog
- useful to filter log messages when running many instance on same server
Daniel-Constantin Mierla 16 năm trước cách đây
mục cha
commit
95bf86454e
4 tập tin đã thay đổi với 9 bổ sung1 xóa
  1. 2 0
      cfg.lex
  2. 3 0
      cfg.y
  3. 1 0
      dprint.h
  4. 3 1
      main.c

+ 2 - 0
cfg.lex

@@ -281,6 +281,7 @@ DEBUG	debug
 FORK	fork
 FORK	fork
 LOGSTDERROR	log_stderror
 LOGSTDERROR	log_stderror
 LOGFACILITY	log_facility
 LOGFACILITY	log_facility
+LOGNAME		log_name
 LISTEN		listen
 LISTEN		listen
 ALIAS		alias
 ALIAS		alias
 SR_AUTO_ALIASES	auto_aliases
 SR_AUTO_ALIASES	auto_aliases
@@ -577,6 +578,7 @@ EAT_ABLE	[\ \t\b\r]
 <INITIAL>{FORK}		{ count(); yylval.strval=yytext; return FORK; }
 <INITIAL>{FORK}		{ count(); yylval.strval=yytext; return FORK; }
 <INITIAL>{LOGSTDERROR}	{ yylval.strval=yytext; return LOGSTDERROR; }
 <INITIAL>{LOGSTDERROR}	{ yylval.strval=yytext; return LOGSTDERROR; }
 <INITIAL>{LOGFACILITY}	{ yylval.strval=yytext; return LOGFACILITY; }
 <INITIAL>{LOGFACILITY}	{ yylval.strval=yytext; return LOGFACILITY; }
+<INITIAL>{LOGNAME}	{ yylval.strval=yytext; return LOGNAME; }
 <INITIAL>{LISTEN}	{ count(); yylval.strval=yytext; return LISTEN; }
 <INITIAL>{LISTEN}	{ count(); yylval.strval=yytext; return LISTEN; }
 <INITIAL>{ALIAS}	{ count(); yylval.strval=yytext; return ALIAS; }
 <INITIAL>{ALIAS}	{ count(); yylval.strval=yytext; return ALIAS; }
 <INITIAL>{SR_AUTO_ALIASES}	{ count(); yylval.strval=yytext;
 <INITIAL>{SR_AUTO_ALIASES}	{ count(); yylval.strval=yytext;

+ 3 - 0
cfg.y

@@ -345,6 +345,7 @@ static int case_check_default(struct case_stms* stms);
 %token FORK
 %token FORK
 %token LOGSTDERROR
 %token LOGSTDERROR
 %token LOGFACILITY
 %token LOGFACILITY
+%token LOGNAME
 %token LISTEN
 %token LISTEN
 %token ALIAS
 %token ALIAS
 %token SR_AUTO_ALIASES
 %token SR_AUTO_ALIASES
@@ -758,6 +759,8 @@ assign_stm:
 			default_core_cfg.log_facility=i_tmp;
 			default_core_cfg.log_facility=i_tmp;
 	}
 	}
 	| LOGFACILITY EQUAL error { yyerror("ID expected"); }
 	| LOGFACILITY EQUAL error { yyerror("ID expected"); }
+	| LOGNAME EQUAL STRING { log_name=$3; }
+	| LOGNAME EQUAL error { yyerror("string value expected"); }
 	| DNS EQUAL NUMBER   { received_dns|= ($3)?DO_DNS:0; }
 	| DNS EQUAL NUMBER   { received_dns|= ($3)?DO_DNS:0; }
 	| DNS EQUAL error { yyerror("boolean value expected"); }
 	| DNS EQUAL error { yyerror("boolean value expected"); }
 	| REV_DNS EQUAL NUMBER { received_dns|= ($3)?DO_REV_DNS:0; }
 	| REV_DNS EQUAL NUMBER { received_dns|= ($3)?DO_REV_DNS:0; }

+ 1 - 0
dprint.h

@@ -109,6 +109,7 @@ struct log_level_info {
 
 
 #define is_printable(level) (cfg_get(core, core_cfg, debug)>=(level))
 #define is_printable(level) (cfg_get(core, core_cfg, debug)>=(level))
 extern struct log_level_info log_level_info[];
 extern struct log_level_info log_level_info[];
+extern char *log_name;
 
 
 #ifndef NO_SIG_DEBUG
 #ifndef NO_SIG_DEBUG
 /* protection against "simultaneous" printing from signal handlers */
 /* protection against "simultaneous" printing from signal handlers */

+ 3 - 1
main.c

@@ -321,6 +321,8 @@ int sig_flag = 0;              /* last signal received */
 int dont_fork = 0;
 int dont_fork = 0;
 int dont_daemonize = 0;
 int dont_daemonize = 0;
 int log_stderr = 0;
 int log_stderr = 0;
+/* set custom app name for syslog printing */
+char *log_name = 0;
 pid_t creator_pid = (pid_t) -1;
 pid_t creator_pid = (pid_t) -1;
 int config_check = 0;
 int config_check = 0;
 /* check if reply first via host==us */
 /* check if reply first via host==us */
@@ -2059,7 +2061,7 @@ try_again:
 #endif /* USE_SCTP */
 #endif /* USE_SCTP */
 	/* init_daemon? */
 	/* init_daemon? */
 	if (!dont_fork){
 	if (!dont_fork){
-		if ( daemonize(argv[0]) <0 ) goto error;
+		if ( daemonize((log_name==0)?argv[0]:log_name) <0 ) goto error;
 	}
 	}
 	if (install_sigs() != 0){
 	if (install_sigs() != 0){
 		fprintf(stderr, "ERROR: could not install the signal handlers\n");
 		fprintf(stderr, "ERROR: could not install the signal handlers\n");