plugin XEP-0065: some cleaning:

- reordered imports and removed useless try/except
- log warning before sending error
- avoid crash if connection is lost before session has has been received in server mode.
- fixed missing string formatting keywords
- renamed incorrect attribute and show explicitly that it's not used
This commit is contained in:
Goffi 2020-11-12 14:53:15 +01:00
commit 1fc6c1f66b

View file

@ -54,13 +54,11 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
from sat.core.i18n import _
from sat.core.log import getLogger
log = getLogger(__name__)
from sat.core.constants import Const as C
from sat.core import exceptions
from sat.tools import sat_defer
import struct
import hashlib
import uuid
from collections import namedtuple
from zope.interface import implementer
from twisted.internet import protocol
from twisted.internet import reactor
from twisted.internet import error as internet_error
@ -68,19 +66,15 @@ from twisted.words.protocols.jabber import error as jabber_error
from twisted.words.protocols.jabber import jid
from twisted.words.protocols.jabber import xmlstream
from twisted.internet import defer
from collections import namedtuple
import struct
import hashlib
import uuid
from zope.interface import implementer
try:
from twisted.words.protocols.xmlstream import XMPPHandler
except ImportError:
from wokkel.subprotocols import XMPPHandler
from wokkel import disco, iwokkel
from sat.core.i18n import _
from sat.core.log import getLogger
from sat.core.constants import Const as C
from sat.core import exceptions
from sat.tools import sat_defer
log = getLogger(__name__)
PLUGIN_INFO = {
@ -508,12 +502,12 @@ class SOCKSv5(protocol.Protocol):
def connectRequested(self, addr, port):
# Check that this session is expected
if not self.factory.addToSession(addr.decode('utf-8'), self):
self.sendErrorReply(REPLY_CONN_REFUSED)
log.warning(
"Unexpected connection request received from {host}".format(
host=self.transport.getPeer().host
)
)
self.sendErrorReply(REPLY_CONN_REFUSED)
return
self._session_hash = addr.decode('utf-8')
self.connectCompleted(addr, 0)
@ -592,7 +586,12 @@ class SOCKSv5(protocol.Protocol):
if self.state != STATE_READY:
self.connection.errback(reason)
if self.server_mode:
self.factory.removeFromSession(self._session_hash, self, reason)
try:
session_hash = self._session_hash
except AttributeError:
log.debug("no session has been received yet")
else:
self.factory.removeFromSession(session_hash, self, reason)
class Socks5ServerFactory(protocol.ServerFactory):
@ -822,7 +821,7 @@ class XEP_0065(object):
except jabber_error.StanzaError as failure:
log.warning(
"Error while requesting proxy info on {jid}: {error}".format(
proxy.full(), failure
jid=proxy.full(), error=failure
)
)
notFound(server)
@ -1057,7 +1056,7 @@ class XEP_0065(object):
)
candidates[candidates.index(candidate)] = None
def allTested(self):
def allTested(__):
log.debug("All candidates have been tested")
good_candidates = [c for c in candidates if c]
return good_candidates[0] if good_candidates else None
@ -1379,7 +1378,7 @@ class XEP_0065(object):
@implementer(iwokkel.IDisco)
class XEP_0065_handler(XMPPHandler):
class XEP_0065_handler(xmlstream.XMPPHandler):
def __init__(self, plugin_parent):
self.plugin_parent = plugin_parent