Exemplo n.º 1
0
 def _monitor(self, address, buffer_size, retry):
     while True:
         try:
             self.status = CONNECTING
             yield kaa.inprogress(self)
             # Python 2.4 code
             # TODO: remove all python 2.4 supporting code
             self._connect_inprogress.result
             self.status = CONNECTED
             # wait until the socket is closed
             yield self.signals.subset('closed').any()
         except Exception, e:
             # connection failed
             pass
         self._connect_inprogress = kaa.InProgress()
         self.status = DISCONNECTED
         # wait some time until we retry
         yield kaa.delay(retry)
         # reset variables
         self._authenticated = False
         self._pending_challenge = None
         self._read_buffer = []
         self.status = CONNECTING
         self._socket = kaa.Socket(buffer_size)
         self._socket.chunk_size = 1024
         self._socket.signals['read'].connect(self._handle_read)
         self._socket.signals['closed'].connect(self._handle_close)
         self._socket.connect(address).exception.connect(
             self._handle_refused)
Exemplo n.º 2
0
 def __init__(self, address, auth_secret='', buffer_size=None, retry=None):
     super(Client, self).__init__(kaa.Socket(buffer_size), auth_secret)
     self._socket.connect(address).exception.connect(self._handle_refused)
     self.monitoring = False
     if retry is not None:
         self._monitor(address, buffer_size, retry)
         self.monitoring = True
Exemplo n.º 3
0
    def __init__(self, address, auth_secret='', buffer_size=None):
        super(Server, self).__init__()
        self._auth_secret = py3_b(auth_secret)
        self._socket = kaa.Socket(buffer_size=buffer_size)
        self._socket.listen(address)
        self._socket.signals['new-client'].connect_weak(self._new_connection)

        self.objects = []
Exemplo n.º 4
0
 def __init__(self, rc):
     """
     init the network event handler
     """
     logger.debug('TCPNetwork.__init__()')
     self.rc = rc
     self.socket = kaa.Socket()
     self.socket.signals['new-client'].connect(self.__accept)
     self.socket.listen(
         (config.REMOTE_CONTROL_TCP_HOST, config.REMOTE_CONTROL_TCP_PORT))
Exemplo n.º 5
0
 def connect(self, host):
     self.host = host
     self.socket = kaa.Socket()
     self.socket.signals['read'].connect(self.__read)
     yield self.socket.connect((host, 9982))
     yield self.send('hello',
                     htspversion=5,
                     clientname='Freevo',
                     clientversion='2.0git')
     self.send('enableAsyncMetadata', epg=1, async=False)
     yield self.connected
Exemplo n.º 6
0
 def _connect(self):
     """
     Connect to the server and init the connection.
     """
     if self._connected:
         yield False
     self.socket = kaa.Socket()
     try:
         yield self.socket.connect((self._server, self._port))
     except Exception, e:
         # try again later
         log.error('LCDproc connection error; will try again later')
         kaa.OneShotTimer(self._connect).start(10)
         yield False
Exemplo n.º 7
0
 def plugin_activate(self, level):
     """
     Activate the plugin
     """
     super(PluginInterface, self).plugin_activate(level)
     self.httpserver = freevo.get_plugin('httpserver')
     if not self.httpserver:
         raise RuntimeError('httpserver plugin not running')
     self.httpserver.server.add_json_handler('/jsonrpc', self.jsonrpc)
     self.httpserver.server.add_handler('/image/', self.provide_image)
     self._sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
     self._sock.bind(('', freevo.config.plugin.jsonrpc.eventserver))
     udp = kaa.Socket()
     udp.wrap(self._sock, kaa.IO_READ | kaa.IO_WRITE)
     udp.signals['read'].connect(eventserver.handle)
     utils.imagedir = (yield kaa.beacon.get_db_info())['directory']
     utils.cachedir = os.path.join(os.environ['HOME'], '.thumbnails')
     self.api = {}
     for module in ('VideoLibrary', 'Player', 'Playlist'):
         for name in dir(eval(module)):
             method = getattr(eval(module), name)
             if callable(method) and not name.startswith('_'):
                 self.api[module + '.' + name] = method
Exemplo n.º 8
0
import logging
import kaa
from kaa.net.tls import TLSSocket

log = logging.getLogger('tls').ensureRootHandler()


@kaa.coroutine()
def new_client(client):
    ip, port = client.peer[:2]
    print 'New connection from %s:%s' % (ip, port)
    #yield client.starttls_server()
    client.write('Hello %s, connecting from port %d\n' % (ip, port))

    remote = TLSSocket()
    yield remote.connect('www.google.com:443')
    yield remote.starttls_client()
    yield remote.write('GET / HTTP/1.0\n\n')
    while remote.readable:
        data = yield remote.read()
        yield client.write(data)
    client.write('\n\nBye!\n')
    client.close()


server = kaa.Socket()
server.signals['new-client'].connect(new_client)
server.listen(8080)
print "Connect to localhost:8080"
kaa.main.run()