diff --git a/static/divhider.js b/static/divhider.js index 908e440..982083f 100644 --- a/static/divhider.js +++ b/static/divhider.js @@ -9,8 +9,8 @@ function animation() { x[0].style.animation = "disparition 0.2s 1"; } -window.setTimeout(divhider, 2200); -window.setTimeout(animation, 2000); +window.setTimeout(divhider, 8800); +window.setTimeout(animation, 8000); let darkBoxVisible = false; diff --git a/templates/accueil.html b/templates/accueil.html index 7368dff..2464caf 100644 --- a/templates/accueil.html +++ b/templates/accueil.html @@ -28,7 +28,9 @@
Site en construction permanente.


-

+ + {% include '_flash_msgs.html' %} +



@@ -38,24 +40,12 @@

+ + -{# on affiche les messages d'erreur puis les messages de succes #} -{% for categorie in ['error', 'succes'] %} -{% with msgs = get_flashed_messages(category_filter=[categorie]) %} -{% if msgs %} - -
- {% for m in msgs %} -

{{ m|safe }}

- {% endfor %} -
-{% endif %} -{% endwith %} -{% endfor %} - {% endblock %} diff --git a/templates/inscription.html b/templates/inscription.html index 5f2866f..49277d8 100644 --- a/templates/inscription.html +++ b/templates/inscription.html @@ -25,26 +25,24 @@

Inscription


- + {% include '_flash_msgs.html' %} + {% if signin_enable %}

Choisissez votre nom d'utilisateur pour vous connecter sur le portail pywallter


{% if MAIL_SERVER or XMPP_SERVER %} -

Choisissez votre adresse sur ce serveur (Entrez juste le nom pas besoin de préciser le domaine)

-

Par exemple vous voulez toto@{{hostname}}; vous entrez juste toto :)

-
-
- -
- -
- {% endif %} + +

+ Votre nom d'utilisateur vous servira à vous connecter à votre compte Mail et de messagerie instantanné (XMPP) + Par exemple vous souhaitez l'adresse toto@{{hostname}}; vous entrez le nom d'utilisateur toto :) +

+ {% endif %}


- + {% else %}

@@ -56,20 +54,6 @@ {% endfor %}

