Utils.py 999 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. # -*- coding: utf-8 -*-
  2. import json
  3. import base64
  4. import random
  5. import socket
  6. def base64url_decode(base64_str):
  7. size = len(base64_str) % 4
  8. if size == 2:
  9. base64_str += '=='
  10. elif size == 3:
  11. base64_str += '='
  12. elif size != 0:
  13. raise ValueError('Invalid base64 string')
  14. return base64.urlsafe_b64decode(base64_str.encode('utf-8'))
  15. def parse_jwt(jwt_token):
  16. jwt_token_list = jwt_token.split('.')
  17. header = base64url_decode(jwt_token_list[0]).decode()
  18. payload = base64url_decode(jwt_token_list[1]).decode()
  19. return {
  20. 'header': json.loads(header),
  21. 'payload': json.loads(payload),
  22. 'signature': jwt_token_list[-1]
  23. }
  24. def generate_random_code(n):
  25. range_start = 10**(n-1)
  26. range_end = (10**n)-1
  27. return str(random.randint(range_start, range_end))
  28. def get_ip_address(domain):
  29. try:
  30. return socket.gethostbyname(domain)
  31. except socket.gaierror as e:
  32. print(f"无法解析域名 {domain}: {e}")