잉여개발기 (SPDV) 1 год назад
Родитель
Сommit
5a0a81fb74

+ 2 - 3
app.py

@@ -733,9 +733,6 @@ app.route('/api/skin_info/<name>')(api_skin_info)
 app.route('/api/user_info/<user_name>')(api_user_info)
 app.route('/api/setting/<name>')(api_setting)
 
-app.route('/api/auth')(api_func_auth)
-app.route('/api/auth/<user_name>')(api_func_auth)
-
 app.route('/api/thread/<int:topic_num>/<int:s_num>/<int:e_num>')(api_topic)
 app.route('/api/thread/<int:topic_num>/<tool>')(api_topic)
 app.route('/api/thread/<int:topic_num>')(api_topic)
@@ -789,6 +786,8 @@ app.route('/api/v2/set_reset/<everything:name>')(api_w_set_reset)
 
 app.route('/api/v2/setting/<name>', methods = ['GET', 'PUT'])(api_setting)
 
+app.route('/api/v2/auth')(api_func_auth)
+app.route('/api/v2/auth/<user_name>')(api_func_auth)
 app.route('/api/v2/auth/give', methods = ['PATCH'])(api_give_auth)
 
 app.route('/api/v2/user/rankup', methods = ['GET', 'PATCH'])(api_user_rankup)

+ 9 - 5
lang/en-US.json

@@ -31,6 +31,10 @@
     "bbs_edit_authority" : "BBS edit authority",
     "user_analyze_authority" : "Analyze user authority",
     "still_use_auth_error" : "Someone still has this authority",
+    "xss_data_include_error" : "You cannot enter characters that can be used for XSS.",
+    "nothing_authority" : "Ineffective authority",
+    "multiple_authorize" : "Multiple authorize",
+    "auth_to_auth" : "Auth group to auth group",
 
     "_comment_" : "Common",
     "data" : "Data",
@@ -238,7 +242,7 @@
     "direct_input" : "Direct input",
     "acl_record" : "ACL record",
     "last_edit_time" : "Last edited time",
-    "admin_group" : "Administrator groups",
+    "admin_group" : "Auth group(s)",
     "topic_setting" : "Discussion settings",
     "old_page" : "Document(s) modified a long time ago",
     "skin_set" : "Skin setting(s)",
@@ -250,7 +254,7 @@
     "all_register_num" : "The number of application forms",
     "replace_move" : "Interchange",
     "merge_move" : "Merging documents",
-    "add_admin_group" : "Add administrator groups",
+    "add_admin_group" : "Add auth group",
     "add_watchlist" : "Add watchlist",
     "blocked_user" : "Blocked user",
     "blocked_admin" : "Blocked administrator",
@@ -258,7 +262,7 @@
     "topic_name_change" : "Change discussion name",
     "topic_acl_setting" : "Discussion ACL setting",
     "topic_acl" : "Discussion ACL",
-    "delete_admin_group": "Delete admin group",
+    "delete_admin_group": "Delete auth group",
     "main_skin_set" : "Main skin settings",
     "reset_backlink" : "Reset backlink",
     "link_in_this" : "Links in this document",
@@ -533,7 +537,7 @@
     "discussion_list" : "Discussion(s) list",
     "admin_list" : "Administrator(s) list",
     "member_list" : "Member(s) list",
-    "admin_group_list" : "Administrator group(s) list",
+    "admin_group_list" : "Auth group(s) list",
     "all_document_list" : "All document(s) list",
     "watchlist" : "Watchlist",
     "image_file_list" : "Image file(s) list",
@@ -677,7 +681,7 @@
     "user_reset_sign" : "Your account information has changed like this.",
     "default_edit_help" : "Describe it here",
     "markup_enabled" : "Markup enabled",
-    "many_delete_help" : "Please write down the documents name one by one on the line.",
+    "many_delete_help" : "Please write down the name one by one on the line.",
     "name_or_ip_or_regex_or_cidr_multiple" : "Please write down the username or IP or Regex or CIDR one by one on the line.",
     "sqlite_only" : "SQLite only",
     "linux_only" : "Linux OS only",

