mirror of
https://github.com/GNS3/gns3-server
synced 2024-12-29 02:08:10 +00:00
Merge pull request #6 from planctechnologies/gns-108
Add a --quiet mode to gns3server
This commit is contained in:
commit
65fdafda40
@ -34,6 +34,7 @@ define("host", default="0.0.0.0", help="run on the given host/IP address", type=
|
||||
define("port", default=8000, help="run on the given port", type=int)
|
||||
define("ipc", default=False, help="use IPC for module communication", type=bool)
|
||||
define("version", default=False, help="show the version", type=bool)
|
||||
define("quiet", default=False, help="do not show output on stdout", type=bool)
|
||||
|
||||
|
||||
def locale_check():
|
||||
@ -96,17 +97,25 @@ def main():
|
||||
raise SystemExit
|
||||
|
||||
current_year = datetime.date.today().year
|
||||
print("GNS3 server version {}".format(__version__))
|
||||
print("Copyright (c) 2007-{} GNS3 Technologies Inc.".format(current_year))
|
||||
|
||||
user_log = logging.getLogger('user_facing')
|
||||
if not options.quiet:
|
||||
# Send user facing messages to stdout.
|
||||
stream_handler = logging.StreamHandler(sys.stdout)
|
||||
stream_handler.addFilter(logging.Filter(name='user_facing'))
|
||||
user_log.addHandler(stream_handler)
|
||||
user_log.propagate = False
|
||||
|
||||
user_log.info("GNS3 server version {}".format(__version__))
|
||||
user_log.info("Copyright (c) 2007-{} GNS3 Technologies Inc.".format(current_year))
|
||||
|
||||
# we only support Python 3 version >= 3.3
|
||||
if sys.version_info < (3, 3):
|
||||
raise RuntimeError("Python 3.3 or higher is required")
|
||||
|
||||
print("Running with Python {major}.{minor}.{micro} and has PID {pid}".format(major=sys.version_info[0],
|
||||
minor=sys.version_info[1],
|
||||
micro=sys.version_info[2],
|
||||
pid=os.getpid()))
|
||||
user_log.info("Running with Python {major}.{minor}.{micro} and has PID {pid}".format(
|
||||
major=sys.version_info[0], minor=sys.version_info[1],
|
||||
micro=sys.version_info[2], pid=os.getpid()))
|
||||
|
||||
# check for the correct locale
|
||||
# (UNIX/Linux only)
|
||||
@ -118,9 +127,7 @@ def main():
|
||||
log.critical("the current working directory doesn't exist")
|
||||
return
|
||||
|
||||
server = Server(options.host,
|
||||
options.port,
|
||||
ipc=options.ipc)
|
||||
server = Server(options.host, options.port, options.ipc)
|
||||
server.load_modules()
|
||||
server.run()
|
||||
|
||||
|
@ -50,6 +50,7 @@ from .modules import MODULES
|
||||
import logging
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Server(object):
|
||||
|
||||
# built-in handlers
|
||||
@ -57,7 +58,7 @@ class Server(object):
|
||||
(r"/upload", FileUploadHandler),
|
||||
(r"/login", LoginHandler)]
|
||||
|
||||
def __init__(self, host, port, ipc=False):
|
||||
def __init__(self, host, port, ipc):
|
||||
|
||||
self._host = host
|
||||
self._port = port
|
||||
@ -188,11 +189,10 @@ class Server(object):
|
||||
**settings) # FIXME: debug mode!
|
||||
|
||||
try:
|
||||
print("Starting server on {}:{} (Tornado v{}, PyZMQ v{}, ZMQ v{})".format(self._host,
|
||||
self._port,
|
||||
tornado.version,
|
||||
zmq.__version__,
|
||||
zmq.zmq_version()))
|
||||
user_log = logging.getLogger('user_facing')
|
||||
user_log.info("Starting server on {}:{} (Tornado v{}, PyZMQ v{}, ZMQ v{})".format(
|
||||
self._host, self._port, tornado.version, zmq.__version__, zmq.zmq_version()))
|
||||
|
||||
kwargs = {"address": self._host}
|
||||
|
||||
if ssl_options:
|
||||
@ -230,7 +230,7 @@ class Server(object):
|
||||
try:
|
||||
ioloop.start()
|
||||
except (KeyboardInterrupt, SystemExit):
|
||||
print("\nExiting...")
|
||||
log.info("\nExiting...")
|
||||
self._cleanup()
|
||||
|
||||
def _create_zmq_router(self):
|
||||
|
@ -24,7 +24,9 @@
|
||||
# number has been incremented)
|
||||
|
||||
"""
|
||||
Startup script for GNS3 Server Cloud Instance
|
||||
Startup script for a GNS3 Server Cloud Instance. It generates certificates,
|
||||
config files and usernames before finally starting the gns3server process
|
||||
on the instance.
|
||||
"""
|
||||
|
||||
import os
|
||||
@ -67,12 +69,12 @@ Options:
|
||||
|
||||
""" % (SCRIPT_NAME)
|
||||
|
||||
# Parse cmd line options
|
||||
|
||||
def parse_cmd_line(argv):
|
||||
"""
|
||||
Parse command line arguments
|
||||
|
||||
argv: Pass in cmd line arguments
|
||||
argv: Passed in sys.argv
|
||||
"""
|
||||
|
||||
short_args = "dvh"
|
||||
@ -88,10 +90,7 @@ def parse_cmd_line(argv):
|
||||
print(usage)
|
||||
sys.exit(2)
|
||||
|
||||
cmd_line_option_list = {}
|
||||
cmd_line_option_list["debug"] = False
|
||||
cmd_line_option_list["verbose"] = True
|
||||
cmd_line_option_list["data"] = None
|
||||
cmd_line_option_list = {'debug': False, 'verbose': True, 'data': None}
|
||||
|
||||
if sys.platform == "linux":
|
||||
cmd_line_option_list['syslog'] = "/dev/log"
|
||||
@ -101,14 +100,14 @@ def parse_cmd_line(argv):
|
||||
cmd_line_option_list['syslog'] = ('localhost',514)
|
||||
|
||||
for opt, val in opts:
|
||||
if (opt in ("-h", "--help")):
|
||||
if opt in ("-h", "--help"):
|
||||
print(usage)
|
||||
sys.exit(0)
|
||||
elif (opt in ("-d", "--debug")):
|
||||
elif opt in ("-d", "--debug"):
|
||||
cmd_line_option_list["debug"] = True
|
||||
elif (opt in ("-v", "--verbose")):
|
||||
elif opt in ("-v", "--verbose"):
|
||||
cmd_line_option_list["verbose"] = True
|
||||
elif (opt in ("--data")):
|
||||
elif opt in ("--data",):
|
||||
cmd_line_option_list["data"] = ast.literal_eval(val)
|
||||
|
||||
return cmd_line_option_list
|
||||
@ -124,10 +123,10 @@ def set_logging(cmd_options):
|
||||
log_level = logging.INFO
|
||||
log_level_console = logging.WARNING
|
||||
|
||||
if cmd_options['verbose'] == True:
|
||||
if cmd_options['verbose'] is True:
|
||||
log_level_console = logging.INFO
|
||||
|
||||
if cmd_options['debug'] == True:
|
||||
if cmd_options['debug'] is True:
|
||||
log_level_console = logging.DEBUG
|
||||
log_level = logging.DEBUG
|
||||
|
||||
@ -138,37 +137,47 @@ def set_logging(cmd_options):
|
||||
console_log.setLevel(log_level_console)
|
||||
console_log.setFormatter(formatter)
|
||||
|
||||
syslog_hndlr = SysLogHandler(
|
||||
syslog_handler = SysLogHandler(
|
||||
address=cmd_options['syslog'],
|
||||
facility=SysLogHandler.LOG_KERN
|
||||
)
|
||||
|
||||
syslog_hndlr.setFormatter(sys_formatter)
|
||||
syslog_handler.setFormatter(sys_formatter)
|
||||
|
||||
log.setLevel(log_level)
|
||||
log.addHandler(console_log)
|
||||
log.addHandler(syslog_hndlr)
|
||||
log.addHandler(syslog_handler)
|
||||
|
||||
return log
|
||||
|
||||
def _generate_certs():
|
||||
cmd = []
|
||||
cmd.append("%s/cert_utils/create_cert.sh" % (SCRIPT_PATH))
|
||||
|
||||
log.debug("Generating certs ...")
|
||||
def _generate_certs():
|
||||
"""
|
||||
Generate a self-signed certificate for SSL-enabling the WebSocket
|
||||
connection. The certificate is sent back to the client so it can
|
||||
verify the authenticity of the server.
|
||||
|
||||
:return: A 2-tuple of strings containing (server_key, server_cert)
|
||||
"""
|
||||
cmd = ["{}/cert_utils/create_cert.sh".format(SCRIPT_PATH)]
|
||||
log.debug("Generating certs with cmd: {}".format(' '.join(cmd)))
|
||||
output_raw = subprocess.check_output(cmd, shell=False,
|
||||
stderr=subprocess.STDOUT)
|
||||
stderr=subprocess.STDOUT)
|
||||
|
||||
output_str = output_raw.decode("utf-8")
|
||||
output = output_str.strip().split("\n")
|
||||
log.debug(output)
|
||||
return (output[-2], output[-1])
|
||||
|
||||
def _start_gns3server():
|
||||
cmd = []
|
||||
cmd.append("gns3server")
|
||||
|
||||
log.info("Starting gns3server ...")
|
||||
def _start_gns3server():
|
||||
"""
|
||||
Start up the gns3 server.
|
||||
|
||||
:return: None
|
||||
"""
|
||||
cmd = ['gns3server', '--quiet']
|
||||
log.info("Starting gns3server with cmd {}".format(cmd))
|
||||
subprocess.Popen(cmd, shell=False)
|
||||
|
||||
|
||||
@ -187,7 +196,6 @@ def main():
|
||||
log.info("Received shutdown signal")
|
||||
sys.exit(0)
|
||||
|
||||
|
||||
# Setup signal to catch Control-C / SIGINT and SIGTERM
|
||||
signal.signal(signal.SIGINT, _shutdown)
|
||||
signal.signal(signal.SIGTERM, _shutdown)
|
||||
@ -229,12 +237,14 @@ def main():
|
||||
|
||||
cert_file.close()
|
||||
|
||||
# Return a stringified dictionary on stdout. The gui captures this to get
|
||||
# things like the server cert.
|
||||
client_data['SSL_CRT_FILE'] = server_crt
|
||||
client_data['SSL_CRT'] = cert_data
|
||||
client_data['WEB_USERNAME'] = cloud_config['CLOUD_SERVER']['WEB_USERNAME']
|
||||
client_data['WEB_PASSWORD'] = cloud_config['CLOUD_SERVER']['WEB_PASSWORD']
|
||||
|
||||
print(client_data)
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
Loading…
Reference in New Issue
Block a user