2
0
2DU 9 жил өмнө
parent
commit
90d4ef60c6
1 өөрчлөгдсөн 50 нэмэгдсэн , 0 устгасан
  1. 50 0
      app.py

+ 50 - 0
app.py

@@ -121,6 +121,54 @@ def db_get():
 
 start()
 
+@route('/upload', method=['GET', 'POST'])
+def upload():
+    session = request.environ.get('beaker.session')
+    MEMFILE_MAX = int(set_data['upload']) * 1024 * 1024
+    
+    ip = ip_check(session)
+    ban = ban_check(ip)
+    
+    if(request.method == 'POST'):        
+        if(ban == 1):
+            return redirect('/ban')
+        else:
+            file = request.files.file
+            if(file):
+                exist = re.search('^(.+)(\.(?:[Jj][Pp][Gg]|[Gg][Ii][Ff]|[Jj][Pp][Ee][Gg]|[Pp][Nn][Gg]))$', file.filename)
+                if(exist):
+                    if((int(set_data['upload']) * 1024 * 1024) < request.content_length):
+                        return redirect('/error/17')
+                    else:
+                        file_info = exist.groups()
+
+                        file_data = file_info[0] + file_info[1]
+                        file_name = sha224(file_info[0]) + file_info[1]
+                                           
+                        if(os.path.exists(os.path.join('image', file_name))):
+                            return redirect('/error/16')
+                        else:
+                            file.save(os.path.join('image', file_name))
+                            
+                            db_ex("select title from data where title = '" + db_pas('파일:' + file_data) + "'")
+                            exist_db = db_get()
+                            if(not exist_db):
+                                db_ex("insert into data (title, data, acl) value ('" + db_pas('파일:' + file_data) + "', '" + db_pas('[[파일:' + file_data + ']][br][br]{{{[[파일:' + file_data + ']]}}}') + "', '')")
+                                db_com()
+                            
+                            history_plus('파일:' + file_data, '[[파일:' + file_data + ']][br][br]{{{[[파일:' + file_data + ']]}}}', get_time(), ip, '파일:' + file_data + ' 업로드', '0')
+                            
+                            return redirect('/w/' + url_pas('파일:' + file_data))
+                else:
+                    return redirect('/error/14')
+            else:
+                return redirect('/error/14')
+    else:        
+        if(ban == 1):
+            return redirect('/ban')
+        else:
+            return template('index', custom = custom_css_user(session), license = set_data['license'], login = login_check(session), logo = set_data['name'], title = '업로드', tn = 21, number = set_data['upload'])
+
 @route('/image/<name:path>')
 def static(name = None):
     session = request.environ.get('beaker.session')
@@ -2479,6 +2527,8 @@ def error_test(num = None):
         return template('index', custom = custom_css_user(session), license = set_data['license'], login = login_check(session), title = '편집 오류', logo = set_data['name'], data = '편집 기록은 500자를 넘을 수 없습니다.')
     elif(num == 16):
         return template('index', custom = custom_css_user(session), license = set_data['license'], login = login_check(session), title = '업로드 오류', logo = set_data['name'], data = '동일한 이름의 파일이 있습니다.')
+    elif(num == 17):
+        return template('index', custom = custom_css_user(session), license = set_data['license'], login = login_check(session), title = '업로드 오류', logo = set_data['name'], data = '파일 용량은 ' + set_data['upload'] + 'MB를 넘길 수 없습니다.')
     elif(num == 18):
         return template('index', custom = custom_css_user(session), license = set_data['license'], login = login_check(session), title = '편집 오류', logo = set_data['name'], data = '내용이 원래 문서와 동일 합니다.')
     elif(num == 19):