Sisyphus
: 1 2023 | : 18631 | : 37044605
en ru br
ALT

::
: sp

             Sources      Gear   Bugs and FR  Repocop 

Name:           sp
Version:        5.2.1
Release:        alt21
Summary:        School Portal
Summary(ru):    Школьный портал
License:        Distributable, non-free
Group:          Education
Url:            http://spcms.ru
Packager:       Andrey Stroganov <dja at altlinux.org>
Source:         sp-5.2.1.tar
BuildRequires:  fpc
Requires:       perl-base perl-CGI perl-CGI-Session perl-Archive-Zip perl-GD perl-GD-Graph perl-CGI-SpeedyCGI perl-Magick perl-Mail-Sender perl-Text-Iconv perl-DBD-InterBase perl-HTML-TagFilter pwgen perl-IO-Compress xinetd mpg123 perl-libwww
Requires: apache2 firebird-classic squid-server net-tools apache2-base
Autoprov:       0
Autoreq:        0

# for UDF, because:

# verify-elf: ERROR: ./usr/lib/firebird/UDF/UDFLib.dll: TEXTREL entry found: 0x00000000
%set_verify_elf_method textrel=relaxed

# -------------------------------------------

# Описание на английском
# -------------------------------------------
%description
Integrated school control system.

# -------------------------------------------

# Описание на русском
# -------------------------------------------
%description -l ru
Комплексная система управления школой.

# add by snejok at

# -------------------------------------------
# Распаковываем
# -------------------------------------------
%prep
%setup
# Build UDFlib for Firebird
mkdir -p usr/lib/firebird/UDF/
cd UDFlib-src
fpc -Mdelphi -Xc -Cccdecl UDFLib.dpr -oUDFLib.dll
mv UDFLib.dll ..
cd ..
rm -rf UDFlib-src
# пусть расширение .dll вас не смущает. давным-давно у нас firebird был на винде,
# соответственно UDF собирался для винды, назван был с расширением .dll,
# для Linux название бинарника сохранено из соображений "чтобы не перелопачивать базу",
# бинарник для Linux здесь нативный

# -------------------------------------------

# Установка. Устанавливаем всё, что нужно в $RPM_BUILD_ROOT как в /
# -------------------------------------------
%install
# mkdir -p %buildroot/
mkdir -p %buildroot/var/www/cgi-bin/sp/
mkdir -p %buildroot/var/www/html/sp/
mkdir -p %buildroot/var/www/html/sp/tmp/{img_report_links,img_report_parallel,img_report_school,img_report_teacher,img_subgrp,img_subj}

# add by snejok at

cp -r * %buildroot/

# UDFlib

mkdir -p      %buildroot/%_libdir/firebird/UDF/
mv UDFLib.dll %buildroot/%_libdir/firebird/UDF/UDFLib.dll

# -------------------------------------------

