Commit 784af494 authored by ibuler's avatar ibuler

[Update] 支持py2

parent a2515aac
...@@ -4,9 +4,13 @@ ...@@ -4,9 +4,13 @@
import os import os
import re import re
import socket import socket
import selectors
import telnetlib import telnetlib
try:
import selectors
except ImportError:
import selectors2 as selectors
import paramiko import paramiko
from paramiko.ssh_exception import SSHException from paramiko.ssh_exception import SSHException
...@@ -82,7 +86,7 @@ class SSHConnection: ...@@ -82,7 +86,7 @@ class SSHConnection:
password_short, key_fingerprint, password_short, key_fingerprint,
)) ))
return None, None, str(e) return None, None, str(e)
except (socket.error, TimeoutError) as e: except (socket.error, socket.timeout) as e:
return None, None, str(e) return None, None, str(e)
return ssh, sock, None return ssh, sock, None
......
# -*- coding: utf-8 -*-
#
# -*- coding: utf-8 -*-
#
import base64 import base64
import os import os
import hashlib import hashlib
......
# -*- coding: utf-8 -*-
#
import stat import stat
import threading import threading
......
...@@ -28,7 +28,7 @@ class ProxyNamespace(BaseNamespace): ...@@ -28,7 +28,7 @@ class ProxyNamespace(BaseNamespace):
... ...
} }
""" """
super().__init__(*args, **kwargs) super(BaseNamespace, self).__init__(*args, **kwargs)
self.win_size = None self.win_size = None
def new_connection(self): def new_connection(self):
......
#!/usr/bin/env python3 #!/usr/bin/env python3
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
from __future__ import unicode_literals
import socket import socket
import threading import threading
...@@ -362,7 +363,7 @@ class InteractiveServer: ...@@ -362,7 +363,7 @@ class InteractiveServer:
if not result and (result_list is self.assets_list) and self.finish and self.total_assets == 0: if not result and (result_list is self.assets_list) and self.finish and self.total_assets == 0:
# 无授权资产 # 无授权资产
return None, None return
elif not result and (result_list is self.assets_list) and self.finish: elif not result and (result_list is self.assets_list) and self.finish:
# 上一页是最后一页 # 上一页是最后一页
...@@ -383,7 +384,7 @@ class InteractiveServer: ...@@ -383,7 +384,7 @@ class InteractiveServer:
action = yield (page, result) action = yield (page, result)
if action == BACK: if action == BACK:
return None, None return
elif action == PAGE_UP: elif action == PAGE_UP:
if page <= 1: if page <= 1:
# 已经是第一页了 # 已经是第一页了
......
...@@ -8,14 +8,14 @@ from .service import app_service ...@@ -8,14 +8,14 @@ from .service import app_service
from .struct import SizedList, SelectEvent from .struct import SizedList, SelectEvent
from .utils import wrap_with_line_feed as wr, wrap_with_warning as warning, \ from .utils import wrap_with_line_feed as wr, wrap_with_warning as warning, \
ugettext as _ ugettext as _
from . import char from . import char, utils
from . import utils from .compat import str
BUF_SIZE = 4096 BUF_SIZE = 4096
logger = utils.get_logger(__file__) logger = utils.get_logger(__file__)
class Connection: class Connection(object):
connections = {} connections = {}
clients_num = 0 clients_num = 0
...@@ -88,7 +88,7 @@ class Connection: ...@@ -88,7 +88,7 @@ class Connection:
return cls.connections.get(cid) return cls.connections.get(cid)
class Request: class Request(object):
def __init__(self): def __init__(self):
self.type = None self.type = None
self.x11 = None self.x11 = None
...@@ -96,7 +96,7 @@ class Request: ...@@ -96,7 +96,7 @@ class Request:
self.meta = {'env': {}} self.meta = {'env': {}}
class Client: class Client(object):
""" """
Client is the request client. Nothing more to say Client is the request client. Nothing more to say
...@@ -143,12 +143,12 @@ class Client: ...@@ -143,12 +143,12 @@ class Client:
return "<%s from %s:%s>" % (self.user, self.addr[0], self.addr[1]) return "<%s from %s:%s>" % (self.user, self.addr[0], self.addr[1])
class ServerFilter: class ServerFilter(object):
def run(self, data): def run(self, data):
pass pass
class BaseServer: class BaseServer(object):
""" """
Base Server Base Server
Achieve command record Achieve command record
...@@ -383,7 +383,7 @@ class Server(BaseServer): ...@@ -383,7 +383,7 @@ class Server(BaseServer):
self.sock.transport.close() self.sock.transport.close()
class WSProxy: class WSProxy(object):
def __init__(self, ws, client_id): def __init__(self, ws, client_id):
self.ws = ws self.ws = ws
self.client_id = client_id self.client_id = client_id
......
...@@ -21,12 +21,12 @@ logger = get_logger(__file__) ...@@ -21,12 +21,12 @@ logger = get_logger(__file__)
BUF_SIZE = 1024 BUF_SIZE = 1024
class ReplayRecorder(metaclass=abc.ABCMeta): class ReplayRecorder(object):
time_start = None time_start = None
storage = None storage = None
def __init__(self): def __init__(self):
super().__init__() super(ReplayRecorder, self).__init__()
self.file = None self.file = None
self.file_path = None self.file_path = None
self.get_storage() self.get_storage()
...@@ -110,14 +110,23 @@ class ReplayRecorder(metaclass=abc.ABCMeta): ...@@ -110,14 +110,23 @@ class ReplayRecorder(metaclass=abc.ABCMeta):
return self.finish_replay(times - 1, session_id) return self.finish_replay(times - 1, session_id)
class CommandRecorder(metaclass=Singleton): class CommandRecorder(object):
batch_size = 10 batch_size = 10
timeout = 5 timeout = 5
no = 0 no = 0
storage = None storage = None
_cache = []
def __new__(cls, *args, **kwargs):
if cls._cache:
return cls._cache[0]
else:
self = super(CommandRecorder, cls).__new__(cls, *args, **kwargs)
cls._cache.append(self)
return self
def __init__(self): def __init__(self):
super().__init__() super(CommandRecorder, self).__init__()
self.queue = MemoryQueue() self.queue = MemoryQueue()
self.stop_evt = threading.Event() self.stop_evt = threading.Event()
self.push_to_server_async() self.push_to_server_async()
......
...@@ -3,9 +3,13 @@ ...@@ -3,9 +3,13 @@
# #
import uuid import uuid
import datetime import datetime
import selectors
import time import time
try:
import selectors
except ImportError:
import selectors2 as selectors
from .utils import get_logger, wrap_with_warning as warn, \ from .utils import get_logger, wrap_with_warning as warn, \
wrap_with_line_feed as wr, ugettext as _, ignore_error wrap_with_line_feed as wr, ugettext as _, ignore_error
from .service import app_service from .service import app_service
......
...@@ -144,7 +144,7 @@ class SFTPServer(paramiko.SFTPServerInterface): ...@@ -144,7 +144,7 @@ class SFTPServer(paramiko.SFTPServerInterface):
if len(data) == 1 and not data[0]: if len(data) == 1 and not data[0]:
return request return request
host, *path = data host, path = data[0], data[1:]
request["host"] = host request["host"] = host
unique, su = self.host_has_unique_su(host) unique, su = self.host_has_unique_su(host)
if unique: if unique:
......
...@@ -112,7 +112,7 @@ class SSHServer: ...@@ -112,7 +112,7 @@ class SSHServer:
logger.info("Request type `{}:{}`, dispatch to interactive mode".format(kind, chan_type)) logger.info("Request type `{}:{}`, dispatch to interactive mode".format(kind, chan_type))
try: try:
InteractiveServer(client).interact() InteractiveServer(client).interact()
except Exception as e: except IndexError as e:
logger.error("Unexpected error occur: {}".format(e)) logger.error("Unexpected error occur: {}".format(e))
connection = Connection.get_connection(client.connection_id) connection = Connection.get_connection(client.connection_id)
connection.remove_client(client.id) connection.remove_client(client.id)
......
...@@ -21,7 +21,7 @@ class MultiQueueMixin: ...@@ -21,7 +21,7 @@ class MultiQueueMixin:
self.put(i) self.put(i)
class MemoryQueue(MultiQueueMixin, queue.Queue): class MemoryQueue(MultiQueueMixin, queue.Queue, object):
pass pass
...@@ -29,11 +29,11 @@ class SizedList(list): ...@@ -29,11 +29,11 @@ class SizedList(list):
def __init__(self, maxsize=0): def __init__(self, maxsize=0):
self.maxsize = maxsize self.maxsize = maxsize
self.size = 0 self.size = 0
super().__init__() super(list, self).__init__()
def append(self, b): def append(self, b):
if self.maxsize == 0 or self.size < self.maxsize: if self.maxsize == 0 or self.size < self.maxsize:
super().append(b) super(SizedList, self).append(b)
self.size += len(b) self.size += len(b)
def clean(self): def clean(self):
......
...@@ -12,7 +12,6 @@ from io import StringIO ...@@ -12,7 +12,6 @@ from io import StringIO
from binascii import hexlify from binascii import hexlify
from werkzeug.local import Local, LocalProxy from werkzeug.local import Local, LocalProxy
from functools import partial, wraps from functools import partial, wraps
import builtins
import paramiko import paramiko
import pyte import pyte
...@@ -431,11 +430,17 @@ def get_current_lang(attr): ...@@ -431,11 +430,17 @@ def get_current_lang(attr):
def _gettext(lang): def _gettext(lang):
import builtins
if lang == 'en': if lang == 'en':
trans_en.install() trans_en.install()
else: else:
trans_zh.install() trans_zh.install()
return builtins.__dict__['_'] try:
return builtins.__dict__['_']
except KeyError:
def _f(x):
return x
return _f
def _find(attr): def _find(attr):
......
...@@ -2,10 +2,10 @@ ...@@ -2,10 +2,10 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
# #
import eventlet #import eventlet
from eventlet.debug import hub_prevent_multiple_readers #from eventlet.debug import hub_prevent_multiple_readers
eventlet.monkey_patch() #eventlet.monkey_patch()
hub_prevent_multiple_readers(False) #hub_prevent_multiple_readers(False)
import os import os
import sys import sys
...@@ -15,7 +15,8 @@ import signal ...@@ -15,7 +15,8 @@ import signal
dirs = ('logs', 'keys') dirs = ('logs', 'keys')
for d in dirs: for d in dirs:
os.makedirs(d, exist_ok=True) if not os.path.isdir(d):
os.makedirs(d)
from coco import Coco from coco import Coco
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment