def generate_image(text): width = config('width', 300) height = config('height', 150) extra_char = len(text) - config('increase_after_char', 10) if extra_char > 0: width += config('per_char_width', 10) * extra_char img = Image.new('RGB', (width, height), 'black') d = ImageDraw.Draw(img) font = ImageFont.truetype('assets/VarelaRound-Regular.ttf', size=config('font_size', 40)) d.text((width / 2, height / 2), text, anchor='mm', font=font) with io.BytesIO() as output: img.save(output, format='JPEG') return output.getvalue()
def create_app(config=None, debug=False, testing=False, config_overrides=None): app = Flask(__name__) CORS(app) app.debug = debug app.testing = testing if config_overrides: app.config.update(config_overrides) # Configuration with warnings.catch_warnings(record=True): application.config(config) # Add endpoints from app.endpoints.statuses import blueprint as statuses_bp app.register_blueprint(statuses_bp) return app
for handler_name in handlers.__all__: handler_module = importlib.import_module('handlers.'+handler_name) handler = getattr(handler_module, 'handler', None) if handler: # callback = handler.callback # def db_callback(**args): # res = callback(**args) # db.close() # return res # handlers.callback = callback updater.dispatcher.add_handler(handler) updater.dispatcher.add_error_handler(error_handler) PORT = int(config('PORT', 5000)) if config('environment','dev') == 'dev': updater.start_polling() else: updater.start_webhook(listen="0.0.0.0", port=int(PORT), url_path=config('token')) updater.bot.setWebhook(config('url') + config('token')) updater.idle()
def seed(): user = User.create(username=config('username')) logger.info('user seeded successfully') seed_words(user)
import paho.mqtt.client as mqtt from db_connection import DBConnection from app import config db = DBConnection(config("postgresql")) def on_message(client, userdata, message): pill_id = message.payload.decode("utf-8") pill_id = int(pill_id) if pill_id: dose, quantity = db.execute_query( "SELECT dose, quantity FROM pills WHERE id='{}';".format( pill_id))[0] new_quantity = quantity - dose db.execute("UPDATE pills SET quantity={0} WHERE id={1};".format( new_quantity, pill_id)) client = mqtt.Client("subscriber-taken") client.on_message = on_message client.connect("broker.hivemq.com") client.subscribe("pillsTaken") client.loop_forever()
def main(): parser = argparse.ArgumentParser() parser.add_argument('-v', help='increase output verbosity', dest='verbose', action='store_true') parser.add_argument('-t', help='enable multi tunnel', dest='multi_tunnel_enabled', action='store_true') parser.add_argument('-c', help='how many core running (min 1, max 16)', dest='core', type=int) parser.add_argument('-r', help='reset exported files (all, config, data, database)', dest='reset', type=str) parser.add_argument('-f', help='frontend domains, example: akamai.net,akamai.net:443', dest='frontend_domains', type=str) parser.add_argument('-w', help='whitelist requests, example: akamai.net,akamai.net:443', dest='whitelist_requests', type=str) arguments = parser.parse_args() app.banners() config = app.config() if arguments.reset is not None: app.log('Resetting Exported Files') config.reset(arguments.reset) app.log('Resetting Exported Files Complete\n'.format(arguments.reset)) return if config.system_machine not in config.files_psiphon_tunnel_core: app.log('This machine ({}) not available at this time!\n'.format(config.system_machine), color='[R1]') return if config.system_machine in config.system_machine_using_redsocks and not config.user_is_superuser(): app.log('Please run "sudo -s" first! (don\'t use "sudo python3 app.py"!)\n', color='[R1]') return config.load() if config.force_use_redsocks and not config.user_is_superuser(): app.log('Please run "sudo -s" first! (don\'t use "sudo python3 app.py"!)\n', color='[R1]') return if arguments.multi_tunnel_enabled: config.multi_tunnel_enabled = True if arguments.whitelist_requests is not None: config.whitelist_requests = app.process_to_host_port(arguments.whitelist_requests.split(',')) arguments.whitelist_requests = '' for host_port in config.whitelist_requests: arguments.whitelist_requests += ' {}:{},'.format(host_port[0], host_port[1]) app.log('Whitelist Requests is set by arguments: {}'.format(arguments.whitelist_requests.strip().rstrip(','))) if arguments.frontend_domains is not None: config.frontend_domains = app.process_to_host_port(arguments.frontend_domains.split(',')) arguments.frontend_domains = '' for host_port in config.frontend_domains: arguments.frontend_domains += ' {}:{},'.format(host_port[0], host_port[1]) app.log('Frontend Domains is set by arguments: {}'.format(arguments.frontend_domains.strip().rstrip(','))) app.log('SOCKS5 Proxy Rotator running on port {}'.format(config.proxyrotator_port)) app.log('Domain Fronting running on port {}'.format(config.domainfronting_port)) app.proxyrotator(('0.0.0.0', config.proxyrotator_port), buffer_size=65535).start() redsocks = app.redsocks(config.redsocks_enabled) redsocks.start() for i in range(int(arguments.core if arguments.core is not None and arguments.core > 0 and arguments.core <= 16 else config.core)): port = 3081 + i app.psiphon( '{} -config storage/psiphon/{}/{}'.format(app.real_path(config.files_psiphon_tunnel_core[config.system_machine][1]), port, 'config-multi-tunnel.json' if config.multi_tunnel_enabled else 'config.json'), port, config.kuota_data_limit, config.multi_tunnel_enabled, arguments.verbose ).start() try: domainfronting = app.domainfronting(('127.0.0.1', config.domainfronting_port), app.domainfronting_handler) domainfronting.whitelist_requests = config.whitelist_requests domainfronting.frontend_domains = config.frontend_domains domainfronting.buffer_size = 65535 domainfronting.redsocks = redsocks domainfronting.serve_forever() except OSError: app.psiphon_stop.append(1) redsocks.stop() app.log('Port {} used by another programs'.format(config.domainfronting_port), color='[R1]') app.log('Ctrl-C to exit') except KeyboardInterrupt: app.psiphon_stop.append(1) redsocks.stop() with app.lock: sys.stdout.write(' \r') sys.stdout.flush() app.log('Ctrl-C again to exit ')
#!/usr/bin/env python3 from app import (config, router, totoro) from flask import Flask # Flask app + config app = Flask(__name__, static_folder='app/static') app.config['ENV'] = config('env') app.config['DEBUG'] = False app.config['SESSION_COOKIE_NAME'] = 'shellman' # Define routes router.define_routes(app) # Start Totoro if config('use_tor') and totoro().start(): print('Totoro successfully started !') # Start the webserver app.run(port=config('port'))