|
@@ -97,7 +97,12 @@ def start():
|
|
|
try:
|
|
try:
|
|
|
db_ex("select * from other limit 1")
|
|
db_ex("select * from other limit 1")
|
|
|
except:
|
|
except:
|
|
|
- db_ex("create table other(name text, data longtext)")
|
|
|
|
|
|
|
+ db_ex("create table other(name text, data text)")
|
|
|
|
|
+
|
|
|
|
|
+ try:
|
|
|
|
|
+ db_ex("select * from alist limit 1")
|
|
|
|
|
+ except:
|
|
|
|
|
+ db_ex("create table alist(name text, acl text)")
|
|
|
|
|
|
|
|
conn = pymysql.connect(host = set_data['host'], user = set_data['user'], password = set_data['pw'], charset = 'utf8mb4')
|
|
conn = pymysql.connect(host = set_data['host'], user = set_data['user'], password = set_data['pw'], charset = 'utf8mb4')
|
|
|
curs = conn.cursor(pymysql.cursors.DictCursor)
|
|
curs = conn.cursor(pymysql.cursors.DictCursor)
|
|
@@ -126,18 +131,28 @@ def db_get():
|
|
|
|
|
|
|
|
start()
|
|
start()
|
|
|
|
|
|
|
|
-r_ver = '2.0.1'
|
|
|
|
|
|
|
+r_ver = '2.0.2'
|
|
|
|
|
|
|
|
db_ex('select data from other where name = "version"')
|
|
db_ex('select data from other where name = "version"')
|
|
|
version = db_get()
|
|
version = db_get()
|
|
|
if(version):
|
|
if(version):
|
|
|
t_ver = re.sub('\.', '', version[0]['data'])
|
|
t_ver = re.sub('\.', '', version[0]['data'])
|
|
|
r_t_ver = re.sub('\.', '', r_ver)
|
|
r_t_ver = re.sub('\.', '', r_ver)
|
|
|
- if(t_ver < r_t_ver):
|
|
|
|
|
|
|
+ if(int(t_ver) < int(r_t_ver)):
|
|
|
db_ex("update other set data = '" + r_ver + "' where name = 'version'")
|
|
db_ex("update other set data = '" + r_ver + "' where name = 'version'")
|
|
|
else:
|
|
else:
|
|
|
db_ex("insert into other (name, data) value ('version', '" + r_ver + "')")
|
|
db_ex("insert into other (name, data) value ('version', '" + r_ver + "')")
|
|
|
-db_com()
|
|
|
|
|
|
|
+
|
|
|
|
|
+db_ex("select * from user limit 1")
|
|
|
|
|
+ust = db_get()
|
|
|
|
|
+if(int(t_ver) < 202 or not ust):
|
|
|
|
|
+ db_ex("insert into alist (name, acl) value ('owner', 'owner')")
|
|
|
|
|
+ db_ex("insert into alist (name, acl) value ('admin', 'ban')")
|
|
|
|
|
+ db_ex("insert into alist (name, acl) value ('admin', 'mdel')")
|
|
|
|
|
+ db_ex("insert into alist (name, acl) value ('admin', 'toron')")
|
|
|
|
|
+ db_ex("insert into alist (name, acl) value ('admin', 'check')")
|
|
|
|
|
+ db_ex("insert into alist (name, acl) value ('admin', 'acl')")
|
|
|
|
|
+db_com()
|
|
|
|
|
|
|
|
@route('/upload', method=['GET', 'POST'])
|
|
@route('/upload', method=['GET', 'POST'])
|
|
|
def upload():
|
|
def upload():
|
|
@@ -199,31 +214,138 @@ def static(name = None):
|
|
|
def acl_list():
|
|
def acl_list():
|
|
|
session = request.environ.get('beaker.session')
|
|
session = request.environ.get('beaker.session')
|
|
|
data = '<div>'
|
|
data = '<div>'
|
|
|
- i = 1
|
|
|
|
|
|
|
+ i = 0
|
|
|
|
|
|
|
|
db_ex("select title, acl from data where acl = 'admin' or acl = 'user' order by acl desc")
|
|
db_ex("select title, acl from data where acl = 'admin' or acl = 'user' order by acl desc")
|
|
|
list_data = db_get()
|
|
list_data = db_get()
|
|
|
if(list_data):
|
|
if(list_data):
|
|
|
while(True):
|
|
while(True):
|
|
|
- try:
|
|
|
|
|
- a = list_data[i]
|
|
|
|
|
|
|
+ try:
|
|
|
|
|
+ if(list_data[i]['acl'] == 'admin'):
|
|
|
|
|
+ acl = '관리자'
|
|
|
|
|
+ else:
|
|
|
|
|
+ acl = '로그인'
|
|
|
|
|
+
|
|
|
|
|
+ data += '<li>' + str(i + 1) + '. <a href="/w/' + url_pas(list_data[i]['title']) + '">' + list_data[i]['title'] + '</a> (' + acl + ')</li>'
|
|
|
|
|
+
|
|
|
|
|
+ i += 1
|
|
|
except:
|
|
except:
|
|
|
break
|
|
break
|
|
|
-
|
|
|
|
|
- if(list_data[i]['acl'] == 'admin'):
|
|
|
|
|
- acl = '관리자'
|
|
|
|
|
- else:
|
|
|
|
|
- acl = '로그인'
|
|
|
|
|
|
|
+
|
|
|
|
|
+ data += '</div>'
|
|
|
|
|
+ else:
|
|
|
|
|
+ data = ''
|
|
|
|
|
|
|
|
- data += '<li>' + str(i) + '. <a href="/w/' + url_pas(list_data[i]['title']) + '">' + list_data[i]['title'] + '</a> (' + acl + ')</li>'
|
|
|
|
|
|
|
+ return template('index', custom = custom_css_user(session), license = set_data['license'], login = login_check(session), logo = set_data['name'], data = data, title = 'ACL 문서 목록')
|
|
|
|
|
+
|
|
|
|
|
+@route('/listacl')
|
|
|
|
|
+def list_acl():
|
|
|
|
|
+ session = request.environ.get('beaker.session')
|
|
|
|
|
+ data = '<div>'
|
|
|
|
|
+ i = 0
|
|
|
|
|
|
|
|
- i += 1
|
|
|
|
|
|
|
+ db_ex("select * from alist order by name desc")
|
|
|
|
|
+ list_data = db_get()
|
|
|
|
|
+ if(list_data):
|
|
|
|
|
+ while(True):
|
|
|
|
|
+ try:
|
|
|
|
|
+ if(list_data[i]['acl'] == 'ban'):
|
|
|
|
|
+ acl = '차단'
|
|
|
|
|
+ elif(list_data[i]['acl'] == 'mdel'):
|
|
|
|
|
+ acl = '많은 문서 삭제'
|
|
|
|
|
+ elif(list_data[i]['acl'] == 'toron'):
|
|
|
|
|
+ acl = '토론 관리'
|
|
|
|
|
+ elif(list_data[i]['acl'] == 'check'):
|
|
|
|
|
+ acl = '사용자 검사'
|
|
|
|
|
+ elif(list_data[i]['acl'] == 'acl'):
|
|
|
|
|
+ acl = '문서 ACL'
|
|
|
|
|
+ elif(list_data[i]['acl'] == 'hidel'):
|
|
|
|
|
+ acl = '역사 숨김'
|
|
|
|
|
+ elif(list_data[i]['acl'] == 'givmin'):
|
|
|
|
|
+ acl = '관리자 권한 부여'
|
|
|
|
|
+ elif(list_data[i]['acl'] == 'owner'):
|
|
|
|
|
+ acl = '소유자'
|
|
|
|
|
+
|
|
|
|
|
+ data += '<li>' + str(i + 1) + '. <a href="/adminplus/' + url_pas(list_data[i]['name']) + '">' + list_data[i]['name'] + '</a> (' + acl + ')</li>'
|
|
|
|
|
|
|
|
- data += '</div>'
|
|
|
|
|
|
|
+ i += 1
|
|
|
|
|
+ except:
|
|
|
|
|
+ break
|
|
|
|
|
+
|
|
|
|
|
+ data += '<br><a href="/manager/8">(새로 생성)</a></div>'
|
|
|
else:
|
|
else:
|
|
|
data = ''
|
|
data = ''
|
|
|
|
|
|
|
|
- return template('index', custom = custom_css_user(session), license = set_data['license'], login = login_check(session), logo = set_data['name'], data = data, title = 'ACL 문서 목록')
|
|
|
|
|
|
|
+ return template('index', custom = custom_css_user(session), license = set_data['license'], login = login_check(session), logo = set_data['name'], data = data, title = 'ACL 목록')
|
|
|
|
|
+
|
|
|
|
|
+@route('/adminplus/<name:path>', method=['POST', 'GET'])
|
|
|
|
|
+def admin_plus(name = None):
|
|
|
|
|
+ session = request.environ.get('beaker.session')
|
|
|
|
|
+ if(admin_check(None, session) == 1):
|
|
|
|
|
+ if(request.method == 'POST'):
|
|
|
|
|
+ db_ex("delete from alist where name = '" + db_pas(name) + "'")
|
|
|
|
|
+
|
|
|
|
|
+ if(request.forms.ban):
|
|
|
|
|
+ db_ex("insert into alist (name, acl) value ('" + db_pas(name) + "', 'ban')")
|
|
|
|
|
+ if(request.forms.mdel):
|
|
|
|
|
+ db_ex("insert into alist (name, acl) value ('" + db_pas(name) + "', 'mdel')")
|
|
|
|
|
+ if(request.forms.toron):
|
|
|
|
|
+ db_ex("insert into alist (name, acl) value ('" + db_pas(name) + "', 'toron')")
|
|
|
|
|
+ if(request.forms.check):
|
|
|
|
|
+ db_ex("insert into alist (name, acl) value ('" + db_pas(name) + "', 'check')")
|
|
|
|
|
+ if(request.forms.acl):
|
|
|
|
|
+ db_ex("insert into alist (name, acl) value ('" + db_pas(name) + "', 'acl')")
|
|
|
|
|
+ if(request.forms.hidel):
|
|
|
|
|
+ db_ex("insert into alist (name, acl) value ('" + db_pas(name) + "', 'hidel')")
|
|
|
|
|
+ if(request.forms.givmin):
|
|
|
|
|
+ db_ex("insert into alist (name, acl) value ('" + db_pas(name) + "', 'givmin')")
|
|
|
|
|
+ if(request.forms.owner):
|
|
|
|
|
+ db_ex("insert into alist (name, acl) value ('" + db_pas(name) + "', 'owner')")
|
|
|
|
|
+
|
|
|
|
|
+ db_com()
|
|
|
|
|
+ return redirect('/')
|
|
|
|
|
+ else:
|
|
|
|
|
+ db_ex('select acl from alist where name = "' + db_pas(name) + '"')
|
|
|
|
|
+ test = db_get()
|
|
|
|
|
+
|
|
|
|
|
+ list = ''
|
|
|
|
|
+ exist_list = ['', '', '', '', '', '', '', '', '']
|
|
|
|
|
+
|
|
|
|
|
+ i = 0
|
|
|
|
|
+ while(True):
|
|
|
|
|
+ try:
|
|
|
|
|
+ if(test[i]['acl'] == 'ban'):
|
|
|
|
|
+ exist_list[0] = 'checked="checked"'
|
|
|
|
|
+ elif(test[i]['acl'] == 'mdel'):
|
|
|
|
|
+ exist_list[1] = 'checked="checked"'
|
|
|
|
|
+ elif(test[i]['acl'] == 'toron'):
|
|
|
|
|
+ exist_list[2] = 'checked="checked"'
|
|
|
|
|
+ elif(test[i]['acl'] == 'check'):
|
|
|
|
|
+ exist_list[3] = 'checked="checked"'
|
|
|
|
|
+ elif(test[i]['acl'] == 'acl'):
|
|
|
|
|
+ exist_list[4] = 'checked="checked"'
|
|
|
|
|
+ elif(test[i]['acl'] == 'hidel'):
|
|
|
|
|
+ exist_list[5] = 'checked="checked"'
|
|
|
|
|
+ elif(test[i]['acl'] == 'givmin'):
|
|
|
|
|
+ exist_list[6] = 'checked="checked"'
|
|
|
|
|
+ elif(test[i]['acl'] == 'owner'):
|
|
|
|
|
+ exist_list[7] = 'checked="checked"'
|
|
|
|
|
+ i += 1
|
|
|
|
|
+ except:
|
|
|
|
|
+ break
|
|
|
|
|
+
|
|
|
|
|
+ list += '<li><input type="checkbox" name="ban" ' + exist_list[0] + '> 차단</li>'
|
|
|
|
|
+ list += '<li><input type="checkbox" name="mdel" ' + exist_list[1] + '> 많은 문서 삭제</li>'
|
|
|
|
|
+ list += '<li><input type="checkbox" name="toron" ' + exist_list[2] + '> 토론 관리</li>'
|
|
|
|
|
+ list += '<li><input type="checkbox" name="check" ' + exist_list[3] + '> 사용자 검사</li>'
|
|
|
|
|
+ list += '<li><input type="checkbox" name="acl" ' + exist_list[4] + '> 문서 ACL</li>'
|
|
|
|
|
+ list += '<li><input type="checkbox" name="hidel" ' + exist_list[5] + '> 역사 숨김</li>'
|
|
|
|
|
+ list += '<li><input type="checkbox" name="givmin" ' + exist_list[6] + '> 관리자 권한 부여</li>'
|
|
|
|
|
+ list += '<li><input type="checkbox" name="owner" ' + exist_list[7] + '> 소유자</li>'
|
|
|
|
|
+
|
|
|
|
|
+ return template('index', custom = custom_css_user(session), license = set_data['license'], login = login_check(session), title = '관리 그룹 추가', logo = set_data['name'], data = '<form id="usrform" method="POST" action="/adminplus/' + url_pas(name) + '">' + list + '<div class="form-actions"><button class="btn btn-primary" type="submit">저장</button></div></form>')
|
|
|
|
|
+ else:
|
|
|
|
|
+ return redirect('/error/3')
|
|
|
|
|
|
|
|
@route('/adminlist')
|
|
@route('/adminlist')
|
|
|
def admin_list():
|
|
def admin_list():
|
|
@@ -265,6 +387,7 @@ def admin_list():
|
|
|
def recent_changes():
|
|
def recent_changes():
|
|
|
session = request.environ.get('beaker.session')
|
|
session = request.environ.get('beaker.session')
|
|
|
i = 0
|
|
i = 0
|
|
|
|
|
+ ydmin = admin_check(1, session)
|
|
|
div = '<div><table style="width: 100%;"><tbody><tr><td style="text-align: center;width:33.33%;">문서명</td><td style="text-align: center;width:33.33%;">기여자</td><td style="text-align: center;width:33.33%;">시간</td></tr>'
|
|
div = '<div><table style="width: 100%;"><tbody><tr><td style="text-align: center;width:33.33%;">문서명</td><td style="text-align: center;width:33.33%;">기여자</td><td style="text-align: center;width:33.33%;">시간</td></tr>'
|
|
|
|
|
|
|
|
db_ex("select id, title, date, ip, send, leng from history order by date desc limit 50")
|
|
db_ex("select id, title, date, ip, send, leng from history order by date desc limit 50")
|
|
@@ -294,7 +417,7 @@ def recent_changes():
|
|
|
else:
|
|
else:
|
|
|
leng = '<span style="color:gray;">' + rows[i]['leng'] + '</span>'
|
|
leng = '<span style="color:gray;">' + rows[i]['leng'] + '</span>'
|
|
|
|
|
|
|
|
- if(admin_check(session) == 1):
|
|
|
|
|
|
|
+ if(ydmin == 1):
|
|
|
db_ex("select * from ban where block = '" + db_pas(rows[i]['ip']) + "'")
|
|
db_ex("select * from ban where block = '" + db_pas(rows[i]['ip']) + "'")
|
|
|
row = db_get()
|
|
row = db_get()
|
|
|
if(row):
|
|
if(row):
|
|
@@ -304,15 +427,7 @@ def recent_changes():
|
|
|
else:
|
|
else:
|
|
|
ban = ''
|
|
ban = ''
|
|
|
|
|
|
|
|
- if(re.search('\.', rows[i]['ip'])):
|
|
|
|
|
- ip = rows[i]['ip'] + ' <a href="/record/' + url_pas(rows[i]['ip']) + '/n/1">(기록)</a>'
|
|
|
|
|
- else:
|
|
|
|
|
- db_ex("select title from data where title = '사용자:" + db_pas(rows[i]['ip']) + "'")
|
|
|
|
|
- row = db_get()
|
|
|
|
|
- if(row):
|
|
|
|
|
- ip = '<a href="/w/' + url_pas('사용자:' + rows[i]['ip']) + '">' + rows[i]['ip'] + '</a> <a href="/record/' + url_pas(rows[i]['ip']) + '/n/1">(기록)</a>'
|
|
|
|
|
- else:
|
|
|
|
|
- ip = '<a class="not_thing" href="/w/' + url_pas('사용자:' + rows[i]['ip']) + '">' + rows[i]['ip'] + '</a> <a href="/record/' + url_pas(rows[i]['ip']) + '/n/1">(기록)</a>'
|
|
|
|
|
|
|
+ ip = ip_pas(rows[i]['ip'], None)
|
|
|
|
|
|
|
|
if((int(rows[i]['id']) - 1) == 0):
|
|
if((int(rows[i]['id']) - 1) == 0):
|
|
|
revert = ''
|
|
revert = ''
|
|
@@ -333,7 +448,7 @@ def recent_changes():
|
|
|
@route('/history/<name:path>/r/<num:int>/hidden')
|
|
@route('/history/<name:path>/r/<num:int>/hidden')
|
|
|
def history_hidden(name = None, num = None):
|
|
def history_hidden(name = None, num = None):
|
|
|
session = request.environ.get('beaker.session')
|
|
session = request.environ.get('beaker.session')
|
|
|
- if(owner_check(session) == 1):
|
|
|
|
|
|
|
+ if(admin_check(6, session) == 1):
|
|
|
db_ex("select * from hidhi where title = '" + db_pas(name) + "' and re = '" + db_pas(str(num)) + "'")
|
|
db_ex("select * from hidhi where title = '" + db_pas(name) + "' and re = '" + db_pas(str(num)) + "'")
|
|
|
exist = db_get()
|
|
exist = db_get()
|
|
|
if(exist):
|
|
if(exist):
|
|
@@ -352,6 +467,7 @@ def user_record(name = None, num = None):
|
|
|
session = request.environ.get('beaker.session')
|
|
session = request.environ.get('beaker.session')
|
|
|
v = num * 50
|
|
v = num * 50
|
|
|
i = v - 50
|
|
i = v - 50
|
|
|
|
|
+ ydmin = admin_check(1, session)
|
|
|
div = '<div><table style="width: 100%;"><tbody><tr><td style="text-align: center;width:33.33%;">문서명</td><td style="text-align: center;width:33.33%;">기여자</td><td style="text-align: center;width:33.33%;">시간</td></tr>'
|
|
div = '<div><table style="width: 100%;"><tbody><tr><td style="text-align: center;width:33.33%;">문서명</td><td style="text-align: center;width:33.33%;">기여자</td><td style="text-align: center;width:33.33%;">시간</td></tr>'
|
|
|
|
|
|
|
|
db_ex("select * from history where ip = '" + db_pas(name) + "' order by date desc")
|
|
db_ex("select * from history where ip = '" + db_pas(name) + "' order by date desc")
|
|
@@ -379,7 +495,7 @@ def user_record(name = None, num = None):
|
|
|
else:
|
|
else:
|
|
|
leng = '<span style="color:gray;">' + rows[i]['leng'] + '</span>'
|
|
leng = '<span style="color:gray;">' + rows[i]['leng'] + '</span>'
|
|
|
|
|
|
|
|
- if(admin_check(session) == 1):
|
|
|
|
|
|
|
+ if(ydmin == 1):
|
|
|
db_ex("select * from ban where block = '" + db_pas(rows[i]['ip']) + "'")
|
|
db_ex("select * from ban where block = '" + db_pas(rows[i]['ip']) + "'")
|
|
|
row = db_get()
|
|
row = db_get()
|
|
|
if(row):
|
|
if(row):
|
|
@@ -389,15 +505,7 @@ def user_record(name = None, num = None):
|
|
|
else:
|
|
else:
|
|
|
ban = ''
|
|
ban = ''
|
|
|
|
|
|
|
|
- if(re.search('\.', rows[i]['ip'])):
|
|
|
|
|
- ip = rows[i]['ip']
|
|
|
|
|
- else:
|
|
|
|
|
- db_ex("select title from data where title = '사용자:" + db_pas(rows[i]['ip']) + "'")
|
|
|
|
|
- row = db_get()
|
|
|
|
|
- if(row):
|
|
|
|
|
- ip = '<a href="/w/' + url_pas('사용자:' + rows[i]['ip']) + '">' + rows[i]['ip'] + '</a>'
|
|
|
|
|
- else:
|
|
|
|
|
- ip = '<a class="not_thing" href="/w/' + url_pas('사용자:' + rows[i]['ip']) + '">' + rows[i]['ip'] + '</a>'
|
|
|
|
|
|
|
+ ip = ip_pas(rows[i]['ip'], None)
|
|
|
|
|
|
|
|
if((int(rows[i]['id']) - 1) == 0):
|
|
if((int(rows[i]['id']) - 1) == 0):
|
|
|
revert = ''
|
|
revert = ''
|
|
@@ -433,6 +541,7 @@ def user_log(number = None):
|
|
|
i = number * 50
|
|
i = number * 50
|
|
|
j = i - 50
|
|
j = i - 50
|
|
|
list_data = ''
|
|
list_data = ''
|
|
|
|
|
+ ydmin = admin_check(1, session)
|
|
|
|
|
|
|
|
db_ex("select * from user")
|
|
db_ex("select * from user")
|
|
|
user_list = db_get()
|
|
user_list = db_get()
|
|
@@ -445,7 +554,7 @@ def user_log(number = None):
|
|
|
list_data = list_data + '<br><a href="/userlog/n/' + str(number - 1) + '">(이전)'
|
|
list_data = list_data + '<br><a href="/userlog/n/' + str(number - 1) + '">(이전)'
|
|
|
break
|
|
break
|
|
|
|
|
|
|
|
- if(admin_check(session) == 1):
|
|
|
|
|
|
|
+ if(ydmin == 1):
|
|
|
db_ex("select * from ban where block = '" + db_pas(user_list[j]['id']) + "'")
|
|
db_ex("select * from ban where block = '" + db_pas(user_list[j]['id']) + "'")
|
|
|
ban_exist = db_get()
|
|
ban_exist = db_get()
|
|
|
if(ban_exist):
|
|
if(ban_exist):
|
|
@@ -455,12 +564,7 @@ def user_log(number = None):
|
|
|
else:
|
|
else:
|
|
|
ban_button = ''
|
|
ban_button = ''
|
|
|
|
|
|
|
|
- db_ex("select title from data where title = '사용자:" + db_pas(user_list[j]['id']) + "'")
|
|
|
|
|
- data = db_get()
|
|
|
|
|
- if(data):
|
|
|
|
|
- ip = '<a href="/w/' + url_pas('사용자:' + user_list[j]['id']) + '">' + user_list[j]['id'] + '</a> <a href="/record/' + url_pas(user_list[j]['id']) + '/n/1">(기록)</a>'
|
|
|
|
|
- else:
|
|
|
|
|
- ip = '<a class="not_thing" href="/w/' + url_pas('사용자:' + user_list[j]['id']) + '">' + user_list[j]['id'] + '</a> <a href="/record/' + url_pas(user_list[j]['id']) + '/n/1">(기록)</a>'
|
|
|
|
|
|
|
+ ip = ip_pas(user_list[j]['id'], None)
|
|
|
|
|
|
|
|
list_data = list_data + '<li>' + str(j + 1) + '. ' + ip + ban_button + '</li>'
|
|
list_data = list_data + '<li>' + str(j + 1) + '. ' + ip + ban_button + '</li>'
|
|
|
|
|
|
|
@@ -480,7 +584,7 @@ def user_log(number = None):
|
|
|
@route('/backreset')
|
|
@route('/backreset')
|
|
|
def backlink_reset():
|
|
def backlink_reset():
|
|
|
session = request.environ.get('beaker.session')
|
|
session = request.environ.get('beaker.session')
|
|
|
- if(owner_check(session) == 1):
|
|
|
|
|
|
|
+ if(admin_check(None, session) == 1):
|
|
|
i = 0
|
|
i = 0
|
|
|
|
|
|
|
|
db_ex("delete from back")
|
|
db_ex("delete from back")
|
|
@@ -673,6 +777,8 @@ def history_view(name = None, num = None):
|
|
|
select = ''
|
|
select = ''
|
|
|
v = num * 50
|
|
v = num * 50
|
|
|
i = v - 50
|
|
i = v - 50
|
|
|
|
|
+ ydmin = admin_check(1, session)
|
|
|
|
|
+ zdmin = admin_check(6, session)
|
|
|
div = '<div><table style="width: 100%;"><tbody><tr><td style="text-align: center;width:33.33%;">판</td><td style="text-align: center;width:33.33%;">기여자</td><td style="text-align: center;width:33.33%;">시간</td></tr>'
|
|
div = '<div><table style="width: 100%;"><tbody><tr><td style="text-align: center;width:33.33%;">판</td><td style="text-align: center;width:33.33%;">기여자</td><td style="text-align: center;width:33.33%;">시간</td></tr>'
|
|
|
|
|
|
|
|
db_ex("select send, leng, ip, date, title, id from history where title = '" + db_pas(name) + "' order by id + 0 desc")
|
|
db_ex("select send, leng, ip, date, title, id from history where title = '" + db_pas(name) + "' order by id + 0 desc")
|
|
@@ -698,17 +804,9 @@ def history_view(name = None, num = None):
|
|
|
else:
|
|
else:
|
|
|
leng = '<span style="color:gray;">' + rows[i]['leng'] + '</span>'
|
|
leng = '<span style="color:gray;">' + rows[i]['leng'] + '</span>'
|
|
|
|
|
|
|
|
- if(re.search("\.", rows[i]["ip"])):
|
|
|
|
|
- ip = rows[i]["ip"] + ' <a href="/record/' + url_pas(rows[i]["ip"]) + '/n/1">(기록)</a>'
|
|
|
|
|
- else:
|
|
|
|
|
- db_ex("select title from data where title = '사용자:" + db_pas(rows[i]['ip']) + "'")
|
|
|
|
|
- row = db_get()
|
|
|
|
|
- if(row):
|
|
|
|
|
- ip = '<a href="/w/' + url_pas('사용자:' + rows[i]['ip']) + '">' + rows[i]['ip'] + '</a> <a href="/record/' + url_pas(rows[i]["ip"]) + '/n/1">(기록)</a>'
|
|
|
|
|
- else:
|
|
|
|
|
- ip = '<a class="not_thing" href="/w/' + url_pas('사용자:' + rows[i]['ip']) + '">' + rows[i]['ip'] + '</a> <a href="/record/' + url_pas(rows[i]["ip"]) + '/n/1">(기록)</a>'
|
|
|
|
|
|
|
+ ip = ip_pas(rows[i]['ip'], None)
|
|
|
|
|
|
|
|
- if(admin_check(session) == 1):
|
|
|
|
|
|
|
+ if(ydmin == 1):
|
|
|
db_ex("select * from user where id = '" + db_pas(rows[i]['ip']) + "'")
|
|
db_ex("select * from user where id = '" + db_pas(rows[i]['ip']) + "'")
|
|
|
row = db_get()
|
|
row = db_get()
|
|
|
if(row):
|
|
if(row):
|
|
@@ -729,29 +827,15 @@ def history_view(name = None, num = None):
|
|
|
else:
|
|
else:
|
|
|
ban = ' <a href="/ban/' + url_pas(rows[i]['ip']) + '">(차단)</a>'
|
|
ban = ' <a href="/ban/' + url_pas(rows[i]['ip']) + '">(차단)</a>'
|
|
|
|
|
|
|
|
- if(owner_check(session) == 1):
|
|
|
|
|
- db_ex("select * from hidhi where title = '" + db_pas(name) + "' and re = '" + db_pas(rows[i]['id']) + "'")
|
|
|
|
|
- row = db_get()
|
|
|
|
|
- if(row):
|
|
|
|
|
- ip = ip + ' (숨김)'
|
|
|
|
|
- hidden = ' <a href="/history/' + url_pas(name) + '/r/' + rows[i]['id'] + '/hidden">(공개)'
|
|
|
|
|
- else:
|
|
|
|
|
- hidden = ' <a href="/history/' + url_pas(name) + '/r/' + rows[i]['id'] + '/hidden">(숨김)'
|
|
|
|
|
|
|
+ if(zdmin == 1):
|
|
|
|
|
+ db_ex("select * from hidhi where title = '" + db_pas(name) + "' and re = '" + db_pas(rows[i]['id']) + "'")
|
|
|
|
|
+ row = db_get()
|
|
|
|
|
+ if(row):
|
|
|
|
|
+ ip += ' (숨김)'
|
|
|
|
|
+ hidden = ' <a href="/history/' + url_pas(name) + '/r/' + rows[i]['id'] + '/hidden">(공개)'
|
|
|
else:
|
|
else:
|
|
|
- db_ex("select * from hidhi where title = '" + db_pas(name) + "' and re = '" + db_pas(rows[i]['id']) + "'")
|
|
|
|
|
- row = db_get()
|
|
|
|
|
- if(row):
|
|
|
|
|
- ip = '숨김'
|
|
|
|
|
- hidden = ''
|
|
|
|
|
- send = '숨김'
|
|
|
|
|
- ban = ''
|
|
|
|
|
- style = 'display:none;'
|
|
|
|
|
- v += 1
|
|
|
|
|
- else:
|
|
|
|
|
- hidden = ''
|
|
|
|
|
|
|
+ hidden = ' <a href="/history/' + url_pas(name) + '/r/' + rows[i]['id'] + '/hidden">(숨김)'
|
|
|
else:
|
|
else:
|
|
|
- ban = ''
|
|
|
|
|
-
|
|
|
|
|
db_ex("select * from hidhi where title = '" + db_pas(name) + "' and re = '" + db_pas(rows[i]['id']) + "'")
|
|
db_ex("select * from hidhi where title = '" + db_pas(name) + "' and re = '" + db_pas(rows[i]['id']) + "'")
|
|
|
row = db_get()
|
|
row = db_get()
|
|
|
if(row):
|
|
if(row):
|
|
@@ -762,7 +846,7 @@ def history_view(name = None, num = None):
|
|
|
style = 'display:none;'
|
|
style = 'display:none;'
|
|
|
v += 1
|
|
v += 1
|
|
|
else:
|
|
else:
|
|
|
- hidden = ''
|
|
|
|
|
|
|
+ hidden = ''
|
|
|
|
|
|
|
|
div += '<tr style="' + style + '"><td style="text-align: center;width:33.33%;">' + rows[i]['id'] + '판</a> <a href="/w/' + url_pas(rows[i]['title']) + '/r/' + rows[i]['id'] + '">(w)</a> <a href="/w/' + url_pas(rows[i]['title']) + '/raw/' + rows[i]['id'] + '">(Raw)</a> <a href="/revert/' + url_pas(rows[i]['title']) + '/r/' + rows[i]['id'] + '">(되돌리기)</a> (' + leng + ')</td><td style="text-align: center;width:33.33%;">' + ip + ban + hidden + '</td><td style="text-align: center;width:33.33%;">' + rows[i]['date'] + '</td></tr><tr><td colspan="3" style="text-align: center;width:100%;">' + send + '</td></tr>'
|
|
div += '<tr style="' + style + '"><td style="text-align: center;width:33.33%;">' + rows[i]['id'] + '판</a> <a href="/w/' + url_pas(rows[i]['title']) + '/r/' + rows[i]['id'] + '">(w)</a> <a href="/w/' + url_pas(rows[i]['title']) + '/raw/' + rows[i]['id'] + '">(Raw)</a> <a href="/revert/' + url_pas(rows[i]['title']) + '/r/' + rows[i]['id'] + '">(되돌리기)</a> (' + leng + ')</td><td style="text-align: center;width:33.33%;">' + ip + ban + hidden + '</td><td style="text-align: center;width:33.33%;">' + rows[i]['date'] + '</td></tr><tr><td colspan="3" style="text-align: center;width:100%;">' + send + '</td></tr>'
|
|
|
|
|
|
|
@@ -884,7 +968,7 @@ def old_view(name = None, num = None):
|
|
|
db_ex("select * from hidhi where title = '" + db_pas(name) + "' and re = '" + db_pas(str(num)) + "'")
|
|
db_ex("select * from hidhi where title = '" + db_pas(name) + "' and re = '" + db_pas(str(num)) + "'")
|
|
|
row = db_get()
|
|
row = db_get()
|
|
|
if(row):
|
|
if(row):
|
|
|
- if(owner_check(session) == 1):
|
|
|
|
|
|
|
+ if(admin_check(6, session) == 1):
|
|
|
db_ex("select * from history where title = '" + db_pas(name) + "' and id = '" + str(num) + "'")
|
|
db_ex("select * from history where title = '" + db_pas(name) + "' and id = '" + str(num) + "'")
|
|
|
rows = db_get()
|
|
rows = db_get()
|
|
|
if(rows):
|
|
if(rows):
|
|
@@ -925,7 +1009,7 @@ def old_raw(name = None, num = None):
|
|
|
db_ex("select * from hidhi where title = '" + db_pas(name) + "' and re = '" + db_pas(str(num)) + "'")
|
|
db_ex("select * from hidhi where title = '" + db_pas(name) + "' and re = '" + db_pas(str(num)) + "'")
|
|
|
row = db_get()
|
|
row = db_get()
|
|
|
if(row):
|
|
if(row):
|
|
|
- if(owner_check(session) == 1):
|
|
|
|
|
|
|
+ if(admin_check(6, session) == 1):
|
|
|
db_ex("select * from history where title = '" + db_pas(name) + "' and id = '" + str(num) + "'")
|
|
db_ex("select * from history where title = '" + db_pas(name) + "' and id = '" + str(num) + "'")
|
|
|
rows = db_get()
|
|
rows = db_get()
|
|
|
if(rows):
|
|
if(rows):
|
|
@@ -981,7 +1065,7 @@ def revert(name = None, num = None):
|
|
|
db_ex("select * from hidhi where title = '" + db_pas(name) + "' and re = '" + db_pas(str(num)) + "'")
|
|
db_ex("select * from hidhi where title = '" + db_pas(name) + "' and re = '" + db_pas(str(num)) + "'")
|
|
|
row = db_get()
|
|
row = db_get()
|
|
|
if(row):
|
|
if(row):
|
|
|
- if(owner_check(session) == 1):
|
|
|
|
|
|
|
+ if(admin_check(6, session) == 1):
|
|
|
db_ex("select * from history where title = '" + db_pas(name) + "' and id = '" + str(num) + "'")
|
|
db_ex("select * from history where title = '" + db_pas(name) + "' and id = '" + str(num) + "'")
|
|
|
rows = db_get()
|
|
rows = db_get()
|
|
|
if(rows):
|
|
if(rows):
|
|
@@ -1037,7 +1121,7 @@ def revert(name = None, num = None):
|
|
|
db_ex("select * from hidhi where title = '" + db_pas(name) + "' and re = '" + db_pas(str(num)) + "'")
|
|
db_ex("select * from hidhi where title = '" + db_pas(name) + "' and re = '" + db_pas(str(num)) + "'")
|
|
|
row = db_get()
|
|
row = db_get()
|
|
|
if(row):
|
|
if(row):
|
|
|
- if(owner_check(session) == 1):
|
|
|
|
|
|
|
+ if(admin_check(6, session) == 1):
|
|
|
if(can == 1):
|
|
if(can == 1):
|
|
|
return redirect('/ban')
|
|
return redirect('/ban')
|
|
|
else:
|
|
else:
|
|
@@ -1065,7 +1149,7 @@ def many_del():
|
|
|
session = request.environ.get('beaker.session')
|
|
session = request.environ.get('beaker.session')
|
|
|
today = get_time()
|
|
today = get_time()
|
|
|
ip = ip_check(session)
|
|
ip = ip_check(session)
|
|
|
- if(admin_check(session) == 1):
|
|
|
|
|
|
|
+ if(admin_check(2, session) == 1):
|
|
|
if(request.method == 'POST'):
|
|
if(request.method == 'POST'):
|
|
|
data = request.forms.content + '\r\n'
|
|
data = request.forms.content + '\r\n'
|
|
|
while(True):
|
|
while(True):
|
|
@@ -1356,7 +1440,7 @@ def other():
|
|
|
def manager(num = None):
|
|
def manager(num = None):
|
|
|
session = request.environ.get('beaker.session')
|
|
session = request.environ.get('beaker.session')
|
|
|
if(num == 1):
|
|
if(num == 1):
|
|
|
- return template('index', custom = custom_css_user(session), license = set_data['license'], login = login_check(session), title = '관리자 메뉴', logo = set_data['name'], data = '<h2 style="margin-top: 0px;">관리자 및 소유자</h2><li><a href="/manager/2">문서 ACL</a></li><li><a href="/manager/3">사용자 체크</a></li><li><a href="/manager/4">사용자 차단</a></li><h2>소유자</h2><li><a href="/backreset">모든 역링크 재 생성</a></li><li><a href="/manager/5">관리자 권한 주기</a></li><li><a href="/manydel">많은 문서 삭제</a></li><h2>기타</h2><li>이 메뉴에 없는 기능은 해당 문서의 역사나 토론에서 바로 사용 가능함</li>')
|
|
|
|
|
|
|
+ return template('index', custom = custom_css_user(session), license = set_data['license'], login = login_check(session), title = '관리자 메뉴', logo = set_data['name'], data = '<h2 style="margin-top: 0px;">목록</h2><li><a href="/manager/2">문서 ACL</a></li><li><a href="/manager/3">사용자 체크</a></li><li><a href="/manager/4">사용자 차단</a></li><li><a href="/manager/5">관리자 권한 주기</a></li><li><a href="/manydel">많은 문서 삭제</a></li><h2>소유자</h2><li><a href="/backreset">모든 역링크 재 생성</a></li><li><a href="/manager/8">새로운 관리 그룹 생성</a></li><h2>기타</h2><li>이 메뉴에 없는 기능은 해당 문서의 역사나 토론에서 바로 사용 가능함</li>')
|
|
|
elif(num == 2):
|
|
elif(num == 2):
|
|
|
if(request.method == 'POST'):
|
|
if(request.method == 'POST'):
|
|
|
return redirect('/acl/' + url_pas(request.forms.name))
|
|
return redirect('/acl/' + url_pas(request.forms.name))
|
|
@@ -1387,6 +1471,11 @@ def manager(num = None):
|
|
|
return redirect('/user/' + url_pas(request.forms.name) + '/topic/1')
|
|
return redirect('/user/' + url_pas(request.forms.name) + '/topic/1')
|
|
|
else:
|
|
else:
|
|
|
return template('index', custom = custom_css_user(session), license = set_data['license'], login = login_check(session), title = '토론 기록 이동', logo = set_data['name'], data = '<form id="usrform" method="POST" action="/manager/7"><input name="name" type="text"><br><br><button class="btn btn-primary" type="submit">이동</button></form>')
|
|
return template('index', custom = custom_css_user(session), license = set_data['license'], login = login_check(session), title = '토론 기록 이동', logo = set_data['name'], data = '<form id="usrform" method="POST" action="/manager/7"><input name="name" type="text"><br><br><button class="btn btn-primary" type="submit">이동</button></form>')
|
|
|
|
|
+ elif(num == 8):
|
|
|
|
|
+ if(request.method == 'POST'):
|
|
|
|
|
+ return redirect('/adminplus/' + url_pas(request.forms.name))
|
|
|
|
|
+ else:
|
|
|
|
|
+ return template('index', custom = custom_css_user(session), license = set_data['license'], login = login_check(session), title = '그룹 생성 이동', logo = set_data['name'], data = '<form id="usrform" method="POST" action="/manager/8"><input name="name" type="text"><br><br><button class="btn btn-primary" type="submit">이동</button></form>')
|
|
|
else:
|
|
else:
|
|
|
return redirect('/')
|
|
return redirect('/')
|
|
|
|
|
|
|
@@ -1433,7 +1522,7 @@ def title_index():
|
|
|
@route('/topic/<name:path>/sub/<sub:path>/b/<num:int>')
|
|
@route('/topic/<name:path>/sub/<sub:path>/b/<num:int>')
|
|
|
def topic_block(name = None, sub = None, num = None):
|
|
def topic_block(name = None, sub = None, num = None):
|
|
|
session = request.environ.get('beaker.session')
|
|
session = request.environ.get('beaker.session')
|
|
|
- if(admin_check(session) == 1):
|
|
|
|
|
|
|
+ if(admin_check(3, session) == 1):
|
|
|
db_ex("select * from topic where title = '" + db_pas(name) + "' and sub = '" + db_pas(sub) + "' and id = '" + str(num) + "'")
|
|
db_ex("select * from topic where title = '" + db_pas(name) + "' and sub = '" + db_pas(sub) + "' and id = '" + str(num) + "'")
|
|
|
block = db_get()
|
|
block = db_get()
|
|
|
if(block):
|
|
if(block):
|
|
@@ -1454,7 +1543,7 @@ def topic_block(name = None, sub = None, num = None):
|
|
|
@route('/topic/<name:path>/sub/<sub:path>/notice/<num:int>')
|
|
@route('/topic/<name:path>/sub/<sub:path>/notice/<num:int>')
|
|
|
def topic_top(name = None, sub = None, num = None):
|
|
def topic_top(name = None, sub = None, num = None):
|
|
|
session = request.environ.get('beaker.session')
|
|
session = request.environ.get('beaker.session')
|
|
|
- if(admin_check(session) == 1):
|
|
|
|
|
|
|
+ if(admin_check(3, session) == 1):
|
|
|
db_ex("select * from topic where title = '" + db_pas(name) + "' and sub = '" + db_pas(sub) + "' and id = '" + str(num) + "'")
|
|
db_ex("select * from topic where title = '" + db_pas(name) + "' and sub = '" + db_pas(sub) + "' and id = '" + str(num) + "'")
|
|
|
topic_data = db_get()
|
|
topic_data = db_get()
|
|
|
if(topic_data):
|
|
if(topic_data):
|
|
@@ -1477,7 +1566,7 @@ def topic_top(name = None, sub = None, num = None):
|
|
|
@route('/topic/<name:path>/sub/<sub:path>/stop')
|
|
@route('/topic/<name:path>/sub/<sub:path>/stop')
|
|
|
def topic_stop(name = None, sub = None):
|
|
def topic_stop(name = None, sub = None):
|
|
|
session = request.environ.get('beaker.session')
|
|
session = request.environ.get('beaker.session')
|
|
|
- if(admin_check(session) == 1):
|
|
|
|
|
|
|
+ if(admin_check(3, session) == 1):
|
|
|
ip = ip_check(session)
|
|
ip = ip_check(session)
|
|
|
|
|
|
|
|
db_ex("select * from topic where title = '" + db_pas(name) + "' and sub = '" + db_pas(sub) + "' limit 1")
|
|
db_ex("select * from topic where title = '" + db_pas(name) + "' and sub = '" + db_pas(sub) + "' limit 1")
|
|
@@ -1506,7 +1595,7 @@ def topic_stop(name = None, sub = None):
|
|
|
@route('/topic/<name:path>/sub/<sub:path>/close')
|
|
@route('/topic/<name:path>/sub/<sub:path>/close')
|
|
|
def topic_close(name = None, sub = None):
|
|
def topic_close(name = None, sub = None):
|
|
|
session = request.environ.get('beaker.session')
|
|
session = request.environ.get('beaker.session')
|
|
|
- if(admin_check(session) == 1):
|
|
|
|
|
|
|
+ if(admin_check(3, session) == 1):
|
|
|
ip = ip_check(session)
|
|
ip = ip_check(session)
|
|
|
|
|
|
|
|
db_ex("select * from topic where title = '" + db_pas(name) + "' and sub = '" + db_pas(sub) + "' order by id + 0 desc limit 1")
|
|
db_ex("select * from topic where title = '" + db_pas(name) + "' and sub = '" + db_pas(sub) + "' order by id + 0 desc limit 1")
|
|
@@ -1535,7 +1624,7 @@ def topic_close(name = None, sub = None):
|
|
|
@route('/topic/<name:path>/sub/<sub:path>/agree')
|
|
@route('/topic/<name:path>/sub/<sub:path>/agree')
|
|
|
def topic_agree(name = None, sub = None):
|
|
def topic_agree(name = None, sub = None):
|
|
|
session = request.environ.get('beaker.session')
|
|
session = request.environ.get('beaker.session')
|
|
|
- if(admin_check(session) == 1):
|
|
|
|
|
|
|
+ if(admin_check(3, session) == 1):
|
|
|
ip = ip_check(session)
|
|
ip = ip_check(session)
|
|
|
|
|
|
|
|
db_ex("select id from topic where title = '" + db_pas(name) + "' and sub = '" + db_pas(sub) + "' order by id + 0 desc limit 1")
|
|
db_ex("select id from topic where title = '" + db_pas(name) + "' and sub = '" + db_pas(sub) + "' order by id + 0 desc limit 1")
|
|
@@ -1566,7 +1655,7 @@ def topic(name = None, sub = None):
|
|
|
session = request.environ.get('beaker.session')
|
|
session = request.environ.get('beaker.session')
|
|
|
ip = ip_check(session)
|
|
ip = ip_check(session)
|
|
|
ban = topic_check(ip, name, sub)
|
|
ban = topic_check(ip, name, sub)
|
|
|
- admin = admin_check(session)
|
|
|
|
|
|
|
+ admin = admin_check(3, session)
|
|
|
|
|
|
|
|
if(request.method == 'POST'):
|
|
if(request.method == 'POST'):
|
|
|
db_ex("select * from topic where title = '" + db_pas(name) + "' and sub = '" + db_pas(sub) + "' order by id + 0 desc limit 1")
|
|
db_ex("select * from topic where title = '" + db_pas(name) + "' and sub = '" + db_pas(sub) + "' order by id + 0 desc limit 1")
|
|
@@ -1651,7 +1740,7 @@ def topic(name = None, sub = None):
|
|
|
top_data = namumark(session, '', rows[num]['data'])
|
|
top_data = namumark(session, '', rows[num]['data'])
|
|
|
top_data = re.sub("(?P<in>#(?:[0-9]*))", '<a href="\g<in>">\g<in></a>', top_data)
|
|
top_data = re.sub("(?P<in>#(?:[0-9]*))", '<a href="\g<in>">\g<in></a>', top_data)
|
|
|
|
|
|
|
|
- ip = ip_pas(rows[num]['ip'])
|
|
|
|
|
|
|
+ ip = ip_pas(rows[num]['ip'], 1)
|
|
|
|
|
|
|
|
div += '<table id="toron"><tbody><tr><td id="toroncolorred"><a href="#' + top[i]['id'] + '" id="' + top[i]['id'] + '-nt">#' + top[i]['id'] + '</a> ' + ip + ' <span style="float:right;">' + rows[num]['date'] + '</span></td></tr><tr><td>' + top_data + '</td></tr></tbody></table><br>'
|
|
div += '<table id="toron"><tbody><tr><td id="toroncolorred"><a href="#' + top[i]['id'] + '" id="' + top[i]['id'] + '-nt">#' + top[i]['id'] + '</a> ' + ip + ' <span style="float:right;">' + rows[num]['date'] + '</span></td></tr><tr><td>' + top_data + '</td></tr></tbody></table><br>'
|
|
|
|
|
|
|
@@ -1704,7 +1793,7 @@ def topic(name = None, sub = None):
|
|
|
else:
|
|
else:
|
|
|
ban = ""
|
|
ban = ""
|
|
|
|
|
|
|
|
- ip = ip_pas(rows[i]['ip'])
|
|
|
|
|
|
|
+ ip = ip_pas(rows[i]['ip'], 1)
|
|
|
|
|
|
|
|
if(rows[i]['ip'] == start):
|
|
if(rows[i]['ip'] == start):
|
|
|
j = i + 1
|
|
j = i + 1
|
|
@@ -1748,7 +1837,7 @@ def close_topic_list(name = None):
|
|
|
else:
|
|
else:
|
|
|
block = ''
|
|
block = ''
|
|
|
|
|
|
|
|
- ip = ip_pas(row[0]['ip'])
|
|
|
|
|
|
|
+ ip = ip_pas(row[0]['ip'], 1)
|
|
|
|
|
|
|
|
div += '<h2><a href="/topic/' + url_pas(name) + '/sub/' + url_pas(rows[i]['sub']) + '">' + str((i + 1)) + '. ' + rows[i]['sub'] + '</a></h2><table id="toron"><tbody><tr><td id="toroncolorgreen"><a href="javascript:void(0);" id="1">#1</a> ' + ip + ' <span style="float:right;">' + row[0]['date'] + '</span></td></tr><tr><td ' + block + '>' + indata + '</td></tr></tbody></table><br>'
|
|
div += '<h2><a href="/topic/' + url_pas(name) + '/sub/' + url_pas(rows[i]['sub']) + '">' + str((i + 1)) + '. ' + rows[i]['sub'] + '</a></h2><table id="toron"><tbody><tr><td id="toroncolorgreen"><a href="javascript:void(0);" id="1">#1</a> ' + ip + ' <span style="float:right;">' + row[0]['date'] + '</span></td></tr><tr><td ' + block + '>' + indata + '</td></tr></tbody></table><br>'
|
|
|
|
|
|
|
@@ -1782,7 +1871,7 @@ def agree_topic_list(name = None):
|
|
|
else:
|
|
else:
|
|
|
block = ''
|
|
block = ''
|
|
|
|
|
|
|
|
- ip = ip_pas(data[0]['ip'])
|
|
|
|
|
|
|
+ ip = ip_pas(data[0]['ip'], 1)
|
|
|
|
|
|
|
|
div += '<h2><a href="/topic/' + url_pas(name) + '/sub/' + url_pas(data[i]['sub']) + '">' + str(i + 1) + '. ' + data[i]['sub'] + '</a></h2><table id="toron"><tbody><tr><td id="toroncolorgreen"><a href="javascript:void(0);" id="1">#1</a> ' + 아이디 + ' <span style="float:right;">' + data[0]['date'] + '</span></td></tr><tr><td ' + block + '>' + indata + '</td></tr></tbody></table><br>'
|
|
div += '<h2><a href="/topic/' + url_pas(name) + '/sub/' + url_pas(data[i]['sub']) + '">' + str(i + 1) + '. ' + data[i]['sub'] + '</a></h2><table id="toron"><tbody><tr><td id="toroncolorgreen"><a href="javascript:void(0);" id="1">#1</a> ' + 아이디 + ' <span style="float:right;">' + data[0]['date'] + '</span></td></tr><tr><td ' + block + '>' + indata + '</td></tr></tbody></table><br>'
|
|
|
|
|
|
|
@@ -1819,7 +1908,7 @@ def topic_list(name = None):
|
|
|
else:
|
|
else:
|
|
|
block = ''
|
|
block = ''
|
|
|
|
|
|
|
|
- ip = ip_pas(aa[0]['ip'])
|
|
|
|
|
|
|
+ ip = ip_pas(aa[0]['ip'], 1)
|
|
|
|
|
|
|
|
db_ex("select * from stop where title = '" + db_pas(rows[i]['title']) + "' and sub = '" + db_pas(rows[i]['sub']) + "' and close = 'O'")
|
|
db_ex("select * from stop where title = '" + db_pas(rows[i]['title']) + "' and sub = '" + db_pas(rows[i]['sub']) + "' and close = 'O'")
|
|
|
row = db_get()
|
|
row = db_get()
|
|
@@ -1920,7 +2009,7 @@ def user_check(name = None):
|
|
|
if(user and user[0]['acl'] == 'owner' or user and user[0]['acl'] == 'admin'):
|
|
if(user and user[0]['acl'] == 'owner' or user and user[0]['acl'] == 'admin'):
|
|
|
return redirect('/error/4')
|
|
return redirect('/error/4')
|
|
|
else:
|
|
else:
|
|
|
- if(admin_check(session) == 1):
|
|
|
|
|
|
|
+ if(admin_check(4, session) == 1):
|
|
|
m = re.search('^(?:[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}?)$', name)
|
|
m = re.search('^(?:[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}?)$', name)
|
|
|
if(m):
|
|
if(m):
|
|
|
db_ex("select * from login where ip = '" + db_pas(name) + "' order by today desc")
|
|
db_ex("select * from login where ip = '" + db_pas(name) + "' order by today desc")
|
|
@@ -2023,7 +2112,7 @@ def user_ban(name = None):
|
|
|
return redirect('/error/4')
|
|
return redirect('/error/4')
|
|
|
else:
|
|
else:
|
|
|
if(request.method == 'POST'):
|
|
if(request.method == 'POST'):
|
|
|
- if(admin_check(session) == 1):
|
|
|
|
|
|
|
+ if(admin_check(1, session) == 1):
|
|
|
ip = ip_check(session)
|
|
ip = ip_check(session)
|
|
|
|
|
|
|
|
if(not re.search("[0-9]{4}-[0-9]{2}-[0-9]{2}", request.forms.end)):
|
|
if(not re.search("[0-9]{4}-[0-9]{2}-[0-9]{2}", request.forms.end)):
|
|
@@ -2053,7 +2142,7 @@ def user_ban(name = None):
|
|
|
else:
|
|
else:
|
|
|
return redirect('/error/3')
|
|
return redirect('/error/3')
|
|
|
else:
|
|
else:
|
|
|
- if(admin_check(session) == 1):
|
|
|
|
|
|
|
+ if(admin_check(1, session) == 1):
|
|
|
db_ex("select * from ban where block = '" + db_pas(name) + "'")
|
|
db_ex("select * from ban where block = '" + db_pas(name) + "'")
|
|
|
row = db_get()
|
|
row = db_get()
|
|
|
if(row):
|
|
if(row):
|
|
@@ -2073,7 +2162,7 @@ def user_ban(name = None):
|
|
|
def acl(name = None):
|
|
def acl(name = None):
|
|
|
session = request.environ.get('beaker.session')
|
|
session = request.environ.get('beaker.session')
|
|
|
if(request.method == 'POST'):
|
|
if(request.method == 'POST'):
|
|
|
- if(admin_check(session) == 1):
|
|
|
|
|
|
|
+ if(admin_check(5, session) == 1):
|
|
|
db_ex("select acl from data where title = '" + db_pas(name) + "'")
|
|
db_ex("select acl from data where title = '" + db_pas(name) + "'")
|
|
|
row = db_get()
|
|
row = db_get()
|
|
|
if(row):
|
|
if(row):
|
|
@@ -2090,7 +2179,7 @@ def acl(name = None):
|
|
|
else:
|
|
else:
|
|
|
return redirect('/error/3')
|
|
return redirect('/error/3')
|
|
|
else:
|
|
else:
|
|
|
- if(admin_check(session) == 1):
|
|
|
|
|
|
|
+ if(admin_check(5, session) == 1):
|
|
|
db_ex("select acl from data where title = '" + db_pas(name) + "'")
|
|
db_ex("select acl from data where title = '" + db_pas(name) + "'")
|
|
|
row = db_get()
|
|
row = db_get()
|
|
|
if(row):
|
|
if(row):
|
|
@@ -2111,11 +2200,11 @@ def acl(name = None):
|
|
|
def user_admin(name = None):
|
|
def user_admin(name = None):
|
|
|
session = request.environ.get('beaker.session')
|
|
session = request.environ.get('beaker.session')
|
|
|
if(request.method == 'POST'):
|
|
if(request.method == 'POST'):
|
|
|
- if(owner_check(session) == 1):
|
|
|
|
|
|
|
+ if(admin_check(7, session) == 1):
|
|
|
db_ex("select * from user where id = '" + db_pas(name) + "'")
|
|
db_ex("select * from user where id = '" + db_pas(name) + "'")
|
|
|
user = db_get()
|
|
user = db_get()
|
|
|
if(user):
|
|
if(user):
|
|
|
- if(user[0]['acl'] == 'admin' or user[0]['acl'] == 'owner'):
|
|
|
|
|
|
|
+ if(not user[0]['acl'] == 'user'):
|
|
|
db_ex("update user set acl = 'user' where id = '" + db_pas(name) + "'")
|
|
db_ex("update user set acl = 'user' where id = '" + db_pas(name) + "'")
|
|
|
else:
|
|
else:
|
|
|
db_ex("update user set acl = '" + db_pas(request.forms.select) + "' where id = '" + db_pas(name) + "'")
|
|
db_ex("update user set acl = '" + db_pas(request.forms.select) + "' where id = '" + db_pas(name) + "'")
|
|
@@ -2127,16 +2216,36 @@ def user_admin(name = None):
|
|
|
else:
|
|
else:
|
|
|
return redirect('/error/3')
|
|
return redirect('/error/3')
|
|
|
else:
|
|
else:
|
|
|
- if(owner_check(session) == 1):
|
|
|
|
|
|
|
+ if(admin_check(7, session) == 1):
|
|
|
db_ex("select * from user where id = '" + db_pas(name) + "'")
|
|
db_ex("select * from user where id = '" + db_pas(name) + "'")
|
|
|
user = db_get()
|
|
user = db_get()
|
|
|
if(user):
|
|
if(user):
|
|
|
- if(user[0]['acl'] == 'admin' or user[0]['acl'] == 'owner'):
|
|
|
|
|
|
|
+ if(not user[0]['acl'] == 'user'):
|
|
|
now = '권한 해제'
|
|
now = '권한 해제'
|
|
|
else:
|
|
else:
|
|
|
now = '권한 부여'
|
|
now = '권한 부여'
|
|
|
|
|
|
|
|
- return template('index', custom = custom_css_user(session), license = set_data['license'], login = login_check(session), title = name, page = url_pas(name), logo = set_data['name'], tn = 18, now = now, sub = '권한 부여')
|
|
|
|
|
|
|
+ div = ''
|
|
|
|
|
+
|
|
|
|
|
+ db_ex('select name from alist order by name asc')
|
|
|
|
|
+ get_alist = db_get()
|
|
|
|
|
+ if(get_alist):
|
|
|
|
|
+ i = 0
|
|
|
|
|
+ name_rem = ''
|
|
|
|
|
+ while(True):
|
|
|
|
|
+ try:
|
|
|
|
|
+ print(get_alist[i]['name'])
|
|
|
|
|
+ if(not name_rem == get_alist[i]['name']):
|
|
|
|
|
+ print(div)
|
|
|
|
|
+ name_rem = get_alist[i]['name']
|
|
|
|
|
+ div += '<option value="' + get_alist[i]['name'] + '" selected="selected">' + get_alist[i]['name'] + '</option>'
|
|
|
|
|
+ i += 1
|
|
|
|
|
+ except:
|
|
|
|
|
+ break
|
|
|
|
|
+
|
|
|
|
|
+ print(div)
|
|
|
|
|
+
|
|
|
|
|
+ return template('index', custom = custom_css_user(session), license = set_data['license'], login = login_check(session), title = name, page = url_pas(name), datalist = div, logo = set_data['name'], tn = 18, now = now, sub = '권한 부여')
|
|
|
else:
|
|
else:
|
|
|
return redirect('/error/5')
|
|
return redirect('/error/5')
|
|
|
else:
|
|
else:
|
|
@@ -2264,7 +2373,7 @@ def read_view(name = None, redirect = None):
|
|
|
uppage = ""
|
|
uppage = ""
|
|
|
style = "display:none;"
|
|
style = "display:none;"
|
|
|
|
|
|
|
|
- if(admin_check(session) == 1):
|
|
|
|
|
|
|
+ if(admin_check(5, session) == 1):
|
|
|
admin_memu = 'ACL'
|
|
admin_memu = 'ACL'
|
|
|
else:
|
|
else:
|
|
|
admin_memu = ''
|
|
admin_memu = ''
|
|
@@ -2395,6 +2504,7 @@ def close_topic_list(name = None, num = None):
|
|
|
session = request.environ.get('beaker.session')
|
|
session = request.environ.get('beaker.session')
|
|
|
v = num * 50
|
|
v = num * 50
|
|
|
i = v - 50
|
|
i = v - 50
|
|
|
|
|
+ ydmin = admin_check(1, session)
|
|
|
div = '<div><table style="width: 100%;"><tbody><tr><td style="text-align: center;width:33.33%;">토론명</td><td style="text-align: center;width:33.33%;">작성자</td><td style="text-align: center;width:33.33%;">시간</td></tr>'
|
|
div = '<div><table style="width: 100%;"><tbody><tr><td style="text-align: center;width:33.33%;">토론명</td><td style="text-align: center;width:33.33%;">작성자</td><td style="text-align: center;width:33.33%;">시간</td></tr>'
|
|
|
|
|
|
|
|
db_ex("select * from topic where ip = '" + db_pas(name) + "' or ip = '" + db_pas(name) + " - Admin' order by date desc")
|
|
db_ex("select * from topic where ip = '" + db_pas(name) + "' or ip = '" + db_pas(name) + " - Admin' order by date desc")
|
|
@@ -2410,7 +2520,7 @@ def close_topic_list(name = None, num = None):
|
|
|
sub = re.sub('<', '<', sub)
|
|
sub = re.sub('<', '<', sub)
|
|
|
sub = re.sub('>', '>', sub)
|
|
sub = re.sub('>', '>', sub)
|
|
|
|
|
|
|
|
- if(admin_check(session) == 1):
|
|
|
|
|
|
|
+ if(ydmin == 1):
|
|
|
db_ex("select * from ban where block = '" + db_pas(rows[i]['ip']) + "'")
|
|
db_ex("select * from ban where block = '" + db_pas(rows[i]['ip']) + "'")
|
|
|
row = db_get()
|
|
row = db_get()
|
|
|
if(row):
|
|
if(row):
|
|
@@ -2420,7 +2530,7 @@ def close_topic_list(name = None, num = None):
|
|
|
else:
|
|
else:
|
|
|
ban = ''
|
|
ban = ''
|
|
|
|
|
|
|
|
- ip = ip_pas(rows[i]['ip'])
|
|
|
|
|
|
|
+ ip = ip_pas(rows[i]['ip'], 1)
|
|
|
|
|
|
|
|
div += '<tr><td style="text-align: center;width:33.33%;"><a href="/topic/' + url_pas(rows[i]['title']) + '/sub/' + url_pas(sub) + '#' + rows[i]['id'] + '">' + title + '</a> (' + sub + ') (#' + rows[i]['id'] + ') </td><td style="text-align: center;width:33.33%;">' + ip + ban + '</td><td style="text-align: center;width:33.33%;">' + rows[i]['date'] + '</td></tr>'
|
|
div += '<tr><td style="text-align: center;width:33.33%;"><a href="/topic/' + url_pas(rows[i]['title']) + '/sub/' + url_pas(sub) + '#' + rows[i]['id'] + '">' + title + '</a> (' + sub + ') (#' + rows[i]['id'] + ') </td><td style="text-align: center;width:33.33%;">' + ip + ban + '</td><td style="text-align: center;width:33.33%;">' + rows[i]['date'] + '</td></tr>'
|
|
|
|
|
|
|
@@ -2455,11 +2565,8 @@ def user_info():
|
|
|
rows = db_get()
|
|
rows = db_get()
|
|
|
if(ban_check(ip) == 0):
|
|
if(ban_check(ip) == 0):
|
|
|
if(rows):
|
|
if(rows):
|
|
|
- if(rows[0]['acl'] == 'admin' or rows[0]['acl'] == 'owner'):
|
|
|
|
|
- if(rows[0]['acl'] == 'admin'):
|
|
|
|
|
- acl = '관리자'
|
|
|
|
|
- else:
|
|
|
|
|
- acl = '소유자'
|
|
|
|
|
|
|
+ if(not rows[0]['acl'] == 'user'):
|
|
|
|
|
+ acl = rows[0]['acl']
|
|
|
else:
|
|
else:
|
|
|
acl = '로그인'
|
|
acl = '로그인'
|
|
|
else:
|
|
else:
|
|
@@ -2467,7 +2574,7 @@ def user_info():
|
|
|
else:
|
|
else:
|
|
|
acl = '차단'
|
|
acl = '차단'
|
|
|
|
|
|
|
|
- ip = ip_pas(ip)
|
|
|
|
|
|
|
+ ip = ip_pas(ip, 2)
|
|
|
|
|
|
|
|
return template('index', custom = custom_css_user(session), license = set_data['license'], login = login_check(session), title = '사용자 메뉴', logo = set_data['name'], data = ip + '<br><br><span>권한 상태 : ' + acl + '<h2>로그인 관련</h2><li><a href="/login">로그인</a></li><li><a href="/logout">로그아웃</a></li><li><a href="/register">회원가입</a></li><h2>기타</h2><li><a href="/change">비밀번호 변경</a></li><li><a href="/count">기여 횟수</a></li><li><a href="/record/' + raw_ip + '/n/1">기여 목록</a></li><li><a href="/custom">커스텀 CSS</a></li>')
|
|
return template('index', custom = custom_css_user(session), license = set_data['license'], login = login_check(session), title = '사용자 메뉴', logo = set_data['name'], data = ip + '<br><br><span>권한 상태 : ' + acl + '<h2>로그인 관련</h2><li><a href="/login">로그인</a></li><li><a href="/logout">로그아웃</a></li><li><a href="/register">회원가입</a></li><h2>기타</h2><li><a href="/change">비밀번호 변경</a></li><li><a href="/count">기여 횟수</a></li><li><a href="/record/' + raw_ip + '/n/1">기여 목록</a></li><li><a href="/custom">커스텀 CSS</a></li>')
|
|
|
|
|
|
|
@@ -2500,8 +2607,6 @@ def custom_css():
|
|
|
data = ''
|
|
data = ''
|
|
|
|
|
|
|
|
return template('index', custom = custom_css_user(session), license = set_data['license'], login = login_check(session), title = '커스텀 CSS', logo = set_data['name'], data = '<form id="usrform" name="f1" method="POST" action="/custom"><textarea rows="30" cols="100" name="content" form="usrform">' + data + '</textarea><div class="form-actions"><button class="btn btn-primary" type="submit">저장</button></div></form>')
|
|
return template('index', custom = custom_css_user(session), license = set_data['license'], login = login_check(session), title = '커스텀 CSS', logo = set_data['name'], data = '<form id="usrform" name="f1" method="POST" action="/custom"><textarea rows="30" cols="100" name="content" form="usrform">' + data + '</textarea><div class="form-actions"><button class="btn btn-primary" type="submit">저장</button></div></form>')
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
@route('/count')
|
|
@route('/count')
|
|
|
def count_edit():
|
|
def count_edit():
|