2
0
Surplus_Up (2DU) 7 жил өмнө
parent
commit
8b0871f2de

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 181 - 249
app.py


+ 6 - 124
func.py

@@ -10,6 +10,7 @@ import html
 import sys
 import re
 import os
+
 try:
     import css_html_js_minify
 except:
@@ -72,7 +73,7 @@ def easy_minify(data, tool = None):
 
 def render_set(title = '', data = '', num = 0):
     if acl_check(title, 'render') == 1:
-        return 'http request 401.3'
+        return 'HTTP Request 401.3'
     else:
         return namumark(title, data, num)
 
@@ -91,45 +92,6 @@ def captcha_get():
     return data
 
 def update():
-    # v3.0.5 사용자 문서, 파일 문서, 분류 문서 영어화
-    try:
-        all_rep = [['사용자:', 'user:'], ['파일:', 'file:'], ['분류:', 'category:']]
-        all_rep2 = ['data', 'history', 'acl', 'topic', 'back']
-
-        test = 0
-
-        for i in range(3):
-            for j in range(6):
-                if not j == 5:
-                    curs.execute('select title from ' + all_rep2[j] + ' where title like ?', [all_rep[i][0] + '%'])
-                else:
-                    curs.execute('select link from back where link like ?', [all_rep[i][0] + '%'])
-
-                user_rep = curs.fetchall()
-                if user_rep:
-                    for user_rep2 in user_rep:
-                        test = 1
-
-                        first = re.sub('^' + all_rep[i][0], all_rep[i][1], user_rep2[0])
-
-                        if j == 0:
-                            curs.execute("update data set title = ? where title = ?", [first, user_rep2[0]])
-                        elif j == 1:
-                            curs.execute("update history set title = ? where title = ?", [first, user_rep2[0]])
-                        elif j == 2:
-                            curs.execute("update acl set title = ? where title = ?", [first, user_rep2[0]])
-                        elif j == 3:
-                            curs.execute("update topic set title = ? where title = ?", [first, user_rep2[0]])
-                        elif j == 4:
-                            curs.execute("update back set title = ? where title = ?", [first, user_rep2[0]])
-                        elif j == 5:
-                            curs.execute("update back set link = ? where link = ?", [first, user_rep2[0]])
-
-        if test == 1:
-            print('사용자 to user, 파일 to file, 분류 to category')
-    except:
-        pass
-        
     # v3.0.8 rd, agreedis, stop 테이블 통합
     try:
         curs.execute("select title, sub, close from stop")
@@ -241,7 +203,7 @@ def load_lang(data, num = 2):
         curs.execute("select data from other where name = 'language'")
         rep_data = curs.fetchall()
 
-        json_data = open(os.path.join('language', rep_data[0][0] + '.json'), 'rt', encoding='utf-8').read()
+        json_data = open(os.path.join('lang', rep_data[0][0] + '.json'), 'rt', encoding='utf-8').read()
         lang = json.loads(json_data)
 
         if data in lang:
@@ -253,7 +215,7 @@ def load_lang(data, num = 2):
         rep_data = curs.fetchall()
         if rep_data:
             try:
-                json_data = open(os.path.join('language', rep_data[0][0] + '.json'), 'rt', encoding='utf-8').read()
+                json_data = open(os.path.join('lang', rep_data[0][0] + '.json'), 'rt', encoding='utf-8').read()
                 lang = json.loads(json_data)
             except:
                 return load_lang(data, 1)
@@ -265,43 +227,6 @@ def load_lang(data, num = 2):
         else:
             return load_lang(data, 1)
 
-## new load lang ##
-def load_langs(index, data, num = 2):
-    if num == 1:
-        curs.execute("select data from other where name = 'language'")
-        rep_data = curs.fetchall()
-
-        json_data = open(os.path.join('languages', rep_data[0][0] + '.json'), 'rt', encoding='utf-8').read()
-        lang = json.loads(json_data)
-
-        if index in lang:
-            if data in lang[index]:
-                return lang[index][data]
-            else:
-                return data + ' (missing)'
-        else:
-            return data + ' (missing)'
-    else:
-        curs.execute('select data from user_set where name = "lang" and id = ?', [ip_check()])
-        rep_data = curs.fetchall()
-        if rep_data:
-            try:
-                json_data = open(os.path.join('languages', rep_data[0][0] + '.json'), 'rt', encoding='utf-8').read()
-                lang = json.loads(json_data)
-            except:
-                return load_langs(index, data, 1)
-
-            if index in lang:
-                if data in lang[index]:
-                    return lang[index][data]
-                else:
-                    return data + ' (missing)'
-            else:
-                return load_langs(index, data, 1)
-        else:
-            return load_langs(index, data, 1)
-
-
 def load_oauth(provider):
     oauth = json.loads(open('oauthsettings.json', encoding='utf-8').read())
 
@@ -448,49 +373,6 @@ def wiki_set(num = 1):
     else:
         return var_data
 
