Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • nounous/cranspasswords
  • detraz/cranspasswords
  • dstan/cranspasswords
  • serrano/cranspasswords
  • bde/bdepasswords
  • esum/cranspasswords
  • bombar/cranspasswords
7 results
Show changes
Showing
with 419 additions and 151 deletions
Source: cranspasswords
Section: devel
Priority: optional
Maintainer: Les Nounous <roots@crans.org>
Build-Depends: debhelper (>=11~), dh-python, python3-all, python3-setuptools
Standards-Version: 4.1.4
Homepage: https://gitlab.crans.org/nounous/cranspasswords
X-Python3-Version: >= 3.4
Package: cranspasswords
Architecture: all
Multi-Arch: foreign
Depends: ${misc:Depends}, ${python3:Depends}
Description: group password manager based on GnuPG
This is a group password manager that collects encrypted files on a remote
server and decrypt them using GnuPG.
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: Les Nounous
Upstream-Contact: Les Nounous <nounous@crans.org>
Source: https://gitlab.crans.org/nounous/cranspasswords
Files: *
Copyright: 2015-2020 Cr@ns <roots@crans.org>
License: GPL-3+
This program is free software; you can redistribute it
and/or modify it under the terms of the GNU General Public
License as published by the Free Software Foundation; either
version 3 of the License, or (at your option) any later
version.
.
This program is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the GNU General Public License for more
details.
.
You should have received a copy of the GNU General Public
License along with this package; if not, write to the Free
Software Foundation, Inc., 51 Franklin St, Fifth Floor,
Boston, MA 02110-1301 USA
.
On Debian systems, the full text of the GNU General Public
License version 3 can be found in the file
`/usr/share/common-licenses/GPL-3'.
#!/usr/bin/make -f
export DH_VERBOSE = 1
%:
dh $@ --with python3 --buildsystem=pybuild
* Replication auto
* CLI
* ./configure
* Tester python
* Tester xclip
* Proposer des profils tous faits dans un sous-dosier
* make update (après git pull)
* remplissage via ldap
* retirer le binaire serveur de /usr/local/bin/
* Modulariser le code (client.py devient gros)
* internationalisation
* annotation des dates de dernières màj et cie
diff --git a/client.py b/client.py
index 6ba2a6e..6486e11 100755
--- a/client.py
+++ b/client.py
@@ -805,6 +805,9 @@ def recrypt_files(options):
if to_put:
if not options.quiet:
print((u"Rechiffrement de %s" % (", ".join([f['filename'] for f in to_put]))).encode("utf-8"))
+ if options.simulate:
+ print((u"Did nothing").encode('utf-8'))
+ return
results = put_files(options, to_put)
# On affiche les messages de retour
if not options.quiet:
@@ -915,6 +918,7 @@ if __name__ == "__main__":
(par défaut, tous vos rôles en écriture seront utilisés).
Avec --recrypt-files, tous les fichiers ayant au moins un de ces roles (et pour lesquels vous avez le droit d'écriture) seront rechiffrés
(par défaut, tous les fichiers pour lesquels vous avez les droits en écriture sont rechiffrés).""")
+ parser.add_argument('--simulate', action='store_true', default=False)
parser.add_argument('fname', nargs='?', default=None,
help="Nom du fichier à afficher")
ssh-keygen -y -f ~/test_agent > test_agent.pub
ssh-add ma_cle_prive
ssh-add -d ma_cle_publique
File moved
File moved
#: Liste des serveurs sur lesquels ont peut récupérer des mots de passe.
#:
#: Sans précision du paramètre --server, la clé `DEFAULT` sera utilisée.
#:
#: `host` est l'ip ou le nom de domaine sur lequel se connecter
#: `remote_cmd' est la commande executée sur le serveur.
[DEFAULT]
host=odlyd.crans.org
remote_cmd=sudo -n /usr/local/bin/cranspasswords-server
[localhost]
host=localhost
remote_cmd=sudo -n /usr/local/bin/cranspasswords-server
[ovh]
host=soyouz.crans.org
remote_cmd=sudo -n /usr/local/bin/cranspasswords-server
Example files for sereval setups, on the client side. Possibly several server
defined in one single client configuration file.
#: Liste des serveurs sur lesquels ont peut récupérer des mots de passe.
#:
#: Sans précision du paramètre --server, la clé `DEFAULT` sera utilisée.
#:
#: `host` est l'ip ou le nom de domaine sur lequel se connecter
#: `remote_cmd' est la commande executée sur le serveur.
[DEFAULT]
host=odlyd.crans.org
remote_cmd=sudo -n /usr/local/bin/cranspasswords-server
[titanic]
host=titanic
remote_cmd=ssh odlyd.crans.org sudo -n /usr/local/bin/cranspasswords-server
[localhost]
host=localhost
remote_cmd=sudo -n /usr/local/bin/cranspasswords-server
[ovh]
host=soyouz.crans.org
remote_cmd=sudo -n /usr/local/bin/cpasswords-server
#: Liste des serveurs sur lesquels ont peut récupérer des mots de passe.
#:
#: Sans précision du paramètre --server, la clé `DEFAULT` sera utilisée.
#:
#: `host` est l'ip ou le nom de domaine sur lequel se connecter
#: `remote_cmd' est la commande executée sur le serveur.
[DEFAULT]
host=
remote_cmd=/home/dstan/cranspasswords/serverconfigs/tudor/cpasswords-server
[gladys]
host=home.b2moo.fr
remote_cmd=/home/dstan/cranspasswords/serverconfigs/tudor/cpasswords-server
[gladys-home]
host=gladys.home
remote_cmd=/home/dstan/cranspasswords/serverconfigs/tudor/cpasswords-server
[pimeys]
host=pimeys.fr
remote_cmd=sudo -n /usr/local/bin/cranspasswords-server
"""
Configuration Serveur de cranspasswords.
Sont définis ici les utilisateurs et les rôles associés.
Ce fichier est donné à titre d'exemple.
"""
#: 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,)
#: Ce serveur est-il read-only (on ne peut pas y modifier les mots de passe)
READONLY = False
#: Paramètres mail
SMTP_HOST = "smtp.crans.org"
FROM_MAIL = "%s <root@crans.org>" % cmd_name
TO_MAIL = "root@crans.org"
#: Mapping des utilisateurs et de leurs (mail, fingerprint GPG)
KEYS = {
'dstan': (u'daniel.stan@crans.org', u'90520CFDE846E7651A1B751FBC9BF8456E1C820B'),
'legallic': (u'legallic@crans.org', u'4BDD2DC3F10C26B9BC3B0BD93602E1C9A94025B0'),
}
#: Les variables suivantes sont utilisées pour définir le dictionnaire des
#: rôles.
RTC = [
'dstan'
]
#: Liste des usernames des nounous
NOUNOUS = RTC + [
'legallic',
]
# Autogen:
#: Liste des usernames des apprentis
APPRENTIS = [
]
#: Liste des usernames des membres du CA
CA = [
]
#: Liste des trésoriers
TRESORERIE = RTC + [
]
#: Les roles utilisés pour savoir qui a le droit le lire/écrire quoi
ROLES = {
"ca": CA,
"ca-w": CA,
"nounous": NOUNOUS,
"nounous-w": NOUNOUS,
"apprentis": NOUNOUS + APPRENTIS,
"apprentis-w": NOUNOUS,
"tresorerie": TRESORERIE,
"tresorerie-w": TRESORERIE,
}
Example files for sereval setups, on the server side.
#!/bin/bash
# Où trouver le paquet python
PKG_DIR=~/cranspasswords
# Où trouver la conf serveur
CONF=$PKG_DIR/serverconfigs/tudor
# Binaire python
PYTHON=/usr/bin/python
/usr/bin/env PYTHONPATH=$PKG_DIR CRANSPASSWORDS_SERVER_CONFIG_DIR=$CONF $PYTHON $PKG_DIR/cpasswords/server.py "$@"
#!/usr/bin/env python2
# -*- encoding: utf-8 -*-
""" Configuration Serveur de cpasswords.
Version de Tudor
"""
#: Pour override le nom si vous voulez renommer la commande
cmd_name = 'cpasswords'
#: Chemin vers la commande sendmail
sendmail_cmd = '/usr/lib/sendmail'
#: Répertoire de stockage des mots de passe
STORE = '/home/dstan/passwords/data'
#: Ce serveur est-il read-only (on ne peut pas y modifier les mots de passe)
READONLY = False
#: Expéditeur du mail de notification
CRANSP_MAIL = u"%s <dstan+cpasswords@crans.org>" % (cmd_name,)
#: Destinataire du mail de notification
DEST_MAIL = u"dstan+cpasswords@crans.org"
#: Mapping des utilisateurs et de leurs (mail, fingerprint GPG)
KEYS = {
u'dstan': (u'daniel.stan@crans.org', u'90520CFDE846E7651A1B751FBC9BF8456E1C820B'),
}
_ME = [u'dstan']
#: Les roles utilisés pour savoir qui a le droit le lire/écrire quoi
ROLES = {
'moi': _ME,
'moi-w': _ME,
}
BACKUP_SERVERS = {
'gladys': {
'server_cmd': ['/usr/bin/ssh', 'home.b2moo.fr', '/home/dstan/cranspasswords/serverconfigs/tudor/cpasswords-server', ],
'keep-alive': True,
},
}
BACKUP_ROLES = {
'moi': ['gladys'],
}
#!/bin/bash
# Execute docs/update_locales.sh from repo root
xgettext --from-code utf-8 -o messages.pot cpasswords/*.py
msgmerge --update cpasswords/locale/fr/LC_MESSAGES/messages.po messages.pot
rm messages.pot
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
""" Configuration Serveur de cranspasswords.
Sont définis ici les utilisateurs et les rôles associés.
Ce fichier est donné à titre d'exemple, mais n'est PAS
utilisé lors du fonctionnement en mode client.
Dans le futur, pourra être remplacé par une connexion ldap.
"""
#: Pour override le nom si vous voulez renommer la commande
cmd_name = 'cranspasswords'
#: Répertoire de stockage des mots de passe
STORE = '/var/lib/%s/db/' % (cmd_name,)
#: Ce serveur est-il read-only (on ne peut pas y modifier les mots de passe)
READONLY = False
#: Expéditeur du mail de notification
CRANSP_MAIL = u"%s <root@crans.org>" % (cmd_name,)
#: Destinataire du mail de notification
DEST_MAIL = u"root@crans.org"
#: Mapping des utilisateurs et de leurs (mail, fingerprint GPG)
KEYS = {
u'aza-vallina': (u'Damien.Aza-Vallina@crans.org', None),
u'becue': (u'becue@crans.org', u'9AE04D986400E3B67528F4930D442664194974E2'),
u'blockelet': (u'blockelet@crans.org', u'550A057BC913EA4637D250495314C173AF087A52'),
u'boilard': (u'boilard@crans.org', u'E73A648AAB5E81BE38038350C1690AB9C39EB6F4'),
u'cauderlier': (u'cauderlier@crans.org', None),
u'chambart': (u'pierre.chambart@crans.org', u'085D0DFB66EAF9448C42979C43680A46F2530FCE'),
u'dandrimont': (u'nicolas.dandrimont@crans.org', u'791F12396630DD71FD364375B8E5087766475AAF'),
u'dimino': (u'jdimino@dptinfo.ens-cachan.fr', u'2C938EAC93A16F8129F807C81E8A30532127F85A'),
u'dstan': (u'daniel.stan@crans.org', u'90520CFDE846E7651A1B751FBC9BF8456E1C820B'),
u'durand-gasselin': (u'adg@crans.org', u'B3EA34ED8A4EA3B5C3E6C04D30F01C448E96ACDA'),
u'glondu': (u'Stephane.Glondu@crans.org', u'58EB0999C64E897EE894B8037853DA4D49881AD3'),
u'huber': (u'olivier.huber@crans.org', u'3E9473AF796C530F9C4DE7DB1EF81A95E0DCF376'),
u'iffrig': (u'iffrig@crans.org', u'26A210E2584208FEF6BE8F3718068DEA354B0045'),
u'lagorce': (u'xavier.lagorce@crans.org', u'08C26F5AABC5570E5E2F52B39D9D7CE70BF3708E'),
u'lajus': (u'lajus@crans.org', None),
u'legallic': (u'legallic@crans.org', u'4BDD2DC3F10C26B9BC3B0BD93602E1C9A94025B0'),
u'lerisson': (u'lerisson@crans.org', None),
u'maioli': (u'maioli@crans.org', None),
u'parret-freaud': (u'parret-freaud@crans.org', u'A93D3EB37C3669F89C01F9AE13AC8F777D980513'),
u'samir': (u'samir@crans.org', u'C7B8823E96E8DC2798970340C86AD2AA41C2B76B'),
u'tvincent': (u'vincent.thomas@crans.org', u'DFB04CE4394B1115C587AE101C6BE33AC5C4ACC0'),
#Autogen
u'besson': (u'lbesson@ens-cachan.fr', None),#u'BF105A8DC75491B9D6EDAC5D01AACDB9C108F8A0',
u'tilquin': (u'tilquin@crans.org', None),
u'pvincent': (u'pvincent@crans.org', None),
u'pommeret': (u'pommeret@crans.org', u'8D9C890BD2B783A052DBE71405504FF0CF875FE1'),
u'lasseri': (u'lasseri@crans.org', u'31EF775095485A1CA4CC7CAAA2A902AE80403321'),
u'moisy-mabille': (u'moisy-mabille@crans.org', None),
u'guiraud': (u'guiraud@crans.org', u'8C8F34952DCBA75CD2963A4C33ECE62B57DA1CD4'),
u'soret': (u'soret@crans.org', u'C244290074A0A4A8C05FCA1ACF25D25F17DA8589'),
u'serrano': (u'serrano@crans.org', u'64ABC0C087EDAA14B79F5F7DEDE22762F030FDC5'),
u'kherouf': (u'kherouf@crans.org', None),
u'baste': (u'baste@crans.org', None),
u'quelennec': (u'quelennec@crans.org', None),
u'grande': (u'grande@crans.org', None),
u'gstalter': (u'gstalter@crans.org', None),
u'duplouy': (u'duplouy@crans.org', None),
u'randazzo': (u'randazzo@crans.org', None),
u'epalle': (u'epalle@crans.org', None),
u'bonaque': (u'bonaque@crans.org', None),
u'kviard': (u'kviard@crans.org', None)
}
#: Les variables suivantes sont utilisées pour définir le dictionnaire des
#: rôles.
RTC = [
u'samir'
]
#: Liste des usernames des nounous
NOUNOUS = RTC + [
u'blockelet',
u'becue',
u'dstan',
u'chambart',
u'dimino',
u'durand-gasselin',
u'glondu',
u'huber',
u'lagorce',
u'parret-freaud',
u'cauderlier',
u'maioli',
u'iffrig',
u'boilard',
u'legallic',
u'pommeret',
u'serrano',
]
# Autogen:
#: Liste des usernames des apprentis
APPRENTIS = [
u'grande',
u'bonaque',
u'moisy-mabille',
u'baste',
u'duplouy',
u'besson',
u'pvincent',
u'quelennec',
u'guiraud',
u'kherouf',
u'randazzo',
u'tilquin',
u'lasseri',
u'epalle',
u'soret',
u'gstalter',
u'kviard']
#: Liste des usernames des membres du CA
CA = [
u'becue',
u'duplouy',
u'epalle',
u'guiraud',
u'lajus',
u'lasseri',
u'lerisson',
u'randazzo',
u'soret',
]
#: Liste des trésoriers
TRESORERIE = RTC + [
u'soret',
u'guiraud',
u'randazzo',
]
#: Les roles utilisés pour savoir qui a le droit le lire/écrire quoi
ROLES = {
"ca": CA,
"ca-w": CA,
"nounous": NOUNOUS,
"nounous-w": NOUNOUS,
"apprentis": NOUNOUS + APPRENTIS,
"apprentis-w": NOUNOUS,
"tresorerie": TRESORERIE,
"tresorerie-w": TRESORERIE,
}
#!/usr/bin/env python3
from setuptools import setup
from os import getenv, path
# Enable the user to install cpasswords
# with another command and config path
command_name = getenv("COMMAND_NAME", "cranspasswords")
def compile_messages():
"""
Compile gettext translations
For now, only compile french
"""
mo_files = []
locales = ['cpasswords/locale/fr/LC_MESSAGES/messages.po']
for po_file in locales:
filename, _ = path.splitext(po_file)
mo_file = filename + '.mo'
try:
from polib import pofile
po = pofile(po_file)
po.save_as_mofile(mo_file)
mo_files.append(mo_file)
except ImportError:
print("Polib is not installed, locales will not be compiled.")
break
return [('locale', mo_files), ]
setup(
name="cpasswords",
version="0.3.0",
description="Group password manager based on GPG",
long_description=open('README.rst', encoding='utf-8').read(),
author="CRANS",
author_email="roots@crans.org",
license='GPLv3',
keywords=['crans', 'passwords', 'gpg', 'ssh', 'group'],
url="https://gitlab.crans.org/nounous/cranspasswords",
classifiers=[
'Development Status :: 5 - Production/Stable',
'Environment :: Console',
'Intended Audience :: Developers',
'Intended Audience :: Information Technology',
'Intended Audience :: System Administrators',
'License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)',
'Operating System :: POSIX',
"Programming Language :: Python :: 3",
'Topic :: Utilities',
],
packages=['cpasswords'],
data_files=compile_messages(),
include_package_data=True,
install_requires=[
'wheel',
'paramiko>=2.2',
'pyperclip>=1.6.4',
'gpg',
'dnspython',
],
entry_points={
"console_scripts": [
command_name + " = cpasswords.client:main",
command_name + "-server = cpasswords.server:main",
]
}
)
#!/usr/bin/env -S nix-shell --pure
with import <nixpkgs> {};
with python38Packages;
let
cpasswords = python38.pkgs.buildPythonApplication rec {
pname = "cpasswords";
version = "dev";
#src = fetchGit {
# url = "https://gitlab.crans.org/nounous/cranspasswords.git";
# ref = version;
#};
src = [ ./. ];
doCheck = false;
propagatedBuildInputs = [ polib gpgme paramiko pyperclip dnspython ];
meta = with lib; {
description = "This is a centralized passwords manager, using GPG for protection, and allowing shared passwords to groups.";
homepage = "https://gitlab.crans.org/nounous/cranspasswords";
license = licenses.gpl3;
};
};
in mkShell {
buildInputs = [
cpasswords
];
}
[tox]
envlist =
linters
skipsdist = True
[testenv]
setenv =
PYTHONWARNINGS = all
[testenv:linters]
deps =
paramiko
flake8
flake8-colors
flake8-import-order
flake8-typing-imports
pep8-naming
pyflakes
commands =
flake8 cpasswords
[flake8]
exclude =
.tox,
.git,
__pycache__,
build,
dist,
*.pyc,
*.egg-info,
.cache,
.eggs,
*migrations*
max-complexity = 15
max-line-length = 160
import-order-style = pep8
application-import-names = flake8
format = ${cyan}%(path)s${reset}:${yellow_bold}%(row)d${reset}:${green_bold}%(col)d${reset}: ${red_bold}%(code)s${reset} %(text)s