diff --git a/include/functions.inc b/include/functions.inc
index 9b3b4606062fe44eeb8a71f0331516789d854948..ec1d945f9d081d7dddb91b0f38672d7e0eeb4ee5 100644 (file)
--- a/include/functions.inc
+++ b/include/functions.inc
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-/* Configuration file location */
-define ("CONFIG_DIR", "/etc/gosa");
-define ("CONFIG_FILE", "gosa.conf");
+/* Allow setting the config patih in the apache configuration
+ e.g. SetEnv CONFIG_FILE /etc/path
+ */
+if(!isset($_SERVER['CONFIG_DIR'])){
+ define ("CONFIG_DIR", "/etc/gosa");
+}else{
+ define ("CONFIG_DIR",$_SERVER['CONFIG_DIR']);
+}
+
+/* Allow setting the config file in the apache configuration
+ e.g. SetEnv CONFIG_FILE gosa.conf.2.5
+ */
+if(!isset($_SERVER['CONFIG_FILE'])){
+ define ("CONFIG_FILE", "gosa.conf");
+}else{
+ define ("CONFIG_FILE",$_SERVER['CONFIG_FILE']);
+}
+
define ("CONFIG_TEMPLATE_DIR", "../contrib/");
define ("HELP_BASEDIR", "/var/www/doc/");
require_once ("class_config.inc");
require_once ("class_userinfo.inc");
require_once ("class_plugin.inc");
+require_once ("class_dhcpPlugin.inc");
require_once ("class_pluglist.inc");
require_once ("class_tabs.inc");
require_once ("class_mail-methods.inc");
/* Try to use users primary language */
global $config;
$ui= get_userinfo();
- if ($ui != NULL){
+ if (isset($ui) && $ui !== NULL){
if ($ui->language != ""){
return ($ui->language.".UTF-8");
}
}
- /* Try to use users primary language */
- if ($ui != NULL){
- if ($ui->language != ""){
- return ($ui->language.".UTF-8");
+ /* Check for global language settings in gosa.conf */
+ if(isset($config->data['MAIN']['LANG']) && !empty($config->data['MAIN']['LANG'])) {
+ $lang = $config->data['MAIN']['LANG'];
+ if(!preg_match("/utf/i",$lang)){
+ $lang .= ".UTF-8";
}
+ return($lang);
}
/* Load supported languages */
echo "<body>".$_SESSION['errors']."</body></html>";
exit();
}
+
+ /* Check if mail address is also a valid auth name */
+ $auth_mail = FALSE;
+ if(isset($config->current['AUTH_MAIL']) && preg_match("/^true$/i",$config->current['AUTH_MAIL'])){
+ $auth_mail = TRUE;
+ }
+
$ldap->cd($config->current['BASE']);
- $ldap->search("(&(uid=$username)(objectClass=gosaAccount))", array("uid"));
+ if(!$auth_mail){
+ $ldap->search("(&(uid=$username)(objectClass=gosaAccount))", array("uid"));
+ }else{
+ $ldap->search("(&(|(uid=".$username.")(mail=".$username."))(objectClass=gosaAccount))", array("uid","mail"));
+ }
/* get results, only a count of 1 is valid */
switch ($ldap->count()){
/* LDAP schema is not case sensitive. Perform additional check. */
$attrs= $ldap->fetch();
- if ($attrs['uid'][0] != $username){
- return(NULL);
+ if($auth_mail){
+ if ($attrs['uid'][0] != $username && strcasecmp($attrs['mail'][0], $username) != 0){
+ return(NULL);
+ }
+ }else{
+ if ($attrs['uid'][0] != $username){
+ return(NULL);
+ }
}
/* got user dn, fill acl's */
$ui= new userinfo($config, $ldap->getDN());
- $ui->username= $username;
+ $ui->username= $attrs['uid'][0];
/* password check, bind as user with supplied password */
$ldap->disconnect();
}
-function get_module_permission($acl_array, $module, $dn)
-{
- global $ui;
+function get_module_permission($acl_array, $module, $dn, $checkTag= TRUE){
+ global $ui, $config;
+
+ /* Check for strict tagging */
+ $ttag= "";
+ if ($checkTag && isset($config->current['STRICT_UNITS']) &&
+ preg_match('/^(yes|true)$/i', $config->current['STRICT_UNITS']) &&
+ $ui->gosaUnitTag != ""){
+ $size= 0;
+ foreach ($config->tdepartments as $tdn => $tag){
+ if (preg_match("/$tdn$/", $dn)){
+ if (strlen($tdn) > $size){
+ $size= strlen($tdn);
+ $ttag= $tag;
+ }
+ }
+ }
+
+ /* We have no permission for areas that don't carry our tag */
+ if ($ttag != $ui->gosaUnitTag){
+ return ("#none#");
+ }
+ }
$final= "";
foreach($acl_array as $acl){
return preg_match ("/^[\/0-9 ()+*-]+$/", $nr);
}
+function is_dns_name($str)
+{
+ return(preg_match("/^[a-z0-9\.\-]*$/i",$str));
+}
function is_url($url)
{
$progress = (int)(($percentage /100)*$width);
- /* Abort printing out percentage, if divs are to small */
-
-
/* If theres a better solution for this, use it... */
- $str = "
- <div style=\" width:".($width)."px;
- height:".($height)."px;
- background-color:#000000;
-padding:1px;\">
-
- <div style=\" width:".($width)."px;
- background-color:#$bgcolor;
-height:".($height)."px;\">
+ $str = "\n <div style=\" width:".($width)."px; ";
+ $str.= "\n height:".($height)."px; ";
+ $str.= "\n background-color:#000000; ";
+ $str.= "\n padding:1px;\" > ";
- <div style=\" width:".$progress."px;
-height:".$height."px;
- background-color:#".$color2.$color2.$color."; \">";
+ $str.= "\n <div style=\" width:".($width)."px; ";
+ $str.= "\n background-color:#$bgcolor; ";
+ $str.= "\n height:".($height)."px;\" > ";
- if(($height >10)&&($showvalue)){
- $str.= "<font style=\"font-size:".($height-2)."px;color:#FF0000;align:middle;padding-left:".((int)(($width*0.4)))."px;\">
- <b>".$percentage."%</b>
- </font>";
- }
+ if(($height >10)&&($showvalue)){
+ $str.= "\n <font style=\"font-size:".($height-2)."px; ";
+ $str.= "\n color:#FF0000; align:middle; ";
+ $str.= "\n padding-left:".((int)(($width*0.4)))."px; \"> ";
+ $str.= "\n <b>".$percentage."%</b> ";
+ $str.= "\n </font> ";
+ }
- $str.= "</div></div></div>";
+ $str.= "\n <div style=\" width:".$progress."px; ";
+ $str.= "\n height:".$height."px; ";
+ $str.= "\n background-color:#".$color2.$color2.$color."; \" >";
+ $str.= "\n </div>";
+ $str.= "\n </div>";
+ $str.= "\n </div>";
- return($str);
+ return($str);
}
$command= $config->current['BASE_HOOK'];
if ($command != ""){
- $command.= " '$dn' $attrib";
+ $command.= " '".@LDAP::fix($dn)."' $attrib";
if (check_command($command)){
@DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, $command, "Execute");
exec($command, $output);
}
-function prepare4mailbody($string)
-{
- $string = html_entity_decode($string);
-
- $from = array(
- "/%/",
- "/ /",
- "/\n/",
- "/\r/",
- "/!/",
- "/#/",
- "/\*/",
- "/\//",
- "/</",
- "/>/",
- "/\?/",
- "/\&/",
- "/\(/",
- "/\)/",
- "/\"/");
-
- $to = array(
- "%25",
- "%20",
- "%0A",
- "%0D",
- "%21",
- "%23",
- "%2A",
- "%2F",
- "%3C",
- "%3E",
- "%3F",
- "%38",
- "%28",
- "%29",
- "%22");
-
- $string = preg_replace($from,$to,$string);
-
- return($string);
-}
function mac2company($mac)
}
+/* Add a given objectClass to an attrs entry */
+function add_objectClass($classes, &$attrs)
+{
+ if (is_array($classes)){
+ $list= $classes;
+ } else {
+ $list= array($classes);
+ }
+
+ foreach ($list as $class){
+ $attrs['objectClass'][]= $class;
+ }
+}
+
+
+/* Removes a given objectClass from the attrs entry */
+function remove_objectClass($classes, &$attrs)
+{
+ if (isset($attrs['objectClass'])){
+ /* Array? */
+ if (is_array($classes)){
+ $list= $classes;
+ } else {
+ $list= array($classes);
+ }
+
+ $tmp= array();
+ foreach ($attrs['objectClass'] as $oc) {
+ foreach ($list as $class){
+ if ($oc != $class){
+ $tmp[]= $oc;
+ }
+ }
+ }
+ $attrs['objectClass']= $tmp;
+ }
+}
+
+
+function cred_encrypt($input, $password) {
+
+ $size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
+ $iv = mcrypt_create_iv($size, MCRYPT_DEV_RANDOM);
+
+ return bin2hex(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $password, $input, MCRYPT_MODE_ECB, $iv));
+}
+
+
+function cred_decrypt($input,$password) {
+ $size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
+ $iv = mcrypt_create_iv($size, MCRYPT_DEV_RANDOM);
+
+ return mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $password, pack("H*", $input), MCRYPT_MODE_ECB, $iv);
+}
+
+
/* Returns contents of the given POST variable and check magic quotes settings */
function get_post($name)
{