|
|
@@ -1,7 +1,8 @@
|
|
|
-from bottle import request, app
|
|
|
+from bottle import request, app, template
|
|
|
from bottle.ext import beaker
|
|
|
import json
|
|
|
import sqlite3
|
|
|
+from css_html_js_minify import html_minify
|
|
|
|
|
|
json_data = open('set.json').read()
|
|
|
set_data = json.loads(json_data)
|
|
|
@@ -10,7 +11,7 @@ conn = sqlite3.connect(set_data['db'] + '.db')
|
|
|
curs = conn.cursor()
|
|
|
|
|
|
session_opts = {
|
|
|
- 'session.type': 'file',
|
|
|
+ 'session.type': 'dbm',
|
|
|
'session.data_dir': './app_session/',
|
|
|
'session.auto': 1
|
|
|
}
|
|
|
@@ -20,7 +21,6 @@ app = beaker.middleware.SessionMiddleware(app(), session_opts)
|
|
|
from mark import *
|
|
|
|
|
|
def other2(d):
|
|
|
- g = 0
|
|
|
session = request.environ.get('beaker.session')
|
|
|
if(session.get('View_List')):
|
|
|
m = re.findall('(?:(?:([^\n]+)\n))', session.get('View_List'))
|
|
|
@@ -33,6 +33,30 @@ def other2(d):
|
|
|
r = d + [g]
|
|
|
return(r)
|
|
|
|
|
|
+def include(title, old, new):
|
|
|
+ if(re.search('^틀:', title)):
|
|
|
+ old_d = mid_pas(old, 0, 1, 1)[0]
|
|
|
+ new_d = mid_pas(new, 0, 1, 1)[0]
|
|
|
+
|
|
|
+ m1 = re.findall("\[\[(분류:(?:(?:(?!\]\]).)*))\]\]", old_d)
|
|
|
+ m2 = re.findall("\[\[(분류:(?:(?:(?!\]\]).)*))\]\]", new_d)
|
|
|
+
|
|
|
+ curs.execute("select link from back where title = ? and type = 'include'", [title])
|
|
|
+ d1 = curs.fetchall()
|
|
|
+ print(d1)
|
|
|
+ for x in d1:
|
|
|
+ print('x : ' + str(x[0]))
|
|
|
+ for y in m1:
|
|
|
+ print('y : ' + str(y))
|
|
|
+ curs.execute("delete from back where link = ? and type = 'cat'", [y])
|
|
|
+
|
|
|
+ for z in m2:
|
|
|
+ print('z : ' + str(z))
|
|
|
+ backlink_plus(x[0], z, 'cat', 1)
|
|
|
+
|
|
|
+ conn.commit()
|
|
|
+
|
|
|
+
|
|
|
def wiki_set(num):
|
|
|
if(num == 1):
|
|
|
r = []
|
|
|
@@ -312,3 +336,122 @@ def leng_check(a, b):
|
|
|
c = '0'
|
|
|
|
|
|
return(c)
|
|
|
+
|
|
|
+def redirect(data):
|
|
|
+ return('<meta http-equiv="refresh" content="0;url=' + data + '" />')
|
|
|
+
|
|
|
+def re_error(data):
|
|
|
+ if(data == '/ban'):
|
|
|
+ ip = ip_check()
|
|
|
+ end = '권한이 맞지 않는 상태 입니다.'
|
|
|
+ if(ban_check() == 1):
|
|
|
+ curs.execute("select end, why from ban where block = ?", [ip])
|
|
|
+ d = curs.fetchall()
|
|
|
+ if(not d):
|
|
|
+ m = re.search("^([0-9]{1,3}\.[0-9]{1,3})", ip)
|
|
|
+ if(m):
|
|
|
+ curs.execute("select end, why from ban where block = ? and band = 'O'", [m.groups()[0]])
|
|
|
+ d = curs.fetchall()
|
|
|
+
|
|
|
+ if(d):
|
|
|
+ if(d[0][0]):
|
|
|
+ end = d[0][0] + ' 까지 차단 상태 입니다. / 사유 : ' + d[0][1]
|
|
|
+
|
|
|
+ now = re.sub(':', '', get_time())
|
|
|
+ now = re.sub('\-', '', now)
|
|
|
+ now = int(re.sub(' ', '', now))
|
|
|
+
|
|
|
+ day = re.sub('\-', '', d[0][0])
|
|
|
+
|
|
|
+ if(now >= int(day + '000000')):
|
|
|
+ curs.execute("delete from ban where block = ?", [ip])
|
|
|
+ conn.commit()
|
|
|
+
|
|
|
+ end = '차단이 풀렸습니다. 다시 시도 해 보세요.'
|
|
|
+ else:
|
|
|
+ end = '영구 차단 상태 입니다. / 사유 : ' + d[0][1]
|
|
|
+
|
|
|
+
|
|
|
+ return(
|
|
|
+ html_minify(
|
|
|
+ template('index',
|
|
|
+ imp = ['권한 오류', wiki_set(1), custom(), other2([0, 0])],
|
|
|
+ data = end,
|
|
|
+ menu = 0
|
|
|
+ )
|
|
|
+ )
|
|
|
+ )
|
|
|
+
|
|
|
+ d = re.search('\/error\/([0-9]+)', data)
|
|
|
+ if(d):
|
|
|
+ num = int(d.groups()[0])
|
|
|
+ if(num == 1):
|
|
|
+ title = '권한 오류'
|
|
|
+ data = '비 로그인 상태 입니다.'
|
|
|
+ elif(num == 2):
|
|
|
+ title = '권한 오류'
|
|
|
+ data = '이 계정이 없습니다.'
|
|
|
+ elif(num == 3):
|
|
|
+ title = '권한 오류'
|
|
|
+ data = '권한이 모자랍니다.'
|
|
|
+ elif(num == 4):
|
|
|
+ title = '권한 오류'
|
|
|
+ data = '관리자는 차단, 검사 할 수 없습니다.'
|
|
|
+ elif(num == 5):
|
|
|
+ title = '사용자 오류'
|
|
|
+ data = '그런 계정이 없습니다.'
|
|
|
+ elif(num == 6):
|
|
|
+ title = '가입 오류'
|
|
|
+ data = '동일한 아이디의 사용자가 있습니다.'
|
|
|
+ elif(num == 7):
|
|
|
+ title = '가입 오류'
|
|
|
+ data = '아이디는 20글자보다 짧아야 합니다.'
|
|
|
+ elif(num == 8):
|
|
|
+ title = '가입 오류'
|
|
|
+ data = '아이디에는 한글과 알파벳과 공백만 허용 됩니다.'
|
|
|
+ elif(num == 9):
|
|
|
+ title = '파일 올리기 오류'
|
|
|
+ data = '파일이 없습니다.'
|
|
|
+ elif(num == 10):
|
|
|
+ title = '변경 오류'
|
|
|
+ data = '비밀번호가 다릅니다.'
|
|
|
+ elif(num == 11):
|
|
|
+ title = '로그인 오류'
|
|
|
+ data = '이미 로그인 되어 있습니다.'
|
|
|
+ elif(num == 14):
|
|
|
+ title = '파일 올리기 오류'
|
|
|
+ data = 'jpg, gif, jpeg, png, webp만 가능 합니다.'
|
|
|
+ elif(num == 15):
|
|
|
+ title = '편집 오류'
|
|
|
+ data = '편집 기록은 500자를 넘을 수 없습니다.'
|
|
|
+ elif(num == 16):
|
|
|
+ title = '파일 올리기 오류'
|
|
|
+ data = '동일한 이름의 파일이 있습니다.'
|
|
|
+ elif(num == 17):
|
|
|
+ title = '파일 올리기 오류'
|
|
|
+ data = '파일 용량은 ' + wiki_set(3) + 'MB를 넘길 수 없습니다.'
|
|
|
+ elif(num == 18):
|
|
|
+ title = '편집 오류'
|
|
|
+ data = '내용이 원래 문서와 동일 합니다.'
|
|
|
+ elif(num == 19):
|
|
|
+ title = '이동 오류'
|
|
|
+ data = '이동 하려는 곳에 문서가 이미 있습니다.'
|
|
|
+ elif(num == 20):
|
|
|
+ title = '비밀번호 오류'
|
|
|
+ data = '재 확인이랑 비밀번호가 다릅니다.'
|
|
|
+
|
|
|
+ if(title):
|
|
|
+ return(
|
|
|
+ html_minify(
|
|
|
+ template(
|
|
|
+ 'index',
|
|
|
+ imp = [title, wiki_set(1), custom(), other2([0, 0])],
|
|
|
+ data = data,
|
|
|
+ menu = 0
|
|
|
+ )
|
|
|
+ )
|
|
|
+ )
|
|
|
+ else:
|
|
|
+ return(redirect('/'))
|
|
|
+ else:
|
|
|
+ return(redirect('/'))
|