X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=lms.spec;h=01ba5a819303a653e2aa97c6e8088d82fe51d686;hb=4119866fc8d85b0749748cca15dccc458d553f28;hp=9f80ae86f872f9f47dbde05fae05d7f24177a3a9;hpb=5f12700b625517e1908439838334a93a304277fd;p=packages%2Flms.git diff --git a/lms.spec b/lms.spec index 9f80ae8..01ba5a8 100644 --- a/lms.spec +++ b/lms.spec @@ -1,57 +1,69 @@ +# +# Conditional build: +%bcond_without almsd # without almsd daemon +# +# TODO: +# - cosmetics (sort in %%files and %%install) +# - contrib split +%define lmsver 1.4 +%define lmssubver 3 Summary: LAN Managment System -Summary(pl): System Zarz±dzania Siec± Lokaln± +Summary(pl): System Zarz±dzania Sieci± Lokaln± Name: lms -Version: 1.0.1 -Release: 1 +Version: %{lmsver}.%{lmssubver} +Release: 0.1 License: GPL Vendor: LMS Developers Group: Networking/Utilities -# Source0-md5: a1de45fcfbb12c8a1e4eda988b84b78d -Source0: http://lms.rulez.pl/download/%{name}-%{version}.tar.gz +Source0: http://lms.rulez.pl/download/%{lmsver}/%{name}-%{version}.tar.gz +# Source0-md5: 7af9efa0430a3bad5f46f59a21312f0a +Source1: %{name}.conf +Source2: %{name}.init +Source3: %{name}.sysconfig Patch0: %{name}-PLD.patch +Patch1: %{name}-amd64.patch +Patch2: %{name}-calendar.patch URL: http://lms.rulez.pl/ +%{?with_almsd:BuildRequires: libgadu-devel} +%{?with_almsd:BuildRequires: mysql-devel} +%{?with_almsd:BuildRequires: postgresql-devel} +%{?with_almsd:PreReq: rc-scripts} +%{?with_almsd:Requires(post,preun): /sbin/chkconfig} Requires: php +Requires: php-gd Requires: php-posix Requires: php-pcre Requires: webserver Requires: Smarty >= 2.5.0 -Requires: adodb >= 2.90 -BuildArch: noarch BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) -%define _lmsdir /home/services/httpd/html/%{name} -%define _sharedstatedir /var/lib -# when spec'll be finished, this sould go to RA-branch -# because sharedstatedir is already defined at rpm macros from HEAD +%define _sysconfdir /etc/%{name} +%define _lmsdir %{_datadir}/%{name} +%define _lmsvar /var/lib/%{name} %description This is a package of applications in PHP and Perl for managing LANs. -It's using MySQL (for now) but PostgreSQL will be supported in near -future. The main goal is to get the best service of users at -provider's level. -The main features in LMS are: +It's using MySQL or PostgreSQL. The main goal is to get the best +service of users at provider's level. The main features in LMS are: - database of users (name, surname, address, telefon number, commentary); - database of computers (IP, MAC); - easy-ridden financial system and funds of network; - different subscriptions; - sending warnings to users; -- autogenerating dhcpd.conf; -- autogenerating firewall rules (ipchains/iptables); -- autogenerating idents for ident daemon; - many levels of access for LMS administrators; -- integration with LinuxStat package; -- autogenerating ARP rules (ether auth); -- autogenerating DNS files. +- autogenerating ipchains, iptables, dhcpd, ethers file, oidentd, + openbsd packet filter configuration files/scripts; +- autogenerating almost any kind of config file using templates; %description -l pl "LMS" jest skrótem od "LAN Management System". Jest to zestaw aplikacji w PHP i Perlu, u³atwiaj±cych zarz±dzanie sieciami osiedlowymi (popularnie zwanymi Amatorskimi Sieciami Komputerowymi), -opartych o bazê danych MySQL (docelowo, do wyboru, MySQL lub -PostgreSQL). G³ówne za³o¿enia to uzyskanie jako¶ci us³ug oraz obs³ugi -u¿ytkowników na poziomie providera z prawdziwego zdarzenia. -Najbardziej podstawowe cechy LMS to: +opartych o bazê danych MySQL lub PostgreSQL. G³ówne za³o¿enia to +uzyskanie jako¶ci us³ug oraz obs³ugi u¿ytkowników na poziomie +providera z prawdziwego zdarzenia. Najbardziej podstawowe cechy LMS +to: - baza danych u¿ytkowników (imiê, nazwisko, adres, numer telefonu, uwagi); - baza danych komputerów (adres IP, adres MAC); @@ -60,23 +72,19 @@ Najbardziej podstawowe cechy LMS to: - ró¿ne taryfy abonamentowe; - wysy³anie poczt± elektroniczn± upomnieñ do u¿ytkowników; - automatyczne naliczanie op³at miesiêcznych; -- generowanie dhcpd.conf; -- generowanie regu³ firewalla (ipchains/iptables); -- generowanie identów dla demona oidentd; - ró¿ne poziomy dostêpu do funkcji LMS dla administratorów; -- generowanie wpisów ARP (blokada adresów IP po ARP); -- generowanie wpisów do DNS. +- generowanie regu³ i plików konfiguracyjnych dla ipchains, iptables, + dhcpd, oidentd, packet filtra openbsd, wpisów /etc/ethers - generowanie praktycznie ka¿dego pliku konfiguracyjnego na podstawie - danych w bazie. + danych w bazie przy u¿yciu prostych szablonów; %package scripts Summary: LAN Managment System - scripts Summary(pl): LAN Managment System - skrypty +Group: Networking/Utilities Requires: perl-Net-SMTP-Server Requires: perl-Config-IniFiles Requires: perl-DBI -BuildArch: noarch -Group: Networking/Utilities %description scripts This package contains scripts to integrate LMS with your system, @@ -88,49 +96,215 @@ lms-mgc. Ten pakiet zawiera skrypty do zintegrowania LMS z systemem, naliczania comiesiêcznych op³at, powiadamiania u¿ytkowników o ich zad³u¿eniu oraz ich automagicznego od³±czania. Mo¿esz tak¿e zbudowaæ prawdopodobnie -ka¿dy typ pliku konfiguracyjnego przy u¿yciu lms-mgc. +ka¿dy typ pliku konfiguracyjnego przy u¿yciu lms-mgc; + +%package sqlpanel +Summary: LAN Managment System - sqlpanel module +Summary(pl): LAN Managment System - modu³ sqlpanel +Group: Networking/Utilities +Requires: %{name} = %{version}-%{release} + +%description sqlpanel +SQL-panel module allows you to execute SQL queries and directly modify +data. + +%description sqlpanel -l pl +Modu³ 'SQL - panel' daje mo¿liwo¶æ bezpo¶redniego dostêpu do bazy +danych poprzez zadawanie zapytañ SQL. Wyniki wy¶wietlane s± w formie +tabeli. Ponadto podawany jest czas wykonania zapytania. + +%package user +Summary: LAN Managment System - simple user interface +Summary(pl): LAN Managment System - prosty interfejs u¿ytkownika +Group: Networking/Utilities +Requires: %{name} = %{version}-%{release} + +%description user +Simple user interface. + +%description user -l pl +Prosty interfejs u¿ytkownika. + +%package almsd +Summary: LAN Managment System - LMS system backend +Summary(pl): LAN Managment System - backend systemu LMS +Group: Networking/Utilities +Requires: %{name} = %{version}-%{release} + +%description almsd +A program to manage the server by creating configuration files based +upon LMS database and restarting selected services. + +%description almsd -l pl +Program zarz±dzaj±cy serwerem poprzez tworzenie plików +konfiguracyjnych na podstawie bazy danych LMS'a i restartowanie +wybranych us³ug. %prep %setup -q -n %{name} %patch0 -p1 +%ifarch amd64 +%patch1 -p1 +%endif +%patch2 -p1 + +%build +%if %{with almsd} + +cd daemon + +./configure --with-mysql +%{__make} \ + CC='%{__cc}' CFLAGS='%{rpmcflags} -fPIC -DUSE_MYSQL -I../..' +mv almsd almsd-mysql + +rm db.o + +./configure --with-pgsql +%{__make} almsd \ + CC='%{__cc}' \ + CFLAGS='%{rpmcflags} -fPIC -DUSE_PGSQL -I../..' +mv almsd almsd-pgsql + +cd .. +%endif %install rm -rf $RPM_BUILD_ROOT -install -d $RPM_BUILD_ROOT%{_lmsdir}/img -install -d $RPM_BUILD_ROOT%{_datadir}/%{name} -install -d $RPM_BUILD_ROOT%{_bindir} -install -d $RPM_BUILD_ROOT%{_sysconfdir}/%{name} -install -d $RPM_BUILD_ROOT%{_sharedstatedir}/%{name}/{backups,templates_c} -install -d $RPM_BUILD_ROOT%{_libexecdir}/%{name}/{lib,modules,templates} - -install *.php $RPM_BUILD_ROOT%{_lmsdir} -install bin/* $RPM_BUILD_ROOT%{_bindir} -install lib/* $RPM_BUILD_ROOT%{_libexecdir}/%{name}/lib -install img/* $RPM_BUILD_ROOT%{_lmsdir}/img -install modules/* $RPM_BUILD_ROOT%{_libexecdir}/%{name}/modules -install templates/* $RPM_BUILD_ROOT%{_libexecdir}/%{name}/templates -install sample/%{name}.ini $RPM_BUILD_ROOT%{_sysconfdir}/%{name} +install -d $RPM_BUILD_ROOT%{_sbindir} \ + $RPM_BUILD_ROOT/etc/{rc.d/init.d,sysconfig,httpd} \ + $RPM_BUILD_ROOT/etc/lms/modules/{dns,ggnofity,nofity} \ + $RPM_BUILD_ROOT{%{_lmsvar}/{backups,templates_c},/usr/lib/lms} \ + $RPM_BUILD_ROOT%{_lmsdir}/www/{img,doc,user,calendar} + +install *.php $RPM_BUILD_ROOT%{_lmsdir}/www +install img/* $RPM_BUILD_ROOT%{_lmsdir}/www/img +cp -r doc/html $RPM_BUILD_ROOT%{_lmsdir}/www/doc +cp -r lib contrib modules templates sample $RPM_BUILD_ROOT%{_lmsdir} +mv $RPM_BUILD_ROOT%{_lmsdir}/templates/calendar.html $RPM_BUILD_ROOT%{_lmsdir}/www/calendar +install bin/* $RPM_BUILD_ROOT%{_sbindir} + +install sample/%{name}.ini $RPM_BUILD_ROOT%{_sysconfdir} +install %{SOURCE1} $RPM_BUILD_ROOT/etc/httpd/%{name}.conf + +# sqlpanel +install contrib/sqlpanel/sql.php $RPM_BUILD_ROOT%{_lmsdir}/modules +install contrib/sqlpanel/*.html $RPM_BUILD_ROOT%{_lmsdir}/templates + +# user +install contrib/customer/* $RPM_BUILD_ROOT%{_lmsdir}/www/user + +# daemon +%if %{with almsd} +install daemon/almsd-* $RPM_BUILD_ROOT%{_sbindir} +install daemon/modules/*/*.so $RPM_BUILD_ROOT/usr/lib/lms +cp -r daemon/modules/dns/sample $RPM_BUILD_ROOT%{_sysconfdir}/modules/dns +cp -r daemon/modules/ggnotify/sample $RPM_BUILD_ROOT%{_sysconfdir}/modules/ggnotify +cp -r daemon/modules/dns/sample $RPM_BUILD_ROOT%{_sysconfdir}/modules/nofity +install %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/lmsd +install %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/%{name} +%endif %clean rm -rf $RPM_BUILD_ROOT +%post +if [ -f /etc/httpd/httpd.conf ] && ! grep -q "^Include.*%{name}.conf" /etc/httpd/httpd.conf; then + echo "Include /etc/httpd/%{name}.conf" >> /etc/httpd/httpd.conf + if [ -f /var/lock/subsys/httpd ]; then + /usr/sbin/apachectl restart 1>&2 + fi +elif [ -d /etc/httpd/httpd.conf ]; then + ln -sf /etc/httpd/%{name}.conf /etc/httpd/httpd.conf/99_%{name}.conf + if [ -f /var/lock/subsys/httpd ]; then + /usr/sbin/apachectl restart 1>&2 + fi +fi + +%post almsd +/sbin/chkconfig --add lmsd +if [ -f /var/lock/subsys/lmsd ]; then + /etc/rc.d/init.d/lmsd restart >&2 +else + echo "Run \"/etc/rc.d/init.d/lmsd start\" to start almsd daemon." +fi + +%preun +if [ "$1" = "0" ]; then + umask 027 + if [ -d /etc/httpd/httpd.conf ]; then + rm -f /etc/httpd/httpd.conf/99_%{name}.conf + else + grep -v "^Include.*%{name}.conf" /etc/httpd/httpd.conf > \ + /etc/httpd/httpd.conf.tmp + mv -f /etc/httpd/httpd.conf.tmp /etc/httpd/httpd.conf + fi + if [ -f /var/lock/subsys/httpd ]; then + /usr/sbin/apachectl restart 1>&2 + fi +fi + +%preun almsd +if [ "$1" = "0" ]; then + if [ -f /var/lock/subsys/lmsd ]; then + /etc/rc.d/init.d/lmsd stop >&2 + fi + /sbin/chkconfig --del lmsd +fi + +%triggerpostun -- %{name} <= 1.0.4 +echo "WARNING!!!" +echo "_READ_ and upgrade LMS database:" +echo "MySQL: /usr/share/doc/%{name}-%{version}/UPGRADE-1.0-1.5.mysql.gz" +echo "PostgreSQL: /usr/share/doc/%{name}-%{version}/UPGRADE-1.0-1.5.pgsql.gz" +echo + %files %defattr(644,root,root,755) -%doc doc/* sample/*.ini sample/*txt sample/rc.reminder_1st sample/crontab-entry +%doc doc/{AUTHORS,ChangeLog*,README,TODO,UPGRADE*,lms*} +%dir %{_sysconfdir} +%attr(640,root,http) %config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/*.ini +%config(noreplace) %verify(not size mtime md5) /etc/httpd/%{name}.conf +# +%dir %{_lmsvar} +%attr(770,root,http) %{_lmsvar}/backups +%attr(770,root,http) %{_lmsvar}/templates_c +# %dir %{_lmsdir} -%dir %{_libexecdir}/%{name} -%dir %{_sharedstatedir}/%{name} -%attr(770,root,http) %{_sharedstatedir}/%{name}/templates_c -%attr(770,root,http) %{_sharedstatedir}/%{name}/backups -%{_lmsdir}/*.php -%{_lmsdir}/img -%{_libexecdir}/%{name}/lib -%{_libexecdir}/%{name}/modules -%{_libexecdir}/%{name}/templates -%dir %{_sysconfdir}/%{name} -%config(noreplace) %verify(not size mtime md5) %{_sysconfdir}/%{name}/*.ini +%{_lmsdir}/www +%exclude %{_lmsdir}/www/user +%{_lmsdir}/lib +%{_lmsdir}/modules +%exclude %{_lmsdir}/modules/sql.php +%{_lmsdir}/contrib +%{_lmsdir}/sample +%attr(755,root,root) %{_lmsdir}/sample/traffic_ipt.sh +%{_lmsdir}/templates +%exclude %{_lmsdir}/templates/sql.html +%exclude %{_lmsdir}/templates/sqlprint.html %files scripts %defattr(644,root,root,755) -%attr(755,root,root) %{_bindir}/lms-* -%doc sample/*.ini +%dir %{_sbindir} +%attr(755,root,root) %{_sbindir}/* + +%files sqlpanel +%defattr(644,root,root,755) +%{_lmsdir}/modules/sql.php +%{_lmsdir}/templates/sql.html +%{_lmsdir}/templates/sqlprint.html + +%files user +%defattr(644,root,root,755) +%{_lmsdir}/www/user + +%if %{with almsd} +%files almsd +%defattr(644,root,root,755) +%doc daemon/{lms.ini.sample,TODO} +%attr(755,root,root) %{_sbindir}/almsd-* +%attr(755,root,root) /usr/lib/lms/*.so +%attr(754,root,root) /etc/rc.d/init.d/lmsd +/etc/lms/modules/* +%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/%{name} +%endif