func_tool.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. import urllib.parse
  2. import datetime
  3. import hashlib
  4. import flask
  5. import random
  6. import string
  7. import os
  8. import html
  9. import json
  10. import sqlite3
  11. import time
  12. import threading
  13. try:
  14. import orjson as json
  15. except:
  16. import json
  17. try:
  18. import regex as re
  19. except:
  20. import re
  21. global_func_some_set = {}
  22. def global_func_some_set_do(set_name, data = None):
  23. global global_func_some_set
  24. if data != None:
  25. global_func_some_set[set_name] = data
  26. if set_name in global_func_some_set:
  27. return global_func_some_set[set_name]
  28. else:
  29. return None
  30. def get_time():
  31. return str(datetime.datetime.today().strftime("%Y-%m-%d %H:%M:%S"))
  32. def db_change(data):
  33. set_data = global_func_some_set_do("db_type")
  34. if set_data == 'mysql':
  35. data = data.replace('random()', 'rand()')
  36. data = data.replace('%', '%%')
  37. data = data.replace('?', '%s')
  38. data = data.replace('collate nocase', 'collate utf8mb4_general_ci')
  39. return data
  40. def ip_check(d_type = 0):
  41. ip = '::1'
  42. if d_type == 0 and (flask.session and 'id' in flask.session):
  43. ip = flask.session['id']
  44. else:
  45. set_data = global_func_some_set_do("load_ip_select")
  46. if not set_data or set_data == "default":
  47. ip = flask.request.environ.get('HTTP_X_REAL_IP',
  48. flask.request.environ.get('HTTP_CF_CONNECTING_IP',
  49. flask.request.environ.get('REMOTE_ADDR',
  50. '::1'
  51. )
  52. )
  53. )
  54. else:
  55. ip = flask.request.environ.get(set_data, '::1')
  56. if ip_or_user(ip) == 0:
  57. ip = '::1'
  58. return ip
  59. def ip_or_user(data = ''):
  60. # without_DB
  61. # 1 == ip
  62. # 0 == reg
  63. if data == '':
  64. data = ip_check()
  65. if re.search(r'(\.|:)', data):
  66. return 1
  67. else:
  68. return 0
  69. def url_pas(data):
  70. data = re.sub(r'^\.', '\\\\.', data)
  71. data = urllib.parse.quote(data)
  72. data = data.replace('/','%2F')
  73. return data
  74. def sha224_replace(data):
  75. return hashlib.sha224(bytes(data, 'utf-8')).hexdigest()
  76. def md5_replace(data):
  77. return hashlib.md5(data.encode()).hexdigest()
  78. def get_main_skin_set(conn, flask_session, set_name, ip):
  79. curs = conn.cursor()
  80. if ip_or_user(ip) == 0:
  81. curs.execute(db_change('select data from user_set where name = ? and id = ?'), [set_name, ip])
  82. db_data = curs.fetchall()
  83. set_data = db_data[0][0] if db_data and db_data[0][0] != '' else 'default'
  84. else:
  85. set_data = flask_session[set_name] if set_name in flask_session and flask_session[set_name] != '' else 'default'
  86. if set_data == 'default':
  87. curs.execute(db_change('select data from other where name = ?'), [set_name])
  88. db_data = curs.fetchall()
  89. set_data = db_data[0][0] if db_data and db_data[0][0] != '' else 'default'
  90. return set_data