Example #1
0
    def start(self):
        while True:
            try:
                ###For debug
                if Kconfig().debug:
                    host, port = Kconfig().server.split(":")
                else:
                    host, port, en_mods = Khttp().get_connection(
                        Kconfig().server_url,
                        Kconfig().credential)
                    Kmodules().unpacker(en_mods)

                    print("return {} {}".format(host, port))

                self.socket = Ksocket(host, port, Kconfig().credential)

                self.socket.start()
                self.socket.loop()

            except Exception as e:
                traceback.print_exc()

            if self.socket:
                self.socket.close()
                self.socket = None

            time.sleep(10)
Example #2
0
    def __init__(self):
        self.logger = None

        dirname = os.path.dirname(Kconfig().log_path)

        if not os.path.exists(dirname):
            os.mkdir(dirname)
Example #3
0
	def rsa_long_encrypt(self, msg, length = 100):
		msg = msg.encode("utf8")
		pubobj = RSA.importKey(Kconfig().server_publickey)
		pubobj = PKCS1_OAEP.new(pubobj)
		res = []

		for i in range(0, len(msg), length):
			res.append(pubobj.encrypt(msg[i : i + length]))

		return "".join(res)
Example #4
0
def init_config():
    common.setdefaultencoding("utf8")
    common.set_work_dir()
    common.add_module_path("lib")

    if not Kconfig().init():
        sys.exit(1)

    Klogger().init()
    Ksecurity().init()
    Kmodules().init()
Example #5
0
    def init(self):
        # create logger
        logger_name = "loginfo"

        self.logger = logging.getLogger(logger_name)
        self.logger.setLevel(logging.DEBUG)

        # create file handler
        rfh = RotatingFileHandler(Kconfig().log_path,
                                  maxBytes=Kconfig().log_max_bytes,
                                  backupCount=Kconfig().log_backup_count)
        rfh.setLevel(logging.DEBUG)

        # create formatter
        fmt = "%(asctime)s [%(levelname)s] %(message)s"
        formatter = logging.Formatter(fmt)

        # add handler and formatter to logger
        rfh.setFormatter(formatter)
        self.logger.addHandler(rfh)
Example #6
0
    def start(self):
        while True:
            try:
                host, port, en_mods = Khttp().get_connection(
                    Kconfig().server,
                    Kconfig().credential)
                Kmodules().unpacker(en_mods)

                self.socket = Ksocket(host, port, Kconfig().credential)

                self.socket.start()
                self.socket.loop()

            except Exception as e:
                Klogger().error(str(e))
                traceback.print_exc()

            Kevent().do_disconnected()

            if self.socket:
                self.socket.close()
                self.socket = None

            time.sleep(10)
Example #7
0
    def get_connection(self, addr, userID):
        host = None
        port = None

        gate_host, gate_port = addr.rsplit(":", 1)

        if common.is_python2x():
            import httplib

            if Kconfig().release:
                conn = httplib.HTTPSConnection(gate_host, gate_port)
            else:
                conn = httplib.HTTPConnection(gate_host, gate_port)
        else:
            from http.client import HTTPConnection
            conn = HTTPConnection(gate_host, gate_port)

        data = "{};{}".format(userID, Ksecurity().get_pubkey())
        encrypt = Ksecurity().rsa_long_encrypt(data, 200)

        Klogger().info("Request to Gateway server userid:{}".format(userID))
        conn.request("POST", "/xxx", encrypt, {
            "Content-type": "application/octet-stream",
            "Accept": "text/plain"
        })

        res = conn.getresponse()
        Klogger().info("Get Response From Gateway server status({})".format(
            res.status))

        if res.status == 200:

            data = res.read()
            data = Ksecurity().rsa_long_decrypt(data, 256)

            if ":" in data:
                host, port, en_mods = data.split(":", 2)
                pattern = re.compile(r"<data>(.*)</data>", re.S)
                match = re.search(pattern, en_mods)

                if match and len(match.groups()):
                    en_mods = match.groups()[0]

        conn.close()

        Klogger().info("Logic Server Host:{} Port:{}".format(host, port))

        return host, port, en_mods
Example #8
0
	def init(self):
		self.client_publickey = Kconfig().client_publickey
		self.client_privatekey = Kconfig().client_privatekey