xref: /openbmc/phosphor-debug-collector/tools/dreport.d/plugins.d/ldapdump (revision a670091344f473514eb059ea0824ad8ede707372)
1*a6700913Snitinkotania#!/bin/bash
2*a6700913Snitinkotania#
3*a6700913Snitinkotania# config: 2 20
4*a6700913Snitinkotania# @brief: Get the ldap configuration
5*a6700913Snitinkotania#
6*a6700913Snitinkotania
7*a6700913Snitinkotania# shellcheck disable=SC1091
8*a6700913Snitinkotania# shellcheck disable=SC2086
9*a6700913Snitinkotania
10*a6700913Snitinkotania. "$DREPORT_INCLUDE"/functions
11*a6700913Snitinkotania
12*a6700913Snitinkotaniadesc="ldap configuration"
13*a6700913Snitinkotania
14*a6700913Snitinkotaniaopen_ldap_command="busctl get-property \
15*a6700913Snitinkotania                     xyz.openbmc_project.Ldap.Config \
16*a6700913Snitinkotania                     /xyz/openbmc_project/user/ldap/openldap \
17*a6700913Snitinkotania                     xyz.openbmc_project.Object.Enable \
18*a6700913Snitinkotania                     'Enabled'"
19*a6700913Snitinkotania
20*a6700913Snitinkotaniaactive_dir_command="busctl get-property \
21*a6700913Snitinkotania                     xyz.openbmc_project.Ldap.Config \
22*a6700913Snitinkotania                     /xyz/openbmc_project/user/ldap/active_directory \
23*a6700913Snitinkotania                     xyz.openbmc_project.Object.Enable \
24*a6700913Snitinkotania                     'Enabled'"
25*a6700913Snitinkotania
26*a6700913Snitinkotaniacommands=(
27*a6700913Snitinkotania    "systemctl status nslcd"
28*a6700913Snitinkotania    "systemctl status xyz.openbmc_project.Ldap.Config"
29*a6700913Snitinkotania    "busctl tree xyz.openbmc_project.Ldap.Config"
30*a6700913Snitinkotania    "busctl call  xyz.openbmc_project.Ldap.Config \
31*a6700913Snitinkotania        /xyz/openbmc_project/user/ldap \
32*a6700913Snitinkotania        org.freedesktop.DBus.ObjectManager \
33*a6700913Snitinkotania        'GetManagedObjects'"
34*a6700913Snitinkotania)
35*a6700913Snitinkotania
36*a6700913Snitinkotaniafile_name=$"ldap_bmcdump_$EPOCHTIME"
37*a6700913Snitinkotaniaoutput_file_dir="$TMP_DIR/ldap_bmcdump"
38*a6700913Snitinkotaniaoutput_file="$output_file_dir/$file_name"
39*a6700913Snitinkotania
40*a6700913Snitinkotaniaif [ -e "$output_file" ]; then
41*a6700913Snitinkotania    rm "$output_file"
42*a6700913Snitinkotaniafi
43*a6700913Snitinkotania
44*a6700913Snitinkotaniaif [ ! -d "$output_file_dir" ]; then
45*a6700913Snitinkotania    mkdir -p "$output_file_dir"
46*a6700913Snitinkotaniafi
47*a6700913Snitinkotania
48*a6700913SnitinkotanialdapEnabled="false"
49*a6700913Snitinkotania
50*a6700913Snitinkotaniaif result=$(eval "$open_ldap_command" | awk '{print $NF}'); then
51*a6700913Snitinkotania    if [ "$result" == "true" ]; then
52*a6700913Snitinkotania        ldapEnabled="true"
53*a6700913Snitinkotania    elif [ "$result" == "false" ]; then
54*a6700913Snitinkotania        if result=$(eval "$active_dir_command" | awk '{print $NF}'); then
55*a6700913Snitinkotania            if [ "$result" == "true" ]; then
56*a6700913Snitinkotania                ldapEnabled="true"
57*a6700913Snitinkotania            fi
58*a6700913Snitinkotania        fi
59*a6700913Snitinkotania    fi
60*a6700913Snitinkotaniafi
61*a6700913Snitinkotania
62*a6700913Snitinkotaniaif [ "$ldapEnabled" == "false" ]; then
63*a6700913Snitinkotania    log_warning "skipping LDAP dump: LDAP is not enabled"
64*a6700913Snitinkotania    exit 0;
65*a6700913Snitinkotaniaelse
66*a6700913Snitinkotania    for cmd in "${commands[@]}"; do
67*a6700913Snitinkotania        result=$(eval "$cmd" )
68*a6700913Snitinkotania        echo "=============$cmd=============" >> "$output_file"
69*a6700913Snitinkotania        echo "$result" >> "$output_file"
70*a6700913Snitinkotania    done
71*a6700913Snitinkotania
72*a6700913Snitinkotania    command="cat $output_file"
73*a6700913Snitinkotania    file_name="usrmgrldap.log"
74*a6700913Snitinkotania    add_cmd_output "$command" "$file_name" "$desc"
75*a6700913Snitinkotania    rm -rf $output_file
76*a6700913Snitinkotania
77*a6700913Snitinkotania    desc="nslcd config"
78*a6700913Snitinkotania    result=$(sed '/^bindpw/d' /etc/nslcd.conf)
79*a6700913Snitinkotania    command="printf \"%s\n\" \"\$result\""
80*a6700913Snitinkotania    file_name="nslcd.conf"
81*a6700913Snitinkotania    add_cmd_output "$command" "$file_name" "$desc"
82*a6700913Snitinkotaniafi
83