Finished version 0.1 of media server .. Jay !!!
[mediaserv.git] / main.cc
1 // $Id$
2 //
3 // Copyright (C) 2006 
4
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
8 // TODO: mime-db
9
10 // Definition of non-inline non-template functions
11
12 //#include "main.hh"
13 //#include "main.ih"
14
15 // Custom includes
16 #include <unistd.h>
17 #include <iostream>
18
19 #include "Server/HTTPLogger.hh"
20 #include "Server/SimpleHTTPServer.hh"
21 #include "Socket/TCPSocketHandle.hh"
22
23 //#include "main.mpp"
24 #define prefix_
25 ///////////////////////////////cc.p////////////////////////////////////////
26
27 namespace {
28     void errfail(char const * fn)
29     {
30         std::cerr << fn << ": (" << errno << ") " << strerror(errno) << "\n";
31         exit(1);
32     }
33         
34 }
35
36 int main(int argc, char** argv)
37 {
38     //try {
39         g0dil::mediaserv::HTTPLogger logger ("log/access.log");
40         //try {
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();
49 //      }
50 //      catch (std::exception const & ex) {
51 //          logger.failedRequest(ex.what());
52 //      }
53 //     }
54 //     catch (std::exception const & ex) {
55 //      std::cerr << ex.what() << "\n";
56 //      exit(1);
57 //     }
58     return 0;
59 }
60
61 ///////////////////////////////cc.e////////////////////////////////////////
62 #undef prefix_
63 //#include "main.mpp"
64
65 \f
66 // Local Variables:
67 // mode: c++
68 // End: