user_setting.py 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. from .tool.func import *
  2. def user_setting_2(conn, server_init):
  3. curs = conn.cursor()
  4. support_language = ['default'] + server_init.server_init()['language']['list']
  5. ip = ip_check()
  6. if ban_check() == 1:
  7. return re_error('/ban')
  8. if ip_or_user(ip) == 0:
  9. if flask.request.method == 'POST':
  10. auto_list = [
  11. ['skin', flask.request.form.get('skin', '')],
  12. ['lang', flask.request.form.get('lang', '')]
  13. ]
  14. twofa_turn_on = 0
  15. twofa_on = flask.request.form.get('2fa', '')
  16. if twofa_on != '':
  17. twofa_turn_on = 1
  18. twofa_pw = flask.request.form.get('2fa_pw', '')
  19. if twofa_pw != '':
  20. twofa_pw = pw_encode(twofa_pw)
  21. curs.execute(db_change("select data from user_set where id = ? and name = 'encode'"), [ip])
  22. twofa_encode = curs.fetchall()[0][0]
  23. auto_list += [['2fa', 'on'], ['2fa_pw', twofa_pw], ['2fa_pw_encode', twofa_encode]]
  24. else:
  25. auto_list += [['2fa', 'on']]
  26. else:
  27. auto_list += [['2fa', '']]
  28. for auto_data in auto_list:
  29. curs.execute(db_change('select data from user_set where name = ? and id = ?'), [auto_data[0], ip])
  30. if curs.fetchall():
  31. curs.execute(db_change("update user_set set data = ? where name = ? and id = ?"), [auto_data[1], auto_data[0], ip])
  32. else:
  33. curs.execute(db_change("insert into user_set (name, id, data) values (?, ?, ?)"), [auto_data[0], ip, auto_data[1]])
  34. conn.commit()
  35. return redirect('/change')
  36. else:
  37. curs.execute(db_change('select data from user_set where name = "email" and id = ?'), [ip])
  38. data = curs.fetchall()
  39. email = data[0][0] if data else '-'
  40. curs.execute(db_change('select data from user_set where name = "skin" and id = ?'), [ip])
  41. data = curs.fetchall()
  42. div2 = load_skin(data[0][0] if data else '', 0, 1)
  43. curs.execute(db_change('select data from user_set where name = "lang" and id = ?'), [ip])
  44. data = curs.fetchall()
  45. data = [['default']] if not data else data
  46. div3 = ''
  47. for lang_data in support_language:
  48. see_data = lang_data if lang_data != 'default' else load_lang('default')
  49. if data and data[0][0] == lang_data:
  50. div3 = '<option value="' + lang_data + '">' + see_data + '</option>' + div3
  51. else:
  52. div3 += '<option value="' + lang_data + '">' + see_data + '</option>'
  53. curs.execute(db_change('select data from user_set where name = "2fa" and id = ?'), [ip])
  54. fa_data = curs.fetchall()
  55. fa_data = fa_data[0][0] if fa_data and fa_data[0][0] != '' else ''
  56. fa_data_select = ''
  57. fa_data_sp_list = [['off', ''], ['pw', 'on']]
  58. for fa_data_get in fa_data_sp_list:
  59. fa_data_selected = ''
  60. if fa_data == fa_data_get[1]:
  61. fa_data_selected = 'selected'
  62. fa_data_select += '<option ' + fa_data_selected + ' value="' + fa_data_get[1] + '">' + fa_data_get[0] + '</option>'
  63. curs.execute(db_change('select data from user_set where name = "2fa_pw" and id = ?'), [ip])
  64. fa_data_pw = curs.fetchall()
  65. fa_data_pw = load_lang('2fa_password_change') if fa_data_pw else load_lang('2fa_password')
  66. return easy_minify(flask.render_template(skin_check(),
  67. imp = [load_lang('user_setting'), wiki_set(), wiki_custom(), wiki_css([0, 0])],
  68. data = '''
  69. <form method="post">
  70. <div id="get_user_info"></div>
  71. <script>load_user_info("''' + ip + '''");</script>
  72. <hr class="main_hr">
  73. <a href="/change/pw">(''' + load_lang('password_change') + ''')</a>
  74. <hr class="main_hr">
  75. <span>''' + load_lang('email') + ''' : ''' + email + '''</span> <a href="/change/email">(''' + load_lang('email_change') + ''')</a>
  76. <h2>''' + load_lang('main') + '''</h2>
  77. <span>''' + load_lang('skin') + '''</span>
  78. <hr class="main_hr">
  79. <select name="skin">''' + div2 + '''</select>
  80. <hr class="main_hr">
  81. <span>''' + load_lang('language') + '''</span>
  82. <hr class="main_hr">
  83. <select name="lang">''' + div3 + '''</select>
  84. <h2>''' + load_lang('2fa') + '''</h2>
  85. <select name="2fa"
  86. id="twofa_check_input"
  87. onchange="do_twofa_check(0);">''' + fa_data_select + '''</select>
  88. <div id="fa_plus_content">
  89. <hr class="main_hr">
  90. <input type="password" name="2fa_pw" placeholder="''' + fa_data_pw + '''">
  91. </div>
  92. <hr class="main_hr">
  93. <button type="submit">''' + load_lang('save') + '''</button>
  94. ''' + http_warning() + '''
  95. <script>do_twofa_check(1);</script>
  96. </form>
  97. ''',
  98. menu = [['user', load_lang('return')]]
  99. ))
  100. else:
  101. if flask.request.method == 'POST':
  102. flask.session['skin'] = flask.request.form.get('skin', '')
  103. flask.session['lang'] = flask.request.form.get('lang', '')
  104. return redirect('/change')
  105. else:
  106. div2 = load_skin(
  107. ('' if not 'skin' in flask.session else flask.session['skin']),
  108. 0,
  109. 1
  110. )
  111. data = [['default']] if not 'lang' in flask.session else [[flask.session['lang']]]
  112. div3 = ''
  113. for lang_data in support_language:
  114. see_data = lang_data if lang_data != 'default' else load_lang('default')
  115. if data and data[0][0] == lang_data:
  116. div3 = '<option value="' + lang_data + '">' + see_data + '</option>' + div3
  117. else:
  118. div3 += '<option value="' + lang_data + '">' + see_data + '</option>'
  119. return easy_minify(flask.render_template(skin_check(),
  120. imp = [load_lang('user_setting'), wiki_set(), wiki_custom(), wiki_css([0, 0])],
  121. data = '''
  122. <form method="post">
  123. <div id="get_user_info"></div>
  124. <script>load_user_info("''' + ip + '''");</script>
  125. <hr class="main_hr">
  126. <h2>''' + load_lang('main') + '''</h2>
  127. <span>''' + load_lang('skin') + '''</span>
  128. <hr class="main_hr">
  129. <select name="skin">''' + div2 + '''</select>
  130. <hr class="main_hr">
  131. <span>''' + load_lang('language') + '''</span>
  132. <hr class="main_hr">
  133. <select name="lang">''' + div3 + '''</select>
  134. <hr class="main_hr">
  135. <button type="submit">''' + load_lang('save') + '''</button>
  136. ''' + http_warning() + '''
  137. <hr class="main_hr">
  138. <span>''' + load_lang('user_head_warning') + '''</span>
  139. </form>
  140. ''',
  141. menu = [['user', load_lang('return')]]
  142. ))