Просмотр исходного кода

아이피 헤더 선택 기능 추가

잉여개발기 (SPDV) 1 год назад
Родитель
Сommit
2e8a0eaa49
7 измененных файлов с 52 добавлено и 117 удалено
  1. 2 0
      lang/en-US.json
  2. 4 2
      lang/ko-KR.json
  3. 19 1
      route/main_setting_main.py
  4. 5 0
      route/tool/func.py
  5. 21 11
      route/tool/func_tool.py
  6. 0 102
      test_tool.py
  7. 1 1
      version.json

+ 2 - 0
lang/en-US.json

@@ -21,6 +21,8 @@
     "option" : "Option",
     "edit_request_able" : "Edit request available",
     "date" : "Date",
+    "wiki_load_ip_select" : "Header to get IP",
+    "auto_login" : "Auto login",
 
     "_comment_" : "Common",
     "data" : "Data",

+ 4 - 2
lang/ko-KR.json

@@ -357,7 +357,7 @@
     "empty": "빈칸",
     "email_send_error": "이메일 전송이 실패했습니다.",
     "sitemap_management": "sitemap.xml 관리",
-    "same_ip_exist": "동일한 아이피가 존재합니다.",
+    "same_ip_exist": "동일한 IP가 존재합니다.",
     "restart_fail_error": "재시작이 실패했습니다. 수동 재시작을 이용해주세요.",
     "domain": "도메인",
     "simple_check": "간편 검사",
@@ -667,5 +667,7 @@
     "cidr": "CIDR",
     "option": "옵션",
     "edit_request_able": "편집 요청 가능",
-    "date": "날짜"
+    "date": "날짜",
+    "wiki_load_ip_select" : "IP를 가져올 헤더",
+    "auto_login" : "자동 로그인"
 }

+ 19 - 1
route/main_setting_main.py

@@ -45,7 +45,8 @@ def main_setting_main():
             42 : ['ua_expiration_date', ''],
             43 : ['auth_history_expiration_date', ''],
             44 : ['auth_history_off', ''],
-            45 : ['user_name_level', '']
+            45 : ['user_name_level', ''],
+            46 : ['load_ip_select', '']
         }
 
         if flask.request.method == 'POST':
@@ -114,6 +115,18 @@ def main_setting_main():
 
                 sqlite_only = 'style="display:none;"' if set_data != 'sqlite' else ''
 
