Files
entropy/services/repository-services-daemon.example

170 lines
4.2 KiB
Python
Executable File

#!/usr/bin/python2
"""
@author: Fabio Erculiani <lxnay@sabayon.org>
@contact: lxnay@sabayon.org
@copyright: Fabio Erculiani
@license: GPL-2
B{Entropy Package Manager Service}.
"""
import os
import sys
import time
import signal
import threading
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
if "--ssl" in sys.argv:
do_ssl = True
if "--nostdout" in sys.argv:
do_stdout_logging = False
from entropy.i18n import _
from entropy.output import nocolor
from entropy.tools import get_year, print_traceback
from entropy.misc import ParallelTask
from entropy.core.settings.base import SystemSettings
from text_tools import print_menu
SysSettings = SystemSettings()
myopts = [
None,
(0," ~ "+SysSettings['system']['name']+" ~ "+sys.argv[0]+" ~ ",1,'Repository Services daemon - (C) %s' % (get_year(),) ),
None,
(0,_('Basic Options'),0,None),
None,
(1,'--help',2,_('this output')),
(1,'--nocolor',1,_('disable colorized output')),
None,
(0,_('Application Options'),0,None),
None,
(1,'--ssl',2,_('enable SSL service too')),
(1,'--nostdout',1,_('disable output to stdout, redirect to log file')),
None,
]
if "--nocolor" in sys.argv:
nocolor()
if "--help" in sys.argv:
print_menu(myopts)
raise SystemExit(1)
from entropy.services.repository.interfaces import Server
from entropy.services.auth_interfaces import phpBB3Auth as phpBB3AuthInterface
from entropy.services.authenticators import phpBB3
from entropy.services.commands import phpBB3 as phpBB3Commands
from entropy.services.ugc.commands import UGC
connection_data = {
'hostname': 'localhost',
'port': 3306,
'username': 'phpbb_user',
'password': 'mypassword',
'dbname': 'phpbb_db'
}
ugc_connection_data = {
'hostname': 'localhost',
'username': 'entropy',
'password': 'password',
'dbname': 'entropy',
'google_email': 'your@gmail.com', # valid google account
'google_password': 'yourgmailpassword', # valid google e-mail
'google_developer_key': 'xxxxx', # valid google developer key
'google_client_id': 'xxxx', # valid google client id connected to the developer key
}
ugc_store_path = "/path/to/your/ugc/store"
ugc_store_url = "http://www.yoursite.com"
ugc_args = [ugc_connection_data,ugc_store_path,ugc_store_url]
# configure my repositories
repositories = {
('sabayonlinux.org','amd64','standard','5',): {
'dbpath': '/repos/new.sabayonlinux.org/standard/amd64/5',
'cmethod': 'bz2',
},
}
def kill_threads():
for th in threading.enumerate():
if hasattr(th, 'kill'):
th.kill()
def term_myself():
os.kill(os.getpid(), signal.SIGTERM)
def run_srv(s):
try:
s.go()
except:
print_traceback()
raise
finally:
if s is not None:
s.killall()
kill_threads()
term_myself()
sock_auth = (phpBB3,[],connection_data)
srv_ssl = None
srv = Server(
do_ssl = False,
repositories = repositories,
stdout_logging = do_stdout_logging,
sock_auth = sock_auth,
external_cmd_classes = [phpBB3Commands,(UGC,ugc_args,)]
)
if do_ssl:
srv_ssl = Server(
do_ssl = True,
repositories = repositories,
stdout_logging = do_stdout_logging,
sock_auth = sock_auth,
external_cmd_classes = [phpBB3Commands,(UGC,ugc_args,)]
)
task = ParallelTask(run_srv, srv)
task.setName('repodaemon')
task.start()
task2 = None
if srv_ssl is not None:
task2 = ParallelTask(run_srv, srv_ssl)
task2.setName('repodaemon_ssl')
task2.start()
run_map = {
"repodaemon": srv,
}
if srv_ssl is not None:
run_map["repodaemon_ssl"] = srv_ssl
t_map = {
"repodaemon": task,
}
if task2 is not None:
t_map["repodaemon_ssl"] = task2
def threads_alive():
for th in t_map.values():
if th.isAlive():
return True
return False
try:
while threads_alive():
time.sleep(2)
finally:
for serv in run_map.values():
serv.killall()
kill_threads()
term_myself()