X-Git-Url: https://git.rvb.name/vpproxy.git/blobdiff_plain/c2d718aaa1c9aed7893892bf0b98e5f1b6e4336f..1074f7e8729c2ff065d73960c5450c9356c2fd11:/vphttp.py?ds=sidebyside diff --git a/vphttp.py b/vphttp.py index 5237f21..bda3485 100644 --- a/vphttp.py +++ b/vphttp.py @@ -9,8 +9,9 @@ import traceback import gevent import gevent.monkey # Monkeypatching and all the stuff - gevent.monkey.patch_all() +# Startup delay for daemon restart +gevent.sleep(5) import glob import os import signal @@ -163,7 +164,7 @@ class HTTPHandler(BaseHTTPServer.BaseHTTPRequestHandler): self.reqtype = self.splittedpath[1].lower() # If first parameter is 'pid' or 'torrent' or it should be handled # by plugin - if not (self.reqtype in ('get','mp4') or self.reqtype in VPStuff.pluginshandlers): + if not (self.reqtype in ('get','mp4','ogg') or self.reqtype in VPStuff.pluginshandlers): self.dieWithError(400) # 400 Bad Request return except IndexError: @@ -186,7 +187,6 @@ class HTTPHandler(BaseHTTPServer.BaseHTTPRequestHandler): def handleRequest(self, headers_only): # Limit concurrent connections - print VPStuff.clientcounter.total if 0 < VPConfig.maxconns <= VPStuff.clientcounter.total: logger.debug("Maximum connections reached, can't serve this") self.dieWithError(503) # 503 Service Unavailable @@ -235,7 +235,10 @@ class HTTPHandler(BaseHTTPServer.BaseHTTPRequestHandler): logger.debug( "Sending fake headers for " + useragent) self.send_response(200) - self.send_header("Content-Type", "video/mpeg") + if self.reqtype=="ogg": + self.send_header("Content-Type", "video/ogg") + else: + self.send_header("Content-Type", "video/mpeg") self.end_headers() # Do not send real headers at all self.headerssent = True @@ -256,7 +259,7 @@ class HTTPHandler(BaseHTTPServer.BaseHTTPRequestHandler): else: self.vlcprefix = '' - logger.debug("Ready to start broadcast....") + logger.info("Starting broadcasting "+self.path) VPStuff.vlcclient.startBroadcast( self.vlcid, self.vlcprefix + self.path_unquoted, VPConfig.vlcmux, VPConfig.vlcpreaccess, self.reqtype) # Sleep a bit, because sometimes VLC doesn't open port in @@ -291,7 +294,12 @@ class HTTPHandler(BaseHTTPServer.BaseHTTPRequestHandler): for key in self.video.info().dict: self.send_header(key, self.video.info().dict[key]) - self.send_header("Content-Type", "video/mpeg") + + if self.reqtype=="ogg": + self.send_header("Content-Type", "video/ogg") + else: + self.send_header("Content-Type", "video/mpeg") + # End headers. Next goes video data self.end_headers() logger.debug("Headers sent") @@ -317,10 +325,12 @@ class HTTPHandler(BaseHTTPServer.BaseHTTPRequestHandler): self.dieWithError() finally: logger.debug("END REQUEST") + logger.info("Closed connection from " + self.clientip + " path " + self.path) VPStuff.clientcounter.delete(self.reqtype+'\\'+self.path_unquoted, self.clientip) if not VPStuff.clientcounter.get(self.reqtype+'\\'+self.path_unquoted): try: logger.debug("That was the last client, destroying VPClient") + logger.info("Stopping broadcasting " + self.path) VPStuff.vlcclient.stopBroadcast(self.vlcid) except: pass