ldap: Pull nss-pam-ldapd into the openbmc image
Bringing the LDAP authentication module support in openbmc stack
requires to pull the nss-pam-ldapd which allows the LDAP
server to provide the user, passwd, group info that we normally get
from the /etc flat files.
nss-pam-ldapd provides libnss-ldap and pam_ldap module which
delegate the work to the nslcd(daemon) that queries the LDAP server.
pam_ldap uses the openldap client API to interact with the LDAP server.
nss-pam-ldapd files are pulled from
http://git.yoctoproject.org/cgit/cgit.cgi/meta-cloud-services/
tree/recipes-support/nss-pam-ldapd
meta-cloud-services sha: 38cc19fb3a813673051de314aafabda0545d8466
Tested: Adding the "ldap" distro feature brings the nss-pam-ldapd
and its dependencies into the image and removing the "ldap" from the
distro feature doesn't bring the nss-pam-ldapd and its dependencies.
(From meta-phosphor rev: 4835bb3901a4bff777a97d4f363e3a731b87f21c)
Change-Id: Ifa5da20e7ac47b0c9d9af305ae621252e6d765f3
Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/meta-phosphor/recipes-support/nss-pam-ldapd/files/nslcd.init b/meta-phosphor/recipes-support/nss-pam-ldapd/files/nslcd.init
new file mode 100644
index 0000000..a27b6e0
--- /dev/null
+++ b/meta-phosphor/recipes-support/nss-pam-ldapd/files/nslcd.init
@@ -0,0 +1,84 @@
+#!/bin/sh
+
+set -x
+
+NAME="nslcd"
+CONFIG="/etc/nslcd.conf"
+DAEMON="/usr/sbin/nslcd"
+DESC="LDAP connection daemon"
+STATEDIR="/var/run/$NAME"
+PIDFILE="$STATEDIR/$NAME.pid"
+
+start()
+{
+ if [ -e $PIDFILE ]; then
+ PIDDIR=/proc/$(cat $PIDFILE)
+ if [ -d ${PIDDIR} ]; then
+ echo "$DESC already running."
+ exit 1
+ else
+ echo "Removing stale PID file $PIDFILE"
+ rm -f $PIDFILE
+ fi
+ fi
+
+ echo -n "Starting $DESC..."
+
+ start-stop-daemon --start --oknodo \
+ --pidfile $PIDFILE --startas $DAEMON
+
+ if [ $? -eq 0 ]; then
+ echo "done."
+ else
+ echo "failed."
+ fi
+}
+
+stop()
+{
+ echo -n "Stopping $DESC..."
+ start-stop-daemon --stop --quiet --pidfile $PIDFILE \
+ --name $NAME
+ if [ $? -eq 0 ]; then
+ echo "done."
+ else
+ echo "failed."
+ fi
+ rm -f $PIDFILE
+}
+
+status()
+{
+ if [ -f $PIDFILE ]; then
+ if $DAEMON --check
+ then
+ echo "$DESC is running (pid `cat $PIDFILE`"
+ else
+ echo "$DESC stopped"
+ fi
+ else
+ echo "$DESC stopped"
+ fi
+}
+
+case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ restart|force-reload|reload)
+ stop
+ start
+ ;;
+ status)
+ status
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|force-reload|restart|reload|status}"
+ exit 1
+ ;;
+esac
+
+exit 0