-def load_script():
-    script = []
-    script += ['<script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>'] # script[0] = head(top)
-    curs.execute("select data from other where name = 'easter_egg'")
-    db_data = curs.fetchall()
-    script += ['''
-    <link rel="stylesheet" href="/views/main_css/egg.css">
-    <script>
-    var easter_count = 0;
-    document.getElementById('bottom_main').onclick = function() {
-        easter_count++;
-        if (easter_count > 3) {
-            $.get('/request/egg', function (data) {
-                document.getElementById("egg_content").innerHTML = data;
-                if (data != '') {
-                    document.getElementById("egg_container").style.display = 'block';
-                }
-            });
-        }
-    };
-    </script>
-    <script>
-    function overlay_off() {
-        document.getElementById("egg_content").innerHTML = '';
-        document.getElementById("egg_container").style.display = "none";
-    }
-    </script>
-
-    <div id="egg_container" class="egg_container">
-        <div id="egg_outer" class="egg_container" onclick="overlay_off()"></div>
-        <div id="egg_inner">
-            <div id="egg_close" onclick="overlay_off()">
-                <i class="fas fa-times"></i>
-            </div>
-            <div id="egg_content">
-            </div>
-         </div>
-    </div>
-    ''']
-    # script[1] = on the </body>(bottom)
-    return script
-
-
 def diff(seqm):
     output = []
 
@@ -583,7 +465,7 @@ def ip_pas(raw_ip):
     hide = 0
 
     if re.search("(\.|:)", raw_ip):
-        if not re.search("^" + load_lang('tool', 1) + ":", raw_ip):    
+        if not re.search("^tool:", raw_ip):    
             curs.execute("select data from other where name = 'ip_view'")
             data = curs.fetchall()
             if data and data[0][0] != '':
@@ -638,7 +520,7 @@ def custom():
     else:
         user_name = load_lang('user')
 
-    return ['', '', user_icon, user_head, email, user_name, load_lang(data = '', num = 2)]
+    return ['', '', user_icon, user_head, email, user_name]
 
 def load_skin(data = ''):
     div2 = ''

+ 237 - 0
lang/en-US.json

