Commit 130edd15 authored by Kiste's avatar Kiste
Browse files

Keyring support

parent 1026146f
# Stud.SAUGER
Der [Stud.SAUGER](https://git.finf.uni-hannover.de/kiste/studsauger) lädt alle Dateien der eigenen Veranstaltungen aus [Stud.IP](http://www.studip.de/) mittels der [Rest.IP](https://studip.github.io/studip-rest.ip/)-API herunter.
## Authentifizierung
Rest.IP unterstützt zur Authentifizierung `3-legged OAuth`, `Session` per Cookie oder `HTTP Basic Authentication`. Letzteres verwendet der Stud.SAUGER. Das Passwort kann entweder per Kommandozeilenparameter übergeben werden, z.B. in verbindung mit dem Passwortmanager [pass](https://www.passwordstore.org/)
`
$ studsauger --password "$(pass user@studip)"
`
oder direkt als Parameter, **dann landet es aber in der Shell-History**. Es kann auch in der `config.yaml` hinterlegt werden, **dann liegt es allerdings im Klartext im Dateisystem**. Es empfieht sich die Verwendung eines [Keyrings](https://pypi.python.org/pypi/keyring). Der Key kann mit
`
$ keyring set studsauger $user
`
sicher hinterlegt werden.
......@@ -3,6 +3,7 @@
import os
import shutil
import argparse
import keyring
import requests
import yaml
......@@ -26,7 +27,7 @@ if args.config:
if os.path.isfile(args.config):
configpath = args.config
else:
print('Die Konfigurationsdatei ' + args.config + ' existiert nicht!')
print('Die Konfigurationsdatei "' + args.config + '" existiert nicht!')
exit(1)
elif os.path.isfile(os.environ['XDG_CONFIG_HOME'] + '/studsauger/config.yaml'):
configpath = os.environ['XDG_CONFIG_HOME'] + '/studsauger/config.yaml'
......@@ -56,7 +57,13 @@ elif 'user' in config:
else:
print('Kein Benutzer angegeben!')
exit(1)
if args.password:
keyringpw = keyring.get_password('studsauger', user)
if keyringpw:
password = keyringpw
if args.password or 'password' in config:
print('Passwort für Benutzer "' + user + '" ist im Keyring und darf nicht angegeben werden!')
exit(1)
elif args.password:
password = args.password
elif 'password' in config:
password = config['password']
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment