2
0
Surplus_Up (2DU) 6 жил өмнө
parent
commit
55a4386e19

+ 36 - 12
app.py

@@ -75,11 +75,8 @@ while 1:
         
 print('DB name : ' + set_data['db'])
 db_name = set_data['db']
-            
-if os.path.exists(db_name + '.db'):
-    setup_tool = 0
-else:
-    setup_tool = 1
+
+db_data_get(set_data['db_type'])
 
 if set_data['db_type'] == 'mysql':
     try:
@@ -104,17 +101,44 @@ if set_data['db_type'] == 'mysql':
                 
         set_data_mysql = json.loads(open('data/mysql.json').read())
 
-    conn = pymysql.connect(
-        host = 'localhost', 
-        user = set_data_mysql['user'], 
-        password = set_data_mysql['password'],
-        db = db_name, 
-        charset = 'utf8mb4'
-    )
+    try:
+        conn = pymysql.connect(
+            host = 'localhost', 
+            user = set_data_mysql['user'], 
+            password = set_data_mysql['password'],
+            db = db_name, 
+            charset = 'utf8mb4'
+        )
+    except:
+        conn = pymysql.connect(
+            host = 'localhost', 
+            user = set_data_mysql['user'], 
+            password = set_data_mysql['password'],
+            db = db_name, 
+            charset = 'utf8mb4'
+        )
+        curs = conn.cursor()
+
+        curs.execute(db_change('create database ? default character set utf8mb4;'), [db_name])
+        conn.close()
+
+        conn = pymysql.connect(
+            host = 'localhost', 
+            user = set_data_mysql['user'], 
+            password = set_data_mysql['password'],
+            db = db_name, 
+            charset = 'utf8mb4'
+        )
+
     curs = conn.cursor()
 else:
     conn = sqlite3.connect(db_name + '.db', check_same_thread = False)
     curs = conn.cursor()
+            
+if os.path.exists(db_name + '.db'):
+    setup_tool = 0
+else:
+    setup_tool = 1
 
 load_conn(conn)
 

+ 114 - 19
emergency_tool.py

@@ -1,28 +1,117 @@
 from route.tool.func import *
-from route.tool.mark import load_conn2, namumark
 
-try:
-    set_data = json.loads(open('data/set.json').read())
-except:
-    if os.getenv('NAMU_DB') != None:
-        set_data = { "db" : os.getenv('NAMU_DB') }
-    else:
-        print('DB name (data) : ', end = '')
-        
-        new_json = str(input())
-        if new_json == '':
-            new_json = 'data'
-            
-        with open('data/set.json', 'w') as f:
-            f.write('{ "db" : "' + new_json + '" }')
-            
+while 1:
+    try:
         set_data = json.loads(open('data/set.json').read())
+        if not 'db_type' in set_data:
+            try:
+                os.remove('data/set.json')
+            except:
+                print('Please delete set.json')
+                print('----')
+                raise
+        else:
+            break
+    except:
+        if os.getenv('NAMU_DB') != None or os.getenv('NAMU_DB_TYPE') != None:
+            set_data = { 
+                "db" : os.getenv('NAMU_DB') if os.getenv('NAMU_DB') else 'data', 
+                "db_type" : os.getenv('NAMU_DB_TYPE') if os.getenv('NAMU_DB_TYPE') else 'sqlite'
+            }
+
+            break
+        else:        
+            new_json = ['', '']
+            normal_db_type = ['sqlite', 'mysql']
+
+            print('DB type (sqlite, mysql) : ', end = '')
+            new_json[0] = str(input())
+            if new_json[0] == '' or not new_json[0] in normal_db_type:
+                new_json[0] = 'sqlite'
+
+            all_src = []
+            for i_data in os.listdir("."):
+                f_src = re.search("(.+)\.db$", i_data)
+                if f_src:
+                    all_src += [f_src.groups()[0]]
+
+            if all_src != []:
+                print('DB name (' + ', '.join(all_src) + ') : ', end = '')
+            else:
+                print('DB name (data) : ', end = '')
+
+            new_json[1] = str(input())
+            if new_json[1] == '':
+                new_json[1] = 'data'
+                
+            with open('data/set.json', 'w') as f:
+                f.write('{ "db" : "' + new_json[1] + '", "db_type" : "' + new_json[0] + '" }')
+                
+            set_data = json.loads(open('data/set.json').read())
+            
+            break
         
 print('DB name : ' + set_data['db'])
 db_name = set_data['db']
 
