# Init import os import re import logging import shutil import datetime from route.tool.func import * from route import * if platform.system() == 'Linux': for for_a in os.listdir(os.path.join("route_go", "bin")): os.system('chmod +x ./route_go/bin/' + for_a) # Init-Version with open('version.json', encoding = 'utf8') as file_data: version_list = json.loads(file_data.read()) # Init-DB data_db_set = class_check_json() db_data_get(data_db_set['type']) do_db_set(data_db_set) with get_db_connect() as conn: curs = conn.cursor() setup_tool = '' try: curs.execute(db_change('select data from other where name = "ver"')) except: setup_tool = 'init' if setup_tool != 'init': ver_set_data = curs.fetchall() if ver_set_data: if int(version_list['beta']['c_ver']) > int(ver_set_data[0][0]): setup_tool = 'update' else: setup_tool = 'normal' else: setup_tool = 'init' if data_db_set['type'] == 'mysql': try: curs.execute(db_change( 'create database ' + data_db_set['name'] + ' ' + \ 'default character set utf8mb4' )) except: try: curs.execute(db_change( 'alter database ' + data_db_set['name'] + ' ' + \ 'character set utf8mb4' )) except: pass conn.select_db(data_db_set['name']) if setup_tool != 'normal': create_data = get_db_table_list() for create_table in create_data: for create in ['test'] + create_data[create_table]: db_pass = 0 try: curs.execute(db_change('select ' + create + ' from ' + create_table + ' limit 1')) db_pass = 1 except: pass if db_pass == 0: try: curs.execute(db_change('create table ' + create_table + '(test longtext default (""))')) db_pass = 1 except Exception as e: # print(e) pass if db_pass == 0: try: curs.execute(db_change('create table ' + create_table + '(test longtext default "")')) db_pass = 1 except Exception as e: # print(e) pass if db_pass == 0: try: curs.execute(db_change('create table ' + create_table + '(test longtext)')) db_pass = 1 except Exception as e: # print(e) pass if db_pass == 0: try: curs.execute(db_change("alter table " + create_table + " add column " + create + " longtext default ('')")) db_pass = 1 except Exception as e: # print(e) pass if db_pass == 0: try: curs.execute(db_change("alter table " + create_table + " add column " + create + " longtext default ''")) db_pass = 1 except Exception as e: # print(e) pass if db_pass == 0: try: curs.execute(db_change("alter table " + create_table + " add column " + create + " longtext")) db_pass = 1 except Exception as e: # print(e) pass if db_pass == 0: raise try: curs.execute(db_change("create index history_index on history (title, ip)")) except: pass if setup_tool == 'update': update(int(ver_set_data[0][0]), set_data) else: set_init() set_init_always(version_list['beta']['c_ver']) # Init-Route class EverythingConverter(werkzeug.routing.PathConverter): def __init__(self, map): super(EverythingConverter, self).__init__(map) self.regex = r'.*?' def to_python(self, value): return re.sub(r'^\\\.', '.', value) class RegexConverter(werkzeug.routing.BaseConverter): def __init__(self, url_map, *items): super(RegexConverter, self).__init__(url_map) self.regex = items[0] app = flask.Flask( __name__, template_folder = './' ) app.config['JSON_AS_ASCII'] = False app.config['JSONIFY_PRETTYPRINT_REGULAR'] = True app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 3600 log = logging.getLogger('waitress') log.setLevel(logging.ERROR) app.jinja_env.filters['md5_replace'] = md5_replace app.jinja_env.filters['load_lang'] = load_lang app.jinja_env.filters['cut_100'] = cut_100 app.url_map.converters['everything'] = EverythingConverter app.url_map.converters['regex'] = RegexConverter curs.execute(db_change('select data from other where name = "key"')) sql_data = curs.fetchall() app.secret_key = sql_data[0][0] print('----') # Init-DB_Data server_set = {} server_set_var = get_init_set_list() server_set_env = { 'host' : os.getenv('NAMU_HOST'), 'port' : os.getenv('NAMU_PORT'), 'language' : os.getenv('NAMU_LANG'), 'markup' : os.getenv('NAMU_MARKUP'), 'encode' : os.getenv('NAMU_ENCRYPT') } for i in server_set_var: curs.execute(db_change('select data from other where name = ?'), [i]) server_set_val = curs.fetchall() if server_set_val: server_set_val = server_set_val[0][0] elif server_set_env[i] != None: server_set_val = server_set_env[i] curs.execute(db_change('insert into other (name, data, coverage) values (?, ?, "")'), [i, server_set_env[i]]) else: if 'list' in server_set_var[i]: print(server_set_var[i]['display'] + ' (' + server_set_var[i]['default'] + ') [' + ', '.join(server_set_var[i]['list']) + ']' + ' : ', end = '') else: print(server_set_var[i]['display'] + ' (' + server_set_var[i]['default'] + ') : ', end = '') server_set_val = input() if server_set_val == '': server_set_val = server_set_var[i]['default'] elif server_set_var[i]['require'] == 'select': if not server_set_val in server_set_var[i]['list']: server_set_val = server_set_var[i]['default'] curs.execute(db_change('insert into other (name, data, coverage) values (?, ?, "")'), [i, server_set_val]) print(server_set_var[i]['display'] + ' : ' + server_set_val) server_set[i] = server_set_val print('----') # Init-DB_care if data_db_set['type'] == 'sqlite': def back_up(back_time, back_up_where): print('----') try: shutil.copyfile( data_db_set['name'] + '.db', back_up_where.replace('%t', datetime.datetime.now().strftime('%Y-%m-%d_%H.%M.%S')) ) print('Back up : OK') except: print('Back up : Error') threading.Timer( 60 * 60 * back_time, back_up, [back_time, back_up_where] ).start() curs.execute(db_change('select data from other where name = "back_up"')) back_time = curs.fetchall() back_time = float(number_check(back_time[0][0], True)) if back_time and back_time[0][0] != '' else 0 if back_time != 0: curs.execute(db_change('select data from other where name = "backup_where"')) back_up_where = curs.fetchall() if back_up_where and back_up_where[0][0] != '': back_up_where = back_up_where[0][0] else: back_up_where = 'back_' + data_db_set['name'] + '.db' print('Back up state : ' + str(back_time) + ' hours') back_up(back_time, back_up_where) else: print('Back up state : Turn off') print('Now running... http://localhost:' + server_set['port']) conn.commit() # Init-custom if os.path.exists('custom.py'): from custom import custom_run custom_run('error', app) db_set_str = json.dumps(data_db_set) # Func # Func-inter_wiki app.route('/filter/inter_wiki', defaults = { 'tool' : 'inter_wiki' })(filter_all) app.route('/filter/inter_wiki/add', methods = ['POST', 'GET'], defaults = { 'tool' : 'inter_wiki' })(filter_all_add) app.route('/filter/inter_wiki/add/', methods = ['POST', 'GET'], defaults = { 'tool' : 'inter_wiki' })(filter_all_add) app.route('/filter/inter_wiki/del/', defaults = { 'tool' : 'inter_wiki' })(filter_all_delete) app.route('/filter/outer_link', defaults = { 'tool' : 'outer_link' })(filter_all) app.route('/filter/outer_link/add', methods = ['POST', 'GET'], defaults = { 'tool' : 'outer_link' })(filter_all_add) app.route('/filter/outer_link/add/', methods = ['POST', 'GET'], defaults = { 'tool' : 'outer_link' })(filter_all_add) app.route('/filter/outer_link/del/', defaults = { 'tool' : 'outer_link' })(filter_all_delete) app.route('/filter/document', defaults = { 'tool' : 'document' })(filter_all) app.route('/filter/document/add', methods = ['POST', 'GET'], defaults = { 'tool' : 'document' })(filter_all_add) app.route('/filter/document/add/', methods = ['POST', 'GET'], defaults = { 'tool' : 'document' })(filter_all_add) app.route('/filter/document/del/', defaults = { 'tool' : 'document' })(filter_all_delete) app.route('/filter/edit_top', defaults = { 'tool' : 'edit_top' })(filter_all) app.route('/filter/edit_top/add', methods = ['POST', 'GET'], defaults = { 'tool' : 'edit_top' })(filter_all_add) app.route('/filter/edit_top/del/', defaults = { 'tool' : 'edit_top' })(filter_all_delete) app.route('/filter/image_license', defaults = { 'tool' : 'image_license' })(filter_all) app.route('/filter/image_license/add', methods = ['POST', 'GET'], defaults = { 'tool' : 'image_license' })(filter_all_add) app.route('/filter/image_license/del/', defaults = { 'tool' : 'image_license' })(filter_all_delete) app.route('/filter/edit_filter', defaults = { 'tool' : 'edit_filter' })(filter_all) app.route('/filter/edit_filter/add', methods = ['POST', 'GET'], defaults = { 'tool' : 'edit_filter' })(filter_all_add) app.route('/filter/edit_filter/add/', methods = ['POST', 'GET'], defaults = { 'tool' : 'edit_filter' })(filter_all_add) app.route('/filter/edit_filter/del/', defaults = { 'tool' : 'edit_filter' })(filter_all_delete) app.route('/filter/email_filter', defaults = { 'tool' : 'email_filter' })(filter_all) app.route('/filter/email_filter/add', methods = ['POST', 'GET'], defaults = { 'tool' : 'email_filter' })(filter_all_add) app.route('/filter/email_filter/del/', defaults = { 'tool' : 'email_filter' })(filter_all_delete) app.route('/filter/file_filter', defaults = { 'tool' : 'file_filter' })(filter_all) app.route('/filter/file_filter/add', methods = ['POST', 'GET'], defaults = { 'tool' : 'file_filter' })(filter_all_add) app.route('/filter/file_filter/del/', defaults = { 'tool' : 'file_filter' })(filter_all_delete) app.route('/filter/name_filter', defaults = { 'tool' : 'name_filter' })(filter_all) app.route('/filter/name_filter/add', methods = ['POST', 'GET'], defaults = { 'tool' : 'name_filter' })(filter_all_add) app.route('/filter/name_filter/del/', defaults = { 'tool' : 'name_filter' })(filter_all_delete) app.route('/filter/extension_filter', defaults = { 'tool' : 'extension_filter' })(filter_all) app.route('/filter/extension_filter/add', methods = ['POST', 'GET'], defaults = { 'tool' : 'extension_filter' })(filter_all_add) app.route('/filter/extension_filter/del/', defaults = { 'tool' : 'extension_filter' })(filter_all_delete) # Func-list app.route('/list/document/old')(list_old_page) app.route('/list/document/old/')(list_old_page) app.route('/list/document/acl')(list_acl) app.route('/list/document/acl/')(list_acl) app.route('/list/document/need')(list_please) app.route('/list/document/need/')(list_please) app.route('/list/document/all')(list_title_index) app.route('/list/document/all/')(list_title_index) app.route('/list/document/long')(list_long_page) app.route('/list/document/long/')(list_long_page) app.route('/list/document/short', defaults = { 'tool' : 'short_page' })(list_long_page) app.route('/list/document/short/', defaults = { 'tool' : 'short_page' })(list_long_page) app.route('/list/file')(list_image_file) app.route('/list/file/')(list_image_file) app.route('/list/admin')(list_admin) app.route('/list/admin/auth_use', methods = ['POST', 'GET'])(list_admin_auth_use) app.route('/list/admin/auth_use//', methods = ['POST', 'GET'])(list_admin_auth_use) app.route('/list/user')(list_user) app.route('/list/user/')(list_user) app.route('/list/user/check/')(list_user_check) app.route('/list/user/check//')(list_user_check) app.route('/list/user/check///')(list_user_check) app.route('/list/user/check////')(list_user_check) app.route('/list/user/check/delete///