From 3c1655322d95c0e3f804cecbe8028303b1607f34 Mon Sep 17 00:00:00 2001 From: Anders Kaseorg Date: Fri, 10 Nov 2017 05:18:32 -0500 Subject: [PATCH] Do not use base except: clauses https://docs.python.org/2/howto/doanddont.html#except Signed-off-by: Anders Kaseorg --- tests/echo.py | 4 ++-- tests/echo_client.py | 5 ++--- tests/load.py | 8 ++++---- websockify/auth_plugins.py | 9 +-------- websockify/token_plugins.py | 2 +- websockify/websocket.py | 8 +++++--- websockify/websocketproxy.py | 34 ++++++++++++++++++++++------------ websockify/websocketserver.py | 6 ++++-- websockify/websockifyserver.py | 7 +++++-- 9 files changed, 46 insertions(+), 37 deletions(-) diff --git a/tests/echo.py b/tests/echo.py index 4e0f045..780891c 100755 --- a/tests/echo.py +++ b/tests/echo.py @@ -63,9 +63,9 @@ if __name__ == '__main__': (opts, args) = parser.parse_args() try: - if len(args) != 1: raise + if len(args) != 1: raise ValueError opts.listen_port = int(args[0]) - except: + except ValueError: parser.error("Invalid arguments") logging.basicConfig(level=logging.INFO) diff --git a/tests/echo_client.py b/tests/echo_client.py index 6d745ec..4f238f6 100755 --- a/tests/echo_client.py +++ b/tests/echo_client.py @@ -12,10 +12,9 @@ from websockify.websocket import WebSocket, \ parser = optparse.OptionParser(usage="%prog URL") (opts, args) = parser.parse_args() -try: - if len(args) != 1: raise +if len(args) == 1: URL = args[0] -except: +else: parser.error("Invalid arguments") sock = WebSocket() diff --git a/tests/load.py b/tests/load.py index bf2c9ae..710b593 100755 --- a/tests/load.py +++ b/tests/load.py @@ -105,7 +105,7 @@ class WebSocketLoad(WebSockifyRequestHandler): cnt = int(cnt) length = int(length) chksum = int(chksum) - except: + except ValueError: print "\n" + repr(data) + "" err += "Invalid data format\n" continue @@ -148,16 +148,16 @@ if __name__ == '__main__': (opts, args) = parser.parse_args() try: - if len(args) != 1: raise + if len(args) != 1: raise ValueError opts.listen_port = int(args[0]) - if len(args) not in [1,2]: raise + if len(args) not in [1,2]: raise ValueError opts.listen_port = int(args[0]) if len(args) == 2: opts.delay = int(args[1]) else: opts.delay = 10 - except: + except ValueError: parser.error("Invalid arguments") logging.basicConfig(level=logging.INFO) diff --git a/websockify/auth_plugins.py b/websockify/auth_plugins.py index 8ce60f2..7ed3c2a 100644 --- a/websockify/auth_plugins.py +++ b/websockify/auth_plugins.py @@ -92,12 +92,5 @@ class ClientCertCNAuth(object): self.source = src.split() def authenticate(self, headers, target_host, target_port): - try: - if (headers.get('SSL_CLIENT_S_DN_CN') not in self.source): - raise AuthenticationError(response_code=403) - except AuthenticationError: - # re-raise AuthenticationError (raised by common name not in configured source list) - raise - except: - # deny access in case any error occurs (i.e. no data provided) + if headers.get('SSL_CLIENT_S_DN_CN', None) not in self.source: raise AuthenticationError(response_code=403) diff --git a/websockify/token_plugins.py b/websockify/token_plugins.py index fb3629f..e87dcd0 100644 --- a/websockify/token_plugins.py +++ b/websockify/token_plugins.py @@ -32,7 +32,7 @@ class ReadOnlyTokenFile(BasePlugin): try: tok, target = line.split(': ') self._targets[tok] = target.strip().rsplit(':', 1) - except: + except ValueError: print >>sys.stderr, "Syntax error in %s on line %d" % (self.source, index) index += 1 diff --git a/websockify/websocket.py b/websockify/websocket.py index a94c7cc..49e60b6 100644 --- a/websockify/websocket.py +++ b/websockify/websocket.py @@ -31,8 +31,10 @@ except ImportError: numpy = None # python 3.0 differences -try: from urllib.parse import urlparse -except: from urlparse import urlparse +try: + from urllib.parse import urlparse +except ImportError: + from urlparse import urlparse # SSLWant*Error is 2.7.9+ try: @@ -40,7 +42,7 @@ try: pass class WebSocketWantWriteError(ssl.SSLWantWriteError): pass -except: +except AttributeError: class WebSocketWantReadError(OSError): def __init__(self): OSError.__init__(self, errno.EWOULDBLOCK) diff --git a/websockify/websocketproxy.py b/websockify/websocketproxy.py index 52da186..6c17c10 100644 --- a/websockify/websocketproxy.py +++ b/websockify/websocketproxy.py @@ -12,16 +12,22 @@ as taken from http://docs.python.org/dev/library/ssl.html#certificates ''' import signal, socket, optparse, time, os, sys, subprocess, logging, errno -try: from socketserver import ForkingMixIn -except: from SocketServer import ForkingMixIn -try: from http.server import HTTPServer -except: from BaseHTTPServer import HTTPServer +try: + from socketserver import ForkingMixIn +except ImportError: + from SocketServer import ForkingMixIn + +try: + from http.server import HTTPServer +except ImportError: + from BaseHTTPServer import HTTPServer + import select from websockify import websockifyserver from websockify import auth_plugins as auth try: from urllib.parse import parse_qs, urlparse -except: +except ImportError: from cgi import parse_qs from urlparse import urlparse @@ -70,7 +76,7 @@ Traffic Legend: client_cert_subject = dict([x[0] for x in client_cert_subject]) # add common name to headers (apache +StdEnvVars style) self.headers['SSL_CLIENT_S_DN_CN'] = client_cert_subject['commonName'] - except: + except (TypeError, AttributeError, KeyError): # not a SSL connection or client presented no certificate with valid data pass @@ -117,14 +123,13 @@ Traffic Legend: # Start proxying try: self.do_proxy(tsock) - except: + finally: if tsock: tsock.shutdown(socket.SHUT_RDWR) tsock.close() if self.verbose: self.log_message("%s:%s: Closed target", self.server.target_host, self.server.target_port) - raise def get_target(self, target_plugin, path): """ @@ -509,8 +514,10 @@ def websockify_init(): else: opts.listen_host, opts.listen_port = '', arg - try: opts.listen_port = int(opts.listen_port) - except: parser.error("Error parsing listen port") + try: + opts.listen_port = int(opts.listen_port) + except ValueError: + parser.error("Error parsing listen port") del opts.inetd @@ -526,8 +533,11 @@ def websockify_init(): opts.target_host = opts.target_host.strip('[]') else: parser.error("Error parsing target") - try: opts.target_port = int(opts.target_port) - except: parser.error("Error parsing target port") + + try: + opts.target_port = int(opts.target_port) + except ValueError: + parser.error("Error parsing target port") if len(args) > 0 and opts.wrap_cmd == None: parser.error("Too many arguments") diff --git a/websockify/websocketserver.py b/websockify/websocketserver.py index e6b6684..6d4824a 100644 --- a/websockify/websocketserver.py +++ b/websockify/websocketserver.py @@ -10,8 +10,10 @@ Licensed under LGPL version 3 (see docs/LICENSE.LGPL-3) import sys # python 3.0 differences -try: from http.server import BaseHTTPRequestHandler, HTTPServer -except: from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer +try: + from http.server import BaseHTTPRequestHandler, HTTPServer +except ImportError: + from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer from websockify.websocket import WebSocket, WebSocketWantReadError, WebSocketWantWriteError diff --git a/websockify/websockifyserver.py b/websockify/websockifyserver.py index efc3b93..a531cb4 100644 --- a/websockify/websockifyserver.py +++ b/websockify/websockifyserver.py @@ -22,8 +22,11 @@ if sys.hexversion > 0x3000000: s2b = lambda s: s.encode('latin_1') else: s2b = lambda s: s # No-op -try: from http.server import SimpleHTTPRequestHandler -except: from SimpleHTTPServer import SimpleHTTPRequestHandler + +try: + from http.server import SimpleHTTPRequestHandler +except ImportError: + from SimpleHTTPServer import SimpleHTTPRequestHandler # Degraded functionality if these imports are missing for mod, msg in [('ssl', 'TLS/SSL/wss is disabled'),