]> Frank Brehm's Git Trees - pixelpark/admin-tools.git/commitdiff
Improving bin/put_sieve
authorFrank Brehm <frank.brehm@pixelpark.com>
Mon, 8 Apr 2019 08:10:11 +0000 (10:10 +0200)
committerFrank Brehm <frank.brehm@pixelpark.com>
Mon, 8 Apr 2019 08:10:11 +0000 (10:10 +0200)
bin/get_sieve
bin/put_sieve

index f354f898badea3b7b5fdc665205eb3282f948322..3f7a26e51ef3dfa9fb4ea3d8d20d32f9b172bd00 100755 (executable)
@@ -26,11 +26,13 @@ main() {
 
     local base_cmd="ldapsearch -x -LLL -o ldif-wrap=no -H \"${LDAP_SERVER}\""
     base_cmd+=" -D \"${LDAP_BIND_DN}\" -y \"${LDAP_PWD_FILE}\""
-    cmd="${base_cmd} -b \"${LDAP_BASE_DN}\" \"uid=${USER}\" dn | sed -e 's/^dn:[       ][      ]*//i'"
+
+    local cmd="${base_cmd} -b \"${LDAP_BASE_DN}\" \"uid=${USER}\" dn | sed -e 's/^dn:[         ][      ]*//i'"
     echo "${cmd}" >&2
     local user_dn=$( eval $cmd )
     echo "Fand DN '${user_dn}'." >&2
     echo >&2
+
     cmd="${base_cmd} -b \"${user_dn}\" \"objectclass=*\" mailSieveRuleSource |"
     cmd+=" grep -v '^dn:' | sed -e 's/^mailSieveRuleSource::*[         ]*//i' -e 's/[  ]//g' -e 's/=//g' |"
     cmd+="tr -d '[:cntrl:]'"
index 2eea6a5e1063c32d3c400a4401334c7566b06063..ffb5986d645f015d46f9a605020d45bb3f9b9242 100755 (executable)
@@ -23,11 +23,12 @@ BASE_DIR="$(dirname ${0})"
 
 LDAP_SERVER='ldap://ldap.pixelpark.com'
 LDAP_BIND_DN='cn=admin'
-LDAP_BIND_PW='3o.o0dlt'
 LDAP_BASE_DN='o=isp'
+LDAP_PWD_FILE="${HOME}/.private/ldap-admin-wonl.txt"
 
 USER="frank.brehm"
 SIEVE_FILE=""
+LDIF_FILE=
 
 #-------------------------------------------------------------------
 detect_color() {
@@ -232,6 +233,16 @@ main() {
         info "Simulation mode, nothing is really done."
     fi
 
+    if [[ ! -f "${LDAP_PWD_FILE}" ]] ; then
+        error "Password file '${LDAP_PWD_FILE}' not found" >&2
+        exit 3
+    fi
+
+    if [[ ! -r "${LDAP_PWD_FILE}" ]] ; then
+        error "Password file '${LDAP_PWD_FILE}' not readable" >&2
+        exit 3
+    fi
+
     if [[ ! -f "${SIEVE_FILE}" ]] ; then
         error "Sieve file '${SIEVE_FILE}' existiert nicht." >&2
         echo >&2
@@ -240,44 +251,42 @@ main() {
     fi
     SIEVE_FILE=$( readlink -f "${SIEVE_FILE}" )
 
-    info "Suche DN für User '${USER}' ..."
+    local base_cmd="ldapsearch -x -LLL -o ldif-wrap=no -H \"${LDAP_SERVER}\""
+    base_cmd+=" -D \"${LDAP_BIND_DN}\" -y \"${LDAP_PWD_FILE}\""
 
-    USER_DN=$( ldapsearch -LLL \
-                -H "${LDAP_SERVER}" \
-                -b "${LDAP_BASE_DN}" \
-                -x -D "${LDAP_BIND_DN}" -w "${LDAP_BIND_PW}" \
-                "uid=${USER}" \
-                dn | sed -e 's/^dn:[   ][      ]*//i' )
+    info "Suche DN für User '${USER}' ..."
 
-    if [[ -z "${USER_DN}" ]] ; then
+    local cmd="${base_cmd} -b \"${LDAP_BASE_DN}\" \"uid=${USER}\" dn | sed -e 's/^dn:[         ][      ]*//i'"
+    info "Ausführen:"
+    echo "${cmd}"
+    local user_dn=$( eval $cmd )
+    if [[ -z "${user_dn}" ]] ; then
         error "User '${USER}' nicht im LDAP gefunden." >&2
         echo >&2
         exit 1
     fi
 
+    info "Fand DN '${GREEN}${user_dn}${NORMAL}'."
+
     LDIF_FILE=$( mktemp modify-sieve-XXXXXXXX.ldif )
 
     trap cleanup_tmp_file INT TERM EXIT ABRT
 
     cat > "${LDIF_FILE}" <<-EOF
-               dn: ${USER_DN}
+               dn: ${user_dn}
                changetype: modify
                EOF
 
-    echo
-    info "Fand DN '${USER_DN}'."
-    echo
     info "Suche existierenden Sieve Eintrag ..."
     echo
 
-    CUR_SIEVE64=$( ldapsearch -LLL \
-                -H "${LDAP_SERVER}" \
-                -b "${USER_DN}" \
-                -x -D "${LDAP_BIND_DN}" -w "${LDAP_BIND_PW}" \
-                "objectclass=*" mailSieveRuleSource | \
-                grep -i '^mailSieveRuleSource:' || true )
+    cmd="${base_cmd} -b \"${user_dn}\" \"objectclass=*\" mailSieveRuleSource |"
+    cmd+=" grep -i '^mailSieveRuleSource:' || true"
+    info "Ausführen:"
+    echo "${cmd}"
+    local cur_sieve64=$( eval $cmd )
 
-    if [[ -z "${CUR_SIEVE64}" ]] ; then
+    if [[ -z "${cur_sieve64}" ]] ; then
         info "Füge Attribut mailSieveRuleSource hinzu ..."
         cat >> "${LDIF_FILE}" <<-EOF
                        add: mailSieveRuleSource
@@ -299,17 +308,20 @@ main() {
     echo
     cat "${LDIF_FILE}"
 
-    CMD="ldapmodify -H \"${LDAP_SERVER}\""
-    CMD+=" -x -D \"${LDAP_BIND_DN}\" -w \"${LDAP_BIND_PW}\""
-    CMD+=" -f \"$( readlink -f "${LDIF_FILE}" )\""
+    cmd="ldapmodify -H \"${LDAP_SERVER}\" -x -D \"${LDAP_BIND_DN}\" -y \"${LDAP_PWD_FILE}\""
+    cmd+=" -f \"$( readlink -f "${LDIF_FILE}" )\""
+
+    #CMD="ldapmodify -H \"${LDAP_SERVER}\""
+    #CMD+=" -x -D \"${LDAP_BIND_DN}\" -w \"${LDAP_BIND_PW}\""
+    #CMD+=" -f \"$( readlink -f "${LDIF_FILE}" )\""
 
     echo
     info "Ausführen:"
-    echo "${CMD}"
+    echo "${cmd}"
     echo
 
     if [[ "${SIMULATE}" != "y" ]] ; then
-        eval ${CMD}
+        eval ${cmd}
         echo
     fi