-
- {# On affiche les messages d'erreur puis les messages de succés #} - {% for categorie in ['error', 'succes'] %} - {% with msgs = get_flashed_messages(category_filter=[categorie]) %} - {% if msgs %} -
- {% for m in msgs %} -

{{ m|safe }}

- {% endfor %} -
- {% endif %} - {% endwith %} - {% endfor %} -
diff --git a/templates/up_up.html b/templates/up_up.html index 0e3d981..daed71e 100644 --- a/templates/up_up.html +++ b/templates/up_up.html @@ -9,9 +9,11 @@

-
Ici, vous pouvez envoyer des fichiers afin de les sauvegarder ou de les rendre accessibles à quelqu'un d'autre. Ils seront par la suite disponibles en téléchargement dans notre rubrique Fichiers. Les images envoyées, quand à elles se retrouveront directement dans la Gallerie.
Ayez bien conscience que ce site est une expérience est qu'il est indispensable d'avoir une sauvegarde de tous vos fichiers. Nous ne pourrons, en aucun cas, être tenu responsable de la perte de vos données. Merci de votre compréhension.
-
-
+
Ici, vous pouvez envoyer des fichiers afin de les sauvegarder ou de les rendre accessibles à quelqu'un d'autre. Ils seront par la suite disponibles en téléchargement dans notre rubrique Fichiers. Les images envoyées, quand à elles se retrouveront directement dans la Gallerie.
Ayez bien conscience que ce site est une expérience est qu'il est indispensable d'avoir une sauvegarde de tous vos fichiers. Nous ne pourrons, en aucun cas, être tenu responsable de la perte de vos données. Merci de votre compréhension. +
+
+ +

Choisissez un ou plusieurs fichiers à uploader

@@ -39,13 +41,11 @@ {% endfor %}
-
+
-
+ - diff --git a/tools/utils.py b/tools/utils.py index 2419152..87fa5ee 100644 --- a/tools/utils.py +++ b/tools/utils.py @@ -23,6 +23,17 @@ def append_to_log(log_line, user): log.close() +def valid_username(username): + valid=True + # Caractères non autorisés dans la RFC #822 + invalid_char = { '(', ')', '<', '>', ',', ';', ':', '"', '[', ']', '|', 'ç', '%', '&', ' ' } + + for character in invalid_char: + if character in username: + valid=False + + return valid + def email_disp(email): disp = True @@ -31,13 +42,6 @@ def email_disp(email): conn = sqlite3.connect(DATABASE) # Connexion à la base de donnée cursor = conn.cursor() # Création de l'objet "curseur" - # Caractères non autorisés dans la RFC #822 - invalid_char = { '(', ')', '<', '>', ',', ';', ':', '"', '[', ']', '|', 'ç', '%', '&' } - - for character in invalid_char: - if character in email: - disp=False - cursor.execute("""SELECT mail FROM users WHERE mail=?""", (email,)) testmail = cursor.fetchall() if testmail and disp: diff --git a/views/inscription.py b/views/inscription.py index 737fc65..ddb2aed 100644 --- a/views/inscription.py +++ b/views/inscription.py @@ -3,7 +3,7 @@ from flask_bcrypt import Bcrypt import sqlite3 import glob, os, sys, time -from tools.utils import email_disp, valid_token_register, valid_passwd +from tools.utils import email_disp, valid_token_register, valid_passwd, valid_username from socket import gethostname app = Flask( 'pywallter' ) @@ -30,7 +30,7 @@ inscription = Blueprint('inscription', __name__, template_folder='templates') @inscription.route( '/inscription/', methods=['GET','POST'] ) def signin(token) : hostname = gethostname() - url_inscription = BASE_URL+'inscription/'+token + url_inscription = url_for('loginlogout.index', _external=True)+'inscription/'+token resp = None if valid_token_register(token): if 'username' in session : @@ -48,32 +48,20 @@ def signin(token) : if request.method == 'POST': #On test si aucun champs du formulaire n'est vide. - if MAIL_SERVER: - if len(request.form['user']) == 0 or \ - len(request.form['passwd']) == 0 or \ - len(request.form['passwdconfirm']) == 0 or \ - len(request.form['mail']) == 0 : - flash(u'Il faut remplir le formulaire en entier, les champs ne peuvent pas etre vide ', 'error') - return render_template('inscription.html', - signin_enable=app.config['SIGNIN_ENABLE'], - token=token, hostname=hostname, - url_inscription=url_inscription, - MAIL_SERVER=MAIL_SERVER, XMPP_SEVER=XMPP_SERVER) - else: - if len(request.form['user']) == 0 or \ - len(request.form['passwd']) == 0 or \ - len(request.form['passwdconfirm']) == 0: + if len(request.form['user']) == 0 or \ + len(request.form['passwd']) == 0 or \ + len(request.form['passwdconfirm']) == 0: - flash(u'Il faut remplir le formulaire en entier, les champs ne peuvent pas etre vide ', 'error') - return render_template('inscription.html', - signin_enable=app.config['SIGNIN_ENABLE'], - token=token, hostname=hostname, - url_inscription=url_inscription, - MAIL_SERVER=MAIL_SERVER, XMPP_SERVER=XMPP_SERVER) + flash(u'Il faut remplir le formulaire en entier, les champs ne peuvent pas etre vide ', 'error') + return render_template('inscription.html', + signin_enable=app.config['SIGNIN_ENABLE'], + token=token, hostname=hostname, + url_inscription=url_inscription, + MAIL_SERVER=MAIL_SERVER, XMPP_SERVER=XMPP_SERVER) + user = request.form['user'] passwd = request.form['passwd'] - mail = user+'@'+hostname passwdconfirm = request.form['passwdconfirm'] bcrypt_passwd = bcrypt.generate_password_hash(request.form['passwd']) mail_passwd_change = 0 @@ -88,8 +76,9 @@ def signin(token) : testuser = cursor.fetchone() conn.close() - if testuser: - flash(u'Non d\'utilisateur déjà utilisé, merci d\'en choisir un autre', 'error') + if testuser and valid_username(user): + flash(u'Non d\'utilisateur déjà utilisé ou contient des caractères invalides, merci d\'en choisir un autre', 'error') + flash(u'Les caractères espaces et \' ( ) < > , ; : " [ ] | ç % & ne sont pas autorisés', 'error') not_error = False if not(password_valid): @@ -97,9 +86,9 @@ def signin(token) : not_error = False if MAIL_SERVER: - mail = request.form['mail'].lower()+'@'+hostname + mail = user.lower()+'@'+hostname if not(email_disp(mail)) : - flash(u'Adresse email déjà utilisé ou invalide, merci d\'en choisir une autre', 'error') + flash(u'Cette Adresse email est déjà utilisée , merci d\'en choisir une autre', 'error') not_error = False if not_error: diff --git a/views/loginlogout.py b/views/loginlogout.py index cde5c6f..50f3e38 100644 --- a/views/loginlogout.py +++ b/views/loginlogout.py @@ -42,12 +42,12 @@ def login() : conn.close() password = request.form['passwd'] for user in users: - print (user[0]) passwd = str(user[1] ) - print ( passwd[2:(len(passwd)-1 )] ) if user[0] == request.form['user'] and bcrypt.check_password_hash(user[1], password) is True: session['username'] = request.form['user'] resp = redirect(url_for('profil.profile', _external=True)) + else: + flash(u'Mauvais nom d\'utilisateur ou mot de passe', 'error') else: resp = render_template('accueil.html', signin_enable=app.config['SIGNIN_ENABLE']) return resp diff --git a/views/profil.py b/views/profil.py index 7383367..d773116 100644 --- a/views/profil.py +++ b/views/profil.py @@ -327,36 +327,42 @@ def delete_account(): cursor = conn.cursor() # Création de l'objet "curseur" cursor.execute("""SELECT passwd FROM users WHERE name=?""", (UTILISATEUR,)) passwd = cursor.fetchone()[0] + cursor.execute("""SELECT mail FROM users WHERE name=?""", (UTILISATEUR,)) + mail = cursor.fetchone()[0] conn.close() password = request.form['passwd'] if bcrypt.check_password_hash(passwd, password) is True: not_error = True - try: - cmd = 'rm -r ' + DATAS_USER + '/' + UTILISATEUR - if system(cmd) != 0: - raise TypeError("Remove directory error") - except: - not_error = False - flash(u'Erreur lors de la suppression de votre dossier utilisateur.', 'error') - + if MAIL_SERVER: try: - cmd = SETUID + ' set_mail_passwd del' + '"'+mail+'"' - system(cmd) + cmd = SETUID + ' set_mail_passwd del ' + '"'+mail+'"' + print(cmd) + os.system(cmd) except: not_error = False flash(u'Erreur lors de la suppression de votre compte Mail.', 'error') + + if XMPP_SERVER: try: tmp = mail.split('@') cmd = SETUID+ ' prosodyctl deluser ' "'"+tmp[0]+"' " + "'"+tmp[1]+"'" - system(cmd) + os.system(cmd) except: not_error = False flash(u'Erreur lors de la suppression de votre compte XMPP.', 'error') if not_error: + try: + cmd = 'rm -r ' + DATAS_USER + '/' + UTILISATEUR + if os.system(cmd) != 0: + raise TypeError("Remove directory error") + except: + flash(u'Erreur lors de la suppression de votre dossier utilisateur.', 'error') + + try: conn = sqlite3.connect(DATABASE) cursor = conn.cursor()