Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from flask import Flask, render_template, request, make_response, redirect
- from hashlib import md5
- import mysql.connector
- app = Flask(__name__)
- database = mysql.connector.connect(
- host="127.0.0.1",
- database="test",
- user="lex1133",
- password="ghhjkl123"
- )
- query = database.cursor(buffered=True)
- @app.route('/')
- def index():
- user = request.cookies.get('username')
- notes = None
- if not (user == None):
- sql = "SELECT filename,displayname FROM files WHERE `user` = %s"
- data = (user, )
- query.execute(sql, data)
- notes = query.fetchall()
- return render_template("index.html", user=user, notes = notes)
- @app.route('/showfile/<path>')
- def show_file(path):
- user = request.cookies.get('username')
- if not (path == ''):
- sql = "SELECT * FROM files WHERE `filename` = %s"
- data = (path,)
- query.execute(sql, data)
- files = query.fetchall()
- if not (files == None):
- for file in files:
- if (file[3] == user):
- with open("notes/" + file[1] + ".txt", 'r', encoding='utf-8') as f:
- content = f.read()
- return render_template("showfile.html", file=file, content=content)
- else:
- return " <a href='/'>На главную</a><br>У вас нет доступа к этому файлу"
- else:
- return "Файл не найден"
- else:
- return "Вы должны сначала авторизоваться"
- @app.route('/editfile/<path>')
- def edit_file(path):
- user = request.cookies.get('username')
- if not (user == ''):
- sql = "SELECT * FROM files WHERE `filename` = %s"
- data = (path,)
- query.execute(sql, data)
- files = query.fetchall()
- if not (files == None):
- access = False
- permission = ''
- file = ''
- for f in files:
- if(f[3] == user):
- access = True
- permission = f[4]
- file = f
- break
- if (access):
- if('w' in file[4]):
- with open("notes/" + file[1] + ".txt", 'r', encoding='utf-8') as f:
- content = f.read()
- return render_template("editfile.html", file=file, content=content)
- else:
- return "<a href='/'>На главную</a><br>У вас есть права только на чтение "
- else:
- return "<a href='/'>На главную</a><br>У вас нет доступа к этому файлу"
- else:
- return "<a href='/'>На главную</a><br>Файл не найден"
- else:
- return "<a href='/'>На главную</a><br>Вы должны сначала авторизоваться"
- @app.route('/savefile', methods=['POST'])
- def save_file():
- user = request.cookies.get('username')
- filename = request.form['filename']
- content = request.form['content']
- content = content.replace('\r\n', '\n')
- if not (user == ''):
- with open("notes/" + filename + ".txt", 'w', encoding='utf-8') as f:
- f.write(content)
- return redirect('/editfile/' + filename)
- else:
- return "<a href='/'>На главную</a><br>Вы должны сначала авторизоваться"
- @app.route('/sharefile/<filename>')
- def share_file(filename):
- user = request.cookies.get('username')
- if not (user == ''):
- sql = "SELECT * FROM files WHERE `filename` = %s"
- data = (filename,)
- query.execute(sql, data)
- files = query.fetchall()
- if not (files == None):
- access = False
- permission = ''
- file = ''
- for f in files:
- if (f[3] == user):
- access = True
- permission = f[4]
- file = f
- break
- if (file[3] == user):
- if('s' in file[4]):
- return render_template("sharefile.html", file=file)
- else:
- return "<a href='/'>На главную</a><br>У вас нет прав на расшаривание данного файла"
- else:
- return "<a href='/'>На главную</a><br>У вас нет доступа к этому файлу"
- else:
- return "<a href='/'>На главную</a><br>Файл не найден"
- else:
- return "<a href='/'>На главную</a><br>Вы должны сначала авторизоваться"
- @app.route('/logout', methods=['POST'])
- def log_out():
- resp = make_response(redirect('/'))
- resp.delete_cookie('username')
- return resp
- @app.route('/share', methods=['POST'])
- def share():
- user = request.cookies.get('username')
- filename = request.form['filename']
- shareduser = request.form['shareduser']
- permissions = ''
- for arg in request.form:
- if arg == 'read':
- permissions = permissions + 'r'
- if arg == 'write':
- permissions = permissions + 'w'
- if arg == 'share:':
- permissions = permissions + 's'
- if not (user == ''):
- sql = "SELECT * FROM files WHERE `filename` = %s"
- data = (filename,)
- query.execute(sql, data)
- files = query.fetchall()
- if not (files == None):
- file = ''
- for f in files:
- if (f[3] == user):
- file = f
- break
- if (file[3] == user):
- if('s' in file[4]):
- sql = "SELECT * FROM users WHERE `login` = %s"
- data = (shareduser,)
- query.execute(sql, data)
- cols = query.fetchone()
- if not (cols == None):
- sharedpermissions = ''
- for perm in permissions:
- if (perm in file[4]):
- sharedpermissions = sharedpermissions + perm
- else:
- return "<a href='/'>На главную</a><br>Вы не можете выдать пользователю права " + perm + "!";
- sql = "INSERT INTO files (filename, displayname, user, permissions) VALUES (%s, %s, %s, %s)"
- data = (file[1], file[2], shareduser, sharedpermissions)
- try:
- query.execute(sql, data)
- database.commit()
- return redirect("/")
- except Exception:
- return "<a href='/'>На главную</a><br>Чтото пошло не так!"
- else:
- return "<a href='/'>На главную</a><br>Указанный пользователь не найден!"
- else:
- return "<a href='/'>На главную</a><br>У вас нет прав на расшаривание данного файла"
- else:
- return "<a href='/'>На главную</a><br>У вас нет доступа к этому файлу"
- else:
- return "<a href='/'>На главную</a><br>Файл не найден"
- else:
- return "<a href='/'>На главную</a><br>Вы должны сначала авторизоваться"
- @app.route('/signin', methods=['POST'])
- def sign_in():
- login = request.form['login']
- password = request.form['password']
- if not (login and password):
- return "Не все поля заполненны!"
- a = md5()
- a.update(password.encode('utf-8'))
- crypted_password = a.hexdigest()
- sql = "SELECT COUNT(*) FROM users WHERE login = %s AND password = %s"
- data = (login, crypted_password)
- query.execute(sql, data)
- result = query.fetchone()
- if (result[0] == 1):
- resp = make_response(redirect('/'))
- resp.set_cookie('username', login)
- return resp
- else:
- return "Wrong password or login"
- if __name__ == '__main__':
- app.run(debug='true')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement