Sfoglia il codice sorgente

요청 받은 거 추가

2DU 9 anni fa
parent
commit
222f46774d

+ 93 - 87
app.py

@@ -160,6 +160,12 @@ def savemark(data):
     data = re.sub("\[name\]", name, data)
     data = re.sub("\[name\]", name, data)
 
 
     return data
     return data
+    
+def nowlogin():
+    if(session.get('Now') == True):
+        return 1
+    else:
+        return 0
 
 
 def namumark(title, data):
 def namumark(title, data):
     while(True):
     while(True):
@@ -1448,7 +1454,7 @@ def image(name = None):
     if(os.path.exists(os.path.join('image', name))):
     if(os.path.exists(os.path.join('image', name))):
         return send_file(os.path.join('image', name), mimetype='image')
         return send_file(os.path.join('image', name), mimetype='image')
     else:
     else:
-        return render_template('index.html', logo = data['name'], data = '이미지 없음.', title = '이미지 보기'), 404
+        return render_template('index.html', logo = data['name'], data = '이미지 없음.', title = '이미지 보기', login = nowlogin()), 404
 
 
 @app.route('/adminlist')
 @app.route('/adminlist')
 def adminlist():
 def adminlist():
@@ -1481,9 +1487,9 @@ def adminlist():
             
             
             i = i + 1
             i = i + 1
             
             
-        return render_template('index.html', logo = data['name'], data = div, title = '관리자 목록')
+        return render_template('index.html', logo = data['name'], data = div, title = '관리자 목록', login = nowlogin())
     else:
     else:
-        return render_template('index.html', logo = data['name'], title = '관리자 목록')
+        return render_template('index.html', logo = data['name'], title = '관리자 목록', login = nowlogin())
 
 
 @app.route('/recentchanges')
 @app.route('/recentchanges')
 def recentchanges():
 def recentchanges():
@@ -1550,9 +1556,9 @@ def recentchanges():
             
             
             i = i + 1
             i = i + 1
             
             
-        return render_template('index.html', logo = data['name'], rows = div, tn = 3, title = '최근 변경내역')
+        return render_template('index.html', logo = data['name'], rows = div, tn = 3, title = '최근 변경내역', login = nowlogin())
     else:
     else:
-        return render_template('index.html', logo = data['name'], rows = '', tn = 3, title = '최근 변경내역')
+        return render_template('index.html', logo = data['name'], rows = '', tn = 3, title = '최근 변경내역', login = nowlogin())
         
         
 @app.route('/history/<path:name>/r/<int:num>/hidden')
 @app.route('/history/<path:name>/r/<int:num>/hidden')
 def hidden(name = None, num = None):
 def hidden(name = None, num = None):
@@ -1645,9 +1651,9 @@ def record(name = None, number = None):
             else:
             else:
                 i = i + 1
                 i = i + 1
                 
                 
-        return render_template('index.html', logo = data['name'], rows = div, tn = 3, title = '유저 기록')
+        return render_template('index.html', logo = data['name'], rows = div, tn = 3, title = '유저 기록', login = nowlogin())
     else:
     else:
-        return render_template('index.html', logo = data['name'], rows = '', tn = 3, title = '유저 기록')
+        return render_template('index.html', logo = data['name'], rows = '', tn = 3, title = '유저 기록', login = nowlogin())
       
       
 @app.route('/userlog/n/<int:number>')
 @app.route('/userlog/n/<int:number>')
 def userlog(number = None):
 def userlog(number = None):
@@ -1699,9 +1705,9 @@ def userlog(number = None):
             else:
             else:
                 i = i + 1
                 i = i + 1
                 
                 
-        return render_template('index.html', logo = data['name'], data = div, title = '유저 가입 기록')
+        return render_template('index.html', logo = data['name'], data = div, title = '유저 가입 기록', login = nowlogin())
     else:
     else:
-        return render_template('index.html', logo = data['name'], data = '', title = '유저 가입 기록')
+        return render_template('index.html', logo = data['name'], data = '', title = '유저 가입 기록', login = nowlogin())
         
         
 @app.route('/backlink/<path:name>/n/<int:number>')
 @app.route('/backlink/<path:name>/n/<int:number>')
 def backlink(name = None, number = None):
 def backlink(name = None, number = None):
@@ -1778,9 +1784,9 @@ def backlink(name = None, number = None):
         if(restart == 1):
         if(restart == 1):
             return '<meta http-equiv="refresh" content="0;url=/backlink/' + parse.quote(name) + '/n/' + str(number) + '" />'
             return '<meta http-equiv="refresh" content="0;url=/backlink/' + parse.quote(name) + '/n/' + str(number) + '" />'
         else:    
         else:    
-            return render_template('index.html', logo = data['name'], data = div, title = name, sub = '역링크')
+            return render_template('index.html', logo = data['name'], data = div, title = name, sub = '역링크', login = nowlogin())
     else:
     else:
-        return render_template('index.html', logo = data['name'], data = '', title = name, sub = '역링크')
+        return render_template('index.html', logo = data['name'], data = '', title = name, sub = '역링크', login = nowlogin())
 
 
 @app.route('/recentdiscuss')
 @app.route('/recentdiscuss')
 def recentdiscuss():
 def recentdiscuss():
@@ -1809,9 +1815,9 @@ def recentdiscuss():
             
             
             i = i + 1
             i = i + 1
             
             
-        return render_template('index.html', logo = data['name'], rows = div, tn = 12, title = '최근 토론내역')
+        return render_template('index.html', logo = data['name'], rows = div, tn = 12, title = '최근 토론내역', login = nowlogin())
     else:
     else:
-        return render_template('index.html', logo = data['name'], rows = '', tn = 12, title = '최근 토론내역')
+        return render_template('index.html', logo = data['name'], rows = '', tn = 12, title = '최근 토론내역', login = nowlogin())
          
          
 @app.route('/blocklog/n/<int:number>')
 @app.route('/blocklog/n/<int:number>')
 def blocklog(number = None):
 def blocklog(number = None):
@@ -1857,9 +1863,9 @@ def blocklog(number = None):
             else:
             else:
                 i = i + 1
                 i = i + 1
                 
                 
-        return render_template('index.html', logo = data['name'], rows = div, tn = 20, title = '유저 차단 기록')
+        return render_template('index.html', logo = data['name'], rows = div, tn = 20, title = '유저 차단 기록', login = nowlogin())
     else:
     else:
-        return render_template('index.html', logo = data['name'], rows = '', tn = 20, title = '유저 차단 기록')
+        return render_template('index.html', logo = data['name'], rows = '', tn = 20, title = '유저 차단 기록', login = nowlogin())
 
 
 @app.route('/history/<path:name>/n/<int:number>', methods=['POST', 'GET'])
 @app.route('/history/<path:name>/n/<int:number>', methods=['POST', 'GET'])
 def gethistory(name = None, number = None):
 def gethistory(name = None, number = None):
@@ -1984,9 +1990,9 @@ def gethistory(name = None, number = None):
                 else:
                 else:
                     i = i + 1
                     i = i + 1
                     
                     
-            return render_template('index.html', logo = data['name'], rows = div, tn = 5, title = name, page = parse.quote(name), select = select, sub = '역사')
+            return render_template('index.html', logo = data['name'], rows = div, tn = 5, title = name, page = parse.quote(name), select = select, sub = '역사', login = nowlogin())
         else:
         else:
-            return render_template('index.html', logo = data['name'], rows = '', tn = 5, title = name, page = parse.quote(name), select = select, sub = '역사')
+            return render_template('index.html', logo = data['name'], rows = '', tn = 5, title = name, page = parse.quote(name), select = select, sub = '역사', login = nowlogin())
 
 
 @app.route('/search', methods=['POST'])
 @app.route('/search', methods=['POST'])
 def search():
 def search():
@@ -2012,7 +2018,7 @@ def search():
         else:
         else:
             return '<meta http-equiv="refresh" content="0;url=/w/' + parse.quote(request.form["search"]) + '" />'
             return '<meta http-equiv="refresh" content="0;url=/w/' + parse.quote(request.form["search"]) + '" />'
             
             
-        return render_template('index.html', logo = data['name'], data = div, title = '검색')
+        return render_template('index.html', logo = data['name'], data = div, title = '검색', login = nowlogin())
 
 
 @app.route('/w/<path:name>')
 @app.route('/w/<path:name>')
 def w(name = None):
 def w(name = None):
@@ -2120,11 +2126,11 @@ def w(name = None):
                 else:
                 else:
                     left = ''
                     left = ''
                     
                     
-                return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = enddata + '<br>' + div, license = data['license'], tn = 1, uppage = uppage, style = style, acl = acl, topic = topic)
+                return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = enddata + '<br>' + div, license = data['license'], tn = 1, uppage = uppage, style = style, acl = acl, topic = topic, login = nowlogin())
             else:
             else:
-                return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = div, license = data['license'], tn = 1, uppage = uppage, style = style, acl = acl, topic = topic)
+                return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = div, license = data['license'], tn = 1, uppage = uppage, style = style, acl = acl, topic = topic, login = nowlogin())
         else:
         else:
-            return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), 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), data = '분류 문서 없음', license = data['license'], tn = 1, uppage = uppage, style = style, acl = acl, topic = topic, login = nowlogin()), 404
     else:
     else:
         m = re.search("^사용자:(.*)", name)
         m = re.search("^사용자:(.*)", name)
         if(m):
         if(m):
@@ -2158,9 +2164,9 @@ def w(name = None):
             else:
             else:
                 left = ''
                 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, uppage = uppage, style = style, topic = topic)
+            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, uppage = uppage, style = style, topic = topic, login = nowlogin())
         else:
         else:
-            return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), 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), data = '문서 없음', license = data['license'], tn = 1, uppage = uppage, style = style, acl = acl, topic = topic, login = nowlogin()), 404
 
 
 @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):
@@ -2274,11 +2280,11 @@ def redirectw(name = None, redirect = None):
                 else:
                 else:
                     left = ''
                     left = ''
                     
                     
-                return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = enddata + '<br>' + div, license = data['license'], tn = 1, uppage = uppage, style = style, acl = acl, topic = topic, redirect = '<a href="/w/' + parse.quote(redirect) + '/from/' + parse.quote(name) + '">' + redirect + '</a>에서 넘어 왔습니다.')
+                return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = enddata + '<br>' + div, license = data['license'], tn = 1, uppage = uppage, style = style, acl = acl, topic = topic, redirect = '<a href="/w/' + parse.quote(redirect) + '/from/' + parse.quote(name) + '">' + redirect + '</a>에서 넘어 왔습니다.', login = nowlogin())
             else:
             else:
-                return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = div, license = data['license'], tn = 1, uppage = uppage, style = style, acl = acl, topic = topic, redirect = '<a href="/w/' + parse.quote(redirect) + '/from/' + parse.quote(name) + '">' + redirect + '</a>에서 넘어 왔습니다.')
+                return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = div, license = data['license'], tn = 1, uppage = uppage, style = style, acl = acl, topic = topic, redirect = '<a href="/w/' + parse.quote(redirect) + '/from/' + parse.quote(name) + '">' + redirect + '</a>에서 넘어 왔습니다.', login = nowlogin())
         else:
         else:
-            return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = '분류 문서 없음', license = data['license'], tn = 1, uppage = uppage, style = style, acl = acl, topic = topic, redirect = '<a href="/w/' + parse.quote(redirect) + '/from/' + parse.quote(name) + '">' + redirect + '</a>에서 넘어 왔습니다.'), 404
+            return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = '분류 문서 없음', license = data['license'], tn = 1, uppage = uppage, style = style, acl = acl, topic = topic, redirect = '<a href="/w/' + parse.quote(redirect) + '/from/' + parse.quote(name) + '">' + redirect + '</a>에서 넘어 왔습니다.', login = nowlogin()), 404
     else:
     else:
         m = re.search("^사용자:(.*)", name)
         m = re.search("^사용자:(.*)", name)
         if(m):
         if(m):
@@ -2313,9 +2319,9 @@ def redirectw(name = None, redirect = None):
             else:
             else:
                 left = ''
                 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, uppage = uppage, style = style, topic = topic, redirect = '<a href="/w/' + parse.quote(redirect) + '/from/' + parse.quote(name) + '">' + redirect + '</a>에서 넘어 왔습니다.')
+            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, uppage = uppage, style = style, topic = topic, redirect = '<a href="/w/' + parse.quote(redirect) + '/from/' + parse.quote(name) + '">' + redirect + '</a>에서 넘어 왔습니다.', login = nowlogin())
         else:
         else:
-            return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = '문서 없음', license = data['license'], tn = 1, uppage = uppage, style = style, acl = acl, topic = topic, redirect = '<a href="/w/' + parse.quote(redirect) + '/from/' + parse.quote(name) + '">' + redirect + '</a>에서 넘어 왔습니다.'), 404
+            return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = '문서 없음', license = data['license'], tn = 1, uppage = uppage, style = style, acl = acl, topic = topic, redirect = '<a href="/w/' + parse.quote(redirect) + '/from/' + parse.quote(name) + '">' + redirect + '</a>에서 넘어 왔습니다.', login = nowlogin()), 404
 
 
 @app.route('/w/<path:name>/r/<int:number>')
 @app.route('/w/<path:name>/r/<int:number>')
 def rew(name = None, number = None):
 def rew(name = None, number = None):