+ 6 - 2
lang/ko-KR.json

@@ -297,7 +297,7 @@
     "edit_help": "편집 창 문구",
     "default_edit_help": "이곳에 내용을 입력해주세요.",
     "many_delete": "다중 문서 삭제",
-    "many_delete_help": "한 줄에 문서명을 한 개씩 적어주세요.",
+    "many_delete_help": "한 줄에 이름을 한 개씩 적어주세요.",
     "content": "내용",
     "upload_acl": "파일 올리기 ACL",
     "topic_delete": "토론 삭제",
@@ -677,5 +677,9 @@
     "bbs_comment_authority" : "BBS 댓글 권한",
     "bbs_edit_authority" : "BBS 수정 권한",
     "user_analyze_authority" : "사용자 분석 권한",
-    "still_use_auth_error" : "이 권한을 보유한 사람이 아직 존재합니다."
+    "still_use_auth_error" : "이 권한을 보유한 사람이 아직 존재합니다.",
+    "xss_data_include_error" : "XSS에 이용될 수 있는 문자는 입력할 수 없습니다.",
+    "nothing_authority" : "아무 기능 없는 권한",
+    "multiple_authorize" : "다중 권한 부여",
+    "auth_to_auth" : "권한 그룹에서 권한 그룹으로"
 }

+ 4 - 9
route/api_user_info.py

@@ -13,16 +13,11 @@ def api_user_info(user_name = ''):
         curs.execute(db_change("select data from user_set where id = ? and name = 'acl'"), [user_name])
         db_data = curs.fetchall()
         if db_data:
-            if db_data[0][0] != 'user':
-                curs.execute(db_change("select name from alist where name = ?"), [db_data[0][0]])
-                if curs.fetchall() or db_data[0][0] in get_default_admin_group():
-                    data_result['auth'] = db_data[0][0]
-                else:
-                    data_result['auth'] = '1'
-            else:
-                data_result['auth'] = '1'
+            data_result['auth'] = db_data[0][0]
+        elif ip_or_user(user_name) == 1:
+            data_result['auth'] = 'user'
         else:
-            data_result['auth'] = '0'
+            data_result['auth'] = 'ip'
 
         curs.execute(db_change("select data from user_set where id = ? and name = 'auth_date'"), [user_name])
         db_data = curs.fetchall()

+ 15 - 11
route/give_admin_groups.py

@@ -60,37 +60,41 @@ def give_admin_groups(name = 'test'):
                         [4, 'bbs_comment', get_lang(conn, 'bbs_comment_authority')],
                             [5, '', get_lang(conn, 'bbs_view_authority')],
                         [4, 'bbs_view', get_lang(conn, 'bbs_view_authority')],
-                    [3, 'captcha_one_check_five_pass', get_lang(conn, 'captcha_one_check_five_pass_authority')]
+                    [3, 'captcha_one_check_five_pass', get_lang(conn, 'captcha_one_check_five_pass_authority')],
+                    [3, 'nothing', get_lang(conn, 'nothing_authority')]
         ]
 
+        if html.escape(name) != name:
+            return re_error(conn, 48)
+
         if flask.request.method == 'POST':
             if acl_check(tool = 'owner_auth', memo = 'auth list add (' + name + ')') == 1:
                 return re_error(conn, 3)
-            elif name in get_default_admin_group():
-                return re_error(conn, 3)
 
             curs.execute(db_change("delete from alist where name = ?"), [name])
             for for_a in acl_name_list:
                 if flask.request.form.get(for_a[1], 0) != 0:
                     curs.execute(db_change("insert into alist (name, acl) values (?, ?)"), [name, for_a[1]])
 
+            curs.execute(db_change("insert into alist (name, acl) values (?, 'nothing')"), [name])
+
             return redirect(conn, '/auth/list/add/' + url_pas(name))
         else:
             state = 'disabled' if acl_check('', 'owner_auth', '', '') == 1 else ''
