[Kolab-devel] lib/KolabAdmin package.xml www/admin

Gunnar Wrobel wrobel at horde.org
Thu Jun 23 12:37:35 CEST 2011


Quoting Bogomil Shopov <shopov at kolabsys.com>:

> lib/KolabAdmin/include/menu.php |   35 ++++++++++++++++++++++++++++-------
>  package.xml                     |   11 +++++++----
>  www/admin/user/activesync.php   |   16 ++++++++++------
>  3 files changed, 45 insertions(+), 17 deletions(-)
>
> New commits:
> commit 253dd2c9f6054919036ccc56e07b6ccdb8608608
> Author: Bogomil Shopov (Kolab Systems) <shopov at kolabsys.com>
> Date:   Thu Jun 23 12:55:37 2011 +0300
>
>     Adding ACL checking for ActiveSync. Removing duplicated menu  
> Items. Hiding menu and functionalities depends on ACL.
>
>     Changinf package xml with adding file tasks.
>
> diff --git a/lib/KolabAdmin/include/menu.php  
> b/lib/KolabAdmin/include/menu.php
> index b079453..e1bc874 100644
> --- a/lib/KolabAdmin/include/menu.php
> +++ b/lib/KolabAdmin/include/menu.php
> @@ -3,7 +3,8 @@
>   *  Copyright (c) 2004 Klarälvdalens Datakonsult AB
>   *
>   *    Written by Steffen Hansen <steffen at klaralvdalens-datakonsult.se>
> - *
> + *	  Updated by Bogomil Shopov <shopov at kolabsys.com>
> + *
>   *  This  program is free  software; you can redistribute  it and/or
>   *  modify it  under the terms of the GNU  General Public License as
>   *  published by the  Free Software Foundation; either version 2, or
> @@ -20,8 +21,28 @@
>
>  require_once('locale.php');
>
> +/*
> + * z-Push part for activesync
> + *
> + * */
> +
> +include_once '@www_dir@/z-push/config.php';
> +$showasmenu=true;
> +if(defined('KOLAB_LDAP_ACL') and KOLAB_LDAP_ACL !=""){
> +	$showasmenu=false;
> +	$filter = '(member='.$_SESSION['auth_user'].')';
> +	$result = $ldap->search( KOLAB_LDAP_ACL, $filter);
> +	if (ldap_count_entries($ldap->connection, $result) > 0)
> +		$showasmenu=true;
> +}
> +
> +/*
> + * end z-push activesync part
> + * */
> +
>  $menuitems = array();
>
> +
>  if( $auth->group() == "admin" || $auth->group() == "maintainer" ||  
> $auth->group() == 'domain-maintainer' ) {
>    $menuitems['user'] = array( 'name' => _('Users'),
>  							  'url'  => $topdir.'/user/',
> @@ -39,14 +60,14 @@ if( $auth->group() == "admin" || $auth->group()  
> == "maintainer" || $auth->group(
>  												 array( 'name' => _('Forward Email'),
>  														'url'  => 'forward.php' ),
>  												 array( 'name' => _('Vacation'),
> -														'url'  => 'vacation.php' ),
> -												array( 'name' => _('ActiveSync'),
> -														'url'  => 'activesync.php' ),
> -																		));
> -
> +														'url'  => 'vacation.php' )
> +																	));
> +if($showasmenu){
> +
>  	$menuitems['activesync'] = array( 'name' => _('ActiveSync'),
>  							  'url'  => $topdir.'/user/activesync.php',
> -							  'title' => _('ActiveSync'));
> +							  'title' => _('ActiveSync'));
> + }
>  }
>  if( $auth->group() == "admin" || $auth->group() == "maintainer") {
>    $menuitems['addressbook'] = array( 'name' => _('Addressbook'),
> diff --git a/package.xml b/package.xml
> index 572b22c..c60bc4b 100644
> --- a/package.xml
> +++ b/package.xml
> @@ -121,7 +121,9 @@
>        <file name="headers.php" role="php" />
>        <file name="ldap.class.php" role="php" />
>        <file name="locale.php" role="php" />
> -      <file name="menu.php" role="php" />
> +      <file name="menu.php" role="php" >
> +      	<replace from="@www_dir@" to="www_dir" type="pear-config"/>
> +      	</file>
>        <file name="mysmarty.php" role="php" />
>        <file name="passwd.php" role="php" />
>        <file name="Sieve.php" role="php" />
> @@ -244,14 +246,15 @@
>        <file name="sf.php" role="www" />
>       </dir> <!-- /www/admin/sharedfolder -->
>       <dir name="user">
> -      <file name="activesync.php" role="www" />
> +      <file name="activesync.php" role="php">
> +      	<replace from="@www_dir@" to="www_dir" type="pear-config"/>
> +      </file>
>        <file name="deliver.php" role="www" />
>        <file name="forward.php" role="www" />
>        <file name="index.php" role="www" />
>        <file name="user.php" role="www" />
>        <file name="vacation.php" role="www" />
> -      <file name="activesync.php" role="www" />
> -     </dir> <!-- /www/admin/user -->
> +      </dir> <!-- /www/admin/user -->
>       <file name="custom.css" role="www" />
>       <file name="favicon.ico" role="www" />
>       <file name="favicon.png" role="www" />
> diff --git a/www/admin/user/activesync.php b/www/admin/user/activesync.php
> index 0b211cb..0c51e96 100755
> --- a/www/admin/user/activesync.php
> +++ b/www/admin/user/activesync.php
> @@ -27,12 +27,8 @@ require_once('KolabAdmin/include/authenticate.php');
>  require_once('KolabAdmin/include/form.class.php');
>  require_once('KolabAdmin/include/passwd.php');
>
> -//try to include ALL possible configuration files
> - at include_once '/kolab/var/kolab/www/z-push/config.php';
> - at include_once '/etc/z-push/config.php';
> - at include_once '/usr/share/z-push/config.php';
> - at include_once '/var/www/z-push/config.php';
> -
> +//include z-Push config file file
> +include_once '@www_dir@/z-push/config.php';

It was a lot of work to get hardcoded paths out of the web admin. You  
should avoid hardcoding the knowledge of the installation path to  
z-push in the code. While "@www_dir@" is variable it is being replaced  
with a hard coded path when building the distributable package. In  
theory the system administrator should be able to place the z-push  
application anywhere he would like. I know: on OpenPKG this is usually  
not the case but we shouldn't code specifically for OpenPKG.

So this should go into a configuration variable.

Cheers,

Gunnar

>
>
>  //define errors array
> @@ -43,6 +39,14 @@ if((@include_once  
> 'Horde/Kolab/Kolab_Zpush/lib/kolabActivesyncData.php') === fal
>  	$errors[] =_('zPush in not enabled in your system.');
>  }
>
> +//check for permissions ACL from zpush config file
> +if(defined('KOLAB_LDAP_ACL') and KOLAB_LDAP_ACL !=""){
> +	$filter = '(member='.$_SESSION['auth_user'].')';
> +	$result = $ldap->search( KOLAB_LDAP_ACL, $filter);
> +	if (ldap_count_entries($ldap->connection, $result) == 0)
> +		$errors[] ="You don't have permissions to manage your activeSync  
> devices.";
> +}
> +
>  /*read from her value of the KOLAB_LAXPIC
>   -1 = allow the user to select (or if the constant doesn't exist)
>   0  = same as the annotations (no lax mode just jpeg)

-- 
Core Developer
The Horde Project

e: wrobel at horde.org
t: +49 700 6245 0000
w: http://www.horde.org

pgp: 9703 43BE
tweets: http://twitter.com/pardus_de
blog: http://log.pardus.de




More information about the devel mailing list