Sfoglia il codice sorgente

불필요한 POST API 제거

잉여개발기 (SPDV) 2 anni fa
parent
commit
9fbe3f336d

+ 4 - 6
app.py

@@ -665,7 +665,6 @@ app.route('/bbs/delete/<int:bbs_num>/<int:post_num>/<comment_num>', methods = ['
 # Func-api
 # 폐지 예정
 app.route('/api/w_tool/<tool>/<everything:name>', methods = ['GET', 'POST'])(api_w)
-app.route('/api/w/<everything:name>', methods = ['GET', 'POST'])(api_w)
 
 # app.route('/api/render_tool/<tool>/<everything:name>', methods = ['POST'])(api_w_render)
 # app.route('/api/render_tool/<tool>', methods = ['POST'])(api_w_render)
@@ -683,7 +682,7 @@ app.route('/api/bbs/w/comment_one/<sub_code>')(api_bbs_w_comment)
 app.route('/api/version', defaults = { 'version_list' : version_list })(api_version)
 app.route('/api/skin_info')(api_skin_info)
 app.route('/api/skin_info/<name>')(api_skin_info)
-app.route('/api/user_info/<name>', methods = ['POST', 'GET'])(api_user_info)
+app.route('/api/user_info/<user_name>')(api_user_info)
 app.route('/api/setting/<name>')(api_setting)
 
 app.route('/api/thread/<int:topic_num>/<tool>/<int:num>/<render>')(api_topic)
@@ -703,11 +702,10 @@ app.route('/api/recent_discuss/<get_type>/<int:num>')(api_recent_discuss)
 app.route('/api/recent_discuss/<int:num>')(api_recent_discuss)
 app.route('/api/recent_discuss')(api_recent_discuss)
 
-app.route('/api/lang/<data>', methods = ['POST', 'GET'])(api_func_lang)
-app.route('/api/sha224/<everything:data>', methods = ['POST', 'GET'])(api_func_sha224)
+app.route('/api/lang/<data>')(api_func_lang)
+app.route('/api/sha224/<everything:data>')(api_func_sha224)
 
-app.route('/api/title_index')(api_title_index)
-app.route('/api/image/<everything:name>', methods = ['POST', 'GET'])(api_image_view)
+app.route('/api/image/<everything:name>')(api_image_view)
 
 # Func-main
 # 여기도 전반적인 조정 시행 예정

+ 5 - 5
route/__init__.py

@@ -1,14 +1,11 @@
 from route.api_func_lang import api_func_lang
-from route.api_func_sha224 import api_func_sha224
 from route.api_image_view import api_image_view
 from route.api_w_raw import api_w_raw
-from route.api_w_render import api_w_render
 from route.api_recent_change import api_recent_change
 from route.api_recent_discuss import api_recent_discuss
 from route.api_search import api_search
 from route.api_setting import api_setting
 from route.api_skin_info import api_skin_info
-from route.api_title_index import api_title_index
 from route.api_topic import api_topic
 from route.api_user_info import api_user_info
 from route.api_version import api_version
@@ -162,7 +159,6 @@ from route.user_watch_list_name import user_watch_list_name
 from route.view_acl import view_acl
 from route.view_diff import view_diff
 from route.view_down import view_down
-from route.view_random import view_random
 from route.view_raw import view_raw_2
 from route.view_read import view_read
 from route.view_xref import view_xref
@@ -171,4 +167,8 @@ from route.vote_add import vote_add
 from route.vote_close import vote_close
 from route.vote_end import vote_end
 from route.vote_list import vote_list
-from route.vote_select import vote_select
+from route.vote_select import vote_select
+
+from route.go_api_func_sha224 import api_func_sha224
+
+from route.go_view_random import view_random

+ 1 - 14
route/api_func_lang.py

@@ -2,17 +2,4 @@ from .tool.func import *
 
 def api_func_lang(data = 'Test'):
     with get_db_connect() as conn:
-        if flask.request.method == 'POST':
-            try:
-                title_list = json.loads(flask.request.form.get('title_list', ''))
-                title_list = list(set(title_list))
-            except:
-                title_list = []
-
-            data_list = {}
-            for i in title_list:
-                data_list[i] = load_lang(i)
-
-            return flask.jsonify(data_list)
-        else:
-            return flask.jsonify({ "data" : load_lang(data) })
+        return flask.jsonify({ "data" : load_lang(data) })

+ 0 - 18
route/api_func_sha224.py

@@ -1,18 +0,0 @@
-from .tool.func import *
-
-def api_func_sha224(data = 'Test'):
-    with get_db_connect() as conn:
-        if flask.request.method == 'POST':
-            try:
-                title_list = json.loads(flask.request.form.get('title_list', ''))
-                title_list = list(set(title_list))
-            except:
-                title_list = []
-
-            data_list = {}
-            for i in title_list:
-                data_list[i] = sha224_replace(i)
-
-            return flask.jsonify(data_list)
-        else:
-            return flask.jsonify({ "data" : sha224_replace(data) })

+ 3 - 17
route/api_image_view.py

@@ -2,21 +2,7 @@ from .tool.func import *
 
 def api_image_view(name = 'Test'):
     with get_db_connect() as conn:
-        if flask.request.method == 'POST':
-            try:
-                title_list = json.loads(flask.request.form.get('title_list', ''))
-                title_list = list(set(title_list))
-            except:
-                title_list = []
-
-            data_list = {}
-            for i in title_list:
-                if os.path.exists(os.path.join(load_image_url(), i)):
-                    data_list[i] = '1'
-
-            return flask.jsonify(data_list)
+        if os.path.exists(os.path.join(load_image_url(), name)):
+            return flask.jsonify({ "exist" : "1" })
         else:
-            if os.path.exists(os.path.join(load_image_url(), name)):
-                return flask.jsonify({ "exist" : "1" })
-            else:
-                return flask.jsonify({})
+            return flask.jsonify({})

+ 0 - 15
route/api_title_index.py

@@ -1,15 +0,0 @@
-from .tool.func import *
-
-def api_title_index():
-    with get_db_connect() as conn:
-        curs = conn.cursor()
-
-        if flask.request.args.get('count', '1') == '1':
-            curs.execute(db_change('select data from other where name = "count_all_title"'))
-            title_count = curs.fetchall()
-            if title_count:
-                return flask.jsonify({ 'count' : title_count[0][0] })
-            else:
-                return flask.jsonify({ 'count' : '0' })
-        else:
-            return flask.jsonify({})

+ 93 - 104
route/api_user_info.py

@@ -1,118 +1,107 @@
 from .tool.func import *
 
-def api_user_info(name = ''):
+def api_user_info(user_name = ''):
     with get_db_connect() as conn:
         curs = conn.cursor()
 
-        if flask.request.method == 'POST':
-            try:
-                data_list = json.loads(flask.request.form.get('title_list', ''))
-                data_list = list(set(data_list))
-            except:
-                data_list = [name]
-
-            data_result = {}
-            for user_name in data_list:
-                data_result[user_name] = {}
-                
-                # name part
-                data_result[user_name]['render'] = ip_pas(user_name)
-                
-                # auth part
-                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[user_name]['auth'] = db_data[0][0]
-                        else:
-                            data_result[user_name]['auth'] = '1'
-                    else:
-                        data_result[user_name]['auth'] = '1'
+        data_result = {}
+        
+        # name part
+        data_result['render'] = ip_pas(user_name)
+        
+        # auth part
+        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[user_name]['auth'] = '0'
+                    data_result['auth'] = '1'
+            else:
+                data_result['auth'] = '1'
+        else:
+            data_result['auth'] = '0'
 
-                curs.execute(db_change("select data from user_set where id = ? and name = 'auth_date'"), [user_name])
-                db_data = curs.fetchall()
-                if db_data:
-                    data_result[user_name]['auth_date'] = db_data[0][0]
-                else:
-                    data_result[user_name]['auth_date'] = '0'
+        curs.execute(db_change("select data from user_set where id = ? and name = 'auth_date'"), [user_name])
+        db_data = curs.fetchall()
+        if db_data:
+            data_result['auth_date'] = db_data[0][0]
+        else:
+            data_result['auth_date'] = '0'
 
-                curs.execute(db_change("select data from user_set where id = ? and name = 'level'"), [user_name])
-                db_data = curs.fetchall()
-                if db_data:
-                    data_result[user_name]['level'] = db_data[0][0]
-                else:
-                    data_result[user_name]['level'] = '0'
+        curs.execute(db_change("select data from user_set where id = ? and name = 'level'"), [user_name])
+        db_data = curs.fetchall()
+        if db_data:
+            data_result['level'] = db_data[0][0]
+        else:
+            data_result['level'] = '0'
 
-                curs.execute(db_change("select data from user_set where id = ? and name = 'experience'"), [user_name])
-                db_data = curs.fetchall()
-                if db_data:
-                    data_result[user_name]['exp'] = db_data[0][0]
-                else:
-                    data_result[user_name]['exp'] = '0'
+        curs.execute(db_change("select data from user_set where id = ? and name = 'experience'"), [user_name])
+        db_data = curs.fetchall()
+        if db_data:
+            data_result['exp'] = db_data[0][0]
+        else:
+            data_result['exp'] = '0'
+            
+        # ban part
+        if ban_check(user_name) == 0:
+            data_result['ban'] = '0'
+        else:
+            data_result['ban'] = {}
+            regex_ban = 0
+            
+            curs.execute(db_change("select login, block, end, why from rb where band = 'regex' and ongoing = '1'"))
+            for db_data in curs.fetchall():
+                if re.compile(db_data[1]).search(user_name):
+                    regex_ban = 1
                     
-                # ban part
-                if ban_check(name) == 0:
-                    data_result[user_name]['ban'] = '0'
-                else:
-                    data_result[user_name]['ban'] = {}
-                    regex_ban = 0
+                    data_result['ban']['type'] = 'regex'
+                    if db_data[0] == 'O':
+                        data_result['ban']['login_able'] = '1'
+                    else:
+                        data_result['ban']['login_able'] = '0'
+                        
+                    if db_data[2] == '':
+                        data_result['ban']['period'] = '0'
+                    else:
+                        data_result['ban']['period'] = db_data[2]
+                        
+                    data_result['ban']['reason'] = db_data[3]
                     
-                    curs.execute(db_change("select login, block, end, why from rb where band = 'regex' and ongoing = '1'"))
-                    for db_data in curs.fetchall():
-                        if re.compile(db_data[1]).search(user_name):
-                            regex_ban = 1
-                            
-                            data_result[user_name]['ban']['type'] = 'regex'
-                            if db_data[0] == 'O':
-                                data_result[user_name]['ban']['login_able'] = '1'
-                            else:
-                                data_result[user_name]['ban']['login_able'] = '0'
-                                
-                            if db_data[2] == '':
-                                data_result[user_name]['ban']['period'] = '0'
-                            else:
-                                data_result[user_name]['ban']['period'] = db_data[2]
-                                
-                            data_result[user_name]['ban']['reason'] = db_data[3]
-                            
-                            break
-                            
-                    if regex_ban == 0:
-                        curs.execute(db_change("select login, block, end, why from rb where block = ? and ongoing = '1'"), [user_name])
-                        db_data = curs.fetchall()
-                        if db_data:
-                            data_result[user_name]['ban']['type'] = 'normal'
-                            if db_data[0][0] == 'O':
-                                data_result[user_name]['ban']['login_able'] = '1'
-                            else:
-                                data_result[user_name]['ban']['login_able'] = '0'
-                                
-                            if db_data[0][2] == '':
-                                data_result[user_name]['ban']['period'] = '0'
-                            else:
-                                data_result[user_name]['ban']['period'] = db_data[0][2]
-                                
-                            data_result[user_name]['ban']['reason'] = db_data[0][3]
-                
-                # user document part
-                curs.execute(db_change("select title from data where title = ?"), ['user:' + user_name])
-                if curs.fetchall():
-                    data_result[user_name]['document'] = '1'
-                else:
-                    data_result[user_name]['document'] = '0'
-
-                # user title part
-                curs.execute(db_change('select data from user_set where name = "user_title" and id = ?'), [user_name])
+                    break
+                    
+            if regex_ban == 0:
+                curs.execute(db_change("select login, block, end, why from rb where block = ? and ongoing = '1'"), [user_name])
                 db_data = curs.fetchall()
                 if db_data:
-                    data_result[user_name]['user_title'] = db_data[0][0]
-                else:
-                    data_result[user_name]['user_title'] = ''
-                    
-            return flask.jsonify(data_result)
+                    data_result['ban']['type'] = 'normal'
+                    if db_data[0][0] == 'O':
+                        data_result['ban']['login_able'] = '1'
+                    else:
+                        data_result['ban']['login_able'] = '0'
+                        
+                    if db_data[0][2] == '':
+                        data_result['ban']['period'] = '0'
+                    else:
+                        data_result['ban']['period'] = db_data[0][2]
+                        
+                    data_result['ban']['reason'] = db_data[0][3]
+        
+        # user document part
+        curs.execute(db_change("select title from data where title = ?"), ['user:' + user_name])
+        if curs.fetchall():
+            data_result['document'] = '1'
+        else:
+            data_result['document'] = '0'
+
+        # user title part
+        curs.execute(db_change('select data from user_set where name = "user_title" and id = ?'), [user_name])
+        db_data = curs.fetchall()
+        if db_data:
+            data_result['user_title'] = db_data[0][0]
         else:
-            return flask.jsonify({})
+            data_result['user_title'] = ''
+                
+        return flask.jsonify({ 'data' : data_result })

+ 0 - 6
route/api_w_render.py

@@ -1,6 +0,0 @@
-from .tool.func import *
-
-def api_w_render(name = '', tool = ''):
-    data_org = flask.request.form.get('data', '')
-    
-    pass

+ 18 - 0
route/go_api_func_sha224.py

@@ -0,0 +1,18 @@
+from .tool.func import *
+
+def api_func_sha224(data = 'Test'):
+    with get_db_connect() as conn:
+        if platform.system() == 'Linux':
+            if platform.machine() in ["AMD64", "x86_64"]:
+                data = subprocess.Popen([os.path.join(".", "route_go", "bin", sys._getframe().f_code.co_name + ".amd64.bin"), data], stdout = subprocess.PIPE).communicate()[0]
+            else:
+                data = subprocess.Popen([os.path.join(".", "route_go", "bin", sys._getframe().f_code.co_name + ".arm64.bin"), data], stdout = subprocess.PIPE).communicate()[0]
+        else:
+            if platform.machine() in ["AMD64", "x86_64"]:
+                data = subprocess.Popen([os.path.join(".", "route_go", "bin", sys._getframe().f_code.co_name + ".amd64.exe"), data], stdout = subprocess.PIPE).communicate()[0]
+            else:
+                data = subprocess.Popen([os.path.join(".", "route_go", "bin", sys._getframe().f_code.co_name + ".arm64.exe"), data], stdout = subprocess.PIPE).communicate()[0]
+
+        data = data.decode('utf8')
+
+        return flask.jsonify({ "data" : data })

+ 7 - 7
route/view_random.py → route/go_view_random.py

@@ -2,17 +2,17 @@ from .tool.func import *
 
 def view_random(db_set):
     with get_db_connect() as conn:
-        curs = conn.cursor()
-
         if platform.system() == 'Linux':
             if platform.machine() in ["AMD64", "x86_64"]:
-                data = subprocess.Popen([os.path.join(".", "route_go", "bin", sys._getframe().f_code.co_name + ".amd64.bin"), db_set], stdout=subprocess.PIPE).communicate()[0]
+                data = subprocess.Popen([os.path.join(".", "route_go", "bin", sys._getframe().f_code.co_name + ".amd64.bin"), db_set], stdout = subprocess.PIPE).communicate()[0]
             else:
-                data = subprocess.Popen([os.path.join(".", "route_go", "bin", sys._getframe().f_code.co_name + ".arm64.bin"), db_set], stdout=subprocess.PIPE).communicate()[0]
+                data = subprocess.Popen([os.path.join(".", "route_go", "bin", sys._getframe().f_code.co_name + ".arm64.bin"), db_set], stdout = subprocess.PIPE).communicate()[0]
         else:
             if platform.machine() in ["AMD64", "x86_64"]:
-                data = subprocess.Popen([os.path.join(".", "route_go", "bin", sys._getframe().f_code.co_name + ".amd64.exe"), db_set], stdout=subprocess.PIPE).communicate()[0]
+                data = subprocess.Popen([os.path.join(".", "route_go", "bin", sys._getframe().f_code.co_name + ".amd64.exe"), db_set], stdout = subprocess.PIPE).communicate()[0]
             else:
-                data = subprocess.Popen([os.path.join(".", "route_go", "bin", sys._getframe().f_code.co_name + ".arm64.exe"), db_set], stdout=subprocess.PIPE).communicate()[0]
+                data = subprocess.Popen([os.path.join(".", "route_go", "bin", sys._getframe().f_code.co_name + ".arm64.exe"), db_set], stdout = subprocess.PIPE).communicate()[0]
+
+        data = data.decode('utf8')
 
-        return redirect('/w/' + url_pas(data.decode('utf8')))
+        return redirect('/w/' + url_pas(data))

+ 2 - 6
route/main_search_deep.py

@@ -53,13 +53,9 @@ def main_search_deep(name = 'Test', search_type = 'title', num = 1):
             '''
 
             if search_type == 'title':
-                curs.execute(db_change("select title from data where title like ? collate nocase order by title limit ?, 50"),
-                    ['%' + name + '%', sql_num]
-                )
+                curs.execute(db_change("select title from data where title like ? collate nocase order by title limit ?, 50"), ['%' + name + '%', sql_num])
             else:
-                curs.execute(db_change("select title from data where data like ? collate nocase order by title limit ?, 50"),
-                    ['%' + name + '%', sql_num]
-                )
+                curs.execute(db_change("select title from data where data like ? collate nocase order by title limit ?, 50"), ['%' + name + '%', sql_num])
 
             all_list = curs.fetchall()
             for data in all_list:

+ 1 - 4
route/main_view.py

@@ -30,7 +30,4 @@ def main_view(name = ''):
                 else:
                     mime_type = 'text/' + mime_type
 
-            return flask.send_from_directory(
-                dir_name, file_name, 
-                mimetype = mime_type
-            )
+            return flask.send_from_directory(dir_name, file_name, mimetype = mime_type)

+ 1 - 4
route/main_view_image.py

@@ -10,9 +10,6 @@ def main_view_image(name = ''):
             if mime_type == 'svg':
                 mime_type = 'svg+xml'
 
-            return flask.send_from_directory(
-                './' + load_image_url(), name, 
-                mimetype = 'image/' + mime_type
-            )
+            return flask.send_from_directory('./' + load_image_url(), name, mimetype = 'image/' + mime_type)
         else:
             return main_func_error_404()

+ 1 - 1
route/tool/func.py

@@ -1045,7 +1045,7 @@ def wiki_css(data):
     data_css = ''
     data_css_dark = ''
 
-    data_css_ver = '193'
+    data_css_ver = '194'
     data_css_ver = '.cache_v' + data_css_ver
 
     if 'main_css' in global_wiki_set:

+ 0 - 0
route/view_category.py


+ 21 - 0
route_go/api_func_sha224.go

@@ -0,0 +1,21 @@
+package main
+
+import (
+	"crypto/sha256"
+	"encoding/hex"
+	"fmt"
+	"os"
+)
+
+func main() {
+	call_arg := os.Args[1:]
+
+	data := call_arg[0]
+
+	hasher := sha256.New224()
+	hasher.Write([]byte(data))
+	hash_byte := hasher.Sum(nil)
+	hash_str := hex.EncodeToString(hash_byte)
+
+	fmt.Print(hash_str)
+}

BIN
route_go/bin/api_func_sha224.amd64.bin


BIN
route_go/bin/api_func_sha224.amd64.exe


BIN
route_go/bin/api_func_sha224.arm64.bin


BIN
route_go/bin/api_func_sha224.arm64.exe


BIN
route_go/bin/main_func_easter_egg.amd64.bin


BIN
route_go/bin/main_func_easter_egg.amd64.exe


BIN
route_go/bin/main_func_easter_egg.arm64.bin


BIN
route_go/bin/main_func_easter_egg.arm64.exe


+ 0 - 3
route_go/main_func_easter_egg.go

@@ -3,12 +3,9 @@ package main
 import (
 	"fmt"
 	"math/rand"
-	"time"
 )
 
 func main() {
-	rand.Seed(time.Now().UnixNano())
-
 	select_list := []string{
 		"PWD0ZbR7AOY", // Shanghai Teahouse ~ Chinese Tea
 		"HoU29ljOmTE", // Flawless Clothing of Celestials

+ 1 - 1
route_go/view_random.go

@@ -10,8 +10,8 @@ import (
 
 func main() {
 	call_arg := os.Args[1:]
-	db_set := map[string]string{}
 
+	db_set := map[string]string{}
 	json.Unmarshal([]byte(call_arg[0]), &db_set)
 
 	db := tool.DB_connect(db_set)

+ 97 - 102
views/main_css/js/func/insert_user_info.js

@@ -1,5 +1,101 @@
 "use strict";
 
+function do_insert_user_info_sub(name, lang_data_list, lang_data = {}, for_a = 0) {
+    if(lang_data_list[for_a]) {
+        fetch("/api/lang/" + lang_data_list[for_a]).then(function(res) {
+            return res.json();
+        }).then(function(data) {
+            lang_data[lang_data_list[for_a]] = data['data'];
+
+            do_insert_user_info_sub(name, lang_data_list, lang_data, for_a + 1);
+        });
+    } else {
+        fetch("/api/user_info/" + opennamu_do_url_encode(name)).then(function(res) {
+            return res.json();
+        }).then(function(data) {
+            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 + ')'
+            }
+            
+            let get_data_ban = data['data']['ban'];
+            if(get_data_ban === '0') {
+                get_data_ban = lang_data['normal'];
+            } else {
+                get_data_ban = lang_data['ban'];
+                get_data_ban += '<br>';
+                
+                get_data_ban += lang_data['type'] + ' : ';
+                if(data['data']['ban']['type'] === 'normal') {
+                    get_data_ban += lang_data['normal']; 
+                } else {
+                    get_data_ban += lang_data['regex'];
+                }
+                get_data_ban += '<br>';
+                
+                get_data_ban += lang_data['period'] + ' : ';
+                if(data['data']['ban']['period'] === '0') {
+                    get_data_ban += lang_data['limitless']; 
+                } else {
+                    get_data_ban += data['data']['ban']['period'];
+                }
+                get_data_ban += '<br>';
+                
+                get_data_ban += lang_data['login_able'] + ' : ';
+                if(data['data']['ban']['login_able'] === '1') {
+                    get_data_ban += 'O'; 
+                } else {
+                    get_data_ban += 'X';
+                }
+                get_data_ban += '<br>';
+                
+                get_data_ban += lang_data['why'] + ' : ' + data['data']['ban']['reason'];
+            }
+
+            let level = '0';
+            let exp = '0';
+            let max_exp = '0';
+            if(get_data_auth !== lang_data['ip']) {
+                level = data['data']['level'];
+                exp = data['data']['exp'];
+                max_exp = String(500 + (Number(data['data']['level']) * 50));
+            }
+            
+            let end_data = '' +
+                '<table class="user_info_table">' +
+                    '<tr>' +
+                        '<td>' + lang_data['user_name'] + '</td>' +
+                        '<td>' + data['data']['render'] + '</td>' +
+                    '</tr>' +
+                    '<tr>' +
+                        '<td>' + lang_data['authority'] + '</td>' +
+                        '<td>' + get_data_auth + '</td>' +
+                    '</tr>' +
+                    '<tr>' +
+                        '<td>' + lang_data['state'] + '</td>' +
+                        '<td>' + get_data_ban + '</td>' +
+                    '</tr>' +
+                    '<tr>' +
+                        '<td>' + lang_data['level'] + '</td>' +
+                        '<td>' + level + ' (' + exp + ' / ' + max_exp + ')</td>' +
+                    '</tr>' +
+                '</table>' +
+            '';
+            
+            document.getElementById('opennamu_get_user_info').innerHTML = end_data;
+        });
+    }
+}
+
 function do_insert_user_info() {
     if(document.getElementById('opennamu_get_user_info')) {
         let name = document.getElementById('opennamu_get_user_info').innerHTML;
@@ -22,108 +118,7 @@ function do_insert_user_info() {
             'level'
         ];
 
-        let data_form = new FormData();
-        data_form.append('title_list', JSON.stringify(lang_data_list));
-
-        let xhr = new XMLHttpRequest();
-        xhr.open("POST", "/api/lang/Test");
-        xhr.send(data_form);
-
-        xhr.onreadystatechange = function() {
-            if(this.readyState === 4 && this.status === 200) {
-                let lang_data = JSON.parse(this.responseText);
-                
-                let xhr_2 = new XMLHttpRequest();
-                xhr_2.open("POST", "/api/user_info/" + opennamu_do_url_encode(name));
-                xhr_2.send();
-
-                xhr_2.onreadystatechange = function() {
-                    if(this.readyState === 4 && this.status === 200) {
-                        let get_data = JSON.parse(this.responseText);
-                        
-                        let get_data_auth = get_data[name]['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 = get_data[name]['auth'];
-                        }
-
-                        let get_data_auth_date = get_data[name]['auth_date'];
-                        if(get_data_auth_date !== '0') {
-                            get_data_auth += ' (~' + get_data_auth_date + ')'
-                        }
-                        
-                        let get_data_ban = get_data[name]['ban'];
-                        if(get_data_ban === '0') {
-                            get_data_ban = lang_data['normal'];
-                        } else {
-                            get_data_ban = lang_data['ban'];
-                            get_data_ban += '<br>';
-                            
-                            get_data_ban += lang_data['type'] + ' : ';
-                            if(get_data[name]['ban']['type'] === 'normal') {
-                                get_data_ban += lang_data['normal']; 
-                            } else {
-                                get_data_ban += lang_data['regex'];
-                            }
-                            get_data_ban += '<br>';
-                            
-                            get_data_ban += lang_data['period'] + ' : ';
-                            if(get_data[name]['ban']['period'] === '0') {
-                                get_data_ban += lang_data['limitless']; 
-                            } else {
-                                get_data_ban += get_data[name]['ban']['period'];
-                            }
-                            get_data_ban += '<br>';
-                            
-                            get_data_ban += lang_data['login_able'] + ' : ';
-                            if(get_data[name]['ban']['login_able'] === '1') {
-                                get_data_ban += 'O'; 
-                            } else {
-                                get_data_ban += 'X';
-                            }
-                            get_data_ban += '<br>';
-                            
-                            get_data_ban += lang_data['why'] + ' : ' + get_data[name]['ban']['reason'];
-                        }
-
-                        let level = '0';
-                        let exp = '0';
-                        let max_exp = '0';
-                        if(get_data_auth !== lang_data['ip']) {
-                            level = get_data[name]['level'];
-                            exp = get_data[name]['exp'];
-                            max_exp = String(500 + (Number(get_data[name]['level']) * 50));
-                        }
-                        
-                        let data = '' +
-                            '<table class="user_info_table">' +
-                                '<tr>' +
-                                    '<td>' + lang_data['user_name'] + '</td>' +
-                                    '<td>' + get_data[name]['render'] + '</td>' +
-                                '</tr>' +
-                                '<tr>' +
-                                    '<td>' + lang_data['authority'] + '</td>' +
-                                    '<td>' + get_data_auth + '</td>' +
-                                '</tr>' +
-                                '<tr>' +
-                                    '<td>' + lang_data['state'] + '</td>' +
-                                    '<td>' + get_data_ban + '</td>' +
-                                '</tr>' +
-                                '<tr>' +
-                                    '<td>' + lang_data['level'] + '</td>' +
-                                    '<td>' + level + ' (' + exp + ' / ' + max_exp + ')</td>' +
-                                '</tr>' +
-                            '</table>' +
-                        '';
-                        
-                        document.getElementById('opennamu_get_user_info').innerHTML = data;
-                    }
-                }
-            }
-        }
+        do_insert_user_info_sub(name, lang_data_list);
     }
 }