forked from stove/dataset
61 lines
1.9 KiB
Python
61 lines
1.9 KiB
Python
#!/usr/bin/env python
|
|
"""Module ldap"""
|
|
import sys
|
|
from glob import glob
|
|
from shutil import copyfile
|
|
from os import unlink, makedirs, stat
|
|
from os.path import dirname, isdir, isfile
|
|
from creole.client import CreoleClient
|
|
from pyeole.process import system_code
|
|
from pyeole.service import manage_service
|
|
from pyeole.bareosrestore import bareos_restore_one_file, exit_if_running_jobs
|
|
|
|
LDAPFILE = '/home/backup/sauv_ldap.ldif'
|
|
|
|
def execute(option, opt_str, value, parser, jobid, test_jobs=True):
|
|
"""ldap helper"""
|
|
if len(parser.rargs) > 0:
|
|
option = parser.rargs[0]
|
|
if option == 'pre':
|
|
pre()
|
|
elif option == 'post':
|
|
post()
|
|
else:
|
|
if test_jobs:
|
|
exit_if_running_jobs()
|
|
job(jobid)
|
|
|
|
def pre():
|
|
print("pre ldap")
|
|
|
|
def post():
|
|
print("post ldap")
|
|
if not isfile(LDAPFILE):
|
|
print("Il manque le fichier {0}".format(LDAPFILE))
|
|
sys.exit(1)
|
|
if stat(LDAPFILE).st_size == 0:
|
|
print("Le fichier {0} est vide".format(LDAPFILE))
|
|
sys.exit(1)
|
|
path = CreoleClient().get_creole('container_path_annuaire')
|
|
if path != '':
|
|
# copie du ldif dans le conteneur
|
|
destdir = path + dirname(LDAPFILE)
|
|
if not isdir(destdir):
|
|
makedirs(destdir)
|
|
copyfile(LDAPFILE, path + LDAPFILE)
|
|
manage_service('stop', 'slapd', 'annuaire')
|
|
system_code(["sleep", "5"])
|
|
for files in glob("{0}/var/lib/ldap/*.*".format(path)):
|
|
unlink(files)
|
|
slapadd_cmd = ['/usr/sbin/slapadd', '-f', '/etc/ldap/slapd.conf',
|
|
'-l', LDAPFILE]
|
|
system_code(slapadd_cmd , container='annuaire')
|
|
system_code(["chown", "-R", "openldap:openldap", "/var/lib/ldap"],
|
|
container='annuaire')
|
|
manage_service('start', 'slapd', 'annuaire')
|
|
|
|
def job(jobid):
|
|
print("Restauration de l'annuaire LDAP")
|
|
bareos_restore_one_file(LDAPFILE, jobid)
|
|
|
|
priority = 20
|