def resolve_secret_key(secret_key, _url_prefix=SECRETS.URL_PREFIX): """ Finds a secret key among command line options or via environment variables. """ # We always require a string secret_key = secret_key or '' if secret_key and (not isinstance(_url_prefix, bytes)): _url_prefix = _url_prefix.encode('utf8') # This is a direct value, to be used as-is if not secret_key.startswith(_url_prefix): return secret_key else: # We need to look it up somewhere secret_key = secret_key.replace(_url_prefix, '', 1) # Command line options if secret_key.startswith('cli'): # This will be used by check-config for idx, elem in enumerate(sys.argv): if elem == '--secret-key': secret_key = sys.argv[idx + 1] break # This will be used when components are invoked as subprocesses else: # To prevent circular imports from zato.common.util.api import parse_cmd_line_options cli_options = parse_cmd_line_options(sys.argv[1]) secret_key = cli_options['secret_key'] # Environment variables elif secret_key.startswith('env'): env_key = secret_key.replace('env.', '', 1) secret_key = os.environ[env_key] # Unknown scheme, we need to give up else: raise ValueError('Unknown secret key type `{}`'.format(secret_key)) # At this point, we have a secret key extracted in one way or another return secret_key if isinstance(secret_key, bytes) else secret_key.encode('utf8')
def __init__(self): zato_options = sys.argv[1] zato_options = parse_cmd_line_options(zato_options) self.deployment_key = zato_options['deployment_key'] self.shmem_size = int(zato_options['shmem_size']) self.host = '127.0.0.1' self.port = None self.username = None self.password = None self.server_auth = None self.basic_auth_expected = None self.server_port = None self.server_path = None self.server_address = 'http://127.0.0.1:{}{}' self.lock = RLock() self.logger = None self.parent_pid = getppid() self.config_ipc = ConnectorConfigIPC() self.config_ipc.create(self.deployment_key, self.shmem_size, False) self.connections = {} self.outconns = {} self.channels = {} self.outconn_id_to_def_id = { } # Maps outgoing connection IDs to their underlying definition IDs self.channel_id_to_def_id = {} # Ditto but for channels self.outconn_name_to_id = { } # Maps outgoing connection names to their IDs self.set_config()
from __future__ import absolute_import, division, print_function, unicode_literals # stdlib import os, sys # ConcurrentLogHandler - updates stlidb's logging config on import so this needs to stay import cloghandler cloghandler = cloghandler # For pyflakes # Zato from zato.agent.load_balancer.server import LoadBalancerAgent, TLSLoadBalancerAgent from zato.common.util.api import get_lb_agent_json_config, parse_cmd_line_options, store_pidfile if __name__ == '__main__': repo_dir = sys.argv[1] component_dir = os.path.join(repo_dir, '..', '..') lba_config = get_lb_agent_json_config(repo_dir) # Store agent's pidfile only if we are not running in foreground options = parse_cmd_line_options(sys.argv[2]) if not options.get('fg', None): store_pidfile(component_dir, lba_config['pid_file']) lba_class = TLSLoadBalancerAgent if lba_config.get( 'is_tls_enabled', True) else LoadBalancerAgent lba = lba_class(repo_dir) lba.start_load_balancer() lba.serve_forever()
if __name__ == '__main__': env_key_name = 'ZATO_SERVER_BASE_DIR' env_server_base_dir = os.environ.get(env_key_name) if env_server_base_dir: logging.info('Using environment key %s -> %s', env_key_name, env_server_base_dir) server_base_dir = env_server_base_dir cmd_line_options = { 'fg': True, 'sync_internal': False, 'secret_key': '', 'stderr_path': None, } else: server_base_dir = sys.argv[1] cmd_line_options = sys.argv[2] cmd_line_options = parse_cmd_line_options(cmd_line_options) if not os.path.isabs(server_base_dir): server_base_dir = os.path.abspath( os.path.join(os.getcwd(), server_base_dir)) run(server_base_dir, options=cmd_line_options) # ################################################################################################################################
for key, value in os_environ.items(): os.environ[key] = value # Run the hook right before the Gunicorn-level server actually starts startup_callable_tool.invoke(SERVER_STARTUP.PHASE.IMPL_BEFORE_RUN, kwargs={ 'zato_gunicorn_app': zato_gunicorn_app, }) # Run the app at last if start_gunicorn_app: zato_gunicorn_app.run() else: return zato_gunicorn_app.zato_wsgi_app # ################################################################################################################################ if __name__ == '__main__': server_base_dir = sys.argv[1] cmd_line_options = sys.argv[2] if not os.path.isabs(server_base_dir): server_base_dir = os.path.abspath( os.path.join(os.getcwd(), server_base_dir)) run(server_base_dir, options=parse_cmd_line_options(cmd_line_options)) # ################################################################################################################################