Finished version 0.1 of media server .. Jay !!!
[mediaserv.git] / main.cc
diff --git a/main.cc b/main.cc
index 9922bce..5c057c7 100644 (file)
--- a/main.cc
+++ b/main.cc
@@ -2,19 +2,59 @@
 //
 // Copyright (C) 2006 
 
+// TODO: open log-file as non-root
+// TODO: open socket as root ?
+// TODO: so best should be: start mediaserv as root and then drop privileges
+// TODO: mime-db
+
 // Definition of non-inline non-template functions
 
 //#include "main.hh"
 //#include "main.ih"
 
 // Custom includes
+#include <unistd.h>
+#include <iostream>
+
+#include "Server/HTTPLogger.hh"
+#include "Server/SimpleHTTPServer.hh"
+#include "Socket/TCPSocketHandle.hh"
 
 //#include "main.mpp"
 #define prefix_
 ///////////////////////////////cc.p////////////////////////////////////////
 
+namespace {
+    void errfail(char const * fn)
+    {
+       std::cerr << fn << ": (" << errno << ") " << strerror(errno) << "\n";
+       exit(1);
+    }
+       
+}
+
 int main(int argc, char** argv)
 {
+    //try {
+       g0dil::mediaserv::HTTPLogger logger ("log/access.log");
+       //try {
+           if (chdir("wwwroot") < 0) errfail("chdir");
+           if (chroot(".") < 0) errfail("chroot");
+           if (setreuid(getuid(),getuid()) < 0) errfail("setreuid");
+           satcom::lib::TCPv4ServerSocketHandle socket (argv[1]);
+           socket.blocking(false);
+           socket.protocol().reuseaddr(true);
+           g0dil::mediaserv::SimpleHTTPServer server (socket,logger);
+           satcom::lib::Scheduler::instance().process();
+//     }
+//     catch (std::exception const & ex) {
+//         logger.failedRequest(ex.what());
+//     }
+//     }
+//     catch (std::exception const & ex) {
+//     std::cerr << ex.what() << "\n";
+//     exit(1);
+//     }
     return 0;
 }