-/* @(#) $Id$ */
+/* @(#) $Id: ./src/remoted/main.c, 2011/09/08 dcid Exp $
+ */
/* Copyright (C) 2009 Trend Micro Inc.
* All right reserved.
{
int i = 0,c = 0;
int uid = 0, gid = 0;
+ int debug_level = 0;
int test_config = 0,run_foreground = 0;
-
+
char *cfg = DEFAULTCPATH;
char *dir = DEFAULTDIR;
char *user = REMUSER;
char *group = GROUPGLOBAL;
-
+
/* Setting the name -- must be done ASAP */
OS_SetName(ARGV0);
-
+
while((c = getopt(argc, argv, "Vdthfu:g:c:D:")) != -1){
switch(c){
case 'V':
break;
case 'd':
nowDebug();
+ debug_level = 1;
break;
case 'f':
run_foreground = 1;
if(!optarg)
ErrorExit("%s: -g needs an argument",ARGV0);
group = optarg;
- break;
+ break;
case 't':
- test_config = 1;
+ test_config = 1;
break;
case 'c':
if (!optarg)
if(!optarg)
ErrorExit("%s: -D needs an argument",ARGV0);
dir = optarg;
+ break;
+ }
+ }
+
+ /* Check current debug_level
+ * Command line setting takes precedence
+ */
+ if (debug_level == 0)
+ {
+ /* Getting debug level */
+ debug_level = getDefine_Int("remoted", "debug", 0, 2);
+ while(debug_level != 0)
+ {
+ nowDebug();
+ debug_level--;
}
}
+
debug1(STARTED_MSG,ARGV0);
-
-
+
+
/* Return 0 if not configured */
if(RemotedConfig(cfg, &logr) < 0)
{
if(test_config)
exit(0);
-
+ if(logr.conn == NULL)
+ {
+ /* Not configured. */
+ exit(0);
+ }
+
/* Check if the user and group given are valid */
uid = Privsep_GetUser(user);
gid = Privsep_GetGroup(group);
i = getpid();
- if(!run_foreground)
+ if(!run_foreground)
{
nowDaemon();
goDaemon();
}
-
+
/* Setting new group */
if(Privsep_SetGroup(gid) < 0)
ErrorExit(SETGID_ERROR, ARGV0, group);
/* Starting the signal manipulation */
- StartSIG(ARGV0);
+ StartSIG(ARGV0);
/* Creating some randoness */
#else
srandom( time(0) + getpid()+ i);
#endif
-
+
random();
-
+
/* Start up message */
verbose(STARTUP_MSG, ARGV0, (int)getpid());
/* Really starting the program. */
- i = 0;
+ i = 0;
while(logr.conn[i] != 0)
{
/* Forking for each connection handler */
if(fork() == 0)
- {
+ {
/* On the child */
debug1("%s: DEBUG: Forking remoted: '%d'.",ARGV0, i);
HandleRemote(i, uid);