Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Crans Passwords
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
5
Issues
5
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nounous
Crans Passwords
Commits
fe9ba118
Commit
fe9ba118
authored
Apr 25, 2014
by
Pierre-Elliott Bécue
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[cranspasswords] On envoit les notifs via la commande sendmail
parent
492d9f66
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
14 additions
and
11 deletions
+14
-11
server.py
server.py
+11
-11
serverconfig.example.py
serverconfig.example.py
+3
-0
No files found.
server.py
View file @
fe9ba118
...
...
@@ -10,9 +10,9 @@ import os
import
pwd
import
sys
import
json
import
smtplib
import
datetime
import
socket
import
subprocess
from
email.mime.text
import
MIMEText
from
email.mime.multipart
import
MIMEMultipart
...
...
@@ -137,7 +137,7 @@ def listkeys():
def
listfiles
():
"""Liste les fichiers dans l'espace de stockage, et les roles qui peuvent y accéder"""
os
.
chdir
(
serverconfig
.
STORE
)
filenames
=
glob
.
glob
(
'*.json'
)
files
=
{}
for
filename
in
filenames
:
...
...
@@ -158,7 +158,7 @@ def getfile(filename):
return
[
True
,
obj
]
except
IOError
:
return
[
False
,
u
"Le fichier %s n'existe pas."
%
filename
]
@
server_command
(
'getfiles'
,
stdin_input
=
True
)
def
getfiles
(
filenames
):
"""Récupère plusieurs fichiers, lit la liste des filenames demandés sur stdin"""
...
...
@@ -175,11 +175,11 @@ def _putfile(filename, roles, contents):
oldroles
=
old
[
'roles'
]
if
not
validate
(
oldroles
,
'w'
):
return
[
False
,
u
"Vous n'avez pas le droit d'écriture sur %s."
%
filename
]
corps
=
u
"Le fichier %s a été modifié par %s."
%
(
filename
,
MYUID
)
backup
(
corps
,
filename
,
old
)
notification
(
u
"Modification de %s"
%
filename
,
corps
,
filename
,
old
)
filepath
=
getpath
(
filename
)
if
type
(
contents
)
!=
unicode
:
return
[
False
,
u
"Erreur: merci de patcher votre cpasswords !"
...
...
@@ -241,25 +241,25 @@ def backup(corps, fname, old):
back
.
write
((
u
'* %s: %s
\n
'
%
(
str
(
datetime
.
datetime
.
now
()),
corps
)).
encode
(
"utf-8"
))
back
.
close
()
# TODO monter plus haut
def
notification
(
subject
,
corps
,
fname
,
old
):
"""Envoie par mail une notification de changement de fichier"""
conn
=
smtplib
.
SMTP
(
'localhost'
)
frommail
=
serverconfig
.
CRANSP_MAIL
tomail
=
serverconfig
.
DEST_MAIL
msg
=
MIMEMultipart
(
_charset
=
"utf-8"
)
msg
[
'Subject'
]
=
subject
msg
[
'X-Mailer'
]
=
serverconfig
.
cmd_name
.
decode
()
msg
[
'From'
]
=
serverconfig
.
CRANSP_MAIL
msg
[
'To'
]
=
serverconfig
.
DEST_MAIL
msg
[
'From'
]
=
frommail
msg
[
'To'
]
=
tomail
msg
.
preamble
=
u
"%s report"
%
(
serverconfig
.
cmd_name
.
decode
(),)
info
=
MIMEText
(
corps
+
u
"
\n
La version précédente a été sauvegardée."
+
u
"
\n\n
Modification effectuée sur %s."
%
socket
.
gethostname
()
+
u
"
\n\n
--
\n
Cranspasswords.py"
,
_charset
=
"utf-8"
)
msg
.
attach
(
info
)
conn
.
sendmail
(
frommail
,
tomail
,
msg
.
as_string
()
)
conn
.
quit
(
)
mailProcess
=
subprocess
.
Popen
([
serverconfig
.
sendmail_cmd
,
"-t"
],
stdin
=
subprocess
.
PIPE
)
mailProcess
.
communicate
(
msg
.
as_string
()
)
if
__name__
==
"__main__"
:
argv
=
sys
.
argv
[
0
:]
...
...
serverconfig.example.py
View file @
fe9ba118
...
...
@@ -13,6 +13,9 @@ Dans le futur, pourra être remplacé par une connexion ldap.
#: Pour override le nom si vous voulez renommer la commande
cmd_name
=
'cranspasswords'
#: Chemin vers la commande sendmail
sendmail_cmd
=
'/usr/lib/sendmail'
#: Répertoire de stockage des mots de passe
STORE
=
'/var/lib/%s/db/'
%
(
cmd_name
,)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment