it's freakin stupid to import IDs. Nothing depends on them. Ignore them.

feature-admin-split
Darksider3 5 years ago
parent 96c403a3d9
commit 4760e35fda

@ -54,16 +54,12 @@ class Backup:
pass # empty tuple means everything pass # empty tuple means everything
try: try:
with open(fname, 'r', newline='') as f: with open(fname, 'r', newline='') as f:
import lib.sqlitedb as sql import lib.sqlitedb
import lib.System import lib.System
sysctl = lib.System.System() sysctl = lib.System.System()
sql = lib.sqlitedb.SQLitedb(CFG.REG_FILE) sql = lib.sqlitedb.SQLitedb(CFG.REG_FILE)
reader = csv.DictReader(f) # @TODO csv.Sniffer to compare? When yes, give force-accept option reader = csv.DictReader(f) # @TODO csv.Sniffer to compare? When yes, give force-accept option
for row in reader: 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": if row["status"] == "1":
sysctl.register(row["username"]) sysctl.register(row["username"])
sysctl.lock_user_pw(row["username"]) sysctl.lock_user_pw(row["username"])
@ -76,6 +72,10 @@ class Backup:
row['status'] + "not approved, therefore not registered.") row['status'] + "not approved, therefore not registered.")
else: else:
print(f"Uhm, ok. Type is {type(row['status'])}, and value is {row['status']}") 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 pass # @TODO: Import with sqlitedb and system. Will be fun Kappa
except OSError as E: except OSError as E:
print(f"UUFFF, something went WRONG with the file {fname}: {E}") print(f"UUFFF, something went WRONG with the file {fname}: {E}")

@ -1,30 +1,26 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import re, configparser, logging, sqlite3, argparse import argparse
from os import getcwd import configparser
import logging
import re
import sqlite3
from os import environ from os import environ
from os import getcwd
from os import path as ospath from os import path as ospath
import re, configparser, logging, sqlite3
try: try:
cwd = environ.get('TILDE_CONF') cwd = environ.get('TILDE_CONF')
if cwd is None: if cwd is None:
cwd=getcwd()+"/applicationsconfig.ini" cwd = getcwd()+"/applicationsconfig.ini"
else: else:
if ospath.isfile(cwd) is False: if ospath.isfile(cwd) is False:
cwd=getcwd()+"/applicationsconfig.ini" cwd = getcwd() + "/applicationsconfig.ini"
# cwd is now either cwd/applicationsconfig or $TILDE_CONF # cwd is now either cwd/applicationsconfig or $TILDE_CONF
argparser = argparse.ArgumentParser(description='interactive registration formular for tilde platforms') argparser = argparse.ArgumentParser(description='interactive registration formular for tilde platforms')
argparser.add_argument('-c', '--config', default=cwd, type=str, help='Config file', required=False) argparser.add_argument('-c', '--config', default=cwd, type=str, help='Config file', required=False)
args = argparser.parse_args() args = argparser.parse_args()
CONF_FILE = args.config 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 = configparser.ConfigParser()
config.read(CONF_FILE) config.read(CONF_FILE)
logging.basicConfig(format="%(asctime)s: %(message)s", filename=config['DEFAULT']['log_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): def check_username(value):
global VALID_USER global VALID_USER
if len(value) < 3: if len(value) < 3:
VALID_USER=False VALID_USER = False
return False return False
if len(value) > 16: if len(value) > 16:
VALID_USER=False VALID_USER = False
return False return False
try: try:
from pwd import getpwnam from pwd import getpwnam
getpwnam(value) getpwnam(value)
VALID_USER = False VALID_USER = False
# intended broad # everything from pwd throws an KeyError when the given user cannot be found
except Exception: except KeyError:
VALID_USER = True VALID_USER = True
return True return True
return False return False
@ -103,31 +99,32 @@ def validate_pubkey(value):
global VALID_SSH global VALID_SSH
import base64 import base64
if len(value) > 8192 or len(value) < 80: if len(value) > 8192 or len(value) < 80:
VALID_SSH=False VALID_SSH = False
return False return False
value = value.replace("\"", "").replace("'", "").replace("\\\"", "") value = value.replace("\"", "").replace("'", "").replace("\\\"", "")
value = value.split(' ') value = value.split(' ')
types = [ 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', types = ['ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384',
'ecdsa-sha2-nistp521', 'ssh-rsa', 'ssh-dss', 'ssh-ed25519' ] 'ecdsa-sha2-nistp521', 'ssh-rsa', 'ssh-dss', 'ssh-ed25519']
if value[0] not in types: if value[0] not in types:
VALID_SSH=False VALID_SSH = False
return False return False
try: try:
base64.decodebytes(bytes(value[1], "utf-8")) base64.decodebytes(bytes(value[1], "utf-8"))
except TypeError: except TypeError:
VALID_SSH=False VALID_SSH = False
return False return False
VALID_SSH=True VALID_SSH = True
return True return True
def main(): def main():
print(" ▗▀▖ \n▗▖▖ ▐ ▌ ▌▛▀▖\n▘▝▗▖▜▀ ▌ ▌▌ ▌\n ▝▘▐ ▝▀▘▘ ▘") 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)): 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." 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" "\nMake sure your username starts with a character and not a number"
@ -160,8 +157,8 @@ def main():
if re.match("[yY]", validation): if re.match("[yY]", validation):
print("Thank you for your application! We'll get in touch shortly. 🐧") print("Thank you for your application! We'll get in touch shortly. 🐧")
try: try:
connection=sqlite3.connect(REG_FILE) connection = sqlite3.connect(REG_FILE)
cursor=connection.cursor() cursor = connection.cursor()
__checkSQLite(cursor, connection) __checkSQLite(cursor, connection)
addtotable(cursor, connection, username, fullname, email, pubkey) addtotable(cursor, connection, username, fullname, email, pubkey)
connection.commit() connection.commit()

Loading…
Cancel
Save