commit for publication
This commit is contained in:
@@ -0,0 +1,7 @@
|
||||
|
||||
VALID = True
|
||||
INVALID = False
|
||||
|
||||
from . import defaults
|
||||
from . import sanitise
|
||||
from . import validation
|
||||
@@ -0,0 +1,5 @@
|
||||
|
||||
import datetime
|
||||
|
||||
def unix_epoch():
|
||||
return datetime.datetime(1970, 1, 1)
|
||||
@@ -0,0 +1,21 @@
|
||||
|
||||
def mac_addr(addr):
|
||||
WHITELIST_CHARS = ":0123456789ABCDEF"
|
||||
addr = addr.upper().strip()
|
||||
addr = "".join(char for char in addr if char in WHITELIST_CHARS)
|
||||
return addr
|
||||
|
||||
|
||||
def text_input(text, OVERWRITE_WHITELIST_CHARS=""):
|
||||
WHITELIST_CHARS = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 _.-"
|
||||
|
||||
if OVERWRITE_WHITELIST_CHARS:
|
||||
WHITELIST_CHARS = OVERWRITE_WHITELIST_CHARS
|
||||
|
||||
if not isinstance(text, str):
|
||||
return ""
|
||||
|
||||
return "".join([char for char in text if char in WHITELIST_CHARS])
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
|
||||
from . import VALID, INVALID
|
||||
|
||||
def mac_addr(addr):
|
||||
|
||||
VALID_MAC_CHARS = "0123456789abcdefABCDEF"
|
||||
|
||||
if len(addr) != 17:
|
||||
return INVALID
|
||||
|
||||
COLON_START_IDX = 2
|
||||
COLON_STEP = 3
|
||||
for idx in range(COLON_START_IDX, len(addr), COLON_STEP):
|
||||
if addr[idx] != ":":
|
||||
return INVALID
|
||||
|
||||
mac_sections = addr.split(":")
|
||||
if len(mac_sections) != 6:
|
||||
return INVALID
|
||||
|
||||
for mac_byte in mac_sections:
|
||||
|
||||
if len(mac_byte) != 2:
|
||||
return INVALID
|
||||
|
||||
for char in mac_byte:
|
||||
if not char in VALID_MAC_CHARS:
|
||||
return INVALID
|
||||
|
||||
return VALID
|
||||
|
||||
|
||||
|
||||
def password_strength(password):
|
||||
|
||||
PW_MIN_LEN = 8
|
||||
|
||||
if not isinstance(password, str):
|
||||
return "Not a string"
|
||||
|
||||
if len(password) < PW_MIN_LEN:
|
||||
return f"Password too short. {PW_MIN_LEN} character minimum"
|
||||
|
||||
|
||||
|
||||
def text_numeric_only(text, extra_chars=""):
|
||||
WHITELIST_CHARS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||
|
||||
for char in text:
|
||||
if not (char in WHITELIST_CHARS or char in extra_chars):
|
||||
return INVALID
|
||||
|
||||
return VALID
|
||||
|
||||
|
||||
|
||||
def username(username):
|
||||
return text_numeric_only(username, extra_chars=" _-")
|
||||
|
||||
|
||||
def email(email):
|
||||
return text_numeric_only(email, extra_chars=" _-@+.")
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user