+            ip_load_select_data = ''
+            ip_load_option = ['default', 'HTTP_X_REAL_IP', 'HTTP_CF_CONNECTING_IP', 'REMOTE_ADDR']
+            for for_a in ip_load_option:
+                view_ip_option = for_a
+                if for_a == 'default':
+                    view_ip_option = get_lang(conn, 'default')
+
+                if d_list[46] == for_a:
+                    ip_load_select_data = '<option value="' + for_a + '">' + view_ip_option + '</option>' + ip_load_select_data
+                else:
+                    ip_load_select_data += '<option value="' + for_a + '">' + view_ip_option + '</option>'
+
             basic_set = '''
                 <h2>''' + get_lang(conn, 'basic_set') + '''</h2>
                             
@@ -161,6 +174,11 @@ def main_setting_main():
                 <span>''' + get_lang(conn, 'set_wiki_access_password') + '''</span> (''' + get_lang(conn, 'restart_required') + ''')
                 <hr class="main_hr">
                 <input type="password" name="wiki_access_password" value="''' + html.escape(d_list[32]) + '''">
+                <hr class="main_hr">
+
+                <span>''' + get_lang(conn, 'wiki_load_ip_select') + '''</span> (''' + get_lang(conn, 'restart_required') + ''')
+                <hr class="main_hr">
+                <select name="load_ip_select">''' + ip_load_select_data + '''</select>
                 
                 <h3>''' + get_lang(conn, 'authority_use_list') + '''</h3>
                 

+ 5 - 0
route/tool/func.py

@@ -793,6 +793,11 @@ def set_init_always(conn, ver_num, run_mode):
             if db_data:
                 m_curs.execute('insert into temp (name, data) values ("wiki_access_password", ?)', [db_data[0][0]])
 
+        curs.execute(db_change('select data from other where name = "load_ip_select"'))
+        db_data = curs.fetchall()
+        if db_data and db_data[0][0] != '':
+            m_curs.execute('insert into temp (name, data) values ("load_ip_select", ?)', [db_data[0][0]])
+
         # OS마다 실행 파일 설정
         exe_type = linux_exe_chmod()
         if run_mode == '':

+ 21 - 11
route/tool/func_tool.py

@@ -46,20 +46,30 @@ def db_change(data):
         return data
 
 def ip_check(d_type = 0):
-    ip = ''
+    ip = '::1'
     if d_type == 0 and (flask.session and 'id' in flask.session):
         ip = flask.session['id']
-    else:        
-        ip = flask.request.environ.get('HTTP_X_REAL_IP',
-            flask.request.environ.get('HTTP_CF_CONNECTING_IP',
-                flask.request.environ.get('REMOTE_ADDR',
-                    '::1'
-                )
-            )
-        )
+    else:
+        with class_temp_db() as m_conn:
+            m_curs = m_conn.cursor()
 
-        if ip_or_user(ip) == 0:
-            ip = '::1'
+            m_curs.execute('select data from temp where name = "load_ip_select"')
+            db_data = m_curs.fetchall()
+            set_data = db_data[0][0] if db_data else 'default'
+        
+            if set_data == "default":
+                ip = flask.request.environ.get('HTTP_X_REAL_IP',
+                    flask.request.environ.get('HTTP_CF_CONNECTING_IP',
+                        flask.request.environ.get('REMOTE_ADDR',
+                            '::1'
+                        )
+                    )
+                )
+            else:
+                ip = flask.request.environ.get(set_data, '::1')
+            
+            if ip_or_user(ip) == 0:
+                ip = '::1'
 
     return ip
 

+ 0 - 102
test_tool.py

@@ -1,102 +0,0 @@
-# Load
-import time
-import os
-import platform
-import urllib
-import zipfile
-
-from route.tool.func import *
-
-data_db_set = class_check_json()
-
-db_data_get(data_db_set['type'])
-do_db_set(data_db_set)
-
-load_db = get_db_connect()
-
-conn = load_db.__enter__()
-curs = conn.cursor()
-
-print('1. Add virtual doc')
-
-what_i_do = input('Select : ')
-if what_i_do == '1':
-    doc_count = int(input('Count : '))
-    
-    for for_a in range(doc_count):
-        name = 'test_' + str(for_a)
-        content = '''[include(틀:주요 문서)]
-[include(틀:위키 엔진)]
-
-||||<tablealign=right><tablebordercolor=#008679><#008679> {{{#white {{{+2 오픈나무
-''\'openNAMU\'''}}}}}} ||
-|||| [[파일:오픈나무 로고.png|width=200px]] ||
-||<colbgcolor=#008679><colcolor=white> 현재 상태 || ~~계속~~ 개발 중 ||
-|||| 최신 빌드 ||
-|| stable || v3.4.5 (stable1) (beta3) (dev14) ||
-|| beta || v3.4.6-RC1 (stable1) (beta8-107) ||
-|| dev || v3.4.6-RC1 (stable1) (beta8-107)[* 거의 매일 바뀜] ||
-|||| 역사 ||
-|| nodeJS || 2016-04-23 ||
-|| Python || 2017-01-06 ||
-|| 링크 || [[https://github.com/openNAMU/openNAMU|깃허브]]
-[[https://github.com/openNAMU|스킨, 서브 자료들]] ||
-[목차]
-[clearfix]
-== 개요 ==
-[[나무마크]]를 ~~대충~~ 지원하는 [[파이썬]] 위키 엔진임다.
-
-== 왜 오픈나무임? ==
-[[basix|원래 개발자]]가 [[더 시드]] 같은 엔진을 만들겠다라는 명목하에 open[[나무위키|NAMU]]라고 지었습니다. 
-
-== 왜 만듬? ==
-과거에는 저도 [[대한위키실록|위키]]를 열어봤던 사람으로써 [[도쿠위키]]와 [[모니위키]], [[미디어위키]]를 쓰다 불편한 점을 개선하기 위해서 새로 만들었슴다.
-
-[[미디어위키]]는 정말 좋은 엔진이지만 아무래도 한국적 특성에 뭔가 안 맞는 것 같아서 이걸 만들었슴다.
-
-참고로 쓰다보면 이런 게 왜 있지? 싶은 요소가 있는데[* 예를 들면 틀 링크] 그건 그냥 제가 쓰려고 만들었슴다.
-
-=== 영향을 많이 받은 위키 관련 요소 ===
-[include(틀:오픈나무 개발 이유)]
-
-== 역사 ==
- * [[/역사]]
-  * [[/v3.4.6]]
-== 개발 이념 ==
- * [[/개발 이념]]
-== 주의 ==
- * 프로덕션 용으로는 사용 안하는 걸 권장 드립니다. ~~[[시한폭탄|언제 터질 지 모릅니다]]~~
-== 사용하는 위키 ==
- * [[/사용 위키]]
-
-== 나머지 개발자의 헛소리 적는 공간 ==
- * [[/연구]]
- * [[/차기 계획]]
- * [[/개발 현황]]
- * [[/반성]]
-
-[[분류:오픈나무]]'''
-        today = get_time()
-        send = 'test'
-        ip = '127.0.0.1'
-        leng = '0'
-
-        curs.execute(db_change("insert into data (title, data) values (?, ?)"), [name, content])
-        print(for_a)
-
-        test_case = [[
-            for_b,
-            name,
-            content,
-            today,
-            ip,
-            send,
-            leng,
-            ''
-        ] for for_b in range(1, 151)]
-        curs.executemany(db_change(
-            "insert into history (id, title, data, date, ip, send, leng, hide, type) " + \
-            "values (?, ?, ?, ?, ?, ?, ?, '', ?)"
-        ), test_case)
-
-    conn.commit()

+ 1 - 1
version.json

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