//
// 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;
}