2
0

func_upload.py 3.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. from .tool.func import *
  2. def func_upload_2(conn):
  3. curs = conn.cursor()
  4. if ban_check() == 1:
  5. return re_error('/ban')
  6. if flask.request.method == 'POST':
  7. if captcha_post(flask.request.form.get('g-recaptcha-response', '')) == 1:
  8. return re_error('/error/13')
  9. else:
  10. captcha_post('', 0)
  11. data = flask.request.files.get('f_data', None)
  12. if not data:
  13. return re_error('/error/9')
  14. if int(wiki_set(3)) * 1024 * 1024 < flask.request.content_length:
  15. return re_error('/error/17')
  16. value = os.path.splitext(data.filename)[1]
  17. if not value in ['.jpeg', '.jpg', '.gif', '.png', '.webp', '.JPEG', '.JPG', '.GIF', '.PNG', '.WEBP']:
  18. return re_error('/error/14')
  19. if flask.request.form.get('f_name', None):
  20. name = flask.request.form.get('f_name', None) + value
  21. else:
  22. name = data.filename
  23. piece = os.path.splitext(name)
  24. if re.search('[^ㄱ-힣0-9a-zA-Z_\- ]', piece[0]):
  25. return re_error('/error/22')
  26. e_data = sha224(piece[0]) + piece[1]
  27. curs.execute("select title from data where title = ?", ['file:' + name])
  28. if curs.fetchall():
  29. return re_error('/error/16')
  30. ip = ip_check()
  31. if flask.request.form.get('f_lice', None):
  32. lice = flask.request.form.get('f_lice', None)
  33. else:
  34. if custom()[2] == 0:
  35. lice = ip
  36. else:
  37. lice = '[[user:' + ip + ']]'
  38. if os.path.exists(os.path.join(app_var['path_data_image'], e_data)):
  39. os.remove(os.path.join(app_var['path_data_image'], e_data))
  40. data.save(os.path.join(app_var['path_data_image'], e_data))
  41. else:
  42. data.save(os.path.join(app_var['path_data_image'], e_data))
  43. curs.execute("select title from data where title = ?", ['file:' + name])
  44. if curs.fetchall():
  45. curs.execute("delete from data where title = ?", ['file:' + name])
  46. curs.execute("insert into data (title, data) values (?, ?)", ['file:' + name, '[[file:' + name + ']][br][br]{{{[[file:' + name + ']]}}}[br][br]' + lice])
  47. curs.execute("insert into acl (title, dec, dis, why, view) values (?, 'admin', '', '', '')", ['file:' + name])
  48. history_plus(
  49. 'file:' + name, '[[file:' + name + ']][br][br]{{{[[file:' + name + ']]}}}[br][br]' + lice,
  50. get_time(),
  51. ip,
  52. '(upload)',
  53. '0'
  54. )
  55. conn.commit()
  56. return redirect('/w/file:' + name)
  57. else:
  58. return easy_minify(flask.render_template(skin_check(),
  59. imp = [load_lang('upload'), wiki_set(), custom(), other2([0, 0])],
  60. data = '''
  61. <form method="post" enctype="multipart/form-data" accept-charset="utf8">
  62. <input type="file" name="f_data">
  63. <hr class=\"main_hr\">
  64. <input placeholder="''' + load_lang('name') + '''" name="f_name" type="text">
  65. <hr class=\"main_hr\">
  66. <input placeholder="''' + load_lang('license') + '''" name="f_lice" type="text">
  67. <hr class=\"main_hr\">
  68. ''' + captcha_get() + '''
  69. <button id="save" type="submit">''' + load_lang('save') + '''</button>
  70. </form>
  71. ''',
  72. menu = [['other', load_lang('return')]]
  73. ))