-            state = 'disabled' if name in get_default_admin_group() else state
+
+            curs.execute(db_change('select acl from alist where name = ?'), [name])
+            acl_list = curs.fetchall()
+            acl_list = [for_b[0] for for_b in acl_list]
 
             data = '<ul>'
-            for for_a in acl_name_list:
-                curs.execute(db_change('select acl from alist where name = ?'), [name])
-                acl_list = curs.fetchall()
-                acl_list = [for_a[0] for for_a in acl_list]
-                
+            for for_a in acl_name_list:                
                 checked = ''
+                if for_a[1] in acl_list:
+                    checked = 'checked'
+                    
                 choice = '<input type="checkbox" ' + state + ' name="' + for_a[1] + '" ' + checked + '> ' + for_a[2]
                 if for_a[1] == '':
                     choice = for_a[2]
-                elif for_a[1] in acl_list:
-                    checked = 'checked'
 
                 data += '' + \
                     '<li class="opennamu_list_1" style="margin-left: ' + str(int(for_a[0]) * 20) + 'px;">' + \

+ 3 - 0
route/give_delete_admin_group.py

@@ -4,6 +4,9 @@ def give_delete_admin_group_2(name = 'test'):
     with get_db_connect() as conn:
         curs = conn.cursor()
 
+        if name in get_default_admin_group():
+            return redirect(conn, '/auth/list')
+
         if acl_check('', 'owner_auth', '', '') == 1:
             return re_error(conn, 3)
 

+ 4 - 5
route/list_user.py

@@ -11,11 +11,10 @@ def list_user(arg_num = 1):
         curs.execute(db_change("select id, data from user_set where name = 'date' order by data desc limit ?, 50"), [sql_num])
         user_list = curs.fetchall()
         for data in user_list:
-            list_data += '' + \
-                '<li>' + \
-                    ip_pas(data[0]) + (' (' + data[1] + ')' if data[1] != '' else '') + \
-                '</li>' + \
-            ''
+            list_data += '<li>'
+            list_data += ip_pas(data[0])
+            list_data += ' | ' + data[1] if data[1] != '' else ''
+            list_data += '</li>'
 
         list_data += '</ul>' + next_fix(conn, '/list/user/', arg_num, user_list)
 

+ 2 - 0
route/main_tool_admin.py

@@ -13,6 +13,8 @@ def main_tool_admin():
                     <li><a href="/auth/ban">''' + get_lang(conn, 'ban') + '''</a></li>
                     <li><a href="/auth/ban/multiple">''' + get_lang(conn, 'multiple_ban') + '''</a></li>
                     <li><a href="/manager/5">''' + get_lang(conn, 'authorize') + '''</a></li>
+                    <li><a href="/auth/give">''' + get_lang(conn, 'multiple_authorize') + '''</a></li>
+                    <li><a href="/auth/give_total">''' + get_lang(conn, 'auth_to_auth') + '''</a></li>
                     <li><a href="/delete_multiple">''' + get_lang(conn, 'many_delete') + '''</a></li>
                     <li><a href="/app_submit">''' + get_lang(conn, 'application_list') + '''</a></li>
                 </ul>

+ 11 - 6
route/tool/func.py

@@ -756,14 +756,17 @@ def set_init_always(conn, ver_num, run_mode):
         curs.execute(db_change('delete from alist where name = "owner"'))
         curs.execute(db_change('insert into alist (name, acl) values ("owner", "owner")'))
 
-        curs.execute(db_change('delete from alist where name = "user"'))
-        curs.execute(db_change('insert into alist (name, acl) values ("user", "user")'))
+        curs.execute(db_change("select name from alist where name = 'user' limit 1"))
+        if not curs.fetchall():
+            curs.execute(db_change('insert into alist (name, acl) values ("user", "user")'))
 
-        curs.execute(db_change('delete from alist where name = "ip"'))
-        curs.execute(db_change('insert into alist (name, acl) values ("ip", "ip")'))
+        curs.execute(db_change("select name from alist where name = 'ip' limit 1"))
+        if not curs.fetchall():
+            curs.execute(db_change('insert into alist (name, acl) values ("ip", "ip")'))
 
