'
break
data = re.sub("\[목차\]", rtoc, data)
while True:
m = re.search("{{{((?:(?!{{{)(?!}}}).)*)}}}", data)
if(m):
results = m.groups()
n = re.search("^\+([1-5])\s?(.*)$", results[0])
a = re.search("^\-([1-5])\s?(.*)$", results[0])
b = re.search("^(#[0-9a-f-A-F]{6})\s?(.*)$", results[0])
c = re.search("^(#[0-9a-f-A-F]{3})\s?(.*)$", results[0])
d = re.search("^#(\w+)\s?(.*)$", results[0])
if(n):
result = n.groups()
data = re.sub("{{{((?:(?!{{{)(?!}}}).)*)}}}", '' + result[1] + '', data, 1)
elif(a):
result = a.groups()
data = re.sub("{{{((?:(?!{{{)(?!}}}).)*)}}}", '' + result[1] + '', data, 1)
elif(b):
result = b.groups()
data = re.sub("{{{((?:(?!{{{)(?!}}}).)*)}}}", '' + result[1] + '', data, 1)
elif(c):
result = c.groups()
data = re.sub("{{{((?:(?!{{{)(?!}}}).)*)}}}", '' + result[1] + '', data, 1)
elif(d):
result = d.groups()
data = re.sub("{{{((?:(?!{{{)(?!}}}).)*)}}}", '' + result[1] + '', data, 1)
else:
data = re.sub("{{{((?:(?!{{{)(?!}}}).)*)}}}", results[0], 1)
else:
break
data = re.sub("'''(?P.+?)'''(?!')", '\g', data)
data = re.sub("''(?P.+?)''(?!')", '\g', data)
data = re.sub('~~(?P.+?)~~(?!~)', '\g', data)
data = re.sub('--(?P.+?)--(?!-)', '\g', data)
data = re.sub('__(?P.+?)__(?!_)', '\g', data)
data = re.sub('\^\^(?P.+?)\^\^(?!\^)', '\g', data)
data = re.sub(',,(?P.+?),,(?!,)', '\g', data)
data = re.sub('{{\|(?P(?:(?!\|}}).)*)\|}}', '
\g
', data)
data = re.sub("##\s?(?P[^\n]*)\n", "
\g
", data);
data = re.sub("\[\[파일:(?P(?:(?!\]\]).)*)\]\]", "", data)
data = re.sub("\[br\]",' ', data);
while True:
m = re.search("\[youtube\(((?:(?!,|\)\]).)*)(?:,\s)?(?:width=((?:(?!,|\)\]).)*))?(?:,\s)?(?:height=((?:(?!,|\)\]).)*))?(?:,\s)?(?:width=((?:(?!,|\)\]).)*))?\)\]", data)
if(m):
result = m.groups()
if(result[1]):
if(result[2]):
width = result[1]
height = result[2]
else:
width = result[1]
height = '315'
elif(result[2]):
if(result[3]):
height = result[2]
width = result[3]
else:
height = result[2]
width = '560'
else:
width = '560'
height = '315'
data = p.sub('', data, 1)
else:
break
while True:
m = re.search("\[\[(((?!\]\]).)*)\]\]", data)
if(m):
result = m.groups()
a = re.search("(((?!\|).)*)\|(.*)", result[0])
if(a):
results = a.groups()
b = re.search("^http(?:s)?:\/\/", results[0])
if(b):
c = re.search("(?:\.jpg|\.png|\.gif|\.jpeg)", results[0])
if(c):
img = results[0]
img = re.sub("\.(?Pjpg|png|gif|jpeg)", "#\g#", img)
data = re.sub('\[\[(((?!\]\]).)*)\]\]', '' + results[2] + '', data, 1)
else:
data = re.sub('\[\[(((?!\]\]).)*)\]\]', '' + results[2] + '', data, 1)
else:
if(results[0] == title):
data = re.sub('\[\[(((?!\]\]).)*)\]\]', '' + results[2] + '', data, 1)
else:
curs.execute("select * from data where title = '" + pymysql.escape_string(results[0]) + "'")
rows = curs.fetchall()
if(rows):
data = re.sub('\[\[(((?!\]\]).)*)\]\]', '' + results[2] + '', data, 1)
else:
data = re.sub('\[\[(((?!\]\]).)*)\]\]', '' + results[2] + '', data, 1)
else:
b = re.search("^http(?:s)?:\/\/", result[0])
if(b):
c = re.search("(?:\.jpg|\.png|\.gif|\.jpeg)", results[0])
if(c):
img = result[0]
img = re.sub("\.(?Pjpg|png|gif|jpeg)", "#\g#", img)
print('' + result[0] + '')
data = re.sub('\[\[(((?!\]\]).)*)\]\]', '' + result[0] + '', data, 1)
else:
data = re.sub('\[\[(((?!\]\]).)*)\]\]', '' + result[0] + '', data, 1)
else:
if(result[0] == title):
data = re.sub('\[\[(((?!\]\]).)*)\]\]', '' + result[0] + '', data, 1)
else:
curs.execute("select * from data where title = '" + pymysql.escape_string(result[0]) + "'")
rows = curs.fetchall()
if(rows):
data = re.sub('\[\[(((?!\]\]).)*)\]\]', '' + result[0] + '', data, 1)
else:
data = re.sub('\[\[(((?!\]\]).)*)\]\]', '' + result[0] + '', data, 1)
else:
break
while True:
m = re.search("((?:(?:\s\*\s[^\n]*)\n?)+)", data)
if(m):
result = m.groups()
end = str(result[0])
end = re.sub("\s\*\s(?P[^\n]*)", "
\g
", end)
end = re.sub("\n", '', end)
data = re.sub("((?:(?:\s\*\s[^\n]*)\n?)+)", '
' + end + '
', data, 1)
else:
break
data = re.sub('(?Phttp(?:s)?:\/\/(?:(?:(?!\.jpg|\.png|\.gif|\.jpeg|#jpg#|#png#|#gif#|#jpeg#).)*)(?:\.jpg|\.png|\.gif|\.jpeg))', '', data)
data = re.sub('\[date\]', getnow(), data)
data = re.sub("\[anchor\((?P[^\[\]]*)\)\]", '', data)
data = re.sub("#(?Pjpg|png|gif|jpeg)#", ".\g", data)
data = re.sub("-{4,11}", "", data)
while True:
b = re.search("\r\n( +)", data)
if(b):
result = b.groups()
tp = len(result[0])
up = ''
i = 0
while True:
up = up + ''
i = i + 1
if(i == tp):
break
data = re.sub("\r\n( +)", ' ' + up, data, 1)
else:
break
a = 1
tou = "
"
while True:
b = re.search("\[\*([^\s]*)\s((?:[^\[\]]+)*)\]", data)
if(b):
results = b.groups()
if(results[0]):
tou = tou + "[" + results[0] + "] " + results[1] + " "
data = re.sub("\[\*([^\s]*)\s((?:[^\[\]]+)*)\]", "[" + results[0] + "]", data, 1)
else:
tou = tou + "[" + str(a) + "] " + results[1] + " "
data = re.sub("\[\*([^\s]*)\s((?:[^\[\]]+)*)\]", '[' + str(a) + ']', data, 1)
a = a + 1
else:
tou = tou + '
'
if(tou == "
"):
tou = ""
break
data = re.sub("\[각주\](?:(?:(?: +)*(?:\s+)*(?:\r+)*(?:\n+))+)?$", "", data)
data = re.sub("\[각주\]", " " + tou, data)
data = data + tou;
data = re.sub('\n', ' ', data)
return str(data)
def getip(request):
if(session.get('Now') == True):
ip = format(session['DREAMER'])
else:
if(request.headers.getlist("X-Forwarded-For")):
ip = request.headers.getlist("X-Forwarded-For")[0]
else:
ip = request.remote_addr
return ip
def getcan(ip, name):
curs.execute("select * from ban where block = '" + pymysql.escape_string(ip) + "'")
rows = curs.fetchall()
if(rows):
return 1
else:
curs.execute("select * from data where title = '" + pymysql.escape_string(name) + "'")
row = curs.fetchall()
if(row):
curs.execute("select * from user where id = '" + pymysql.escape_string(ip) + "'")
rows = curs.fetchall()
if(row[0]['acl'] == 'user'):
if(rows):
return 0
else:
return 1
elif(row[0]['acl'] == 'admin'):
if(rows):
if(rows[0]['acl'] == 'admin' or rows[0]['acl'] == 'owner'):
return 0
else:
return 1
else:
return 1
else:
return 0
else:
return 0
def getban(ip):
curs.execute("select * from ban where block = '" + pymysql.escape_string(ip) + "'")
rows = curs.fetchall()
if(rows):
return 1
else:
return 0
def getdiscuss(ip, name, sub):
curs.execute("select * from ban where block = '" + pymysql.escape_string(ip) + "'")
rows = curs.fetchall()
if(rows):
return 1
else:
curs.execute("select * from stop where title = '" + pymysql.escape_string(name) + "' and sub = '" + pymysql.escape_string(sub) + "'")
rows = curs.fetchall()
if(rows):
return 1
else:
return 0
def getnow():
now = time.localtime()
s = "%04d-%02d-%02d %02d:%02d:%02d" % (now.tm_year, now.tm_mon, now.tm_mday, now.tm_hour, now.tm_min, now.tm_sec)
return s
def recent(title, ip, today, send, leng):
curs.execute("insert into rc (title, date, ip, send, leng, back) value ('" + pymysql.escape_string(title) + "', '" + today + "', '" + ip + "', '" + pymysql.escape_string(send) + "', '" + leng + "', '')")
conn.commit()
def discuss(title, sub, date):
curs.execute("select * from rd where title = '" + pymysql.escape_string(title) + "' and sub = '" + pymysql.escape_string(sub) + "'")
rows = curs.fetchall()
if(rows):
curs.execute("update rd set date = '" + pymysql.escape_string(date) + "' where title = '" + pymysql.escape_string(title) + "' and sub = '" + pymysql.escape_string(sub) + "'")
else:
curs.execute("insert into rd (title, sub, date) value ('" + pymysql.escape_string(title) + "', '" + pymysql.escape_string(sub) + "', '" + pymysql.escape_string(date) + "')")
conn.commit()
def block(block, end, today, blocker, why):
curs.execute("insert into rb (block, end, today, blocker, why) value ('" + pymysql.escape_string(block) + "', '" + pymysql.escape_string(end) + "', '" + today + "', '" + pymysql.escape_string(blocker) + "', '" + pymysql.escape_string(why) + "')")
conn.commit()
def history(title, data, date, ip, send, leng):
curs.execute("select * from history where title = '" + pymysql.escape_string(title) + "' order by id+0 desc limit 1")
rows = curs.fetchall()
if(rows):
number = int(rows[0]['id']) + 1
curs.execute("insert into history (id, title, data, date, ip, send, leng) value ('" + str(number) + "', '" + pymysql.escape_string(title) + "', '" + pymysql.escape_string(data) + "', '" + date + "', '" + pymysql.escape_string(ip) + "', '" + pymysql.escape_string(send) + "', '" + leng + "')")
conn.commit()
else:
curs.execute("insert into history (id, title, data, date, ip, send, leng) value ('1', '" + pymysql.escape_string(title) + "', '" + pymysql.escape_string(data) + "', '" + date + "', '" + pymysql.escape_string(ip) + "', '" + pymysql.escape_string(send) + "', '" + leng + "')")
conn.commit()
def getleng(existing, change):
if(existing < change):
leng = change - existing
leng = '+' + str(leng)
elif(change < existing):
leng = existing - change
leng = '-' + str(leng)
else:
leng = '0'
return leng;
@app.route('/upload', methods=['GET', 'POST'])
def upload():
if(request.method == 'POST'):
ip = getip(request)
ban = getban(ip)
if(ban == 1):
return ''
else:
file = request.files['file']
if(file and allowed_file(file.filename)):
filename = secure_filename(file.filename)
if(os.path.exists(os.path.join('image', filename))):
return render_template('index.html', logo = data['name'], title = '업로드', data = '동일한 이름 파일 있음')
else:
file.save(os.path.join('image', filename))
return render_template('index.html', logo = data['name'], title = '업로드', data = '완료 됨')
else:
return render_template('index.html', logo = data['name'], title = '업로드', data = 'jpg gif jpeg png만 가능 합니다.')
else:
ip = getip(request)
ban = getban(ip)
if(ban == 1):
return ''
else:
return render_template('index.html', logo = data['name'], title = '업로드', tn = 21)
@app.route('/image/')
def image(name = None):
filename = secure_filename(name)
return send_file(os.path.join('image', filename), mimetype='image')
@app.route('/')
@app.route('/w/')
def redirect():
return ''
@app.route('/recentchanges')
def recentchanges():
i = 0
div = '
'
curs.execute("select * from rc order by date desc limit 50")
rows = curs.fetchall()
if(rows):
while True:
try:
a = rows[i]
except:
div = div + '
'
break
if(rows[i]['send']):
send = rows[i]['send']
send = re.sub('<', '<', send)
send = re.sub('>', '>', send)
send = re.sub('<a href="\/w\/(?P[^"]*)">(?P[^&]*)<\/a>', '\g', send)
else:
send = ' '
title = rows[i]['title']
title = re.sub('<', '<', title)
title = re.sub('>', '>', title)
div = div + '
'
i = i + 1
return render_template('index.html', logo = data['name'], rows = div, tn = 3, title = '최근 변경내역')
else:
return render_template('index.html', logo = data['name'], rows = '', tn = 3, title = '최근 변경내역')
@app.route('/recentdiscuss')
def recentdiscuss():
i = 0
div = '
'
curs.execute("select * from rd order by date desc limit 50")
rows = curs.fetchall()
if(rows):
while True:
try:
a = rows[i]
except:
div = div + '
'
break
title = rows[i]['title']
title = re.sub('<', '<', title)
title = re.sub('>', '>', title)
sub = rows[i]['sub']
sub = re.sub('<', '<', sub)
sub = re.sub('>', '>', sub)
div = div + '
'
i = i + 1
return render_template('index.html', logo = data['name'], rows = div, tn = 12, title = '최근 토론내역')
else:
return render_template('index.html', logo = data['name'], rows = '', tn = 12, title = '최근 토론내역')
@app.route('/recentblock')
def recentblock():
i = 0
div = '
'
curs.execute("select * from rb order by today desc limit 50")
rows = curs.fetchall()
if(rows):
while True:
try:
a = rows[i]
except:
div = div + '
'
break
why = rows[i]['why']
why = re.sub('<', '<', why)
why = re.sub('>', '>', why)
div = div + '
' + rows[i]['block'] + '
' + rows[i]['blocker'] + '
' + rows[i]['end'] + '
' + rows[i]['why'] + '
' + rows[i]['today'] + '
'
i = i + 1
return render_template('index.html', logo = data['name'], rows = div, tn = 20, title = '최근 차단내역')
else:
return render_template('index.html', logo = data['name'], rows = '', tn = 20, title = '최근 차단내역')
@app.route('/history/')
def gethistory(name = None):
i = 0
div = '
'
curs.execute("select * from history where title = '" + pymysql.escape_string(name) + "' order by date desc")
rows = curs.fetchall()
if(rows):
while True:
try:
a = rows[i]
except:
div = div + '
'
i = i + 1
return render_template('index.html', logo = data['name'], rows = div, tn = 5, title = name, page = parse.quote(name))
else:
return render_template('index.html', logo = data['name'], rows = '', tn = 5, title = name, page = parse.quote(name))
@app.route('/search', methods=['POST', 'GET'])
def search():
if(request.method == 'POST'):
return ''
else:
return ''
@app.route('/w/')
def w(name = None):
curs.execute("select * from data where title = '" + pymysql.escape_string(name) + "'")
rows = curs.fetchall()
if(rows):
if(rows[0]['acl'] == 'admin'):
acl = '(관리자)'
elif(rows[0]['acl'] == 'user'):
acl = '(유저)'
else:
acl = ''
enddata = namumark(name, rows[0]['data'])
m = re.search('
((?:(?!\/div>).)*)<\/div>', enddata)
if(m):
result = m.groups()
left = result[0]
else:
left = ''
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = enddata, license = data['license'], tn = 1, acl = acl, left = left)
else:
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = ' 문서 없음', license = data['license'], tn = 1)
@app.route('/w//redirect/')
def redirectw(name = None, redirect = None):
curs.execute("select * from data where title = '" + pymysql.escape_string(name) + "'")
rows = curs.fetchall()
if(rows):
newdata = rows[0]['data']
newdata = re.sub('^#(?:redirect|넘겨주기)\s(?P[^\n]*)', ' * \g 문서로 넘겨주기', newdata)
enddata = namumark(name, newdata)
m = re.search('
((?:(?!\/div>).)*)<\/div>', enddata)
if(m):
result = m.groups()
left = result[0]
else:
left = ''
test = redirect
redirect = re.sub('<', '<', redirect)
redirect = re.sub('>', '>', redirect)
redirect = re.sub('"', '"', redirect)
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = enddata, license = data['license'], tn = 1, redirect = '' + redirect + '에서 넘어 왔습니다.', left = left)
else:
test = redirect
redirect = re.sub('<', '<', redirect)
redirect = re.sub('>', '>', redirect)
redirect = re.sub('"', '"', redirect)
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = ' 문서 없음', license = data['license'], tn = 1, redirect = '' + redirect + '에서 넘어 왔습니다.')
@app.route('/w//r/')
def rew(name = None, number = None):
curs.execute("select * from history where title = '" + pymysql.escape_string(name) + "' and id = '" + number + "'")
rows = curs.fetchall()
if(rows):
enddata = namumark(name, rows[0]['data'])
m = re.search('
((?:(?!\/div>).)*)<\/div>', enddata)
if(m):
result = m.groups()
left = result[0]
else:
left = ''
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = enddata, license = data['license'], tn = 6, left = left)
else:
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = ' 문서 없음', license = data['license'], tn = 6)
@app.route('/w//raw/')
def reraw(name = None, number = None):
curs.execute("select * from history where title = '" + pymysql.escape_string(name) + "' and id = '" + number + "'")
rows = curs.fetchall()
if(rows):
enddata = re.sub("\n", ' ', rows[0]['data'])
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = enddata, license = data['license'])
else:
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = ' 문서 없음', license = data['license'])
@app.route('/raw/')
def raw(name = None):
curs.execute("select * from data where title = '" + pymysql.escape_string(name) + "'")
rows = curs.fetchall()
if(rows):
enddata = re.sub("\n", ' ', rows[0]['data'])
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = enddata, license = data['license'], tn = 7)
else:
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = '문서 없음', license = data['license'], tn = 7)
@app.route('/revert//r/', methods=['POST', 'GET'])
def revert(name = None, number = None):
if(request.method == 'POST'):
curs.execute("select * from history where title = '" + pymysql.escape_string(name) + "' and id = '" + number + "'")
rows = curs.fetchall()
if(rows):
ip = getip(request)
can = getcan(ip, name)
if(can == 1):
return ''
else:
today = getnow()
curs.execute("select * from data where title = '" + pymysql.escape_string(name) + "'")
row = curs.fetchall()
if(row):
leng = getleng(len(row[0]['data']), len(rows[0]['data']))
curs.execute("update data set data = '" + pymysql.escape_string(rows[0]['data']) + "' where title = '" + pymysql.escape_string(name) + "'")
conn.commit()
else:
leng = '+' + str(len(rows[0]['data']))
curs.execute("insert into data (title, data, acl) value ('" + pymysql.escape_string(name) + "', '" + pymysql.escape_string(rows[0]['data']) + "', '')")
conn.commit()
recent(name, ip, today, '문서를 ' + number + '판으로 되돌렸습니다.', leng)
history(name, rows[0]['data'], today, ip, '문서를 ' + number + '판으로 되돌렸습니다.', leng)
return ''
else:
return ''
else:
ip = getip(request)
can = getcan(ip, name)
if(can == 1):
return ''
else:
curs.execute("select * from history where title = '" + pymysql.escape_string(name) + "' and id = '" + number + "'")
rows = curs.fetchall()
if(rows):
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), r = parse.quote(number), tn = 13, plus = '정말 되돌리시겠습니까?')
else:
return ''
@app.route('/edit/', methods=['POST', 'GET'])
def edit(name = None):
if(request.method == 'POST'):
curs.execute("select * from data where title = '" + pymysql.escape_string(name) + "'")
rows = curs.fetchall()
if(rows):
ip = getip(request)
can = getcan(ip, name)
if(can == 1):
return ''
else:
today = getnow()
leng = getleng(len(rows[0]['data']), len(request.form["content"]))
recent(name, ip, today, request.form["send"], leng)
history(name, request.form["content"], today, ip, request.form["send"], leng)
curs.execute("update data set data = '" + pymysql.escape_string(request.form["content"]) + "' where title = '" + pymysql.escape_string(name) + "'")
conn.commit()
else:
ip = getip(request)
can = getcan(ip, name)
if(can == 1):
return ''
else:
today = getnow()
leng = '+' + str(len(request.form["content"]))
recent(name, ip, today, request.form["send"], leng)
history(name, request.form["content"], today, ip, request.form["send"], leng)
curs.execute("insert into data (title, data, acl) value ('" + pymysql.escape_string(name) + "', '" + pymysql.escape_string(request.form["content"]) + "', '')")
conn.commit()
return ''
else:
ip = getip(request)
can = getcan(ip, name)
if(can == 1):
return ''
else:
curs.execute("select * from data where title = '" + pymysql.escape_string(name) + "'")
rows = curs.fetchall()
if(rows):
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = rows[0]['data'], tn = 2)
else:
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = '', tn = 2)
@app.route('/preview/', methods=['POST'])
def preview(name = None):
ip = getip(request)
can = getcan(ip, name)
if(can == 1):
return ''
else:
newdata = request.form["content"]
newdata = re.sub('^#(?:redirect|넘겨주기)\s(?P[^\n]*)', ' * \g 문서로 넘겨주기', newdata)
enddata = namumark(name, newdata)
m = re.search('
((?:(?!\/div>).)*)<\/div>', enddata)
if(m):
result = m.groups()
left = result[0]
else:
left = ''
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = request.form["content"], tn = 2, preview = 1, enddata = enddata, left = left)
@app.route('/delete/', methods=['POST', 'GET'])
def delete(name = None):
if(request.method == 'POST'):
curs.execute("select * from data where title = '" + pymysql.escape_string(name) + "'")
rows = curs.fetchall()
if(rows):
ip = getip(request)
can = getcan(ip, name)
if(can == 1):
return ''
else:
today = getnow()
leng = '-' + str(len(rows[0]['data']))
recent(name, ip, today, '문서를 삭제 했습니다.', leng)
history(name, '', today, ip, '문서를 삭제 했습니다.', leng)
curs.execute("delete from data where title = '" + pymysql.escape_string(name) + "'")
conn.commit()
return ''
else:
return ''
else:
curs.execute("select * from data where title = '" + pymysql.escape_string(name) + "'")
rows = curs.fetchall()
if(rows):
ip = getip(request)
can = getcan(ip, name)
if(can == 1):
return ''
else:
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), tn = 8, plus = '정말 삭제 하시겠습니까?')
else:
return ''
@app.route('/move/', methods=['POST', 'GET'])
def move(name = None):
if(request.method == 'POST'):
curs.execute("select * from data where title = '" + pymysql.escape_string(name) + "'")
rows = curs.fetchall()
if(rows):
ip = getip(request)
can = getcan(ip, name)
if(can == 1):
return ''
else:
today = getnow()
leng = '0'
curs.execute("select * from history where title = '" + pymysql.escape_string(request.form["title"]) + "'")
row = curs.fetchall()
if(row):
return render_template('index.html', title = '이동 오류', logo = data['name'], data = '이동 하려는 곳에 문서가 이미 있습니다.')
else:
recent(name, ip, today, '문서를 ' + pymysql.escape_string(request.form["title"]) + ' 문서로 이동 했습니다.', leng)
history(name, rows[0]['data'], today, ip, '' + pymysql.escape_string(name) + ' 문서를 ' + pymysql.escape_string(request.form["title"]) + ' 문서로 이동 했습니다.', leng)
curs.execute("update data set title = '" + pymysql.escape_string(request.form["title"]) + "' where title = '" + pymysql.escape_string(name) + "'")
curs.execute("update history set title = '" + pymysql.escape_string(request.form["title"]) + "' where title = '" + pymysql.escape_string(name) + "'")
conn.commit()
return ''
else:
ip = getip(request)
can = getcan(ip, name)
if(can == 1):
return ''
else:
today = getnow()
leng = '0'
curs.execute("select * from history where title = '" + pymysql.escape_string(request.form["title"]) + "'")
row = curs.fetchall()
if(row):
return render_template('index.html', title = '이동 오류', logo = data['name'], data = '이동 하려는 곳에 문서가 이미 있습니다.')
else:
recent(name, ip, today, '문서를 ' + pymysql.escape_string(request.form["title"]) + ' 문서로 이동 했습니다.', leng)
history(name, rows[0]['data'], today, ip, '' + pymysql.escape_string(name) + ' 문서를 ' + pymysql.escape_string(request.form["title"]) + ' 문서로 이동 했습니다.', leng)
curs.execute("update history set title = '" + pymysql.escape_string(request.form["title"]) + "' where title = '" + pymysql.escape_string(name) + "'")
conn.commit()
return ''
else:
ip = getip(request)
can = getcan(ip, name)
if(can == 1):
return ''
else:
return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), tn = 9, plus = '정말 이동 하시겠습니까?')
@app.route('/setup')
def setup():
curs.execute("create table if not exists data(title text not null, data longtext not null, acl text not null)")
curs.execute("create table if not exists history(id text not null, title text not null, data longtext not null, date text not null, ip text not null, send text not null, leng text not null)")
curs.execute("create table if not exists rc(title text not null, date text not null, ip text not null, send text not null, leng text not null, back text not null)")
curs.execute("create table if not exists rd(title text not null, sub text not null, date text not null)")
curs.execute("create table if not exists user(id text not null, pw text not null, acl text not null)")
curs.execute("create table if not exists ban(block text not null, end text not null, why text not null, band text not null)")
curs.execute("create table if not exists topic(id text not null, title text not null, sub text not null, data longtext not null, date text not null, ip text not null, block text not null)")
curs.execute("create table if not exists stop(title text not null, sub text not null, close text not null)")
curs.execute("create table if not exists rb(block text not null, end text not null, today text not null, blocker text not null, why text not null)")
return render_template('index.html', title = '설치 완료', logo = data['name'], data = '문제 없었음')
@app.route('/other')
def other():
return render_template('index.html', title = '기타 메뉴', logo = data['name'], data = '
'
i = i + 1
return render_template('index.html', logo = data['name'], rows = div, tn = 4, title = '모든 문서')
else:
return render_template('index.html', logo = data['name'], rows = '', tn = 4, title = '모든 문서')
@app.route('/topic/', methods=['POST', 'GET'])
def topic(name = None):
if(request.method == 'POST'):
return ''
else:
div = '
'
i = 0
curs.execute("select * from topic where title = '" + pymysql.escape_string(name) + "' order by sub asc")
rows = curs.fetchall()
while True:
try:
a = rows[i]
except:
div = div + '
'
break
if(i == 0):
sub = rows[i]['sub']
curs.execute("select * from stop where title = '" + pymysql.escape_string(name) + "' and sub = '" + pymysql.escape_string(sub) + "' and close = 'O'")
row = curs.fetchall()
if(not row):
div = div + '
'
else:
if(not sub == rows[i]['sub']):
sub = rows[i]['sub']
curs.execute("select * from stop where title = '" + pymysql.escape_string(name) + "' and sub = '" + pymysql.escape_string(sub) + "' and close = 'O'")
row = curs.fetchall()
if(not row):
div = div + '
'
i = i + 1
return render_template('index.html', title = name, page = parse.quote(name), logo = data['name'], plus = div, tn = 10, list = 1)
@app.route('/topic//close')
def topicstoplist(name = None):
if(request.method == 'POST'):
return ''
else:
div = '
'
i = 0
curs.execute("select * from stop where title = '" + pymysql.escape_string(name) + "' and close = 'O' order by sub asc")
rows = curs.fetchall()
while True:
try:
a = rows[i]
except:
div = div + '
'
break
if(i == 0):
sub = rows[i]['sub']
div = div + '
'
i = i + 1
return render_template('index.html', title = name, page = parse.quote(name), logo = data['name'], plus = div, tn = 10)
@app.route('/topic//sub/', methods=['POST', 'GET'])
def sub(name = None, sub = None):
if(request.method == 'POST'):
curs.execute("select * from topic where title = '" + pymysql.escape_string(name) + "' and sub = '" + pymysql.escape_string(sub) + "' order by id+0 desc limit 1")
rows = curs.fetchall()
if(rows):
number = int(rows[0]['id']) + 1
else:
number = 1
ip = getip(request)
ban = getdiscuss(ip, name, sub)
if(ban == 1):
return ''
else:
curs.execute("select * from user where id = '" + pymysql.escape_string(ip) + "'")
rows = curs.fetchall()
if(rows):
if(rows[0]['acl'] == 'owner' or rows[0]['acl'] == 'admin'):
ip = ip + ' - Admin'
today = getnow()
discuss(name, sub, today)
curs.execute("insert into topic (id, title, sub, data, date, ip, block) value ('" + str(number) + "', '" + pymysql.escape_string(name) + "', '" + pymysql.escape_string(sub) + "', '" + pymysql.escape_string(request.form["content"]) + "', '" + today + "', '" + ip + "', '')")
conn.commit()
return ''
else:
ip = getip(request)
ban = getdiscuss(ip, name, sub)
div = '
'
i = 0
curs.execute("select * from topic where title = '" + pymysql.escape_string(name) + "' and sub = '" + pymysql.escape_string(sub) + "' order by id+0 asc")
rows = curs.fetchall()
while True:
try:
a = rows[i]
except:
div = div + '