--- /dev/null
+# Baculum WebGUI tool for Bacula Community
+#
+# Web Server Configuration
+#
+
+server.port = 9095
+server.username = "lighttpd"
+server.groupname = "lighttpd"
+server.document-root = "/usr/share/baculum/htdocs"
+server.errorlog = "/var/log/baculum/baculum-error.log"
+accesslog.filename = "/var/log/baculum/baculum-access.log"
+server.pid-file = "/var/run/baculum.pid"
+
+server.modules = (
+ "mod_auth",
+ "mod_alias",
+ "mod_rewrite",
+ "mod_fastcgi",
+ "mod_accesslog"
+)
+
+auth.backend = "htpasswd"
+auth.backend.plain.userfile = "/usr/share/baculum/htdocs/protected/Data/baculum.users"
+auth.require = ( "/" => (
+ "method" => "basic",
+ "realm" => "Baculum Auth",
+ "require" => "valid-user"
+))
+
+index-file.names = ( "index.php" )
+
+static-file.exclude-extensions = ( ".php" )
+
+dir-listing.encoding = "utf-8"
+
+mimetype.assign = (
+ ".html" => "text/html",
+ ".gif" => "image/gif",
+ ".png" => "image/png",
+ ".ico" => "image/x-icon",
+ ".css" => "text/css",
+ ".js" => "application/javascript",
+)
+
+alias.url = (
+ "/" => "/usr/share/baculum/htdocs/"
+)
+
+fastcgi.server = (".php"=>((
+ "bin-path"=>"/usr/bin/php-cgi",
+ "socket"=>"/tmp/php.sock",
+ "max-procs" => 1,
+ "bin-environment" => (
+ "PHP_FCGI_CHILDREN" => "4",
+ "PHP_FCGI_MAX_REQUESTS" => "10000"
+ ),
+ "bin-copy-environment" => (
+ "PATH", "SHELL", "USER"
+ ),
+ "broken-scriptfilename" => "enable"
+)))
+
+url.rewrite-once = (
+ "^/themes/(.+)$" => "/themes/$1",
+ "^/assets/(.+)$" => "/assets/$1",
+ "^/(.+)$" => "/index.php/$1"
+)
+++ /dev/null
-# Baculum WebGUI tool for Bacula Community
-#
-# Web Server Configuration
-#
-
-server.port = 9095
-server.username = "lighttpd"
-server.groupname = "lighttpd"
-server.document-root = "/usr/share/baculum/htdocs"
-server.errorlog = "/var/log/baculum/baculum-error.log"
-accesslog.filename = "/var/log/baculum/baculum-access.log"
-server.pid-file = "/var/run/baculum.pid"
-
-server.modules = (
- "mod_auth",
- "mod_alias",
- "mod_rewrite",
- "mod_fastcgi",
- "mod_accesslog"
-)
-
-auth.backend = "plain"
-auth.backend.plain.userfile = "/usr/share/baculum/htdocs/protected/Data/baculum.users"
-auth.require = ( "/" => (
- "method" => "basic",
- "realm" => "Baculum Auth",
- "require" => "valid-user"
-))
-
-index-file.names = ( "index.php" )
-
-static-file.exclude-extensions = ( ".php" )
-
-dir-listing.encoding = "utf-8"
-
-mimetype.assign = (
- ".html" => "text/html",
- ".gif" => "image/gif",
- ".png" => "image/png",
- ".ico" => "image/x-icon",
- ".css" => "text/css",
- ".js" => "application/javascript",
-)
-
-alias.url = (
- "/" => "/usr/share/baculum/htdocs/"
-)
-
-fastcgi.server = (".php"=>((
- "bin-path"=>"/usr/bin/php-cgi",
- "socket"=>"/tmp/php.sock",
- "max-procs" => 1,
- "bin-environment" => (
- "PHP_FCGI_CHILDREN" => "4",
- "PHP_FCGI_MAX_REQUESTS" => "10000"
- ),
- "bin-copy-environment" => (
- "PATH", "SHELL", "USER"
- ),
- "broken-scriptfilename" => "enable"
-)))
-
-url.rewrite-once = (
- "^/themes/(.+)$" => "/themes/$1",
- "^/assets/(.+)$" => "/assets/$1",
- "^/(.+)$" => "/index.php/$1"
-)
Summary: WebGUI tool for Bacula Community program
Name: baculum
Version: 7.0.6
-Release: 0.1.b%{?dist}
+Release: 0.3.b%{?dist}
License: AGPLv3
Group: Applications/Internet
URL: http://bacula.org/
-Source: %{name}-%{version}b.tar.gz
+Source0: http://bacula.org/downloads/baculum/baculum-7.0.6b.tar.gz
+Source1: baculum.users
+Source2: baculum-apache.conf
+Source3: baculum-lighttpd.conf
+Source4: baculum-lighttpd.service
BuildRequires: systemd-units
BuildRequires: selinux-policy
+BuildRequires: selinux-policy-devel
BuildRequires: checkpolicy
-Requires: lighttpd
-Requires: lighttpd-fastcgi
Requires: bacula-console
+# Lower version of PHP ( < 5.3.4) does not provide php-mysqlnd db driver
+# and from this reason the lowest is 5.3.4
Requires: php >= 5.3.4
Requires: php-bcmath
Requires: php-common
Requires: php-pdo
Requires: php-pgsql
Requires: php-xml
-Requires(post): /sbin/chkconfig, policycoreutils-python
-Requires(preun):/sbin/service, /sbin/chkconfig, policycoreutils-python
-BuildArch: noarch
+BuildArch: noarch
%description
-The Baculum program allows the user to administrate and manage Bacula work.
-By using Baculum is possible to execute backup/restore operations, monitor
+The Baculum program allows the user to administer and manage Bacula jobs.
+By using Baculum it is possible to execute backup/restore operations, monitor
current Bacula jobs, media management and others. Baculum has integrated web
console that communicates with Bacula bconsole program.
You should install this package if you are using SELinux, that Baculum
can be run in enforcing mode.
+%package httpd
+Summary: Apache configuration for Baculum WebGUI tool
+Requires: %name = %version-%release
+Group: Applications/Internet
+Requires: httpd
+# This conflict field is required because Lighttpd and Apache
+# cannot listen on the same port at the same time. Even using diffeernt
+# ports cause problems like shared framework cache and
+# web server specific directories permissions (for lighttpd and apache
+# users).
+Conflicts: %{name}-lighttpd
+
+%description httpd
+This package provides the Apache configuration for Baculum WebGUI tool.
+By using this module it is possible to run Baculum in Apache environment.
+
+%package lighttpd
+Summary: Lighttpd configuration for Baculum WebGUI tool
+Requires: %name = %version-%release
+Group: Applications/Internet
+Requires: lighttpd
+Requires: lighttpd-fastcgi
+# This conflict field is required because Lighttpd and Apache
+# cannot listen on the same port at the same time. Even using diffeernt
+# ports cause problems like shared framework cache and
+# web server specific directories permissions (for lighttpd and apache
+# users).
+Conflicts: %{name}-httpd
+
+%description lighttpd
+This package provides the Lighttpd configuration for Baculum WebGUI tool.
+By using this module it is possible to run Baculum in Lighttpd environment.
+
%prep
%autosetup
%build
-
-%files
-%defattr(-,lighttpd,lighttpd)
-%attr(-,lighttpd,lighttpd) %{_localstatedir}/cache/%{name}/
-%attr(750,lighttpd,lighttpd) %{_var}/log/%{name}/
-%{_unitdir}/baculum.service
-%{_datadir}/%{name}/
-%config %{_sysconfdir}/%{name}/%{name}.lighttpd.conf
-%config(noreplace) %{_sysconfdir}/%{name}/%{name}.users
-%license LICENSE
-%doc AUTHORS INSTALL README
-
-%files selinux
-%defattr(-,lighttpd,lighttpd)
-%{_datadir}/selinux/packages/%{name}/%{name}.pp
+# Execute files preparation in build directory by Makefile
+make build
+# Compilation SELinuxu policies before loading them
+make -C examples/selinux/ -f %{_datadir}/selinux/devel/Makefile %{name}.pp
%install
-mkdir -p %{buildroot}%{_datadir}/%{name}/htdocs
+mkdir -p %{buildroot}%{_datadir}/%{name}/htdocs/protected
mkdir -p %{buildroot}%{_sysconfdir}/%{name}
+mkdir -p %{buildroot}%{_sysconfdir}/httpd/conf.d
mkdir -p %{buildroot}%{_unitdir}
mkdir -p %{buildroot}%{_localstatedir}/cache/%{name}
mkdir -p %{buildroot}%{_var}/log/%{name}
mkdir -p %{buildroot}%{_datadir}/selinux/packages/%{name}
-cp -ra framework protected themes index.php AUTHORS INSTALL LICENSE README %{buildroot}%{_datadir}/%{name}/htdocs
+cp -ra build/. %{buildroot}%{_datadir}/%{name}/htdocs
+install -m 640 %{SOURCE2} %{buildroot}%{_sysconfdir}/httpd/conf.d/%{name}.conf
+install -m 640 %{SOURCE3} %{buildroot}%{_sysconfdir}/%{name}/
+install -m 644 %{SOURCE4} %{buildroot}%{_unitdir}/
+install -m 600 %{SOURCE1} %{buildroot}%{_datadir}/%{name}/htdocs/protected/Data/%{name}.users
+install -m 644 examples/selinux/%{name}.pp %{buildroot}%{_datadir}/selinux/packages/%{name}/%{name}.pp
+# these symbolic links indicates to Baculum's cache directory
ln -s %{_localstatedir}/cache/%{name} %{buildroot}%{_datadir}/%{name}/htdocs/assets
ln -s %{_localstatedir}/cache/%{name} %{buildroot}%{_datadir}/%{name}/htdocs/protected/runtime
-install -m 640 examples/rpm/baculum.lighttpd.conf %{buildroot}%{_sysconfdir}/%{name}/
-install -m 600 examples/rpm/baculum.users %{buildroot}%{_sysconfdir}/%{name}/%{name}.users
-install -m 644 examples/rpm/baculum.service %{buildroot}%{_unitdir}/
-install -m 644 examples/selinux/%{name}.pp %{buildroot}%{_datadir}/selinux/packages/%{name}/%{name}.pp
-
-%post
-[ -e %{_datadir}/baculum/htdocs/protected/Data/baculum.users ] ||
- ln -s %{_sysconfdir}/baculum/baculum.users %{_datadir}/%{name}/htdocs/protected/Data/baculum.users
-[ -e %{_datadir}/baculum/htdocs/assets ] ||
- ln -s %{_localstatedir}/cache/%{name} %{_datadir}/%{name}/htdocs/assets
-[ -e %{_datadir}/baculum/htdocs/protected/runtime ] ||
- ln -s %{_localstatedir}/cache/%{name} %{_datadir}/%{name}/htdocs/protected/runtime
+%post lighttpd
%systemd_post baculum.service
%post selinux
if [ $1 -le 1 ] ; then
+ # Write access is possible for web servers user only to two directories
+ # - Data/ directory stores settings and web server HTTP Basic credentials
+ # - /var/cache/baculum - cache used by framework in specific locations (assets/ and protected/runtime/)
+ # by symbolic links to cache directory
semanage fcontext -a -t httpd_sys_rw_content_t '%{_datadir}/%{name}/htdocs/protected/Data(/.*)?' 2>/dev/null || :
- restorecon '%{_datadir}/%{name}/htdocs/protected/Data' || :
- semanage fcontext -a -t httpd_sys_rw_content_t '%{_sysconfdir}/%{name}/baculum.users' 2>/dev/null || :
- restorecon '%{_sysconfdir}/%{name}/baculum.users' || :
+ restorecon -i -R '%{_datadir}/%{name}/htdocs/protected/Data' || :
semanage fcontext -a -t httpd_cache_t '%{_localstatedir}/cache/%{name}(/.*)?' 2>/dev/null || :
- restorecon -R %{_localstatedir}/cache/%{name} || :
+ restorecon -i -R %{_localstatedir}/cache/%{name} || :
semodule -i %{_datadir}/selinux/packages/%{name}/%{name}.pp 2>/dev/null || :
fi
%preun
-%systemd_preun baculum.service
if [ $1 -lt 1 ] ; then
- [ ! -e %{_datadir}/%{name}/htdocs/protected/Data/baculum.users ] ||
- rm %{_datadir}/%{name}/htdocs/protected/Data/baculum.users
+ # remove settings and logs if exist
[ ! -e %{_datadir}/%{name}/htdocs/protected/Data/settings.conf ] ||
rm %{_datadir}/%{name}/htdocs/protected/Data/settings.conf
[ ! -e %{_datadir}/%{name}/htdocs/protected/Data/baculum.log ] ||
rm %{_datadir}/%{name}/htdocs/protected/Data/baculum*.log
fi
-%postun
-%systemd_postun_with_restart baculum.service
+%preun lighttpd
+%systemd_preun baculum-lighttpd.service
+
+%postun lighttpd
+%systemd_postun_with_restart baculum-lighttpd.service
%postun selinux
if [ $1 -eq 0 ] ; then
semanage fcontext -d -t httpd_sys_rw_content_t '%{_datadir}/%{name}/htdocs/protected/Data(/.*)?' 2>/dev/null || :
- semanage fcontext -d -t httpd_sys_rw_content_t '%{_sysconfdir}/%{name}/baculum.users' 2>/dev/null || :
semanage fcontext -d -t httpd_cache_t '%{_localstatedir}/cache/%{name}(/.*)?' 2>/dev/null || :
semodule -r %{name} 2>/dev/null || :
fi
+%files
+%defattr(-,root,root)
+# directory excluded here, because it needs to be provided
+# with selected web server privileges (lighttpd or apache)
+%exclude %{_datadir}/%{name}/htdocs/protected/Data/
+%{_datadir}/%{name}
+%license LICENSE
+%doc AUTHORS INSTALL README
+
+%files selinux
+%defattr(-,root,root)
+%{_datadir}/selinux/packages/%{name}/%{name}.pp
+
+%files httpd
+%defattr(644,root,root)
+# Apache logs are stored in /var/log/httpd/
+%config %{_sysconfdir}/httpd/conf.d/%{name}.conf
+%attr(700,apache,apache) %{_localstatedir}/cache/%{name}/
+%attr(700,apache,apache) %{_datadir}/%{name}/htdocs/protected/Data/
+
+%files lighttpd
+%defattr(-,root,root)
+# Lighttpd logs are stored in /var/log/baculum
+%attr(750,lighttpd,lighttpd) %{_var}/log/%{name}/
+%attr(700,lighttpd,lighttpd) %{_localstatedir}/cache/%{name}/
+%attr(700,lighttpd,lighttpd) %{_datadir}/%{name}/htdocs/protected/Data/
+%{_unitdir}/%{name}-lighttpd.service
+%config %{_sysconfdir}/%{name}/%{name}-lighttpd.conf
+
%changelog
+ * Tue Jul 14 2015 Marcin Haba <marcin.haba@bacula.pl> - 7.0.6-0.3.b
+ - Separate to subpackage Lighttpd support
+ - Add Apache subpackage
+ - Use upstream Makefile to prepare build files
+ - Cache symlbolic links only in install section
+ - Add comments to Spec
+ - Compile SELinux policies instead of install pre-compiled
+ - Add source files: baculum.users, baculum-apache.conf
+ baculum-lighttpd.conf and baculum-lighttpd.service
+ * Mon Jul 13 2015 Marcin Haba <marcin.haba@bacula.pl> - 7.0.6-0.2.b
+ - Remove chkconfig and service dependencies from Spec
+ - Change Spec sections order
+ - Correct package description typos and errors
* Mon Jul 06 2015 Marcin Haba <marcin.haba@bacula.pl> - 7.0.6-0.1.b
- - Spec create
\ No newline at end of file
+ - Spec create