/[projects]/smsdaemon/daemon.cpp
ViewVC logotype

Diff of /smsdaemon/daemon.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 153 by torben, Mon Dec 8 13:14:55 2008 UTC revision 325 by torben, Wed Sep 16 16:37:34 2009 UTC
# Line 4  Line 4 
4  #include <fcntl.h>  #include <fcntl.h>
5  #include <stdlib.h>  #include <stdlib.h>
6  #include <cstring>  #include <cstring>
7    #include <cstdio>
8    
9  #include <sys/types.h>  #include <sys/types.h>
10  #include <pwd.h>  #include <pwd.h>
# Line 12  Line 13 
13    
14  #include "ConfigFile.h"  #include "ConfigFile.h"
15  #include "daemon.h"  #include "daemon.h"
16  #include "common.h"  #include "Common.h"
17    #include "Logger.h"
18    
19    
20    
# Line 24  void signal_handler(int sig) Line 26  void signal_handler(int sig)
26          switch (sig)          switch (sig)
27          {          {
28          case SIGHUP:          case SIGHUP:
29                  Common::instance()->logMessage("hangup signal catched");                  Logger::logMessage("Reload config");
30                    Common::instance()->reloadConfig = true;
31    
32                  break;                  break;
33    
34          case SIGTERM:          case SIGTERM:
35                  Common::instance()->logMessage("terminate signal catched...exiting");                  Logger::logMessage("terminate signal catched...exiting");
36                  Common::instance()->mainContinue = false;                  Common::instance()->mainContinue = false;
37                  break;                  break;
38          default:          default:
39                  std::stringstream ss;                  std::stringstream ss;
40                  ss << "Received unknown signal: " << sig;                  ss << "Received unknown signal: " << sig;
41                  Common::instance()->logMessage(ss.str());                  Logger::logMessage(ss.str());
42                  break;                  break;
43          }          }
44  }  }
# Line 43  void lookup_uid_values() Line 47  void lookup_uid_values()
47  {  {
48          Common* cmn = Common::instance();          Common* cmn = Common::instance();
49    
50          std::string userstr = cmn->GetConfigfile()->GetValue("smsdaemon","user");          std::string userstr = cmn->GetConfigfile()->GetValue("smsdaemon","user","");
51          std::string groupstr = cmn->GetConfigfile()->GetValue("smsdaemon","group");          std::string groupstr = cmn->GetConfigfile()->GetValue("smsdaemon","group","");
52    
53          passwd* pass = getpwnam(userstr.c_str());          passwd* pass = getpwnam(userstr.c_str());
54          if (pass != 0)          if (pass != 0)
# Line 53  void lookup_uid_values() Line 57  void lookup_uid_values()
57          }          }
58          else          else
59          {          {
60                  cmn->logMessage( string("could not lookup userid: ") + userstr );                  Logger::logMessage( string("could not lookup userid: ") + userstr );
61                  exit(1);                  exit(1);
62          }          }
63    
64    
65          group* grp = getgrnam(groupstr.c_str() );          group* grp = getgrnam(groupstr.c_str() );
66          if (grp != 0)          if (grp != 0)
67          {          {
# Line 64  void lookup_uid_values() Line 69  void lookup_uid_values()
69          }          }
70          else          else
71          {          {
72                  cmn->logMessage( string("could not lookup groupid: ") + groupstr );                  Logger::logMessage( string("could not lookup groupid: ") + groupstr );
73                  exit(1);                  exit(1);
74          }          }
75  }  }
# Line 72  void lookup_uid_values() Line 77  void lookup_uid_values()
77    
78  void daemonCleanup()  void daemonCleanup()
79  {  {
80          unlink( Common::instance()->pidfile.c_str() );          Common* cmn = Common::instance();
81            Logger::logMessage("Cleaning up daemon");
82    
83            seteuid(0);
84            setegid(0);
85            unlink( cmn->pidfile.c_str() );
86    
87  }  }
88    
89  void daemonize()  void daemonize()
# Line 128  void daemonize() Line 139  void daemonize()
139          signal(SIGTTIN, SIG_IGN);          signal(SIGTTIN, SIG_IGN);
140          signal(SIGHUP, signal_handler); /* catch hangup signal */          signal(SIGHUP, signal_handler); /* catch hangup signal */
141          signal(SIGTERM, signal_handler); /* catch kill signal */          signal(SIGTERM, signal_handler); /* catch kill signal */
142            signal(SIGINT, signal_handler); /* keyboard interrupt */
143            signal(SIGQUIT, signal_handler); /* QUIT */
144    
145          /*this program is now a daemon*/          /*this program is now a daemon*/
146          setegid( cmn->gid );          setegid( cmn->gid );

Legend:
Removed from v.153  
changed lines
  Added in v.325

  ViewVC Help
Powered by ViewVC 1.1.20