def route(user): init_session() fg = FeedGenerator() fg.title(session['site_name']) fg.subtitle('Trash bag of links') fg.generator(session['site_name']) fg.link(href=get_config_value('address')) fg.logo(f'{get_config_value("address")}/static/img/logo.png') fg.language('en') rss_posts = get_all_posts_for_rss( ) if user is None else get_all_user_posts_for_rss(user) for post in reversed(rss_posts): post_title = Markup((post.title[:60] + '...') if len(post.title) > 60 else post.title) fe = fg.add_entry() fe.title(f'[{post.tags}] {post_title}') fe.link(href=html.unescape(Markup(post.url))) fe.author(name=post.username) fe.pubDate( datetime.datetime.fromtimestamp(post.datetime).strftime('%c +10')) fe.updated( datetime.datetime.fromtimestamp(post.updated).strftime('%c +10')) response = make_response(fg.rss_str(pretty=True)) response.headers.set('Content-Type', 'application/rss+xml') return response
def route(): init_session() if request.method == 'GET': if 'q' in request.args: query = request.args.get('q', 1, type=str) if not query.strip() or query.isspace(): return render_template(f'{session["view_mode"]}/search.html', empty_query=True) else: return render_template(f'{session["view_mode"]}/search.html') term = 'title' search_query = query if query.startswith('!tag'): term = 'tag' query = query.replace('!tag ', '', 1) if query.startswith('!domain'): term = 'domain' query = query.replace('!domain ', '') if query.startswith('!user'): term = 'user' query = query.replace('!user ', '') list_of_posts = [] page = request.args.get('p', 1, type=int) page_total, page_info = search_for_posts(page, query, term) if len(page_info.items) > 0: for post in page_info.items: list_of_posts.append(post_reformat(post)) return render_template(f'{session["view_mode"]}/search.html', is_valid_search=True, query=search_query, search_count=page_total, page=page_info, posts=list_of_posts) else: return render_template(f'{session["view_mode"]}/search.html', nothing_found=True) else: return render_template(f'{session["view_mode"]}/search.html')
def route(post_id): init_session() if post_id is None: if request.method == 'POST': user = escape(session['username']) title, url, tags = request.form['link-title'], request.form[ 'link-url'], request.form['link-tags'] is_post_valid, error_tag = post_check(title, url, tags) if is_post_valid: insert_post(user, escape(title), escape(url), escape(tags)) alert_telegram_channel( f'<b>[{tags}] {title}</b>\n<i>Posted by {user}</i>\n<a href="{url}">Link</a>' ) return redirect(url_for('route.index')) else: return render_template(f'{session["view_mode"]}/submit.html', options=list_of_tags(), error=error_tag, title=title, url=url, tags=tags) else: return render_template(f'{session["view_mode"]}/submit.html', options=list_of_tags()) else: if isinstance(int(post_id), int): if request.method == 'POST': title, url, tags = request.form['link-title'], request.form[ 'link-url'], request.form['link-tags'] is_post_valid, error_tag = post_check(title, url, tags) if is_post_valid: edit_post(post_id, escape(title), escape(url), escape(tags)) return redirect(url_for('route.index')) else: return render_template( f'{session["view_mode"]}/submit.html', options=list_of_tags(), error=error_tag, title=title, url=url, tags=tags) else: post = get_post(post_id) no_ownership = True if post.username != escape( session['username']) else False restricted_edit = True if (int(time.time()) - post.datetime) > 86400 else False return render_template(f'{session["view_mode"]}/edit.html', options=list_of_tags(), id=post.id, title=Markup(post.title), url=post.url, tag=post.tags, no_ownership=no_ownership, restricted_edit=restricted_edit) else: return redirect(url_for('route.index'))
def route(top_or_recent, template): init_session() posts = [] for post in top_or_recent: posts.append(post_reformat(post)) return render_template(f'{session["view_mode"]}/{template}.html', posts=posts)
def route(): init_session() list_of_posts = [] page = request.args.get('p', 1, type=int) if session["view_mode"] == 'desktop': page_info = get_all_posts(page) else: page_info = get_all_posts(page, 5) for post in page_info.items: list_of_posts.append(post_reformat(post)) return render_template(f'{session["view_mode"]}/index.html', page=page_info, posts=list_of_posts)
def route(viewuser): init_session() short_password = False if 'short_password' in session and session['short_password']: session.pop('short_password', None) short_password = True if viewuser is not None: user_request = escape(viewuser) details = get_all_user_details(user_request) if details is None: return render_template(f'{session["view_mode"]}/user.html', viewuser=escape(viewuser), error=True) points, post_count = get_user_post_points( user_request), get_user_post_count(user_request) top_posts, recent_posts = [], [] for post in get_all_top_posts(escape(viewuser)): top_posts.append(post_reformat(post)) for post in get_all_recent_updated_posts(escape(viewuser)): recent_posts.append(post_reformat(post)) can_see_invite_code = True if user_request == escape( session['username']) else False return render_template(f'{session["view_mode"]}/user.html', viewuser=escape(viewuser), points=points, about_me=details.about_me, last_login=datetime.datetime.fromtimestamp( details.last_login).strftime('%c'), invited_by=details.invited_by, can_see_invite_code=can_see_invite_code, invite_code=details.invite_code, submissions=post_count, short_password=short_password, num_posts=len(top_posts), top_posts=top_posts, recent_posts=recent_posts) else: tree = Tree() tree.create_node(tag='overseer', identifier='overseer') count = 0 for u, i in get_all_user_invitee(): if u != 'overseer': tree.create_node(tag=u, identifier=u, parent=i) count += 1 return render_template(f'{session["view_mode"]}/user_tree.html', viewuser=escape(viewuser), tree=tree.show(stdout=False), total=count)
def route(action, post_id): init_session() if 'logged_in' in session: if session['logged_in'] and int(post_id) > 0: if action == 'delete': if get_post(post_id) is not None: delete_post(post_id, escape(session['username'])) if action == 'upvote': if not check_already_vote_or_old(post_id, escape(session['username'])): add_vote_to_post(post_id, escape(session['username'])) if action == 'report': if not check_already_report(post_id, escape( session['username'])): add_report_to_post(post_id, escape(session['username'])) return redirect(url_for('route.index'))
def route(): init_session() if request.method == 'POST': username = request.form['username'].lower() if len(request.form['password'].lower()) < 8: session['short_password'] = True return redirect(f'/u/{username}') if session['logged_in'] and username == escape(session['username']): if get_all_user_details(username) is not None: password = bcrypt.hashpw(escape(request.form['password']).encode('utf-8'), bcrypt.gensalt(16)) options = ';' change_user_details(username, password, options) session.clear() return render_template(f'{session["view_mode"]}/private.html', password_changed=True, type=f'Password Changed for {username}') return redirect(url_for('route.index'))
def route(): init_session() if request.method == 'POST': user_login = get_all_user_details(escape(request.form['username'].lower())) if user_login is not None: if bcrypt.checkpw(escape(request.form['password']).encode('utf-8'), user_login.password): update_last_login_on_user(user_login.username) session['logged_in'], session['username'], session['current_page'] = True, user_login.username, 1 return redirect(url_for('route.index')) else: return render_template(f'{session["view_mode"]}/login.html', error=True) else: return render_template(f'{session["view_mode"]}/login.html', error=True) elif request.method == 'GET': return render_template(f'{session["view_mode"]}/login.html') else: return redirect(url_for('route.index'))
def route(code): init_session() if request.method == 'POST': user_invite = get_user_by_invite_code(code) if does_user_exist(request.form['username'].lower()): return render_template(f'{session["view_mode"]}/invite.html', invite_from=user_invite.username, invite_code=code, user_exists=True) if len(request.form['username'].lower()) < 4: return render_template(f'{session["view_mode"]}/invite.html', invite_from=user_invite.username, invite_code=code, less_than_four=True) if len(request.form['username'].lower()) > 16: return render_template(f'{session["view_mode"]}/invite.html', invite_from=user_invite.username, invite_code=code, more_than_sixteen=True) if len(request.form['password'].lower()) < 8: return render_template(f'{session["view_mode"]}/invite.html', invite_from=user_invite.username, invite_code=code, short_password=True) if request.form['username'].lower() in [ 'admin', 'administrator', 'root', 'system', 'qanon', '4chan', 'quisquiliae', 'user', 'username', 'hitler', 'jesus', 'stalin', 'trump', 'phil', 'overseer', 'rocketotter' ] or profanity.contains_profanity(request.form['username'].lower()): return render_template(f'{session["view_mode"]}/invite.html', invite_from=user_invite.username, invite_code=code, blacklisted=True) invited_by = get_user_by_invite_code(request.form['invite_code']) private_key = [] for i in range(4): private_key.append(RandomWords().get_random_word(minLength=4, maxLength=8, includePartOfSpeech="verb")) private_key_raw = '-'.join(private_key).lower() private_key = bcrypt.hashpw(escape('-'.join(private_key).lower()).encode('utf-8'), bcrypt.gensalt(16)) invite_code = generate_code(32) insert_user(escape(request.form['username'].lower()), bcrypt.hashpw(escape(request.form['password']).encode('utf-8'), bcrypt.gensalt(16)), private_key=private_key, invited_by=invited_by.username, invite_code=invite_code) return render_template(f'{session["view_mode"]}/private.html', user_created=True, private_key=private_key_raw, user=escape(request.form['username'].lower())) elif request.method == 'GET': if code is None: return redirect(url_for('route.index')) user_invite = get_user_by_invite_code(code) if user_invite is not None: return render_template(f'{session["view_mode"]}/invite.html', invalid_invite_code=False, invite_from=user_invite.username, invite_code=code, valid_invite_code=True) else: return render_template(f'{session["view_mode"]}/invite.html', invalid_invite_code=True) else: return redirect(url_for('route.index'))
def change_view(): init_session() session['view_mode'] = 'mobile' if session[ 'view_mode'] == 'desktop' else 'desktop' return redirect(url_for('route.index'))
def page_not_found(error): init_session() return render_template(f'{session["view_mode"]}/error.html', error=f'{error.code} {error.name}')