@@ -0,0 +1,237 @@
+{
+    "_comment_1_" : "Common",
+        "delete" : "Delete",
+        "notice" : "Notice",
+        "add" : "Add",
+        "etc" : "Etc",
+        "name" : "Name",
+        "regex" : "Regex",
+        "id" : "ID",
+        "list" : "List",
+        "main" : "Main",
+        "return" : "Return",
+        "skin" : "Skin",
+        "save" : "Save",
+        "secret_key" : "Secret key",
+        "host" : "Host",
+        "port" : "Port",
+        "restart" : "Restart",
+        "document_name" : "Document's name",
+        "discussion_name" : "Discussion's name",
+        "user_name" : "User's name",
+        "go" : "Go",
+        "document" : "Document",
+        "discussion" : "Discussion",
+        "backlink" : "Backlink",
+        "closed" : "Closed",
+        "reload" : "Reload",
+        "send" : "Send",
+        "ongoing" : "Ongoing",
+        "normal" : "Normal",
+        "range" : "Range",
+        "search" : "Search",
+        "raw" : "Raw",
+        "history" : "History",
+        "user_discussion" : "User discussion",
+        "record" : "Record",
+        "state" : "State",
+        "revert" : "Revert",
+        "why" : "Reason",
+        "edit" : "Edit",
+        "preview" : "Preview",
+        "move" : "Move",
+        "upload" : "Upload",
+        "version" : "Version",
+        "stop" : "Stop",
+        "close" : "Closed",
+        "open" : "Open",
+        "agreement" : "Agreement",
+        "template" : "Template",
+        "category" : "Category",
+        "file" : "File",
+        "writer" : "Writer",
+        "editor" : "Editor",
+        "hide" : "Hide",
+        "check" : "Check",
+        "destruction" : "Destruction",
+        "tool" : "Tool",
+        "recent" : "Recently",
+        "password" : "Password",
+        "login" : "sign-in",
+        "register" : "sign-up",
+        "language" : "Language",
+        "compare" : "Compare",
+        "email" : "Email",
+        "key" : "Key",
+        "all" : "All",
+        "sub" : "Sub",
+        "create" : "Create",
+        "acl" : "ACL",
+        "upper" : "Parent",
+        "other" : "Other",
+        "random" : "Random",
+        "error" : "Error",
+        "next" : "Next",
+        "previous" : "Previous",
+        "_comment_1.1_" : "Time",
+            "second" : "second(s)",
+            "hour" : "hour(s)",
+            "limitless" : "No time limit",
+            "time" : "Time",
+            "period" : "Period",
+            "end" : "End",
+        "_comment_1.2_" : "User",
+            "user" : "User",
+            "admin" : "Admin",
+            "owner" : "Owner",
+            "ip" : "IP",
+            "member" : "Member",
+        "_comment_1.3_" : "Ban",
+            "ban" : "Block",
+            "blocked" : "Blocked",
+            "release" : "Release",
+    "_comment_2_" : "Func",
+        "wiki_restart" : "Wiki engine restart",
+        "update" : "Update",
+        "need_document" : "Required Document(s)",
+        "close_discussion" : "closed discussion(s)",
+        "open_discussion" : "open discussion(s)",
+        "recent_discussion" : "Recently discussion(s)",
+        "recent_change" : "Recently edit(s)",
+        "edit_filter" : "contents filter",
+        "recent_ban" : "Recently Block(s)",
+        "load" : "Import another document",
+        "edit_filter_rule" : "Contents filter's rule",
+        "move_history" : "History of move",
+        "other_tool" : "Other tool",
+        "admin_tool" : "Admin's tool",
+        "check_user" : "Check user",
+        "compare_target" : "Comparison target name",
+        "authorize" : "Authorize",
+        "indexing" : "DB Indexing",
+        "hide_release" : "Unhide",
+        "notice_release" : "Release notice",
+        "ban_release" : "Unblock",
+        "discussion_tool" : "Discussion tools",
+        "discussion_raw" : "Discussion's raw",
+        "oauth_signin_facebook" : "Sign-in with facebook",
+        "oauth_signin_naver" : "Sign-in with NAVER",
+        "connection" : "Connection",
+        "new_connection" : "Connect...",
+        "user_setting" : "User settings",
+        "now_password" : "Now password",
+        "new_password" : "New password",
+        "password_confirm" : "Password confirm",
+        "oauth_connection" : "Oauth Connection",
+        "password_search" : "Password finder",
+        "login_able" : "Loginable",
+        "band_ban" : "Range block",
+        "band_blocked" : "Range blocked",
+        "document_acl" : "Document's ACL",
+        "discussion_acl" : "Discussion's ACL",
+        "view_acl" : "Document viewed ACL",
+        "under_category" : "Sub-category",
+        "count" : "Count",
+        "alarm" : "Notice(s)",
+        "user_document" : "User's document",
+        "user_head" : "User's <head>",
+        "_comment_2.1_" : "Filter",
+            "_comment_2.1.1_" : "List",
+                "interwiki_list" : "Interwiki(s) list",
+                "email_filter_list" : "Email filter(s) list",
+                "id_filter_list" : "ID filter(s) list",
+                "edit_filter_list" : "Contents filter(s) list",
+            "_comment_2.1.2_" : "Add",
+                "interwiki_add" : "Interwiki add",
+                "edit_filter_add" : "Contents filter add",
+                "id_filter_add" : "ID filter add",
+                "email_filter_add" : "Email filter add",
+        "_comment_2.2_" : "Setting",
+            "setting" : "Setting",
+            "restart_required" : "Restart required",
+            "oauth_setting" : "OAuth settings",
+            "adsense_setting" : "Adsense settings",
+            "adsense_enable" : "Adsense enable",
+            "skin_setting" : "Skin settings",
+            "_comment_2.2.1_" : "List",
+                "main_setting" : "Main settings",
+                "text_setting" : "Text settings",
+                "main_head" : "Global <head>",
+                "main_body" : "Global <body>",
+            "_comment_2.2.2_" : "Main",
+                "wiki_name" : "Wiki's name",
+                "wiki_logo" : "Wiki's logo",
+                "main_page" : "Main page",
+                "bottom_text" : "Bottom text",
+                "max_file_size" : "Max file size",
+                "backup_interval" : "Backup Cycles",
+                "wiki_skin" : "Wiki's Skin",
+                "default_acl" : "Default edit ACL",
+                "default_discussion_acl" : "Default discussion ACL",
+                "no_register" : "No sign-up",
+                "hide ip" : "Hide IP",
+                "wiki_host" : "Wiki's host",
+                "wiki_port" : "Wiki's port",
+                "wiki_secret_key" : "Wiki's secret key",
+            "_comment_2.2.3_" : "Text",
+                "register_text" : "Terms of sign-up",
+                "non_login_alert" : "Non-login alert",
+            "_comment_2.2.4_" : "Google",
+                "recaptcha" : "reCAPTCHA",
+                "google_imap" : "Google IMAP",
+                "google_email" : "Google email",
+                "google_app_password" : "Google APP password",
+        "_comment_2.3_" : "List",
+            "open_discussion_list" : "Open discussion(s) list",
+            "discussion_list" : "Discussion(s) list",
+            "admin_list" : "Admin(s) list",
+            "member_list" : "Member(s) list",
+            "authority_use_list" : "Authority use list",
+            "admin_group_list" : "Admin group(s) list",
+            "all_document_list" : "All document(s) list",
+            "watchlist" : "Watchlist",
+            "_comment_2.3.1_" : "ACL document list",
+                "acl_document_list" : "ACL document(s) list",
+                "acl_required" : "required ACL",
+            "_comment_2.3.2_" : "ACL List",
+                "admin_group_add" : "Admin group add",
+                "ban_authority" : "Block authority",
+                "discussion_authority" : "Discussion manage authority",
+                "user_check_authority" : "User check authority",
+                "document_acl_authority" : "Document ACL manage authority",
+                "history_hide_authority" : "History hide authority",
+                "authorization_authority" : "Authorization authority",
+                "owner_authority" : "Owner authority",
+            "_comment_2.3.3_" : "Record",
+                "edit_record" : "Edit record",
+                "discussion_record" : "Discussion record",
+    "_comment_3_" : "Long",
+        "ie_no_data_required" : "Operation cannot continue because all required data has not been collected.",
+        "oauth_settings_not_found" : "Administrator has not provided any data about using this feature.",
+        "oauth_disabled" : "Administrator has disabled this feature.",
+        "http_warring" : "Warning : If you are not on HTTPS connection, Your information can be leaked. We won't response to that.",
+        "user_head_warring" : "User's <head> will deleted if you close the browser or when you are editting as guest",
+        "no_login_warring" : "non-login status. ip is logged when working with non-login.",
+        "_comment_3.1_" : "Error",
+            "update_error" : "Auto update is not support.",
+            "inter_error" : "Internal error.",
+            "authority_error" : "Insufficient privileges.",
+            "no_login_error" : "Non-login status.",
+            "no_exist_user_error" : "Account does not exist.",
+            "no_admin_block_error" : "Administrators can not block, check.",
+            "skin_error" : "This skin is not support setting.",
+            "same_id_exist_error" : "There are users with the same ID.",
+            "long_id_error" : "ID must be shorter than 20 characters.",
+            "id_char_error" : "Only hangul, alphabet and space are allowed for ID.",
+            "file_exist_error" : "File does not exist.",
+            "password_error" : "The password is different.",
+            "recaptcha_error" : "Go through the recaptcha.",
+            "file_extension_error" : "Only jpg, gif, jpeg, png, webp is possible.",
+            "edit_record_error" : "Edit reason can not be more than 500 characters.",
+            "same_file_error" : "A file with the same name exists.",
+            "file_capacity_error" : "Maximum file capacity (MB) :",
+            "decument_exist_error" : "The document already exists where you want to move it.",
+            "password_diffrent_error" : "Reconfirm password and input password are different.",
+            "edit_filter_error" : "Censored by edit filter.",
+            "file_name_error" : "Only alphabet, hangul, space, underscore, and minus signs are allowed for file names."
+}

