# TODO
# - merge dstreamserv.spec
Summary: Darwin Streaming Server
Name: dss
Version: 6.0.3
Release: 0.15
License: Apple Public Source License
Group: Networking/Daemons
Source0: http://dss.macosforge.org/downloads/DarwinStreamingSrvr%{version}-Source.tar
# Source0-md5: ca676691db8417d05121699c0ca3d549
Source1: %{name}.init
Source2: %{name}-admin.init
Source3: README.utils
Patch0: %{name}.patch
Patch1: %{name}-x86_64.patch
Patch2: optflags.patch
Patch3: compile.patch
Patch4: gcc43.patch
URL: http://dss.macosforge.org/
BuildRequires: libstdc++-devel
BuildRequires: rpm-perlprov >= 4.1-13
BuildRequires: rpmbuild(macros) >= 1.228
Requires(post,preun): /sbin/chkconfig
Requires(postun): /usr/sbin/groupdel
Requires(postun): /usr/sbin/userdel
Requires(pre): /bin/id
Requires(pre): /usr/bin/getgid
Requires(pre): /usr/sbin/groupadd
Requires(pre): /usr/sbin/useradd
Requires: rc-scripts
Provides: group(qtss)
Provides: user(qtss)
Obsoletes: DSS
Obsoletes: dstreamserv
Obsoletes: dstreamsrv
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
#define specflags -Werror -Wno-write-strings
%description
Darwin Streaming Server lets you stream digital video on the Internet
using industry-standard Internet protocols RTP and RTSP.
Using Darwin Streaming Server you can serve stored files (video on
demand) or reflect live broadcasts to thousands of QuickTime 4 or
later users. With its combination of industry-standard streaming
protocols and cutting-edge compression technologies, QuickTime
delivers perfectly synchronized audio and video streams ideal for
Internet video and live events.
%description -l pl.UTF-8
Serwer strumieni pozwala wysyłać strumienie danych QuickTime do
klientów w Internecie przy użyciu protokołów RTP i RTSP.
%package Proxy
Summary: Apple's Darwin Streaming Proxy
Group: Daemons
Requires: %{name} = %{version}-%{release}
%description Proxy
The Darwin Streaming Proxy is an application specific proxy which
would normally be run in a border zone or perimeter network. It is
used to give client machines within a protected network access to
streaming servers outside that network, in the case when the firewall
blocks RTSP connections or RTP/UDP data flow. The firewall perimeter
network is usually configured to allow:
- RTSP connections from within the network, as long as the destination
is the proxy
- RTSP connections to outside the network, as long as the source is
the proxy
- RTP datagrams to and from the proxy to the inner network
- RTP datagrams to and from the proxy to the outside
%package utils
Summary: Apple's Darwin Streaming Server Movie inspection utilities
Group: Applications
Requires: %{name} = %{version}-%{release}
%description utils
Apple's Darwin Streaming Server Movie inspection utilities.
%package samples
Summary: Darwin Streaming Server - samples
Summary(pl.UTF-8): Przykłady do Darwin Streaming Servera
Group: Networking/Daemons
Requires: %{name} = %{version}-%{release}
Obsoletes: dstreamserv-samples
%description samples
Sample files for Streaming Server.
%description samples -l pl.UTF-8
Przykładowe pliki do Darwin Streaming Servera.
%prep
%setup -q -n DarwinStreamingSrvr%{version}-Source
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
#%patch4 -p1
cp -p %{SOURCE3} .
# patch streamingadminserver.pl
%{__sed} -i.bak -e '
s|/''usr/local/movies|/var/lib/%{name}/movies|g
s|/''usr/local/sbin/StreamingServerModules|%{_libdir}/%{name}/|g
s|/''usr/local/|%{_prefix}/|g
s|/''etc/streaming|%{_sysconfdir}/%{name}|g
s|/var/streaming/AdminHtml|%{_datadir}/%{name}/AdminHtml|g
s|/var/streaming/logs|/var/log/%{name}|g
s|/var/streaming/|/var/lib/%{name}/|g
s||qtss|
s||qtss|
' DSS_MakeRoot streamingserver.xml-POSIX \
WebAdmin/src/streamingadminserver.pl \
WebAdmin/WebAdminHtml/adminprotocol-lib.pl
# patch manpages
%{__sed} -i -e '
s|/Library/QuickTimeStreaming/Config/|%{_sysconfdir}/%{name}/|g
s|/Library/QuickTimeStreaming/Modules|%{_libdir}/%{name}|g
s|/Library/QuickTimeStreaming/Movies|/var/lib/%{name}/movies|g
s|/Library/QuickTimeStreaming/Playlists|/var/lib/%{name}/playlists|g
s|/Library/QuickTimeStreaming/Logs|/var/log/%{name}|g
s|/Library/QuickTimeStreaming/Docs|%{_docdir}/%{name}-%{version}|g
s|QuickTimeStreamingServer|DarwinStreamingServer|g
' Documentation/man/qtss/*
cat > defaultPaths.h << 'EOF'
#define DEFAULTPATHS_DIRECTORY_SEPARATOR "/"
#define DEFAULTPATHS_ROOT_DIR "/var/lib/%{name}/"
#define DEFAULTPATHS_ETC_DIR "%{_sysconfdir}/%{name}/"
#define DEFAULTPATHS_ETC_DIR_OLD "%{_sysconfdir}/"
#define DEFAULTPATHS_SSM_DIR "%{_libdir}/%{name}/"
#define DEFAULTPATHS_LOG_DIR "/var/log/%{name}/"
#define DEFAULTPATHS_PID_DIR "/var/run/"
#define DEFAULTPATHS_MOVIES_DIR "/var/lib/%{name}/movies/"
EOF
#%undos -f cpp
#find -name '*.cpp' | xargs sed -i -re 's/char\s*\*\s*(\w+)\s*= "/const char* \1 = "/g'
%build
export ARCH="%{_target_cpu}"
export CC="%{__cc}"
export CFLAGS="%{rpmcflags}"
export CXX="%{__cxx}"
export CXXFLAGS="%{rpmcxxflags}"
export LDFLAGS="%{rpmldflags}"
jobs=$(echo %{_smp_mflags} | cut -dj -f2)
./Buildit ${jobs:+--jobs=$jobs}
%install
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT{/etc/rc.d/init.d,/var/lib/%{name},%{_mandir}/man{1,8}}
./DSS_MakeRoot \
$RPM_BUILD_ROOT
install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}
install -p %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}-admin
# avoid extension
mv $RPM_BUILD_ROOT%{_sbindir}/streamingadminserver{.pl,}
# utils
install -p QTFileTools/QTBroadcaster.tproj/QTBroadcaster $RPM_BUILD_ROOT%{_bindir}
install -p QTFileTools/QTFileInfo.tproj/QTFileInfo $RPM_BUILD_ROOT%{_bindir}
install -p QTFileTools/QTFileTest.tproj/QTFileTest $RPM_BUILD_ROOT%{_bindir}
install -p QTFileTools/QTRTPFileTest.tproj/QTRTPFileTest $RPM_BUILD_ROOT%{_bindir}
install -p QTFileTools/QTRTPGen.tproj/QTRTPGen $RPM_BUILD_ROOT%{_bindir}
install -p QTFileTools/QTSampleLister.tproj/QTSampleLister $RPM_BUILD_ROOT%{_bindir}
install -p QTFileTools/QTSDPGen.tproj/QTSDPGen $RPM_BUILD_ROOT%{_bindir}
install -p QTFileTools/QTTrackInfo.tproj/QTTrackInfo $RPM_BUILD_ROOT%{_bindir}
# modules
install -p APIModules/QTSSRawFileModule.bproj/QTSSRawFileModule $RPM_BUILD_ROOT%{_libdir}/%{name}
# config
cp -a qtaccess $RPM_BUILD_ROOT%{_sysconfdir}/%{name}
# Create our default admin user and remove Apple's
# Default login is root/pld -- please change it!
qtpasswd="\
$RPM_BUILD_ROOT%{_bindir}/qtpasswd \
-f $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/qtusers
-g $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/qtgroups"
$qtpasswd root -p pld -A admin
$qtpasswd -F -d 'aGFja21l'
mv $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/relayconfig.xml{-Sample,}
rm $RPM_BUILD_ROOT%{_sysconfdir}/%{name}/streamingserver.xml-sample
# streamingadminserver
cp -a WebAdmin/streamingadminserver.pem $RPM_BUILD_ROOT%{_sysconfdir}/%{name}
# doc
cp -a Documentation/*.1 $RPM_BUILD_ROOT%{_mandir}/man1
cp -a Documentation/man/qtss/*.1 $RPM_BUILD_ROOT%{_mandir}/man1
cp -a Documentation/man/qtss/createuserstreamingdir.8 $RPM_BUILD_ROOT%{_mandir}/man8
cp -a Documentation/man/qtss/QuickTimeStreamingServer.8 $RPM_BUILD_ROOT%{_mandir}/man8/DarwinStreamingServer.8
cp -a Documentation/man/qtss/streamingadminserver.pl.8 $RPM_BUILD_ROOT%{_mandir}/man8/streamingadminserver.8
rm $RPM_BUILD_ROOT/var/lib/%{name}/3rdPartyAcknowledgements.rtf
rm $RPM_BUILD_ROOT/var/lib/%{name}/readme.txt
# provide ghost logs...
touch $RPM_BUILD_ROOT/var/log/%{name}/Error.log
touch $RPM_BUILD_ROOT/var/log/%{name}/StreamingServer.log
touch $RPM_BUILD_ROOT/var/log/%{name}/mp3_access.log
touch $RPM_BUILD_ROOT/var/log/%{name}/server_status
touch $RPM_BUILD_ROOT/var/log/%{name}/streamingadminserver.log
%clean
rm -rf $RPM_BUILD_ROOT
%pre
%groupadd -f -g 148 qtss
%useradd -g qtss -d /tmp -u 148 -s /bin/false qtss
%post
for a in StreamingServer.log mp3_access.log server_status streamingadminserver.log; do
log=/var/log/%{name}/$a
if [ ! -f $log ]; then
install -o root -g qtss -m 0660 /dev/null $log
fi
done
/sbin/chkconfig --add %{name}
/sbin/chkconfig --add %{name}-admin
%service %{name} restart
%service %{name}-admin restart
if [ "$1" = "1" ]; then
%banner %{name} -e <<-EOF
Default admin username/password is root/pld. Set a password for it or, better
delete it and create new admin username and password (using qtpasswd)
Access admin interface at:
http://localhost:1220/
EOF
fi
%preun
if [ "$1" = "0" ]; then
%service -q %{name} stop
%service -q %{name}-admin stop
/sbin/chkconfig --del %{name}
/sbin/chkconfig --del %{name}-admin
fi
%postun
if [ "$1" = "0" ]; then
%userremove qtss
%groupremove qtss
fi
%files
%defattr(644,root,root,755)
%doc APPLE_LICENSE ReleaseNotes.txt
%doc Documentation/3rdPartyAcknowledgements.rtf
%doc Documentation/AboutQTFileTools.html
%doc Documentation/AboutTheSource.html
%doc Documentation/admin-protocol-README.txt
%doc Documentation/CachingProxyProtocol-README.txt
%doc Documentation/DevNotes.html
%doc Documentation/draft-serenyi-avt-rtp-meta-00.txt
%doc Documentation/DSS_QT_Logo_License.pdf
%doc Documentation/License.rtf
%doc Documentation/QTSSAPIDocs.pdf
%doc Documentation/ReadMe.rtf
%doc Documentation/readme.txt
%doc Documentation/ReliableRTP_WhitePaper.rtf
%doc Documentation/RTSP_Over_HTTP.pdf
%dir %{_sysconfdir}/%{name}
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/qtgroups
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/qtusers
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/relayconfig.xml
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/streamingloadtool.conf
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/streamingserver.xml
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/qtaccess
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/%{name}/streamingadminserver.pem
%attr(754,root,root) /etc/rc.d/init.d/dss
%attr(754,root,root) /etc/rc.d/init.d/dss-admin
%attr(755,root,root) %{_bindir}/MP3Broadcaster
%attr(755,root,root) %{_bindir}/PlaylistBroadcaster
%attr(755,root,root) %{_bindir}/StreamingLoadTool
%attr(755,root,root) %{_bindir}/createuserstreamingdir
%attr(755,root,root) %{_bindir}/qtpasswd
%attr(755,root,root) %{_sbindir}/DarwinStreamingServer
%attr(755,root,root) %{_sbindir}/streamingadminserver
%{_mandir}/man1/*
%{_mandir}/man8/*
%dir %{_libdir}/%{name}
%attr(755,root,root) %{_libdir}/%{name}/QTSSHomeDirectoryModule
%attr(755,root,root) %{_libdir}/%{name}/QTSSRefMovieModule
%attr(755,root,root) %{_libdir}/dss/QTSSRawFileModule
%dir /var/lib/%{name}
%dir /var/lib/%{name}/movies
%dir /var/log/%{name}
%attr(644,qtss,qtss) %verify(not md5 mtime size) %ghost /var/log/%{name}/Error.log
%attr(644,qtss,qtss) %verify(not md5 mtime size) %ghost /var/log/%{name}/StreamingServer.log
%attr(644,qtss,qtss) %verify(not md5 mtime size) %ghost /var/log/%{name}/mp3_access.log
%attr(644,qtss,qtss) %verify(not md5 mtime size) %ghost /var/log/%{name}/server_status
%attr(644,qtss,qtss) %verify(not md5 mtime size) %ghost /var/log/%{name}/streamingadminserver.log
# admin server (subpackage?)
%dir %{_datadir}/%{name}
%dir %{_datadir}/%{name}/AdminHtml
%{_datadir}/%{name}/AdminHtml/html_en
%{_datadir}/%{name}/AdminHtml/images
%{_datadir}/%{name}/AdminHtml/includes
%{_datadir}/%{name}/AdminHtml/*.html
%{_datadir}/%{name}/AdminHtml/*.pl
%attr(755,root,root) %{_datadir}/%{name}/AdminHtml/*.cgi
%files utils
%defattr(644,root,root,755)
%doc README.utils
%attr(755,root,root) %{_bindir}/QTBroadcaster
%attr(755,root,root) %{_bindir}/QTFileInfo
%attr(755,root,root) %{_bindir}/QTFileTest
%attr(755,root,root) %{_bindir}/QTRTPFileTest
%attr(755,root,root) %{_bindir}/QTRTPGen
%attr(755,root,root) %{_bindir}/QTSDPGen
%attr(755,root,root) %{_bindir}/QTSampleLister
%attr(755,root,root) %{_bindir}/QTTrackInfo
%files samples
%defattr(644,root,root,755)
/var/lib/%{name}/movies/*