GLITE_HOME_DIR=`getent passwd ${GLITE_USER} | cut -d: -f6`
 
+ACTIONS="db certs msg authz harvester bdii emir upgrade crl startup krb krbgsi"
 
 qecho() {
        if test "$quiet" != "1"; then
        setup_bdii=1
        setup_emir=1
        setup_upgrade=1
+       setup_crl=1
        setup_startup=1
 }
 
 OPTIONS are:
        -q,--quiet ... print only errors
        -c,--check ... check the availability of DB
+       -l,--list .... list actions to be executed and exit
        -h,--help .... usage
 
 ACTIONS are:
-       db certs msg authz harvester bdii emir upgrade startup
+       db certs msg authz harvester bdii emir upgrade crl startup
        krb    .... setup Kerberos
        krbgsi .... setup Kerberos and enable GSI autentization
+
        all ....... all actions (default)
        none ...... no actions (default for check)
        yaim ...... actions for yaim
        -c|--check)
                setup_check=1
                ;;
+       -l|--list)
+               setup_list=1
+               ;;
        all)
                setup_all=1
                setup_all
        yaim)
                setup_all
                setup_bdii=0
+               setup_crl=0
                ;;
        logger)
                setup_certs=1
        bdii)   setup_bdii=1 ;;
        emir)   setup_emir=1 ;;
        upgrade) setup_upgrade=1 ;;
+       crl)    setup_crl=1 ;;
        startup) setup_startup=1 ;;
-       krb)    setup_kerberos=1 ;;
-       krbgsi) setup_kerberos=1; setup_kerberos_gsi=1 ;;
+       krb)    setup_krb=1 ;;
+       krbgsi) setup_krb=1; setup_krbgsi=1 ;;
        *)
                echo "glite-lb-setup: ERROR: unknown argument '$1'"
+               exit 1
                ;;
        esac
        shift
 done
-for action in db certs msg authz harvester bdii emir upgrade startup kerberos kerberos_gsi all none yaim logger; do
+for action in $ACTIONS all none yaim logger; do
        eval value=\"$`echo setup_$action`\"
        if test "$value" = "1"; then
                setup=1;
        fi
 fi
 
+if test "$setup_list" = "1"; then
+       for action in $ACTIONS; do
+               eval value=\"$`echo setup_$action`\"
+               if test "$value" = "1"; then
+                       echo -n "$action "
+               fi
+       done
+       echo
+       exit 0
+fi
+
 if test -z "$GLITE_HOME_DIR"; then
        echo "glite-lb-setup: ERROR: The home directory of ${GLITE_USER} doesn't exist. Check whether the user ${GLITE_USER} was properly created"
        exit 2
                mkdir -p $GLITE_HOME_DIR/.certs
                chown $GLITE_USER:$GLITE_USER $GLITE_HOME_DIR/.certs
        fi
-       cp -f /etc/grid-security/hostcert.pem /etc/grid-security/hostkey.pem $GLITE_HOME_DIR/.certs/
+       cp -fp /etc/grid-security/hostcert.pem /etc/grid-security/hostkey.pem $GLITE_HOME_DIR/.certs/
        if test $? -eq 0; then
                chown $GLITE_USER:$GLITE_USER $GLITE_HOME_DIR/.certs/hostcert.pem $GLITE_HOME_DIR/.certs/hostkey.pem
                chmod 0644 $GLITE_HOME_DIR/.certs/hostcert.pem
        fi
 fi
 if test "$setup_emir" = "1" -a "$emir" != "0"; then
+       cp -fp /etc/grid-security/hostcert.pem /etc/grid-security/emi-hostcert.pem && \
+       cp -fp /etc/grid-security/hostkey.pem /etc/grid-security/emi-hostkey.pem
+       if test $? -eq 0; then
+               chown emi:emi /etc/grid-security/emi-hostcert.pem /etc/grid-security/emi-hostkey.pem
+               chmod 0644 /etc/grid-security/emi-hostcert.pem
+               chmod 0400 /etc/grid-security/emi-hostkey.pem
+               qecho "Certificates copied to /etc/grid-security/emi-host*.pem"
+       else
+               echo "glite-lb-setup: WARNING: copying certificates for EMIR failed"
+       fi
+
        # interface version
        if egrep -i "Debian|Ubuntu" /etc/issue >/dev/null; then
                out=`dpkg-query -W glite-lb-ws-interface 2>/dev/null | cut -f2 | cut -d- -f1`
        done
 
        # L&B service info
-       mkdir -p /var/cache/$emir_daemon 2>/dev/null
-       cat > /var/cache/$emir_daemon/glite-lb-bkserver.json <<EOF
+       mkdir -p /var/cache/$emir_daemon/services/ 2>/dev/null
+       cat > /var/cache/$emir_daemon/services/glite-lb-bkserverd.json <<EOF
 {
 $json  "Service_ID": "`hostname -f`_lbserver",
        "Service_Name": "${SITE_NAME:-site}-Server",
 
        period=$((4*$emir_mult))
        validity=$((24*$emir_mult))
+       inifile=/etc/emi/$emir_daemon/$emir_daemon.ini
+       if test ! -f $inifile.orig -a -f $inifile; then
+               cp $inifile $inifile.orig
+       fi
        cat > /etc/emi/$emir_daemon/$emir_daemon.ini << EOF
 [$emir_conf]
 url = $EMIR_URL
 period = $period
 validity = $validity
 
-#cert = /etc/grid-security/emi/hostcert.pem
-#key = /etc/grid-security/emi/hostkey.pem
-#cadir = /etc/grid-security/certificates
+cert = /etc/grid-security/emi-hostcert.pem
+key = /etc/grid-security/emi-hostkey.pem
+cadir = /etc/grid-security/certificates
 
 verbosity = debug
 
 [advancedService]
-json_file_location = /var/cache/$emir_daemon/glite-lb-bkserver.json
+json_file_location = /var/cache/$emir_daemon/services/glite-lb-bkserverd.json
 EOF
 
-       # enable (for Debain) after configuring
+       # enable (for Debian) after configuring
        if test -d /etc/default -a -f /etc/default/$emir_daemon; then
                sed -i 's/.*ENABLED.*=.*/ENABLED=yes/' /etc/default/$emir_daemon
        fi
 fi
 
 
+# ==== fetch CRL ====
+
+if test "$setup_crl" = "1"; then
+       if test -x /usr/sbin/fetch-crl; then
+               if egrep -i "Debian|Ubuntu" /etc/issue >/dev/null; then
+                       :
+               else
+                       /sbin/service fetch-crl-cron start
+                       /sbin/chkconfig fetch-crl-cron on
+               fi
+       else
+               echo "glite-lb-setup: WARNING: fetch-crl not found, fetching won't be configured"
+       fi
+fi
+
+
 # ==== kerberos (experimental) ====
 
-if test "$setup_kerberos" = "1"; then
+if test "$setup_krb" = "1"; then
        if test ! -f /etc/krb5.keytab; then
                echo "glite-lb-setup: ERROR: keytab not found"
                kerberos=0
        fi
 fi
 
-if test "$setup_kerberos_gsi" = "1"; then
+if test "$setup_krbgsi" = "1"; then
        if ! ldd $GLITE_LOCATION/bin/glite-lb-bkserverd | grep libheim >/dev/null 2>&1; then
                echo "glite-lb-setup: ERROR: GSI mode with kerberos requires L&B built in Heimdal Kerberos implementation"
                error="$error krbgsi"