#!/usr/bin/env python # -'- coding: utf-8 -*. """ authored by: RaNaN socket for connecting to the core's server """ import asynchat import asyncore import socket import threading from ClientHandler import ClientHandler from RequestObject import RequestObject class SocketThread(threading.Thread): def __init__(self, adress, port, pw, client): threading.Thread.__init__(self) self.setDaemon(True) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((adress, port)) self.socket = ClientSocket(sock, pw, client) self.start() def run(self): asyncore.loop() print "loop closed" def push_exec(self, function, args=[]): obj = RequestObject() obj.command = "exec" obj.function = function obj.args = args self.push(obj) def push(self, obj): self.socket.push_obj(obj) class ClientSocket(asynchat.async_chat): def __init__(self, sock, pw, client): asynchat.async_chat.__init__(self, sock) self.data = "" self.handler = ClientHandler(client, pw) self.set_terminator("\n") #self.create_socket(socket.AF_INET, socket.SOCK_STREAM) def handle_close(self): print "Disconnected from", self.getpeername() self.close() def collect_incoming_data(self, data): self.data += data def found_terminator(self): self.handler.proceed(self.data) self.data = "" def push_obj(self, obj): string = self.handler.encrypt(obj) self.push(string)