2007-04-12 20:24:50 +00:00
#!/usr/local/bin/perl
# Build an RPM package of Webmin
2018-11-25 17:15:32 -08:00
if ( - d "$ENV{'HOME'}/redhat" ) {
$ base_dir = "$ENV{'HOME'}/redhat" ;
}
elsif ( - d "$ENV{'HOME'}/rpmbuild" ) {
$ base_dir = "$ENV{'HOME'}/rpmbuild" ;
2007-04-12 20:24:50 +00:00
}
else {
$ base_dir = "/usr/src/redhat" ;
2021-06-16 09:59:51 +03:00
$< && die "makerpm.pl must be run as root" ;
2007-04-12 20:24:50 +00:00
}
2024-12-31 17:22:05 +02:00
$ rpm_maintainer = $ ENV { 'RPM_MAINTAINER' } || "Jamie Cameron" ;
2007-04-12 20:24:50 +00:00
$ spec_dir = "$base_dir/SPECS" ;
$ source_dir = "$base_dir/SOURCES" ;
$ rpms_dir = "$base_dir/RPMS/noarch" ;
$ srpms_dir = "$base_dir/SRPMS" ;
2007-08-09 00:49:51 +00:00
if ( $ ARGV [ 0 ] eq "--nosign" || $ ARGV [ 0 ] eq "-nosign" ) {
$ nosign = 1 ;
shift ( @ ARGV ) ;
}
2023-05-23 19:05:04 +03:00
$ ver = $ ARGV [ 0 ] || die "usage: makerpm.pl [--nosign] <version> [release]" ;
2007-04-12 20:24:50 +00:00
$ rel = $ ARGV [ 1 ] || "1" ;
$ oscheck = << EOF ;
if ( - r "/etc/.issue" ) {
\ $ etc_issue = `cat /etc/.issue` ;
}
elsif ( - r "/etc/issue" ) {
\ $ etc_issue = `cat /etc/issue` ;
}
2018-04-08 14:48:35 -07:00
if ( - r "/etc/os-release" ) {
\ $ os_release = `cat /etc/os-release` ;
}
2007-04-12 20:24:50 +00:00
\ $ uname = `uname -a` ;
EOF
open ( OS , "os_list.txt" ) ;
while ( <OS> ) {
chop ;
2021-09-09 16:19:55 -07:00
next if ( /^Generic\s+Linux/i ) ;
2007-04-12 20:24:50 +00:00
if ( /^([^\t]+)\t+([^\t]+)\t+([^\t]+)\t+([^\t]+)\t*(.*)$/ && $ 5 ) {
$ if = $ count + + == 0 ? "if" : "elsif" ;
$ oscheck . = "$if ($5) {\n" .
" print \"oscheck='$1'\\n\";\n" .
" }\n" ;
}
}
close ( OS ) ;
$ oscheck =~ s/\\/\\\\/g ;
$ oscheck =~ s/`/\\`/g ;
$ oscheck =~ s/\$/\\\$/g ;
open ( TEMP , "maketemp.pl" ) ;
while ( <TEMP> ) {
$ maketemp . = $ _ ;
}
close ( TEMP ) ;
$ maketemp =~ s/\\/\\\\/g ;
$ maketemp =~ s/`/\\`/g ;
$ maketemp =~ s/\$/\\\$/g ;
2022-08-10 06:35:17 -07:00
if ( $ rel && $ rel > 1 ) {
$ makerel = "echo $rel >%{buildroot}/usr/libexec/webmin/release" ;
}
else {
$ makerel = "rm -f %{buildroot}/usr/libexec/webmin/release" ;
}
2023-05-23 19:05:04 +03:00
if ( $ rel > 1 && - r "tarballs/webmin-$ver-$rel.tar.gz" ) {
$ tarfile = "webmin-$ver-$rel.tar.gz" ;
2022-08-18 19:49:27 -07:00
}
else {
2023-05-23 19:05:04 +03:00
$ tarfile = "webmin-$ver.tar.gz" ;
2022-08-18 19:49:27 -07:00
}
2023-05-23 13:58:48 +03:00
2022-08-18 19:49:27 -07:00
system ( "cp tarballs/$tarfile $source_dir" ) ;
2023-05-23 19:05:04 +03:00
open ( SPEC , ">$spec_dir/webmin-$ver.spec" ) ;
2007-04-12 20:24:50 +00:00
print SPEC << EOF ;
2016-03-21 20:31:48 -07:00
% global __perl_provides % { nil }
2007-04-12 20:24:50 +00:00
% define __spec_install_post % { nil }
Summary: A web - based administration interface for Unix systems .
2023-05-22 12:31:12 +03:00
Name: webmin
2007-04-12 20:24:50 +00:00
Version: $ ver
Release: $ rel
2025-06-11 23:53:32 +03:00
Provides: % { name } - % { version } perl ( WebminCore )
2022-02-08 19:47:14 -08:00
Requires ( pre ) : /usr/ bin / perl
2023-10-01 11:15:23 -07:00
Requires: /bin/s h /usr/ bin / perl perl ( lib ) perl ( open ) perl ( Net:: SSLeay ) perl ( Time:: Local ) perl ( Data:: Dumper ) perl ( File:: Path ) perl ( File:: Basename ) perl ( Digest:: SHA ) perl ( Digest:: MD5 ) openssl unzip tar gzip
2024-12-21 22:50:52 +02:00
Recommends: perl ( DateTime ) perl ( DateTime:: TimeZone ) perl ( DateTime:: Locale ) perl ( Time:: Piece ) perl ( Encode:: Detect ) perl ( Time:: HiRes ) perl ( Socket6 ) html2text shared - mime - info perl - File - Basename perl - File - Path perl - JSON - XS qrencode perl ( DBI ) perl ( DBD:: mysql )
2007-04-12 20:24:50 +00:00
AutoReq: 0
2025-06-08 21:03:36 +03:00
License: BSD - 3 - Clause
2007-04-12 20:24:50 +00:00
Group: System / Tools
2022-08-18 19:49:27 -07:00
Source: http: // www . webmin . com /download/ $ tarfile
2024-12-31 16:42:03 +02:00
Vendor: $ rpm_maintainer
2007-04-12 20:24:50 +00:00
BuildRoot: /tmp/ % { name } - % { version }
2007-10-25 17:48:06 +00:00
BuildArchitectures: noarch
2007-04-12 20:24:50 +00:00
% description
A web - based administration interface for Unix systems . Using Webmin you can
configure DNS , Samba , NFS , local / remote filesystems and more using your
web browser .
After installation , enter the URL http: // localhost:10000 / into your
browser and login as root with your root password .
% prep
% setup - q
% build
( find . - name '*.cgi' ; find . - name '*.pl' ) | perl perlpath . pl /usr/ bin / perl -
rm - f mount / freebsd - mounts *
rm - f mount / openbsd - mounts *
rm - f mount / macos - mounts *
rm - f webmin - gentoo - init
2013-03-30 14:19:06 -07:00
rm - rf format bsdexports hpuxexports sgiexports zones rbac bsdfdisk
2009-09-28 11:01:54 -07:00
rm - rf acl / Authen - SolarisRBAC - 0.1 *
2007-04-12 20:24:50 +00:00
chmod - R og - w .
% install
mkdir - p % { buildroot } /usr/ libexec / webmin
mkdir - p % { buildroot } /etc/ pam . d
2021-01-23 20:40:02 -08:00
mkdir - p % { buildroot } /usr/ bin
2007-04-12 20:24:50 +00:00
cp - rp * % { buildroot } /usr/ libexec / webmin
cp webmin - pam % { buildroot } /etc/ pam . d / webmin
2021-01-23 20:40:02 -08:00
ln - s /usr/ libexec /webmin/ bin /webmin %{buildroot}/ usr / bin
2021-03-08 16:15:27 -08:00
rm % { buildroot } /usr/ libexec /webmin/ blue - theme
cp - rp % { buildroot } /usr/ libexec /webmin/g ray - theme % { buildroot } /usr/ libexec /webmin/ blue - theme
2007-04-12 20:24:50 +00:00
echo rpm > % { buildroot } /usr/ libexec /webmin/i nstall - type
2022-08-10 06:35:17 -07:00
$ makerel
2007-04-12 20:24:50 +00:00
% clean
#%{rmDESTDIR}
[ "%{buildroot}" != "/" ] && rm - rf % { buildroot }
% files
% defattr ( - , root , root )
/usr/ libexec / webmin
2021-02-27 19:23:51 -08:00
/usr/ bin / webmin
2007-04-12 20:24:50 +00:00
% config /etc/ pam . d / webmin
% pre
perl << EOD ;
$ maketemp
EOD
if [ "\$?" != "0" ] ; then
echo "Failed to create or check temp files directory /tmp/.webmin"
exit 1
fi
if [ "\$tempdir" = "" ] ; then
tempdir = /tmp/ . webmin
fi
perl > $ tempdir / \ $\ $ . check << EOD ;
$ oscheck
EOD
. $ tempdir / \ $\ $ . check
rm - f $ tempdir / \ $\ $ . check
if [ ! - r /etc/ webmin / config ] ; then
if [ "\$oscheck" = "" ] ; then
echo Unable to identify operating system
exit 2
fi
if [ " \ $ WEBMIN_PORT \ " != \ " \ " ] ; then
port = \ $ WEBMIN_PORT
else
port = 10000
fi
perl - e 'use Socket; socket(FOO, PF_INET, SOCK_STREAM, getprotobyname("tcp")); setsockopt(FOO, SOL_SOCKET, SO_REUSEADDR, pack("l", 1)); bind(FOO, pack_sockaddr_in(\$ARGV[0], INADDR_ANY)) || exit(1); exit(0);' \ $ port
if [ "\$?" != "0" ] ; then
echo Port \ $ port is already in use
exit 2
fi
fi
# Save /etc/webmin in case the upgrade trashes it
if [ "\$1" != 1 ] ; then
rm - rf /etc/ . webmin - backup
2014-11-29 22:58:27 -08:00
mkdir /etc/ . webmin - backup
( cd /etc/ webmin && tar - - exclude history - - exclude bandwidth - - exclude usage - c - f - . ) | ( cd /etc/ . webmin - backup && tar - x - f - )
2007-04-12 20:24:50 +00:00
fi
2009-12-21 14:52:17 -08:00
# Put back old /etc/webmin saved when an RPM was removed
2009-12-21 21:23:29 -08:00
if [ "\$1" = 1 - a ! - d /etc/ webmin - a - d /etc/ webmin . rpmsave ] ; then
mv /etc/ webmin . rpmsave /etc/ webmin
2009-12-21 14:52:17 -08:00
fi
2007-12-07 17:30:54 +00:00
/bin/ true
2007-04-12 20:24:50 +00:00
% post
inetd = `grep "^inetd=" /etc/webmin/miniserv.conf 2>/dev/null | sed -e 's/inetd=//g'`
2022-07-12 21:39:14 +03:00
killmodenone = 0
2007-04-12 20:24:50 +00:00
if [ "\$1" != 1 ] ; then
2022-04-22 15:05:17 +03:00
# Upgrading the RPM, so stop the old Webmin properly
2007-04-12 20:24:50 +00:00
if [ "\$inetd" != "1" ] ; then
2022-07-12 21:39:14 +03:00
if [ - f /etc/ webmin / . pre - install ] ; then
2022-07-03 12:56:15 +03:00
/etc/ webmin /.pre-install >/ dev /null 2>&1 </ dev / null
2022-07-12 21:39:14 +03:00
else
killmodenone = 1
2010-08-12 17:56:20 -07:00
fi
2007-04-12 20:24:50 +00:00
fi
fi
cd /usr/ libexec / webmin
config_dir = /etc/ webmin
var_dir = /var/ webmin
perl = /usr/ bin / perl
2022-01-01 18:40:28 -08:00
autoos = 1
2007-04-12 20:24:50 +00:00
if [ " \ $ WEBMIN_PORT \ " != \ " \ " ] ; then
port = \ $ WEBMIN_PORT
else
port = 10000
fi
login = root
if [ - r /etc/s hadow ] ; then
#crypt=`grep "^root:" /etc/shadow | cut -f 2 -d :`
crypt = x
else
crypt = `grep "^root:" /etc/passwd | cut -f 2 -d :`
fi
host = `hostname`
ssl = 1
atboot = 1
2022-04-23 03:56:41 +03:00
makeboot = 1
2007-04-12 20:24:50 +00:00
nochown = 1
autothird = 1
noperlpath = 1
nouninstall = 1
nostart = 1
2022-07-02 12:31:20 -07:00
nostop = 1
2023-10-13 15:33:43 +03:00
nodepsmsg = 1
2007-04-12 20:24:50 +00:00
if [ "\$tempdir" = "" ] ; then
tempdir = /tmp/ . webmin
fi
2023-10-13 15:33:43 +03:00
export config_dir var_dir perl autoos port login crypt host ssl nochown autothird noperlpath nouninstall nostart allow atboot makeboot nostop nodepsmsg
2008-02-04 19:56:46 +00:00
. /setup.sh >\$tempdir/ webmin - setup . out 2 > & 1
chmod 600 \ $ tempdir / webmin - setup . out
2007-04-12 20:24:50 +00:00
rm - f /var/ lock /subsys/ webmin
2022-04-21 14:25:13 +03:00
cd /usr/ libexec / webmin
2022-07-03 12:56:15 +03:00
if [ "\$inetd" != "1" ] ; then
if [ "\$1" == 1 ] ; then
/etc/ webmin /start >/ dev /null 2>&1 </ dev / null
if [ "\$?" != "0" ] ; then
2022-08-10 15:47:40 +03:00
echo "error: Webmin server cannot be started. It is advised to start it manually by\n running \\" /etc/ webmin / restart - by - force - kill \ \ " command"
2022-07-03 12:56:15 +03:00
fi
else
2022-07-12 21:39:14 +03:00
if [ "\$killmodenone" != "1" ] ; then
/etc/ webmin /.post-install >/ dev /null 2>&1 </ dev / null
else
/etc/ webmin /.reload-init >/ dev /null 2>&1 </ dev / null
2024-04-21 15:48:09 +03:00
if [ "\$?" != "0" ] ; then
echo "warning: Webmin server cannot be restarted. It is advised to restart it manually by\n running \\" /etc/ webmin / restart - by - force - kill \ \ " when upgrade process is finished"
fi
2022-08-07 15:18:35 +03:00
if [ - f /etc/ webmin / . reload - init - systemd ] ; then
/etc/ webmin /.reload-init-systemd >/ dev /null 2>&1 </ dev / null
rm - f /etc/ webmin / . reload - init - systemd
fi
2022-07-12 21:39:14 +03:00
fi
2022-04-23 17:28:22 +03:00
fi
2007-04-12 20:24:50 +00:00
fi
2022-04-22 17:17:01 +03:00
2007-04-12 20:24:50 +00:00
cat > /etc/ webmin / uninstall . sh << EOFF
#!/bin/sh
printf "Are you sure you want to uninstall Webmin? (y/n) : "
read answer
printf "\\n"
if [ "\\\$answer" = "y" ] ; then
2022-04-19 18:16:24 +03:00
echo "Removing Webmin RPM package.."
2007-04-12 20:24:50 +00:00
rpm - e - - nodeps webmin
2022-04-19 18:16:24 +03:00
echo ".. done"
2007-04-12 20:24:50 +00:00
fi
EOFF
chmod + x /etc/ webmin / uninstall . sh
port = `grep "^port=" /etc/webmin/miniserv.conf | sed -e 's/port=//g'`
perl - e 'use Net::SSLeay' > /dev/ null 2 > /dev/ null
sslmode = 0
if [ "\$?" = "0" ] ; then
grep ssl = 1 /etc/ webmin /miniserv.conf >/ dev /null 2>/ dev / null
if [ "\$?" = "0" ] ; then
sslmode = 1
fi
fi
musthost = `grep musthost= /etc/webmin/miniserv.conf | sed -e 's/musthost=//'`
if [ "$musthost" != "" ] ; then
host = $ musthost
fi
2018-04-04 22:17:59 -07:00
if [ "\$1" == 1 ] ; then
if [ "\$sslmode" = "1" ] ; then
2022-04-19 18:16:24 +03:00
echo "Webmin install complete. You can now login to https://\$host:\$port/" >> \ $ tempdir / webmin - setup . out 2 > & 1
2018-04-04 22:17:59 -07:00
else
2022-04-19 18:16:24 +03:00
echo "Webmin install complete. You can now login to http://\$host:\$port/" >> \ $ tempdir / webmin - setup . out 2 > & 1
2018-04-04 22:17:59 -07:00
fi
2022-04-19 18:16:24 +03:00
echo "as root with your root password." >> \ $ tempdir / webmin - setup . out 2 > & 1
2007-04-12 20:24:50 +00:00
fi
2007-12-07 17:30:54 +00:00
/bin/ true
2007-04-12 20:24:50 +00:00
% preun
if [ "\$1" = 0 ] ; then
grep root = /usr/ libexec /webmin / etc /webmin/mi niserv . conf > /dev/ null 2 > & 1
if [ "\$?" = 0 ] ; then
# RPM is being removed, and no new version of webmin
# has taken it's place. Run uninstalls and stop the server
/etc/ webmin /stop >/ dev /null 2>&1 </ dev / null
2022-07-03 12:56:15 +03:00
( cd /usr/ libexec /webmin ; WEBMIN_CONFIG=/ etc /webmin WEBMIN_VAR=/ var /webmin LANG= / usr /libexec/ webmin /run-uninstalls.pl) >/ dev /null 2>&1 </ dev / null
2007-04-12 20:24:50 +00:00
fi
fi
2007-12-07 17:30:54 +00:00
/bin/ true
2007-04-12 20:24:50 +00:00
% postun
if [ "\$1" = 0 ] ; then
grep root = /usr/ libexec /webmin / etc /webmin/mi niserv . conf > /dev/ null 2 > & 1
if [ "\$?" = 0 ] ; then
# RPM is being removed, and no new version of webmin
2009-12-21 14:52:17 -08:00
# has taken it's place. Rename away the /etc/webmin directory
2009-12-21 21:23:29 -08:00
rm - rf /etc/ webmin . rpmsave
2009-12-21 14:52:17 -08:00
mv /etc/ webmin /etc/ webmin . rpmsave
rm - rf /var/ webmin
2007-04-12 20:24:50 +00:00
fi
fi
2007-12-07 17:30:54 +00:00
/bin/ true
2007-04-12 20:24:50 +00:00
% triggerpostun - - webmin
if [ ! - d /var/ webmin - a "\$1" = 2 ] ; then
mkdir /var/ webmin
fi
if [ ! - r /etc/ webmin /miniserv.conf -a -d / etc / . webmin - backup - a "\$1" = 2 ] ; then
rm - rf /etc/ . webmin - broken
mv /etc/ webmin /etc/ . webmin - broken
mv /etc/ . webmin - backup /etc/ webmin
2022-07-03 12:56:15 +03:00
if [ - r /etc/ webmin / . post - install ] ; then
/etc/ webmin /.post-install >/ dev /null 2>&1 </ dev / null
2022-04-23 17:28:22 +03:00
fi
2007-04-12 20:24:50 +00:00
else
rm - rf /etc/ . webmin - backup
fi
2007-12-07 17:30:54 +00:00
/bin/ true
2007-04-12 20:24:50 +00:00
EOF
close ( SPEC ) ;
$ cmd = - x "/usr/bin/rpmbuild" ? "rpmbuild" : "rpm" ;
2023-05-23 19:05:04 +03:00
system ( "$cmd -ba --target=noarch $spec_dir/webmin-$ver.spec" ) && exit ;
2023-05-26 16:41:45 -07:00
foreach $ rpm ( "rpm" , "newkey/rpm" ) {
if ( - d $ rpm ) {
system ( "cp $rpms_dir/webmin-$ver-$rel.noarch.rpm $rpm/webmin-$ver-$rel.noarch.rpm" ) ;
print "Moved to $rpm/webmin-$ver-$rel.noarch.rpm\n" ;
system ( "cp $srpms_dir/webmin-$ver-$rel.src.rpm $rpm/webmin-$ver-$rel.src.rpm" ) ;
print "Moved to $rpm/webmin-$ver-$rel.src.rpm\n" ;
system ( "chown jcameron: $rpm/webmin-$ver-$rel.noarch.rpm $rpm/webmin-$ver-$rel.src.rpm" ) ;
if ( ! $ nosign ) {
$ key = $ rpm eq "rpm" ? "jcameron\@webmin.com" : "developers\@webmin.com" ;
2023-06-05 22:55:57 -07:00
$ sigflag = $ rpm eq "newkey/rpm" ? "-D '_binary_filedigest_algorithm SHA256'" : "" ;
system ( "rpm --resign -D '_gpg_name $key' $sigflag $rpm/webmin-$ver-$rel.noarch.rpm $rpm/webmin-$ver-$rel.src.rpm" ) ;
2023-05-26 16:41:45 -07:00
}
2007-08-09 00:49:51 +00:00
}
2008-12-17 07:48:39 +00:00
2023-06-05 22:55:57 -07:00
if ( - d "/usr/local/webadmin/$rpm/yum" ) {
# Add to our repository
system ( "cp $rpm/webmin-$ver-$rel.noarch.rpm /usr/local/webadmin/$rpm/yum" ) ;
}
2023-05-29 22:35:12 -07:00
}
2007-04-12 20:24:50 +00:00