# Список файлов, которые попадут в пакет
# -------------------------------------------
%files
%defattr(440, apache2, apache2, 755)
%attr(640,apache2,mail)      %config(noreplace) /var/www/cgi-bin/sp/sp.conf
%dir /var/lib/firebird/xxi/
%attr(660,firebird,firebird) %config(noreplace) /var/lib/firebird/xxi/*
%attr(440,firebird,firebird) %_libdir/firebird/UDF/UDFLib.dll
%attr(640,apache2,apache2)     /var/www/html/.htaccess
%attr(640,apache2,apache2)     %config /etc/httpd2/conf/sites-available/000-sp.conf
%attr(640,apache2,apache2)     %config /etc/httpd2/conf/mods-start.d/900-sp.conf
%attr(640,apache2,apache2)     %config /etc/httpd2/conf/sites-start.d/000-sp.conf
%attr(750,root,root)         %config /etc/xinetd.d/sphelper
%attr(750,root,root)         /usr/sbin/sp-add-admin
%attr(750,root,root)         /usr/sbin/sphelper.pl
%attr(444,root,root) %doc /usr/share/doc/sp/LICENSE
%attr(444,root,root) %doc /usr/share/doc/sp/LICENSE.alt
%attr(444,root,root) %doc /usr/share/doc/sp/README
%dir /var/www/cgi-bin/sp/
%dir /var/www/html/sp/
%dir /usr/share/doc/sp/
/var/www/cgi-bin/sp/*
/var/www/cgi-bin/sp/.htaccess
/var/www/html/sp/*
/var/www/html/sp/.htaccess
%ghost %attr(640,apache2,squid) /var/www/sp_htpasswd
%ghost %attr(640,apache2,squid) /var/www/sp_users_allowed

# -------------------------------------------

# Команды, выполняющиеся после распаковки файлов из пакета при установке на целевую систему
# -------------------------------------------
%post

# ниже есть команды с относительными путями, для простоты переход делается в первую очередь

cd /var/www/cgi-bin/sp/

# -----------------------------------------------------------

# Firebird классик:
# -----------------------------------------------------------
#chown -R firebird:firebird /var/lib/firebird/xxi/
#chmod 660 /var/lib/firebird/xxi/*.*
#chmod 755 /usr/lib/firebird/UDF/UDFLib.dll

# снимаем ограничение на 5 коннектов к fb

if ! grep -q "per_source = UNLIMITED" /etc/xinetd.d/firebird; then
echo "Disabling connect count limitation in /etc/xinetd.d/firebir"
perl -i -p -e 's/^\s*disable\s+=\s+no$/disable = no\nper_source = UNLIMITED/' /etc/xinetd.d/firebird
fi

# без этого classic просто не работает, а нужен здесь и сейчас

# boris: если xinetd запущен не был, то его надо запустить руками -- такая идеология
# перезапуск по причинам:
# 1) чтобы xinetd заработал, если не работал
# 2) если xinetd работал, чтобы узнал о том, что теперь у нас есть fb
# 3) если xinetd и fb были установлены до нас и всё работало, ничего страшного
# service xinetd restart

# если xinetd не был стартован, стартуем, делаем своё, опускаем как было


# в каком состоянии xinetd?

#if service xinetd status; then
#    XINETD_WAS_STARTED=1
#else
#    XINETD_WAS_STARTED=0
#fi

# xinetd...

#if [ "$XINETD_WAS_STARTED" -eq "0" ]; then
#    # не был стартован
#    echo Temporary starting xinetd...
#    service xinetd start
#else
#    # был стартован. заставляем подхватить конфиг fb
#    echo xinetd in running, restarting to ensure fb config read...
#    service xinetd restart
#fi

# по умолчанию fb нет в автозапуске, включаем

# chkconfig firebird on

# -----------------------------------------------------------

# Apache
# -----------------------------------------------------------
#echo "Turning on apache modules: cgi rewrite deflate headers"
#APACHE_SP_CONF='/etc/httpd2/conf/mods-start.d/900-sp.conf'
#if ! grep -q 'cgi=yes'        $APACHE_SP_CONF; then
# echo 'cgi=yes'         >> $APACHE_SP_CONF
#fi

# a2enmod cgi

# a2enmod rewrite
# a2enmod deflate
# a2enmod headers

# echo "Setting School Portal as default site..."


# Выключем "It Works!"

# /usr/sbin/a2dissite 000-default
# if [ -e /etc/httpd2/conf/sites-start.d/000-default.conf ]; then
# mv -vf /etc/httpd2/conf/sites-start.d/000-default.conf /etc/httpd2/conf/sites-start.d/000-default.conf-disabled
# # rm -f /etc/httpd2/conf/sites-start.d/000-default.conf
# fi

# Включаем SP

# /usr/sbin/a2ensite 000-sp

# echo "Turning off ServerTokens Full in Apache for better security"

# perl -i-original -p -e 's/^ServerTokens Full$/ServerTokens Prod/' /etc/httpd2/conf/extra-available/httpd-default.conf
# echo "Current Apache config file saved: /etc/httpd2/conf/extra-available/httpd-default.conf-original"

chown apache2.apache2 /var/www/html/.htaccess

# chkconfig httpd2 on

# service httpd2 restart

# не нужно, т. к. в ALT переехали на файлтриггеры

# http://www.altlinux.org/Apache2/modulespec#.D0.A1.D0.BA.D1.80.D0.B8.D0.BF.D1.82.D1.8B_.25post.2F.25preun
# service httpd2 condrestart

# полный перенос функциональности в sp-helper не состоялся, всё ещё нужно как минимум для управления squid-ом

chsh -s /bin/bash apache2


# Действие ($1)                     Значение параметра

# ====================================================
# Установка в первый раз            1
# Обновление                        2 или больше
# Удаление последней версии пакета  0

# -------------------------------

# Базы
# -------------------------------

# Для ALT Linux XXI поставляется предварительно опорталенной


# выполнять только если установка в первый раз

if [ "$1" -eq 1 ]; then
echo 'Clean databases installed'
# в альте базы требуют складывать не как принято у нас,
# конфиг отныне будем класть как для всех, но патчить его после установки в пакетах для альта
perl -i -p -e 's!/opt/xxi/data/!/var/lib/firebird/xxi/!' /var/www/cgi-bin/sp/sp.conf
else
# обновление структуры базы
perl update-db.pl sp.conf
fi

# больше не нужны

rm -f -- update-sql.pl update-db.pl

# xinetd не был стартован изначально, укладываем как было

#if [ "$XINETD_WAS_STARTED" -eq "0" ]; then
#    echo xinetd was stopped befor sp. Stopping back...
#    service xinetd stop
#fi

# -----------------------------------------------------------

# Squid: управление доступом в интернет
# -----------------------------------------------------------

if ! grep -q "^acl sp_users_allowed" /etc/squid/squid.conf; then
# правим конфиг кальмара
echo "Setting up internet access control..."
perl -i-original -p -e 's!^icap_enable on!icap_enable off!; s!^auth_param!#auth_param!; s!^acl password proxy_auth REQUIRED!#acl password proxy_auth REQUIRED!; s!^http_access deny all!#http_access deny all!; s!^http_access allow password!#http_access allow password!; s!^htcp_access allow localnet!#htcp_access allow localnet!' /etc/squid/squid.conf

echo '
# ==============================
# School Portal Internet Control
# To disable replace /etc/squid/squid.conf with /etc/squid/squid.conf-original
# ==============================
auth_param basic program /usr/lib/squid/ncsa_auth /var/www/sp_htpasswd
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive on
acl sp_users_allowed proxy_auth "/var/www/sp_users_allowed"
http_access allow sp_users_allowed
http_access deny all
' >> /etc/squid/squid.conf
echo "Current Squid config saved: /etc/squid/squid.conf-original"
fi

# полный перенос функциональности в sp-helper не состоялся

# управление squid-ом пока выполняется от имени юзера apache2
usermod -G wheel,_webserver apache2
# чтобы было безопасно поставить второй раз, сначала проверим, потом допишем
# TODO: если допиливание sp-helper затянется, посмотреть в сторону переезда на /etc/sudoers.d
APACHE_SUDOER_LINE='apache2      ALL=(ALL)       NOPASSWD: /usr/sbin/smbldap-useradd,/usr/sbin/smbldap-passwd,/usr/sbin/smbldap-usermod,/usr/sbin/smbldap-groupadd,/usr/bin/ldapsearch,/usr/bin/ldapmodify,/bin/touch,/bin/chmod,/etc/init.d/squid reload'
if ! grep -q "$APACHE_SUDOER_LINE" /etc/sudoers; then
echo "$APACHE_SUDOER_LINE" >> /etc/sudoers
echo "/etc/sudoers modified for LDAP integration and Squid control"
echo "Added line: $APACHE_SUDOER_LINE"
fi

# выполнять только если установка в первый раз

if [ "$1" -eq 1 ]; then
echo 'auth = basic'                                 >> /var/www/cgi-bin/sp/sp.conf
echo 'htpasswd = /var/www/sp_htpasswd'              >> /var/www/cgi-bin/sp/sp.conf
echo 'sp_users_allowed = /var/www/sp_users_allowed' >> /var/www/cgi-bin/sp/sp.conf
fi

# выполнять только если установка в первый раз

if [ "$1" -eq 1 ]; then
# По дефолту никому в инет нельзя
# для этого добавим юзера с неугадываемым паролем
SP_HTPASSWD=$(pwgen --secure 32 1)
/usr/bin/htpasswd -cb /var/www/sp_htpasswd sp_dummy_user $SP_HTPASSWD
echo 'sp_dummy_user' >> /var/www/sp_users_allowed
fi

# chkconfig squid on

# service squid restart
service squid condrestart

# -----------------------------------------------------------

# SP-Helper
# -----------------------------------------------------------
SPHELPER_SERVICES_LINE='sphelper 7890/tcp'
if ! grep -q "$SPHELPER_SERVICES_LINE" /etc/services; then
echo "$SPHELPER_SERVICES_LINE" >> /etc/services
fi
# service xinetd restart

# gallery

# выполнять только если нет папки галереи
if [ ! -e /var/www/html/sp/pic/gallery ]; then
mkdir -p \
   /var/www/html/sp/pic/gallery \
   /var/www/html/sp/pic/gallery.thumbs \
   /var/www/html/sp/pic/gallery.resize

chown root:root \
   /var/www/html/sp/pic/gallery
chmod 777 \
   /var/www/html/sp/pic/gallery

chown apache:apache \
   /var/www/html/sp/pic/gallery.thumbs \
   /var/www/html/sp/pic/gallery.resize
chmod 775 \
   /var/www/html/sp/pic/gallery.thumbs \
   /var/www/html/sp/pic/gallery.resize
fi

# -----------------------------------------------------------

# SP Setup
# -----------------------------------------------------------
perl setup.pl --yes

# -----------------------------------------------------------

# Интеграция с LDAP
#
# Сегодня, 12 сен 2011, при установке ALT Linux 6 rc1 как сервера
# LDAP не настроен
#
# в 5.0 уберём в любом случае
# upd: теперь у нас есть sp-helper, но в комментах оставляем, вдруг настроенный ldap вернётся в следующих версиях ALT
# -----------------------------------------------------------

# mv -f /var/www/cgi-bin/sp/smbldap-passwd /usr/sbin/smbldap-passwd

# chown root.root /usr/sbin/smbldap-passwd /sbin/sp-ldap-setup
# chmod 755 /usr/sbin/smbldap-passwd /sbin/sp-ldap-setup

# выполнять только если установка в первый раз

# if [ "$1" -eq 1 ]; then
# sp-ldap-setup
# fi

if [ "$1" -eq 1 ]; then
echo
echo '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
echo '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
echo '!!!                                                              !!!'
echo '!!!       School Portal installed.                               !!!'
echo '!!!       Direct your browser to this server to log in.          !!!'
echo '!!!                                                              !!!'
echo '!!!       Login:    admin                                        !!!'
echo '!!!       password: smenimenya                                   !!!'
echo '!!!                                                              !!!'
echo '!!!       CHANGE PASSWORD NOW!                                   !!!'
echo '!!!                                                              !!!'
echo '!!!       Alphabet book: http://spcms.ru/download#abook          !!!'
echo '!!!       Support:       http://spcms.ru                         !!!'
echo '!!!                                                              !!!'
echo '!!!       Please, read in russian: /usr/share/doc/sp/README      !!!'
echo '!!!                                                              !!!'
echo '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
echo '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
echo 'If not sure what to type in browser, try:'
ifconfig | awk '/inet addr/ {print $2}' | awk -F ':' '{print "http://" $2}'
echo
else
echo '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
echo '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
echo '!!!                                                                   !!!'
echo '!!!           School Portal Updated.                                  !!!'
echo '!!!                                                                   !!!'
echo '!!!           Support:                                                !!!'
echo '!!!           http://spcms.ru                                         !!!'
echo '!!!                                                                   !!!'
echo '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
echo '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!'
fi

# -------------------------------------------

# Команды, выполняющиеся после при удалении пакета
# -------------------------------------------
%preun

# возвращаем всё как было

# mv /etc/httpd2/conf/sites-start.d/000-default.conf-disabled /etc/httpd2/conf/sites-start.d/000-default.conf
# a2ensite  default
# a2dissite 000-sp

%changelog

changelog

 
: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
: Michael Shigorin