]> git.pld-linux.org Git - packages/lms.git/blobdiff - lms.spec
- updated to 1.4.3,
[packages/lms.git] / lms.spec
index 5fd862652b4830ecaa457642647963162be195d2..01ba5a819303a653e2aa97c6e8088d82fe51d686 100644 (file)
--- a/lms.spec
+++ b/lms.spec
@@ -1,57 +1,69 @@
-%define                _add pre5
+#
+# 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
-Release:       0.2.%{_add}
+Version:       %{lmsver}.%{lmssubver}
+Release:       0.1
 License:       GPL
+Vendor:                LMS Developers
 Group:         Networking/Utilities
-Source0:       http://lms.rulez.pl/download/%{name}-%{version}%{_add}.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:      mysql
-Requires:      perl-POSIX
-Requires:      perl-Getopt-Long
-Requires:      perl-Net-SMTP-Server
-Requires:      perl-Config-IniFiles
-Requires:      perl-DBI
-Requires:      perl-DBD-mysql
-Requires:      perl-DBD-Pg
-Requires:      Smarty
-Requires:      ADOdb
-BuildArch:     noarch
+Requires:      Smarty >= 2.5.0
 BuildRoot:     %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
-%define                _lmsdir /home/services/httpd/html/%{name}
+%define                _sysconfdir     /etc/%{name}
+%define                _lmsdir         %{_datadir}/%{name}
+%define                _lmsvar         /var/lib/%{name}
 
 %description
-This is a package of applications in PHP and Perl to managing LANs.
-It's using MySQL (for now) but PostgreSQL will be supported in near
-future. Main foundation is get the best service of users at
-providiers level.
-The main sign in LMS are:
-- database of users (name, surname, address, telefon number, 
+This is a package of applications in PHP and Perl for managing LANs.
+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,40 +72,239 @@ 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;
-- integracja z pakietem LinuxStat;
-- 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 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
+
+%description scripts
+This package contains scripts to integrate LMS with your system,
+monthly billing, notify users about their debts and cutting off
+customers. Also you can build propably any kind of config file using
+lms-mgc.
+
+%description scripts -l pl
+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;
+
+%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 lms
+%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,lib,modules,templates,templates_c}
-install -d $RPM_BUILD_ROOT%{_datadir}/%{name}
-install -d $RPM_BUILD_ROOT%{_bindir}/
+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 *.php $RPM_BUILD_ROOT%{_lmsdir}
-install -d {img,lib,modules,templates,templates_c} $RPM_BUILD_ROOT%{_lmsdir}
-install -d backup $RPM_BUILD_ROOT%{_localstatedir}/%{name}/
-install bin/* $RPM_BUILD_ROOT%{_bindir}/
+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
+%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}
-%attr(770,root,http) %{_lmsdir}/templates_c
-%{_lmsdir}/*.php
-%{_lmsdir}/img
+%{_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
-%{_localstatedir}/%{name}
-%{_bindir}/lms-*
+%exclude %{_lmsdir}/templates/sql.html
+%exclude %{_lmsdir}/templates/sqlprint.html
+
+%files scripts
+%defattr(644,root,root,755)
+%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
This page took 0.135006 seconds and 4 git commands to generate.