summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorrsiddall <rsiddall>2008-12-26 16:59:59 +0000
committerrsiddall <rsiddall>2008-12-26 16:59:59 +0000
commit47fb113107c52d76663496eb7b5c06aa20f45978 (patch)
treee7f94665db6fa7a549a119255974dc636e97e29f
parent1c362a870ba9338b94c4b81694c2e67887b78cd6 (diff)
Added an Apache configuration file for the self-service interface.
Modified the .spec file to allow the self-service interface to be installed on a machine that already has the billing server on it, if you override the conflict reported by yum. Temporarily disabled the conflict in YaST. Fixed a long-standing bug where Makefile sets the ownership of files, causing "install" commands to fail when building the RPMs. This showed up on the SuSE install. Simplified .spec code to install the init script and the Apache configuration file. Added some fix-ups for some of the remaining SuSE problems. Included a note on changes to make once the Freeside cache relocation code is fixed; this cannot be done until a release of Freeside with the fix in it has been made, or you'll get broken RPMs again.
-rw-r--r--install/rpm/freeside-selfservice.conf11
-rw-r--r--install/rpm/freeside.spec81
2 files changed, 65 insertions, 27 deletions
diff --git a/install/rpm/freeside-selfservice.conf b/install/rpm/freeside-selfservice.conf
new file mode 100644
index 000000000..f2c103b2c
--- /dev/null
+++ b/install/rpm/freeside-selfservice.conf
@@ -0,0 +1,11 @@
+ScriptAlias /selfservice %%%FREESIDE_SELFSERVICE_DOCUMENT_ROOT%%%/cgi
+
+<Directory %%%FREESIDE_SELFSERVICE_DOCUMENT_ROOT%%%/cgi>
+SSLRequireSSL
+DirectoryIndex selfservice.cgi
+AllowOverride None
+Options +ExecCGI -Includes
+Order deny,allow
+Allow from all
+SetHandler cgi-script
+</Directory>
diff --git a/install/rpm/freeside.spec b/install/rpm/freeside.spec
index a3558c131..0a248495c 100644
--- a/install/rpm/freeside.spec
+++ b/install/rpm/freeside.spec
@@ -1,6 +1,6 @@
%{!?_initrddir:%define _initrddir /etc/rc.d/init.d}
%{!?version:%define version 1.7.3}
-%{!?release:%define release 4}
+%{!?release:%define release 5}
Summary: Freeside ISP Billing System
Name: freeside
@@ -27,12 +27,15 @@ Requires: perl-Fax-Hylafax-Client
%define apache_confdir /etc/httpd/conf.d
%define apache_version 2
%define freeside_document_root /var/www/freeside
+%define freeside_selfservice_document_root /var/www/freeside-selfservice
%else
%define apache_conffile /etc/apache2/uid.conf
%define apache_confdir /etc/apache2/conf.d
%define apache_version 2
%define freeside_document_root /srv/www/freeside
+%define freeside_selfservice_document_root /srv/www/freeside-selfservice
%endif
+# Can change this back to /var/cache/subsys/freeside when cache relocation is fixed and released
%define freeside_cache /etc/freeside
%define freeside_conf /etc/freeside
%define freeside_export /etc/freeside
@@ -46,6 +49,7 @@ Requires: perl-Fax-Hylafax-Client
%define db_types Pg mysql
%define _rpmlibdir /usr/lib/rpm
+%define rpmfiles install/rpm
%description
Freeside is a flexible ISP billing system written by Ivan Kohler
@@ -97,7 +101,9 @@ Please note that this RPM does not create the database or database user; it only
%package selfservice
Summary: Self-service interface for %{name}
Group: Applications/Internet
+%if "%{_vendor}" != "suse"
Conflicts: %{name}
+%endif
Requires: %{name}-selfservice-cgi
%description selfservice
@@ -107,7 +113,9 @@ For security reasons, it is set to conflict with %{name} as you should not insta
%package selfservice-core
Summary: Core Perl libraries for the self-service interface for %{name}
Group: Applications/Internet
+%if "%{_vendor}" != "suse"
Conflicts: %{name}
+%endif
%description selfservice-core
This package installs the Perl modules and client daemon for the self-service interface for %{name}. It does not install the CGI interface and can be used with a different front-end.
@@ -116,9 +124,11 @@ For security reasons, it is set to conflict with %{name} as you should not insta
%package selfservice-cgi
Summary: CGI scripts for the self-service interface for %{name}
Group: Applications/Internet
+%if "%{_vendor}" != "suse"
Conflicts: %{name}
+%endif
Requires: %{name}-selfservice-core
-Prefix: %{freeside_document_root}/selfservice
+Prefix: %{freeside_selfservice_document_root}
%description selfservice-cgi
This package installs the CGI scripts for the self-service interface for %{name}. The scripts use some core libraries packaged in a separate RPM.
@@ -127,8 +137,10 @@ For security reasons, it is set to conflict with %{name} as you should not insta
%package selfservice-php
Summary: Sample PHP files for the self-service interface for %{name}
Group: Applications/Internet
+%if "%{_vendor}" != "suse"
Conflicts: %{name}
-Prefix: %{freeside_document_root}/selfservice
+%endif
+Prefix: %{freeside_selfservice_document_root}
%description selfservice-php
This package installs the sample PHP scripts for the self-service interface for %{name}.
@@ -137,9 +149,9 @@ For security reasons, it is set to conflict with %{name} as you should not insta
%prep
%setup -q
%{__rm} bin/pod2x # Only useful to Ivan Kohler now
-%{__cp} install/rpm/freeside-install FS/bin
perl -pi -e 's|/usr/local/bin|%{_bindir}|g' FS/Makefile.PL
-perl -pi -e 's|\s+-o\s+freeside\s+| |g' Makefile
+# RPM handles changing file ownership, so Makefile shouldn't
+perl -pi -e 's/\s+-o\s+(freeside|root)(\s+-g\s+\$\{\w+\})?\s+/ /g' Makefile
perl -ni -e 'print if !/\s+chown\s+/;' Makefile
# Fix-ups for self-service. Should merge this into Makefile
@@ -154,6 +166,7 @@ perl -pi -e 's|lock_file\s*=\s*"/usr/local/freeside|lock_file = "%{freeside_lock
%if "%{_vendor}" == "suse"
perl -pi -e 's|htpasswd|/usr/sbin/htpasswd2|g if /system/;' FS/FS/access_user.pm
perl -pi -e 'print "Order deny,allow\nAllow from all\n" if /<Files/i;' htetc/freeside*.conf
+perl -pi -e 's|3\.29||g if /^\s+use\s+CGI/;' htetc/handler.pl
%endif
# Override find-requires/find-provides to supplement Perl requires for HTML::Mason file handler.pl
@@ -187,7 +200,7 @@ else
fi
%{__make} OPTIMIZE="$RPM_OPT_FLAGS"
cd ..
-%{__make} perl-modules VERSION='%{version}-%{release}' FREESIDE_CACHE=%{freeside_cache} FREESIDE_CONF=%{freeside_conf} FREESIDE_EXPORT=%{freeside_export} FREESIDE_LOCK=%{freeside_lock} FREESIDE_LOG=%{freeside_log}
+%{__make} perl-modules VERSION='%{version}-%{release}' RT_ENABLED=%{rt_enabled} FREESIDE_CACHE=%{freeside_cache} FREESIDE_CONF=%{freeside_conf} FREESIDE_EXPORT=%{freeside_export} FREESIDE_LOCK=%{freeside_lock} FREESIDE_LOG=%{freeside_log}
touch perl-modules
cd fs_selfservice/FS-SelfService
@@ -226,21 +239,14 @@ touch docs
# Install the init script
%{__mkdir_p} $RPM_BUILD_ROOT%{_initrddir}
-%{__install} init.d/freeside-init $RPM_BUILD_ROOT%{_initrddir}/%{name}
-#%{__make} install-init INSTALLGROUP=root INIT_FILE=$RPM_BUILD_ROOT%{_initrddir}/%{name}
+%{__make} install-init INSTALLGROUP=root INIT_FILE=$RPM_BUILD_ROOT%{_initrddir}/%{name} QUEUED_USER=%{fs_queue_user} SELFSERVICE_USER=%{fs_selfservice_user} SELFSERVICE_MACHINES= INIT_INSTALL=
%{__perl} -pi -e "\
- s/%%%%%%QUEUED_USER%%%%%%/%{fs_queue_user}/g;\
- s/%%%%%%SELFSERVICE_USER%%%%%%/%{fs_selfservice_user}/g;\
- s/%%%%%%SELFSERVICE_MACHINES%%%%%%//g;\
s|/etc/default|/etc/sysconfig|g;\
" $RPM_BUILD_ROOT%{_initrddir}/%{name}
# Install the HTTPD configuration snippet for HTML::Mason
%{__mkdir_p} $RPM_BUILD_ROOT%{apache_confdir}
-%{__make} install-apache FREESIDE_DOCUMENT_ROOT=%{freeside_document_root} RT_ENABLED=%{rt_enabled} APACHE_CONF=$RPM_BUILD_ROOT%{apache_confdir} APACHE_VERSION=%{apache_version} MASON_HANDLER=%{freeside_conf}/handler.pl
-%{__perl} -pi -e "s|%%%%%%FREESIDE_DOCUMENT_ROOT%%%%%%|%{freeside_document_root}|g" $RPM_BUILD_ROOT%{apache_confdir}/freeside-*.conf
-%{__perl} -pi -e "s|%%%%%%MASON_HANDLER%%%%%%|%{freeside_conf}/handler.pl|g" $RPM_BUILD_ROOT%{apache_confdir}/freeside-*.conf
-%{__perl} -pi -e "s|/usr/local/etc/freeside|%{freeside_conf}|g" $RPM_BUILD_ROOT%{apache_confdir}/freeside-*.conf
+%{__make} install-apache FREESIDE_DOCUMENT_ROOT=%{freeside_document_root} RT_ENABLED=%{rt_enabled} APACHE_CONF=$RPM_BUILD_ROOT%{apache_confdir} APACHE_VERSION=%{apache_version} FREESIDE_CONF=%{freeside_conf} MASON_HANDLER=%{freeside_conf}/handler.pl
%{__perl} -pi -e 'print "Alias /%{name} %{freeside_document_root}\n\n" if /^<Directory/;' $RPM_BUILD_ROOT%{apache_confdir}/freeside-*.conf
%{__perl} -pi -e 'print "SSLRequireSSL\n" if /^AuthName/i;' $RPM_BUILD_ROOT%{apache_confdir}/freeside-*.conf
@@ -275,15 +281,15 @@ fi
%{__install} bin/* $RPM_BUILD_ROOT%{_datadir}/%{name}-%{version}/bin
%{__mkdir_p} $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig
-%{__install} install/rpm/freeside.sysconfig $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/%{name}
+%{__install} %{rpmfiles}/freeside.sysconfig $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/%{name}
-%{__mkdir_p} $RPM_BUILD_ROOT%{freeside_document_root}/selfservice
-%{__mkdir_p} $RPM_BUILD_ROOT%{freeside_document_root}/selfservice/cgi
-%{__mkdir_p} $RPM_BUILD_ROOT%{freeside_document_root}/selfservice/php
-%{__mkdir_p} $RPM_BUILD_ROOT%{freeside_document_root}/selfservice/templates
-%{__install} fs_selfservice/FS-SelfService/cgi/* $RPM_BUILD_ROOT%{freeside_document_root}/selfservice/cgi
-%{__install} fs_selfservice/php/* $RPM_BUILD_ROOT%{freeside_document_root}/selfservice/php
-%{__install} fs_selfservice/FS-SelfService/*.template $RPM_BUILD_ROOT%{freeside_document_root}/selfservice/templates
+%{__mkdir_p} $RPM_BUILD_ROOT%{freeside_selfservice_document_root}
+%{__mkdir_p} $RPM_BUILD_ROOT%{freeside_selfservice_document_root}/cgi
+%{__mkdir_p} $RPM_BUILD_ROOT%{freeside_selfservice_document_root}/php
+%{__mkdir_p} $RPM_BUILD_ROOT%{freeside_selfservice_document_root}/templates
+%{__install} fs_selfservice/FS-SelfService/cgi/* $RPM_BUILD_ROOT%{freeside_selfservice_document_root}/cgi
+%{__install} fs_selfservice/php/* $RPM_BUILD_ROOT%{freeside_selfservice_document_root}/php
+%{__install} fs_selfservice/FS-SelfService/*.template $RPM_BUILD_ROOT%{freeside_selfservice_document_root}/templates
# Install the main billing server Perl files
cd FS
@@ -316,13 +322,17 @@ find $RPM_BUILD_ROOT%{_prefix} -type f -print | \
grep -v '/etc/freeside/conf' | \
grep -v '/etc/freeside/secrets' | \
sed "s@^$RPM_BUILD_ROOT@@g" > %{name}-%{version}-%{release}-temp-filelist
-cat ../../FS/%{name}-%{version}-%{release}-filelist %{name}-%{version}-%{release}-temp-filelist | sort | uniq -u > %{name}-%{version}-%{release}-selfservice-core-filelist
+cat ../../FS/%{name}-%{version}-%{release}-filelist %{name}-%{version}-%{release}-temp-filelist | sort | uniq -u > %{name}-%{version}-%{release}-selfservice-core-filelist
if [ "$(cat %{name}-%{version}-%{release}-selfservice-core-filelist)X" = "X" ] ; then
echo "ERROR: EMPTY FILE LIST"
exit 1
fi
cd ../..
+# Install the Apache configuration file for self-service
+%{__install} %{rpmfiles}/freeside-selfservice.conf $RPM_BUILD_ROOT%{apache_confdir}/%{name}-selfservice.conf
+%{__perl} -pi -e "s|%%%%%%FREESIDE_SELFSERVICE_DOCUMENT_ROOT%%%%%%|%{freeside_selfservice_document_root}|g" $RPM_BUILD_ROOT%{apache_confdir}/%{name}-selfservice.conf
+
%pre
if ! %{__id} freeside &>/dev/null; then
/usr/sbin/useradd freeside
@@ -369,8 +379,21 @@ fi
%post mason
# Make local httpd run with User/Group = freeside
if [ -f %{apache_conffile} ]; then
+%if "%{_vendor}" != "suse"
perl -p -i.fsbackup -e 's/^(User|Group) .*/$1 freeside/' %{apache_conffile}
+%else
+ perl -p -i.fsbackup -e 's/^(User) .*/$1 freeside/' %{apache_conffile}
+%endif
+fi
+# Fix up environment so pslatex will run
+%if "%{_vendor}" == "suse"
+if ! %{__grep} TEXINPUTS /etc/profile.local >/dev/null; then
+ echo "unset TEXINPUTS" >>/etc/profile.local
+fi
+if ! %{__grep} TEXINPUTS /etc/init.d/apache2 >/dev/null; then
+ perl -p -i.fsbackup -e 'print "unset TEXINPUTS\n\n" if /^httpd_conf\s*=\s*/;' /etc/init.d/apache2
fi
+%endif
%clean
%{__rm} -rf %{buildroot}
@@ -395,6 +418,7 @@ fi
%files selfservice
%defattr(-, freeside, freeside, 0644)
+%attr(0644,root,root) %config(noreplace) %{apache_confdir}/%{name}-selfservice.conf
%files selfservice-core -f fs_selfservice/FS-SelfService/%{name}-%{version}-%{release}-selfservice-core-filelist
%defattr(-, freeside, freeside, 0644)
@@ -404,14 +428,17 @@ fi
%files selfservice-cgi
%defattr(-, freeside, freeside, 0644)
-%attr(0711,freeside,freeside) %{freeside_document_root}/selfservice/cgi
-%attr(0644,freeside,freeside) %{freeside_document_root}/selfservice/templates
+%attr(0711,freeside,freeside) %{freeside_selfservice_document_root}/cgi
+%attr(0644,freeside,freeside) %{freeside_selfservice_document_root}/templates
%files selfservice-php
%defattr(-, freeside, freeside, 0644)
-%attr(0755,freeside,freeside) %{freeside_document_root}/selfservice/php
+%attr(0755,freeside,freeside) %{freeside_selfservice_document_root}/php
%changelog
+* Mon Dec 22 2008 Richard Siddall <richard.siddall@elirion.net> - 1.7.3-5
+- Modifications to make self-service work if you really insist on installing it on the same machine as Freeside
+
* Tue Nov 11 2008 Richard Siddall <richard.siddall@elirion.net> - 1.7.3-4
- Cleaning up after running rpmlint