-        curs.execute(db_change('delete from alist where name = "ban"'))
-        curs.execute(db_change('insert into alist (name, acl) values ("ban", "view")'))
+        curs.execute(db_change("select name from alist where name = 'ban' limit 1"))
+        if not curs.fetchall():
+            curs.execute(db_change('insert into alist (name, acl) values ("ban", "view")'))
 
         # 이미지 폴더 없으면 생성
         if not os.path.exists(load_image_url(conn)):
@@ -2434,6 +2437,8 @@ def re_error(conn, data):
             return_code = 404
         elif num == 47:
             data = get_lang(conn, 'still_use_auth_error')
+        elif num == 48:
+            data = get_lang(conn, 'xss_data_include_error')
         else:
             data = '???'
 

BIN
route_go/bin/main.amd64.bin


BIN
route_go/bin/main.amd64.exe


BIN
route_go/bin/main.arm64.bin


BIN
route_go/bin/main.arm64.exe


+ 6 - 1
route_go/route/api_func_auth.go

@@ -18,6 +18,11 @@ func Api_func_auth(call_arg []string) string {
 	auth_name := tool.Get_user_auth(db, other_set["ip"])
 	auth_info := tool.Get_auth_group_info(db, auth_name)
 
-	json_data, _ := json.Marshal(auth_info)
+	return_data := make(map[string]interface{})
+	return_data["response"] = "ok"
+	return_data["name"] = auth_name
+	return_data["info"] = auth_info
+
+	json_data, _ := json.Marshal(return_data)
 	return string(json_data)
 }

+ 1 - 1
route_go/route/api_give_auth_patch.go

@@ -61,7 +61,7 @@ func Api_give_auth_patch(call_arg []string) string {
 				}
 				defer stmt.Close()
 
-				_, err = stmt.Exec()
+				_, err = stmt.Exec(user_name)
 				if err != nil {
 					log.Fatal(err)
 				}

+ 4 - 0
route_go/route/api_list_auth.go

