Example #1
0
class Metaserver(object):
    def __init__(self, pathbase="."):
        """
        * Crea la estructura de directorios del metaservidor
            * Esto incluye el fichero de configuracion necesario para hacer
              funcionar al bugoso smsd
        * Inicia el monitor de dispositivos
            Maneja los eventos de conexion/desconexion
                Pide a farm que instancie y elimine servidores
            Desencadena eventos
        """

        self.servers = {}
        self.sheeps = {}
        self.farm = Farm() 
        self.pathbase = os.path.abspath(pathbase)

        self.device_monitor = Monitor(self.configure_device,
            self.remove_device)
        self.device_monitor.loop.run()


    @Auto_verbose(1, 1)
    def configure_device(self, device_path, protocol, model=None):
        info("Metaserver:configured:%s, %s, %s" % (device_path, protocol,
            model))
        server = Server(self, device_path, protocol, model)
        sheep = self.farm.get_sheep(server.send_sms)
        self.servers[device_path] = server
        self.sheeps[device_path] = server
        self.farm.put_sheep(sheep)
        server.start_smsd()
        sheep.start()
        return


    def remove_device(self, device_path):
        info("Metaserver:removed:%s" % device_path)
        server = self.servers[device_path]
        server.close()
        del(self.servers[device_path])
        return
Example #2
0
def main(opts=None, args=None):
    sys.argv += [None, None]
    loginNumber = sys.argv.pop(1)
    fromnumber = sys.argv.pop(1) or "0"
    tonumber = sys.argv.pop(1) or "10000"

    # TODO: debe verificar el servicio antes de iniciar el proceso

    farm = Farm(Login, 8, True, True)
    debug("Farm created")

    rango = xrange(int(fromnumber.replace("%", "00")), int(tonumber.replace("%", "00")))

    for number in rango:
        farm.enqueue((loginNumber, number))
    debug("Farm populated")

    farm.start()
    debug("Farm started")

    debug("Joining farm")
    result = farm.wait_eval()

    if result:
        print(u"¡La contraseña de %s es %s !" % (loginNumber, result))
        return 0
    else:
        error(u"No pude encontrar la contraseña :(")
        return 1
Example #3
0
    def __init__(self, pathbase="."):
        """
        * Crea la estructura de directorios del metaservidor
            * Esto incluye el fichero de configuracion necesario para hacer
              funcionar al bugoso smsd
        * Inicia el monitor de dispositivos
            Maneja los eventos de conexion/desconexion
                Pide a farm que instancie y elimine servidores
            Desencadena eventos
        """

        self.servers = {}
        self.sheeps = {}
        self.farm = Farm() 
        self.pathbase = os.path.abspath(pathbase)

        self.device_monitor = Monitor(self.configure_device,
            self.remove_device)
        self.device_monitor.loop.run()