Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Tree: a1fe1c54b0
Fetching contributors…

Cannot retrieve contributors at this time

executable file 93 lines (72 sloc) 2.927 kB
#!/usr/bin/env python
# coding=utf8
# Copyright (C) 2011 Saúl Ibarra Corretgé <saghul@gmail.com>
#
import os
import signal
import sys
from optparse import OptionParser
from application import log
from application.process import process, ProcessError
import tunnelit
def main():
name = 'tunnelit-server'
fullname = 'TunnelIt Server'
runtime_directory = '/var/run/tunnelit'
system_config_directory = '/etc/tunnelit'
default_pid = os.path.join(runtime_directory, 'server.pid')
default_config = os.path.join(system_config_directory , tunnelit.configuration_filename)
parser = OptionParser(version='%%prog %s' % tunnelit.__version__)
parser.add_option('--no-fork', action='store_false', dest='fork', default=1,
help='run the process in the foreground (for debugging)')
parser.add_option('--pid', dest='pid_file',
help='pid file ("%s")' % default_pid, metavar='File')
parser.add_option('--config-file', dest='config_file', default=default_config,
help='path to configuration file to read ("%s")' % default_config,
metavar='File')
(options, args) = parser.parse_args()
path, configuration_filename = os.path.split(options.config_file)
if path:
system_config_directory = path
process.system_config_directory = system_config_directory
tunnelit.configuration_filename = process.config_file(configuration_filename)
# when run in foreground, do not require root access because of /var/run/tunnelit
if not options.fork:
process._runtime_directory = None
else:
try:
process.runtime_directory = runtime_directory
except ProcessError, e:
log.fatal("Cannot start %s: %s" % (fullname, e))
sys.exit(1)
pid_file = options.pid_file or default_pid
if options.fork:
try:
process.daemonize(pid_file)
except ProcessError, e:
log.fatal("Cannot start %s: %s" % (fullname, e))
sys.exit(1)
log.start_syslog(name)
if tunnelit.configuration_filename:
log.msg("Starting %s %s, config=%s" % (fullname, tunnelit.__version__, tunnelit.configuration_filename))
else:
log.fatal('Config file not found')
sys.exit(1)
from tunnelit.server import TunnelItServer
try:
server = TunnelItServer()
except Exception, e:
log.fatal("failed to create %s: %s" % (fullname, e))
log.err()
sys.exit(1)
process.signals.add_handler(signal.SIGINT, lambda *args: server.stop())
process.signals.add_handler(signal.SIGTERM, lambda *args: server.stop())
try:
server.start()
log.msg("%s stopped" % fullname)
except Exception, e:
log.fatal("failed to run %s: %s" % (fullname, e))
log.err()
sys.exit(1)
if __name__ == "__main__":
main()
Jump to Line
Something went wrong with that request. Please try again.