Posts Tagged ‘howto’
The passwd app is a password management/changing utility for Horde which normally lives in a menu „my account“ in the toolbar.
While it has been released and is in production use at many sites, it is also under development to expand and improve the module.
Passwd provides fairly complete support for changing passwords via Poppassd, LDAP, Unix expect scripts, SMB/CIFS (under unix), Kolab, ADSI, Pine, Serv-U FTP, VMailMgr, vpopmail, SQL passwords and other more complicated setups.For a certain horde 5 installation, I needed to move the passwd app under the gearwheel/settings menu and out of the toolbar. After setting up passwd to work correctly, I added only one line to the registry.local.php
file:
applications['passwd']['menu_parent'] = 'settings'; ?>
Everything you put into the menu labelled „settings“ automatically appears in the gearwheel menu.
When installing horde to a custom pear location, you need to run the pear of your custom location, not the system pear with the custom location’s config.
So the steps would be:
1 mkdir /srv/horde 2 pear config-create /srv/horde/ /srv/horde/pear.conf 3 pear -c /srv/horde/pear.conf install PEAR
as the install docs say but then:
4 /srv/horde/pear/pear -c /srv/horde/pear.conf channel-discover pear.horde.org 5 /srv/horde/pear/pear -c /srv/horde/pear.conf run-scripts horde/Horde_Role 6 /srv/horde/pear/pear -c /srv/horde/pear.conf install --alldeps horde/groupware
Otherwise running the Horde_Role script will fail saying
config-set (horde_dir, /srv/horde/, user) failed, channel pear.php.net
This was experienced on SLES11SP1, SLES11SP2 and openSUSE Factory.
I did not test this for any debian based products yet.
Horde provides system wide customisation and configuration of applications through php configuration files. These files can be edited by hand or written from an administrator config UI. This ui is automatically generated from a file called conf.xml located in your $application/config/ directory.
The config xml allows dropdowns, multiselect fields, tick boxes, radio buttons and even conditionally adding or removing a field or inserting a valid php expression.
For example a dropdown box in the horde base application’s config is generated by this snippet:
2 0 1 2 3
This is all nice but what if you need to provide application data rather than static values? The answer is configspecial
How does that work?
What’s the difference? When you call turba, you get turba. When you call addressbook, you can hook into whatever application provides addressbook. For example, spam handling and ticket queues have been implemented by multiple applications. You can even implement your own handlers for any existing api.
The called application must have a method configSpecialValues() in its lib/Application.php class file. This method gets called and its only parameter is the „name“ property from the xml. In our example it’s „sources“. This method will return an array of source names to use in your config screen.
/** * Returns values forconfiguration settings. * * @param string $what The configuration setting to return. * * @return array The values for the requested configuration setting. */ public function configSpecialValues($what) { switch ($what) { case sources: try { $addressbooks = Turba::getAddressBooks(Horde_Perms::READ); } catch (Horde_Exception $e) { return array(); } foreach ($addressbooks as &$addressbook) { $addressbook = $addressbook['title']; } $addressbooks[''] = _("None"); return $addressbooks; } }
Et voila – you have a list of addressbooks to choose from.
The %php_pear_gen_filelist macro, maintained by Christian Wittmer, is really handy for packaging php pear software packages. It generates rpmlint-happy filelists and if you manage to get the dependencies right, packaging pear stuff for rpm is really a no-brainer. But the standard recipe for using this macro has one drawback: It’s ignorant of installed 3rd party roles and channels. 3rd party pear packages which depend on their channel being registered normally fail.
The workaround is easy: Copy the channel file to the build location.
Example:
#
# spec file for package php5-pear-Horde_Auth (Version 1.0.3)
#
# Copyright (c) 2011 Ralf Lang.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An „Open Source License“ is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative
# Please submit bugfixes or comments via http://bugs.opensuse.org/# norootforbuild
Name: php5-pear-Horde_Auth
%define pear_name Horde_Auth
%define pear_sname horde_auth
Summary: PEAR: Horde Authentication API
Version: 1.0.3
Release: 1
License: LGPL
Group: Development/Libraries/PHP
Source0: http://pear.horde.org/get/Horde_Auth-%{version}.tgz
BuildRoot: %{_tmppath}/%{name}-%{version}-root-%(%{__id_u} -n)
URL: http://pear.horde.org/package/Horde_Auth
BuildRequires: php5-pear >= 1.4.7
Requires: php5-pear-Horde_Exception < 2.0.0, php5-pear-Horde_Util < 2.0.0, php5-pear >= 1.7.0
Conflicts: php5-pear-Horde_Exception = 2.0.0, php5-pear-Horde_Util = 2.0.0
BuildRequires: php5-pear-channel-horde
Requires: php5-pear-channel-horde
BuildArch: noarch
BuildRequires: php-macros# Fix for renaming (package convention)
Provides: php5-pear-%{pear_sname} = %{version}
Provides: php-pear-%{pear_sname} = %{version}
Provides: pear-%{pear_sname} = %{version}
Obsoletes: php5-pear-%{pear_sname} < %{version}
Obsoletes: php-pear-%{pear_sname} < %{version}
Obsoletes: pear-%{pear_sname} < %{version}%description
The Horde_Auth package provides a common interface into the various
backends for the Horde authentication system.%prep
%setup -c%build
%install
%{__mv} package*.xml %{pear_name}-%{version}
cd %{pear_name}-%{version}
PHP_PEAR_PHP_BIN=“$(which php) -d memory_limit=50m“
%{__mkdir_p} %{buildroot}%{php_peardir}/.channels/
%{__cp} %{php_peardir}/.channels/pear.horde.org.reg \
%{buildroot}%{php_peardir}/.channels/
%{__pear} -v \
-d doc_dir=/doc \
-d bin_dir=%{_bindir} \
-d data_dir=%{php_peardir}/data \
-d test_dir=%{php_peardir}/tests \
install –offline –nodeps -R „%{buildroot}“ package.xml%{__install} -D -m 0644 package.xml %{buildroot}%{php_pearxmldir}/%{pear_name}.xml
%{__rm} -rf %{buildroot}/{doc,tmp}
%{__rm} -rf %{buildroot}%{php_peardir}/.{filemap,lock,registry,channels,depdb,depdblock}cd ..
%php_pear_gen_filelist
%clean
rm -rf %{buildroot}%post
if [ „$1“ = „1“ ]; then
%{__pear} install –nodeps –soft –force –register-only %{php_pearxmldir}/%{pear_name}.xml
fi
if [ „$1“ = „2“ ]; then
%{__pear} upgrade –offline –register-only %{php_pearxmldir}/%{pear_name}.xml
fi%postun
if [ „$1“ = „0“ ]; then
%{__pear} uninstall –nodeps –ignore-errors –register-only pear.horde.org/%{pear_name}
fi%files -f %{name}.files
%defattr(-,root,root)
Two parts are marked black: First you have to include the channel package with „BuildRequires:“. Second marked part copies the channel file from the installed location to the buildroot location.
Feel free to reuse or criticise this solution.
Neueste Kommentare