remove os.system from inscription
This commit is contained in:
parent
76e3cfb870
commit
66eff29692
@ -2,69 +2,46 @@
|
||||
|
||||
{% block main %}
|
||||
|
||||
<div class="site-wrapper">
|
||||
|
||||
<div class="site-wrapper-inner">
|
||||
<h1>Inscription</h1>
|
||||
<br>
|
||||
{% include '_flash_msgs.html' %}
|
||||
|
||||
<div class="cover-container">
|
||||
{% if signin_enable %}
|
||||
<form method="POST" action="{{ url_inscription }}">
|
||||
<h4> Choisissez votre nom d'utilisateur pour vous connecter sur le portail pywallter </h4>
|
||||
|
||||
<div class="masthead clearfix">
|
||||
<div class="inner">
|
||||
<h3 class="masthead-brand">Pywallter</h3>
|
||||
<ul class="nav masthead-nav">
|
||||
<li><a href="/login/">Login</a></li>
|
||||
|
||||
{% if signin_enable %}
|
||||
<li class="active"><a href="/inscription/">Inscription</a></li>
|
||||
{% endif %}
|
||||
<li><a href="#">Contact</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="inner cover">
|
||||
<h1 class="cover-heading">Inscription</h1>
|
||||
<br>
|
||||
{% include '_flash_msgs.html' %}
|
||||
|
||||
{% if signin_enable %}
|
||||
<form method="POST" class="form-horizontal" action="{{ url_inscription }}">
|
||||
<h4> Choisissez votre nom d'utilisateur pour vous connecter sur le portail pywallter </h4>
|
||||
<input type="text" name="user" id="user" placeholder="Pseudo" class="form-control"><br />
|
||||
{% if MAIL_SERVER or XMPP_SERVER %}
|
||||
|
||||
<p>
|
||||
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 :)
|
||||
</p>
|
||||
{% endif %}
|
||||
|
||||
<input type="password" name="passwd" id="passwd" placeholder="Mot de passe" class="form-control"><br />
|
||||
<input type="password" name="passwdconfirm" id="passwdconfirm" placeholder="Confirmation du mot de passe" class="form-control"><br />
|
||||
<br>
|
||||
<button id="tada" class="btn btn-default btn-primary" type="submit">Créer mon compte</button>
|
||||
</form>
|
||||
{% else %}
|
||||
<p class="lead">
|
||||
Désolé les inscriptions ne sont pas activés sur le serveur
|
||||
</p>
|
||||
{%endif%}
|
||||
{% for i in users %}
|
||||
<p>{{i}}</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% if MAIL_SERVER or XMPP_SERVER %}
|
||||
<fieldset role="group">
|
||||
<input type="text" name="user" id="user" placeholder="Votre pseudo">
|
||||
<button class="outline">
|
||||
@{{ hostname }}
|
||||
</button>
|
||||
</fieldset>
|
||||
|
||||
<p>
|
||||
Votre pseudo vous servira à vous connecter à votre compte Mail et de messagerie instantanné (XMPP)
|
||||
Par exemple vous souhaitez l'adresse toto@{{hostname}}; vous entrez le pseudo toto :)
|
||||
</p>
|
||||
|
||||
{% else %}
|
||||
<input type="text" name="user" id="user" placeholder="Votre Pseudo"><br />
|
||||
{% endif %}
|
||||
|
||||
<input type="password" name="passwd" id="passwd" placeholder="Mot de passe"><br />
|
||||
<input type="password" name="passwdconfirm" id="passwdconfirm" placeholder="Confirmation du mot de passe"><br />
|
||||
<br>
|
||||
<button type="submit">Créer mon compte</button>
|
||||
</form>
|
||||
{% else %}
|
||||
<p class="lead">
|
||||
Désolé les inscriptions ne sont pas activés sur le serveur
|
||||
</p>
|
||||
{%endif%}
|
||||
{% for i in users %}
|
||||
<p>{{i}}</p>
|
||||
{% endfor %}
|
||||
|
||||
|
||||
<div class="mastfoot">
|
||||
<div class="inner">
|
||||
<p>Cover template for <a href="http://getbootstrap.com">Bootstrap</a>, by <a href="https://twitter.com/mdo">@mdo</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
|
||||
@ -1,10 +1,13 @@
|
||||
from flask import Blueprint, Flask, request, flash, render_template, url_for, session, redirect, abort, make_response, send_file
|
||||
from flask_bcrypt import Bcrypt
|
||||
|
||||
import time
|
||||
from markupsafe import escape
|
||||
import sqlite3
|
||||
import glob, os, sys, time
|
||||
from tools.utils import email_disp, valid_token_register, valid_passwd, valid_username
|
||||
from socket import gethostname
|
||||
import subprocess
|
||||
from tools.filesutils import check_and_create
|
||||
|
||||
app = Flask( 'pywallter' )
|
||||
app.config.from_pyfile('config.py')
|
||||
@ -14,12 +17,14 @@ bcrypt = Bcrypt(app)
|
||||
|
||||
|
||||
DATAS_USER = app.config['DOSSIER_APP']
|
||||
DOSSIER_PERSO = app.config['DOSSIER_APP']
|
||||
extensionimg = app.config['EXT_IMG']
|
||||
DATABASE = app.config['DATABASE']
|
||||
MAIL_SERVER = app.config['MAIL_SERVER']
|
||||
XMPP_SERVER = app.config['XMPP_SERVER']
|
||||
SETUID = app.config['SETUID']
|
||||
BASE_URL = app.config['BASE_URL']
|
||||
MAIL_DOMAIN = app.config['MAIL_DOMAIN']
|
||||
#################################################################################################
|
||||
|
||||
|
||||
@ -28,8 +33,8 @@ inscription = Blueprint('inscription', __name__, template_folder='templates')
|
||||
|
||||
@inscription.route( '/inscription/<token>', methods=['GET','POST'] )
|
||||
def signin(token) :
|
||||
hostname = gethostname()
|
||||
url_inscription = url_for('loginlogout.index', _external=True)+'inscription/'+token
|
||||
hostname = MAIL_DOMAIN
|
||||
url_inscription = BASE_URL +'/inscription/'+token
|
||||
resp = None
|
||||
if valid_token_register(token, "Invitation"):
|
||||
if 'username' in session :
|
||||
@ -58,14 +63,13 @@ def signin(token) :
|
||||
url_inscription=url_inscription,
|
||||
MAIL_SERVER=MAIL_SERVER, XMPP_SERVER=XMPP_SERVER)
|
||||
|
||||
|
||||
user = request.form['user']
|
||||
passwd = request.form['passwd']
|
||||
passwdconfirm = request.form['passwdconfirm']
|
||||
bcrypt_passwd = bcrypt.generate_password_hash(request.form['passwd'])
|
||||
user = str(request.form['user'])
|
||||
passwd = str(request.form['passwd'])
|
||||
passwdconfirm = str(request.form['passwdconfirm'])
|
||||
|
||||
bcrypt_passwd = bcrypt.generate_password_hash(passwd)
|
||||
mail_passwd_change = 0
|
||||
|
||||
password_valid = valid_passwd(passwd)
|
||||
|
||||
not_error = True
|
||||
|
||||
conn = sqlite3.connect(DATABASE) # Connexion à la base de donnée
|
||||
@ -75,14 +79,13 @@ def signin(token) :
|
||||
testuser = cursor.fetchone()
|
||||
conn.close()
|
||||
|
||||
print("user :" +user)
|
||||
print ("passwd: "+ passwd)
|
||||
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'Le Nom 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):
|
||||
flash (u'Les caractère & et " ne sont pas autorisé dans les mots de passe', 'error')
|
||||
not_error = False
|
||||
|
||||
if MAIL_SERVER:
|
||||
mail = user.lower()+'@'+hostname
|
||||
@ -102,22 +105,32 @@ def signin(token) :
|
||||
|
||||
# On change le mot de passe du compte mail
|
||||
if MAIL_SERVER:
|
||||
cmd = SETUID + ' set_mail_passwd ' + '"'+mail+'" ' + '"'+passwd+'"'
|
||||
mail_passwd_change = os.system(cmd)
|
||||
if mail_passwd_change != 0:
|
||||
cmd = subprocess.run([SETUID, 'set_mail_passwd', mail, passwd],stdout=subprocess.PIPE)
|
||||
if cmd.returncode != 0:
|
||||
flash(u'Il y a eu une problème lors du changement de mot passe pour le compte Mail', 'error')
|
||||
else:
|
||||
cursor.execute("UPDATE users SET mail=? WHERE name=?", mail, user)
|
||||
cursor.execute("UPDATE users SET mail=? WHERE name=?", (mail, user))
|
||||
|
||||
# On change le mot de passe du compte XMPP
|
||||
if XMPP_SERVER:
|
||||
tmp = mail.split('@')
|
||||
cmd = SETUID+ ' prosodyctl register ' "'"+tmp[0]+"' " + "'"+tmp[1]+"' " + "'"+passwd+"'"
|
||||
res = os.system(cmd)
|
||||
if res != 0:
|
||||
jid = mail.split('@')
|
||||
cmd = subprocess.run([SETUID,'prosodyctl', 'register', jid[0],jid[1],passwd],stdout=subprocess.PIPE)
|
||||
|
||||
if cmd.returncode != 0:
|
||||
flash(u'Il y a eu un problème pour la création du compte XMPP !', 'error')
|
||||
|
||||
check_and_create(DOSSIER_PERSO + user)
|
||||
time_create_user = time.strftime("%A %d %B %Y %H:%M:%S")
|
||||
ip_address=request.environ['REMOTE_ADDR']
|
||||
client_plateform=request.headers.get('User-Agent')
|
||||
|
||||
|
||||
log=time_create_user + ' - ' + ip_address + ' - ' + user + ' - ' + client_plateform + '\n' + '---> ' + 'Création du compte \n'
|
||||
log_file=DOSSIER_PERSO+user+"/log.txt"
|
||||
try:
|
||||
with open(log_file, 'x') as file:
|
||||
file.write(log)
|
||||
except FileExistsError:
|
||||
print('The file '+log_file +' already exists')
|
||||
|
||||
# Une fois que tout c'est bien passé pour l'inscription on détruit le jeton.
|
||||
cursor.execute("""SELECT name, invitations FROM users where Token=?""", (token,))
|
||||
@ -130,10 +143,16 @@ def signin(token) :
|
||||
cursor.execute("""UPDATE users set invitations=?, Token='' where name=?""", (invitations_count, username,))
|
||||
conn.commit()
|
||||
|
||||
flash(u'Inscription réalisée avec succés !', 'succes')
|
||||
flash(u'Inscription réalisée avec succés !', 'success')
|
||||
resp = redirect(url_for('loginlogout.login'))
|
||||
|
||||
else:
|
||||
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)
|
||||
else:
|
||||
resp = redirect(BASE_URL, code=401)
|
||||
|
||||
return resp
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user