@ -2,7 +2,6 @@ import lib.CFG as CFG
import csv
import csv
import os
import os
import lib . UserExceptions
import lib . UserExceptions
import lib . validator
def ImportFromFile ( fname : str = CFG . args . file , db : str = CFG . REG_FILE , userids : tuple = tuple ( [ ] ) ) :
def ImportFromFile ( fname : str = CFG . args . file , db : str = CFG . REG_FILE , userids : tuple = tuple ( [ ] ) ) :
@ -17,33 +16,17 @@ def ImportFromFile(fname: str = CFG.args.file, db: str = CFG.REG_FILE, userids:
# noinspection PyBroadException
# noinspection PyBroadException
try :
try :
with open ( fname , ' r ' , newline = ' ' ) as f :
with open ( fname , ' r ' , newline = ' ' ) as f :
import lib . validator
err = lib . validator . checkImportFile ( f )
if err is not True :
print ( err )
exit ( 0 )
import lib . sqlitedb
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 :
db_insert = False
# if any of this fails move on to the next user, just print a relatively helpful message lel
if not lib . validator . checkUsernameCharacters ( row [ " username " ] ) :
print ( f " The username contains unsupported characters or starts with a number: "
f " { row [ ' username ' ] } . Skipping. " )
continue
if not lib . validator . checkUsernameLength ( row [ " username " ] ) :
print ( f " The username { row [ ' username ' ] } is either too long(>16) or short(<3). Skipping. " )
continue
if not lib . validator . checkSSHKey ( row [ " pubkey " ] ) :
print ( f " Following SSH-Key isn ' t valid: { row [ ' pubkey ' ] } . Skipping. " )
continue
if not lib . validator . checkEmail ( row [ " email " ] ) :
print ( f " The E-Mail address { row [ ' email ' ] } is not valid. Skipping " )
continue
if not lib . validator . checkUserExists ( row [ " username " ] ) :
print ( f " The user ' { row [ ' username ' ] } ' already exists. Skipping. " )
continue
if not lib . validator . checkDatetimeFormat ( row [ " timestamp " ] ) :
print ( f " The timestamp ' { row [ ' timestamp ' ] } ' from user ' { row [ ' username ' ] } ' is invalid. Skipping. " )
continue
if row [ " status " ] == " 1 " :
if row [ " status " ] == " 1 " :
try :
try :
sysctl . register ( row [ " username " ] )
sysctl . register ( row [ " username " ] )
@ -63,13 +46,9 @@ def ImportFromFile(fname: str = CFG.args.file, db: str = CFG.REG_FILE, userids:
except Exception as E : # @TODO well less broad is hard to achieve Kappa
except Exception as E : # @TODO well less broad is hard to achieve Kappa
print ( E )
print ( E )
continue
continue
db_insert = True
elif row [ " status " ] == " 0 " :
elif row [ " status " ] == " 0 " :
print ( row [ ' username ' ] + " not approved, therefore not registered. " )
print ( row [ ' username ' ] + " not approved, therefore not registered. " )
db_insert = True
try :
try :
if not db_insert :
continue
sql . safequery (
sql . safequery (
" INSERT INTO `applications` (username, name, timestamp, email, pubkey, status) "
" INSERT INTO `applications` (username, name, timestamp, email, pubkey, status) "
" VALUES (?,?,?,?,?,?) " , tuple ( [ row [ " username " ] , row [ " name " ] , row [ " timestamp " ] ,
" VALUES (?,?,?,?,?,?) " , tuple ( [ row [ " username " ] , row [ " name " ] , row [ " timestamp " ] ,