mirror of https://gitlab.com/bashrc2/epicyon
Move daemon login functions to their own module
parent
1d14ea5793
commit
5824f5768f
|
@ -202,6 +202,7 @@ from daemon_get_instance_actor import show_instance_actor
|
||||||
from daemon_get_vcard import show_vcard
|
from daemon_get_vcard import show_vcard
|
||||||
from daemon_get_blog import show_blog_page
|
from daemon_get_blog import show_blog_page
|
||||||
from daemon_get_links import edit_links2
|
from daemon_get_links import edit_links2
|
||||||
|
from daemon_get_login import redirect_to_login_screen
|
||||||
|
|
||||||
# Blogs can be longer, so don't show many per page
|
# Blogs can be longer, so don't show many per page
|
||||||
MAX_POSTS_IN_BLOGS_FEED = 4
|
MAX_POSTS_IN_BLOGS_FEED = 4
|
||||||
|
@ -2213,7 +2214,7 @@ def daemon_http_get(self) -> None:
|
||||||
not self.path.startswith('/.well-known/protocol-handler') and \
|
not self.path.startswith('/.well-known/protocol-handler') and \
|
||||||
self.path != '/users/news/linksmobile' and \
|
self.path != '/users/news/linksmobile' and \
|
||||||
self.path != '/users/news/newswiremobile':
|
self.path != '/users/news/newswiremobile':
|
||||||
if _redirect_to_login_screen(self, calling_domain, self.path,
|
if redirect_to_login_screen(self, calling_domain, self.path,
|
||||||
self.server.http_prefix,
|
self.server.http_prefix,
|
||||||
self.server.domain_full,
|
self.server.domain_full,
|
||||||
self.server.onion_domain,
|
self.server.onion_domain,
|
||||||
|
@ -4491,66 +4492,6 @@ def _get_speaker(self, calling_domain: str, referer_domain: str,
|
||||||
write2(self, msg)
|
write2(self, msg)
|
||||||
|
|
||||||
|
|
||||||
def _redirect_to_login_screen(self, calling_domain: str, path: str,
|
|
||||||
http_prefix: str, domain_full: str,
|
|
||||||
onion_domain: str, i2p_domain: str,
|
|
||||||
getreq_start_time,
|
|
||||||
authorized: bool, debug: bool):
|
|
||||||
"""Redirects to the login screen if necessary
|
|
||||||
"""
|
|
||||||
divert_to_login_screen = False
|
|
||||||
if '/media/' not in path and \
|
|
||||||
'/ontologies/' not in path and \
|
|
||||||
'/data/' not in path and \
|
|
||||||
'/sharefiles/' not in path and \
|
|
||||||
'/statuses/' not in path and \
|
|
||||||
'/emoji/' not in path and \
|
|
||||||
'/tags/' not in path and \
|
|
||||||
'/tagmaps/' not in path and \
|
|
||||||
'/avatars/' not in path and \
|
|
||||||
'/favicons/' not in path and \
|
|
||||||
'/headers/' not in path and \
|
|
||||||
'/fonts/' not in path and \
|
|
||||||
'/icons/' not in path:
|
|
||||||
divert_to_login_screen = True
|
|
||||||
if path.startswith('/users/'):
|
|
||||||
nick_str = path.split('/users/')[1]
|
|
||||||
if '/' not in nick_str and '?' not in nick_str:
|
|
||||||
divert_to_login_screen = False
|
|
||||||
else:
|
|
||||||
if path.endswith('/following') or \
|
|
||||||
path.endswith('/followers') or \
|
|
||||||
path.endswith('/skills') or \
|
|
||||||
path.endswith('/roles') or \
|
|
||||||
path.endswith('/wanted') or \
|
|
||||||
path.endswith('/shares'):
|
|
||||||
divert_to_login_screen = False
|
|
||||||
|
|
||||||
if divert_to_login_screen and not authorized:
|
|
||||||
divert_path = '/login'
|
|
||||||
if self.server.news_instance:
|
|
||||||
# for news instances if not logged in then show the
|
|
||||||
# front page
|
|
||||||
divert_path = '/users/news'
|
|
||||||
if debug:
|
|
||||||
print('DEBUG: divert_to_login_screen=' +
|
|
||||||
str(divert_to_login_screen))
|
|
||||||
print('DEBUG: authorized=' + str(authorized))
|
|
||||||
print('DEBUG: path=' + path)
|
|
||||||
redirect_url = \
|
|
||||||
get_instance_url(calling_domain,
|
|
||||||
http_prefix, domain_full,
|
|
||||||
onion_domain, i2p_domain) + \
|
|
||||||
divert_path
|
|
||||||
redirect_headers(self, redirect_url, None, calling_domain)
|
|
||||||
fitness_performance(getreq_start_time,
|
|
||||||
self.server.fitness,
|
|
||||||
'_GET', '_redirect_to_login_screen',
|
|
||||||
debug)
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
|
|
||||||
def _get_ontology(self, calling_domain: str,
|
def _get_ontology(self, calling_domain: str,
|
||||||
path: str, base_dir: str,
|
path: str, base_dir: str,
|
||||||
getreq_start_time) -> None:
|
getreq_start_time) -> None:
|
||||||
|
|
|
@ -0,0 +1,72 @@
|
||||||
|
__filename__ = "daemon_get_login.py"
|
||||||
|
__author__ = "Bob Mottram"
|
||||||
|
__license__ = "AGPL3+"
|
||||||
|
__version__ = "1.5.0"
|
||||||
|
__maintainer__ = "Bob Mottram"
|
||||||
|
__email__ = "bob@libreserver.org"
|
||||||
|
__status__ = "Production"
|
||||||
|
__module_group__ = "Core"
|
||||||
|
|
||||||
|
from utils import get_instance_url
|
||||||
|
from httpheaders import redirect_headers
|
||||||
|
from fitnessFunctions import fitness_performance
|
||||||
|
|
||||||
|
|
||||||
|
def redirect_to_login_screen(self, calling_domain: str, path: str,
|
||||||
|
http_prefix: str, domain_full: str,
|
||||||
|
onion_domain: str, i2p_domain: str,
|
||||||
|
getreq_start_time,
|
||||||
|
authorized: bool, debug: bool):
|
||||||
|
"""Redirects to the login screen if necessary
|
||||||
|
"""
|
||||||
|
divert_to_login_screen = False
|
||||||
|
if '/media/' not in path and \
|
||||||
|
'/ontologies/' not in path and \
|
||||||
|
'/data/' not in path and \
|
||||||
|
'/sharefiles/' not in path and \
|
||||||
|
'/statuses/' not in path and \
|
||||||
|
'/emoji/' not in path and \
|
||||||
|
'/tags/' not in path and \
|
||||||
|
'/tagmaps/' not in path and \
|
||||||
|
'/avatars/' not in path and \
|
||||||
|
'/favicons/' not in path and \
|
||||||
|
'/headers/' not in path and \
|
||||||
|
'/fonts/' not in path and \
|
||||||
|
'/icons/' not in path:
|
||||||
|
divert_to_login_screen = True
|
||||||
|
if path.startswith('/users/'):
|
||||||
|
nick_str = path.split('/users/')[1]
|
||||||
|
if '/' not in nick_str and '?' not in nick_str:
|
||||||
|
divert_to_login_screen = False
|
||||||
|
else:
|
||||||
|
if path.endswith('/following') or \
|
||||||
|
path.endswith('/followers') or \
|
||||||
|
path.endswith('/skills') or \
|
||||||
|
path.endswith('/roles') or \
|
||||||
|
path.endswith('/wanted') or \
|
||||||
|
path.endswith('/shares'):
|
||||||
|
divert_to_login_screen = False
|
||||||
|
|
||||||
|
if divert_to_login_screen and not authorized:
|
||||||
|
divert_path = '/login'
|
||||||
|
if self.server.news_instance:
|
||||||
|
# for news instances if not logged in then show the
|
||||||
|
# front page
|
||||||
|
divert_path = '/users/news'
|
||||||
|
if debug:
|
||||||
|
print('DEBUG: divert_to_login_screen=' +
|
||||||
|
str(divert_to_login_screen))
|
||||||
|
print('DEBUG: authorized=' + str(authorized))
|
||||||
|
print('DEBUG: path=' + path)
|
||||||
|
redirect_url = \
|
||||||
|
get_instance_url(calling_domain,
|
||||||
|
http_prefix, domain_full,
|
||||||
|
onion_domain, i2p_domain) + \
|
||||||
|
divert_path
|
||||||
|
redirect_headers(self, redirect_url, None, calling_domain)
|
||||||
|
fitness_performance(getreq_start_time,
|
||||||
|
self.server.fitness,
|
||||||
|
'_GET', '_redirect_to_login_screen',
|
||||||
|
debug)
|
||||||
|
return True
|
||||||
|
return False
|
Loading…
Reference in New Issue