diff --git a/ldap-client/atboot.cgi b/ldap-client/atboot.cgi new file mode 100755 index 000000000..79095ab68 --- /dev/null +++ b/ldap-client/atboot.cgi @@ -0,0 +1,20 @@ +#!/usr/local/bin/perl +# Enable the LDAP client daemon at boot or not + +require './ldap-client-lib.pl'; +&ReadParse(); + +&foreign_require("init"); +my $starting = &init::action_status($config{'init_name'}); +if ($starting == 1 && $in{'boot'}) { + &init::enable_at_boot($config{'init_name'}); + &webmin_log("atboot"); + } +elsif ($starting == 2 && !$in{'boot'}) { + # Disable at boot + &init::disable_at_boot($config{'init_name'}); + &webmin_log("delboot"); + } + +&redirect(""); + diff --git a/ldap-client/config-*-linux b/ldap-client/config-*-linux index 0d6838e28..a70611baa 100644 --- a/ldap-client/config-*-linux +++ b/ldap-client/config-*-linux @@ -1,2 +1,3 @@ auth_ldap=/etc/pam_ldap/auth_ldap.conf secret=/etc/ldap.secret +init_name=nslcd diff --git a/ldap-client/config-CentOS-Linux-6.0-* b/ldap-client/config-CentOS-Linux-6.0-* new file mode 100644 index 000000000..47a3c5982 --- /dev/null +++ b/ldap-client/config-CentOS-Linux-6.0-* @@ -0,0 +1,3 @@ +auth_ldap=/etc/nslcd.conf +secret=/etc/ldap.secret +init_name=nslcd diff --git a/ldap-client/config-debian-linux-3.1 b/ldap-client/config-debian-linux-3.1 index d535c38e2..ca9988d50 100644 --- a/ldap-client/config-debian-linux-3.1 +++ b/ldap-client/config-debian-linux-3.1 @@ -1,3 +1,4 @@ auth_ldap=/etc/libnss-ldap.conf secret=/etc/ldap.secret pam_ldap=/etc/pam_ldap.conf +init_name=nslcd diff --git a/ldap-client/config-debian-linux-4.0-5.9 b/ldap-client/config-debian-linux-4.0-5.9 index 9e767d357..4460f14f7 100644 --- a/ldap-client/config-debian-linux-4.0-5.9 +++ b/ldap-client/config-debian-linux-4.0-5.9 @@ -1,2 +1,3 @@ auth_ldap=/etc/ldap.conf secret=/etc/ldap.secret +init_name=nslcd diff --git a/ldap-client/config-debian-linux-6.0-6.9 b/ldap-client/config-debian-linux-6.0-6.9 index a599069de..5ea85d719 100644 --- a/ldap-client/config-debian-linux-6.0-6.9 +++ b/ldap-client/config-debian-linux-6.0-6.9 @@ -1,3 +1,4 @@ auth_ldap=/etc/libnss-ldap.conf pam_ldap=/etc/pam_ldap.conf secret=/etc/libnss-ldap.secret /etc/pam_ldap.secret +init_name=nslcd diff --git a/ldap-client/config-debian-linux-7.0-* b/ldap-client/config-debian-linux-7.0-* index 9e767d357..4460f14f7 100644 --- a/ldap-client/config-debian-linux-7.0-* +++ b/ldap-client/config-debian-linux-7.0-* @@ -1,2 +1,3 @@ auth_ldap=/etc/ldap.conf secret=/etc/ldap.secret +init_name=nslcd diff --git a/ldap-client/config-pardus-linux b/ldap-client/config-pardus-linux index c7d8c784d..5bb8caa46 100644 --- a/ldap-client/config-pardus-linux +++ b/ldap-client/config-pardus-linux @@ -1,2 +1,3 @@ auth_ldap=/etc/openldap/ldap.conf secret=/etc/ldap.secret +init_name=nslcd diff --git a/ldap-client/config-redhat-linux-13.0-* b/ldap-client/config-redhat-linux-13.0-* index 0b854a176..92186fc3e 100644 --- a/ldap-client/config-redhat-linux-13.0-* +++ b/ldap-client/config-redhat-linux-13.0-* @@ -1,2 +1,3 @@ auth_ldap=/etc/ldap.conf /etc/openldap/ldap.conf secret=/etc/ldap.secret +init_name=nslcd diff --git a/ldap-client/config.info b/ldap-client/config.info index 386e7d29c..873c6711c 100644 --- a/ldap-client/config.info +++ b/ldap-client/config.info @@ -1,6 +1,7 @@ auth_ldap=LDAP client configuration files,8 pam_ldap=PAM LDAP configuration file,3,Same as LDAP client file secret=Root LDAP client password files,9,50,2,\t +init_name=Local LDAP daemon init script name,0 line0=LDAP browser and validation settings,11 ldap_hosts=LDAP server hosts,3,From config file,50 ldap_port=LDAP server port,3,From config file,5 diff --git a/ldap-client/index.cgi b/ldap-client/index.cgi index 0b0f026e3..4d71e87b8 100755 --- a/ldap-client/index.cgi +++ b/ldap-client/index.cgi @@ -37,11 +37,37 @@ if ($config{'pam_ldap'} && -r $config{'pam_ldap'} && !$config{'nofixpam'} && @icons = map { "images/".$_.".gif" } @pages; &icons_table(\@links, \@titles, \@icons, 5); -# Validate button print &ui_hr(); print &ui_buttons_start(); + +# Validate button print &ui_buttons_row("check.cgi", $text{'index_check'}, $text{'index_checkdesc'}); + +# LDAP server daemon +&foreign_require("init"); +if ($config{'init_name'} && + ($st = &init::action_status($config{'init_name'}))) { + # Start or stop + # XXX wrong function + if (&init::action_running($config{'init_name'}) == 1) { + print &ui_buttons_row("stop.cgi", $text{'index_stop'}, + $text{'index_stopdesc'}); + } + else { + print &ui_buttons_row("start.cgi", $text{'index_start'}, + $text{'index_startdesc'}); + } + + # Start at boot + print &ui_buttons_row("atboot.cgi", + $text{'index_atboot'}, + $text{'index_atbootdesc'}, + undef, + &ui_radio("boot", $st == 2 ? 1 : 0, + [ [ 1, $text{'yes'} ], [ 0, $text{'no'} ] ])); + } + print &ui_buttons_end(); &ui_print_footer("/", $text{'index'}); diff --git a/ldap-client/lang/en b/ldap-client/lang/en index 5d23499b3..a75d4bffa 100644 --- a/ldap-client/lang/en +++ b/ldap-client/lang/en @@ -6,6 +6,12 @@ index_fixpam=Warning - Webmin has detected two separate LDAP configuratio index_fix=Fix by Linking Files index_ignore=Don't Show This Message index_ldapmod=LDAP Client +index_stop=Stop LDAP Client Daemon +index_stopdesc=Shut down the local LDAP client daemon, which is needed to query the remote LDAP server. +index_start=Start LDAP Client Daemon +index_startdesc=Start up the local LDAP client daemon, which is needed to query the remote LDAP server. Until it is started, users and groups in LDAP will not be accessible. +index_atboot=Start LDAP Client At Boot +index_atbootdesc=Changes whether the LDAP client daemon is started when the system boots up or not. server_title=LDAP Server Configuration server_header=LDAP server and login options @@ -132,6 +138,7 @@ order_nisplus=NIS+ order_nis=NIS order_dns=DNS order_files=Files +order_sss=System Security Services order_db=DB Files order_compat=NIS & Files order_hesiod=Hesiod @@ -201,6 +208,10 @@ log_server=Modified LDAP server configuration log_base=Modified LDAP search bases log_pam=Modified authentication options log_modify_switch=Changed service $1 +log_atboot=Enabled LDAP client daemon at boot time +log_delboot=Disabled LDAP client daemon at boot time +log_start=Started LDAP client daemon +log_stop=Stopped LDAP client daemon check_title=Validating LDAP Configuration check_base=Finding LDAP base for users .. diff --git a/ldap-client/start.cgi b/ldap-client/start.cgi new file mode 100755 index 000000000..e64ddddda --- /dev/null +++ b/ldap-client/start.cgi @@ -0,0 +1,13 @@ +#!/usr/local/bin/perl +# Start the LDAP client daemon + +require './ldap-client-lib.pl'; +&error_setup($text{'start_err'}); + +&foreign_require("init"); +($ok, $out) = &init::start_action($config{'init_name'}); +$ok || &error($out); + +&webmin_log("start"); +&redirect(""); + diff --git a/ldap-client/stop.cgi b/ldap-client/stop.cgi new file mode 100755 index 000000000..c18390742 --- /dev/null +++ b/ldap-client/stop.cgi @@ -0,0 +1,13 @@ +#!/usr/local/bin/perl +# Stop the LDAP client daemon + +require './ldap-client-lib.pl'; +&error_setup($text{'stop_err'}); + +&foreign_require("init"); +($ok, $out) = &init::stop_action($config{'init_name'}); +$ok || &error($out); + +&webmin_log("stop"); +&redirect(""); +