@@ -2335,7 +2341,7 @@ def rew(name = None, number = None):
                 else:
                 else:
                     left = ''
                     left = ''
                     
                     
-                return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = enddata, license = data['license'], tn = 6, left = left, sub = '옛 문서')
+                return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = enddata, license = data['license'], tn = 6, left = left, sub = '옛 문서', login = nowlogin())
             else:
             else:
                 return '<meta http-equiv="refresh" content="0;url=/history/' + parse.quote(name) + '" />'
                 return '<meta http-equiv="refresh" content="0;url=/history/' + parse.quote(name) + '" />'
         else:
         else:
@@ -2353,7 +2359,7 @@ def rew(name = None, number = None):
             else:
             else:
                 left = ''
                 left = ''
                 
                 
-            return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = enddata, license = data['license'], tn = 6, left = left, sub = '옛 문서')
+            return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = enddata, license = data['license'], tn = 6, left = left, sub = '옛 문서', login = nowlogin())
         else:
         else:
             return '<meta http-equiv="refresh" content="0;url=/history/' + parse.quote(name) + '" />'
             return '<meta http-equiv="refresh" content="0;url=/history/' + parse.quote(name) + '" />'
 
 
@@ -2372,7 +2378,7 @@ def reraw(name = None, number = None):
                 
                 
                 enddata = '<pre>' + enddata + '</pre>'
                 enddata = '<pre>' + enddata + '</pre>'
                 
                 
-                return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = enddata, license = data['license'])
+                return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = enddata, license = data['license'], login = nowlogin())
             else:
             else:
                 return '<meta http-equiv="refresh" content="0;url=/history/' + parse.quote(name) + '" />'
                 return '<meta http-equiv="refresh" content="0;url=/history/' + parse.quote(name) + '" />'
         else:
         else:
@@ -2387,7 +2393,7 @@ def reraw(name = None, number = None):
             
             
             enddata = '<pre>' + enddata + '</pre>'
             enddata = '<pre>' + enddata + '</pre>'
             
             
-            return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = enddata, license = data['license'])
+            return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = enddata, license = data['license'], login = nowlogin())
         else:
         else:
             return '<meta http-equiv="refresh" content="0;url=/history/' + parse.quote(name) + '" />'
             return '<meta http-equiv="refresh" content="0;url=/history/' + parse.quote(name) + '" />'
 
 
@@ -2402,7 +2408,7 @@ def raw(name = None):
         
         
         enddata = '<pre>' + enddata + '</pre>'
         enddata = '<pre>' + enddata + '</pre>'
         
         
-        return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = enddata, license = data['license'], tn = 7, sub = 'Raw')
+        return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = enddata, license = data['license'], tn = 7, sub = 'Raw', login = nowlogin())
     else:
     else:
         return '<meta http-equiv="refresh" content="0;url=/w/' + parse.quote(name) + '" />'
         return '<meta http-equiv="refresh" content="0;url=/w/' + parse.quote(name) + '" />'
 
 
@@ -2484,7 +2490,7 @@ def revert(name = None, number = None):
                     curs.execute("select * from history where title = '" + pymysql.escape_string(name) + "' and id = '" + str(number) + "'")
                     curs.execute("select * from history where title = '" + pymysql.escape_string(name) + "' and id = '" + str(number) + "'")
                     rows = curs.fetchall()
                     rows = curs.fetchall()
                     if(rows):
                     if(rows):
-                        return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), r = parse.quote(str(number)), tn = 13, plus = '정말 되돌리시겠습니까?', sub = '되돌리기')
+                        return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), r = parse.quote(str(number)), tn = 13, plus = '정말 되돌리시겠습니까?', sub = '되돌리기', login = nowlogin())
                     else:
                     else:
                         return '<meta http-equiv="refresh" content="0;url=/w/' + parse.quote(name) + '" />'
                         return '<meta http-equiv="refresh" content="0;url=/w/' + parse.quote(name) + '" />'
             else:
             else:
@@ -2499,7 +2505,7 @@ def revert(name = None, number = None):
                 curs.execute("select * from history where title = '" + pymysql.escape_string(name) + "' and id = '" + str(number) + "'")
                 curs.execute("select * from history where title = '" + pymysql.escape_string(name) + "' and id = '" + str(number) + "'")
                 rows = curs.fetchall()
                 rows = curs.fetchall()
                 if(rows):
                 if(rows):
-                    return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), r = parse.quote(str(number)), tn = 13, plus = '정말 되돌리시겠습니까?', sub = '되돌리기')
+                    return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), r = parse.quote(str(number)), tn = 13, plus = '정말 되돌리시겠습니까?', sub = '되돌리기', login = nowlogin())
                 else:
                 else:
                     return '<meta http-equiv="refresh" content="0;url=/w/' + parse.quote(name) + '" />'
                     return '<meta http-equiv="refresh" content="0;url=/w/' + parse.quote(name) + '" />'
                         
                         
@@ -2571,9 +2577,9 @@ def edit(name = None):
             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):
-                return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = rows[0]['data'], tn = 2, notice = notice, left = left, sub = '편집')
+                return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = rows[0]['data'], tn = 2, notice = notice, left = left, sub = '편집', login = nowlogin())
             else:
             else:
-                return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = '', tn = 2, notice = notice, left = left, sub = '편집')
+                return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = '', tn = 2, notice = notice, left = left, sub = '편집', login = nowlogin())
                 
                 
 @app.route('/edit/<path:name>/section/<int:number>', methods=['POST', 'GET'])
 @app.route('/edit/<path:name>/section/<int:number>', methods=['POST', 'GET'])
 def secedit(name = None, number = None):
 def secedit(name = None, number = None):
@@ -2658,7 +2664,7 @@ def secedit(name = None, number = None):
                         break
                         break
                         
                         
                 if(j == 0):
                 if(j == 0):
-                    return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = gdata, tn = 2, notice = notice, left = left, section = 1, number = number, sub = '편집')
+                    return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), data = gdata, tn = 2, notice = notice, left = left, section = 1, number = number, sub = '편집', login = nowlogin())
                 else:
                 else:
                     return '<meta http-equiv="refresh" content="0;url=/w/' + parse.quote(name) + '" />'
                     return '<meta http-equiv="refresh" content="0;url=/w/' + parse.quote(name) + '" />'
             else:
             else:
@@ -2689,7 +2695,7 @@ def preview(name = None):
         else:
         else:
             left = ''
             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, notice = notice, sub = '미리보기')
+        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, notice = notice, sub = '미리보기', login = nowlogin())
         
         
 @app.route('/preview/<path:name>/section/<int:number>', methods=['POST'])
 @app.route('/preview/<path:name>/section/<int:number>', methods=['POST'])
 def secpreview(name = None, number = None):
 def secpreview(name = None, number = None):
@@ -2712,7 +2718,7 @@ def secpreview(name = None, number = None):
             left = namumark(name, newdata)
             left = namumark(name, newdata)
         else:
         else:
             left = ''
             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, notice = notice, section = 1, number = number, odata = request.form["otent"], sub = '미리보기')
+        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, notice = notice, section = 1, number = number, odata = request.form["otent"], sub = '미리보기', login = nowlogin())
 
 
 @app.route('/delete/<path:name>', methods=['POST', 'GET'])
 @app.route('/delete/<path:name>', methods=['POST', 'GET'])
 def delete(name = None):
 def delete(name = None):
@@ -2742,7 +2748,7 @@ def delete(name = None):
             if(can == 1):
             if(can == 1):
                 return '<meta http-equiv="refresh" content="0;url=/ban" />'
                 return '<meta http-equiv="refresh" content="0;url=/ban" />'
             else:
             else:
-                return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), tn = 8, plus = '정말 삭제 하시겠습니까?', sub = '삭제')
+                return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), tn = 8, plus = '정말 삭제 하시겠습니까?', sub = '삭제', login = nowlogin())
         else:
         else:
             return '<meta http-equiv="refresh" content="0;url=/w/' + parse.quote(name) + '" />'
             return '<meta http-equiv="refresh" content="0;url=/w/' + parse.quote(name) + '" />'
 
 
@@ -2792,41 +2798,41 @@ def move(name = None):
         if(can == 1):
         if(can == 1):
             return '<meta http-equiv="refresh" content="0;url=/ban" />'
             return '<meta http-equiv="refresh" content="0;url=/ban" />'
         else:
         else:
-            return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), tn = 9, plus = '정말 이동 하시겠습니까?', sub = '이동')
+            return render_template('index.html', title = name, logo = data['name'], page = parse.quote(name), tn = 9, plus = '정말 이동 하시겠습니까?', sub = '이동', login = nowlogin())
 
 
 @app.route('/other')
 @app.route('/other')
 def other():
 def other():
-    return render_template('index.html', title = '기타 메뉴', logo = data['name'], data = '<h2 style="margin-top: 0px;">기록</h2><li><a href="/blocklog/n/1">유저 차단 기록</a></li><li><a href="/userlog/n/1">유저 가입 기록</a></li><li><a href="/manager/6">유저 기록</a></li><h2>기타</h2><li><a href="/titleindex">모든 문서</a></li><li><a href="/upload">업로드</a></li><li><a href="/adminlist">관리자 목록</a></li><li><a href="/manager/1">관리자 메뉴</a></li><br>이 오픈나무의 버전은 <a href="https://github.com/2DU/openNAMU/blob/master/version.md">1.8.5</a> 입니다.')
+    return render_template('index.html', title = '기타 메뉴', logo = data['name'], data = '<h2 style="margin-top: 0px;">기록</h2><li><a href="/blocklog/n/1">유저 차단 기록</a></li><li><a href="/userlog/n/1">유저 가입 기록</a></li><li><a href="/manager/6">유저 기록</a></li><h2>기타</h2><li><a href="/titleindex">모든 문서</a></li><li><a href="/upload">업로드</a></li><li><a href="/adminlist">관리자 목록</a></li><li><a href="/manager/1">관리자 메뉴</a></li><br>이 오픈나무의 버전은 <a href="https://github.com/2DU/openNAMU/blob/master/version.md">1.8.5</a> 입니다.', login = nowlogin())
     
     
 @app.route('/manager/<int:num>', methods=['POST', 'GET'])
 @app.route('/manager/<int:num>', methods=['POST', 'GET'])
 def manager(num = None):
 def manager(num = None):
     if(num == 1):
     if(num == 1):