-conn = sqlite3.connect(db_name + '.db', check_same_thread = False)
-curs = conn.cursor()
+db_data_get(set_data['db_type'])
+
+if set_data['db_type'] == 'mysql':
+    try:
+        set_data_mysql = json.loads(open('data/mysql.json').read())
+    except:
+        new_json = ['', '']
+
+        while 1:
+            print('DB user id : ', end = '')
+            new_json[0] = str(input())
+            if new_json[0] != '':
+                break
+
+        while 1:
+            print('DB password : ', end = '')
+            new_json[1] = str(input())
+            if new_json[1] != '':
+                break
+
+        with open('data/mysql.json', 'w') as f:
+            f.write('{ "user" : "' + new_json[0] + '", "password" : "' + new_json[1] + '" }')
+                
+        set_data_mysql = json.loads(open('data/mysql.json').read())
+
+    try:
+        conn = pymysql.connect(
+            host = 'localhost', 
+            user = set_data_mysql['user'], 
+            password = set_data_mysql['password'],
+            db = db_name, 
+            charset = 'utf8mb4'
+        )
+    except:
+        conn = pymysql.connect(
+            host = 'localhost', 
+            user = set_data_mysql['user'], 
+            password = set_data_mysql['password'],
+            db = db_name, 
+            charset = 'utf8mb4'
+        )
+        curs = conn.cursor()
+
+        curs.execute(db_change('create database ? default character set utf8mb4;'), [db_name])
+        conn.close()
+
+        conn = pymysql.connect(
+            host = 'localhost', 
+            user = set_data_mysql['user'], 
+            password = set_data_mysql['password'],
+            db = db_name, 
+            charset = 'utf8mb4'
+        )
+
+    curs = conn.cursor()
+else:
+    conn = sqlite3.connect(db_name + '.db', check_same_thread = False)
+    curs = conn.cursor()
 
 load_conn(conn)
 
@@ -37,6 +126,7 @@ print('7. Change password')
 print('8. Reset version')
 print('9. Delete set.json')
 print('10. Change name')
+print('11. Delete mysql.json')
 
 print('----')
 print('Select : ', end = '')
@@ -135,7 +225,7 @@ elif what_i_do == '9':
         os.remove('data/set.json')
     except:
         pass
-else:
+elif what_i_do == '10':
     print('----')
     print('User name : ', end = '')
     user_name = input()
@@ -145,6 +235,11 @@ else:
     new_name = input()
 
     curs.execute(db_change("update user set id = ? where id = ?"), [new_name, user_name])
+else:
+    try:
+        os.remove('data/mysql.json')
+    except:
+        pass
 
 conn.commit()
 

+ 1 - 1
route/api_search.py

@@ -14,7 +14,7 @@ def api_search_2(conn, name):
         "select distinct title, case when title like ? then 'title' else 'data' " + \
         "end from data where title like ? or data like ? order by case " + \
         "when title like ? then 1 else 2 end limit ?"),
-        ['%' + name + '%', '%' + name + '%', '%' + name + '%', '%' + name + '%', str(num)]
+        ['%' + name + '%', '%' + name + '%', '%' + name + '%', '%' + name + '%', num]
     )
     all_list = curs.fetchall()
     if all_list:

+ 15 - 15
route/give_user_check.py

@@ -20,24 +20,24 @@ def give_user_check_2(conn, name):
     
     if flask.request.args.get('plus', None):
         end_check = 1