+ 0 - 150
language/en-US.json

@@ -1,150 +0,0 @@
-{
-    "edit" : "edit",
-    "raw" : "raw",
-    "history" : "history",
-    "delete" : "delete",
-    "logo" : "logo",
-    "regex" : "regex",
-    "frontpage" : "frontpage",
-    "max_file_size" : "max file size",
-    "backup_interval" : "backup interval",
-    "default" : "default",
-    "language" : "language",
-    "host" : "host",
-    "port" : "port",
-    "secret_key" : "secret key",
-    "update_branch" : "update branch",
-    "main" : "main",
-    "indexing" : "indexing",
-    "easy" : "easy",
-    "server" : "server",
-    "load" : "load",
-    "skin" : "skin",
-    "view" : "view",
-    "bottom" : "bottom",
-    "text" : "notice",
-    "template" : "template",
-    "move" : "move",
-    "hide" : "hide",
-    "list" : "list",
-    "id" : "id",
-    "out" : "out",
-    "revert" : "undo",
-    "version" : " ver",
-    "normal_version" : "version",
-    "new" : "new",
-    "document" : "documents",
-    "all" : "everything",
-    "ban" : "ban",
-    "release" : "release",
-    "save" : "save",
-    "other" : "other",
-    "tool" : "tools",
-    "plus" : "add",
-    "open" : "open",
-    "search" : "search",
-    "need" : "needful",
-    "upload" : "file upload",
-    "record" : "record",
-    "name" : "name",
-    "license" : "license",
-    "interwiki" : "interwiki",
-    "update" : "update",
-    "oauth_settings" : "OAuth Settings",
-    "setting" : "set",
-    "create" : "create",
-    "editor" : "editor",
-    "hour" : "hour",
-    "time" : "time",
-    "close" : "close",
-    "stop" : "stop",
-    "restart" : "restart",
-    "agreement" : "agreement",
-    "backlink" : "backlink",
-    "why" : "reason",
-    "random" : "random",
-    "authority" : "authority",
-    "file" : "file",
-    "change" : "changes",
-    "compare" : "compare",
-    "count" : "count",
-    "check" : "check",
-    "user" : "user",
-    "alarm" : "alarm",
-    "preview" : "preview",
-    "watchlist" : "watching list",
-    "state" : "state",
-    "recent" : "recent",
-    "discussion" : "debate",
-    "login" : "login",
-    "logout" : "logout",
-    "register" : "register",
-    "register_suggest" : "Do not have an account? Register",
-    "able" : "able",
-    "second" : "second",
-    "normal" : "normal",
-    "subscriber" : "registor",
-    "admin" : "admin",
-    "next" : "next",
-    "previous" : "previous",
-    "owner" : "owner",
-    "admin_group" : "mod group",
-    "limitless" : "limitless",
-    "period" : "period",
-    "now" : "now",
-    "blocked" : "blocked",
-    "band" : "band",
-    "notice" : "notice",
-    "writer" : "writer",
-    "upper" : "upper",
-    "under" : "under",
-    "pass" : "pass",
-    "category" : "category",
-    "filter" : "filter",
-    "send" : "send",
-    "reload" : "reload",
-    "password" : "password",
-    "confirm" : "confirm",
-    "connection" : "Connection",
-    "inter_error" : "Inter Error!",
-    "inter_error_detail" : "An internal error occurred while processing the requested operation. Please check the details below.",
-    "ie_wrong_callback" : "The SNS service provider has sent an invalid value to the callback route. <a href=\"/login\">Try login again.</a>",
-    "ie_no_data_required" : "The operation can not continue because all necessary data is not collected. <a href=\"/login\">Try login again.</a>",
-    "oauth_conn_done" : " connected",
-    "oauth_conn_not" : " not found",
-    "oauth_conn_new" : "Connect..",
-    "oauth_signin_facebook" : "Sign in with facebook",
-    "oauth_signin_naver" : "Sign in with NAVER",
-    "oauth_settings_not_found" : "Administrator has not provided any data about using this feature.",
-    "oauth_disabled" : "Administrator has disabled this feature.",
-    
-    "adsense" : "Adsense",
-    "enable" : "enable",
-
-    "user_head_warring" : "user's head will deleted if you close the browser or when you are editting as guest",
-    "http_warring" : "warning : if you are not on https connection, your information can be leaked. we won't response to that.",
-    "no_login_warring" : "non-login status. ip is logged when working with non-login.",
-    
-    "authority_error" : "insufficient privileges.",
-    "no_login_error" : "non-login status.",
-    "no_exist_user_error" : "account does not exist.",
-    "no_admin_block_error" : "administrators can not block, check.",
-    "skin_error" : "this skin is not support setting.",
-    "same_id_exist_error" : "there are users with the same id.",
-    "long_id_error" : "id must be shorter than 20 characters.",
-    "id_char_error" : "only hangul, alphabet and space are allowed for id.",
-    "file_exist_error" : "file does not exist.",
-    "password_error" : "the password is different.",
-    "recaptcha_error" : "go through the recaptcha.",
-    "file_extension_error" : "only jpg, gif, jpeg, png, webp is possible.",
-    "edit_record_error" : "edit record can not be more than 500 characters.",
-    "same_file_error" : "a file with the same name exists.",
-    "file_capacity_error" : "maximum file capacity (mb) :",
-    "decument_exist_error" : "the document already exists where you want to move it.",
-    "password_diffrent_error" : "reconfirm password and input password are different.",
-    "edit_filter_error" : "censored by edit filter.",
-    "file_name_error" : "only alphabet, hangul, space, underscore, and minus signs are allowed for file names.",
-
-    "register_text" : "register text",
-    "non_login_alert" : "non-login alert"
-}

