From 012d1f0b8ec7fa2e45043e59071a87f050cf9f5d Mon Sep 17 00:00:00 2001 From: Tulio Casagrande Date: Wed, 25 Jan 2017 17:12:21 -0200 Subject: [#907] Suppress traceback upon an unauthorized login --- service/pixelated/resources/login_resource.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'service/pixelated/resources/login_resource.py') diff --git a/service/pixelated/resources/login_resource.py b/service/pixelated/resources/login_resource.py index 2a11b73e..6d6bee20 100644 --- a/service/pixelated/resources/login_resource.py +++ b/service/pixelated/resources/login_resource.py @@ -21,6 +21,7 @@ from pixelated.authentication import Authenticator from pixelated.config.leap import BootstrapUserServices from pixelated.resources import BaseResource, UnAuthorizedResource, IPixelatedSession from pixelated.resources import handle_error_deferred +from twisted.cred.error import UnauthorizedLogin from twisted.internet import defer from twisted.logger import Logger from twisted.python.filepath import FilePath @@ -145,8 +146,11 @@ class LoginResource(BaseResource): self._complete_bootstrap(user_auth, request) def render_error(error): - log.info('Login error for %s' % request.args['username'][0]) - log.info('%s' % error) + if error.type is UnauthorizedLogin: + log.info('Unauthorized login for %s. User typed wrong username/password combination.' % request.args['username'][0]) + else: + log.error('Authentication error for %s' % request.args['username'][0]) + log.error('%s' % error) request.setResponseCode(UNAUTHORIZED) return self._render_template(request, 'Invalid username or password') -- cgit v1.2.3 From 772592f612d615e3a1b1486d33edca4d298f0d04 Mon Sep 17 00:00:00 2001 From: Tulio Casagrande Date: Wed, 25 Jan 2017 17:42:07 -0200 Subject: Extract duplicated methods to a common parent --- service/pixelated/resources/login_resource.py | 26 +++++--------------------- 1 file changed, 5 insertions(+), 21 deletions(-) (limited to 'service/pixelated/resources/login_resource.py') diff --git a/service/pixelated/resources/login_resource.py b/service/pixelated/resources/login_resource.py index 6d6bee20..a6f4f9cf 100644 --- a/service/pixelated/resources/login_resource.py +++ b/service/pixelated/resources/login_resource.py @@ -20,7 +20,7 @@ from xml.sax import SAXParseException from pixelated.authentication import Authenticator from pixelated.config.leap import BootstrapUserServices from pixelated.resources import BaseResource, UnAuthorizedResource, IPixelatedSession -from pixelated.resources import handle_error_deferred +from pixelated.resources import handle_error_deferred, get_startup_folder, get_static_folder from twisted.cred.error import UnauthorizedLogin from twisted.internet import defer from twisted.logger import Logger @@ -35,22 +35,6 @@ from twisted.web.template import Element, XMLFile, renderElement, renderer log = Logger() -def _get_startup_folder(): - path = os.path.dirname(os.path.abspath(__file__)) - return os.path.join(path, '..', 'assets') - - -def _get_static_folder(): - static_folder = os.path.abspath(os.path.join(os.path.abspath(__file__), "..", "..", "..", "web-ui", "dist")) - # this is a workaround for packaging - if not os.path.exists(static_folder): - static_folder = os.path.abspath( - os.path.join(os.path.abspath(__file__), "..", "..", "..", "..", "web-ui", "dist")) - if not os.path.exists(static_folder): - static_folder = os.path.join('/', 'usr', 'share', 'pixelated-user-agent') - return static_folder - - def parse_accept_language(all_headers): accepted_languages = ['pt-BR', 'en-US'] languages = all_headers.get('accept-language', '').split(';')[0] @@ -61,7 +45,7 @@ def parse_accept_language(all_headers): class DisclaimerElement(Element): - loader = XMLFile(FilePath(os.path.join(_get_startup_folder(), '_login_disclaimer_banner.html'))) + loader = XMLFile(FilePath(os.path.join(get_startup_folder(), '_login_disclaimer_banner.html'))) def __init__(self, banner): super(DisclaimerElement, self).__init__() @@ -84,7 +68,7 @@ class DisclaimerElement(Element): class LoginWebSite(Element): - loader = XMLFile(FilePath(os.path.join(_get_startup_folder(), 'login.html'))) + loader = XMLFile(FilePath(os.path.join(get_startup_folder(), 'login.html'))) def __init__(self, error_msg=None, disclaimer_banner_file=None): super(LoginWebSite, self).__init__() @@ -107,8 +91,8 @@ class LoginResource(BaseResource): def __init__(self, services_factory, provider=None, disclaimer_banner=None, authenticator=None): BaseResource.__init__(self, services_factory) - self._static_folder = _get_static_folder() - self._startup_folder = _get_startup_folder() + self._static_folder = get_static_folder() + self._startup_folder = get_startup_folder() self._disclaimer_banner = disclaimer_banner self._provider = provider self._authenticator = authenticator or Authenticator(provider) -- cgit v1.2.3 From 2799312871c18d91159c46f738d8d2da118d94bc Mon Sep 17 00:00:00 2001 From: Tulio Casagrande Date: Wed, 25 Jan 2017 17:44:01 -0200 Subject: Remove unused variable --- service/pixelated/resources/login_resource.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'service/pixelated/resources/login_resource.py') diff --git a/service/pixelated/resources/login_resource.py b/service/pixelated/resources/login_resource.py index a6f4f9cf..4d78174f 100644 --- a/service/pixelated/resources/login_resource.py +++ b/service/pixelated/resources/login_resource.py @@ -20,7 +20,7 @@ from xml.sax import SAXParseException from pixelated.authentication import Authenticator from pixelated.config.leap import BootstrapUserServices from pixelated.resources import BaseResource, UnAuthorizedResource, IPixelatedSession -from pixelated.resources import handle_error_deferred, get_startup_folder, get_static_folder +from pixelated.resources import handle_error_deferred, get_startup_folder from twisted.cred.error import UnauthorizedLogin from twisted.internet import defer from twisted.logger import Logger @@ -91,7 +91,6 @@ class LoginResource(BaseResource): def __init__(self, services_factory, provider=None, disclaimer_banner=None, authenticator=None): BaseResource.__init__(self, services_factory) - self._static_folder = get_static_folder() self._startup_folder = get_startup_folder() self._disclaimer_banner = disclaimer_banner self._provider = provider -- cgit v1.2.3