Python-Client
Version von Python
Der BlueMind Python Client unterstützt Python 2.7 oder die aktuelle Version von Python 3. Wir empfehlen die Verwendung von Python 3 für alle neuen Projekte, da Python 2 das Ende seines Lebenszyklus erreicht hat.
Installation
Der Python-Client wird über pip installiert, wenn möglich in einer virtuellen Umgebung (virtualenv oder venv), um nicht mit dem System zu interferieren.
- Debian/Ubuntu
- CentOS/Redhat
- macOS
aptitude install python-pip
pip install --upgrade setuptools
pip install netbluemind4
yum install python-pip
pip install --upgrade setuptools
pip install netbluemind4
curl -O https://bootstrap.pypa.io/get-pip.py
sudo /usr/bin/python get-pip.py
sudo /usr/local/bin/pip install --upgrade pip
pip install --upgrade setuptools
sudo /usr/local/bin/pip install netbluemind4
Nutzung
Authentifizierung
Der Kunde wird mit der Klasse BMClient initialisiert:
from netbluemind.python.client import BMClient
# BEGIN CONF
URL="http://localhost:8090/api"
# END CONF
f = open('/etc/bm/bm-core.tok', 'r')
KEY = f.readline()
f.close()
client = BMClient(URL, KEY)
URL
: definiert die URL zum BlueMind Server; von außen wird die URLhttps://bluemind.domain.net/api
sein.KEY
: entspricht dem Passwort oder Token des Admin0 ; in diesem Beispiel wird das Admin0-Token auf dem Server verwendet, um erweiterte Rechte auf API-Ebene zu haben. Es ist möglich, sich als Benutzer zu authentifizieren mit:from netbluemind.python.client import BMClient
# BEGIN CONF
URL="http://localhost:8090/api"
# END CONF
client = BMClient(URL)
client.login('login@domain.net', 'password')
NB: Beachten Sie, dass es auch möglich ist, den API-Schlüssel eines Benutzers anstelle seines Passworts zu verwenden.
Nutzung
BMClient
Die Klasse BMClient ist ein Helper, der auch den Zugriff auf verschiedene Klassen ermöglicht, um Benutzer, Gruppen usw. zu manipulieren. :
from netbluemind.python.client import BMClient
# BEGIN CONF
URL="http://localhost:8090/api"
# END CONF
client = BMClient(URL)
client.login("login@domain.net", "password")
print client.apiKey
iUser = client.users("domain.net")
user = iUser.byEmail("login@domain.net")
print user.value.login
Benutzer
iUser (Instanz von IUser) ermöglicht den Zugriff auf alle Informationen eines Benutzers (Passwort, Foto, Kontakt, Archivstatus usw.) und deren Änderung. Die verschiedenen Methoden geben eine Instanz eines Objekts ItemValue zurück, die den Zugriff auf das betreffende Objekt über das Attribut value ermöglicht.
Domains
Es ist möglich, Domänen zu erstellen oder zu ändern, indem man die IDomains-Schnittstelle verwendet. Bei der Erstellung einer Domain ist es wichtig, dass die Domain-ID gleich dem Namen der Domain ist:
domain = Domain()
domain.name = "local.lan"
domain.label = "local.lan"
domain.description = "Domain of " + "local.lan"
domain.properties = {}
# global doit toujours être à False
domain.global_ = False
# permet de définir les alias du domaine
domain.aliases = []
idomains.create("local.lan", domain)
→ Es ist möglich, die Konfiguration der Parameter für die Plugins ImportLDAP und ImportAD unter Verwendung des Attributs properties festzulegen:
properties = dict()
properties['import_ldap_hostname'] = 'ldap.local'
properties['import_ldap_password'] = 'ldap-password'
properties['import_ldap_user_filter'] = '(mail=\*)'
properties['import_ldap_accept_certificate'] = True
properties['import_ldap_ext_id_attribute'] = 'entryUUID'
properties['import_ldap_relay_mailbox_group'] = ''
properties['import_ldap_enabled'] = True
properties['import_ldap_group_filter'] = '(objectClass=posixGroup)'
properties['import_ldap_protocol'] = 'tls'
properties['import_ldap_base_dn'] = 'dc=lan,dc=local'
properties['import_ldap_login_dn'] = 'uid=admin,cn=users,cn=accounts,dc=lan,dc=local'
properties['lang'] = 'fr'
properties['im_public_auth'] = True # allow Instant messaging for all users
properties['domain_max_users'] = None
properties['mail_routing_relay'] = ''
properties['mailbox_max_user_quota'] = '0'
properties['mailbox_default_user_quota'] = '0'
properties['mailbox_max_publicfolder_quota'] = '0'
properties['mailbox_default_publicfolder_quota'] = '0'
properties['filehosting_max_filesize'] = '0'
properties['filehosting_retention'] = '365'
properties['mail_autoDetachmentLimit'] = '0'
properties['mail_forward_unknown_to_relay'] = False
Für den Import von Active Directory einfach ldap durch ad ersetzen.
Beispiele
Viele Beispiele für verschiedene Möglichkeiten finden Sie hier: https://forge.bluemind.net/stash/projects/BA/repos/bluemind-samples/browse/python-api-examples
Starten eines Backups
client = BMClient(URL, KEY)
idataprotect = client.instance(IDataProtect)
taskRef = idataprotect.saveAll()
status = client.waitTask(taskRef)
print "\nBackup done with status [" + status.state.value + "]"