+ 0 - 149
language/ko-KR.json

@@ -1,149 +0,0 @@
-{
-    "edit" : "편집",
-    "raw" : "원본",
-    "history" : "역사",
-    "easy" : "간단",
-    "skin" : "스킨",
-    "delete" : "삭제",
-    "regex" : "정규표현식",
-    "language" : "언어",
-    "server" : "서버",
-    "filter" : "필터",
-    "move" : "이동",
-    "hide" : "숨김",
-    "list" : "목록",
-    "id" : "아이디",
-    "revert" : "되돌리기",
-    "version" : "판",
-    "normal_version" : "버전",
-    "document" : "문서",
-    "all" : "모든",
-    "ban" : "차단",
-    "release" : "해제",
-    "save" : "저장",
-    "other" : "기타",
-    "tool" : "도구",
-    "plus" : "추가",
-    "open" : "열기",
-    "search" : "검색",
-    "user" : "사용자",
-    "alarm" : "알림",
-    "watchlist" : "주시 문서",
-    "recent" : "최근",
-    "recent_changes" : "최근 변경",
-    "discussion" : "토론",
-    "login" : "로그인",
-    "logout" : "로그아웃",
-    "register" : "회원가입",
-    "register_suggest" : "계정이 없으신가요? 회원가입",
-    "able" : "가능",
-    "second" : "초",
-    "normal" : "일반",
-    "subscriber" : "가입자",
-    "admin" : "관리자",
-    "owner" : "소유자",
-    "admin_group" : "관리 그룹",
-    "user_head_warring" : "비 로그인의 경우에는 사용자 head가 로그인하거나 브라우저 닫으면 날아갑니다.",
-    "http_warring" : "주의 : 만약 https 연결이 아닌 경우 데이터가 유출될 가능성이 있습니다. 이에 대해 책임지지 않습니다.",
-    "new" : "새",
-    "need" : "필요한",
-    "upload" : "파일 올리기",
-    "record" : "기록",
-    "name" : "이름",
-    "license" : "라이선스",
-    "bottom" : "하단",
-    "text" : "문구",
-    "interwiki" : "인터위키",
-    "update" : "업데이트",
-    "oauth_settings" : "OAuth 설정",
-    "setting" : "설정",
-    "create" : "생성",
-    "editor" : "수정자",
-    "hour" : "시간",
-    "time" : "시각",
-    "close" : "닫기",
-    "stop" : "정지",
-    "restart" : "재시작",
-    "agreement" : "합의",
-    "load" : "불러오기",
-    "backlink" : "역링크",
-    "why" : "사유",
-    "random" : "무작위",
-    "authority" : "권한",
-    "file" : "파일",
-    "change" : "변경",
-    "compare" : "비교",
-    "count" : "횟수",
-    "check" : "검사",
-    "view" : "보기",
-    "preview" : "미리보기",
-    "next" : "다음",
-    "previous" : "이전",
-    "no_login_warring" : "비 로그인 상태로 진행 시 ip가 기록될 수 있습니다.",
-    "state" : "상태",
-    "limitless" : "무기한",
-    "period" : "기간",
-    "now" : "현재",
-    "blocked" : "차단자",
-    "band" : "대역",
-    "notice" : "공지",
-    "writer" : "작성자",
-    "upper" : "상위",
-    "under" : "하위",
-    "pass" : "통과",
-    "category" : "분류",
-    "send" : "전송",
-    "reload" : "새로고침",
-    "password" : "암호",
-    "confirm" : "확인",
-    "connection" : "연결",
-    "inter_error" : "내부 오류!",
-    "inter_error_detail" : "요청한 작업을 진행하는 도중 내부 오류가 발생했습니다. 아래에서 자세한 사항을 확인하세요.",
-    "ie_wrong_callback" : "SNS 서비스 제공자가 callback 라우트에 잘못된 값을 전송했습니다. <a href=\"/login\">다시 시도하세요.</a>",
-    "ie_no_data_required" : "필요한 데이터가 모두 수집되지 않아 작업을 계속할 수 없습니다. <a href=\"/login\">다시 시도하세요.</a>",
-    "oauth_conn_done" : "됨",
-    "oauth_conn_not" : "없음",
-    "oauth_conn_new" : "연결하기",
-    "oauth_signin_facebook" : "Facebook으로 로그인",
-    "oauth_signin_naver" : "네이버 아이디로 로그인",
-    "oauth_settings_not_found" : "관리자가 이 기능을 사용하는데 대한 정보를 제공하지 않았습니다.",
-    "oauth_disabled" : "관리자가 이 기능을 비활성화시켰습니다.",
-
-    "adsense" : "애드센스",
-    "enable" : "활성화",
-
-    "authority_error" : "권한이  부족합니다.",
-    "no_login_error" : "비 로그인 상태 입니다.",
-    "no_exist_user_error" : "계정이 없습니다.",
-    "no_admin_block_error" : "관리자는 차단, 검사 할 수 없습니다.",
-    "skin_error" : "이 스킨은 스킨 설정을 지원하지 않습니다.",
-    "same_id_exist_error" : "동일한 아이디의 사용자가 있습니다.",
-    "long_id_error" : "아이디는 20글자보다 짧아야 합니다.",
-    "id_char_error" : "아이디에는 한글과 알파벳과 공백만 허용 됩니다.",
-    "file_exist_error" : "파일이 없습니다.",
-    "password_error" : "비밀번호가 다릅니다.",
-    "recaptcha_error" : "리캡차를 통과하세요.",
-    "file_extension_error" : "jpg, gif, jpeg, png, webp만 가능 합니다.",
-    "edit_record_error" : "편집 기록은 500자를 넘을 수 없습니다.",
-    "same_file_error" : "동일한 이름의 파일이 있습니다.",
-    "file_capacity_error" : "파일 최대 용량 (mb) :",
-    "decument_exist_error" : "내용이 원래 문서와 동일 합니다.",
-    "password_diffrent_error" : "재 확인 비밀번호와 입력 비밀번호가 다릅니다.",
-    "edit_filter_error" : "편집 필터에 의해 검열 되었습니다.",
-    "file_name_error" : "파일 이름은 알파벳, 한글, 띄어쓰기, 언더바,  빼기표만 허용 됩니다.",
-    "template" : "틀",
-    "out" : "외부",
-    "logo" : "로고",
-    "frontpage" : "대문",
-    "max_file_size" : "최대 파일 크기",
-    "backup_interval" : "백업 간격",
-    "default" : "기본",
-    "host" : "호스트",
-    "port" : "포트",
-    "secret_key" : "비밀키",
-    "update_branch" : "업데이트 브랜치",
-    "main" : "메인",
-    "indexing" : "인덱싱",
-    "register_text" : "회원가입 문구",
-    "non_login_alert" : "비 로그인 경고문"
-}

