From d49083cd297e6d152e2ba21da2d48dceec975695 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Tue, 8 Jul 2014 20:16:37 +0200 Subject: php-horde-Horde-Core: add upstream patch --- Horde_Core-git.patch | 209 ++++++++++++++++++++++++++++++++++++++++++++++ php-horde-Horde-Core.spec | 6 ++ 2 files changed, 215 insertions(+) create mode 100644 Horde_Core-git.patch diff --git a/Horde_Core-git.patch b/Horde_Core-git.patch new file mode 100644 index 0000000..cde04b3 --- /dev/null +++ b/Horde_Core-git.patch @@ -0,0 +1,209 @@ +From f9058a1289778209190afb7c7bee50065b8c583b Mon Sep 17 00:00:00 2001 +From: Jan Schneider +Date: Wed, 11 Jun 2014 16:13:14 +0200 +Subject: [PATCH] Allow to specify base DN for searching user DNs (Bug #12128). + +--- + framework/Core/lib/Horde/Config.php | 169 +++++++++++++++++++++--------------- + framework/Core/package.xml | 2 + + framework/Ldap/lib/Horde/Ldap.php | 6 +- + framework/Ldap/package.xml | 16 ++-- + 4 files changed, 114 insertions(+), 79 deletions(-) + +diff --git a/framework/Core/lib/Horde/Config.php b/framework/Core/lib/Horde/Config.php +index 816d202..43aec96 100644 +--- a/framework/Core/lib/Horde/Config.php ++++ b/framework/Core/lib/Horde/Config.php +@@ -746,8 +746,8 @@ protected function _parseLevel(&$conf, $children, $ctx) + * @param string $ctx The context of the tag. + * @param DomNode $node The DomNode representation of the + * tag. +- * @param string $switchname If DomNode is not set, the value of the +- * tag's switchname attribute. ++ * @param string $switchname If $node is not set, the value of the tag's ++ * switchname attribute. + * + * @return array An associative array with the LDAP configuration tree. + */ +@@ -823,73 +823,7 @@ protected function _configLDAP($ctx, $node = null, + ), + 'user' => array( + 'desc' => 'Bind as the currently logged-in user', +- 'fields' => array( +- 'user' => array( +- 'binddn' => array( +- '_type' => 'text', +- 'required' => false, +- 'desc' => 'DN used to bind for searching the user\'s DN (leave empty for anonymous bind)', +- 'default' => $this->_default( +- $ctx . '|user|binddn', +- $node ? ($xpath->evaluate('string(configsection/configstring[@name="binddn"])', $node) ?: '') : '' +- ) +- ), +- 'bindpw' => array( +- '_type' => 'text', +- 'required' => false, +- 'desc' => 'Password for bind DN', +- 'default' => $this->_default( +- $ctx . '|user|bindpw', +- $node ? ($xpath->evaluate('string(configsection/configstring[@name="bindpw"])', $node) ?: '') : '' +- ) +- ), +- 'uid' => array( +- '_type' => 'text', +- 'required' => true, +- 'desc' => 'The username search key (set to samaccountname for AD).', +- 'default' => $this->_default( +- $ctx . '|user|uid', +- $node ? ($xpath->evaluate('string(configsection/configstring[@name="uid"])', $node) ?: 'uid') : 'uid' +- ) +- ), +- 'filter_type' => array( +- 'required' => false, +- 'desc' => 'How to specify a filter for the user lists.', +- 'default' => $this->_default( +- $ctx . '|user|filter_type', +- $node ? ($xpath->evaluate('normalize-space(configsection/configswitch[@name="filter_type"]/text())', $node) ?: 'objectclass') : 'objectclass'), +- 'switch' => array( +- 'filter' => array( +- 'desc' => 'LDAP filter string', +- 'fields' => array( +- 'filter' => array( +- '_type' => 'text', +- 'required' => true, +- 'desc' => 'The LDAP filter string used to search for users.', +- 'default' => $this->_default( +- $ctx . '|user|filter', +- $node ? ($xpath->evaluate('string(configsection/configstring[@name="filter"])', $node) ?: '(objectClass=*)') : '(objectClass=*)' +- ) +- ), +- ), +- ), +- 'objectclass' => array( +- 'desc' => 'List of objectClasses', +- 'fields' => array( +- 'objectclass' => array( +- '_type' => 'stringlist', +- 'required' => true, +- 'desc' => 'The objectclass filter used to search for users. Can be a single objectclass or a comma-separated list.', +- 'default' => implode(', ', $this->_default( +- $ctx . '|user|objectclass', +- $node ? ($xpath->evaluate('string(configsection/configlist[@name="objectclass"])', $node) ?: array('*')) : array('*'))) +- ), +- ), +- ), +- ), +- ), +- ), +- ), ++ 'fields' => $this->_configLDAPUser($ctx, $node) + ), + 'admin' => array( + 'desc' => 'Bind with administrative/system credentials', +@@ -995,6 +929,103 @@ protected function _configLDAP($ctx, $node = null, + } + + /** ++ * Returns the configuration tree for an LDAP configuration to search user ++ * DNs to replace a tag. ++ * ++ * Subnodes will be parsed and added. ++ * ++ * @param string $ctx The context of the tag. ++ * @param DomNode $node The DomNode representation of the ++ * tag. ++ * ++ * @return array A list of associative arrays with the LDAP configuration ++ * tree. ++ */ ++ protected function _configLDAPUser($ctx, $node = null) ++ { ++ if ($node) { ++ $xpath = new DOMXPath($node->ownerDocument); ++ } ++ ++ return array( ++ 'user' => array( ++ 'basedn' => array( ++ '_type' => 'text', ++ 'required' => false, ++ 'desc' => 'Base DN for searching the user\'s DN', ++ 'default' => $this->_default( ++ $ctx . '|user|basedn', ++ $node ? ($xpath->evaluate('string(configsection/configstring[@name="basedn"])', $node) ?: '') : '' ++ ) ++ ), ++ 'binddn' => array( ++ '_type' => 'text', ++ 'required' => false, ++ 'desc' => 'DN used to bind for searching the user\'s DN (leave empty for anonymous bind)', ++ 'default' => $this->_default( ++ $ctx . '|user|binddn', ++ $node ? ($xpath->evaluate('string(configsection/configstring[@name="binddn"])', $node) ?: '') : '' ++ ) ++ ), ++ 'bindpw' => array( ++ '_type' => 'text', ++ 'required' => false, ++ 'desc' => 'Password for bind DN', ++ 'default' => $this->_default( ++ $ctx . '|user|bindpw', ++ $node ? ($xpath->evaluate('string(configsection/configstring[@name="bindpw"])', $node) ?: '') : '' ++ ) ++ ), ++ 'uid' => array( ++ '_type' => 'text', ++ 'required' => true, ++ 'desc' => 'The username search key (set to samaccountname for AD).', ++ 'default' => $this->_default( ++ $ctx . '|user|uid', ++ $node ? ($xpath->evaluate('string(configsection/configstring[@name="uid"])', $node) ?: 'uid') : 'uid' ++ ) ++ ), ++ 'filter_type' => array( ++ 'required' => false, ++ 'desc' => 'How to specify a filter for the user lists.', ++ 'default' => $this->_default( ++ $ctx . '|user|filter_type', ++ $node ? ($xpath->evaluate('normalize-space(configsection/configswitch[@name="filter_type"]/text())', $node) ?: 'objectclass') : 'objectclass'), ++ 'switch' => array( ++ 'filter' => array( ++ 'desc' => 'LDAP filter string', ++ 'fields' => array( ++ 'filter' => array( ++ '_type' => 'text', ++ 'required' => true, ++ 'desc' => 'The LDAP filter string used to search for users.', ++ 'default' => $this->_default( ++ $ctx . '|user|filter', ++ $node ? ($xpath->evaluate('string(configsection/configstring[@name="filter"])', $node) ?: '(objectClass=*)') : '(objectClass=*)' ++ ) ++ ), ++ ), ++ ), ++ 'objectclass' => array( ++ 'desc' => 'List of objectClasses', ++ 'fields' => array( ++ 'objectclass' => array( ++ '_type' => 'stringlist', ++ 'required' => true, ++ 'desc' => 'The objectclass filter used to search for users. Can be a single objectclass or a comma-separated list.', ++ 'default' => implode(', ', $this->_default( ++ $ctx . '|user|objectclass', ++ $node ? ($xpath->evaluate('string(configsection/configlist[@name="objectclass"])', $node) ?: array('*')) : array('*'))) ++ ), ++ ), ++ ), ++ ), ++ ), ++ ), ++ ); ++ } ++ ++ /** + * Returns the configuration tree for a NoSQL backend configuration to + * replace a tag. + * Subnodes will be parsed and added to both the Horde defaults and the +-- +1.9.3 + diff --git a/php-horde-Horde-Core.spec b/php-horde-Horde-Core.spec index dcf4c65..d4f8038 100644 --- a/php-horde-Horde-Core.spec +++ b/php-horde-Horde-Core.spec @@ -20,6 +20,9 @@ License: LGPLv2 URL: http://pear.horde.org Source0: http://%{pear_channel}/get/%{pear_name}-%{version}.tgz +# upstream patch +Patch0: %{pear_name}-git.patch + BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildArch: noarch BuildRequires: gettext @@ -173,6 +176,8 @@ Framework. %setup -q -c cd %{pear_name}-%{version} +%patch0 -p3 -b .upstream + # Don't install .po and .pot files # Don't install prototype, scriptaculous, use system one # Remove checksum for .mo, as we regenerate them @@ -181,6 +186,7 @@ sed -e '/%{pear_name}.po/d' \ -e '/js\/scriptaculous/d' \ -e '/LICENSE/s/role="horde"/role="doc"/' \ -e '/%{pear_name}.mo/s/md5sum=.*name=/name=/' \ + -e '/Config.php/s/md5sum=.*name=/name=/' \ ../package.xml >%{name}.xml touch -r ../package.xml %{name}.xml -- cgit