main_setting_main.py 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333
  1. from .tool.func import *
  2. async def main_setting_main():
  3. with get_db_connect() as conn:
  4. curs = conn.cursor()
  5. if await acl_check('', 'owner_auth', '', '') == 1:
  6. return await re_error(conn, 0)
  7. setting_list = {
  8. 0 : ['name', 'Wiki'],
  9. 2 : ['frontpage', 'FrontPage'],
  10. 4 : ['upload', '2'],
  11. 5 : ['skin', ''],
  12. 7 : ['reg', ''],
  13. 8 : ['ip_view', ''],
  14. 9 : ['back_up', ''],
  15. 10 : ['port', '3000'],
  16. 11 : ['key', load_random_key()],
  17. 12 : ['update', 'stable'],
  18. 15 : ['encode', 'sha3'],
  19. 16 : ['host', '0.0.0.0'],
  20. 19 : ['slow_edit', ''],
  21. 20 : ['requires_approval', ''],
  22. 21 : ['backup_where', ''],
  23. 22 : ['domain', ''],
  24. 23 : ['ua_get', ''],
  25. 24 : ['enable_comment', ''],
  26. 26 : ['edit_bottom_compulsion', ''],
  27. 27 : ['http_select', 'http'],
  28. 28 : ['title_max_length', ''],
  29. 29 : ['title_topic_max_length', ''],
  30. 30 : ['password_min_length', ''],
  31. 31 : ['wiki_access_password_need', ''],
  32. 32 : ['wiki_access_password', ''],
  33. 33 : ['history_recording_off', ''],
  34. 34 : ['namumark_compatible', ''],
  35. 35 : ['user_name_view', ''],
  36. 36 : ['link_case_insensitive', ''],
  37. 37 : ['move_with_redirect', ''],
  38. 38 : ['slow_thread', ''],
  39. 39 : ['edit_timeout', '5'],
  40. 40 : ['document_content_max_length', ''],
  41. 41 : ['backup_count', ''],
  42. 42 : ['ua_expiration_date', ''],
  43. 43 : ['auth_history_expiration_date', ''],
  44. 44 : ['auth_history_off', ''],
  45. 45 : ['user_name_level', ''],
  46. 46 : ['load_ip_select', ''],
  47. 47 : ['not_use_view_count', '']
  48. }
  49. if flask.request.method == 'POST':
  50. for i in setting_list:
  51. curs.execute(db_change("update other set data = ? where name = ?"), [
  52. flask.request.form.get(setting_list[i][0], setting_list[i][1]),
  53. setting_list[i][0]
  54. ])
  55. await acl_check(tool = 'owner_auth', memo = 'edit_set (main)')
  56. return redirect(conn, '/setting/main')
  57. else:
  58. d_list = {}
  59. for i in setting_list:
  60. curs.execute(db_change('select data from other where name = ?'), [setting_list[i][0]])
  61. db_data = curs.fetchall()
  62. if not db_data:
  63. curs.execute(db_change('insert into other (name, data, coverage) values (?, ?, "")'), [setting_list[i][0], setting_list[i][1]])
  64. d_list[i] = db_data[0][0] if db_data else setting_list[i][1]
  65. init_set_list = get_init_set_list()
  66. # 언어도 변경 가능하도록 필요
  67. encode_select = ''
  68. encode_select_data = init_set_list['encode']['list'] + ['sha256']
  69. for encode_select_one in encode_select_data:
  70. if encode_select_one == d_list[15]:
  71. encode_select = '<option value="' + encode_select_one + '">' + encode_select_one + '</option>' + encode_select
  72. else:
  73. encode_select += '<option value="' + encode_select_one + '">' + encode_select_one + '</option>'
  74. tls_select = ''
  75. tls_select_data = ['http', 'https']
  76. for tls_select_one in tls_select_data:
  77. if tls_select_one == d_list[27]:
  78. tls_select = '<option value="' + tls_select_one + '">' + tls_select_one + '</option>' + tls_select
  79. else:
  80. tls_select += '<option value="' + tls_select_one + '">' + tls_select_one + '</option>'
  81. check_box_div = [7, 8, '', 20, 23, 24, '', 26, 31, 33, 34, 35, 36, 37, 44, 45, 47]
  82. for i in range(0, len(check_box_div)):
  83. acl_num = check_box_div[i]
  84. if acl_num != '' and d_list[acl_num]:
  85. check_box_div[i] = 'checked="checked"'
  86. else:
  87. check_box_div[i] = ''
  88. branch_div = ''
  89. branch_list = ['stable', 'dev', 'beta']
  90. for i in branch_list:
  91. if d_list[12] == i:
  92. branch_div = '<option value="' + i + '">' + i + '</option>' + branch_div
  93. else:
  94. branch_div += '<option value="' + i + '">' + i + '</option>'
  95. set_data = global_some_set_do('db_type')
  96. sqlite_only = ''
  97. if set_data != 'sqlite':
  98. sqlite_only = 'style="display:none;"'
  99. ip_load_select_data = ''
  100. ip_load_option = ['default', 'HTTP_X_REAL_IP', 'HTTP_CF_CONNECTING_IP', 'REMOTE_ADDR']
  101. for for_a in ip_load_option:
  102. view_ip_option = for_a
  103. if for_a == 'default':
  104. view_ip_option = get_lang(conn, 'default')
  105. if d_list[46] == for_a:
  106. ip_load_select_data = '<option value="' + for_a + '">' + view_ip_option + '</option>' + ip_load_select_data
  107. else:
  108. ip_load_select_data += '<option value="' + for_a + '">' + view_ip_option + '</option>'
  109. basic_set = '''
  110. <h2>''' + get_lang(conn, 'basic_set') + '''</h2>
  111. <span>''' + get_lang(conn, 'wiki_name') + '''</span>
  112. <hr class="main_hr">
  113. <input name="name" value="''' + html.escape(d_list[0]) + '''">
  114. <hr class="main_hr">
  115. <span><a href="/setting/main/logo">(''' + get_lang(conn, 'wiki_logo') + ''')</a></span>
  116. <hr class="main_hr">
  117. <span>''' + get_lang(conn, 'main_page') + '''</span>
  118. <hr class="main_hr">
  119. <input name="frontpage" value="''' + html.escape(d_list[2]) + '''">
  120. <hr class="main_hr">
  121. <span>''' + get_lang(conn, 'tls_method') + '''</span>
  122. <hr class="main_hr">
  123. <select name="http_select">''' + tls_select + '''</select>
  124. <hr class="main_hr">
  125. <span>''' + get_lang(conn, 'domain') + '''</span> (EX : 2du.pythonanywhere.com) (''' + get_lang(conn, 'off') + ''' : ''' + get_lang(conn, 'empty') + ''')
  126. <hr class="main_hr">
  127. <input name="domain" value="''' + html.escape(d_list[22]) + '''">
  128. <hr class="main_hr">
  129. <span>''' + get_lang(conn, 'wiki_host') + '''</span>
  130. <hr class="main_hr">
  131. <input name="host" value="''' + html.escape(d_list[16]) + '''">
  132. <hr class="main_hr">
  133. <span>''' + get_lang(conn, 'wiki_port') + '''</span>
  134. <hr class="main_hr">
  135. <input name="port" value="''' + html.escape(d_list[10]) + '''">
  136. <hr class="main_hr">
  137. <span>''' + get_lang(conn, 'wiki_secret_key') + '''</span>
  138. <hr class="main_hr">
  139. <input type="password" name="key" value="''' + html.escape(d_list[11]) + '''">
  140. <hr class="main_hr">
  141. <label><input type="checkbox" name="wiki_access_password_need" ''' + check_box_div[8] + '''> ''' + get_lang(conn, 'set_wiki_access_password_need') + ''' (''' + get_lang(conn, 'restart_required') + ''')</label>
  142. <hr class="main_hr">
  143. <span>''' + get_lang(conn, 'set_wiki_access_password') + '''</span> (''' + get_lang(conn, 'restart_required') + ''')
  144. <hr class="main_hr">
  145. <input type="password" name="wiki_access_password" value="''' + html.escape(d_list[32]) + '''">
  146. <hr class="main_hr">
  147. <span>''' + get_lang(conn, 'wiki_load_ip_select') + '''</span> (''' + get_lang(conn, 'restart_required') + ''')
  148. <hr class="main_hr">
  149. <select name="load_ip_select">''' + ip_load_select_data + '''</select>
  150. <h3>''' + get_lang(conn, 'authority_use_list') + '''</h3>
  151. <label><input type="checkbox" name="auth_history_off" ''' + check_box_div[14] + '''> ''' + get_lang(conn, 'authority_use_list_off') + '''</label>
  152. <hr class="main_hr">
  153. <span>''' + get_lang(conn, 'authority_use_list_expiration_date') + '''</span> (''' + get_lang(conn, 'day') + ''') (''' + get_lang(conn, 'off') + ''' : ''' + get_lang(conn, 'empty') + ''')
  154. <hr class="main_hr">
  155. <input name="auth_history_expiration_date" value="''' + html.escape(d_list[43]) + '''">
  156. <hr class="main_hr">
  157. <h3>''' + get_lang(conn, 'communication_set') + '''</h3>
  158. <label><input type="checkbox" name="enable_comment" ''' + check_box_div[5] + '''> ''' + get_lang(conn, 'enable_comment_function') + '''</label>
  159. <hr class="main_hr">
  160. <label><input type="checkbox" name="user_name_level" ''' + check_box_div[15] + '''> ''' + get_lang(conn, 'display_level_in_user_name') + '''</label>
  161. <hr class="main_hr">
  162. <label><input type="checkbox" name="not_use_view_count" ''' + check_box_div[16] + '''> ''' + get_lang(conn, 'not_use_view_count') + '''</label>
  163. <hr class="main_hr">
  164. '''
  165. return easy_minify(conn, flask.render_template(skin_check(conn),
  166. imp = [get_lang(conn, 'main_setting'), wiki_set(conn), await wiki_custom(conn), wiki_css([0, 0])],
  167. data = render_simple_set(conn, '''
  168. <form method="post">
  169. ''' + basic_set + '''
  170. <h2>''' + get_lang(conn, 'design_set') + '''</h2>
  171. <span>''' + get_lang(conn, 'wiki_skin') + '''</span>
  172. <hr class="main_hr">
  173. <select name="skin">''' + load_skin(conn, d_list[5] if d_list[5] != '' else 'ringo') + '''</select>
  174. <h2>''' + get_lang(conn, 'render_set') + '''</h2>
  175. <label><input type="checkbox" name="namumark_compatible" ''' + check_box_div[10] + '''> ''' + get_lang(conn, 'namumark_fully_compatible_mode') + '''</label>
  176. <hr class="main_hr">
  177. <label><input type="checkbox" name="link_case_insensitive" ''' + check_box_div[12] + '''> ''' + get_lang(conn, 'link_case_insensitive') + '''</label>
  178. <hr class="main_hr">
  179. <h2>''' + get_lang(conn, 'login_set') + '''</h2>
  180. <label><input type="checkbox" name="reg" ''' + check_box_div[0] + '''> ''' + get_lang(conn, 'no_register') + '''</label>
  181. <hr class="main_hr">
  182. <label><input type="checkbox" name="ip_view" ''' + check_box_div[1] + '''> ''' + get_lang(conn, 'hide_ip') + '''</label>
  183. <hr class="main_hr">
  184. <label><input type="checkbox" name="user_name_view" ''' + check_box_div[11] + '''> ''' + get_lang(conn, 'hide_user_name') + '''</label>
  185. <hr class="main_hr">
  186. <label><input type="checkbox" name="requires_approval" ''' + check_box_div[3] + '''> ''' + get_lang(conn, 'requires_approval') + '''</label>
  187. <hr class="main_hr">
  188. <span>''' + get_lang(conn, 'password_min_length') + '''</span> (''' + get_lang(conn, 'off') + ''' : ''' + get_lang(conn, 'empty') + ''')
  189. <hr class="main_hr">
  190. <input name="password_min_length" value="''' + html.escape(d_list[30]) + '''">
  191. <hr class="main_hr">
  192. <span>''' + get_lang(conn, 'encryption_method') + '''</span>
  193. <hr class="main_hr">
  194. <select name="encode">''' + encode_select + '''</select>
  195. <h3>''' + get_lang(conn, 'ua') + '''</h3>
  196. <label><input type="checkbox" name="ua_get" ''' + check_box_div[4] + '''> ''' + get_lang(conn, 'ua_get_off') + '''</label>
  197. <hr class="main_hr">
  198. <span>''' + get_lang(conn, 'ua_expiration_date') + '''</span> (''' + get_lang(conn, 'day') + ''') (''' + get_lang(conn, 'off') + ''' : ''' + get_lang(conn, 'empty') + ''')
  199. <hr class="main_hr">
  200. <input name="ua_expiration_date" value="''' + html.escape(d_list[42]) + '''">
  201. <hr class="main_hr">
  202. <h2>''' + get_lang(conn, 'server_set') + '''</h2>
  203. <span>''' + get_lang(conn, 'update_branch') + '''</span>
  204. <hr class="main_hr">
  205. <select name="update">''' + branch_div + '''</select>
  206. <span ''' + sqlite_only + '''>
  207. <h3>''' + get_lang(conn, 'backup') + ''' (''' + get_lang(conn, 'sqlite_only') + ''')</h3>
  208. <span>''' + get_lang(conn, 'backup_warning') + ''' (EX : data_YYYYMMDDHHMMSS.db)</span>
  209. <hr class="main_hr">
  210. <hr class="main_hr">
  211. <span>''' + get_lang(conn, 'backup_interval') + '''</span> (''' + get_lang(conn, 'hour') + ''') (''' + get_lang(conn, 'off') + ''' : ''' + get_lang(conn, 'empty') + ''')
  212. <hr class="main_hr">
  213. <input name="back_up" value="''' + html.escape(d_list[9]) + '''">
  214. <hr class="main_hr">
  215. <span>''' + get_lang(conn, 'backup_where') + '''</span> (''' + get_lang(conn, 'default') + ''' : ''' + get_lang(conn, 'empty') + ''') (''' + get_lang(conn, 'example') + ''' : ./data/backup.db)
  216. <hr class="main_hr">
  217. <input name="backup_where" value="''' + html.escape(d_list[21]) + '''">
  218. <hr class="main_hr">
  219. <span>''' + get_lang(conn, 'backup_count') + '''</span> (''' + get_lang(conn, 'default') + ''' : ''' + get_lang(conn, 'empty') + ''')
  220. <hr class="main_hr">
  221. <input name="backup_count" value="''' + html.escape(d_list[41]) + '''">
  222. <hr class="main_hr">
  223. </span>
  224. <h2>''' + get_lang(conn, 'edit_set') + '''</h2>
  225. <span>''' + get_lang(conn, 'slow_edit') + '''</span> (''' + get_lang(conn, 'second') + ''') (''' + get_lang(conn, 'off') + ''' : ''' + get_lang(conn, 'empty') + ''')
  226. <hr class="main_hr">
  227. <input name="slow_edit" value="''' + html.escape(d_list[19]) + '''">
  228. <hr class="main_hr">
  229. <label><input type="checkbox" name="edit_bottom_compulsion" ''' + check_box_div[7] + '''> ''' + get_lang(conn, 'edit_bottom_compulsion') + '''</label>
  230. <hr class="main_hr">
  231. <span>''' + get_lang(conn, 'title_max_length') + '''</span> (''' + get_lang(conn, 'off') + ''' : ''' + get_lang(conn, 'empty') + ''')
  232. <hr class="main_hr">
  233. <input name="title_max_length" value="''' + html.escape(d_list[28]) + '''">
  234. <hr class="main_hr">
  235. <span>''' + get_lang(conn, 'title_topic_max_length') + '''</span> (''' + get_lang(conn, 'off') + ''' : ''' + get_lang(conn, 'empty') + ''')
  236. <hr class="main_hr">
  237. <input name="title_topic_max_length" value="''' + html.escape(d_list[29]) + '''">
  238. <hr class="main_hr">
  239. <span>''' + get_lang(conn, 'max_file_size') + ''' (MB)</span>
  240. <hr class="main_hr">
  241. <input name="upload" value="''' + html.escape(d_list[4]) + '''">
  242. <hr class="main_hr">
  243. <label><input type="checkbox" name="history_recording_off" ''' + check_box_div[9] + '''> ''' + get_lang(conn, 'set_history_recording_off') + '''</label>
  244. <hr class="main_hr">
  245. <label><input type="checkbox" name="move_with_redirect" ''' + check_box_div[13] + '''> ''' + get_lang(conn, 'move_with_redirect') + ''' (''' + get_lang(conn, 'not_working') + ''')</label>
  246. <hr class="main_hr">
  247. <span>''' + get_lang(conn, 'slow_thread') + '''</span> (''' + get_lang(conn, 'second') + ''') (''' + get_lang(conn, 'off') + ''' : ''' + get_lang(conn, 'empty') + ''')
  248. <hr class="main_hr">
  249. <input name="slow_thread" value="''' + html.escape(d_list[38]) + '''">
  250. <hr class="main_hr">
  251. <span>''' + get_lang(conn, 'edit_timeout') + '''</span> (''' + get_lang(conn, 'second') + ''') (''' + get_lang(conn, 'off') + ''' : ''' + get_lang(conn, 'empty') + ''') (''' + get_lang(conn, 'linux_only') + ''')
  252. <hr class="main_hr">
  253. <input name="edit_timeout" value="''' + html.escape(d_list[39]) + '''">
  254. <hr class="main_hr">
  255. <span>''' + get_lang(conn, 'document_content_max_length') + '''</span> (''' + get_lang(conn, 'off') + ''' : ''' + get_lang(conn, 'empty') + ''')
  256. <hr class="main_hr">
  257. <input name="document_content_max_length" value="''' + html.escape(d_list[40]) + '''">
  258. <hr class="main_hr">
  259. <button id="opennamu_save_button" type="submit">''' + get_lang(conn, 'save') + '''</button>
  260. </form>
  261. '''),
  262. menu = [['setting', get_lang(conn, 'return')]]
  263. ))