+ 0 - 18
language/test.py

@@ -1,18 +0,0 @@
-import json
-
-print('name : ', end = '')
-b = input()
-
-json_data = open('en-US.json', 'rt', encoding='utf-8').read()
-a_json = json.loads(json_data)
-
-json_data = open(str(b) + '.json', 'rt', encoding='utf-8').read()
-b_json = json.loads(json_data)
-
-for a_in in a_json:
-    if not a_in in b_json:
-        print(a_in + ' : ', end = '')
-        c = input()
-        b_json[a_in] = c
-        
-print(str(b_json).replace('", ', '",\n    ').replace('{', '{\n    ').replace('}', '\n}').replace('\'', '"'))

+ 0 - 113
languages/ko-kr.json

@@ -1,113 +0,0 @@
-{
-  "_format" : "opennamu language data: kr, format 2",
-  "common" : {
-    "add" : "추가",
-    "delete" : "삭제",
-    "etc" : "기타",
-    "filter" : "필터",
-    "frontpage" : "대문",
-    "id" : "아이디",
-    "list" : "목록",
-    "logo" : "로고",
-    "main" : "메인",
-    "name" : "이름",
-    "notice" : "알림",
-    "text" : "문구",
-    "user" : "사용자",
-    "regex" : "정규표현식",
-    "server" : "서버",
-    "save" : "저장"
-  },
-  "acl_list" : {
-    "owner" : "소유자",
-    "admin" : "관리자",
-    "user" : "사용자",
-    "not_signed_in" : "비로그인 상태"
-  },
-  "adsense" : {
-    "adsense" : "애드센스",
-    "adsense_enable" : "애드센스 활성화"
-  },
-  "error" : {
-    "inter_error" : "내부 오류!",
-    "detail" : "요청한 작업을 수행하는 도중 내부 오류가 발생했습니다. 아래에서 자세한 사항을 확인하세요.",
-    "try_again" : "<a href=\"/login\">다시 시도하세요.</a>",
-    "err_wrong_callback" : "SNS 서비스 제공자가 callback 라우트에 잘못된 값을 전송했습니다.",
-    "err_no_data_required" : "필요한 데이터가 모두 수집되지 않아 작업을 계속할 수 없습니다. ",
-    "err_authority_not_enough" : "권한이 부족합니다.",
-    "err_no_login" : "비로그인 상태입니다.",
-    "err_no_account" : "계정이 없습니다.",
-    "err_wrong_password" : "잘못된 비밀번호입니다.",
-    "err_same_account" : "동일한 아이디의 사용자가 있습니다.",
-    "err_id_too_long" : "아이디는 20글자보다 짧아야 합니다.",
-    "err_id_out_of_support_char" : "아이디는 한글, 알파벳, 공백만 포함할 수 있습니다.",
-    "err_password_different_each" : "비밀번호 확인 란과 입력 비밀번호가 서로 다릅니다.",
-    "err_cannot_target_admin" : "관리자를 상대로 이 작업을 수행할 수 없습니다.",
-    "err_skin_option_not_support" : "이 스킨은 스킨 설정을 지원하지 않습니다.",
-    "err_file_not_exist" : "파일이 없습니다.",
-    "err_recaptcha_required" : "이 기능을 수행하려면 리캡차를 통과해야합니다.",
-    "err_no_support_file_extension" : "jpg, gif, jpeg, png, webp만 가능합니다.",
-    "err_edit_record_too_long" : "편집 기록은 500자를 넘을 수 없습니다.",
-    "err_out_of_max_file_size" : "파일 최대 용량은 다음을 넘을 수 없습니다 (MB):",
-    "err_document_no_different" : "내용이 원래 문서와 동일합니다.",
-    "err_blocked_by_filter" : "이 내용은 편집 필터에 의해 작성할 수 없게 되어 있습니다.",
-    "err_file_name_out_of_support_char" : "파일 이름은 알파벳, 한글, 공백, 언더바, 하이픈(-)만 허용됩니다.",
-    "err_oauth_data_not_found" : "관리자가 이 기능을 사용하는데 대한 정보를 제공하지 않았습니다.",
-    "err_disabled" : "관리자가 이 기능을 비활성화시켰습니다."
-  },
-  "filter" : {
-    "filter_duration" : "지속 시간(초)",
-    "edit_filter_list" : "편집 필터 목록",
-    "edit_filter_add" : "편집 필터 추가",
-    "email_filter_list" : "이메일 필터 목록",
-    "email_filter_add" : "이메일 필터 추가",
-    "id_filter_list" : "아이디 필터 목록",
-    "id_filter_add" : "아이디 필터 추가",
-    "interwiki" : "인터위키",
-    "interwiki_list" : "인터위키 목록",
-    "interwiki_add" : "인터위키 추가"
-  },
-  "manager" : {
-    "admin_auth_group" : "관리자 그룹 생성",
-    "adsense_settings" : "애드센스 설정",
-    "document_acl" : "문서 ACL",
-    "edit_filter" : "편집 필터",
-    "filter_inter_wiki" : "인터위키",
-    "filter_html" : "HTML 필터",
-    "filter_email" : "이메일 필터",
-    "filter_id" : "아이디 필터",
-    "indexing" : "인덱싱 생성, 삭제",
-    "oauth_settings" : "OAuth 설정",
-    "opennamu_update" : "오픈나무 업데이트",
-    "server_restart" : "서버 재시작",
-    "user_check" : "사용자 검사",
-    "user_block" : "사용자 차단",
-    "user_auth" : "사용자 권한 그룹",
-    "wiki_settings" : "위키 설정"
-  },
-  "oauth" : {
-    "connection_done" : "연결됨",
-    "connection_not" : "연결되지 않음",
-    "connection_new" : "연결하기",
-    "sign_in_facebook" : "Facebook으로 로그인",
-    "sign_in_naver" : "네이버 아이디로 로그인"
-  },
-  "settings" : {
-    "settings" : "설정",
-    "text_settings" : "문구 설정"
-  },
-  "title_index" : {
-    "all" : "전체",
-    "category" : "분류",
-    "file" : "파일",
-    "other" : "기타",
-    "template" : "틀",
-    "user" : "사용자"
-  },
-  "time" : {
-    "sec" : "초",
-    "min" : "분",
-    "hour" : "시간",
-    "limitless" : "제한 없음"
-  }
-}

