Zum Hauptinhalt gehen

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.

aptitude install python-pip 
pip install --upgrade setuptools
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 URL https://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

Import AD

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 + "]"