From 4760e35fda02eeaaba551c6b67cd9fde703a94b1 Mon Sep 17 00:00:00 2001 From: Darksider3 Date: Wed, 16 Oct 2019 16:29:34 +0200 Subject: [PATCH] it's freakin stupid to import IDs. Nothing depends on them. Ignore them. --- private/Backup.py | 10 ++++----- public/userapplication.py | 47 ++++++++++++++++++--------------------- 2 files changed, 27 insertions(+), 30 deletions(-) diff --git a/private/Backup.py b/private/Backup.py index 39801b0..e71599e 100644 --- a/private/Backup.py +++ b/private/Backup.py @@ -54,16 +54,12 @@ class Backup: pass # empty tuple means everything try: with open(fname, 'r', newline='') as f: - import lib.sqlitedb as sql + import lib.sqlitedb import lib.System sysctl = lib.System.System() sql = lib.sqlitedb.SQLitedb(CFG.REG_FILE) reader = csv.DictReader(f) # @TODO csv.Sniffer to compare? When yes, give force-accept option for row in reader: - sql.safequery("INSERT INTO `applications` (id, username, name, timestamp, email, pubkey, status) " - "VALUES (?,?,?,?,?,?,?)", - tuple([row["id"], row["username"], row["name"], row["timestamp"], - row["email"], row["pubkey"], row["status"]])) # @TODO: without IDs if row["status"] == "1": sysctl.register(row["username"]) sysctl.lock_user_pw(row["username"]) @@ -76,6 +72,10 @@ class Backup: row['status'] + "not approved, therefore not registered.") else: print(f"Uhm, ok. Type is {type(row['status'])}, and value is {row['status']}") + sql.safequery("INSERT INTO `applications` (username, name, timestamp, email, pubkey, status) " + "VALUES (?,?,?,?,?,?)", + tuple([row["username"], row["name"], row["timestamp"], + row["email"], row["pubkey"], row["status"]])) # @TODO: without IDs pass # @TODO: Import with sqlitedb and system. Will be fun Kappa except OSError as E: print(f"UUFFF, something went WRONG with the file {fname}: {E}") diff --git a/public/userapplication.py b/public/userapplication.py index 7639040..3ca0206 100755 --- a/public/userapplication.py +++ b/public/userapplication.py @@ -1,30 +1,26 @@ #!/usr/bin/env python3 -import re, configparser, logging, sqlite3, argparse -from os import getcwd +import argparse +import configparser +import logging +import re +import sqlite3 from os import environ +from os import getcwd from os import path as ospath -import re, configparser, logging, sqlite3 - try: cwd = environ.get('TILDE_CONF') if cwd is None: - cwd=getcwd()+"/applicationsconfig.ini" + cwd = getcwd()+"/applicationsconfig.ini" else: if ospath.isfile(cwd) is False: - cwd=getcwd()+"/applicationsconfig.ini" + cwd = getcwd() + "/applicationsconfig.ini" # cwd is now either cwd/applicationsconfig or $TILDE_CONF argparser = argparse.ArgumentParser(description='interactive registration formular for tilde platforms') argparser.add_argument('-c', '--config', default=cwd, type=str, help='Config file', required=False) args = argparser.parse_args() CONF_FILE = args.config -except: - # intended broad, @TODO check them all for errors instead of everything in one - logging.exception("Argumentparser-Exception: ") - exit(0) - -try: config = configparser.ConfigParser() config.read(CONF_FILE) logging.basicConfig(format="%(asctime)s: %(message)s", filename=config['DEFAULT']['log_file'], @@ -82,17 +78,17 @@ def __checkSQLite(cursor, connection): def check_username(value): global VALID_USER if len(value) < 3: - VALID_USER=False + VALID_USER = False return False if len(value) > 16: - VALID_USER=False + VALID_USER = False return False try: from pwd import getpwnam getpwnam(value) VALID_USER = False - # intended broad - except Exception: + # everything from pwd throws an KeyError when the given user cannot be found + except KeyError: VALID_USER = True return True return False @@ -103,31 +99,32 @@ def validate_pubkey(value): global VALID_SSH import base64 if len(value) > 8192 or len(value) < 80: - VALID_SSH=False + VALID_SSH = False return False value = value.replace("\"", "").replace("'", "").replace("\\\"", "") value = value.split(' ') - types = [ 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', - 'ecdsa-sha2-nistp521', 'ssh-rsa', 'ssh-dss', 'ssh-ed25519' ] + types = ['ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', + 'ecdsa-sha2-nistp521', 'ssh-rsa', 'ssh-dss', 'ssh-ed25519'] if value[0] not in types: - VALID_SSH=False + VALID_SSH = False return False try: base64.decodebytes(bytes(value[1], "utf-8")) except TypeError: - VALID_SSH=False + VALID_SSH = False return False - VALID_SSH=True + VALID_SSH = True return True def main(): print(" ▗▀▖ \n▗▖▖ ▐ ▌ ▌▛▀▖\n▘▝▗▖▜▀ ▌ ▌▌ ▌\n ▝▘▐ ▝▀▘▘ ▘") - username = input("Welcome to the ~.fun user application form!\n\nWhat is your desired username? [a-z0-9] allowed:\n") + username = input("Welcome to the ~.fun user application form!\n\n" + "What is your desired username? [a-z0-9] allowed:\n") while (not re.match("[a-z]+[a-z0-9]", username)) or (not check_username(username)): username = input("Invalid Username, maybe it exists already?\nValid characters are only a-z and 0-9." "\nMake sure your username starts with a character and not a number" @@ -160,8 +157,8 @@ def main(): if re.match("[yY]", validation): print("Thank you for your application! We'll get in touch shortly. 🐧") try: - connection=sqlite3.connect(REG_FILE) - cursor=connection.cursor() + connection = sqlite3.connect(REG_FILE) + cursor = connection.cursor() __checkSQLite(cursor, connection) addtotable(cursor, connection, username, fullname, email, pubkey) connection.commit()