-    
-        if ip_or_user(name) == 1:
-            if ip_or_user(flask.request.args.get('plus', None)) == 1:
-                curs.execute(db_change("select name, ip, ua, today from ua_d where ip = ? or ip = ? order by today desc limit ?, '50'"), [name, flask.request.args.get('plus', None), sql_num])
-            else:
-                curs.execute(db_change("select name, ip, ua, today from ua_d where ip = ? or name = ? order by today desc limit ?, '50'"), [name, flask.request.args.get('plus', None), sql_num])
-        else:
-            if ip_or_user(flask.request.args.get('plus', None)) == 1:
-                curs.execute(db_change("select name, ip, ua, today from ua_d where name = ? or ip = ? order by today desc limit ?, '50'"), [name, flask.request.args.get('plus', None), sql_num])
-            else:
-                curs.execute(db_change("select name, ip, ua, today from ua_d where name = ? or name = ? order by today desc limit ?, '50'"), [name, flask.request.args.get('plus', None), sql_num])
+
+        curs.execute(db_change("" + \
+                "select name, ip, ua, today from ua_d " + \
+                "where " + ('ip' if ip_or_user(name) == 1 else 'name') + " = ? or " + \
+                ('ip' if ip_or_user(flask.request.args.get('plus', None)) == 1 else 'name') + " = ? " + \
+                "order by today desc limit ?, 50" + \
+            ""), [
+            name, 
+            flask.request.args.get('plus', None), 
+            sql_num
+        ])
     else:
         end_check = 0
         
-        if ip_or_user(name) == 1:
-            curs.execute(db_change("select name, ip, ua, today from ua_d where ip = ? order by today desc limit ?, '50'"), [name, sql_num])
-        else:
-            curs.execute(db_change("select name, ip, ua, today from ua_d where name = ? order by today desc limit ?, '50'"), [name, sql_num])
+        curs.execute(db_change("" + \
+            "select name, ip, ua, today from ua_d " + \
+            "where " + ('ip' if ip_or_user(name) == 1 else 'name') + " = ? order by today desc limit ?, 50" + \
+        ""), [name, sql_num])
     
     record = curs.fetchall()
     if record:

+ 3 - 3
route/list_admin_use.py

@@ -15,11 +15,11 @@ def list_admin_use_2(conn):
         list_data = '<ul>'
 
         if flask.request.args.get('search', 'normal') == 'normal':
-            curs.execute(db_change("select who, what, time from re_admin order by time desc limit ?, '50'"), [str(sql_num)])
+            curs.execute(db_change("select who, what, time from re_admin order by time desc limit ?, 50"), [sql_num])
         else:
-            curs.execute(db_change("select who, what, time from re_admin where what like ? order by time desc limit ?, '50'"), [
+            curs.execute(db_change("select who, what, time from re_admin where what like ? order by time desc limit ?, 50"), [
                 flask.request.args.get('search', 'normal') + "%",
-                str(sql_num)
+                sql_num
             ])
 
         get_list = curs.fetchall()

+ 7 - 4
route/list_block.py

@@ -29,7 +29,10 @@ def list_block_2(conn, name, tool):
             sub = ' (' + load_lang('in_progress') + ')'
             menu = [['block_log', load_lang('normal')]]
 
-            curs.execute(db_change("select why, block, '', end, '', band from ban where ((end > ? and end like '2%') or end = '') order by end desc limit ?, '50'"), [get_time(), str(sql_num)])
+            curs.execute(db_change("select why, block, '', end, '', band from ban where ((end > ? and end like '2%') or end = '') order by end desc limit ?, 50"), [
+                get_time(), 
+                sql_num
+            ])
         else:
             sub = 0
             menu = 0
@@ -39,18 +42,18 @@ def list_block_2(conn, name, tool):
                 <hr class=\"main_hr\">
             ''' + div
             
-            curs.execute(db_change("select why, block, blocker, end, today, band from rb order by today desc limit ?, '50'"), [str(sql_num)])
+            curs.execute(db_change("select why, block, blocker, end, today, band from rb order by today desc limit ?, 50"), [sql_num])
     else:
         menu = [['block_log', load_lang('normal')]]
         
         if tool == 'block_user':
             sub = ' (' + load_lang('blocked') + ')'
             
-            curs.execute(db_change("select why, block, blocker, end, today, band from rb where block = ? order by today desc limit ?, '50'"), [name, str(sql_num)])
+            curs.execute(db_change("select why, block, blocker, end, today, band from rb where block = ? order by today desc limit ?, 50"), [name, sql_num])
         else:
             sub = ' (' + load_lang('admin') + ')'
             
-            curs.execute(db_change("select why, block, blocker, end, today, band from rb where blocker = ? order by today desc limit ?, '50'"), [name, str(sql_num)])
+            curs.execute(db_change("select why, block, blocker, end, today, band from rb where blocker = ? order by today desc limit ?, 50"), [name, sql_num])
 
     if data_list == '':
         data_list = curs.fetchall()

+ 2 - 2
route/list_old_page.py

@@ -18,8 +18,8 @@ def list_old_page_2(conn):
         "and not exists (select title from back where link = h.title and type = 'redirect') " + \
         'group by title ' + \
         'order by date asc ' + \
-        'limit ?, "50"' + \
-    ''), [str(sql_num)])
+        'limit ?, 50' + \
+    ''), [sql_num])
     n_list = curs.fetchall()
     for data in n_list:
         div += '<li><a href="/w/' + url_pas(data[0]) + '">' + html.escape(data[0]) + '</a> (' + re.sub(' .*$', '', data[1]) + ')</li>'

+ 1 - 1
route/list_please.py

@@ -11,7 +11,7 @@ def list_please_2(conn):
         
     div = '<ul>'
     
-    curs.execute(db_change("select distinct title from back where type = 'no' order by title asc limit ?, '50'"), [str(sql_num)])
+    curs.execute(db_change("select distinct title from back where type = 'no' order by title asc limit ?, 50"), [sql_num])
     data_list = curs.fetchall()
     for data in data_list:
         div += '<li><a id="not_thing" href="/w/' + url_pas(data[0]) + '">' + data[0] + '</a></li>'   

+ 1 - 1
route/list_title_index.py

@@ -17,7 +17,7 @@ def list_title_index_2(conn):
 
     data = '<a href="/title_index?num=250">(250)</a> <a href="/title_index?num=500">(500)</a> <a href="/title_index?num=1000">(1000)</a>'
 
-    curs.execute(db_change("select title from data order by title asc limit ?, ?"), [str(sql_num), str(num)])
+    curs.execute(db_change("select title from data order by title asc limit ?, ?"), [sql_num, num])
     title_list = curs.fetchall()
     if title_list:
         data += '<hr class=\"main_hr\"><ul>'

+ 1 - 1
route/list_user.py

@@ -13,7 +13,7 @@ def list_user_2(conn):
 
     admin_one = admin_check(1)
     
-    curs.execute(db_change("select id, date from user order by date desc limit ?, '50'"), [str(sql_num)])
+    curs.execute(db_change("select id, date from user order by date desc limit ?, 50"), [sql_num])
     user_list = curs.fetchall()
     for data in user_list:
         if admin_one == 1:

+ 1 - 1
route/list_user_topic.py

@@ -21,7 +21,7 @@ def list_user_topic_2(conn, name):
                     </tr>
             '''
     
-    curs.execute(db_change("select title, id, sub, ip, date from topic where ip = ? order by date desc limit ?, '50'"), [name, str(sql_num)])
+    curs.execute(db_change("select title, id, sub, ip, date from topic where ip = ? order by date desc limit ?, 50"), [name, sql_num])
     data_list = curs.fetchall()
     for data in data_list:
         title = html.escape(data[0])

+ 9 - 6
route/recent_changes.py

@@ -44,15 +44,15 @@ def recent_changes_2(conn, name, tool):
                         'select id, title, date, ip, send, leng from history ' + \
                         'where send like ? or send like ? ' + \
                         'order by id + 0 desc ' + \
-                        "limit ?, '50'" + \
-                    ''), ['%(<a>' + name +'</a>%', '%<a>' + name + '</a> move)', str(sql_num)])
+                        "limit ?, 50" + \
+                    ''), ['%(<a>' + name +'</a>%', '%<a>' + name + '</a> move)', sql_num])
                 else:
                     curs.execute(db_change('' + \
                         'select id, title, date, ip, send, leng from history ' + \
                         'where title = ? ' + \
                         'order by id + 0 desc ' + \
-                        "limit ?, '50'" + \
-                    ''), [name, str(sql_num)])
+                        "limit ?, 50" + \
+                    ''), [name, sql_num])
             else:
                 div +=  '''
                         <td id="main_table_width">''' + load_lang('document_name') + '''</td>
@@ -63,7 +63,10 @@ def recent_changes_2(conn, name, tool):
 
                 div = '<a href="/topic_record/' + url_pas(name) + '">(' + load_lang('discussion') + ')</a><hr class=\"main_hr\">' + div
                 
-                curs.execute(db_change("select id, title, date, ip, send, leng from history where ip = ? order by date desc limit ?, '50'"), [name, str(sql_num)])
+                curs.execute(db_change('' + \
+                    'select id, title, date, ip, send, leng from history ' + \
+                    "where ip = ? order by date desc limit ?, 50" + \
+                ''), [name, sql_num])
         else:
             num = int(number_check(flask.request.args.get('num', '1')))
             if num * 50 > 0:
@@ -87,7 +90,7 @@ def recent_changes_2(conn, name, tool):
                 "where " + ('' if set_user == 'user' else 'not ') + "title like 'user:%' " + \
                 'order by date desc ' + \
                 'limit ?, 50' + \
-            ''), [str(sql_num)])
+            ''), [sql_num])
 
         data_list = curs.fetchall()
         for data in data_list:    

+ 2 - 2
route/search_deep.py

@@ -36,8 +36,8 @@ def search_deep_2(conn, name):
     curs.execute(db_change("" + \
         "select distinct title, case when title like ? then 'title' else 'data' " + \
         "end from data where title like ? or data like ? order by case " + \
-        "when title like ? then 1 else 2 end limit ?, '50'"),
-        ['%' + name + '%', '%' + name + '%', '%' + name + '%', '%' + name + '%', str(sql_num)]
+        "when title like ? then 1 else 2 end limit ?, 50"),
+        ['%' + name + '%', '%' + name + '%', '%' + name + '%', '%' + name + '%', sql_num]
     )
     all_list = curs.fetchall()
     if all_list:

+ 11 - 4
route/tool/set_mark/tool.py

@@ -1,15 +1,22 @@
-import flask
 import urllib.parse
 import datetime
-import re
 import hashlib
+import flask
+import re
 
 def get_time():
     return str(datetime.datetime.today().strftime("%Y-%m-%d %H:%M:%S"))
 
+def db_data_get(data):
+    global set_data
+
+    set_data = data
+
 def db_change(data):
-    # data = data.replace('%', '%%')
-    # data = data.replace('?', '%s')
+    if set_data == 'mysql':
+        data = data.replace('random()', 'rand()')
+        data = data.replace('%', '%%')
+        data = data.replace('?', '%s')
 
     return data
     

+ 2 - 2
route/view_xref.py

@@ -20,11 +20,11 @@ def view_xref_2(conn, name):
     curs.execute(db_change("" + \
         "select link, type from back " + \
         "where (title = ? and not type = 'cat' and not type = 'no') or (title like ? and type = 'redirect')" + \
-        "order by link asc limit ?, '50'" + \
+        "order by link asc limit ?, 50" + \
     ""), [
         name,
         name + '#s-%',
-        str(sql_num)
+        sql_num
     ])
     data_list = curs.fetchall()
     for data in data_list:

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
     "master" : {
-        "r_ver" : "v3.1.4-master-16",
+        "r_ver" : "v3.1.4-master-17",
         "c_ver" : "400004",
         "s_ver" : "5"
     }, "stable" : {