Example #1
0
    def _initialize(self, module_name):
        """Read configuration.
        @param module_name: module name.
        """
        self.module_name = module_name
        mmanager_opts = self.options.get(module_name)

        for name in mmanager_opts["machines"].split(","):
            if not name.strip():
                continue

            try:
                options = self.options.get(name.strip())
                machine = Dictionary()
                machine.name = name.strip()
                machine.label = options[self.LABEL]
                machine.platform = options["platform"]
                machine.tags = options.get("tags")
                machine.ip = options["ip"]

                # If configured, use specific network interface for this
                # machine, else use the default value.
                machine.interface = options.get("interface")

                # If configured, use specific snapshot name, else leave it
                # empty and use default behaviour.
                machine.snapshot = options.get("snapshot")

                machine.rdp_port = options.get("rdp_port", "")

                # If configured, use specific resultserver IP and port,
                # else use the default value.
                opt_resultserver = self.options_globals.resultserver

                if "resultserver_ip" in options and "resultserver_port" in options:
                    machine.resultserver_ip = options["resultserver_ip"]
                    machine.resultserver_port = options["resultserver_port"]
                else:
                    machine.resultserver_ip = opt_resultserver.ip
                    machine.resultserver_port = opt_resultserver.port

                # Strip parameters.
                for key, value in machine.items():
                    if value and isinstance(value, basestring):
                        machine[key] = value.strip()

                experiment = self.db.view_experiment(machine_name=machine.name)
                if experiment is not None:
                    machine.locked_by = experiment.id
                else:
                    machine.locked_by = None

                self.db.add_machine(name=machine.name,
                                    label=machine.label,
                                    ip=machine.ip,
                                    platform=machine.platform,
                                    tags=machine.tags,
                                    interface=machine.interface,
                                    snapshot=machine.snapshot,
                                    resultserver_ip=machine.resultserver_ip,
                                    resultserver_port=machine.resultserver_port,
                                    rdp_port=machine.rdp_port,
                                    locked_by=machine.locked_by)
            except (AttributeError, CuckooOperationalError) as e:
                log.warning("Configuration details about machine %s "
                            "are missing: %s", name, e)
                continue