diff --git a/lam/lib/config.inc b/lam/lib/config.inc
index 238b6dcd..4bdbdf67 100644
--- a/lam/lib/config.inc
+++ b/lam/lib/config.inc
@@ -90,9 +90,6 @@ class Config {
// string: password to edit preferences
var $Passwd;
- // single line with the names of all admin users
- var $Adminstring;
-
// suffix for users
var $usersuffix;
@@ -138,23 +135,25 @@ class Config {
// name of configuration file
var $file;
- // constructor, loads preferences from config file
- function Config($file=0) {
- if (!is_string($file)) {
- $profiles = getConfigProfiles();
- $file = $profiles[0];
+ // list of all settings in config file
+ var $settings = array("ServerURL", "Passwd", "Admins", "usersuffix", "groupsuffix", "hostsuffix",
+ "domainsuffix", "MinUID", "MaxUID", "MinGID", "MaxGID", "MinMachine", "MaxMachine",
+ "userlistAttributes", "grouplistAttributes", "hostlistAttributes", "maxlistentries",
+ "defaultLanguage", "scriptPath", "scriptServer", "samba3", "cachetimeout");
+
+
+ // constructor, loads preferences from config file
+ function Config($file=0) {
+ if (!is_string($file)) {
+ $profiles = getConfigProfiles();
+ $file = $profiles[0];
+ }
+ $this->file = $file;
+ $this->reload();
}
- $this->file = $file;
- $this->reload();
- }
// reloads preferences from config file
function reload() {
- // list of all settings in config file
- $settings = array("ServerURL", "Passwd", "Adminstring", "usersuffix", "groupsuffix", "hostsuffix",
- "domainsuffix", "minuid", "maxuid", "mingid", "maxgid", "minmachine", "maxmachine",
- "userlistattributes", "grouplistattributes", "hostlistattributes", "maxlistentries",
- "defaultlanguage", "scriptpath", "scriptServer", "samba3", "cachetimeout");
$conffile = substr(__FILE__, 0, strlen(__FILE__) - 15) . "/config/" . $this->file . ".conf";
if (is_file($conffile) == True) {
$file = fopen($conffile, "r");
@@ -162,95 +161,13 @@ class Config {
$line = fgets($file, 1024);
if (($line == "\n")||($line[0] == "#")) continue; // ignore comments
// search keywords
- if (strtolower(substr($line, 0, 11)) == "serverurl: ") {
- $this->ServerURL = chop(substr($line, 11, strlen($line)-11));
- continue;
- }
- if (strtolower(substr($line, 0, 8)) == "passwd: ") {
- $this->Passwd = chop(substr($line, 8, strlen($line)-8));
- continue;
- }
- if (strtolower(substr($line, 0, 8)) == "admins: ") {
- $adminstr = chop(substr($line, 8, strlen($line)-8));
- $this->Adminstring = $adminstr;
- $this->Admins = explode(";", $adminstr);
- continue;
- }
- if (strtolower(substr($line, 0, 12)) == "usersuffix: ") {
- $this->usersuffix = chop(substr($line, 12, strlen($line)-12));
- continue;
- }
- if (strtolower(substr($line, 0, 13)) == "groupsuffix: ") {
- $this->groupsuffix = chop(substr($line, 13, strlen($line)-13));
- continue;
- }
- if (strtolower(substr($line, 0, 12)) == "hostsuffix: ") {
- $this->hostsuffix = chop(substr($line, 12, strlen($line)-12));
- continue;
- }
- if (strtolower(substr($line, 0, 14)) == "domainsuffix: ") {
- $this->domainsuffix = chop(substr($line, 14, strlen($line)-14));
- continue;
- }
- if (strtolower(substr($line, 0, 8)) == "minuid: ") {
- $this->MinUID = chop(substr($line, 8, strlen($line)-8));
- continue;
- }
- if (strtolower(substr($line, 0, 8)) == "maxuid: ") {
- $this->MaxUID = chop(substr($line, 8, strlen($line)-8));
- continue;
- }
- if (strtolower(substr($line, 0, 8)) == "mingid: ") {
- $this->MinGID = chop(substr($line, 8, strlen($line)-8));
- continue;
- }
- if (strtolower(substr($line, 0, 8)) == "maxgid: ") {
- $this->MaxGID = chop(substr($line, 8, strlen($line)-8));
- continue;
- }
- if (strtolower(substr($line, 0, 12)) == "minmachine: ") {
- $this->MinMachine = chop(substr($line, 12, strlen($line)-12));
- continue;
- }
- if (strtolower(substr($line, 0, 12)) == "maxmachine: ") {
- $this->MaxMachine = chop(substr($line, 12, strlen($line)-12));
- continue;
- }
- if (strtolower(substr($line, 0, 20)) == "userlistattributes: ") {
- $this->userlistAttributes = chop(substr($line, 20, strlen($line)-20));
- continue;
- }
- if (strtolower(substr($line, 0, 21)) == "grouplistattributes: ") {
- $this->grouplistAttributes = chop(substr($line, 21, strlen($line)-21));
- continue;
- }
- if (strtolower(substr($line, 0, 20)) == "hostlistattributes: ") {
- $this->hostlistAttributes = chop(substr($line, 20, strlen($line)-20));
- continue;
- }
- if (strtolower(substr($line, 0, 16)) == "maxlistentries: ") {
- $this->maxlistentries = chop(substr($line, 16, strlen($line)-16));
- continue;
- }
- if (strtolower(substr($line, 0, 17)) == "defaultlanguage: ") {
- $this->defaultLanguage = chop(substr($line, 17, strlen($line)-17));
- continue;
- }
- if (strtolower(substr($line, 0, 12)) == "scriptpath: ") {
- $this->scriptPath = chop(substr($line, 12, strlen($line)-12));
- continue;
- }
- if (strtolower(substr($line, 0, 14)) == "scriptserver: ") {
- $this->scriptServer = chop(substr($line, 14, strlen($line)-14));
- continue;
- }
- if (strtolower(substr($line, 0, 8)) == "samba3: ") {
- $this->samba3 = strtolower(chop(substr($line, 8, strlen($line)-8)));
- continue;
- }
- if (strtolower(substr($line, 0, 14)) == "cachetimeout: ") {
- $this->cachetimeout = chop(substr($line, 14, strlen($line)-14));
- continue;
+ for ($i = 0; $i < sizeof($this->settings); $i++) {
+ $keyword = $this->settings[$i];
+ $keylen = strlen($keyword);
+ if (strtolower(substr($line, 0, $keylen + 2)) == strtolower($keyword . ": ")) {
+ $this->$keyword = chop(substr($line, $keylen + 2, strlen($line) - $keylen -2));
+ break;
+ }
}
}
fclose($file);
@@ -264,11 +181,6 @@ class Config {
function save() {
$conffile = substr(__FILE__, 0, strlen(__FILE__) - 15) . "/config/" . $this->file . ".conf";
if (is_file($conffile) == True) {
- // booleans to check if value was already saved
- $save_serverURL = $save_passwd = $save_admins = $save_suffusr = $save_suffgrp = $save_suffhst =
- $save_minUID = $save_maxUID = $save_minGID = $save_maxGID = $save_minMach = $save_maxMach =
- $save_usrlstatrr = $save_grplstatrr = $save_hstlstatrr = $save_maxlstent = $save_deflang =
- $save_scriptPath = $save_scriptServer = $save_samba3 = $save_suffdom = $save_cachetime = False;
$file = fopen($conffile, "r");
$file_array = array();
// read config file
@@ -277,135 +189,36 @@ class Config {
}
fclose($file);
// generate new configuration file
+ $saved = array(); // includes all settings which have been saved
for ($i = 0; $i < sizeof($file_array); $i++) {
- if (($file_array[$i] == "\n")||($file_array[$i][0] == "#")) continue; // ignore comments
+ $line = trim($file_array[$i]);
+ if (($line == "\n")||($line[0] == "#")) continue; // ignore comments
// search for keywords
- if (strtolower(substr($file_array[$i], 0, 11)) == "serverurl: ") {
- $file_array[$i] = "serverURL: " . $this->ServerURL . "\n";
- $save_serverURL = True;
- continue;
- }
- if (strtolower(substr($file_array[$i], 0, 8)) == "passwd: ") {
- $file_array[$i] = "passwd: " . $this->Passwd . "\n";
- $save_passwd = True;
- continue;
- }
- if (strtolower(substr($file_array[$i], 0, 8)) == "admins: ") {
- $file_array[$i] = "admins: " . $this->Adminstring . "\n";
- $save_admins = True;
- continue;
- }
- if (strtolower(substr($file_array[$i], 0, 12)) == "usersuffix: ") {
- $file_array[$i] = "usersuffix: " . $this->usersuffix . "\n";
- $save_suffusr = True;
- continue;
- }
- if (strtolower(substr($file_array[$i], 0, 13)) == "groupsuffix: ") {
- $file_array[$i] = "groupsuffix: " . $this->groupsuffix . "\n";
- $save_suffgrp = True;
- continue;
- }
- if (strtolower(substr($file_array[$i], 0, 12)) == "hostsuffix: ") {
- $file_array[$i] = "hostsuffix: " . $this->hostsuffix . "\n";
- $save_suffhst = True;
- continue;
- }
- if (strtolower(substr($file_array[$i], 0, 14)) == "domainsuffix: ") {
- $file_array[$i] = "domainsuffix: " . $this->domainsuffix . "\n";
- $save_suffdom = True;
- continue;
- }
- if (strtolower(substr($file_array[$i], 0, 8)) == "minuid: ") {
- $file_array[$i] = "minUID: " . $this->MinUID . "\n";
- $save_minUID = True;
- continue;
- }
- if (strtolower(substr($file_array[$i], 0, 8)) == "maxuid: ") {
- $file_array[$i] = "maxUID: " . $this->MaxUID . "\n";
- $save_maxUID = True;
- continue;
- }
- if (strtolower(substr($file_array[$i], 0, 8)) == "mingid: ") {
- $file_array[$i] = "minGID: " . $this->MinGID . "\n";
- $save_minGID = True;
- continue;
- }
- if (strtolower(substr($file_array[$i], 0, 8)) == "maxgid: ") {
- $file_array[$i] = "maxGID: " . $this->MaxGID . "\n";
- $save_maxGID = True;
- continue;
- }
- if (strtolower(substr($file_array[$i], 0, 12)) == "minmachine: ") {
- $file_array[$i] = "minMachine: " . $this->MinMachine . "\n";
- $save_minMach = True;
- continue;
- }
- if (strtolower(substr($file_array[$i], 0, 12)) == "maxmachine: ") {
- $file_array[$i] = "maxMachine: " . $this->MaxMachine . "\n";
- $save_maxMach = True;
- continue;
- }
- if (strtolower(substr($file_array[$i], 0, 20)) == "userlistattributes: ") {
- $file_array[$i] = "userlistAttributes: " . $this->userlistAttributes . "\n";
- $save_usrlstattr = True;
- continue;
- }
- if (strtolower(substr($file_array[$i], 0, 21)) == "grouplistattributes: ") {
- $file_array[$i] = "grouplistAttributes: " . $this->grouplistAttributes . "\n";
- $save_grplstattr = True;
- continue;
- }
- if (strtolower(substr($file_array[$i], 0, 20)) == "hostlistattributes: ") {
- $file_array[$i] = "hostlistAttributes: " . $this->hostlistAttributes . "\n";
- $save_hstlstattr = True;
- continue;
- }
- if (strtolower(substr($file_array[$i], 0, 16)) == "maxlistentries: ") {
- $file_array[$i] = "maxlistentries: " . $this->maxlistentries . "\n";
- $save_maxlstent = True;
- continue;
- }
- if (strtolower(substr($file_array[$i], 0, 17)) == "defaultlanguage: ") {
- $file_array[$i] = "defaultLanguage: " . $this->defaultLanguage . "\n";
- $save_deflang = True;
- continue;
- }
- if (strtolower(substr($file_array[$i], 0, 12)) == "scriptpath: ") {
- $file_array[$i] = "scriptPath: " . $this->scriptPath . "\n";
- $save_scriptPath = True;
- continue;
- }
- if (strtolower(substr($file_array[$i], 0, 14)) == "scriptserver: ") {
- $file_array[$i] = "scriptServer: " . $this->scriptServer . "\n";
- $save_scriptServer = True;
- continue;
- }
- if (strtolower(substr($file_array[$i], 0, 8)) == "samba3: ") {
- $file_array[$i] = "samba3: " . $this->samba3 . "\n";
- $save_samba3 = True;
- continue;
- }
- if (strtolower(substr($file_array[$i], 0, 14)) == "cachetimeout: ") {
- $file_array[$i] = "cacheTimeout: " . $this->cachetimeout . "\n";
- $save_cachetime = True;
- continue;
+ for ($k = 0; $k < sizeof($this->settings); $k++) {
+ $keyword = $this->settings[$k];
+ $keylen = strlen($keyword);
+ if (strtolower(substr($line, 0, $keylen + 2)) == $keyword . ": ") {
+ $file_array[$i] = $keyword . ": " . $this->$keyword . "\n";
+ $saved[] = $keyword; // mark keyword as saved
+ break;
+ }
}
}
// check if we have to add new entries (e.g. if user upgraded LAM and has an old config file)
- if (!$save_serverURL == True) array_push($file_array, "\n\n# server address (e.g. ldap://localhost:389 or ldaps://localhost:636)\n" . "serverURL: " . $this->ServerURL . "\n");
- if (!$save_passwd == True) array_push($file_array, "\n\n# password to change these preferences via webfrontend\n" . "passwd: " . $this->Passwd . "\n");
- if (!$save_admins == True) array_push($file_array, "\n\n# list of users who are allowed to use LDAP Account Manager\n" .
+ if (!in_array("ServerURL", $saved)) array_push($file_array, "\n\n# server address (e.g. ldap://localhost:389 or ldaps://localhost:636)\n" . "serverURL: " . $this->ServerURL . "\n");
+ if (!in_array("Passwd", $saved)) array_push($file_array, "\n\n# password to change these preferences via webfrontend\n" . "passwd: " . $this->Passwd . "\n");
+ if (!in_array("Admins", $saved)) array_push($file_array, "\n\n# list of users who are allowed to use LDAP Account Manager\n" .
"# names have to be seperated by semicolons\n" .
- "# e.g. admins: cn=admin,dc=yourdomain,dc=org;cn=root,dc=yourdomain,dc=org\n" . "admins: " . $this->Adminstring . "\n");
- if (!$save_suffusr == True) array_push($file_array, "\n\n# suffix of users\n" .
+ "# e.g. admins: cn=admin,dc=yourdomain,dc=org;cn=root,dc=yourdomain,dc=org\n" . "admins: " . $this->Admins . "\n");
+ if (!in_array("usersuffix", $saved)) array_push($file_array, "\n\n# suffix of users\n" .
"# e.g. ou=People,dc=yourdomain,dc=org\n" . "usersuffix: " . $this->usersuffix . "\n");
- if (!$save_suffgrp == True) array_push($file_array, "\n\n# suffix of groups\n" .
+ if (!in_array("groupsuffix", $saved)) array_push($file_array, "\n\n# suffix of groups\n" .
"# e.g. ou=Groups,dc=yourdomain,dc=org\n" . "groupsuffix: " . $this->groupsuffix . "\n");
- if (!$save_suffhst == True) array_push($file_array, "\n\n# suffix of Samba hosts\n" .
+ if (!in_array("hostsuffix", $saved)) array_push($file_array, "\n\n# suffix of Samba hosts\n" .
"# e.g. ou=machines,dc=yourdomain,dc=org\n" . "hostsuffix: " . $this->hostsuffix . "\n");
- if (!$save_suffdom == True) array_push($file_array, "\n\n# suffix of Samba 3 domains\n" .
+ if (!in_array("domainsuffix", $saved)) array_push($file_array, "\n\n# suffix of Samba 3 domains\n" .
"# e.g. ou=domains,dc=yourdomain,dc=org\n" . "domainsuffix: " . $this->domainsuffix . "\n");
- if (!$save_minUID == True) array_push($file_array, "\n\n# minimum UID number\n" . "minUID: " . $this->MinUID . "\n");
+ if (!in_array("MinUID", $saved)) array_push($file_array, "\n\n# minimum UID number\n" . "minUID: " . $this->MinUID . "\n");
if (!$save_maxUID == True) array_push($file_array, "\n\n# maximum UID number\n" . "maxUID: " . $this->MaxUID . "\n");
if (!$save_minGID == True) array_push($file_array, "\n\n# minimum GID number\n" . "minGID: " . $this->MinGID . "\n");
if (!$save_maxGID == True) array_push($file_array, "\n\n# maximum GID number\n" . "maxGID: " . $this->MaxGID . "\n");
@@ -457,7 +270,7 @@ class Config {
echo "" . _("Default language") . ": " . $this->defaultLanguage . "
";
echo "" . _("Path to external script") . ": " . $this->scriptPath . "
";
echo "" . _("Server of external script") . ": " . $this->scriptServer . "
";
- echo "" . _("List of valid users") . ": " . $this->Adminstring;
+ echo "" . _("List of valid users") . ": " . $this->Admins;
}
// functions to read/write preferences
@@ -476,20 +289,19 @@ class Config {
// returns an array of string with all admin names
function get_Admins() {
- return explode(";", $this->Adminstring);
+ return explode(";", $this->Admins);
}
// returns all admin users seperated by semicolons
function get_Adminstring() {
- return $this->Adminstring;
+ return $this->Admins;
}
// needs a string that contains all admin users seperated by semicolons
function set_Adminstring($value) {
if (is_string($value) &&
eregi("^([a-z0-9]|-)+=([a-z0-9]|-)+(,([a-z0-9]|-)+=([a-z0-9]|-)+)+(;([a-z0-9]|-)+=([a-z0-9]|-)+(,([a-z0-9]|-)+=([a-z0-9]|-)+)+)*$", $value)) {
- $this->Adminstring = $value;
- $this->Admins = explode(";", $value);
+ $this->Admins = $value;
}
else return false;
return true;