+ 0 - 8
languages/new-template.json

@@ -1,8 +0,0 @@
-{
-  "common" : {
-    "<target>" : "<content>"
-  },
-  "<function>" : {
-    "<target>" : "<content>"
-  }
- }

+ 1 - 1
mark.py

@@ -68,4 +68,4 @@ def namumark(title = '', data = None, num = 0):
             
         return data[0] + data[1]
     else:
-        return 'http request 404'
+        return 'HTTP Request 404'

+ 0 - 47
views/easter_egg.py

@@ -1,47 +0,0 @@
-easter_egg = [
-"""
-<iframe width="560" height="315" src="https://www.youtube.com/embed/O6BJiije6m4" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
-<br>
-<br>
-<div>
-    노라조와 영접하십셔.
-</div>
-""",
-"""
-<iframe width="560" height="315" src="https://www.youtube.com/embed/qnYWeY6aybg?autoplay=1&start=97" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
-<br>
-<br>
-<div>
-    사람들은 알수 있어 누가 착한지 나쁜지
-</div>
-""",
-"""
-<iframe width="560" height="315" src="https://www.youtube.com/embed/oIa3BFBHJFI?autoplay=1&loop=1" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
-<br>
-<br>
-<div>
-    @(^0^)==@태보는 지금 전 세계적으로 선풍적인 인기를 끌고 있는데요!!!!!!!!!!!@==(^0^)@
-</div>
-""",
-"""<iframe width="560" height="315" src="https://www.youtube.com/embed/kxopViU98Xo?autoplay=1" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>""",
-"""<iframe width="560" height="315" src="https://www.youtube.com/embed/dQw4w9WgXcQ?autoplay=1" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>"""
-]
-
-easter_egg_config_js = '''
-<script>
-document.getElementById('enable-easter-egg').addEventListener("change", function() {
-    $.ajax({
-        type: "POST",
-        url: "/request/egg_config",
-        data: {request: "config", data: document.getElementById('enable-easter-egg').checked},
-        dataType: "json",
-        success: function (data) {
-            document.getElementById('easter-egg-status').innerHTML = '<i class="fas fa-check"></i> 서버에 변경 사항이 저장되었습니다.';
-        },
-        error: function (data) {
-            document.getElementById('easter-egg-status').innerHTML = '<i class="fas fa-times"></i> 서버와 통신 중 문제가 발생했습니다. 변경 사항이 저장되지 않습니다. <br> 오류 메시지: <br><code>' + data.responseText + '</code>'
-        }
-    });
-});
-</script>
-'''

