diff --git a/include/functions.inc b/include/functions.inc
index 422bcd7cdbe5accaf5b224adeaa9157637effcff..70ab363acedfc872f34830b1a1dd11b2ae7d51fc 100644 (file)
--- a/include/functions.inc
+++ b/include/functions.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, $checkTag= TRUE)
+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 != ""){
return preg_match ("/^[\/0-9 ()+*-]+$/", $nr);
}
+function is_dns_name($str)
+{
+ return(preg_match("/^[a-z0-9\.\-]*$/i",$str));
+}
function is_url($url)
{
$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;
+ }
+}
+
+
/* Returns contents of the given POST variable and check magic quotes settings */
function get_post($name)
{