diff options
Diffstat (limited to 'plain_tool/plain_tool.cpp')
-rw-r--r-- | plain_tool/plain_tool.cpp | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/plain_tool/plain_tool.cpp b/plain_tool/plain_tool.cpp new file mode 100644 index 0000000..a9bbfbd --- /dev/null +++ b/plain_tool/plain_tool.cpp @@ -0,0 +1,101 @@ +#include <iostream> + +#include "../datatypes.h" + +#include "../log.h" +#include "../signalController.h" + +#include "options.h" + + +// void chrootAndDrop(string const& chrootdir, string const& username) +// { +// if (getuid() != 0) +// { +// std::cerr << "this programm has to be run as root in order to run in a chroot" << std::endl; +// exit(-1); +// } + +// struct passwd *pw = getpwnam(username.c_str()); +// if(pw) { +// if(chroot(chrootdir.c_str())) +// { +// std::cerr << "can't chroot to " << chrootdir << std::endl; +// exit(-1); +// } +// std::cout << "we are in chroot jail (" << chrootdir << ") now" << std::endl; +// chdir("/"); +// if (initgroups(pw->pw_name, pw->pw_gid) || setgid(pw->pw_gid) || setuid(pw->pw_uid)) +// { +// std::cerr << "can't drop to user " << username << " " << pw->pw_uid << ":" << pw->pw_gid << std::endl; +// exit(-1); +// } +// std::cout << "dropped user to " << username << " " << pw->pw_uid << ":" << pw->pw_gid << std::endl; +// } +// else +// { +// std::cerr << "unknown user " << username << std::endl; +// exit(-1); +// } +// } + +// void daemonize() +// { +// pid_t pid; + +// pid = fork(); +// if(pid) exit(0); +// setsid(); +// pid = fork(); +// if(pid) exit(0); + +// std::cout << "running in background now..." << std::endl; + +// int fd; +// for (fd=getdtablesize();fd>=0;--fd) // close all file descriptors +// close(fd); +// fd=open("/dev/null",O_RDWR); // stdin +// dup(fd); // stdout +// dup(fd); // stderr +// umask(027); +// } + + +int main(int argc, char* argv[]) +{ + std::cout << "plain_tool" << std::endl; + if(!gOpt.parse(argc, argv)) + { + gOpt.printUsage(); + exit(-1); + } + +// if(gOpt.chroot) +// chrootAndDrop(gOpt.getChrootDir, gOpt.getUsername); +// if(testSetPid(gOpt.pidFilename)) +// { +// std::cout << "exiting..." << std::endl; +// return -1; +// } +// if(gOpt.daemonize) +// daemonize(gOpt.pidFilename); + + + cLog.msg(Log::PRIO_NOTICE) << "plain_tool started..."; + + SignalController sig; + sig.init(); + +// pthread_t senderThread; +// pthread_create(&senderThread, NULL, sender, &p); +// pthread_detach(senderThread); + + + + + int ret = sig.run(); + + + return ret; +} + |