+ 4 - 5
views/neo_yousoro/index.html

@@ -13,7 +13,6 @@
         {{imp[1][5]|safe}}
         {{imp[2][3]|safe}}
         <meta name="viewport" content="width=device-width, initial-scale=1">
-        {{script[0]|safe}}
     </head>
     <body>
         <div id="background">
@@ -32,7 +31,7 @@
                             <div id="recent_cel" class="cel_in_cel" style="display: none;">
                                 <a href="/recent_changes">
                                     <i class="fas fa-sync-alt"></i>
-                                    {{'change'|load_lang}}
+                                    {{'edit'|load_lang}}
                                 </a>
                                 <hr>
                                 <a href="/recent_discuss">
@@ -61,7 +60,7 @@
                                 <hr>
                                 <a href="/skin_set">
                                     <i class="fas fa-cog"></i>
-                                    {{'skin'|load_lang}} {{'setting'|load_lang}}
+                                    {{'skin_setting'|load_lang}}
                                 </a>
                             </div>
                         </div>
@@ -109,12 +108,12 @@
                         </a>
                     </div>
                     <h2>{{'recent'|load_lang}}</h2>
-                    <li><a href="/recent_changes">{{'change'|load_lang}}</a></li>
+                    <li><a href="/recent_changes">{{'edit'|load_lang}}</a></li>
                     <li><a href="/recent_discuss">{{'discussion'|load_lang}}</a></li>
                     <h2>{{'other'|load_lang}}</h2>
                     <li><a href="/random">{{'random'|load_lang}}</a></li>
                     <li><a href="/other">{{'tool'|load_lang}}</a></li>
-                    <li><a href="/skin_set">{{'skin'|load_lang}} {{'setting'|load_lang}}</a></li>
+                    <li><a href="/skin_set">{{'skin_setting'|load_lang}}</a></li>
                     <h2>{{'user'|load_lang}}</h2>
                     <li><a href="/user">{{imp[2][5]}}</a></li>
                 </div>

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно