|
@@ -128,6 +128,24 @@ def ownercheck():
|
|
|
if(rows):
|
|
if(rows):
|
|
|
if(rows[0]['acl'] == 'owner'):
|
|
if(rows[0]['acl'] == 'owner'):
|
|
|
return 1
|
|
return 1
|
|
|
|
|
+
|
|
|
|
|
+def isin(name):
|
|
|
|
|
+ if(re.search('^틀:', name)):
|
|
|
|
|
+ curs.execute("select * from back where title = '" + pymysql.escape_string(name) + "' and type = 'include'")
|
|
|
|
|
+ include = curs.fetchall()
|
|
|
|
|
+ if(include):
|
|
|
|
|
+ i = 0
|
|
|
|
|
+
|
|
|
|
|
+ while(True):
|
|
|
|
|
+ try:
|
|
|
|
|
+ curs.execute("select * from data where title = '" + pymysql.escape_string(include[i]['link']) + "'")
|
|
|
|
|
+ file = curs.fetchall()
|
|
|
|
|
+ if(file):
|
|
|
|
|
+ namumark(include[i]['link'], file[0]['data'])
|
|
|
|
|
+ except:
|
|
|
|
|
+ break
|
|
|
|
|
+
|
|
|
|
|
+ i = i + 1
|
|
|
|
|
|
|
|
def namumark(title, data):
|
|
def namumark(title, data):
|
|
|
while(True):
|
|
while(True):
|
|
@@ -422,9 +440,15 @@ def namumark(title, data):
|
|
|
a = re.sub("([^= ,]*)\=([^,]*)", "", a, 1)
|
|
a = re.sub("([^= ,]*)\=([^,]*)", "", a, 1)
|
|
|
else:
|
|
else:
|
|
|
break
|
|
break
|
|
|
- data = re.sub("\[include\(((?:(?!\)\]|,).)*)((?:,\s?(?:[^)]*))+)?\)\]", '\n<div style="margin-bottom: -20px;">' + enddata + '</div>\n', data, 1)
|
|
|
|
|
|
|
+ data = re.sub("\[include\(((?:(?!\)\]|,).)*)((?:,\s?(?:[^)]*))+)?\)\]", '<br><div>' + enddata + '</div><br>', data, 1)
|
|
|
else:
|
|
else:
|
|
|
- data = re.sub("\[include\(((?:(?!\)\]|,).)*)((?:,\s?(?:[^)]*))+)?\)\]", "[[" + results[0] + "]]", data, 1)
|
|
|
|
|
|
|
+ curs.execute("select * from back where title = '" + pymysql.escape_string(results[0]) + "' and link = '" + pymysql.escape_string(title) + "' and type = 'include'")
|
|
|
|
|
+ abb = curs.fetchall()
|
|
|
|
|
+ if(not abb):
|
|
|
|
|
+ curs.execute("insert into back (title, link, type) value ('" + pymysql.escape_string(results[0]) + "', '" + pymysql.escape_string(title) + "', 'include')")
|
|
|
|
|
+ conn.commit()
|
|
|
|
|
+
|
|
|
|
|
+ data = re.sub("\[include\(((?:(?!\)\]|,).)*)((?:,\s?(?:[^)]*))+)?\)\]", "<a class=\"not_thing\" href=\"" + parse.quote(results[0]).replace('/','%2F') + "\">" + results[0] + "</a>", data, 1)
|
|
|
else:
|
|
else:
|
|
|
break
|
|
break
|
|
|
|
|
|
|
@@ -834,7 +858,7 @@ def namumark(title, data):
|
|
|
data = data + tou
|
|
data = data + tou
|
|
|
|
|
|
|
|
if(category):
|
|
if(category):
|
|
|
- data = data + '<br><div style="width:100%;border: 1px solid #777;padding: 5px;margin-top: 1em;">분류: ' + category + '</div>'
|
|
|
|
|
|
|
+ data = data + '<div style="width:100%;border: 1px solid #777;padding: 5px;margin-top: 1em;">분류: ' + category + '</div>'
|
|
|
|
|
|
|
|
while(True):
|
|
while(True):
|
|
|
m = re.search("(\|\|(?:(?:(?:.*)\n?)\|\|)+)", data)
|
|
m = re.search("(\|\|(?:(?:(?:.*)\n?)\|\|)+)", data)
|
|
@@ -1626,10 +1650,7 @@ def backlink(name = None, number = None):
|
|
|
|
|
|
|
|
curs.execute("select * from back where title = '" + pymysql.escape_string(name) + "' order by link asc")
|
|
curs.execute("select * from back where title = '" + pymysql.escape_string(name) + "' order by link asc")
|
|
|
rows = curs.fetchall()
|
|
rows = curs.fetchall()
|
|
|
- if(rows):
|
|
|
|
|
- curs.execute("delete from back where title = '" + pymysql.escape_string(name) + "' and link = ''")
|
|
|
|
|
- conn.commit()
|
|
|
|
|
-
|
|
|
|
|
|
|
+ if(rows):
|
|
|
while(True):
|
|
while(True):
|
|
|
try:
|
|
try:
|
|
|
a = rows[i]
|
|
a = rows[i]
|
|
@@ -1916,6 +1937,7 @@ def search():
|
|
|
@app.route('/w/<path:name>')
|
|
@app.route('/w/<path:name>')
|
|
|
def w(name = None):
|
|
def w(name = None):
|
|
|
i = 0
|
|
i = 0
|
|
|
|
|
+
|
|
|
curs.execute("select * from rd where title = '" + pymysql.escape_string(name) + "' order by date asc")
|
|
curs.execute("select * from rd where title = '" + pymysql.escape_string(name) + "' order by date asc")
|
|
|
rows = curs.fetchall()
|
|
rows = curs.fetchall()
|
|
|
while(True):
|
|
while(True):
|
|
@@ -1924,14 +1946,18 @@ def w(name = None):
|
|
|
except:
|
|
except:
|
|
|
topic = ""
|
|
topic = ""
|
|
|
break
|
|
break
|
|
|
|
|
+
|
|
|
curs.execute("select * from stop where title = '" + pymysql.escape_string(rows[i]['title']) + "' and sub = '" + pymysql.escape_string(rows[i]['sub']) + "' and close = 'O'")
|
|
curs.execute("select * from stop where title = '" + pymysql.escape_string(rows[i]['title']) + "' and sub = '" + pymysql.escape_string(rows[i]['sub']) + "' and close = 'O'")
|
|
|
row = curs.fetchall()
|
|
row = curs.fetchall()
|
|
|
if(not row):
|
|
if(not row):
|
|
|
topic = "open"
|
|
topic = "open"
|
|
|
|
|
+
|
|
|
break
|
|
break
|
|
|
else:
|
|
else:
|
|
|
i = i + 1
|
|
i = i + 1
|
|
|
|
|
+
|
|
|
acl = ''
|
|
acl = ''
|
|
|
|
|
+
|
|
|
m = re.search("^(.*)\/(.*)$", name)
|
|
m = re.search("^(.*)\/(.*)$", name)
|
|
|
if(m):
|
|
if(m):
|
|
|
g = m.groups()
|
|
g = m.groups()
|
|
@@ -2023,6 +2049,7 @@ def w(name = None):
|
|
|
m = re.search("^사용자:(.*)", name)
|
|
m = re.search("^사용자:(.*)", name)
|
|
|
if(m):
|
|
if(m):
|
|
|
g = m.groups()
|
|
g = m.groups()
|
|
|
|
|
+
|
|
|
curs.execute("select * from user where id = '" + pymysql.escape_string(g[0]) + "'")
|
|
curs.execute("select * from user where id = '" + pymysql.escape_string(g[0]) + "'")
|
|
|
rows = curs.fetchall()
|
|
rows = curs.fetchall()
|
|
|
if(rows):
|
|
if(rows):
|
|
@@ -2030,6 +2057,7 @@ def w(name = None):
|
|
|
acl = '(소유자)'
|
|
acl = '(소유자)'
|
|
|
elif(rows[0]['acl'] == 'admin'):
|
|
elif(rows[0]['acl'] == 'admin'):
|
|
|
acl = '(관리자)'
|
|
acl = '(관리자)'
|
|
|
|
|
+
|
|
|
curs.execute("select * from data where title = '" + pymysql.escape_string(name) + "'")
|
|
curs.execute("select * from data where title = '" + pymysql.escape_string(name) + "'")
|
|
|
rows = curs.fetchall()
|
|
rows = curs.fetchall()
|
|
|
if(rows):
|
|
if(rows):
|
|
@@ -2040,13 +2068,16 @@ def w(name = None):
|
|
|
else:
|
|
else:
|
|
|
if(not acl):
|
|
if(not acl):
|
|
|
acl = ''
|
|
acl = ''
|
|
|
|
|
+
|
|
|
enddata = namumark(name, rows[0]['data'])
|
|
enddata = namumark(name, rows[0]['data'])
|
|
|
|
|
+
|
|
|
m = re.search('<div id="toc">((?:(?!\/div>).)*)<\/div>', enddata)
|
|
m = re.search('<div id="toc">((?:(?!\/div>).)*)<\/div>', enddata)
|
|
|
if(m):
|
|
if(m):
|
|
|
result = m.groups()
|
|
result = m.groups()
|
|
|
left = result[0]
|
|
left = result[0]
|
|
|
else:
|
|
else:
|
|
|
left = ''
|
|
left = ''
|
|
|
|
|
+
|
|
|
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name).replace('/','%2F'), data = enddata, license = data['license'], tn = 1, acl = acl, left = left, uppage = uppage, style = style, topic = topic)
|
|
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name).replace('/','%2F'), data = enddata, license = data['license'], tn = 1, acl = acl, left = left, uppage = uppage, style = style, topic = topic)
|
|
|
else:
|
|
else:
|
|
|
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name).replace('/','%2F'), data = '문서 없음', license = data['license'], tn = 1, uppage = uppage, style = style, acl = acl, topic = topic), 404
|
|
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name).replace('/','%2F'), data = '문서 없음', license = data['license'], tn = 1, uppage = uppage, style = style, acl = acl, topic = topic), 404
|
|
@@ -2054,6 +2085,7 @@ def w(name = None):
|
|
|
@app.route('/w/<path:name>/from/<path:redirect>')
|
|
@app.route('/w/<path:name>/from/<path:redirect>')
|
|
|
def redirectw(name = None, redirect = None):
|
|
def redirectw(name = None, redirect = None):
|
|
|
i = 0
|
|
i = 0
|
|
|
|
|
+
|
|
|
curs.execute("select * from rd where title = '" + pymysql.escape_string(name) + "' order by date asc")
|
|
curs.execute("select * from rd where title = '" + pymysql.escape_string(name) + "' order by date asc")
|
|
|
rows = curs.fetchall()
|
|
rows = curs.fetchall()
|
|
|
while(True):
|
|
while(True):
|
|
@@ -2061,23 +2093,31 @@ def redirectw(name = None, redirect = None):
|
|
|
a = rows[i]
|
|
a = rows[i]
|
|
|
except:
|
|
except:
|
|
|
topic = ""
|
|
topic = ""
|
|
|
|
|
+
|
|
|
break
|
|
break
|
|
|
|
|
+
|
|
|
curs.execute("select * from stop where title = '" + pymysql.escape_string(rows[i]['title']) + "' and sub = '" + pymysql.escape_string(rows[i]['sub']) + "' and close = 'O'")
|
|
curs.execute("select * from stop where title = '" + pymysql.escape_string(rows[i]['title']) + "' and sub = '" + pymysql.escape_string(rows[i]['sub']) + "' and close = 'O'")
|
|
|
row = curs.fetchall()
|
|
row = curs.fetchall()
|
|
|
if(not row):
|
|
if(not row):
|
|
|
topic = "open"
|
|
topic = "open"
|
|
|
|
|
+
|
|
|
break
|
|
break
|
|
|
else:
|
|
else:
|
|
|
i = i + 1
|
|
i = i + 1
|
|
|
|
|
+
|
|
|
acl = ''
|
|
acl = ''
|
|
|
|
|
+
|
|
|
m = re.search("^(.*)\/(.*)$", name)
|
|
m = re.search("^(.*)\/(.*)$", name)
|
|
|
if(m):
|
|
if(m):
|
|
|
g = m.groups()
|
|
g = m.groups()
|
|
|
uppage = g[0]
|
|
uppage = g[0]
|
|
|
|
|
+
|
|
|
style = ""
|
|
style = ""
|
|
|
else:
|
|
else:
|
|
|
uppage = ""
|
|
uppage = ""
|
|
|
|
|
+
|
|
|
style = "display:none;"
|
|
style = "display:none;"
|
|
|
|
|
+
|
|
|
if(re.search("^분류:", name)):
|
|
if(re.search("^분류:", name)):
|
|
|
curs.execute("select * from cat where title = '" + pymysql.escape_string(name) + "' order by cat asc")
|
|
curs.execute("select * from cat where title = '" + pymysql.escape_string(name) + "' order by cat asc")
|
|
|
rows = curs.fetchall()
|
|
rows = curs.fetchall()
|
|
@@ -2096,6 +2136,7 @@ def redirectw(name = None, redirect = None):
|
|
|
if(row):
|
|
if(row):
|
|
|
aa = row[0]['data']
|
|
aa = row[0]['data']
|
|
|
aa = namumark('', aa)
|
|
aa = namumark('', aa)
|
|
|
|
|
+
|
|
|
bb = re.search('<div style="width:100%;border: 1px solid #777;padding: 5px;margin-top: 1em;">분류:((?:(?!<\/div>).)*)<\/div>', aa)
|
|
bb = re.search('<div style="width:100%;border: 1px solid #777;padding: 5px;margin-top: 1em;">분류:((?:(?!<\/div>).)*)<\/div>', aa)
|
|
|
if(bb):
|
|
if(bb):
|
|
|
cc = bb.groups()
|
|
cc = bb.groups()
|
|
@@ -2129,7 +2170,9 @@ def redirectw(name = None, redirect = None):
|
|
|
conn.commit()
|
|
conn.commit()
|
|
|
|
|
|
|
|
i = i + 1
|
|
i = i + 1
|
|
|
|
|
+
|
|
|
div = '<h2>분류</h2>' + div
|
|
div = '<h2>분류</h2>' + div
|
|
|
|
|
+
|
|
|
curs.execute("select * from data where title = '" + pymysql.escape_string(name) + "'")
|
|
curs.execute("select * from data where title = '" + pymysql.escape_string(name) + "'")
|
|
|
bb = curs.fetchall()
|
|
bb = curs.fetchall()
|
|
|
if(bb):
|
|
if(bb):
|
|
@@ -2140,14 +2183,17 @@ def redirectw(name = None, redirect = None):
|
|
|
else:
|
|
else:
|
|
|
if(not acl):
|
|
if(not acl):
|
|
|
acl = ''
|
|
acl = ''
|
|
|
|
|
+
|
|
|
newdata = re.sub('^#(?:redirect|넘겨주기)\s(?P<in>[^\n]*)', ' * \g<in> 문서로 넘겨주기', bb[0]['data'])
|
|
newdata = re.sub('^#(?:redirect|넘겨주기)\s(?P<in>[^\n]*)', ' * \g<in> 문서로 넘겨주기', bb[0]['data'])
|
|
|
enddata = namumark(name, newdata)
|
|
enddata = namumark(name, newdata)
|
|
|
|
|
+
|
|
|
m = re.search('<div id="toc">((?:(?!\/div>).)*)<\/div>', enddata)
|
|
m = re.search('<div id="toc">((?:(?!\/div>).)*)<\/div>', enddata)
|
|
|
if(m):
|
|
if(m):
|
|
|
result = m.groups()
|
|
result = m.groups()
|
|
|
left = result[0]
|
|
left = result[0]
|
|
|
else:
|
|
else:
|
|
|
left = ''
|
|
left = ''
|
|
|
|
|
+
|
|
|
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name).replace('/','%2F'), data = enddata + '<br>' + div, license = data['license'], tn = 1, uppage = uppage, style = style, acl = acl, topic = topic, redirect = '<a href="/w/' + parse.quote(redirect).replace('/','%2F') + '/from/' + parse.quote(name).replace('/','%2F') + '">' + redirect + '</a>에서 넘어 왔습니다.')
|
|
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name).replace('/','%2F'), data = enddata + '<br>' + div, license = data['license'], tn = 1, uppage = uppage, style = style, acl = acl, topic = topic, redirect = '<a href="/w/' + parse.quote(redirect).replace('/','%2F') + '/from/' + parse.quote(name).replace('/','%2F') + '">' + redirect + '</a>에서 넘어 왔습니다.')
|
|
|
else:
|
|
else:
|
|
|
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name).replace('/','%2F'), data = div, license = data['license'], tn = 1, uppage = uppage, style = style, acl = acl, topic = topic, redirect = '<a href="/w/' + parse.quote(redirect).replace('/','%2F') + '/from/' + parse.quote(name).replace('/','%2F') + '">' + redirect + '</a>에서 넘어 왔습니다.')
|
|
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name).replace('/','%2F'), data = div, license = data['license'], tn = 1, uppage = uppage, style = style, acl = acl, topic = topic, redirect = '<a href="/w/' + parse.quote(redirect).replace('/','%2F') + '/from/' + parse.quote(name).replace('/','%2F') + '">' + redirect + '</a>에서 넘어 왔습니다.')
|
|
@@ -2157,6 +2203,7 @@ def redirectw(name = None, redirect = None):
|
|
|
m = re.search("^사용자:(.*)", name)
|
|
m = re.search("^사용자:(.*)", name)
|
|
|
if(m):
|
|
if(m):
|
|
|
g = m.groups()
|
|
g = m.groups()
|
|
|
|
|
+
|
|
|
curs.execute("select * from user where id = '" + pymysql.escape_string(g[0]) + "'")
|
|
curs.execute("select * from user where id = '" + pymysql.escape_string(g[0]) + "'")
|
|
|
rows = curs.fetchall()
|
|
rows = curs.fetchall()
|
|
|
if(rows):
|
|
if(rows):
|
|
@@ -2164,6 +2211,7 @@ def redirectw(name = None, redirect = None):
|
|
|
acl = '(소유자)'
|
|
acl = '(소유자)'
|
|
|
elif(rows[0]['acl'] == 'admin'):
|
|
elif(rows[0]['acl'] == 'admin'):
|
|
|
acl = '(관리자)'
|
|
acl = '(관리자)'
|
|
|
|
|
+
|
|
|
curs.execute("select * from data where title = '" + pymysql.escape_string(name) + "'")
|
|
curs.execute("select * from data where title = '" + pymysql.escape_string(name) + "'")
|
|
|
rows = curs.fetchall()
|
|
rows = curs.fetchall()
|
|
|
if(rows):
|
|
if(rows):
|
|
@@ -2174,14 +2222,17 @@ def redirectw(name = None, redirect = None):
|
|
|
else:
|
|
else:
|
|
|
if(not acl):
|
|
if(not acl):
|
|
|
acl = ''
|
|
acl = ''
|
|
|
|
|
+
|
|
|
newdata = re.sub('^#(?:redirect|넘겨주기)\s(?P<in>[^\n]*)', ' * \g<in> 문서로 넘겨주기', rows[0]["data"])
|
|
newdata = re.sub('^#(?:redirect|넘겨주기)\s(?P<in>[^\n]*)', ' * \g<in> 문서로 넘겨주기', rows[0]["data"])
|
|
|
enddata = namumark(name, newdata)
|
|
enddata = namumark(name, newdata)
|
|
|
|
|
+
|
|
|
m = re.search('<div id="toc">((?:(?!\/div>).)*)<\/div>', enddata)
|
|
m = re.search('<div id="toc">((?:(?!\/div>).)*)<\/div>', enddata)
|
|
|
if(m):
|
|
if(m):
|
|
|
result = m.groups()
|
|
result = m.groups()
|
|
|
left = result[0]
|
|
left = result[0]
|
|
|
else:
|
|
else:
|
|
|
left = ''
|
|
left = ''
|
|
|
|
|
+
|
|
|
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name).replace('/','%2F'), data = enddata, license = data['license'], tn = 1, acl = acl, left = left, uppage = uppage, style = style, topic = topic, redirect = '<a href="/w/' + parse.quote(redirect).replace('/','%2F') + '/from/' + parse.quote(name).replace('/','%2F') + '">' + redirect + '</a>에서 넘어 왔습니다.')
|
|
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name).replace('/','%2F'), data = enddata, license = data['license'], tn = 1, acl = acl, left = left, uppage = uppage, style = style, topic = topic, redirect = '<a href="/w/' + parse.quote(redirect).replace('/','%2F') + '/from/' + parse.quote(name).replace('/','%2F') + '">' + redirect + '</a>에서 넘어 왔습니다.')
|
|
|
else:
|
|
else:
|
|
|
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name).replace('/','%2F'), data = '문서 없음', license = data['license'], tn = 1, uppage = uppage, style = style, acl = acl, topic = topic, redirect = '<a href="/w/' + parse.quote(redirect).replace('/','%2F') + '/from/' + parse.quote(name).replace('/','%2F') + '">' + redirect + '</a>에서 넘어 왔습니다.'), 404
|
|
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name).replace('/','%2F'), data = '문서 없음', license = data['license'], tn = 1, uppage = uppage, style = style, acl = acl, topic = topic, redirect = '<a href="/w/' + parse.quote(redirect).replace('/','%2F') + '/from/' + parse.quote(name).replace('/','%2F') + '">' + redirect + '</a>에서 넘어 왔습니다.'), 404
|
|
@@ -2410,6 +2461,9 @@ def edit(name = None):
|
|
|
|
|
|
|
|
curs.execute("insert into data (title, data, acl) value ('" + pymysql.escape_string(name) + "', '" + pymysql.escape_string(content) + "', '')")
|
|
curs.execute("insert into data (title, data, acl) value ('" + pymysql.escape_string(name) + "', '" + pymysql.escape_string(content) + "', '')")
|
|
|
conn.commit()
|
|
conn.commit()
|
|
|
|
|
+
|
|
|
|
|
+ isin(name)
|
|
|
|
|
+
|
|
|
return '<meta http-equiv="refresh" content="0;url=/w/' + parse.quote(name).replace('/','%2F') + '" />'
|
|
return '<meta http-equiv="refresh" content="0;url=/w/' + parse.quote(name).replace('/','%2F') + '" />'
|
|
|
else:
|
|
else:
|
|
|
ip = getip(request)
|
|
ip = getip(request)
|
|
@@ -2468,6 +2522,8 @@ def secedit(name = None, number = None):
|
|
|
curs.execute("update data set data = '" + pymysql.escape_string(content) + "' where title = '" + pymysql.escape_string(name) + "'")
|
|
curs.execute("update data set data = '" + pymysql.escape_string(content) + "' where title = '" + pymysql.escape_string(name) + "'")
|
|
|
conn.commit()
|
|
conn.commit()
|
|
|
|
|
|
|
|
|
|
+ isin(name)
|
|
|
|
|
+
|
|
|
return '<meta http-equiv="refresh" content="0;url=/w/' + parse.quote(name).replace('/','%2F') + '" />'
|
|
return '<meta http-equiv="refresh" content="0;url=/w/' + parse.quote(name).replace('/','%2F') + '" />'
|
|
|
else:
|
|
else:
|
|
|
return '<meta http-equiv="refresh" content="0;url=/w/' + parse.quote(name).replace('/','%2F') + '" />'
|
|
return '<meta http-equiv="refresh" content="0;url=/w/' + parse.quote(name).replace('/','%2F') + '" />'
|