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 netbluemind5
yum install python-pip
pip install --upgrade setuptools
pip install netbluemind5
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 netbluemind5
## Verwendung
### Authentifizierung
Der Client initialisiert sich mit der Klasse BMClient:
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()
Kunde = BMClient(URL, KEY)
- `URL`: definiert die URL für den Zugriff auf den BlueMind Server; von außen wird die URL `https://bluemind.domain.net/api` lauten.
- `KEY`: entspricht dem Passwort oder *token* von admin0; in diesem Beispiel verwenden wir das Token admin0, das auf dem Server verfügbar ist, um erweiterte Rechte auf API-Ebene zu erhalten.
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.*
### Verwendung
#### BMClient
Die Klasse BMClient ist ein *helper*, der auch den Zugriff auf die verschiedenen Klassen zur Manipulation von Benutzern, Gruppen usw. ermöglicht.
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
#### Users
iUser (Instanz von IUser) ermöglicht den Zugriff auf alle Informationen eines Benutzers (Passwort, Foto, Kontakt, archivierter Status usw.) und deren Änderung.
Die verschiedenen Methoden geben eine Instanz eines Objekts *ItemValue* zurück, das über das Attribut *value* den Zugriff auf das betreffende Objekt ermöglicht.
#### Domains
Es ist möglich, Domains über die Schnittstelle *IDomains* zu erstellen oder zu bearbeiten.
Bei der Erstellung einer Domäne ist es wichtig, dass die Domänen-ID mit dem Namen der Domäne übereinstimmt:
domain = Domain() domain.name = "local.lan" domain.label = "local.lan" domain.description = "Domain of " + "local.lan" domain.properties =
global muss immer auf False stehen
domain.global_ = False
ermöglicht es, die Aliasnamen der Domäne zu definieren
domain.aliases = []
idomains.create("local.lan", domain)
→ Es ist möglich, die Parameterkonfiguration für die Plugins *ImportLDAP* und *ImportAD* mit dem Attribut *properties* zu definieren:
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'] = 'de' 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_default_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
:::note[Import AD]
Für den Import von Active Directory müssen Sie nur *ldap* durch *ad* ersetzen.
:::
### Beispiele
Viele Beispiele für Möglichkeiten sind im BlueMind Repository zugänglich: [https://forge.bluemind.net/stash/projects/BA/repos/bluemind-samples/browse/python-api-examples](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 + "]".