def run(): setlimits() try: signal.signal(signal.SIGUSR1, dumptrace) except AttributeError: pass # silly windows if havefcntl: _checkpidfile() conf.init_config() try: config = conf.get_config() _initsecurity(config) except: sys.stderr.write("Error unlocking credential store\n") doexit() sys.exit(1) try: confluentcore.load_plugins() except: doexit() raise try: log.log({'info': 'Confluent management service starting'}, flush=True) except (OSError, IOError) as e: print(repr(e)) sys.exit(1) _daemonize() if havefcntl: _updatepidfile() signal.signal(signal.SIGINT, terminate) signal.signal(signal.SIGTERM, terminate) collective.startup() if dbgif: oumask = os.umask(0o077) try: os.remove('/var/run/confluent/dbg.sock') except OSError: pass # We are not expecting the file to exist try: dbgsock = eventlet.listen("/var/run/confluent/dbg.sock", family=socket.AF_UNIX) eventlet.spawn_n(backdoor.backdoor_server, dbgsock) except AttributeError: pass # Windows... os.umask(oumask) http_bind_host, http_bind_port = _get_connector_config('http') sock_bind_host, sock_bind_port = _get_connector_config('socket') webservice = httpapi.HttpApi(http_bind_host, http_bind_port) webservice.start() disco.start_detection() try: sockservice = sockapi.SockApi(sock_bind_host, sock_bind_port) sockservice.start() except NameError: pass atexit.register(doexit) eventlet.sleep(1) consoleserver.start_console_sessions() while 1: eventlet.sleep(100)
def run(): setlimits() signal.signal(signal.SIGUSR1, dumptrace) if havefcntl: _checkpidfile() conf.init_config() try: config = conf.get_config() _initsecurity(config) except: sys.stderr.write("Error unlocking credential store\n") doexit() sys.exit(1) try: confluentcore.load_plugins() except: doexit() raise _daemonize() if havefcntl: _updatepidfile() signal.signal(signal.SIGINT, terminate) signal.signal(signal.SIGTERM, terminate) if dbgif: oumask = os.umask(0077) try: os.remove('/var/run/confluent/dbg.sock') except OSError: pass # We are not expecting the file to exist dbgsock = eventlet.listen("/var/run/confluent/dbg.sock", family=socket.AF_UNIX) eventlet.spawn_n(backdoor.backdoor_server, dbgsock) os.umask(oumask) http_bind_host, http_bind_port = _get_connector_config('http') sock_bind_host, sock_bind_port = _get_connector_config('socket') webservice = httpapi.HttpApi(http_bind_host, http_bind_port) webservice.start() try: sockservice = sockapi.SockApi(sock_bind_host, sock_bind_port) sockservice.start() except NameError: pass atexit.register(doexit) eventlet.sleep(1) consoleserver.start_console_sessions() while 1: eventlet.sleep(100)
def run(): setlimits() signal.signal(signal.SIGUSR1, dumptrace) if havefcntl: _checkpidfile() conf.init_config() try: config = conf.get_config() _initsecurity(config) except: sys.stderr.write("Error unlocking credential store\n") doexit() sys.exit(1) try: confluentcore.load_plugins() except: doexit() raise _daemonize() if havefcntl: _updatepidfile() auth.init_auth() signal.signal(signal.SIGINT, terminate) signal.signal(signal.SIGTERM, terminate) #TODO(jbjohnso): eventlet has a bug about unix domain sockets, this code #works with bugs fixed if dbgif: oumask = os.umask(0077) dbgsock = eventlet.listen("/var/run/confluent/dbg.sock", family=socket.AF_UNIX) eventlet.spawn_n(backdoor.backdoor_server, dbgsock) os.umask(oumask) http_bind_host, http_bind_port = _get_connector_config('http') sock_bind_host, sock_bind_port = _get_connector_config('socket') webservice = httpapi.HttpApi(http_bind_host, http_bind_port) webservice.start() try: sockservice = sockapi.SockApi(sock_bind_host, sock_bind_port) sockservice.start() except NameError: pass atexit.register(doexit) eventlet.sleep(1) consoleserver.start_console_sessions() while 1: eventlet.sleep(100)
def _tlsstartup(cnn): authname = None cert = None conf.init_config() configfile = conf.get_config() if configfile.has_option('security', 'cipher_list'): ciphers = configfile.get('security', 'cipher_list') else: ciphers = 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384' if libssl: # most fully featured SSL function ctx = libssl.Context(libssl.SSLv23_METHOD) ctx.set_options(libssl.OP_NO_SSLv2 | libssl.OP_NO_SSLv3 | libssl.OP_NO_TLSv1 | libssl.OP_NO_TLSv1_1 | libssl.OP_CIPHER_SERVER_PREFERENCE) ctx.set_cipher_list(ciphers) ctx.set_tmp_ecdh(crypto.get_elliptic_curve('secp384r1')) ctx.use_certificate_file('/etc/confluent/srvcert.pem') ctx.use_privatekey_file('/etc/confluent/privkey.pem') ctx.set_verify(libssln.VERIFY_PEER, lambda *args: True) libssln._lib.SSL_CTX_set_cert_verify_callback(ctx._context, verify_stub, ffi.NULL) cnn = libssl.Connection(ctx, cnn) cnn.set_accept_state() cnn.do_handshake() cert = cnn.get_peer_certificate() else: try: # Try relatively newer python TLS function ctx = ssl.SSLContext(ssl.PROTOCOL_SSLv23) ctx.options |= ssl.OP_NO_SSLv2 | ssl.OP_NO_SSLv3 ctx.options |= ssl.OP_NO_TLSv1 | ssl.OP_NO_TLSv1_1 ctx.options |= ssl.OP_CIPHER_SERVER_PREFERENCE ctx.set_ciphers(ciphers) ctx.load_cert_chain('/etc/confluent/srvcert.pem', '/etc/confluent/privkey.pem') cnn = ctx.wrap_socket(cnn, server_side=True) except AttributeError: raise Exception('Unable to find workable SSL support') sessionhdl(cnn, authname, cert=cert)