remove os.system from inscription
This commit is contained in:
parent
76e3cfb870
commit
66eff29692
@ -2,69 +2,46 @@
|
|||||||
|
|
||||||
{% block main %}
|
{% 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">
|
{% if MAIL_SERVER or XMPP_SERVER %}
|
||||||
<div class="inner">
|
<fieldset role="group">
|
||||||
<h3 class="masthead-brand">Pywallter</h3>
|
<input type="text" name="user" id="user" placeholder="Votre pseudo">
|
||||||
<ul class="nav masthead-nav">
|
<button class="outline">
|
||||||
<li><a href="/login/">Login</a></li>
|
@{{ hostname }}
|
||||||
|
</button>
|
||||||
{% if signin_enable %}
|
</fieldset>
|
||||||
<li class="active"><a href="/inscription/">Inscription</a></li>
|
|
||||||
{% endif %}
|
<p>
|
||||||
<li><a href="#">Contact</a></li>
|
Votre pseudo vous servira à vous connecter à votre compte Mail et de messagerie instantanné (XMPP)
|
||||||
</ul>
|
Par exemple vous souhaitez l'adresse toto@{{hostname}}; vous entrez le pseudo toto :)
|
||||||
</div>
|
</p>
|
||||||
</div>
|
|
||||||
|
{% else %}
|
||||||
<div class="inner cover">
|
<input type="text" name="user" id="user" placeholder="Votre Pseudo"><br />
|
||||||
<h1 class="cover-heading">Inscription</h1>
|
{% endif %}
|
||||||
<br>
|
|
||||||
{% include '_flash_msgs.html' %}
|
<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 />
|
||||||
{% if signin_enable %}
|
<br>
|
||||||
<form method="POST" class="form-horizontal" action="{{ url_inscription }}">
|
<button type="submit">Créer mon compte</button>
|
||||||
<h4> Choisissez votre nom d'utilisateur pour vous connecter sur le portail pywallter </h4>
|
</form>
|
||||||
<input type="text" name="user" id="user" placeholder="Pseudo" class="form-control"><br />
|
{% else %}
|
||||||
{% if MAIL_SERVER or XMPP_SERVER %}
|
<p class="lead">
|
||||||
|
Désolé les inscriptions ne sont pas activés sur le serveur
|
||||||
<p>
|
</p>
|
||||||
Votre nom d'utilisateur vous servira à vous connecter à votre compte Mail et de messagerie instantanné (XMPP)
|
{%endif%}
|
||||||
Par exemple vous souhaitez l'adresse toto@{{hostname}}; vous entrez le nom d'utilisateur toto :)
|
{% for i in users %}
|
||||||
</p>
|
<p>{{i}}</p>
|
||||||
{% endif %}
|
{% endfor %}
|
||||||
|
|
||||||
<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>
|
|
||||||
|
|
||||||
|
|
||||||
<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 %}
|
{% 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 import Blueprint, Flask, request, flash, render_template, url_for, session, redirect, abort, make_response, send_file
|
||||||
from flask_bcrypt import Bcrypt
|
from flask_bcrypt import Bcrypt
|
||||||
|
import time
|
||||||
|
from markupsafe import escape
|
||||||
import sqlite3
|
import sqlite3
|
||||||
import glob, os, sys, time
|
import glob, os, sys, time
|
||||||
from tools.utils import email_disp, valid_token_register, valid_passwd, valid_username
|
from tools.utils import email_disp, valid_token_register, valid_passwd, valid_username
|
||||||
from socket import gethostname
|
from socket import gethostname
|
||||||
|
import subprocess
|
||||||
|
from tools.filesutils import check_and_create
|
||||||
|
|
||||||
app = Flask( 'pywallter' )
|
app = Flask( 'pywallter' )
|
||||||
app.config.from_pyfile('config.py')
|
app.config.from_pyfile('config.py')
|
||||||
@ -14,12 +17,14 @@ bcrypt = Bcrypt(app)
|
|||||||
|
|
||||||
|
|
||||||
DATAS_USER = app.config['DOSSIER_APP']
|
DATAS_USER = app.config['DOSSIER_APP']
|
||||||
|
DOSSIER_PERSO = app.config['DOSSIER_APP']
|
||||||
extensionimg = app.config['EXT_IMG']
|
extensionimg = app.config['EXT_IMG']
|
||||||
DATABASE = app.config['DATABASE']
|
DATABASE = app.config['DATABASE']
|
||||||
MAIL_SERVER = app.config['MAIL_SERVER']
|
MAIL_SERVER = app.config['MAIL_SERVER']
|
||||||
XMPP_SERVER = app.config['XMPP_SERVER']
|
XMPP_SERVER = app.config['XMPP_SERVER']
|
||||||
SETUID = app.config['SETUID']
|
SETUID = app.config['SETUID']
|
||||||
BASE_URL = app.config['BASE_URL']
|
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'] )
|
@inscription.route( '/inscription/<token>', methods=['GET','POST'] )
|
||||||
def signin(token) :
|
def signin(token) :
|
||||||
hostname = gethostname()
|
hostname = MAIL_DOMAIN
|
||||||
url_inscription = url_for('loginlogout.index', _external=True)+'inscription/'+token
|
url_inscription = BASE_URL +'/inscription/'+token
|
||||||
resp = None
|
resp = None
|
||||||
if valid_token_register(token, "Invitation"):
|
if valid_token_register(token, "Invitation"):
|
||||||
if 'username' in session :
|
if 'username' in session :
|
||||||
@ -58,14 +63,13 @@ def signin(token) :
|
|||||||
url_inscription=url_inscription,
|
url_inscription=url_inscription,
|
||||||
MAIL_SERVER=MAIL_SERVER, XMPP_SERVER=XMPP_SERVER)
|
MAIL_SERVER=MAIL_SERVER, XMPP_SERVER=XMPP_SERVER)
|
||||||
|
|
||||||
|
user = str(request.form['user'])
|
||||||
user = request.form['user']
|
passwd = str(request.form['passwd'])
|
||||||
passwd = request.form['passwd']
|
passwdconfirm = str(request.form['passwdconfirm'])
|
||||||
passwdconfirm = request.form['passwdconfirm']
|
|
||||||
bcrypt_passwd = bcrypt.generate_password_hash(request.form['passwd'])
|
bcrypt_passwd = bcrypt.generate_password_hash(passwd)
|
||||||
mail_passwd_change = 0
|
mail_passwd_change = 0
|
||||||
|
|
||||||
password_valid = valid_passwd(passwd)
|
|
||||||
not_error = True
|
not_error = True
|
||||||
|
|
||||||
conn = sqlite3.connect(DATABASE) # Connexion à la base de donnée
|
conn = sqlite3.connect(DATABASE) # Connexion à la base de donnée
|
||||||
@ -75,14 +79,13 @@ def signin(token) :
|
|||||||
testuser = cursor.fetchone()
|
testuser = cursor.fetchone()
|
||||||
conn.close()
|
conn.close()
|
||||||
|
|
||||||
|
print("user :" +user)
|
||||||
|
print ("passwd: "+ passwd)
|
||||||
if testuser and valid_username(user):
|
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')
|
flash(u'Les caractères espaces et \' ( ) < > , ; : " [ ] | ç % & ne sont pas autorisés', 'error')
|
||||||
not_error = False
|
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:
|
if MAIL_SERVER:
|
||||||
mail = user.lower()+'@'+hostname
|
mail = user.lower()+'@'+hostname
|
||||||
@ -102,22 +105,32 @@ def signin(token) :
|
|||||||
|
|
||||||
# On change le mot de passe du compte mail
|
# On change le mot de passe du compte mail
|
||||||
if MAIL_SERVER:
|
if MAIL_SERVER:
|
||||||
cmd = SETUID + ' set_mail_passwd ' + '"'+mail+'" ' + '"'+passwd+'"'
|
cmd = subprocess.run([SETUID, 'set_mail_passwd', mail, passwd],stdout=subprocess.PIPE)
|
||||||
mail_passwd_change = os.system(cmd)
|
if cmd.returncode != 0:
|
||||||
if mail_passwd_change != 0:
|
|
||||||
flash(u'Il y a eu une problème lors du changement de mot passe pour le compte Mail', 'error')
|
flash(u'Il y a eu une problème lors du changement de mot passe pour le compte Mail', 'error')
|
||||||
else:
|
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
|
# On change le mot de passe du compte XMPP
|
||||||
if XMPP_SERVER:
|
if XMPP_SERVER:
|
||||||
tmp = mail.split('@')
|
jid = mail.split('@')
|
||||||
cmd = SETUID+ ' prosodyctl register ' "'"+tmp[0]+"' " + "'"+tmp[1]+"' " + "'"+passwd+"'"
|
cmd = subprocess.run([SETUID,'prosodyctl', 'register', jid[0],jid[1],passwd],stdout=subprocess.PIPE)
|
||||||
res = os.system(cmd)
|
|
||||||
if res != 0:
|
if cmd.returncode != 0:
|
||||||
flash(u'Il y a eu un problème pour la création du compte XMPP !', 'error')
|
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.
|
# 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,))
|
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,))
|
cursor.execute("""UPDATE users set invitations=?, Token='' where name=?""", (invitations_count, username,))
|
||||||
conn.commit()
|
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'))
|
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:
|
else:
|
||||||
resp = redirect(BASE_URL, code=401)
|
resp = redirect(BASE_URL, code=401)
|
||||||
|
|
||||||
return resp
|
return resp
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user