5 // TODO: open log-file as non-root
6 // TODO: open socket as root ?
7 // TODO: so best should be: start mediaserv as root and then drop privileges
10 // Definition of non-inline non-template functions
19 #include "Server/HTTPLogger.hh"
20 #include "Server/SimpleHTTPServer.hh"
21 #include "Socket/TCPSocketHandle.hh"
25 ///////////////////////////////cc.p////////////////////////////////////////
28 void errfail(char const * fn)
30 std::cerr << fn << ": (" << errno << ") " << strerror(errno) << "\n";
36 int main(int argc, char** argv)
39 g0dil::mediaserv::HTTPLogger logger ("log/access.log");
41 if (chdir("wwwroot") < 0) errfail("chdir");
42 if (chroot(".") < 0) errfail("chroot");
43 if (setreuid(getuid(),getuid()) < 0) errfail("setreuid");
44 satcom::lib::TCPv4ServerSocketHandle socket (argv[1]);
45 socket.blocking(false);
46 socket.protocol().reuseaddr(true);
47 g0dil::mediaserv::SimpleHTTPServer server (socket,logger);
48 satcom::lib::Scheduler::instance().process();
50 // catch (std::exception const & ex) {
51 // logger.failedRequest(ex.what());
54 // catch (std::exception const & ex) {
55 // std::cerr << ex.what() << "\n";
61 ///////////////////////////////cc.e////////////////////////////////////////