Python-Client
Python-Version
Der 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 am Ende seiner Lebensdauer angelangt ist.
Installation
Der Python-Client kann auf zwei verschiedene Arten installiert werden, entweder durch die Installation des Pakets python-bm-client, das in den BlueMind-Repositories verfügbar ist (nur Python 2.7), oder durch die Installation über pip (Python 2.7 oder Python 3).
Wir empfehlen die Installation über pip, wenn möglich in einer virtuellen Umgebung (virtualenv oder venv), um das System nicht zu stören. Da das Einrichten einer solchen Umgebung den Rahmen dieser Dokumentation sprengen würde, beschränken sich die folgenden Anweisungen auf die Verwendung der Python-Distribution des Systems.
- Debian/Ubuntu
- CentOS/Redhat
- Mac OSX
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
Verwendung
Authentifizierung
Der Client 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 Zugriffs-Url auf den BlueMind-Server, von außerhalb ist die Url https://bluemind.domain.net/api.
KEY entspricht dem Passwort oder Token des admin0, in diesem Beispiel verwenden wir das auf dem Server verfügbare Token admin0, um erweiterte Rechte auf der API-Ebene zu haben, ist es 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')
Es ist außerdem möglich, 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 zum Handling von Benutzern, Gruppen usw. zu 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
User
iUser (Instanz von UIser) ermöglicht den Zugriff und die Änderung aller Informationen über einen Benutzer (Passwort, Foto, Kontakt, archivierter Status usw.), die verschiedenen Methoden geben eine Instanz eines ItemValue-Objekts zurück, das den Zugriff auf das betreffende Objekt über das Attribut value ermöglicht.
Domains
Es ist möglich, Domains mithilfe der IDomains-Benutzeroberfläche zu erstellen oder zu bearbeiten. Beim Erstellen einer Domain ist es wichtig, dass die uid der Domain gleich ihrem Namen ist, daher wird die Erstellung wie folgt durchgeführt:
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 Konfigurationsparameter für die Plugins ImportLDAP und ImportAD über das Attribut properties zu setzen:
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 Active Directory-Import ersetzen Sie einfach ldap durch ad.
Beispiele
Viele Beispiele für diverse Möglichkeiten finden Sie hier: https://forge.bluemind.net/stash/projects/BA/repos/bluemind-samples/browse/python-api-examples
Ein Backup starten
client = BMClient(URL, KEY)
idataprotect = client.instance(IDataProtect)
taskRef = idataprotect.saveAll()
status = client.waitTask(taskRef)
print "\nBackup done with status [" + status.state.value + "]"