projects
/
vpproxy.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
fd65e8e
)
Корректная обработка ошибок при неправильном имени канала.
author
Roman Bazalevsky
<rvb@rvb.name>
Mon, 2 Nov 2015 12:33:20 +0000
(15:33 +0300)
committer
Roman Bazalevsky
<rvb@rvb.name>
Mon, 2 Nov 2015 12:33:20 +0000
(15:33 +0300)
plugins/m3u_plugin.py
patch
|
blob
|
history
diff --git
a/plugins/m3u_plugin.py
b/plugins/m3u_plugin.py
index 1bb6483b34866e0aee5823625d94a22166cd7c9f..4d806fac9643d1271266febf11e6df255b031e03 100644
(file)
--- a/
plugins/m3u_plugin.py
+++ b/
plugins/m3u_plugin.py
@@
-45,6
+45,7
@@
class M3u(VPProxyPlugin):
def handle(self, connection):
def handle(self, connection):
+ logger = logging.getLogger('plugin_m3u')
hostport = connection.headers['Host']
self.splitted_path=connection.path.split('/')
hostport = connection.headers['Host']
self.splitted_path=connection.path.split('/')
@@
-61,6
+62,7
@@
class M3u(VPProxyPlugin):
None
else:
connection.dieWithError(404)
None
else:
connection.dieWithError(404)
+ return
if len(self.splitted_path)>3 and self.splitted_path[1]!="play":
connection.dieWithError()
if len(self.splitted_path)>3 and self.splitted_path[1]!="play":
connection.dieWithError()
@@
-108,6
+110,10
@@
class M3u(VPProxyPlugin):
connection.end_headers()
elif self.splitted_path[1]=="play":
channel=self.splitted_path[len(self.splitted_path)-1]
connection.end_headers()
elif self.splitted_path[1]=="play":
channel=self.splitted_path[len(self.splitted_path)-1]
+ logger.debug('channel requestes= "%s"' % channel)
+ if not channel:
+ connection.dieWithError(404)
+ return
channel=urllib.unquote(channel).decode('utf-8')
if len(self.splitted_path)<=4:
prefix="get"
channel=urllib.unquote(channel).decode('utf-8')
if len(self.splitted_path)<=4:
prefix="get"
@@
-115,10
+121,13
@@
class M3u(VPProxyPlugin):
prefix=self.splitted_path[len(self.splitted_path)-2]
if prefix not in ('get','mp4','webm'):
connection.dieWithError()
prefix=self.splitted_path[len(self.splitted_path)-2]
if prefix not in ('get','mp4','webm'):
connection.dieWithError()
+ return
else:
connection.dieWithError()
else:
connection.dieWithError()
+ return
url=None
for record in playlist:
url=None
for record in playlist:
+ if record.title:
if record.title.decode('utf-8').replace('/','')==channel:
url=record.path.decode('utf-8')
if url:
if record.title.decode('utf-8').replace('/','')==channel:
url=record.path.decode('utf-8')
if url:
@@
-127,7
+136,9
@@
class M3u(VPProxyPlugin):
connection.send_header('Location', redirect)
connection.end_headers()
else:
connection.send_header('Location', redirect)
connection.end_headers()
else:
+ logger.debug('Nothing found!')
connection.dieWithError(404)
connection.dieWithError(404)
+ return
else:
connection.send_response(200)
else:
connection.send_response(200)
@@
-144,10
+155,10
@@
class M3u(VPProxyPlugin):
connection.dieWithError()
return
connection.dieWithError()
return
+ exported = ""
+
if self.splitted_path[1]=="list":
if self.splitted_path[1]=="list":
- exported = ""
-
for record in playlist:
if record.title:
exported = exported + "" + record.title.decode('utf-8').replace('/','') + "\n"
for record in playlist:
if record.title:
exported = exported + "" + record.title.decode('utf-8').replace('/','') + "\n"
@@
-182,9
+193,9
@@
class M3u(VPProxyPlugin):
exported = playlistgen.exportm3u(hostport,prefix)
exported = playlistgen.exportm3u(hostport,prefix)
- exported = exported.encode('utf-8')
-
- connection.wfile.write(exported)
+ if exported:
+ exported = exported.encode('utf-8')
+
connection.wfile.write(exported)
def getparam(self, key):
if key in self.params:
def getparam(self, key):
if key in self.params: