tool.py 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import flask
  2. import urllib.parse
  3. import datetime
  4. import re
  5. import hashlib
  6. def get_time():
  7. return str(datetime.datetime.today().strftime("%Y-%m-%d %H:%M:%S"))
  8. def ip_check():
  9. if flask.session and ('state' and 'id') in flask.session and flask.session['state'] == 1:
  10. ip = flask.session['id']
  11. else:
  12. try:
  13. ip = flask.request.environ.get('HTTP_X_REAL_IP', flask.request.environ.get('HTTP_X_FORWARDED_FOR', flask.request.remote_addr))
  14. if ip == ('::1' or '127.0.0.1'):
  15. ip = flask.request.environ.get('HTTP_X_FORWARDED_FOR', flask.request.remote_addr)
  16. except:
  17. ip = '-'
  18. return str(ip)
  19. def savemark(data):
  20. data = re.sub("\[date\(now\)\]", get_time(), data)
  21. ip = ip_check()
  22. if not re.search("\.", ip):
  23. name = '[[user:' + ip + '|' + ip + ']]'
  24. else:
  25. name = ip
  26. data = re.sub("\[name\]", name, data)
  27. return data
  28. def url_pas(data):
  29. return urllib.parse.quote(data).replace('/','%2F')
  30. def sha224(data):
  31. return hashlib.sha224(bytes(data, 'utf-8')).hexdigest()
  32. def md5_replace(data):
  33. return hashlib.md5(data.encode()).hexdigest()
  34. def xss_protect(curs, data, ok_list = []):
  35. curs.execute('select html from html_filter where kind = ""')
  36. html_db = curs.fetchall()
  37. src_list = ["www.youtube.com", "serviceapi.nmv.naver.com", "tv.kakao.com", "www.google.com", "serviceapi.rmcnmv.naver.com"]
  38. html_list = ['div', 'span', 'embed', 'iframe', 'ruby', 'rp', 'rt'] + ok_list
  39. html_data = re.findall('<(\/)?((?:(?!>| ).)+)( (?:(?:(?!>).)+)?)?>', data)
  40. for in_data in html_data:
  41. if in_data[0] == '':
  42. if in_data[1] in html_list or (html_db and in_data[1] in html_db[0]):
  43. if re.search('<\/' + in_data[1] + '>', data):
  44. src = re.search('src=([^ ]*)', in_data[2])
  45. if src:
  46. v_src = re.search('http(?:s)?:\/\/([^/\'" ]*)', src.groups()[0])
  47. if v_src:
  48. if not v_src.groups()[0] in src_list:
  49. and_data = re.sub(''', '\'', re.sub('"', '"', re.sub('src=([^ ]*)', '', in_data[2])))
  50. else:
  51. and_data = re.sub(''', '\'', re.sub('"', '"', in_data[2]))
  52. else:
  53. and_data = re.sub(''', '\'', re.sub('"', '"', re.sub('src=([^ ]*)', '', in_data[2])))
  54. else:
  55. and_data = re.sub(''', '\'', re.sub('"', '"', in_data[2]))
  56. data = data.replace('&lt;' + in_data[1] + in_data[2] + '&gt;', '<' + in_data[1] + and_data + '>', 1)
  57. data = re.sub('&lt;\/' + in_data[1] + '&gt;', '</' + in_data[1] + '>', data, 1)
  58. position = re.compile('position', re.I)
  59. data = position.sub('', data)
  60. return data