예제 #1
0
def main():
    log = Logger('hub')

    log.info('Starting %s %s' % (full_name, version))

    cfg = Config('hub')
    if not cfg.is_loaded():
        sys.exit(1)

    server = ConnectionSocketServer(cfg['listen'].host(),
                                    cfg['listen'].port())
    request = Request()

    signals.connect('connection:connected', client.add)
    signals.connect('connection:disconnected', client.remove)
    signals.connect('connection:data_received', request.parse)

    signals.connect('data:on_info', client.on_info)

    try:
        while server.pool():
            sleep(0.01)
    except KeyboardInterrupt:
        sys.stdout.write('\r')
        log.info('Exiting on user request (Ctrl+C)')
        pass

    del server
예제 #2
0
def main():
    global cfg

    log = Logger('manager')
    log.info("Starting DarkCloud Manager")

    cfg = Config('manager')
    if not cfg.is_loaded():
        sys.exit(1)

    client = ConnectionSocketClient(cfg['hub'].host(), cfg['hub'].port())
    request = Request()

    if client == False:
        sys.exit(1)

    signals.connect('connection:connected', on_connect)
    signals.connect('connection:data_received', request.parse)

    client.connect()

    try:
        while True:
            client.pool()
    except KeyboardInterrupt:
        sys.stdout.write('\r')
        log.info('Exiting on user request (Ctrl+C)')
        pass

    client.disconnect()

    del client
예제 #3
0
def main():
    log = Logger('hub')

    log.info('Starting %s %s' % (full_name, version))

    cfg = Config('hub')
    if not cfg.is_loaded():
        sys.exit(1)

    server = ConnectionSocketServer(cfg['listen'].host(), cfg['listen'].port())
    request = Request()

    signals.connect('connection:connected', client.add)
    signals.connect('connection:disconnected', client.remove)
    signals.connect('connection:data_received', request.parse)

    signals.connect('data:on_info', client.on_info)

    try:
        while server.pool():
            sleep(0.01)
    except KeyboardInterrupt:
        sys.stdout.write('\r')
        log.info('Exiting on user request (Ctrl+C)')
        pass

    del server
import socket
import Queue
from time import sleep

from darkcloud.common.connectionsocket import ConnectionSocket
from darkcloud.common.hmac import HMAC
from darkcloud.common.logger import Logger
from darkcloud.common.signals import signals

import darkcloud.settings as settings

import json

log = Logger('client')

class ConnectionSocketClient(ConnectionSocket):
    def __init__(self, host, port):
        ConnectionSocket.__init__(self)

        self.host = host
        self.port = port

        self.connected = None
        self.data = None

    def __del__(self):
        self.disconnect()

    def connect(self):
        try:
            if self.connected == False:
예제 #5
0
import select
import socket
import sys
import Queue

from darkcloud.common.connectionsocket import ConnectionSocket
from darkcloud.common.logger import Logger
from darkcloud.common.signals import signals

log = Logger('server')


class ConnectionSocketServer(ConnectionSocket):
    def __init__(self, host, port):
        ConnectionSocket.__init__(self)

        self.host = host
        self.port = port

        self.connections = {}
        self.connection_inputs = [self.socket]
        self.connection_outputs = []
        self.message_queues = {}

        try:
            self.socket.bind((self.host, self.port))
            self.socket.setblocking(False)
            log.info("Listening on %s:%s" % (self.host, self.port))
        except socket.error as err:
            log.critical(err[1])
            sys.exit(1)
예제 #6
0
    def _load_config(self, filename):
        log = Logger('config')
        try:
            filepath = '/etc/darkcloud/%s.yml' % (filename)
            config_data = open(filepath).read()
            log.debug("Loaded configuration file '%s'" % (filepath))
        except:
            try:
                log.debug("Configuration not found at '%s'" % (filepath))

                filepath = 'config/%s.yml' % (filename)
                config_data = open(filepath).read()
                log.debug("Loaded configuration file '%s'" % (filepath))
            except:
                log.debug("Configuration not found at '%s'" % (filepath))
                log.critical("Can't load configuration file '%s'" % (filepath))
                return None
        return load(config_data)
예제 #7
0
    def _load_config(self, filename):
        log = Logger('config')
        try:
            filepath = '/etc/darkcloud/%s.yml' % (filename)
            config_data = open(filepath).read()
            log.debug("Loaded configuration file '%s'" % (filepath))
        except:
            try:
                log.debug("Configuration not found at '%s'" % (filepath))

                filepath = 'config/%s.yml' % (filename)
                config_data = open(filepath).read()
                log.debug("Loaded configuration file '%s'" % (filepath))
            except:
                log.debug("Configuration not found at '%s'" % (filepath))
                log.critical("Can't load configuration file '%s'" % (filepath))
                return None
        return load(config_data)
예제 #8
0
import darkcloud.settings as settings
from darkcloud.common.hmac import HMAC
from darkcloud.common.logger import Logger

import socket
import json

log = Logger('connection')


class ConnectionSocket():
    def __init__(self, use_socket=None):
        if use_socket:
            self.socket = use_socket
        else:
            self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

    def recv(self):
        try:
            data = self.socket.recv(settings.BUFFER_SIZE).rstrip('\n')
            if not data:
                return None
        except socket.error as err:
            print("\033[1;31mSOCKET ERROR:\033[0m %s" % err)
            return None

        if settings.DEBUG:
            print("\033[0;36mrecv\033[0m> \033[0;33m%s\033[0m" % (data))

        return data