From 1fbefd13b29588ae891bff575c8fe3a1f0e8295a Mon Sep 17 00:00:00 2001 From: Michel V Date: Tue, 23 Jun 2020 19:23:57 +0200 Subject: [PATCH] Restart ^^ --- Files/Chrys/AES.txt | 15 +++++++++++ Files/SuperUser/AES.txt | 15 +++++++++++ README.md | 2 -- app.db | Bin 20480 -> 24576 bytes app/__init__.py | 1 + app/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 998 bytes app/__pycache__/forms.cpython-38.pyc | Bin 0 -> 1812 bytes app/__pycache__/models.cpython-38.pyc | Bin 0 -> 1455 bytes app/__pycache__/routes.cpython-38.pyc | Bin 0 -> 3027 bytes app/forms.py | 3 ++- app/routes.py | 33 ++++++++++++------------ app/templates/base.html | 4 +-- 12 files changed, 51 insertions(+), 22 deletions(-) create mode 100644 Files/Chrys/AES.txt create mode 100644 Files/SuperUser/AES.txt delete mode 100644 README.md create mode 100644 app/__pycache__/__init__.cpython-38.pyc create mode 100644 app/__pycache__/forms.cpython-38.pyc create mode 100644 app/__pycache__/models.cpython-38.pyc create mode 100644 app/__pycache__/routes.cpython-38.pyc diff --git a/Files/Chrys/AES.txt b/Files/Chrys/AES.txt new file mode 100644 index 0000000..583cb37 --- /dev/null +++ b/Files/Chrys/AES.txt @@ -0,0 +1,15 @@ +https://youtu.be/O4xNJsjtN6E + +https://youtu.be/6KfJXl-Kvws + +dV1M7Z5int2+QgRtDrQJRedIk+6lp3O8GoVBOzvq9zNUsIT7yvz43duMKygPZw== (64) +dV1M7Z5int2+QgRtDrQJRedIk+6lp3O8GoVBOzvq +9zNUsIT7yvz43duMKygPZw== (F7 33 54 B0 84 FB CA FC F8 DD DB 8C 2B 28 0F 67) + +1~15 : 24 +16~31 : 44 +/!\ --->{32~47 : 64}<--- /!\ + +01110101 01011101 01001100 11101101 10011110 01100010 10011110 11011101 10111110 01000010 00000100 01101101 00001110 10110100 00001001 01000101 11100111 01001000 10010011 11101110 10100101 10100111 01110011 10111100 00011010 10000101 01000001 00111011 00111011 11101010 11110111 00110011 01010100 10110000 10000100 11111011 11001010 11111100 11111000 11011101 11011011 10001100 00101011 00101000 00001111 01100111 + +dV1M7Z5int2+QgRtDrQJRedIk+6lp3O8GoVBOzvq9zNUsIT7yvz43duMKygPZw== diff --git a/Files/SuperUser/AES.txt b/Files/SuperUser/AES.txt new file mode 100644 index 0000000..583cb37 --- /dev/null +++ b/Files/SuperUser/AES.txt @@ -0,0 +1,15 @@ +https://youtu.be/O4xNJsjtN6E + +https://youtu.be/6KfJXl-Kvws + +dV1M7Z5int2+QgRtDrQJRedIk+6lp3O8GoVBOzvq9zNUsIT7yvz43duMKygPZw== (64) +dV1M7Z5int2+QgRtDrQJRedIk+6lp3O8GoVBOzvq +9zNUsIT7yvz43duMKygPZw== (F7 33 54 B0 84 FB CA FC F8 DD DB 8C 2B 28 0F 67) + +1~15 : 24 +16~31 : 44 +/!\ --->{32~47 : 64}<--- /!\ + +01110101 01011101 01001100 11101101 10011110 01100010 10011110 11011101 10111110 01000010 00000100 01101101 00001110 10110100 00001001 01000101 11100111 01001000 10010011 11101110 10100101 10100111 01110011 10111100 00011010 10000101 01000001 00111011 00111011 11101010 11110111 00110011 01010100 10110000 10000100 11111011 11001010 11111100 11111000 11011101 11011011 10001100 00101011 00101000 00001111 01100111 + +dV1M7Z5int2+QgRtDrQJRedIk+6lp3O8GoVBOzvq9zNUsIT7yvz43duMKygPZw== diff --git a/README.md b/README.md deleted file mode 100644 index 70afc73..0000000 --- a/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# Pycloud - diff --git a/app.db b/app.db index 95002017c0ed25232cdf10c2c4d543b862a3a489..d8ad5fd2cee4b7f22bacba716d7a357fcb0f19c2 100644 GIT binary patch delta 643 zcmZXQO=}ZD7{_P3+vtYfj1@{K6*^!J36!!s+1bq&w8S`xq3PCcwqWoevoAw8rY|HZ zw5K+H0!2T7;3rTo_9l4gy&#Bs^X5&0cyu?u1$^Lt`2U_~o|id&E}Xs<9xu*806-?u zpOBs`m-7&;tbI`74=}540jR>W+=e<H!N0;3-F2HARkwrI zX$KYKu#~d;rc0X*r;x(p?>8mn(mHjiQ=@H^vPpHe^kS@DRSfJCD+n#!B;*wu!)wz( zP41O)4uH>KF?W`8Ue8^*nLCN449Jg~a&4!7JUH+lh8(XBb{Hn+s!p^d3j6x;QFXoD zDR68N&NRk--!i$$d}3-rzM#17{V6uwEuon11L^R9d8nbw4vCzQ8*3vZN6&zYv z$AL-AFk-qL8D(s9W}8ooYo8PeUI2IjzryeEb8_)JctaNR!sJ>>6_Wae}lUI|Bm)D-go~^F$qEQFaDB`v)|5~Mv-r*@B7`~Z@={nPAJ=$kBv1{C?4s(fHW1D(xKnA9PCi+(<2{5>@K84u(ta6}@ zf#M=`F~I1`B3n49nQd^u1rG+`LjWN}um#&Ngb|Ek2X4SF-26BsLv@E+G+-k#Vq-E^ z^=_XSlRH1vO^u0J*)M1+FBNbOcz%{G74lEs9PQJ^IkL6#+-bHHX^9GkM|_#((=<<) zD2V%dy`X#rr2mpLB+h9;c?!g?4-xMemzgZpIY$wERc^)y=bTH7(-<;=i;{~qaZXlq zmX*Xil_>I5rSV>;Qhwk9HrvNoU|Po4L~x7@*&IbY#m(SQ#{0ms{K+QlN+ImUn|p`( z`;=yI9T#&Ecj-5~9g0&bFokuzk_eL_adq|mq9C3IwIW}mR@Fe`Mp>v~SCaTjB5M>j zxKY{QR$ZvibcIRnb)v{v?=?!Vxvhq4#7>a}+CP-FT+(hfkBdOU=R$DNiY8I*b+sl| z{r2F`Zy)-E{Eo)< z=YeqmL;nhb6HaR)DWep1r*@>vT&ugaCw=By-K%>tV1W!-Xl=iaWXxijutcUTl^M%q zpY`oruO7%D8_FHFBS&mxeL;Oo?y_A{D7D5NIx{(LRkfI}7k=I}wI~;xDN&1Qw=8!}`m}7z&8{YRcCjk! zuNyP?rmQPowpFuurc{FodMA+R6tmy{Trdt`=#M}M!YC)q5w7sA$eeQenlfMXM8KUr zaz$ClUBJLI@yW7oN{*L&Lrwf$cUYseiCdv$ce8OGnXo7pr4&VB;-ZiZU)89mMS*#C zGYT4ms2&Ituk5xn07?bu#q3N^TcF+$wTC_we|`Mq@dWRqCt~tc=<~K&PF`G2>t@9# z<#IWhL1ub?d8vjF9l_ApY9Z}Y>$w5Lbt689ux%JP-6K$b1jBjlFn~gM+K25I^Gxl+ zzq*a$4hp=H1xKZznGk!>ZW&s0xo#$f>@$g4?^nQ?7S_AC{2I(oyNAAaL1ZvA?i12o z_@&f(Zy<(MJHXHdi2sckq6ml~vLfRC6`ea4-wwZCho8tGDzJLLqbeKl7%)vtdL-tR z2CxuTbsti&XsQRGnNbJgQk3lmSoHx;BslS<{*23NVWFKm;NE=LY&f34(2qd0WayU7U)WgtC#dx-=0q zH)K(qUK$VhSsH&|zF`6le!gLOx@MhX$ASV+Hr zZyTQd8{y-8_}?964_DX(7C41H!TL%dq;EG@P_5zor?C*at(0w_+3xxfCa|G3Hf`5k z_n^O0N8!vkziW~izMVylgi%-<;{uy4E-dQiUbZuZY-Rmxd*417*UtzGAO`v0HM_lq zB@D7bCAfC9j@Up0FPCMKy{N5)iQ(XVc(FvSZ2|4OVX0uV{kIF6@RRO|`;@{VdISP) P2frb`k4$og-mv#K&J?D< literal 0 HcmV?d00001 diff --git a/app/__pycache__/models.cpython-38.pyc b/app/__pycache__/models.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ed2d761cac0925d5220f59faed874c3a2c7624b1 GIT binary patch literal 1455 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 blP_ANUJanamHj#?)`5Ek_+Nx~At3((^$w{* literal 0 HcmV?d00001 diff --git a/app/forms.py b/app/forms.py index 573fbb2..fe39d87 100644 --- a/app/forms.py +++ b/app/forms.py @@ -1,7 +1,8 @@ +from flask_login import current_user from app import words from flask_wtf import FlaskForm from flask_wtf.file import FileField, FileRequired -from wtforms import SubmitField, PasswordField, StringField, BooleanField +from wtforms import SubmitField, PasswordField, StringField, BooleanField, SelectField from wtforms.validators import DataRequired, EqualTo, ValidationError from app.models import User diff --git a/app/routes.py b/app/routes.py index 27c0a1a..63946c3 100644 --- a/app/routes.py +++ b/app/routes.py @@ -4,7 +4,7 @@ from flask import render_template, redirect, url_for, flash, send_from_directory from app.forms import UploadForm, LoginForm, RegisterForm from werkzeug.utils import secure_filename from flask_login import current_user, login_user, logout_user -from app.models import User +from app.models import User, File # =================================================== # How to use the render_template in this application: @@ -63,6 +63,7 @@ def register(): user.set_password(form.password.data) db.session.add(user) db.session.commit() + os.mkdir(os.path.join(app.config['FILES_DIR'], form.username.data)) flash(words['termRegistered'] + form.username.data) return redirect(url_for('home')) return render_template('register.html', title=words['nameRegister'], dico=words, form=form, userloged=current_user) @@ -80,28 +81,26 @@ def upload(): if form.validate_on_submit(): f = form.uploadfile.data filename = secure_filename(f.filename) - f.save(os.path.join(app.config['FILES_DIR'], filename)) + f.save(os.path.join(app.config['FILES_DIR'], current_user.username, filename)) + filetodb = File(name=filename, user=current_user) + db.session.add(filetodb) + db.session.commit() return redirect(url_for('home')) return render_template('upload.html', title=words['nameUpload'], dico=words, form=form, userloged=current_user) -# Admin's download pages -# Use it to download a file -# Redirect automatically to the home page if the user isn't logged in or isn't an Admin -# If the user or the id is'nt reconized, redirect automatically to the home page -@app.route('/downloadAdmin//') -def downloadAdmin(user, id): - if not current_user.is_authenticated: - return redirect(url_for('home')) - if current_user.isAdmin == False: - return redirect(url_for('home')) - # Users' download pages # Use it to download a file -# Redirect automatically to the home page if the user isn't logged in or is an Admin +# Redirect automatically to the home page if the user isn't logged in # If the id is'nt reconized, redirect automatically to the home page -@app.route('/downloadUser/') -def downloadUser(id): +# If the file don't belong to the requested user, redirect automatically to the home page +@app.route('/download/') +def download(id): if not current_user.is_authenticated: return redirect(url_for('home')) - if current_user.isAdmin == True: + filetodb = File.query.filter_by(id=id).first() + if not filetodb: + return redirect(url_for('home')) + if filetodb.user == current_user or current_user.isAdmin == True: + return send_from_directory(os.path.join(app.config['FILES_DIR'], filetodb.user.username), filetodb.name, as_attachment=True) + else: return redirect(url_for('home')) \ No newline at end of file diff --git a/app/templates/base.html b/app/templates/base.html index 71d7010..557fc36 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -14,11 +14,11 @@ {{ dico['nameLogin'] }} {% else %} {{ dico['nameUpload'] }} - {{ dico['termLogout'] }} - {% endif %} {% if userloged.isAdmin == True %} {{ dico['nameRegister'] }} {% endif %} + {{ dico['termLogout'] }} + {% endif %} {{ userloged.username }}
{% with messages = get_flashed_messages() %}