def verify_request(self, scopes): if request.authorization: from skylines.model import User username = request.authorization.username if is_bytes(username): username = username.decode("utf-8") password = request.authorization.password if is_bytes(password): password = password.decode("utf-8") user = User.by_credentials(username, password) request.user_id = user.id if user else None set_sentry_user({"id": request.user_id}) return (user is not None), None else: valid, req = super(CustomProvider, self).verify_request(scopes) request.user_id = req.access_token.user_id if valid else None set_sentry_user({"id": request.user_id}) return valid, req
def normalize_whitespace(s): """Strip the string and replace all whitespace sequences and other non-printable characters with a single space.""" assert is_bytes(s) return whitespace_re.sub(b" ", s.strip())
def sanitise_filename(name): assert is_string(name) # strip the parent directory name name = os.path.basename(name) # replace all non-ASCII or dangerous characters if is_bytes(name): name = re.sub(br"[^-_.a-zA-Z0-9]", "_", name) # convert to unicode string name = name.decode("ascii") else: name = re.sub(r"[^-_.a-zA-Z0-9]", "_", name) # dots at the beginning of a file name are "special", remove them name = name.lstrip(".") # normalise to lower case name = name.lower() # empty file names are illegal, replace if name == "": name = u"empty" return name
def sanitise_filename(name): assert is_string(name) # strip the parent directory name name = os.path.basename(name) # replace all non-ASCII or dangerous characters if is_bytes(name): name = re.sub(br"[^-_.a-zA-Z0-9]", "_", name) # convert to unicode string name = name.decode("ascii") else: name = re.sub(r"[^-_.a-zA-Z0-9]", "_", name) # dots at the beginning of a file name are "special", remove them name = name.lstrip(".") # normalise to lower case name = name.lower() # empty file names are illegal, replace if name == "": name = u"empty" return name
def normalize_whitespace(s): """Strip the string and replace all whitespace sequences and other non-printable characters with a single space.""" assert is_bytes(s) return whitespace_re.sub(b' ', s.strip())
def import_alnum(s): """Import a byte string, convert to a unicode string, discarding all non-alphanumeric characters (ASCII only).""" assert is_bytes(s) s = non_alnum_re.sub(b"", s) return s.decode("ascii")
def import_ascii(s): """Import a byte string, convert to a unicode string, discarding all non-ASCII characters.""" assert is_bytes(s) s = normalize_whitespace(s) return s.decode("ascii", "ignore")
def import_alnum(s): """Import a byte string, convert to a unicode string, discarding all non-alphanumeric characters (ASCII only).""" assert is_bytes(s) s = non_alnum_re.sub(b'', s) return s.decode('ascii')
def import_ascii(s): """Import a byte string, convert to a unicode string, discarding all non-ASCII characters.""" assert is_bytes(s) s = normalize_whitespace(s) return s.decode('ascii', 'ignore')
def verify_request(self, scopes): if request.authorization: from skylines.model import User username = request.authorization.username if is_bytes(username): username = username.decode('utf-8') password = request.authorization.password if is_bytes(password): password = password.decode('utf-8') user = User.by_credentials(username, password) request.user_id = user.id if user else None return (user is not None), None else: valid, req = super(CustomProvider, self).verify_request(scopes) request.user_id = req.access_token.user_id if valid else None return valid, req
def _hash_password(cls, password, salt=None): if salt is None: salt = os.urandom(60) assert is_unicode(password) assert is_bytes(salt) salt_hash = sha256() salt_hash.update(salt) hash = sha256() hash.update((password + salt_hash.hexdigest()).encode("utf-8")) return str_to_unicode(salt_hash.hexdigest() + hash.hexdigest())
def _hash_password(cls, password, salt=None): if salt is None: salt = os.urandom(60) assert is_unicode(password) assert is_bytes(salt) salt_hash = sha256() salt_hash.update(salt) hash = sha256() hash.update((password + salt_hash.hexdigest()).encode('utf-8')) return str_to_unicode(salt_hash.hexdigest() + hash.hexdigest())
def read_igc_headers(f): """ Read IGC file headers from a file-like object, a list of strings or a file if the parameter is a path. """ if is_string(f): try: f = open(f, "rb") except IOError: return None igc_headers = dict() for i, line in enumerate(f): assert is_bytes(line) if line.startswith(b"A"): length = len(line) if length >= 4: igc_headers["manufacturer_id"] = line[1:4].decode("ascii") if length >= 7: igc_headers["logger_id"] = parse_logger_id(line) if line.startswith(b"HFDTE"): igc_headers["date_utc"] = parse_date(line) if line.startswith(b"HFGTY"): igc_headers["model"] = parse_pattern(hfgty_re, line) if line.startswith(b"HFGID"): igc_headers["reg"] = parse_pattern(hfgid_re, line) if line.startswith(b"HFCID"): igc_headers["cid"] = parse_pattern(hfcid_re, line) # don't read more than 100 lines, that should be enough if i > 100: break return igc_headers
def read_igc_headers(f): """ Read IGC file headers from a file-like object, a list of strings or a file if the parameter is a path. """ if is_string(f): try: f = open(f, "rb") except IOError: return None igc_headers = dict() for i, line in enumerate(f): assert is_bytes(line) if line.startswith(b"A"): length = len(line) if length >= 4: igc_headers["manufacturer_id"] = line[1:4].decode("ascii") if length >= 7: igc_headers["logger_id"] = parse_logger_id(line) if line.startswith(b"HFDTE"): igc_headers["date_utc"] = parse_date(line) if line.startswith(b"HFGTY"): igc_headers["model"] = parse_pattern(hfgty_re, line) if line.startswith(b"HFGID"): igc_headers["reg"] = parse_pattern(hfgid_re, line) if line.startswith(b"HFCID"): igc_headers["cid"] = parse_pattern(hfcid_re, line) # don't read more than 100 lines, that should be enough if i > 100: break return igc_headers
def read_igc_headers(f): """ Read IGC file headers from a file-like object, a list of strings or a file if the parameter is a path. """ if is_string(f): try: f = open(f, 'rb') except IOError: return None igc_headers = dict() for i, line in enumerate(f): assert is_bytes(line) if line.startswith(b'A'): length = len(line) if length >= 4: igc_headers['manufacturer_id'] = line[1:4].decode('ascii') if length >= 7: igc_headers['logger_id'] = parse_logger_id(line) if line.startswith(b'HFDTE'): igc_headers['date_utc'] = parse_date(line) if line.startswith(b'HFGTY'): igc_headers['model'] = parse_pattern(hfgty_re, line) if line.startswith(b'HFGID'): igc_headers['reg'] = parse_pattern(hfgid_re, line) if line.startswith(b'HFCID'): igc_headers['cid'] = parse_pattern(hfcid_re, line) # don't read more than 100 lines, that should be enough if i > 100: break return igc_headers