Exemple #1
0
    def localServerAutoStartIfRequire(self):
        """
        Try to start the embed gns3 server.
        """

        if not self.shouldLocalServerAutoStart():
            self._http_client = HTTPClient(self._settings)
            Controller.instance().setHttpClient(self._http_client)
            return

        if self.isLocalServerRunning() and self._server_started_by_me:
            return True

        # We check if two gui are not launched at the same time
        # to avoid killing the server of the other GUI
        if not LocalConfig.isMainGui():
            log.info("Not the main GUI, will not auto start the server")
            self._http_client = HTTPClient(self._settings)
            Controller.instance().setHttpClient(self._http_client)
            return True

        if self.isLocalServerRunning():
            log.debug("A local server already running on this host")
            # Try to kill the server. The server can be still running after
            # if the server was started by hand
            self._killAlreadyRunningServer()

        if not self.isLocalServerRunning():
            if not self.initLocalServer():
                QtWidgets.QMessageBox.critical(
                    self.parent(), "Local server",
                    "Could not start the local server process: {}".format(
                        self._settings["path"]))
                return False
            if not self.startLocalServer():
                QtWidgets.QMessageBox.critical(
                    self.parent(), "Local server",
                    "Could not start the local server process: {}".format(
                        self._settings["path"]))
                return False

        if self.parent():
            worker = WaitForConnectionWorker(self._settings["host"],
                                             self._port)
            progress_dialog = ProgressDialog(
                worker,
                "Local server",
                "Connecting to server {} on port {}...".format(
                    self._settings["host"], self._port),
                "Cancel",
                busy=True,
                parent=self.parent())
            progress_dialog.show()
            if not progress_dialog.exec_():
                return False
        self._server_started_by_me = True
        self._http_client = HTTPClient(self._settings)
        Controller.instance().setHttpClient(self._http_client)

        return True
Exemple #2
0
def http_client(http_request, network_manager):

    return HTTPClient({
        "protocol": "http",
        "host": "127.0.0.1",
        "port": "3080"
    }, network_manager)
Exemple #3
0
    def updateLocalServerSettings(self, new_settings):
        """
        Update the local server settings. Keep the key not in new_settings
        """
        old_settings = copy.copy(self._settings)
        if not self._settings:
            self._settings = new_settings
        else:
            self._settings.update(new_settings)
        self._port = self._settings["port"]
        LocalServerConfig.instance().saveSettings("Server", self._settings)

        # Settings have changed we need to restart the server
        if old_settings != self._settings:
            if self._settings["auto_start"]:
                # We restart the local server only if we really need. Auth can be hot change
                settings_require_restart = ('host', 'port', 'path')
                need_restart = False
                for s in settings_require_restart:
                    if old_settings.get(s) != self._settings.get(s):
                        need_restart = True

                if need_restart:
                    self.stopLocalServer(wait=True)

                self.localServerAutoStartIfRequired()
            # If the controller is remote:
            else:
                self.stopLocalServer(wait=True)

            if self._settings.get("host") is None:
                self._http_client = None
            else:
                self._http_client = HTTPClient(self._settings)
            Controller.instance().setHttpClient(self._http_client)
Exemple #4
0
    def getNetworkClientInstance(self, settings, network_manager):
        """
        Based on url return a network client instance
        """

        from gns3.http_client import HTTPClient
        client = HTTPClient(settings, network_manager)
        return client
def getNetworkClientInstance(settings, network_manager):
    """
    Based on url return a network client instance
    """

    if settings.get("protocol", "http") == "ssh":
        from gns3.ssh_client import SSHClient
        return SSHClient(settings, network_manager)
    else:
        from gns3.http_client import HTTPClient
        return HTTPClient(settings, network_manager)
Exemple #6
0
    def isLocalServerRunning(self):
        """
        Synchronous check if a server is already running on this host.

        :returns: boolean
        """

        status, json_data = HTTPClient(self._settings).getSynchronous("GET", "/version")
        if status == 401:  # Auth issue that need to be solved later
            return True
        elif json_data is None:
            return False
        elif status != 200:
            return False
        else:
            version = json_data.get("version", None)
            if version is None:
                log.debug("Server is not a GNS3 server")
                return False
        return True
Exemple #7
0
    def __init__(self, parent=None):
        # Remember if the server was started by us or not
        self._server_started_by_me = False
        self._local_server_path = ""
        self._local_server_process = None

        super().__init__()
        self._parent = parent
        self._config_directory = LocalConfig.instance().configDirectory()
        self._settings = {}
        self.localServerSettings()
        self._port = self._settings.get("port", 3080)
        if not self._settings.get("auto_start", True):
            if self._settings.get("host") is None:
                self._http_client = HTTPClient(self._settings)
                Controller.instance().setHttpClient(self._http_client)
        else:
            self._http_client = None

        self._stopping = False
        self._timer = QtCore.QTimer()
        self._timer.setInterval(5000)
        self._timer.timeout.connect(self._checkLocalServerRunningSlot)
        self._timer.start()
Exemple #8
0
def http_client(request, network_manager):

    return HTTPClient("http://127.0.0.1:8000", network_manager)