-        return render_template('index.html', title = '관리자 메뉴', logo = 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="/manager/5">관리자 권한 주기</a></li><h2>기타</h2><li>이 메뉴에 없는 기능은 해당 문서의 역사나 토론에서 바로 사용 가능함</li>')
+        return render_template('index.html', title = '관리자 메뉴', logo = 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="/manager/5">관리자 권한 주기</a></li><h2>기타</h2><li>이 메뉴에 없는 기능은 해당 문서의 역사나 토론에서 바로 사용 가능함</li>', login = nowlogin())
     elif(num == 2):
     elif(num == 2):
         if(request.method == 'POST'):
         if(request.method == 'POST'):
             return '<meta http-equiv="refresh" content="0;url=/acl/' + parse.quote(request.form["name"]) + '" />'
             return '<meta http-equiv="refresh" content="0;url=/acl/' + parse.quote(request.form["name"]) + '" />'
         else:
         else:
-            return render_template('index.html', title = 'ACL 이동', logo = data['name'], data = '<form id="usrform" method="POST" action="/manager/2"><input name="name" type="text"><br><br><button class="btn btn-primary" type="submit">이동</button></form>')
+            return render_template('index.html', title = 'ACL 이동', logo = data['name'], data = '<form id="usrform" method="POST" action="/manager/2"><input name="name" type="text"><br><br><button class="btn btn-primary" type="submit">이동</button></form>', login = nowlogin())
     elif(num == 3):
     elif(num == 3):
         if(request.method == 'POST'):
         if(request.method == 'POST'):
             return '<meta http-equiv="refresh" content="0;url=/check/' + parse.quote(request.form["name"]) + '" />'
             return '<meta http-equiv="refresh" content="0;url=/check/' + parse.quote(request.form["name"]) + '" />'
         else:
         else:
-            return render_template('index.html', title = '체크 이동', logo = data['name'], data = '<form id="usrform" method="POST" action="/manager/3"><input name="name" type="text"><br><br><button class="btn btn-primary" type="submit">이동</button></form>')
+            return render_template('index.html', title = '체크 이동', logo = data['name'], data = '<form id="usrform" method="POST" action="/manager/3"><input name="name" type="text"><br><br><button class="btn btn-primary" type="submit">이동</button></form>', login = nowlogin())
     elif(num == 4):
     elif(num == 4):
         if(request.method == 'POST'):
         if(request.method == 'POST'):
             return '<meta http-equiv="refresh" content="0;url=/ban/' + parse.quote(request.form["name"]) + '" />'
             return '<meta http-equiv="refresh" content="0;url=/ban/' + parse.quote(request.form["name"]) + '" />'
         else:
         else:
-            return render_template('index.html', title = '차단 이동', logo = data['name'], data = '<form id="usrform" method="POST" action="/manager/4"><input name="name" type="text"><br><br><button class="btn btn-primary" type="submit">이동</button><br><br><span>아이피 앞 두자리 (XXX.XXX) 입력하면 대역 차단</span></form>')
+            return render_template('index.html', title = '차단 이동', logo = data['name'], data = '<form id="usrform" method="POST" action="/manager/4"><input name="name" type="text"><br><br><button class="btn btn-primary" type="submit">이동</button><br><br><span>아이피 앞 두자리 (XXX.XXX) 입력하면 대역 차단</span></form>', login = nowlogin())
     elif(num == 5):
     elif(num == 5):
         if(request.method == 'POST'):
         if(request.method == 'POST'):
             return '<meta http-equiv="refresh" content="0;url=/admin/' + parse.quote(request.form["name"]) + '" />'
             return '<meta http-equiv="refresh" content="0;url=/admin/' + parse.quote(request.form["name"]) + '" />'
         else:
         else:
-            return render_template('index.html', title = '권한 이동', logo = data['name'], data = '<form id="usrform" method="POST" action="/manager/5"><input name="name" type="text"><br><br><button class="btn btn-primary" type="submit">이동</button></form>')   
+            return render_template('index.html', title = '권한 이동', logo = data['name'], data = '<form id="usrform" method="POST" action="/manager/5"><input name="name" type="text"><br><br><button class="btn btn-primary" type="submit">이동</button></form>', login = nowlogin())   
     elif(num == 6):
     elif(num == 6):
         if(request.method == 'POST'):
         if(request.method == 'POST'):
             return '<meta http-equiv="refresh" content="0;url=/record/' + parse.quote(request.form["name"]) + '/n/1" />'
             return '<meta http-equiv="refresh" content="0;url=/record/' + parse.quote(request.form["name"]) + '/n/1" />'
         else:
         else:
-            return render_template('index.html', title = '기록 이동', logo = data['name'], data = '<form id="usrform" method="POST" action="/manager/6"><input name="name" type="text"><br><br><button class="btn btn-primary" type="submit">이동</button></form>')    
+            return render_template('index.html', title = '기록 이동', logo = data['name'], data = '<form id="usrform" method="POST" action="/manager/6"><input name="name" type="text"><br><br><button class="btn btn-primary" type="submit">이동</button></form>', login = nowlogin())    
     else:
     else:
         return '<meta http-equiv="refresh" content="0;url=/" />'
         return '<meta http-equiv="refresh" content="0;url=/" />'
         
         
@@ -2847,9 +2853,9 @@ def titleindex():
             div = div + '<li>' + str(i + 1) + '. <a href="/w/' + parse.quote(rows[i]['title']) + '">' + rows[i]['title'] + '</a></li>'
             div = div + '<li>' + str(i + 1) + '. <a href="/w/' + parse.quote(rows[i]['title']) + '">' + rows[i]['title'] + '</a></li>'
             
             
             i = i + 1
             i = i + 1
-        return render_template('index.html', logo = data['name'], rows = div + '<br><span>이 위키에는 총 ' + str(i) + '개의 문서가 있습니다.</span>', tn = 4, title = '모든 문서')
+        return render_template('index.html', logo = data['name'], rows = div + '<br><span>이 위키에는 총 ' + str(i) + '개의 문서가 있습니다.</span>', tn = 4, title = '모든 문서', login = nowlogin())
     else:
     else:
-        return render_template('index.html', logo = data['name'], rows = '', tn = 4, title = '모든 문서')
+        return render_template('index.html', logo = data['name'], rows = '', tn = 4, title = '모든 문서', login = nowlogin())
 
 
 @app.route('/topic/<path:name>', methods=['POST', 'GET'])
 @app.route('/topic/<path:name>', methods=['POST', 'GET'])
 def topic(name = None):
 def topic(name = None):
@@ -2888,7 +2894,7 @@ def topic(name = None):
                 
                 
             i = i + 1
             i = i + 1
             
             
-        return render_template('index.html', title = name, page = parse.quote(name), logo = data['name'], plus = div, tn = 10, list = 1, sub = '토론 목록')
+        return render_template('index.html', title = name, page = parse.quote(name), logo = data['name'], plus = div, tn = 10, list = 1, sub = '토론 목록', login = nowlogin())
         
         
 @app.route('/topic/<path:name>/close')
 @app.route('/topic/<path:name>/close')
 def topicstoplist(name = None):
 def topicstoplist(name = None):
@@ -2924,7 +2930,7 @@ def topicstoplist(name = None):
                 
                 
             i = i + 1
             i = i + 1
             
             
-        return render_template('index.html', title = name, page = parse.quote(name), logo = data['name'], plus = div, tn = 10, sub = '토론 목록')
+        return render_template('index.html', title = name, page = parse.quote(name), logo = data['name'], plus = div, tn = 10, sub = '토론 목록', login = nowlogin())
 
 
 @app.route('/topic/<path:name>/sub/<path:sub>', methods=['POST', 'GET'])
 @app.route('/topic/<path:name>/sub/<path:sub>', methods=['POST', 'GET'])
 def sub(name = None, sub = None):
 def sub(name = None, sub = None):
@@ -3123,7 +3129,7 @@ def sub(name = None, sub = None):
                 
                 
             i = i + 1
             i = i + 1
             
             
-        return render_template('index.html', title = name, page = parse.quote(name), suburl = parse.quote(sub), toron = sub, logo = data['name'], rows = div, tn = 11, ban = ban, style = style, sub = '토론')
+        return render_template('index.html', title = name, page = parse.quote(name), suburl = parse.quote(sub), toron = sub, logo = data['name'], rows = div, tn = 11, ban = ban, style = style, sub = '토론', login = nowlogin())
 
 
 @app.route('/topic/<path:name>/sub/<path:sub>/b/<int:number>')
 @app.route('/topic/<path:name>/sub/<path:sub>/b/<int:number>')
 def blind(name = None, sub = None, number = None):
 def blind(name = None, sub = None, number = None):
@@ -3251,7 +3257,7 @@ def login():
             if(session.get('Now') == True):
             if(session.get('Now') == True):
                 return '<meta http-equiv="refresh" content="0;url=/error/11" />'
                 return '<meta http-equiv="refresh" content="0;url=/error/11" />'
             else:
             else:
-                return render_template('index.html', title = '로그인', enter = '로그인', logo = data['name'], tn = 15)
+                return render_template('index.html', title = '로그인', enter = '로그인', logo = data['name'], tn = 15, login = nowlogin())
                 
                 
 @app.route('/change', methods=['POST', 'GET'])
 @app.route('/change', methods=['POST', 'GET'])
 def change():
 def change():
@@ -3295,7 +3301,7 @@ def change():
                 session.pop('DREAMER', None)
                 session.pop('DREAMER', None)
                 return '<meta http-equiv="refresh" content="0;url=/change" />'
                 return '<meta http-equiv="refresh" content="0;url=/change" />'
             else:
             else:
-                return render_template('index.html', title = '비밀번호 변경', enter = '변경', logo = data['name'], tn = 15)
+                return render_template('index.html', title = '비밀번호 변경', enter = '변경', logo = data['name'], tn = 15, login = nowlogin())
                 
                 
 @app.route('/check/<name>')
 @app.route('/check/<name>')
 def check(name = None, sub = None, number = None):
 def check(name = None, sub = None, number = None):
@@ -3318,9 +3324,9 @@ def check(name = None, sub = None, number = None):
                         except:
                         except:
                             break
                             break
                         i = i + 1
                         i = i + 1
-                    return render_template('index.html', title = '다중 검사', logo = data['name'], tn = 22, rows = c)
+                    return render_template('index.html', title = '다중 검사', logo = data['name'], tn = 22, rows = c, login = nowlogin())
                 else:
                 else:
-                    return render_template('index.html', title = '다중 검사', logo = data['name'], tn = 22, rows = '')
+                    return render_template('index.html', title = '다중 검사', logo = data['name'], tn = 22, rows = '', login = nowlogin())
             else:
             else:
                 curs.execute("select * from login where user = '" + pymysql.escape_string(name) + "' order by today desc")
                 curs.execute("select * from login where user = '" + pymysql.escape_string(name) + "' order by today desc")
                 row = curs.fetchall()
                 row = curs.fetchall()
@@ -3333,9 +3339,9 @@ def check(name = None, sub = None, number = None):
                         except:
                         except:
                             break
                             break
                         i = i + 1
                         i = i + 1
-                    return render_template('index.html', title = '다중 검사', logo = data['name'], tn = 22, rows = c)
+                    return render_template('index.html', title = '다중 검사', logo = data['name'], tn = 22, rows = c, login = nowlogin())
                 else:
                 else:
-                    return render_template('index.html', title = '다중 검사', logo = data['name'], tn = 22, rows = '')
+                    return render_template('index.html', title = '다중 검사', logo = data['name'], tn = 22, rows = '', login = nowlogin())
         else:
         else:
             return '<meta http-equiv="refresh" content="0;url=/error/3" />'
             return '<meta http-equiv="refresh" content="0;url=/error/3" />'
 
 
@@ -3377,7 +3383,7 @@ def register():
         if(ban == 1):
         if(ban == 1):
             return '<meta http-equiv="refresh" content="0;url=/ban" />'
             return '<meta http-equiv="refresh" content="0;url=/ban" />'
         else:
         else:
-            return render_template('index.html', title = '회원가입', enter = '회원가입', logo = data['name'], tn = 15)
+            return render_template('index.html', title = '회원가입', enter = '회원가입', logo = data['name'], tn = 15, login = nowlogin())
 
 
 @app.route('/logout')
 @app.route('/logout')
 def logout():
 def logout():
@@ -3430,7 +3436,7 @@ def ban(name = None):
                     else:
                     else:
                         now = '차단'
                         now = '차단'
                         
                         
-                return render_template('index.html', title = name, page = parse.quote(name), logo = data['name'], tn = 16, now = now, today = getnow(), sub = '차단')
+                return render_template('index.html', title = name, page = parse.quote(name), logo = data['name'], tn = 16, now = now, today = getnow(), sub = '차단', login = nowlogin())
             else:
             else:
                 return '<meta http-equiv="refresh" content="0;url=/error/3" />'
                 return '<meta http-equiv="refresh" content="0;url=/error/3" />'
 
 
@@ -3462,7 +3468,7 @@ def acl(name = None):
                     now = '유저 이상'
                     now = '유저 이상'
                 else:
                 else:
                     now = '일반'
                     now = '일반'
-                return render_template('index.html', title = name, page = parse.quote(name), logo = data['name'], tn = 19, now = '현재 ACL 상태는 ' + now, sub = 'ACL')
+                return render_template('index.html', title = name, page = parse.quote(name), logo = data['name'], tn = 19, now = '현재 ACL 상태는 ' + now, sub = 'ACL', login = nowlogin())
             else:
             else:
                 return '<meta http-equiv="refresh" content="0;url=/w/' + parse.quote(name) + '" />' 
                 return '<meta http-equiv="refresh" content="0;url=/w/' + parse.quote(name) + '" />' 
         else:
         else:
@@ -3495,7 +3501,7 @@ def admin(name = None):
                     now = '권한 해제'
                     now = '권한 해제'
                 else:
                 else:
                     now = '권한 부여'
                     now = '권한 부여'
-                return render_template('index.html', title = name, page = parse.quote(name), logo = data['name'], tn = 18, now = now, sub = '권한 부여')
+                return render_template('index.html', title = name, page = parse.quote(name), logo = data['name'], tn = 18, now = now, sub = '권한 부여', login = nowlogin())
             else:
             else:
                 return '<meta http-equiv="refresh" content="0;url=/error/5" />'
                 return '<meta http-equiv="refresh" content="0;url=/error/5" />'
         else:
         else:
@@ -3555,7 +3561,7 @@ def aban():
                         end = '영구 차단 상태 입니다. / 사유 : ' + row[0]['why']                
                         end = '영구 차단 상태 입니다. / 사유 : ' + row[0]['why']                
     else:
     else:
         end = '권한이 맞지 않는 상태 입니다.'
         end = '권한이 맞지 않는 상태 입니다.'
-    return render_template('index.html', title = '권한 오류', logo = data['name'], data = end), 401
+    return render_template('index.html', title = '권한 오류', logo = data['name'], data = end, login = nowlogin()), 401
    
    
 @app.route('/w/<path:name>/r/<int:a>/diff/<int:b>')
 @app.route('/w/<path:name>/r/<int:a>/diff/<int:b>')
 def diff(name = None, a = None, b = None):
 def diff(name = None, a = None, b = None):
@@ -3578,7 +3584,7 @@ def diff(name = None, a = None, b = None):
             
             
             c = '<pre>' + c + '</pre>'
             c = '<pre>' + c + '</pre>'
             
             
-            return render_template('index.html', title = name, logo = data['name'], data = c, sub = '비교')
+            return render_template('index.html', title = name, logo = data['name'], data = c, sub = '비교', login = nowlogin())
         else:
         else:
             return '<meta http-equiv="refresh" content="0;url=/history/' + parse.quote(name) + '" />'
             return '<meta http-equiv="refresh" content="0;url=/history/' + parse.quote(name) + '" />'
     else:
     else:
@@ -3612,7 +3618,7 @@ def user():
         else:
         else:
             ip = '<a class="not_thing" href="/w/' + parse.quote('사용자:' + ip) + '">' + ip + '</a>'
             ip = '<a class="not_thing" href="/w/' + parse.quote('사용자:' + ip) + '">' + ip + '</a>'
         
         
-    return render_template('index.html', title = '유저 메뉴', logo = data['name'], data = ip + '<br><br><span>권한 상태 : ' + acl + '<br><br><li><a href="/login">로그인</a></li><li><a href="/logout">로그아웃</a></li><li><a href="/register">회원가입</a></li><li><a href="/change">비밀번호 변경</a></li>')
+    return render_template('index.html', title = '유저 메뉴', logo = data['name'], data = ip + '<br><br><span>권한 상태 : ' + acl + '<br><br><li><a href="/login">로그인</a></li><li><a href="/logout">로그아웃</a></li><li><a href="/register">회원가입</a></li><li><a href="/change">비밀번호 변경</a></li>', login = nowlogin())
 
 
 @app.route('/random')
 @app.route('/random')
 def random():
 def random():
@@ -3626,45 +3632,45 @@ def random():
 @app.route('/error/<int:num>')
 @app.route('/error/<int:num>')
 def error(num = None):
 def error(num = None):
     if(num == 1):
     if(num == 1):
-        return render_template('index.html', title = '권한 오류', logo = data['name'], data = '비 로그인 상태 입니다.'), 401
+        return render_template('index.html', title = '권한 오류', logo = data['name'], data = '비 로그인 상태 입니다.', login = nowlogin()), 401
     elif(num == 2):
     elif(num == 2):
-        return render_template('index.html', title = '권한 오류', logo = data['name'], data = '이 계정이 없습니다.'), 401
+        return render_template('index.html', title = '권한 오류', logo = data['name'], data = '이 계정이 없습니다.', login = nowlogin()), 401
     elif(num == 3):
     elif(num == 3):
-        return render_template('index.html', title = '권한 오류', logo = data['name'], data = '권한이 모자랍니다.'), 401
+        return render_template('index.html', title = '권한 오류', logo = data['name'], data = '권한이 모자랍니다.', login = nowlogin()), 401
     elif(num == 4):
     elif(num == 4):
-        return render_template('index.html', title = '권한 오류', logo = data['name'], data = '관리자는 차단, 검사 할 수 없습니다.'), 401
+        return render_template('index.html', title = '권한 오류', logo = data['name'], data = '관리자는 차단, 검사 할 수 없습니다.', login = nowlogin()), 401
     elif(num == 5):
     elif(num == 5):
-        return render_template('index.html', title = '유저 오류', logo = data['name'], data = '그런 계정이 없습니다.'), 401
+        return render_template('index.html', title = '유저 오류', logo = data['name'], data = '그런 계정이 없습니다.', login = nowlogin()), 401
     elif(num == 6):
     elif(num == 6):
-        return render_template('index.html', title = '가입 오류', logo = data['name'], data = '동일한 아이디의 유저가 있습니다.'), 401
+        return render_template('index.html', title = '가입 오류', logo = data['name'], data = '동일한 아이디의 유저가 있습니다.', login = nowlogin()), 401
     elif(num == 7):
     elif(num == 7):
-        return render_template('index.html', title = '가입 오류', logo = data['name'], data = '아이디는 20글자보다 짧아야 합니다.'), 401
+        return render_template('index.html', title = '가입 오류', logo = data['name'], data = '아이디는 20글자보다 짧아야 합니다.', login = nowlogin()), 401
     elif(num == 8):
     elif(num == 8):
-        return render_template('index.html', title = '가입 오류', logo = data['name'], data = '아이디에는 한글과 알파벳과 공백만 허용 됩니다.'), 401
+        return render_template('index.html', title = '가입 오류', logo = data['name'], data = '아이디에는 한글과 알파벳과 공백만 허용 됩니다.', login = nowlogin()), 401
     elif(num == 9):
     elif(num == 9):
-        return render_template('index.html', title = '변경 오류', logo = data['name'], data = '그런 계정이 없습니다.'), 401
+        return render_template('index.html', title = '변경 오류', logo = data['name'], data = '그런 계정이 없습니다.', login = nowlogin()), 401
     elif(num == 10):
     elif(num == 10):
-        return render_template('index.html', title = '변경 오류', logo = data['name'], data = '비밀번호가 다릅니다.'), 401
+        return render_template('index.html', title = '변경 오류', logo = data['name'], data = '비밀번호가 다릅니다.', login = nowlogin()), 401
     elif(num == 11):
     elif(num == 11):
-        return render_template('index.html', title = '로그인 오류', logo = data['name'], data = '이미 로그인 되어 있습니다.'), 401
+        return render_template('index.html', title = '로그인 오류', logo = data['name'], data = '이미 로그인 되어 있습니다.', login = nowlogin()), 401
     elif(num == 12):
     elif(num == 12):
-        return render_template('index.html', title = '로그인 오류', logo = data['name'], data = '그런 계정이 없습니다.'), 401
+        return render_template('index.html', title = '로그인 오류', logo = data['name'], data = '그런 계정이 없습니다.', login = nowlogin()), 401
     elif(num == 13):
     elif(num == 13):
-        return render_template('index.html', title = '로그인 오류', logo = data['name'], data = '비밀번호가 다릅니다.'), 401
+        return render_template('index.html', title = '로그인 오류', logo = data['name'], data = '비밀번호가 다릅니다.', login = nowlogin()), 401
     elif(num == 14):
     elif(num == 14):
-        return render_template('index.html', title = '업로드 오류', logo = data['name'], data = 'jpg, gif, jpeg, png만 가능 합니다.'), 401
+        return render_template('index.html', title = '업로드 오류', logo = data['name'], data = 'jpg, gif, jpeg, png만 가능 합니다.', login = nowlogin()), 401
     elif(num == 15):
     elif(num == 15):
-        return render_template('index.html', title = '업로드 오류', logo = data['name'], data = '파일 명에 . / \ * < > | : ? 가 들어 갈 수 없습니다.'), 401
+        return render_template('index.html', title = '업로드 오류', logo = data['name'], data = '파일 명에 . / \ * < > | : ? 가 들어 갈 수 없습니다.', login = nowlogin()), 401
     elif(num == 16):
     elif(num == 16):
-        return render_template('index.html', title = '업로드 오류', logo = data['name'], data = '동일한 이름의 파일이 있습니다.'), 401
+        return render_template('index.html', title = '업로드 오류', logo = data['name'], data = '동일한 이름의 파일이 있습니다.', login = nowlogin()), 401
     elif(num == 17):
     elif(num == 17):
-        return render_template('index.html', title = '편집 오류', logo = data['name'], data = '편집 내용 기록에는 한글과 영어와 숫자, 공백만 허용 됩니다.'), 401
+        return render_template('index.html', title = '편집 오류', logo = data['name'], data = '편집 내용 기록에는 한글과 영어와 숫자, 공백만 허용 됩니다.', login = nowlogin()), 401
     elif(num == 18):
     elif(num == 18):
-        return render_template('index.html', title = '편집 오류', logo = data['name'], data = '내용이 원래 문서와 동일 합니다.'), 401
+        return render_template('index.html', title = '편집 오류', logo = data['name'], data = '내용이 원래 문서와 동일 합니다.', login = nowlogin()), 401
     elif(num == 19):
     elif(num == 19):
-        return render_template('index.html', title = '이동 오류', logo = data['name'], data = '이동 하려는 곳에 문서가 이미 있습니다.'), 401
+        return render_template('index.html', title = '이동 오류', logo = data['name'], data = '이동 하려는 곳에 문서가 이미 있습니다.', login = nowlogin()), 401
     elif(num == 20):
     elif(num == 20):
-        return render_template('index.html', title = '비밀번호 오류', logo = data['name'], data = '재 확인이랑 비밀번호가 다릅니다.'), 401
+        return render_template('index.html', title = '비밀번호 오류', logo = data['name'], data = '재 확인이랑 비밀번호가 다릅니다.', login = nowlogin()), 401
     else:
     else:
         return '<meta http-equiv="refresh" content="0;url=/" />'
         return '<meta http-equiv="refresh" content="0;url=/" />'
 
 

+ 141 - 3
static/font-awesome/css/font-awesome.css

@@ -1,13 +1,13 @@
 /*!
 /*!
- *  Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome
+ *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
  *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
  *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
  */
  */
 /* FONT PATH
 /* FONT PATH
  * -------------------------- */
  * -------------------------- */
 @font-face {
 @font-face {
   font-family: 'FontAwesome';
   font-family: 'FontAwesome';
-  src: url('../fonts/fontawesome-webfont.eot?v=4.6.3');
-  src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.6.3') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.6.3') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.6.3') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.6.3') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular') format('svg');
+  src: url('../fonts/fontawesome-webfont.eot?v=4.7.0');
+  src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');
   font-weight: normal;
   font-weight: normal;
   font-style: normal;
   font-style: normal;
 }
 }
