24 #include <baseapp/init_options.h>
25 #include <baseapp/run.h>
26 #include <utils/system/argparser.h>
49 default_plugin_ = strdup(
"default");
50 has_net_tcp_port_ =
false;
55 has_net_service_name_ =
false;
56 net_service_name_ = NULL;
57 has_username_ =
false;
59 has_groupname_ =
false;
63 daemon_pid_file_ = NULL;
64 daemonize_kill_ =
false;
65 daemonize_status_ =
false;
68 default_signal_handlers_ =
true;
69 init_plugin_cache_ =
true;
70 has_load_plugin_list_ =
false;
71 load_plugin_list_ = NULL;
80 basename_ = strdup(options.basename_);
81 default_plugin_ = strdup(options.default_plugin_);
83 has_net_tcp_port_ = options.has_net_tcp_port_;
84 if (has_net_tcp_port_) {
85 net_tcp_port_ = options.net_tcp_port_;
88 has_loggers_ = options.has_loggers_;
90 loggers_ = strdup(options.loggers_);
93 log_level_ = options.log_level_;
95 net_service_name_ = NULL;
96 has_net_service_name_ = options.has_net_service_name_;
97 if (has_net_service_name_) {
98 net_service_name_ = strdup(options.net_service_name_);
102 has_username_ = options.has_username_;
104 username_ = strdup(options.username_);
107 has_groupname_ = options.has_groupname_;
108 if (has_groupname_) {
109 groupname_ = strdup(options.groupname_);
113 if (options.config_file_) {
114 config_file_ = strdup(options.config_file_);
116 daemonize_ = options.daemonize_;
117 daemon_pid_file_ = NULL;
118 if (daemonize_ && options.daemon_pid_file_) {
119 daemon_pid_file_ = strdup(options.daemon_pid_file_);
121 daemonize_kill_ = options.daemonize_kill_;
122 daemonize_status_ = options.daemonize_status_;
123 show_help_ = options.show_help_;
124 bb_cleanup_ = options.bb_cleanup_;
125 default_signal_handlers_ = options.default_signal_handlers_;
126 init_plugin_cache_ = options.init_plugin_cache_;
127 load_plugin_list_ = NULL;
128 has_load_plugin_list_ = options.has_load_plugin_list_;
129 if (has_load_plugin_list_) {
130 load_plugin_list_ = strdup(options.load_plugin_list_);
133 plugin_module_flags_ = options.plugin_module_flags_;
143 option long_options[] = {{
"net-service-name", 1, 0, 0}, {0, 0, 0, 0}};
145 fawkes::runtime::argument_parser =
146 new ArgumentParser(argc, argv,
"hCc:dq::l:L:p:P:u:g:D::ks", long_options);
151 default_plugin_ = strdup(
"default");
153 has_net_tcp_port_ = argp->
has_arg(
"P");
154 if (has_net_tcp_port_) {
157 has_loggers_ = argp->
has_arg(
"L");
159 loggers_ = strdup(argp->
arg(
"L"));
166 }
else if (argp->
has_arg(
"q")) {
168 if ((tmp = argp->
arg(
"q")) != NULL) {
169 for (
unsigned int i = 0; i < strlen(tmp); ++i) {
171 switch (log_level_) {
180 }
else if ((tmp = argp->
arg(
"l")) != NULL) {
181 if (strcmp(tmp,
"debug") == 0) {
183 }
else if (strcmp(tmp,
"info") == 0) {
185 }
else if (strcmp(tmp,
"warn") == 0) {
187 }
else if (strcmp(tmp,
"error") == 0) {
189 }
else if (strcmp(tmp,
"none") == 0) {
194 has_net_service_name_ = argp->
has_arg(
"net-service-name");
195 if (has_net_service_name_) {
196 net_service_name_ = strdup(argp->
arg(
"net-service-name"));
198 net_service_name_ = NULL;
201 has_username_ = argp->
has_arg(
"u");
203 username_ = strdup(argp->
arg(
"u"));
208 has_groupname_ = argp->
has_arg(
"u");
209 if (has_groupname_) {
210 groupname_ = strdup(argp->
arg(
"u"));
216 if (argp->
arg(
"c")) {
217 config_file_ = strdup(argp->
arg(
"c"));
220 daemonize_ = argp->
has_arg(
"D");
221 daemonize_kill_ = daemonize_ && argp->
has_arg(
"k");
222 daemonize_status_ = daemonize_ && argp->
has_arg(
"s");
223 daemon_pid_file_ = NULL;
224 if (daemonize_ && argp->
arg(
"D")) {
225 daemon_pid_file_ = strdup(argp->
arg(
"D"));
227 daemon_pid_file_ = NULL;
229 show_help_ = argp->
has_arg(
"h");
230 bb_cleanup_ = argp->
has_arg(
"C");
233 if (has_load_plugin_list_) {
235 for (uint i = 0; i < argp->
items().size(); i++) {
236 len += strlen(argp->
items()[i]);
239 len += strlen(argp->
arg(
"p") + 1);
241 char res[len + argp->
items().size()];
243 sprintf(res,
"%s,%s,", argp->
arg(
"p"), argp->
items()[0]);
244 }
else if (argp->
has_arg(
"p")) {
245 sprintf(res,
"%s", argp->
arg(
"p"));
247 sprintf(res,
"%s", argp->
items()[0]);
249 for (uint i = 1; i < argp->
items().size(); i++) {
250 char *tmp = strdup(res);
251 sprintf(res,
"%s,%s", tmp, argp->
items()[i]);
254 load_plugin_list_ = strdup(res);
256 load_plugin_list_ = NULL;
259 init_plugin_cache_ =
true;
261 default_signal_handlers_ =
true;
268 free(default_plugin_);
271 if (has_net_service_name_)
272 free(net_service_name_);
277 if (has_load_plugin_list_)
278 free(load_plugin_list_);
281 if (daemon_pid_file_)
282 free(daemon_pid_file_);
293 basename_ = strdup(options.basename_);
294 free(default_plugin_);
295 default_plugin_ = strdup(options.default_plugin_);
297 has_net_tcp_port_ = options.has_net_tcp_port_;
298 if (has_net_tcp_port_) {
299 net_tcp_port_ = options.net_tcp_port_;
302 has_loggers_ =
false;
306 has_loggers_ = options.has_loggers_;
308 loggers_ = strdup(options.loggers_);
311 log_level_ = options.log_level_;
313 if (has_net_service_name_) {
314 has_net_service_name_ =
false;
315 free(net_service_name_);
316 net_service_name_ = NULL;
318 has_net_service_name_ = options.has_net_service_name_;
319 if (has_net_service_name_) {
320 net_service_name_ = strdup(options.net_service_name_);
324 has_username_ =
false;
328 has_username_ = options.has_username_;
330 username_ = strdup(options.username_);
333 if (has_groupname_) {
334 has_groupname_ =
false;
339 has_groupname_ = options.has_groupname_;
340 if (has_groupname_) {
341 groupname_ = strdup(options.groupname_);
348 if (options.config_file_) {
349 config_file_ = strdup(options.config_file_);
352 daemonize_ = options.daemonize_;
353 if (daemon_pid_file_) {
354 free(daemon_pid_file_);
355 daemon_pid_file_ = NULL;
357 if (daemonize_ && options.daemon_pid_file_) {
358 daemon_pid_file_ = strdup(options.daemon_pid_file_);
360 daemonize_kill_ = options.daemonize_kill_;
361 daemonize_status_ = options.daemonize_status_;
362 show_help_ = options.show_help_;
363 bb_cleanup_ = options.bb_cleanup_;
365 if (load_plugin_list_) {
366 free(load_plugin_list_);
367 load_plugin_list_ = NULL;
369 has_load_plugin_list_ = options.has_load_plugin_list_;
370 if (has_load_plugin_list_) {
371 load_plugin_list_ = strdup(options.load_plugin_list_);
374 init_plugin_cache_ = options.init_plugin_cache_;
375 plugin_module_flags_ = options.plugin_module_flags_;
376 default_signal_handlers_ = options.default_signal_handlers_;
388 free(default_plugin_);
400 has_net_tcp_port_ =
true;
401 net_tcp_port_ = port;
412 if (has_net_service_name_) {
413 has_net_service_name_ =
false;
414 free(net_service_name_);
417 has_net_service_name_ =
true;
418 net_service_name_ = strdup(service_name);
437 daemon_pid_file_ = strdup(pid_file);
450 has_loggers_ =
false;
489 init_plugin_cache_ = init_cache;
501 has_username_ =
false;
505 has_username_ =
true;
518 if (has_load_plugin_list_) {
519 has_load_plugin_list_ =
false;
520 free(load_plugin_list_);
521 load_plugin_list_ = NULL;
524 has_load_plugin_list_ =
true;
525 load_plugin_list_ = strdup(plugin_list);
537 if (has_groupname_) {
538 has_groupname_ =
false;
542 has_groupname_ =
true;
583 plugin_module_flags_ = flags;
596 default_signal_handlers_ = enable;
619 return default_plugin_;
628 return has_net_tcp_port_;
637 return net_tcp_port_;
646 return has_net_service_name_;
655 return net_service_name_;
664 return has_load_plugin_list_;
673 return load_plugin_list_;
727 return init_plugin_cache_;
736 return default_signal_handlers_;
754 return daemonize_kill_;
763 return daemonize_status_;
772 return daemon_pid_file_;
781 return has_username_;
799 return has_groupname_;
826 return plugin_module_flags_;