@@ -13,6 +13,10 @@ func Api_list_auth(call_arg []string) string {
 
 	return_data := make(map[string]interface{})
 	return_data["response"] = "ok"
+	return_data["language"] = map[string]string{
+		"send":             tool.Get_language(db, "send", false),
+		"many_delete_help": tool.Get_language(db, "many_delete_help", false),
+	}
 	return_data["data"] = data
 
 	json_data, _ := json.Marshal(return_data)

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
     "beta" : {
-        "r_ver" : "v3.5.0-v166",
+        "r_ver" : "v3.5.0-v167",
         "c_ver" : "20240513",
         "s_ver" : "20240426"
     }

+ 5 - 5
views/main_css/js/func/editor.js

@@ -70,7 +70,7 @@ function pasteListener(e) {
         }
 
         fetch('/api/lang', {
-            method : 'post',
+            method : 'POST',
             body : lang_data,
         }).then(function(res) {
             return res.json();
@@ -87,8 +87,8 @@ function pasteListener(e) {
             formData.append("f_data[]", customFile);
 
             fetch("/upload", {
-                method: "POST",
-                body: formData,
+                method : "POST",
+                body : formData,
             }).then((res) => {
                 if (res.status === 200 || res.status === 201) {
                     const url = res.url;
@@ -347,7 +347,7 @@ function opennamu_do_user_editor_insert() {
         form_data.append('data', data);
 
         fetch('/api/v2/user/setting/editor', {
-            method : 'post',
+            method : 'POST',
             body : form_data,
         }).then(function() {
             opennnamu_do_user_editor();
@@ -362,7 +362,7 @@ function opennamu_do_user_editor_delete() {
         form_data.append('data', data);
 
         fetch('/api/v2/user/setting/editor', {
-            method : 'delete',
+            method : 'DELETE',
             body : form_data,
         }).then(function() {
             opennnamu_do_user_editor();

+ 1 - 1
views/main_css/js/func/func.js

@@ -274,7 +274,7 @@ function opennamu_page_control(url, page, data_length, data_length_max = 50) {
     return (back() + ' ' + next()).replace(/^ /, '');
 }
 
-function openamu_make_list(left = '', right = '', bottom = '') {
+function opennamu_make_list(left = '', right = '', bottom = '') {
     let data_html = '<div class="opennamu_recent_change">';
     data_html += left;
     

+ 0 - 8
views/main_css/js/func/insert_user_info.js

@@ -10,14 +10,6 @@ function do_insert_user_info() {
             let lang_data = data["language"];
 
             let get_data_auth = data['data']['auth'];
-            if(get_data_auth === '0') {
-                get_data_auth = lang_data['ip'];
-            } else if(get_data_auth === '1') {
-                get_data_auth = lang_data['member'];
-            } else {
-                get_data_auth = data['data']['auth'];
-            }
-
             let get_data_auth_date = data['data']['auth_date'];
             if(get_data_auth_date !== '0') {
                 get_data_auth += ' (~' + get_data_auth_date + ')'

+ 2 - 2
views/main_css/js/route/bbs_set.js

@@ -13,7 +13,7 @@ function opennamu_bbs_set_post() {
         post_data.append('data', document.getElementById('opennamu_' + acl_set_list[for_a]).value);
         
         fetch('/api/v2/setting/' + acl_set_list[for_a], {
-            method : 'put',
+            method : 'PUT',
             body : post_data,
         }).then(function(res) {
             return res.json();
@@ -36,7 +36,7 @@ function opennamu_bbs_set() {
     lang_data.append('data', lang_str);
 
     fetch('/api/v2/lang', {
-        method : 'post',
+        method : 'POST',
         body : lang_data,
     }).then(function(res) {
         return res.json();

+ 1 - 1
views/main_css/js/route/edit_move_all.js

@@ -5,7 +5,7 @@ function opennamu_edit_move_all() {
     lang_data.append('data', 'title_start_document title_end_document title_include_document move document_name');
 
     fetch('/api/lang', {
-        method : 'post',
+        method : 'POST',
         body : lang_data,
     }).then(function(res) {
         return res.json();

+ 95 - 11
views/main_css/js/route/give_auth.js

@@ -1,33 +1,117 @@
 "use strict";
 
+function opennamu_give_auth_submit() {
+    const url = window.location.pathname;
+    const url_split = url.split('/');
+
+    if(url_split.length === 3) {
+        if(url_split[2] === 'give_total') {
+            let auth = document.getElementById('opennamu_give_auth_select_org').value;
+            let change_auth = document.getElementById('opennamu_give_auth_select').value;
+
+            let send_data = new FormData();
+
+            send_data.append('auth', auth);
+            send_data.append('change_auth', change_auth);
+
+            fetch('/api/v2/auth/give', {
+                method : 'PATCH',
+                body : send_data,
+            });
+        } else {
+            let change_auth = document.getElementById('opennamu_give_auth_select').value;
+            let user_name_data = document.getElementById('opennamu_give_auth_user_name').value;
+            user_name_data = user_name_data.replace('\r', '');
+
+            let user_name_arr = user_name_data.split("\n");
+            for(let for_a = 0; for_a < user_name_arr.length; for_a++) {
+                let send_data = new FormData();
+
+                send_data.append('user_name', user_name_arr[for_a]);
+                send_data.append('change_auth', change_auth);
+
+                fetch('/api/v2/auth/give', {
+                    method : 'PATCH',
+                    body : send_data,
+                });
+            }
+        }
+    } else {
+        let user_name = url_split[3];
+        let change_auth = document.getElementById('opennamu_give_auth_select').value;
+
+        let send_data = new FormData();
+
+        send_data.append('user_name', user_name);
+        send_data.append('change_auth', change_auth);
+
+        fetch('/api/v2/auth/give', {
+            method : 'PATCH',
+            body : send_data,
+        });
+    }
+
+    history.go(0);
+}
+
 function opennamu_give_auth() {
     const url = window.location.pathname;
     const url_split = url.split('/');
 
     let mode = 0;
     if(url_split.length === 3) {
-        if(url_split[2] === 'auth_total') {
+        if(url_split[2] === 'give_total') {
             mode = 1;
         }
     }
 
     let html_data = '';
-    if(mode === 0) {
-        if(url_split.length === 3) {
-            html_data += '<textarea></textarea>';
-        }
-
-
-    } else {
-        
-    }
+    let user_name = '';
 
     fetch('/api/v2/list/auth').then(function(res) {
         return res.json();
     }).then(function(data) {
+        let lang = data["language"];
         let data_list = data["data"];
-        console.log(data_list);
+
+        if(mode === 0) {
+            if(url_split.length === 3) {
+                html_data += '<textarea id="opennamu_give_auth_user_name" class="opennamu_textarea_100" placeholder="' + lang["many_delete_help"] + '"></textarea>';
+                html_data += '<hr class="main_hr">';
+            } else {
+                user_name = url_split[3];
+    
+                html_data += '<div id="opennamu_get_user_info">' + opennamu_xss_filter(user_name) + '</div>';
+                html_data += '<hr class="main_hr">';
+            }
+        } else {
+            html_data += '<select id="opennamu_give_auth_select_org">';
+            for(let for_a = 0; for_a < data_list.length; for_a++) {
+                html_data += '<option value="' + data_list[for_a] + '">' + data_list[for_a] + '</option>';
+            }
+            html_data += '</select>';
+            html_data += '<hr class="main_hr">';
+        }
+
+        html_data += '<select id="opennamu_give_auth_select">';
+        for(let for_a = 0; for_a < data_list.length; for_a++) {
+            html_data += '<option value="' + data_list[for_a] + '">' + data_list[for_a] + '</option>';
+        }
+        html_data += '</select>';
+        html_data += '<hr class="main_hr">';
+
+        html_data += '<button onclick="opennamu_give_auth_submit();">' + lang["send"] + '</button>';
 
         document.getElementById('opennamu_give_auth').innerHTML = html_data;
+
+        if(user_name !== '') {
+            fetch('/api/v2/auth/' + opennamu_do_url_encode(user_name)).then(function(res) {
+                return res.json();
+            }).then(function(data) {
+                document.getElementById('opennamu_give_auth_select').value = data["name"];
+            });
+        }
+
+        do_insert_user_info();
     });
 }

+ 1 - 1
views/main_css/js/route/list_old_page.js

@@ -26,7 +26,7 @@ function opennamu_list_old_page() {
 
             let right = '<a href="/w/' + doc_name + '">' + opennamu_xss_filter(data[for_a][0]) + '</a> ';
 
-            data_html += openamu_make_list(right, data[for_a][1]);
+            data_html += opennamu_make_list(right, data[for_a][1]);
         }
 
         data_html += opennamu_page_control('/list/document/' + set_type + '/{}', Number(num), data.length);

+ 1 - 1
views/main_css/js/route/list_recent_block.js

@@ -117,7 +117,7 @@ function opennamu_list_recent_block() {
                 }
             }
 
-            data_html += openamu_make_list(left, right, bottom);
+            data_html += opennamu_make_list(left, right, bottom);
         }
 
         data_html += opennamu_page_control('/recent_block/' + tool + user_name + '/{}', Number(page), data.length);

+ 2 - 2
views/main_css/js/route/list_recent_change.js

@@ -43,7 +43,7 @@ function opennamu_list_recent_change() {
         let date_heading = '';
         for(let for_a = 0; for_a < data.length; for_a++) {
             if(data[for_a][6] !== "" && data[for_a][1] === "") {
-                data_html += openamu_make_list('----');
+                data_html += opennamu_make_list('----');
 
                 continue;
             }
@@ -131,7 +131,7 @@ function opennamu_list_recent_change() {
                 bottom = opennamu_send_render(opennamu_xss_filter(data[for_a][4]));
             }
 
-            data_html += openamu_make_list(left, right, bottom);
+            data_html += opennamu_make_list(left, right, bottom);
         }
 
         data_html += opennamu_page_control('/recent_change/{}/' + set_type, Number(num), data.length);

+ 1 - 1
views/main_css/js/route/list_recent_discuss.js

@@ -54,7 +54,7 @@ function opennamu_list_recent_discuss() {
             right += data[for_a][6] + ' | ';
             right += data[for_a][2];
 
-            data_html += openamu_make_list(left, right);
+            data_html += opennamu_make_list(left, right);
         }
 
         data_html += opennamu_page_control('/recent_discuss/{}/' + set_type, Number(num), data.length);

+ 1 - 1
views/main_css/js/route/list_user_check_submit.js

@@ -9,7 +9,7 @@ function opennamu_list_user_check_submit() {
     lang_data.append('data', 'check');
     
     fetch('/api/lang', {
-        method : 'post',
+        method : 'POST',
         body : lang_data,
     }).then(function(res) {
         return res.json();

+ 2 - 2
views/main_css/js/route/main_sys_restart.js

@@ -5,7 +5,7 @@ function opennamu_main_sys_restart() {
     lang_data.append('data', 'restart');
     
     fetch('/api/lang', {
-        method : 'post',
+        method : 'POST',
         body : lang_data,
     }).then(function(res) {
         return res.json();
@@ -16,7 +16,7 @@ function opennamu_main_sys_restart() {
 
         document.getElementById('opennamu_main_sys_restart_button').addEventListener('click', function() {
             fetch('/restart', {
-                method: 'post'
+                method : 'POST'
             });
 
             window.location.href = '/';

+ 3 - 3
views/main_css/js/route/setting_404_page.js

@@ -7,7 +7,7 @@ function opennamu_setting_404_page_post() {
     put_data_select.append('data', select);
     
     fetch('/api/v2/setting/manage_404_page', {
-        method : 'put',
+        method : 'PUT',
         body : put_data_select,
     }).then(function(data) {
         let content = document.getElementById('opennamu_setting_404_page_textarea').value;
@@ -16,7 +16,7 @@ function opennamu_setting_404_page_post() {
         put_data_content.append('data', content);
     
         fetch('/api/v2/setting/manage_404_page_content', {
-            method : 'put',
+            method : 'PUT',
             body : put_data_content,
         });
     
@@ -38,7 +38,7 @@ function opennamu_setting_404_page() {
     lang_data.append('data', 'save 404_file 404_page preview');
 
     fetch('/api/lang', {
-        method : 'post',
+        method : 'POST',
         body : lang_data,
     }).then(function(res) {
         return res.json();

+ 1 - 1
views/main_css/js/route/topic.js

@@ -20,7 +20,7 @@ function opennamu_thread_delete() {
     lang_data.append('data', 'delete');
 
     fetch('/api/lang', {
-        method : 'post',
+        method : 'POST',
         body : lang_data,
     }).then(function(res) {
         return res.json();

+ 1 - 1
views/main_css/js/route/topic_list.js

@@ -44,7 +44,7 @@ function opennamu_topic_list() {
             right += data[for_a][5] + ' | ';
             right += data[for_a][6];
 
-            data_html += openamu_make_list(left, right);
+            data_html += opennamu_make_list(left, right);
         }
 
         if(data_html !== '') {

+ 1 - 1
views/main_css/js/route/w_set.js

@@ -5,7 +5,7 @@ function w_set_reset() {
     lang_data.append('data', 'reset end');
 
     fetch('/api/lang', {
-        method : 'post',
+        method : 'POST',
         body : lang_data,
     }).then(function(res) {
         return res.json();

+ 3 - 2
views/ringo/css/main.css

@@ -356,8 +356,9 @@ input, textarea, button, select {
     background-color: white;
 }
 
-input, textarea {
-    width: calc(100% - 20px);
+.opennamu_main input,
+.opennamu_main textarea {
+    width: calc(100% - 22px);
 }
 
 #main_data button:hover {