@@ -1832,6 +1832,7 @@
   content: "\f23e";
   content: "\f23e";
 }
 }
 .fa-battery-4:before,
 .fa-battery-4:before,
+.fa-battery:before,
 .fa-battery-full:before {
 .fa-battery-full:before {
   content: "\f240";
   content: "\f240";
 }
 }
@@ -2178,6 +2179,143 @@
 .fa-font-awesome:before {
 .fa-font-awesome:before {
   content: "\f2b4";
   content: "\f2b4";
 }
 }
+.fa-handshake-o:before {
+  content: "\f2b5";
+}
+.fa-envelope-open:before {
+  content: "\f2b6";
+}
+.fa-envelope-open-o:before {
+  content: "\f2b7";
+}
+.fa-linode:before {
+  content: "\f2b8";
+}
+.fa-address-book:before {
+  content: "\f2b9";
+}
+.fa-address-book-o:before {
+  content: "\f2ba";
+}
+.fa-vcard:before,
+.fa-address-card:before {
+  content: "\f2bb";
+}
+.fa-vcard-o:before,
+.fa-address-card-o:before {
+  content: "\f2bc";
+}
+.fa-user-circle:before {
+  content: "\f2bd";
+}
+.fa-user-circle-o:before {
+  content: "\f2be";
+}
+.fa-user-o:before {
+  content: "\f2c0";
+}
+.fa-id-badge:before {
+  content: "\f2c1";
+}
+.fa-drivers-license:before,
+.fa-id-card:before {
+  content: "\f2c2";
+}
+.fa-drivers-license-o:before,
+.fa-id-card-o:before {
+  content: "\f2c3";
+}
+.fa-quora:before {
+  content: "\f2c4";
+}
+.fa-free-code-camp:before {
+  content: "\f2c5";
+}
+.fa-telegram:before {
+  content: "\f2c6";
+}
+.fa-thermometer-4:before,
+.fa-thermometer:before,
+.fa-thermometer-full:before {
+  content: "\f2c7";
+}
+.fa-thermometer-3:before,
+.fa-thermometer-three-quarters:before {
+  content: "\f2c8";
+}
+.fa-thermometer-2:before,
+.fa-thermometer-half:before {
+  content: "\f2c9";
+}
+.fa-thermometer-1:before,
+.fa-thermometer-quarter:before {
+  content: "\f2ca";
+}
+.fa-thermometer-0:before,
+.fa-thermometer-empty:before {
+  content: "\f2cb";
+}
+.fa-shower:before {
+  content: "\f2cc";
+}
+.fa-bathtub:before,
+.fa-s15:before,
+.fa-bath:before {
+  content: "\f2cd";
+}
+.fa-podcast:before {
+  content: "\f2ce";
+}
+.fa-window-maximize:before {
+  content: "\f2d0";
+}
+.fa-window-minimize:before {
+  content: "\f2d1";
+}
+.fa-window-restore:before {
+  content: "\f2d2";
+}
+.fa-times-rectangle:before,
+.fa-window-close:before {
+  content: "\f2d3";
+}
+.fa-times-rectangle-o:before,
+.fa-window-close-o:before {
+  content: "\f2d4";
+}
+.fa-bandcamp:before {
+  content: "\f2d5";
+}
+.fa-grav:before {
+  content: "\f2d6";
+}
+.fa-etsy:before {
+  content: "\f2d7";
+}
+.fa-imdb:before {
+  content: "\f2d8";
+}
+.fa-ravelry:before {
+  content: "\f2d9";
+}
+.fa-eercast:before {
+  content: "\f2da";
+}
+.fa-microchip:before {
+  content: "\f2db";
+}
+.fa-snowflake-o:before {
+  content: "\f2dc";
+}
+.fa-superpowers:before {
+  content: "\f2dd";
+}
+.fa-wpexplorer:before {
+  content: "\f2de";
+}
+.fa-meetup:before {
+  content: "\f2e0";
+}
 .sr-only {
 .sr-only {
   position: absolute;
   position: absolute;
   width: 1px;
   width: 1px;

File diff suppressed because it is too large
+ 1 - 1
static/font-awesome/css/font-awesome.min.css


BIN
static/font-awesome/fonts/FontAwesome.otf


BIN
static/font-awesome/fonts/fontawesome-webfont.eot


File diff suppressed because it is too large
+ 6 - 193
static/font-awesome/fonts/fontawesome-webfont.svg


BIN
static/font-awesome/fonts/fontawesome-webfont.ttf


BIN
static/font-awesome/fonts/fontawesome-webfont.woff


BIN
static/font-awesome/fonts/fontawesome-webfont.woff2


+ 1 - 1
static/font-awesome/less/font-awesome.less

@@ -1,5 +1,5 @@
 /*!
 /*!
- *  Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome
+ *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
  *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
  *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
  */
  */
 
 

+ 56 - 0
static/font-awesome/less/icons.less

@@ -605,6 +605,7 @@
 .@{fa-css-prefix}-opencart:before { content: @fa-var-opencart; }
 .@{fa-css-prefix}-opencart:before { content: @fa-var-opencart; }
 .@{fa-css-prefix}-expeditedssl:before { content: @fa-var-expeditedssl; }
 .@{fa-css-prefix}-expeditedssl:before { content: @fa-var-expeditedssl; }
 .@{fa-css-prefix}-battery-4:before,
 .@{fa-css-prefix}-battery-4:before,
+.@{fa-css-prefix}-battery:before,
 .@{fa-css-prefix}-battery-full:before { content: @fa-var-battery-full; }
 .@{fa-css-prefix}-battery-full:before { content: @fa-var-battery-full; }
 .@{fa-css-prefix}-battery-3:before,
 .@{fa-css-prefix}-battery-3:before,
 .@{fa-css-prefix}-battery-three-quarters:before { content: @fa-var-battery-three-quarters; }
 .@{fa-css-prefix}-battery-three-quarters:before { content: @fa-var-battery-three-quarters; }
@@ -731,3 +732,58 @@
 .@{fa-css-prefix}-google-plus-official:before { content: @fa-var-google-plus-official; }
 .@{fa-css-prefix}-google-plus-official:before { content: @fa-var-google-plus-official; }
 .@{fa-css-prefix}-fa:before,
 .@{fa-css-prefix}-fa:before,
 .@{fa-css-prefix}-font-awesome:before { content: @fa-var-font-awesome; }
 .@{fa-css-prefix}-font-awesome:before { content: @fa-var-font-awesome; }
+.@{fa-css-prefix}-handshake-o:before { content: @fa-var-handshake-o; }
+.@{fa-css-prefix}-envelope-open:before { content: @fa-var-envelope-open; }
+.@{fa-css-prefix}-envelope-open-o:before { content: @fa-var-envelope-open-o; }
+.@{fa-css-prefix}-linode:before { content: @fa-var-linode; }
+.@{fa-css-prefix}-address-book:before { content: @fa-var-address-book; }
+.@{fa-css-prefix}-address-book-o:before { content: @fa-var-address-book-o; }
+.@{fa-css-prefix}-vcard:before,
+.@{fa-css-prefix}-address-card:before { content: @fa-var-address-card; }
+.@{fa-css-prefix}-vcard-o:before,
+.@{fa-css-prefix}-address-card-o:before { content: @fa-var-address-card-o; }
+.@{fa-css-prefix}-user-circle:before { content: @fa-var-user-circle; }
+.@{fa-css-prefix}-user-circle-o:before { content: @fa-var-user-circle-o; }
+.@{fa-css-prefix}-user-o:before { content: @fa-var-user-o; }
+.@{fa-css-prefix}-id-badge:before { content: @fa-var-id-badge; }
+.@{fa-css-prefix}-drivers-license:before,
+.@{fa-css-prefix}-id-card:before { content: @fa-var-id-card; }
+.@{fa-css-prefix}-drivers-license-o:before,
+.@{fa-css-prefix}-id-card-o:before { content: @fa-var-id-card-o; }
+.@{fa-css-prefix}-quora:before { content: @fa-var-quora; }
+.@{fa-css-prefix}-free-code-camp:before { content: @fa-var-free-code-camp; }
+.@{fa-css-prefix}-telegram:before { content: @fa-var-telegram; }
+.@{fa-css-prefix}-thermometer-4:before,
+.@{fa-css-prefix}-thermometer:before,
+.@{fa-css-prefix}-thermometer-full:before { content: @fa-var-thermometer-full; }
+.@{fa-css-prefix}-thermometer-3:before,
+.@{fa-css-prefix}-thermometer-three-quarters:before { content: @fa-var-thermometer-three-quarters; }
+.@{fa-css-prefix}-thermometer-2:before,
+.@{fa-css-prefix}-thermometer-half:before { content: @fa-var-thermometer-half; }
+.@{fa-css-prefix}-thermometer-1:before,
+.@{fa-css-prefix}-thermometer-quarter:before { content: @fa-var-thermometer-quarter; }
+.@{fa-css-prefix}-thermometer-0:before,
+.@{fa-css-prefix}-thermometer-empty:before { content: @fa-var-thermometer-empty; }
+.@{fa-css-prefix}-shower:before { content: @fa-var-shower; }
+.@{fa-css-prefix}-bathtub:before,
+.@{fa-css-prefix}-s15:before,
+.@{fa-css-prefix}-bath:before { content: @fa-var-bath; }
+.@{fa-css-prefix}-podcast:before { content: @fa-var-podcast; }
+.@{fa-css-prefix}-window-maximize:before { content: @fa-var-window-maximize; }
+.@{fa-css-prefix}-window-minimize:before { content: @fa-var-window-minimize; }
+.@{fa-css-prefix}-window-restore:before { content: @fa-var-window-restore; }
+.@{fa-css-prefix}-times-rectangle:before,
+.@{fa-css-prefix}-window-close:before { content: @fa-var-window-close; }
+.@{fa-css-prefix}-times-rectangle-o:before,
+.@{fa-css-prefix}-window-close-o:before { content: @fa-var-window-close-o; }
+.@{fa-css-prefix}-bandcamp:before { content: @fa-var-bandcamp; }
+.@{fa-css-prefix}-grav:before { content: @fa-var-grav; }
+.@{fa-css-prefix}-etsy:before { content: @fa-var-etsy; }
+.@{fa-css-prefix}-imdb:before { content: @fa-var-imdb; }
+.@{fa-css-prefix}-ravelry:before { content: @fa-var-ravelry; }
+.@{fa-css-prefix}-eercast:before { content: @fa-var-eercast; }
+.@{fa-css-prefix}-microchip:before { content: @fa-var-microchip; }
+.@{fa-css-prefix}-snowflake-o:before { content: @fa-var-snowflake-o; }
+.@{fa-css-prefix}-superpowers:before { content: @fa-var-superpowers; }
+.@{fa-css-prefix}-wpexplorer:before { content: @fa-var-wpexplorer; }
+.@{fa-css-prefix}-meetup:before { content: @fa-var-meetup; }

+ 58 - 2
static/font-awesome/less/variables.less

@@ -4,14 +4,18 @@
 @fa-font-path:        "../fonts";
 @fa-font-path:        "../fonts";
 @fa-font-size-base:   14px;
 @fa-font-size-base:   14px;
 @fa-line-height-base: 1;
 @fa-line-height-base: 1;
-//@fa-font-path:        "//netdna.bootstrapcdn.com/font-awesome/4.6.3/fonts"; // for referencing Bootstrap CDN font files directly
+//@fa-font-path:        "//netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts"; // for referencing Bootstrap CDN font files directly
 @fa-css-prefix:       fa;
 @fa-css-prefix:       fa;
-@fa-version:          "4.6.3";
+@fa-version:          "4.7.0";
 @fa-border-color:     #eee;
 @fa-border-color:     #eee;
 @fa-inverse:          #fff;
 @fa-inverse:          #fff;
 @fa-li-width:         (30em / 14);
 @fa-li-width:         (30em / 14);
 
 
 @fa-var-500px: "\f26e";
 @fa-var-500px: "\f26e";
+@fa-var-address-book: "\f2b9";
+@fa-var-address-book-o: "\f2ba";
+@fa-var-address-card: "\f2bb";
+@fa-var-address-card-o: "\f2bc";
 @fa-var-adjust: "\f042";
 @fa-var-adjust: "\f042";
 @fa-var-adn: "\f170";
 @fa-var-adn: "\f170";
 @fa-var-align-center: "\f037";
 @fa-var-align-center: "\f037";
@@ -60,11 +64,15 @@
 @fa-var-backward: "\f04a";
 @fa-var-backward: "\f04a";
 @fa-var-balance-scale: "\f24e";
 @fa-var-balance-scale: "\f24e";
 @fa-var-ban: "\f05e";
 @fa-var-ban: "\f05e";
+@fa-var-bandcamp: "\f2d5";
 @fa-var-bank: "\f19c";
 @fa-var-bank: "\f19c";
 @fa-var-bar-chart: "\f080";
 @fa-var-bar-chart: "\f080";
 @fa-var-bar-chart-o: "\f080";
 @fa-var-bar-chart-o: "\f080";
 @fa-var-barcode: "\f02a";
 @fa-var-barcode: "\f02a";
 @fa-var-bars: "\f0c9";
 @fa-var-bars: "\f0c9";
+@fa-var-bath: "\f2cd";
+@fa-var-bathtub: "\f2cd";
+@fa-var-battery: "\f240";
 @fa-var-battery-0: "\f244";
 @fa-var-battery-0: "\f244";
 @fa-var-battery-1: "\f243";
 @fa-var-battery-1: "\f243";
 @fa-var-battery-2: "\f242";
 @fa-var-battery-2: "\f242";
@@ -214,19 +222,25 @@
 @fa-var-dot-circle-o: "\f192";
 @fa-var-dot-circle-o: "\f192";
 @fa-var-download: "\f019";
 @fa-var-download: "\f019";
 @fa-var-dribbble: "\f17d";
 @fa-var-dribbble: "\f17d";
+@fa-var-drivers-license: "\f2c2";
+@fa-var-drivers-license-o: "\f2c3";
 @fa-var-dropbox: "\f16b";
 @fa-var-dropbox: "\f16b";
 @fa-var-drupal: "\f1a9";
 @fa-var-drupal: "\f1a9";
 @fa-var-edge: "\f282";
 @fa-var-edge: "\f282";
 @fa-var-edit: "\f044";
 @fa-var-edit: "\f044";
+@fa-var-eercast: "\f2da";
 @fa-var-eject: "\f052";
 @fa-var-eject: "\f052";
 @fa-var-ellipsis-h: "\f141";
 @fa-var-ellipsis-h: "\f141";
 @fa-var-ellipsis-v: "\f142";
 @fa-var-ellipsis-v: "\f142";
 @fa-var-empire: "\f1d1";
 @fa-var-empire: "\f1d1";
 @fa-var-envelope: "\f0e0";
 @fa-var-envelope: "\f0e0";
 @fa-var-envelope-o: "\f003";
 @fa-var-envelope-o: "\f003";
+@fa-var-envelope-open: "\f2b6";
+@fa-var-envelope-open-o: "\f2b7";
 @fa-var-envelope-square: "\f199";
 @fa-var-envelope-square: "\f199";
 @fa-var-envira: "\f299";
 @fa-var-envira: "\f299";
 @fa-var-eraser: "\f12d";
 @fa-var-eraser: "\f12d";
+@fa-var-etsy: "\f2d7";
 @fa-var-eur: "\f153";
 @fa-var-eur: "\f153";
 @fa-var-euro: "\f153";
 @fa-var-euro: "\f153";
 @fa-var-exchange: "\f0ec";
 @fa-var-exchange: "\f0ec";
@@ -294,6 +308,7 @@
 @fa-var-forumbee: "\f211";
 @fa-var-forumbee: "\f211";
 @fa-var-forward: "\f04e";
 @fa-var-forward: "\f04e";
 @fa-var-foursquare: "\f180";
 @fa-var-foursquare: "\f180";
+@fa-var-free-code-camp: "\f2c5";
 @fa-var-frown-o: "\f119";
 @fa-var-frown-o: "\f119";
 @fa-var-futbol-o: "\f1e3";
 @fa-var-futbol-o: "\f1e3";
 @fa-var-gamepad: "\f11b";
 @fa-var-gamepad: "\f11b";
@@ -326,6 +341,7 @@
 @fa-var-google-wallet: "\f1ee";
 @fa-var-google-wallet: "\f1ee";
 @fa-var-graduation-cap: "\f19d";
 @fa-var-graduation-cap: "\f19d";
 @fa-var-gratipay: "\f184";
 @fa-var-gratipay: "\f184";
+@fa-var-grav: "\f2d6";
 @fa-var-group: "\f0c0";
 @fa-var-group: "\f0c0";
 @fa-var-h-square: "\f0fd";
 @fa-var-h-square: "\f0fd";
 @fa-var-hacker-news: "\f1d4";
 @fa-var-hacker-news: "\f1d4";
@@ -342,6 +358,7 @@
 @fa-var-hand-scissors-o: "\f257";
 @fa-var-hand-scissors-o: "\f257";
 @fa-var-hand-spock-o: "\f259";
 @fa-var-hand-spock-o: "\f259";
 @fa-var-hand-stop-o: "\f256";
 @fa-var-hand-stop-o: "\f256";
+@fa-var-handshake-o: "\f2b5";
 @fa-var-hard-of-hearing: "\f2a4";
 @fa-var-hard-of-hearing: "\f2a4";
 @fa-var-hashtag: "\f292";
 @fa-var-hashtag: "\f292";
 @fa-var-hdd-o: "\f0a0";
 @fa-var-hdd-o: "\f0a0";
@@ -365,8 +382,12 @@
 @fa-var-houzz: "\f27c";
 @fa-var-houzz: "\f27c";
 @fa-var-html5: "\f13b";
 @fa-var-html5: "\f13b";
 @fa-var-i-cursor: "\f246";
 @fa-var-i-cursor: "\f246";
+@fa-var-id-badge: "\f2c1";
+@fa-var-id-card: "\f2c2";
+@fa-var-id-card-o: "\f2c3";
 @fa-var-ils: "\f20b";
 @fa-var-ils: "\f20b";
 @fa-var-image: "\f03e";
 @fa-var-image: "\f03e";
+@fa-var-imdb: "\f2d8";
 @fa-var-inbox: "\f01c";
 @fa-var-inbox: "\f01c";
 @fa-var-indent: "\f03c";
 @fa-var-indent: "\f03c";
 @fa-var-industry: "\f275";
 @fa-var-industry: "\f275";
@@ -404,6 +425,7 @@
 @fa-var-link: "\f0c1";
 @fa-var-link: "\f0c1";
 @fa-var-linkedin: "\f0e1";
 @fa-var-linkedin: "\f0e1";
 @fa-var-linkedin-square: "\f08c";
 @fa-var-linkedin-square: "\f08c";
+@fa-var-linode: "\f2b8";
 @fa-var-linux: "\f17c";
 @fa-var-linux: "\f17c";
 @fa-var-list: "\f03a";
 @fa-var-list: "\f03a";
 @fa-var-list-alt: "\f022";
 @fa-var-list-alt: "\f022";
@@ -436,8 +458,10 @@
 @fa-var-meanpath: "\f20c";
 @fa-var-meanpath: "\f20c";
 @fa-var-medium: "\f23a";
 @fa-var-medium: "\f23a";
 @fa-var-medkit: "\f0fa";
 @fa-var-medkit: "\f0fa";
+@fa-var-meetup: "\f2e0";
 @fa-var-meh-o: "\f11a";
 @fa-var-meh-o: "\f11a";
 @fa-var-mercury: "\f223";
 @fa-var-mercury: "\f223";
+@fa-var-microchip: "\f2db";
 @fa-var-microphone: "\f130";
 @fa-var-microphone: "\f130";
 @fa-var-microphone-slash: "\f131";
 @fa-var-microphone-slash: "\f131";
 @fa-var-minus: "\f068";
 @fa-var-minus: "\f068";
@@ -502,6 +526,7 @@
 @fa-var-plus-circle: "\f055";
 @fa-var-plus-circle: "\f055";
 @fa-var-plus-square: "\f0fe";
 @fa-var-plus-square: "\f0fe";
 @fa-var-plus-square-o: "\f196";
 @fa-var-plus-square-o: "\f196";
+@fa-var-podcast: "\f2ce";
 @fa-var-power-off: "\f011";
 @fa-var-power-off: "\f011";
 @fa-var-print: "\f02f";
 @fa-var-print: "\f02f";
 @fa-var-product-hunt: "\f288";
 @fa-var-product-hunt: "\f288";
@@ -511,10 +536,12 @@
 @fa-var-question: "\f128";
 @fa-var-question: "\f128";
 @fa-var-question-circle: "\f059";
 @fa-var-question-circle: "\f059";
 @fa-var-question-circle-o: "\f29c";
 @fa-var-question-circle-o: "\f29c";
+@fa-var-quora: "\f2c4";
 @fa-var-quote-left: "\f10d";
 @fa-var-quote-left: "\f10d";
 @fa-var-quote-right: "\f10e";
 @fa-var-quote-right: "\f10e";
 @fa-var-ra: "\f1d0";
 @fa-var-ra: "\f1d0";
 @fa-var-random: "\f074";
 @fa-var-random: "\f074";
+@fa-var-ravelry: "\f2d9";
 @fa-var-rebel: "\f1d0";
 @fa-var-rebel: "\f1d0";
 @fa-var-recycle: "\f1b8";
 @fa-var-recycle: "\f1b8";
 @fa-var-reddit: "\f1a1";
 @fa-var-reddit: "\f1a1";
@@ -541,6 +568,7 @@
 @fa-var-rub: "\f158";
 @fa-var-rub: "\f158";
 @fa-var-ruble: "\f158";
 @fa-var-ruble: "\f158";
 @fa-var-rupee: "\f156";
 @fa-var-rupee: "\f156";
+@fa-var-s15: "\f2cd";
 @fa-var-safari: "\f267";
 @fa-var-safari: "\f267";
 @fa-var-save: "\f0c7";
 @fa-var-save: "\f0c7";
 @fa-var-scissors: "\f0c4";
 @fa-var-scissors: "\f0c4";
@@ -565,6 +593,7 @@
 @fa-var-shopping-bag: "\f290";
 @fa-var-shopping-bag: "\f290";
 @fa-var-shopping-basket: "\f291";
 @fa-var-shopping-basket: "\f291";
 @fa-var-shopping-cart: "\f07a";
 @fa-var-shopping-cart: "\f07a";
+@fa-var-shower: "\f2cc";
 @fa-var-sign-in: "\f090";
 @fa-var-sign-in: "\f090";
 @fa-var-sign-language: "\f2a7";
 @fa-var-sign-language: "\f2a7";
 @fa-var-sign-out: "\f08b";
 @fa-var-sign-out: "\f08b";
@@ -581,6 +610,7 @@
 @fa-var-snapchat: "\f2ab";
 @fa-var-snapchat: "\f2ab";
 @fa-var-snapchat-ghost: "\f2ac";
 @fa-var-snapchat-ghost: "\f2ac";
 @fa-var-snapchat-square: "\f2ad";
 @fa-var-snapchat-square: "\f2ad";
+@fa-var-snowflake-o: "\f2dc";
 @fa-var-soccer-ball-o: "\f1e3";
 @fa-var-soccer-ball-o: "\f1e3";
 @fa-var-sort: "\f0dc";
 @fa-var-sort: "\f0dc";
 @fa-var-sort-alpha-asc: "\f15d";
 @fa-var-sort-alpha-asc: "\f15d";
@@ -626,6 +656,7 @@
 @fa-var-subway: "\f239";
 @fa-var-subway: "\f239";
 @fa-var-suitcase: "\f0f2";
 @fa-var-suitcase: "\f0f2";
 @fa-var-sun-o: "\f185";
 @fa-var-sun-o: "\f185";
+@fa-var-superpowers: "\f2dd";
 @fa-var-superscript: "\f12b";
 @fa-var-superscript: "\f12b";
 @fa-var-support: "\f1cd";
 @fa-var-support: "\f1cd";
 @fa-var-table: "\f0ce";
 @fa-var-table: "\f0ce";
@@ -635,6 +666,7 @@
 @fa-var-tags: "\f02c";
 @fa-var-tags: "\f02c";
 @fa-var-tasks: "\f0ae";
 @fa-var-tasks: "\f0ae";
 @fa-var-taxi: "\f1ba";
 @fa-var-taxi: "\f1ba";
+@fa-var-telegram: "\f2c6";
 @fa-var-television: "\f26c";
 @fa-var-television: "\f26c";
 @fa-var-tencent-weibo: "\f1d5";
 @fa-var-tencent-weibo: "\f1d5";
 @fa-var-terminal: "\f120";
 @fa-var-terminal: "\f120";
@@ -644,6 +676,17 @@
 @fa-var-th-large: "\f009";
 @fa-var-th-large: "\f009";
 @fa-var-th-list: "\f00b";
 @fa-var-th-list: "\f00b";
 @fa-var-themeisle: "\f2b2";
 @fa-var-themeisle: "\f2b2";
+@fa-var-thermometer: "\f2c7";
+@fa-var-thermometer-0: "\f2cb";
+@fa-var-thermometer-1: "\f2ca";
+@fa-var-thermometer-2: "\f2c9";
+@fa-var-thermometer-3: "\f2c8";
+@fa-var-thermometer-4: "\f2c7";
+@fa-var-thermometer-empty: "\f2cb";
+@fa-var-thermometer-full: "\f2c7";
+@fa-var-thermometer-half: "\f2c9";
+@fa-var-thermometer-quarter: "\f2ca";
+@fa-var-thermometer-three-quarters: "\f2c8";
 @fa-var-thumb-tack: "\f08d";
 @fa-var-thumb-tack: "\f08d";
 @fa-var-thumbs-down: "\f165";
 @fa-var-thumbs-down: "\f165";
 @fa-var-thumbs-o-down: "\f088";
 @fa-var-thumbs-o-down: "\f088";
@@ -653,6 +696,8 @@
 @fa-var-times: "\f00d";
 @fa-var-times: "\f00d";
 @fa-var-times-circle: "\f057";
 @fa-var-times-circle: "\f057";
 @fa-var-times-circle-o: "\f05c";
 @fa-var-times-circle-o: "\f05c";
+@fa-var-times-rectangle: "\f2d3";
+@fa-var-times-rectangle-o: "\f2d4";
 @fa-var-tint: "\f043";
 @fa-var-tint: "\f043";
 @fa-var-toggle-down: "\f150";
 @fa-var-toggle-down: "\f150";
 @fa-var-toggle-left: "\f191";
 @fa-var-toggle-left: "\f191";
@@ -693,11 +738,16 @@
 @fa-var-usb: "\f287";
 @fa-var-usb: "\f287";
 @fa-var-usd: "\f155";
 @fa-var-usd: "\f155";
 @fa-var-user: "\f007";
 @fa-var-user: "\f007";
+@fa-var-user-circle: "\f2bd";
+@fa-var-user-circle-o: "\f2be";
 @fa-var-user-md: "\f0f0";
 @fa-var-user-md: "\f0f0";
+@fa-var-user-o: "\f2c0";
 @fa-var-user-plus: "\f234";
 @fa-var-user-plus: "\f234";
 @fa-var-user-secret: "\f21b";
 @fa-var-user-secret: "\f21b";
 @fa-var-user-times: "\f235";
 @fa-var-user-times: "\f235";
 @fa-var-users: "\f0c0";
 @fa-var-users: "\f0c0";
+@fa-var-vcard: "\f2bb";
+@fa-var-vcard-o: "\f2bc";
 @fa-var-venus: "\f221";
 @fa-var-venus: "\f221";
 @fa-var-venus-double: "\f226";
 @fa-var-venus-double: "\f226";
 @fa-var-venus-mars: "\f228";
 @fa-var-venus-mars: "\f228";
@@ -722,10 +772,16 @@
 @fa-var-wheelchair-alt: "\f29b";
 @fa-var-wheelchair-alt: "\f29b";
 @fa-var-wifi: "\f1eb";
 @fa-var-wifi: "\f1eb";
 @fa-var-wikipedia-w: "\f266";
 @fa-var-wikipedia-w: "\f266";
+@fa-var-window-close: "\f2d3";
+@fa-var-window-close-o: "\f2d4";
+@fa-var-window-maximize: "\f2d0";
+@fa-var-window-minimize: "\f2d1";
+@fa-var-window-restore: "\f2d2";
 @fa-var-windows: "\f17a";
 @fa-var-windows: "\f17a";
 @fa-var-won: "\f159";
 @fa-var-won: "\f159";
 @fa-var-wordpress: "\f19a";
 @fa-var-wordpress: "\f19a";
 @fa-var-wpbeginner: "\f297";
 @fa-var-wpbeginner: "\f297";
+@fa-var-wpexplorer: "\f2de";
 @fa-var-wpforms: "\f298";
 @fa-var-wpforms: "\f298";
 @fa-var-wrench: "\f0ad";
 @fa-var-wrench: "\f0ad";
 @fa-var-xing: "\f168";
 @fa-var-xing: "\f168";

+ 56 - 0
static/font-awesome/scss/_icons.scss

@@ -605,6 +605,7 @@
 .#{$fa-css-prefix}-opencart:before { content: $fa-var-opencart; }
 .#{$fa-css-prefix}-opencart:before { content: $fa-var-opencart; }
 .#{$fa-css-prefix}-expeditedssl:before { content: $fa-var-expeditedssl; }
 .#{$fa-css-prefix}-expeditedssl:before { content: $fa-var-expeditedssl; }
 .#{$fa-css-prefix}-battery-4:before,
 .#{$fa-css-prefix}-battery-4:before,
+.#{$fa-css-prefix}-battery:before,
 .#{$fa-css-prefix}-battery-full:before { content: $fa-var-battery-full; }
 .#{$fa-css-prefix}-battery-full:before { content: $fa-var-battery-full; }
 .#{$fa-css-prefix}-battery-3:before,
 .#{$fa-css-prefix}-battery-3:before,
 .#{$fa-css-prefix}-battery-three-quarters:before { content: $fa-var-battery-three-quarters; }
 .#{$fa-css-prefix}-battery-three-quarters:before { content: $fa-var-battery-three-quarters; }
@@ -731,3 +732,58 @@
 .#{$fa-css-prefix}-google-plus-official:before { content: $fa-var-google-plus-official; }
 .#{$fa-css-prefix}-google-plus-official:before { content: $fa-var-google-plus-official; }
 .#{$fa-css-prefix}-fa:before,
 .#{$fa-css-prefix}-fa:before,
 .#{$fa-css-prefix}-font-awesome:before { content: $fa-var-font-awesome; }
 .#{$fa-css-prefix}-font-awesome:before { content: $fa-var-font-awesome; }
+.#{$fa-css-prefix}-handshake-o:before { content: $fa-var-handshake-o; }
+.#{$fa-css-prefix}-envelope-open:before { content: $fa-var-envelope-open; }
+.#{$fa-css-prefix}-envelope-open-o:before { content: $fa-var-envelope-open-o; }
+.#{$fa-css-prefix}-linode:before { content: $fa-var-linode; }
+.#{$fa-css-prefix}-address-book:before { content: $fa-var-address-book; }
+.#{$fa-css-prefix}-address-book-o:before { content: $fa-var-address-book-o; }
+.#{$fa-css-prefix}-vcard:before,
+.#{$fa-css-prefix}-address-card:before { content: $fa-var-address-card; }
+.#{$fa-css-prefix}-vcard-o:before,
+.#{$fa-css-prefix}-address-card-o:before { content: $fa-var-address-card-o; }
+.#{$fa-css-prefix}-user-circle:before { content: $fa-var-user-circle; }
+.#{$fa-css-prefix}-user-circle-o:before { content: $fa-var-user-circle-o; }
+.#{$fa-css-prefix}-user-o:before { content: $fa-var-user-o; }
+.#{$fa-css-prefix}-id-badge:before { content: $fa-var-id-badge; }
+.#{$fa-css-prefix}-drivers-license:before,
+.#{$fa-css-prefix}-id-card:before { content: $fa-var-id-card; }
+.#{$fa-css-prefix}-drivers-license-o:before,
+.#{$fa-css-prefix}-id-card-o:before { content: $fa-var-id-card-o; }
+.#{$fa-css-prefix}-quora:before { content: $fa-var-quora; }
+.#{$fa-css-prefix}-free-code-camp:before { content: $fa-var-free-code-camp; }
+.#{$fa-css-prefix}-telegram:before { content: $fa-var-telegram; }
+.#{$fa-css-prefix}-thermometer-4:before,
+.#{$fa-css-prefix}-thermometer:before,
+.#{$fa-css-prefix}-thermometer-full:before { content: $fa-var-thermometer-full; }
+.#{$fa-css-prefix}-thermometer-3:before,
+.#{$fa-css-prefix}-thermometer-three-quarters:before { content: $fa-var-thermometer-three-quarters; }
+.#{$fa-css-prefix}-thermometer-2:before,
+.#{$fa-css-prefix}-thermometer-half:before { content: $fa-var-thermometer-half; }
+.#{$fa-css-prefix}-thermometer-1:before,
+.#{$fa-css-prefix}-thermometer-quarter:before { content: $fa-var-thermometer-quarter; }
+.#{$fa-css-prefix}-thermometer-0:before,
+.#{$fa-css-prefix}-thermometer-empty:before { content: $fa-var-thermometer-empty; }
+.#{$fa-css-prefix}-shower:before { content: $fa-var-shower; }
+.#{$fa-css-prefix}-bathtub:before,
+.#{$fa-css-prefix}-s15:before,
+.#{$fa-css-prefix}-bath:before { content: $fa-var-bath; }
+.#{$fa-css-prefix}-podcast:before { content: $fa-var-podcast; }
+.#{$fa-css-prefix}-window-maximize:before { content: $fa-var-window-maximize; }
+.#{$fa-css-prefix}-window-minimize:before { content: $fa-var-window-minimize; }
+.#{$fa-css-prefix}-window-restore:before { content: $fa-var-window-restore; }
+.#{$fa-css-prefix}-times-rectangle:before,
+.#{$fa-css-prefix}-window-close:before { content: $fa-var-window-close; }
+.#{$fa-css-prefix}-times-rectangle-o:before,
+.#{$fa-css-prefix}-window-close-o:before { content: $fa-var-window-close-o; }
+.#{$fa-css-prefix}-bandcamp:before { content: $fa-var-bandcamp; }
+.#{$fa-css-prefix}-grav:before { content: $fa-var-grav; }
+.#{$fa-css-prefix}-etsy:before { content: $fa-var-etsy; }
+.#{$fa-css-prefix}-imdb:before { content: $fa-var-imdb; }
+.#{$fa-css-prefix}-ravelry:before { content: $fa-var-ravelry; }
+.#{$fa-css-prefix}-eercast:before { content: $fa-var-eercast; }
+.#{$fa-css-prefix}-microchip:before { content: $fa-var-microchip; }
+.#{$fa-css-prefix}-snowflake-o:before { content: $fa-var-snowflake-o; }
+.#{$fa-css-prefix}-superpowers:before { content: $fa-var-superpowers; }
+.#{$fa-css-prefix}-wpexplorer:before { content: $fa-var-wpexplorer; }
+.#{$fa-css-prefix}-meetup:before { content: $fa-var-meetup; }

+ 58 - 2
static/font-awesome/scss/_variables.scss

@@ -4,14 +4,18 @@
 $fa-font-path:        "../fonts" !default;
 $fa-font-path:        "../fonts" !default;
 $fa-font-size-base:   14px !default;
 $fa-font-size-base:   14px !default;
 $fa-line-height-base: 1 !default;
 $fa-line-height-base: 1 !default;
-//$fa-font-path:        "//netdna.bootstrapcdn.com/font-awesome/4.6.3/fonts" !default; // for referencing Bootstrap CDN font files directly
+//$fa-font-path:        "//netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts" !default; // for referencing Bootstrap CDN font files directly
 $fa-css-prefix:       fa !default;
 $fa-css-prefix:       fa !default;
-$fa-version:          "4.6.3" !default;
+$fa-version:          "4.7.0" !default;
 $fa-border-color:     #eee !default;
 $fa-border-color:     #eee !default;
 $fa-inverse:          #fff !default;
 $fa-inverse:          #fff !default;
 $fa-li-width:         (30em / 14) !default;
 $fa-li-width:         (30em / 14) !default;
 
 
 $fa-var-500px: "\f26e";
 $fa-var-500px: "\f26e";
+$fa-var-address-book: "\f2b9";
+$fa-var-address-book-o: "\f2ba";
+$fa-var-address-card: "\f2bb";
+$fa-var-address-card-o: "\f2bc";
 $fa-var-adjust: "\f042";
 $fa-var-adjust: "\f042";
 $fa-var-adn: "\f170";
 $fa-var-adn: "\f170";
 $fa-var-align-center: "\f037";
 $fa-var-align-center: "\f037";
@@ -60,11 +64,15 @@ $fa-var-automobile: "\f1b9";
 $fa-var-backward: "\f04a";
 $fa-var-backward: "\f04a";
 $fa-var-balance-scale: "\f24e";
 $fa-var-balance-scale: "\f24e";
 $fa-var-ban: "\f05e";
 $fa-var-ban: "\f05e";
+$fa-var-bandcamp: "\f2d5";
 $fa-var-bank: "\f19c";
 $fa-var-bank: "\f19c";
 $fa-var-bar-chart: "\f080";
 $fa-var-bar-chart: "\f080";
 $fa-var-bar-chart-o: "\f080";
 $fa-var-bar-chart-o: "\f080";
 $fa-var-barcode: "\f02a";
 $fa-var-barcode: "\f02a";
 $fa-var-bars: "\f0c9";
 $fa-var-bars: "\f0c9";
+$fa-var-bath: "\f2cd";
+$fa-var-bathtub: "\f2cd";
+$fa-var-battery: "\f240";
 $fa-var-battery-0: "\f244";
 $fa-var-battery-0: "\f244";
 $fa-var-battery-1: "\f243";
 $fa-var-battery-1: "\f243";
 $fa-var-battery-2: "\f242";
 $fa-var-battery-2: "\f242";
@@ -214,19 +222,25 @@ $fa-var-dollar: "\f155";
 $fa-var-dot-circle-o: "\f192";
 $fa-var-dot-circle-o: "\f192";
 $fa-var-download: "\f019";
 $fa-var-download: "\f019";
 $fa-var-dribbble: "\f17d";
 $fa-var-dribbble: "\f17d";
+$fa-var-drivers-license: "\f2c2";
+$fa-var-drivers-license-o: "\f2c3";
 $fa-var-dropbox: "\f16b";
 $fa-var-dropbox: "\f16b";
 $fa-var-drupal: "\f1a9";
 $fa-var-drupal: "\f1a9";
 $fa-var-edge: "\f282";
 $fa-var-edge: "\f282";
 $fa-var-edit: "\f044";
 $fa-var-edit: "\f044";
+$fa-var-eercast: "\f2da";
 $fa-var-eject: "\f052";
 $fa-var-eject: "\f052";
 $fa-var-ellipsis-h: "\f141";
 $fa-var-ellipsis-h: "\f141";
 $fa-var-ellipsis-v: "\f142";
 $fa-var-ellipsis-v: "\f142";
 $fa-var-empire: "\f1d1";
 $fa-var-empire: "\f1d1";
 $fa-var-envelope: "\f0e0";
 $fa-var-envelope: "\f0e0";
 $fa-var-envelope-o: "\f003";
 $fa-var-envelope-o: "\f003";
+$fa-var-envelope-open: "\f2b6";
+$fa-var-envelope-open-o: "\f2b7";
 $fa-var-envelope-square: "\f199";
 $fa-var-envelope-square: "\f199";
 $fa-var-envira: "\f299";
 $fa-var-envira: "\f299";
 $fa-var-eraser: "\f12d";
 $fa-var-eraser: "\f12d";
+$fa-var-etsy: "\f2d7";
 $fa-var-eur: "\f153";
 $fa-var-eur: "\f153";
 $fa-var-euro: "\f153";
 $fa-var-euro: "\f153";
 $fa-var-exchange: "\f0ec";
 $fa-var-exchange: "\f0ec";
@@ -294,6 +308,7 @@ $fa-var-fort-awesome: "\f286";
 $fa-var-forumbee: "\f211";
 $fa-var-forumbee: "\f211";
 $fa-var-forward: "\f04e";
 $fa-var-forward: "\f04e";
 $fa-var-foursquare: "\f180";
 $fa-var-foursquare: "\f180";
+$fa-var-free-code-camp: "\f2c5";
 $fa-var-frown-o: "\f119";
 $fa-var-frown-o: "\f119";
 $fa-var-futbol-o: "\f1e3";
 $fa-var-futbol-o: "\f1e3";
 $fa-var-gamepad: "\f11b";
 $fa-var-gamepad: "\f11b";
@@ -326,6 +341,7 @@ $fa-var-google-plus-square: "\f0d4";
 $fa-var-google-wallet: "\f1ee";
 $fa-var-google-wallet: "\f1ee";
 $fa-var-graduation-cap: "\f19d";
 $fa-var-graduation-cap: "\f19d";
 $fa-var-gratipay: "\f184";
 $fa-var-gratipay: "\f184";
+$fa-var-grav: "\f2d6";
 $fa-var-group: "\f0c0";
 $fa-var-group: "\f0c0";
 $fa-var-h-square: "\f0fd";
 $fa-var-h-square: "\f0fd";
 $fa-var-hacker-news: "\f1d4";
 $fa-var-hacker-news: "\f1d4";
@@ -342,6 +358,7 @@ $fa-var-hand-rock-o: "\f255";
 $fa-var-hand-scissors-o: "\f257";
 $fa-var-hand-scissors-o: "\f257";
 $fa-var-hand-spock-o: "\f259";
 $fa-var-hand-spock-o: "\f259";
 $fa-var-hand-stop-o: "\f256";
 $fa-var-hand-stop-o: "\f256";
+$fa-var-handshake-o: "\f2b5";
 $fa-var-hard-of-hearing: "\f2a4";
 $fa-var-hard-of-hearing: "\f2a4";
 $fa-var-hashtag: "\f292";
 $fa-var-hashtag: "\f292";
 $fa-var-hdd-o: "\f0a0";
 $fa-var-hdd-o: "\f0a0";
@@ -365,8 +382,12 @@ $fa-var-hourglass-start: "\f251";
 $fa-var-houzz: "\f27c";
 $fa-var-houzz: "\f27c";
 $fa-var-html5: "\f13b";
 $fa-var-html5: "\f13b";
 $fa-var-i-cursor: "\f246";
 $fa-var-i-cursor: "\f246";
+$fa-var-id-badge: "\f2c1";
+$fa-var-id-card: "\f2c2";
+$fa-var-id-card-o: "\f2c3";
 $fa-var-ils: "\f20b";
 $fa-var-ils: "\f20b";
 $fa-var-image: "\f03e";
 $fa-var-image: "\f03e";
+$fa-var-imdb: "\f2d8";
 $fa-var-inbox: "\f01c";
 $fa-var-inbox: "\f01c";
 $fa-var-indent: "\f03c";
 $fa-var-indent: "\f03c";
 $fa-var-industry: "\f275";
 $fa-var-industry: "\f275";
@@ -404,6 +425,7 @@ $fa-var-line-chart: "\f201";
 $fa-var-link: "\f0c1";
 $fa-var-link: "\f0c1";
 $fa-var-linkedin: "\f0e1";
 $fa-var-linkedin: "\f0e1";
 $fa-var-linkedin-square: "\f08c";
 $fa-var-linkedin-square: "\f08c";
+$fa-var-linode: "\f2b8";
 $fa-var-linux: "\f17c";
 $fa-var-linux: "\f17c";
 $fa-var-list: "\f03a";
 $fa-var-list: "\f03a";
 $fa-var-list-alt: "\f022";
 $fa-var-list-alt: "\f022";
@@ -436,8 +458,10 @@ $fa-var-maxcdn: "\f136";
 $fa-var-meanpath: "\f20c";
 $fa-var-meanpath: "\f20c";
 $fa-var-medium: "\f23a";
 $fa-var-medium: "\f23a";
 $fa-var-medkit: "\f0fa";
 $fa-var-medkit: "\f0fa";
+$fa-var-meetup: "\f2e0";
 $fa-var-meh-o: "\f11a";
 $fa-var-meh-o: "\f11a";
 $fa-var-mercury: "\f223";
 $fa-var-mercury: "\f223";
+$fa-var-microchip: "\f2db";
 $fa-var-microphone: "\f130";
 $fa-var-microphone: "\f130";
 $fa-var-microphone-slash: "\f131";
 $fa-var-microphone-slash: "\f131";
 $fa-var-minus: "\f068";
 $fa-var-minus: "\f068";
@@ -502,6 +526,7 @@ $fa-var-plus: "\f067";
 $fa-var-plus-circle: "\f055";
 $fa-var-plus-circle: "\f055";
 $fa-var-plus-square: "\f0fe";
 $fa-var-plus-square: "\f0fe";
 $fa-var-plus-square-o: "\f196";
 $fa-var-plus-square-o: "\f196";
+$fa-var-podcast: "\f2ce";
 $fa-var-power-off: "\f011";
 $fa-var-power-off: "\f011";
 $fa-var-print: "\f02f";
 $fa-var-print: "\f02f";
 $fa-var-product-hunt: "\f288";
 $fa-var-product-hunt: "\f288";
@@ -511,10 +536,12 @@ $fa-var-qrcode: "\f029";
 $fa-var-question: "\f128";
 $fa-var-question: "\f128";
 $fa-var-question-circle: "\f059";
 $fa-var-question-circle: "\f059";
 $fa-var-question-circle-o: "\f29c";
 $fa-var-question-circle-o: "\f29c";
+$fa-var-quora: "\f2c4";
 $fa-var-quote-left: "\f10d";
 $fa-var-quote-left: "\f10d";
 $fa-var-quote-right: "\f10e";
 $fa-var-quote-right: "\f10e";
 $fa-var-ra: "\f1d0";
 $fa-var-ra: "\f1d0";
 $fa-var-random: "\f074";
 $fa-var-random: "\f074";
+$fa-var-ravelry: "\f2d9";
 $fa-var-rebel: "\f1d0";
 $fa-var-rebel: "\f1d0";
 $fa-var-recycle: "\f1b8";
 $fa-var-recycle: "\f1b8";
 $fa-var-reddit: "\f1a1";
 $fa-var-reddit: "\f1a1";
@@ -541,6 +568,7 @@ $fa-var-rss-square: "\f143";
 $fa-var-rub: "\f158";
 $fa-var-rub: "\f158";
 $fa-var-ruble: "\f158";
 $fa-var-ruble: "\f158";
 $fa-var-rupee: "\f156";
 $fa-var-rupee: "\f156";
+$fa-var-s15: "\f2cd";
 $fa-var-safari: "\f267";
 $fa-var-safari: "\f267";
 $fa-var-save: "\f0c7";
 $fa-var-save: "\f0c7";
 $fa-var-scissors: "\f0c4";
 $fa-var-scissors: "\f0c4";
@@ -565,6 +593,7 @@ $fa-var-shirtsinbulk: "\f214";
 $fa-var-shopping-bag: "\f290";
 $fa-var-shopping-bag: "\f290";
 $fa-var-shopping-basket: "\f291";
 $fa-var-shopping-basket: "\f291";
 $fa-var-shopping-cart: "\f07a";
 $fa-var-shopping-cart: "\f07a";
+$fa-var-shower: "\f2cc";
 $fa-var-sign-in: "\f090";
 $fa-var-sign-in: "\f090";
 $fa-var-sign-language: "\f2a7";
 $fa-var-sign-language: "\f2a7";
 $fa-var-sign-out: "\f08b";
 $fa-var-sign-out: "\f08b";
@@ -581,6 +610,7 @@ $fa-var-smile-o: "\f118";
 $fa-var-snapchat: "\f2ab";
 $fa-var-snapchat: "\f2ab";
 $fa-var-snapchat-ghost: "\f2ac";
 $fa-var-snapchat-ghost: "\f2ac";
 $fa-var-snapchat-square: "\f2ad";
 $fa-var-snapchat-square: "\f2ad";
+$fa-var-snowflake-o: "\f2dc";
 $fa-var-soccer-ball-o: "\f1e3";
 $fa-var-soccer-ball-o: "\f1e3";
 $fa-var-sort: "\f0dc";
 $fa-var-sort: "\f0dc";
 $fa-var-sort-alpha-asc: "\f15d";
 $fa-var-sort-alpha-asc: "\f15d";
@@ -626,6 +656,7 @@ $fa-var-subscript: "\f12c";
 $fa-var-subway: "\f239";
 $fa-var-subway: "\f239";
 $fa-var-suitcase: "\f0f2";
 $fa-var-suitcase: "\f0f2";
 $fa-var-sun-o: "\f185";
 $fa-var-sun-o: "\f185";
+$fa-var-superpowers: "\f2dd";
 $fa-var-superscript: "\f12b";
 $fa-var-superscript: "\f12b";
 $fa-var-support: "\f1cd";
 $fa-var-support: "\f1cd";
 $fa-var-table: "\f0ce";
 $fa-var-table: "\f0ce";
@@ -635,6 +666,7 @@ $fa-var-tag: "\f02b";
 $fa-var-tags: "\f02c";
 $fa-var-tags: "\f02c";
 $fa-var-tasks: "\f0ae";
 $fa-var-tasks: "\f0ae";
 $fa-var-taxi: "\f1ba";
 $fa-var-taxi: "\f1ba";
+$fa-var-telegram: "\f2c6";
 $fa-var-television: "\f26c";
 $fa-var-television: "\f26c";
 $fa-var-tencent-weibo: "\f1d5";
 $fa-var-tencent-weibo: "\f1d5";
 $fa-var-terminal: "\f120";
 $fa-var-terminal: "\f120";
@@ -644,6 +676,17 @@ $fa-var-th: "\f00a";
 $fa-var-th-large: "\f009";
 $fa-var-th-large: "\f009";
 $fa-var-th-list: "\f00b";
 $fa-var-th-list: "\f00b";
 $fa-var-themeisle: "\f2b2";
 $fa-var-themeisle: "\f2b2";
+$fa-var-thermometer: "\f2c7";
+$fa-var-thermometer-0: "\f2cb";
+$fa-var-thermometer-1: "\f2ca";
+$fa-var-thermometer-2: "\f2c9";
+$fa-var-thermometer-3: "\f2c8";
+$fa-var-thermometer-4: "\f2c7";
+$fa-var-thermometer-empty: "\f2cb";
+$fa-var-thermometer-full: "\f2c7";
+$fa-var-thermometer-half: "\f2c9";
+$fa-var-thermometer-quarter: "\f2ca";
+$fa-var-thermometer-three-quarters: "\f2c8";
 $fa-var-thumb-tack: "\f08d";
 $fa-var-thumb-tack: "\f08d";
 $fa-var-thumbs-down: "\f165";
 $fa-var-thumbs-down: "\f165";
 $fa-var-thumbs-o-down: "\f088";
 $fa-var-thumbs-o-down: "\f088";
@@ -653,6 +696,8 @@ $fa-var-ticket: "\f145";
 $fa-var-times: "\f00d";
 $fa-var-times: "\f00d";
 $fa-var-times-circle: "\f057";
 $fa-var-times-circle: "\f057";
 $fa-var-times-circle-o: "\f05c";
 $fa-var-times-circle-o: "\f05c";
+$fa-var-times-rectangle: "\f2d3";
+$fa-var-times-rectangle-o: "\f2d4";
 $fa-var-tint: "\f043";
 $fa-var-tint: "\f043";
 $fa-var-toggle-down: "\f150";
 $fa-var-toggle-down: "\f150";
 $fa-var-toggle-left: "\f191";
 $fa-var-toggle-left: "\f191";
@@ -693,11 +738,16 @@ $fa-var-upload: "\f093";
 $fa-var-usb: "\f287";
 $fa-var-usb: "\f287";
 $fa-var-usd: "\f155";
 $fa-var-usd: "\f155";
 $fa-var-user: "\f007";
 $fa-var-user: "\f007";
+$fa-var-user-circle: "\f2bd";
+$fa-var-user-circle-o: "\f2be";
 $fa-var-user-md: "\f0f0";
 $fa-var-user-md: "\f0f0";
+$fa-var-user-o: "\f2c0";
 $fa-var-user-plus: "\f234";
 $fa-var-user-plus: "\f234";
 $fa-var-user-secret: "\f21b";
 $fa-var-user-secret: "\f21b";
 $fa-var-user-times: "\f235";
 $fa-var-user-times: "\f235";
 $fa-var-users: "\f0c0";
 $fa-var-users: "\f0c0";
+$fa-var-vcard: "\f2bb";
+$fa-var-vcard-o: "\f2bc";
 $fa-var-venus: "\f221";
 $fa-var-venus: "\f221";
 $fa-var-venus-double: "\f226";
 $fa-var-venus-double: "\f226";
 $fa-var-venus-mars: "\f228";
 $fa-var-venus-mars: "\f228";
@@ -722,10 +772,16 @@ $fa-var-wheelchair: "\f193";
 $fa-var-wheelchair-alt: "\f29b";
 $fa-var-wheelchair-alt: "\f29b";
 $fa-var-wifi: "\f1eb";
 $fa-var-wifi: "\f1eb";
 $fa-var-wikipedia-w: "\f266";
 $fa-var-wikipedia-w: "\f266";
+$fa-var-window-close: "\f2d3";
+$fa-var-window-close-o: "\f2d4";
+$fa-var-window-maximize: "\f2d0";
+$fa-var-window-minimize: "\f2d1";
+$fa-var-window-restore: "\f2d2";
 $fa-var-windows: "\f17a";
 $fa-var-windows: "\f17a";
 $fa-var-won: "\f159";
 $fa-var-won: "\f159";
 $fa-var-wordpress: "\f19a";
 $fa-var-wordpress: "\f19a";
 $fa-var-wpbeginner: "\f297";
 $fa-var-wpbeginner: "\f297";
+$fa-var-wpexplorer: "\f2de";
 $fa-var-wpforms: "\f298";
 $fa-var-wpforms: "\f298";
 $fa-var-wrench: "\f0ad";
 $fa-var-wrench: "\f0ad";
 $fa-var-xing: "\f168";
 $fa-var-xing: "\f168";

+ 1 - 1
static/font-awesome/scss/font-awesome.scss

@@ -1,5 +1,5 @@
 /*!
 /*!
- *  Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome
+ *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
  *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
  *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
  */
  */
 
 

+ 2 - 1
templates/index.html

@@ -27,7 +27,8 @@
 					<a href="/recentchanges" id="RecentChanges"><i class="fa fa-refresh" aria-hidden="true"></i><span id="is_mobile">최근 변경</span></a>
 					<a href="/recentchanges" id="RecentChanges"><i class="fa fa-refresh" aria-hidden="true"></i><span id="is_mobile">최근 변경</span></a>
 					<a href="/recentdiscuss" id="RecentChanges"><i class="fa fa-comment" aria-hidden="true"></i><span id="is_mobile">최근 토론</span></a>
 					<a href="/recentdiscuss" id="RecentChanges"><i class="fa fa-comment" aria-hidden="true"></i><span id="is_mobile">최근 토론</span></a>
 					<a href="/random" id="log"><i class="fa fa-random" aria-hidden="true"></i></a>
 					<a href="/random" id="log"><i class="fa fa-random" aria-hidden="true"></i></a>
-					<a href="/user" id="log"><i class="fa fa-user" aria-hidden="true"></i></a>
+					<a href="/user" id="log">{% if login == 1 %}<i class="fa fa-user" aria-hidden="true"></i>{% else %}<i class="fa fa-user-times" aria-hidden="true"></i>
+{% endif %}</a>
 					<a href="/other" id="log"><i class="fa fa-cogs" aria-hidden="true"></i></a>
 					<a href="/other" id="log"><i class="fa fa-cogs" aria-hidden="true"></i></a>
 				</div>
 				</div>
 				<form method="POST" action="/search" id="search">
 				<form method="POST" action="/search" id="search">

Some files were not shown because too many files changed in this diff