Correction de bugs

This commit is contained in:
kitoy 2022-08-22 05:34:56 +02:00
parent f5cd7021c5
commit 4bb19ff8a9
4 changed files with 41 additions and 24 deletions

View File

@ -1,12 +1,14 @@
# Pywallter est un projet de portail communautaire pour les utilisateur d'un serveur.
ça demande juste un identifiant et un mot de passe et voila.
# Pywallter est un projet de portail communautaire pour les utilisateurs d'un serveur.
Ça demande juste un identifiant et un mot de passe et voila.
Si les serveurs Mail et/ou XMPP sont configurer pywallter peut à gerer les alias et le mot de passe pour son compte mail et XMPP
On peut y importer des fichiers que l'on pourra rendre accèssible en public par la suite.
Je voulais tester cette idée de post-it pour que les utilisateur puisse s'échanger des messages
ou que les admins puisse faire des annonces... On verra
ou que les admins puisse faire des annonces...
On verra
on pourrait ajoute de la double authentification mais bon ...
## Pour démarrer le programme
## Installer le programme
### Sur OpenBSD (7.1)
Il faut installer FLask et quelques dépendances
@ -21,10 +23,10 @@ Il reste malheuresment une dépendances sur flask-bcrypt a installé avec pip:
apt install python3-flask python3-flask-bcrypt python3-wtforms python3-pil python3-markdown \
python3-gevent python3-zope.interface
### Ensuite dans le dossier du projet tu fais :
## Démarrer le programme :
$ export FLASK_APP=pywallter.py
$ flask run
# cp config.py.example config.py
$ python3 pywallter.py
#### En serveur de production
$ python3 wsgi.py
@ -36,4 +38,16 @@ Et ça devrait démarrer sans soucis.
Le logiciel a besoin de opensmtpd et prosody pour fonctionner.
Le serveur mail et xmmp se base sur le domaine de la machine.
Les scripts dans le dossier scripts sont la à titre d'exemple et peuvent être copié dans /usr/local/bin
si vous la configuration présenté dans le wiki
Une configuration fonctionnelle de prosody et opensmtpd est disponible dans le wiki.
## Comment ça fonctionne ?
Globalement le programme stocke les fichiers des utilisateurs dans un dossiers, les fichiers de tous types
sont stocker dans le dossier files et les images sont mis dans le dossier images et son consultable dans le menu gallerie.
Pour les comptes XMPP le programme fait un appel à prosodyctl.
Pour les comptes mail vous devez avoir deux programmes set_mail_alias et set_mail_passwd.
Les appels pour le compte mail se font ainsi :
set_mail_passwd example@votredomaine.fr 'le mot de passe'
set_mail_alias example@votredomaine.fr add monalias@votredomaine.fr
set_mail_alias example@votredomaine.fr del monalias@votredomaine.fr

View File

@ -30,11 +30,6 @@ if init_dir():
print ("Le repertoire des utilisateurs a été créer")
# Set the secret key. Keep this really secret
#app.secret_key = 'klfkdlfkdslfkln234325;cx!' # Chiffre les cookies si j'ai bien capté.
# À générer aléatoirement impérativement avant de mettre en ligne.
#### Variables ####################################################################################
@ -81,9 +76,8 @@ def create_app():
app.register_blueprint(logs)
app.register_blueprint(loginlogout)
app.register_blueprint(mygallery)
return app
if __name__ == '__main__' :
hostname=gethostname()
app.run(host='127.0.0.1', port=8080, debug=False)
app.run(host='127.0.0.1', port=8000, debug=False)

View File

@ -23,7 +23,7 @@
<td>{{ fichier[0] }}</td>
<td><a href="/myfiles/{{ fichier[1] }}">{{ fichier[1] }}</a></td>
<td>{{ fichier[2] }}</td>
<td><a href="{{ url_for('remove', nom=fichier[1]) }}"><button type="button" class="btn btn-sm btn-danger">Supprimer</button></a></td>
<td><a href="{{ url_for('filesupload.remove', nom=fichier[1]) }}"><button type="button" class="btn btn-sm btn-danger">Supprimer</button></a></td>
</tr>
{% endfor %}
{% endif %}

View File

@ -36,13 +36,22 @@ def signin(token) :
resp = redirect(url_for('profil.profile', _external=True))
else :
if request.method == 'POST':
if not(request.form['user']) or not(request.form['passwd']) or not(request.form['mail']):
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)
if not(request.form['user']) or not(request.form['passwd']) :
if MAIL_SERVER:
if not(request.form['mail']):
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)
else:
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)
user = request.form['user']
passwd = request.form['passwd']