%global confdir %{_sysconfdir}/%{name} %global homedir %{_localstatedir}/lib/%{name} %global datadir %{homedir}/data %global dldir %{homedir}/downloads %global logdir %{_localstatedir}/log/%{name} %global workdir %{homedir}/work %global rundir %{homedir}/run # Disable repacking of jars %global __jar_repack 0 # Do not check .jar files in the unifi install directory for requires or # provides. %global __requires_exclude_from ^%{_datadir}/%{name}/.*\.jar$ %global __provides_exclude_from ^%{_datadir}/%{name}/.*\.jar$ %if 0%{?fedora} || 0%{?rhel} >= 7 %global jsvc apache-commons-daemon-jsvc %else %global jsvc jakarta-commons-daemon-jsvc %endif Name: unifi Version: 4.8.20 Release: 1%{?dist} Summary: Ubiquiti UniFi server License: Proprietary URL: https://www.ubnt.com/download/unifi Source0: https://dl.ubnt.com/%{name}/%{version}/UniFi.unix.zip ExclusiveArch: x86_64 # prelink is needed so we can use execstack to enable stack guard on # libubnt_webrtc_jni.so BuildRequires: prelink Requires: %{jsvc} Requires: java-headless >= 1.6 Requires: mongodb-server >= 2.0 %description Ubiquiti UniFi server is a centralized management system for UniFi suite of devices. After the UniFi server is installed, the UniFi controller can be accessed on any web browser. The UniFi controller allows the operator to instantly provision thousands of UniFi devices, map out network topology, quickly manage system traffic, and further provision individual UniFi devices. %prep %setup -q -n UniFi %install mkdir -p %{buildroot}%{_datadir}/%{name} \ %{buildroot}%{confdir} \ %{buildroot}%{datadir} \ %{buildroot}%{homedir} \ %{buildroot}%{logdir} \ %{buildroot}%{rundir} \ %{buildroot}%{workdir} cp -a * %{buildroot}%{_datadir}/%{name} # Move native libs from %{_datadir} to %{_libdir} mkdir -p %{buildroot}%{_libdir} mv %{buildroot}%{_datadir}/%{name}/lib/native %{buildroot}%{_libdir}/%{name} ln -sv %{_libdir}/%{name} %{buildroot}%{_datadir}/%{name}/lib/native # Remove native webrtc library for unsupported systems rm -rf %{buildroot}%{_libdir}/%{name}/{Linux/armhf,Mac,Windows}/ # Enable stack guard on libubnt_webrtc_jni.so execstack -c %{buildroot}%{_libdir}/%{name}/Linux/amd64/libubnt_webrtc_jni.so # Symlink conf, data, dl, logs, run, and work to sane locations which the unifi # user has permission to write rmdir %{buildroot}%{_datadir}/%{name}/conf ln -sv %{confdir} %{buildroot}%{_datadir}/%{name}/conf ln -sv %{datadir} %{buildroot}%{_datadir}/%{name}/data mv %{buildroot}%{_datadir}/%{name}/dl %{buildroot}%{dldir} ln -sv %{dldir} %{buildroot}%{_datadir}/%{name}/dl ln -sv %{logdir} %{buildroot}%{_datadir}/%{name}/logs ln -sv %{rundir} %{buildroot}%{_datadir}/%{name}/run ln -sv %{workdir} %{buildroot}%{_datadir}/%{name}/work rm -f %{buildroot}%{_datadir}/%{name}/readme.txt # Create an empty server.log to prevent a noisy traceback on first run touch %{buildroot}%{logdir}/server.log %pre getent group %{name} >/dev/null || groupadd -r %{name} getent passwd %{name} >/dev/null || \ useradd -r -g %{name} -d %{_localstatedir}/lib/%{name} -s /sbin/nologin \ -c "%{summary}" %{name} exit 0 %files %doc readme.txt %{_datadir}/%{name} %{_libdir}/%{name} %dir %attr(0750, %{name}, %{name}) %{confdir} %dir %attr(0750, %{name}, %{name}) %{homedir} %attr(-, %{name}, %{name}) %{homedir}/* %dir %attr(0750, %{name}, %{name}) %{logdir} %ghost %attr(644, %{name}, %{name}) %{logdir}/server.log %changelog * Sat Jul 23 2016 Todd Zullinger - 4.8.20-1 - Update to 4.8.20 * Mon May 16 2016 Todd Zullinger - 4.8.18-4 - Handle jsvc naming on older EL systems (apache-commons-daemon-jsvc versus jakarta-commons-daemon-jsvc) * Mon May 16 2016 Todd Zullinger - 4.8.18-3 - Remove %%pretrans now that libraries are moved * Fri May 06 2016 Todd Zullinger - 4.8.18-2 - Enable stack guard on libubnt_webrtc_jni.so - Move native libraries to %%{_libdir} * Fri May 06 2016 Todd Zullinger - 4.8.18-1 - Update to 4.8.18 * Sun Mar 06 2016 Todd Zullinger - 4.8.14-1 - Update to 4.8.14 - Change from noarch to x86_64 (due to webrtc libraries) * Sat Jan 16 2016 Todd Zullinger - 4.7.6-1 - Initial package