#!/usr/bin/python
import sys, time
sys.path.insert(0,'/usr/lib/entropy/libraries')
sys.path.insert(0,'/usr/lib/entropy/client')
sys.path.insert(0,'../libraries')
sys.path.insert(0,'../client')
# disable pid management
sys.argv.append("--no-pid-handling")
do_ssl = False
do_stdout_logging = True
do_port = 1027
if "--ssl" in sys.argv:
    do_ssl = True
if "--nostdout" in sys.argv:
    do_stdout_logging = False
if "--port" in sys.argv:
    idx = sys.argv.index("--port")+1
    try:
        do_port = int(sys.argv[idx])
    except (IndexError, ValueError,):
        pass

from entropy.const import *
etpConst['community']['mode'] = True
etpConst['socket_service']['session_ttl'] = 300
import entropy.tools as entropyTools
from entropy.services.system.interfaces import Server as SystemManagerServerInterface
from entropy.services.system.executors import Base as SystemManagerExecutorServerRepositoryInterface
from entropy.services.system.commands import Repository as SystemManagerRepositoryCommands
from entropy.server.interfaces import Server as ServerInterface

def run_srv(s):
    try:
        s.go()
    except (KeyboardInterrupt, SystemExit,):
        s.killall()

srv = SystemManagerServerInterface(
        ServerInterface,
        do_ssl = do_ssl,
        stdout_logging = do_stdout_logging,
        external_cmd_classes = [SystemManagerRepositoryCommands],
        external_executor_cmd_classes = [(SystemManagerExecutorServerRepositoryInterface,[],{},)],
        entropy_interface_kwargs = {'community_repo': etpConst['community']['mode']}
    )
srv.port = do_port

thread_names = ["system_socket"]
task = entropyTools.parallelTask(run_srv, srv)
task.setName(thread_names[0])
task.start()

try:
    while task.isAlive():
        time.sleep(1)
except KeyboardInterrupt:
    raise SystemExit(1)
raise SystemExit(0)
