docker/playmaker/pm-server

71 lines
2.5 KiB
Plaintext
Raw Permalink Normal View History

2021-01-09 18:06:20 +00:00
#!/usr/bin/env python3
import argparse
from tornado import httpserver
from tornado import ioloop as io
import functools
import tornado_crontab
import os
import configparser
from playmaker.server import createServer
from playmaker.service import Play
def auto_update(service):
if service.loggedIn:
print('Executing auto update cron task')
apps = service.check_local_apks().get('message')
if len(apps) > 0:
service.download_selection(apps)
service.fdroid_update()
# tornado setup
if __name__ == '__main__':
# arguments parsing
ap = argparse.ArgumentParser(description='Apk and fdroid repository ' +
'manager with a web interface.')
ap.add_argument('-f', '--fdroid', dest='fdroid',
action='store_true', default=False,
help='Enable fdroid integration')
ap.add_argument('-d', '--debug', dest='debug',
action='store_true', default=False,
help='Enable debug output')
args = ap.parse_args()
service = Play(debug=args.debug, fdroid=args.fdroid)
app = createServer(service)
# server setup
certfile = os.environ.get('HTTPS_CERTFILE')
keyfile = os.environ.get('HTTPS_KEYFILE')
server = (httpserver.HTTPServer(app)
if certfile is None or keyfile is None else
httpserver.HTTPServer(app,
ssl_options={'certfile': certfile,
'keyfile': keyfile}))
server.listen(5000, address='0.0.0.0')
# credentials setup
auth_file_parser = configparser.ConfigParser()
auth_file_parser.read('credentials.conf')
if 'google' in auth_file_parser:
google_section = auth_file_parser['google']
if 'email' in google_section and 'password' in google_section:
service.set_credentials(google_section['email'], google_section['password'])
elif 'gsfId' in google_section and 'token' in google_section:
service.set_token_credentials(google_section['gsfId'], google_section['token'])
if service.has_credentials():
service.login()
service.update_state()
# cron task settings
cron_string = os.environ.get('CRONTAB_STRING')
if cron_string is None:
# default is every night at 2AM
cron_string = '0 2 * * *'
_func = functools.partial(auto_update, *[service])
tornado_crontab.CronTabCallback(_func, cron_string).start()
io.IOLoop.instance().start()