main_setting_external.py 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. from .tool.func import *
  2. def main_setting_external():
  3. with get_db_connect() as conn:
  4. curs = conn.cursor()
  5. if acl_check('', 'owner_auth', '', '') == 1:
  6. return re_error(conn, 0)
  7. i_list = [
  8. 'recaptcha',
  9. 'sec_re',
  10. 'smtp_server',
  11. 'smtp_port',
  12. 'smtp_security',
  13. 'smtp_email',
  14. 'smtp_pass',
  15. 'recaptcha_ver',
  16. 'oauth_client_id',
  17. 'email_have'
  18. ]
  19. if flask.request.method == 'POST':
  20. for data in i_list:
  21. into_data = flask.request.form.get(data, '')
  22. curs.execute(db_change("update other set data = ? where name = ?"), [into_data, data])
  23. acl_check(tool = 'owner_auth', memo = 'edit_set (external)')
  24. return redirect(conn, '/setting/external')
  25. else:
  26. d_list = []
  27. x = 0
  28. for i in i_list:
  29. curs.execute(db_change('select data from other where name = ?'), [i])
  30. sql_d = curs.fetchall()
  31. if sql_d:
  32. d_list += [sql_d[0][0]]
  33. else:
  34. curs.execute(db_change('insert into other (name, data, coverage) values (?, ?, "")'), [i, ''])
  35. d_list += ['']
  36. x += 1
  37. security_radios = ''
  38. for i in ['tls', 'starttls', 'plain']:
  39. if d_list[4] == i:
  40. security_radios = '<option value="' + i + '">' + i + '</option>' + security_radios
  41. else:
  42. security_radios += '<option value="' + i + '">' + i + '</option>'
  43. re_ver_list = {
  44. '' : 'reCAPTCHA v2',
  45. 'v3' : 'reCAPTCHA v3',
  46. 'h' : 'hCAPTCHA',
  47. 'cf' : 'Turnstile'
  48. }
  49. re_ver = ''
  50. for i in re_ver_list:
  51. if d_list[7] == i:
  52. re_ver = '<option value="' + i + '">' + re_ver_list[i] + '</option>' + re_ver
  53. else:
  54. re_ver += '<option value="' + i + '">' + re_ver_list[i] + '</option>'
  55. return easy_minify(conn, flask.render_template(skin_check(conn),
  56. imp = [get_lang(conn, 'ext_api_req_set'), wiki_set(conn), wiki_custom(conn), wiki_css([0, 0])],
  57. data = render_simple_set(conn, '''
  58. <form method="post">
  59. <h2>''' + get_lang(conn, 'captcha') + '''</h2>
  60. <a href="https://www.google.com/recaptcha/">(''' + get_lang(conn, 'recaptcha') + ''')</a> <a href="https://www.hcaptcha.com/">(''' + get_lang(conn, 'hcaptcha') + ''')</a>
  61. <hr class="main_hr">
  62. <span>''' + get_lang(conn, 'public_key') + '''</span>
  63. <hr class="main_hr">
  64. <input name="recaptcha" value="''' + html.escape(d_list[0]) + '''">
  65. <hr class="main_hr">
  66. <span>''' + get_lang(conn, 'secret_key') + '''</span>
  67. <hr class="main_hr">
  68. <input name="sec_re" value="''' + html.escape(d_list[1]) + '''">
  69. <hr class="main_hr">
  70. <span>''' + get_lang(conn, 'version') + '''</span>
  71. <hr class="main_hr">
  72. <select name="recaptcha_ver">
  73. ''' + re_ver + '''
  74. </select>
  75. <h2>''' + get_lang(conn, 'email_setting') + '''</h2>
  76. <a href="/setting/phrase#s-6">(''' + get_lang(conn, 'text_setting') + ''')</a>
  77. <hr class="main_hr">
  78. <label><input type="checkbox" name="email_have" ''' + ('checked' if d_list[9] != '' else '') + '''> ''' + get_lang(conn, 'email_required') + '''</label>
  79. <h3>''' + get_lang(conn, 'smtp_setting') + '''</h3>
  80. <a href="https://support.google.com/mail/answer/7126229">(Google)</a>
  81. <hr class="main_hr">
  82. <a href="/setting/email_test">(''' + get_lang(conn, 'test') + ''')</a>
  83. <hr class="main_hr">
  84. <span>''' + get_lang(conn, 'smtp_server') + '''</span>
  85. <hr class="main_hr">
  86. <input name="smtp_server" value="''' + html.escape(d_list[2]) + '''">
  87. <hr class="main_hr">
  88. <span>''' + get_lang(conn, 'smtp_port') + '''</span>
  89. <hr class="main_hr">
  90. <input name="smtp_port" value="''' + html.escape(d_list[3]) + '''">
  91. <hr class="main_hr">
  92. <span>''' + get_lang(conn, 'smtp_security') + '''</span>
  93. <hr class="main_hr">
  94. <select name="smtp_security">
  95. ''' + security_radios + '''
  96. </select>
  97. <hr class="main_hr">
  98. <span>''' + get_lang(conn, 'smtp_username') + '''</span>
  99. <hr class="main_hr">
  100. <input name="smtp_email" value="''' + html.escape(d_list[5]) + '''">
  101. <hr class="main_hr">
  102. <span>''' + get_lang(conn, 'smtp_password') + '''</span>
  103. <hr class="main_hr">
  104. <input type="password" name="smtp_pass" value="''' + html.escape(d_list[6]) + '''">
  105. <h2>''' + get_lang(conn, 'oauth') + ''' (''' + get_lang(conn, 'not_working') + ''')</h2>
  106. <a href="https://developers.google.com/identity/protocols/oauth2">(Google)</a>
  107. <hr class="main_hr">
  108. <span>''' + get_lang(conn, 'oauth_client_id') + '''</span>
  109. <hr class="main_hr">
  110. <input name="oauth_client_id" value="''' + html.escape(d_list[8]) + '''">
  111. <hr class="main_hr">
  112. <hr class="main_hr">
  113. <button id="opennamu_save_button" type="submit">''' + get_lang(conn, 'save') + '''</button>
  114. </form>
  115. '''),
  116. menu = [['setting', get_lang(conn, 'return')]]
  117. ))