diff --git a/bin/cc-server b/bin/cc-server index d282bf95d14cbe82eb4b4a129465c11208f80b5b..6ed7af5d72bd33e7bdd1fe1b89f4d85820ec0a40 100755 --- a/bin/cc-server +++ b/bin/cc-server @@ -28,7 +28,7 @@ DEFAULT_CONFIGURATION = { 'pidfile': '', 'umask': '0177', 'port': 1984, - 'verbosity': 0, + 'debug': False, 'account_db': None, # None = mandatory option 'interface': '127.0.0.1', 'ssl_cert': None, @@ -60,15 +60,9 @@ class EncodingFormatter(logging.Formatter, object): def run_server(options): # Setup logging facility: - level = logging.ERROR - verb = int(options['verbosity']) - if verb: - if verb == 1: - level = logging.WARNING - elif verb == 2: - level = logging.INFO - else: - level = logging.DEBUG + level = logging.INFO + if options['debug'] in (True, 'yes', 'true'): + level = logging.DEBUG logger = logging.getLogger() logger.setLevel(level) @@ -106,9 +100,9 @@ def run_server(options): try: server.run() except Exception as err: + logging.critical('Server failed: %s', err) import traceback traceback.print_exc(file=sys.stdout) - logging.critical('Server fail: %s' % err) sys.exit(3) if __name__ == '__main__': diff --git a/ccserver/ccserver.py b/ccserver/ccserver.py index 6204754a547757d344962e6876a11aeb23ef6b2b..28f3d025be0033115cd437e04a080e78c1a908fc 100644 --- a/ccserver/ccserver.py +++ b/ccserver/ccserver.py @@ -55,12 +55,14 @@ class CCServer(object): sock.bind((address, port)) sock.listen(CCServer.LISTEN_BACKLOG) + logging.info('Server started to running') + if certfile: logging.info('SSL Certificate: %s', certfile) if keyfile: logging.info('SSL Key: %s', certfile) - logging.info('Started to listen on %s port %s', address, port) + logging.info('Listening on %s:%s', address, port) self.objects = ObjectsDB(self) @@ -184,7 +186,7 @@ class CCServer(object): Run the server mainloop. ''' - logging.info('Running manager mainloop') + logging.debug('Running manager mainloop') self.manager.run() def get_connection(self, login): diff --git a/ccserver/handlers.py b/ccserver/handlers.py index db19e2901fe9c6eea53c6494643c99d1b423f5dd..f956874e51f5578c9d95645671a82c5330e80b97 100644 --- a/ccserver/handlers.py +++ b/ccserver/handlers.py @@ -93,6 +93,8 @@ class CCHandler(RpcHandler): class OnlineCCHandler(CCHandler): def on_disconnect(self, conn): + client = self._server.search_client_by_connection(conn) + logging.info('Client %s disconnected', client.login) self._server.unregister(conn) def _check(self, conn, method, tql=None): @@ -693,6 +695,7 @@ class WelcomeHandler(CCHandler): :thrown AuthenticationError: when authentication fail ''' + logmsg = 'Authentication error from %s: ' conf = self._server.conf with conf: try: @@ -701,21 +704,29 @@ class WelcomeHandler(CCHandler): raise AuthenticationError('Unknown login') else: if 'close' in self._server.conf.show(login)['tags']: + logging.warning(logmsg + 'account closed (%s)', + conn.getpeername(), login) raise AuthenticationError('Account is closed') if role is None: - logging.info('New authentication from %s: failure', - login.encode('ascii', 'ignore')) + logging.warning(logmsg + 'bad login/password (%s)', + conn.getpeername(), login) raise AuthenticationError('Bad login/password') else: if role not in WelcomeHandler.ROLES: + logging.warning(logmsg + 'bad role in account config (%s)', + conn.getpeername(), login) raise BadRoleError('%r is not a legal role' % role) # If authentication is a success, try to register the client: try: self._server.register(login, role, conn) except AlreadyRegistered: + logging.warning(logmsg + 'already connected (%s)', + conn.getpeername(), login) raise AuthenticationError('Already connected') conn.set_handler(WelcomeHandler.ROLES.get(role)(self._server)) - + + logging.info('Authentication success from %s with login %s', + conn.getpeername(), login) return role diff --git a/ccserver/objectsdb.py b/ccserver/objectsdb.py index 801b0557ca1475ee22f9e1d4344d645df251a303..088e07e430b152456216d1e9352759c9edb084d7 100644 --- a/ccserver/objectsdb.py +++ b/ccserver/objectsdb.py @@ -164,7 +164,7 @@ class ObjectsDB(object): for msg in msgs: # Update tags if received from the peer: if msg.get('error') is not None: - logging.error('Error from client while getting tags') + logging.warning('Error from client while getting tags') else: returned = msg['return'] obj = msg['data']