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

Diff of /smsdaemon/daemon.cpp

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

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

Legend:
Removed from v.146  
changed lines
  Added in v.208

  ViewVC Help
Powered by ViewVC 1.1.20