func_tool.py 2.2 KB

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