Re-introduce webmin. Thanks to Dell'Aica Valentino and PhobosK for the ebuilds. This...
authorMarkos Chandras <hwoarang@gentoo.org>
Sun, 18 Sep 2011 09:56:11 +0000 (09:56 +0000)
committerMarkos Chandras <hwoarang@gentoo.org>
Sun, 18 Sep 2011 09:56:11 +0000 (09:56 +0000)
Package-Manager: portage-2.2.0_alpha55/cvs/Linux x86_64

app-admin/webmin/ChangeLog [new file with mode: 0644]
app-admin/webmin/Manifest [new file with mode: 0644]
app-admin/webmin/files/gentoo-setup [new file with mode: 0755]
app-admin/webmin/files/init.d.webmin [new file with mode: 0644]
app-admin/webmin/metadata.xml [new file with mode: 0644]
app-admin/webmin/webmin-1.560.ebuild [new file with mode: 0644]

diff --git a/app-admin/webmin/ChangeLog b/app-admin/webmin/ChangeLog
new file mode 100644 (file)
index 0000000..2691207
--- /dev/null
@@ -0,0 +1,11 @@
+# ChangeLog for app-admin/webmin
+# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/app-admin/webmin/ChangeLog,v 1.191 2011/09/18 09:56:11 hwoarang Exp $
+
+*webmin-1.560 (18 Sep 2011)
+
+  18 Sep 2011; Markos Chandras <hwoarang@gentoo.org> +webmin-1.560.ebuild,
+  +files/gentoo-setup, +files/init.d.webmin, +metadata.xml:
+  Re-introduce webmin. Thanks to Dell'Aica Valentino <elettronik@gmail.com> and
+  PhobosK <phobosk@fastmail.fm> for the ebuilds. This fixes bug #348432
+
diff --git a/app-admin/webmin/Manifest b/app-admin/webmin/Manifest
new file mode 100644 (file)
index 0000000..b25ca6c
--- /dev/null
@@ -0,0 +1,27 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA512
+
+AUX gentoo-setup 11154 RMD160 2ec596c45e052a075b18d8c977e6e92ae177fc5f SHA1 9d709aadd3532a27d83649b63d794efea74ebf0a SHA256 136c2955e6c380e2e8cc8ad8991f4d8d6a404c386fb7846ca8b269921fef534f
+AUX init.d.webmin 2307 RMD160 ca520b1dd4ff2da32bfc37645bddf215b56f18c7 SHA1 f9761880e4edb4372edb3ad2aca22724743e1d94 SHA256 139f4271e5be956693ccdacfad3c6a972b136dd105f9fe8535e1845308a9a7a4
+DIST webmin-1.560-minimal.tar.gz 1856121 RMD160 83df64d056952fef757ba4e7ef3b470636f45b02 SHA1 40315e666eacb00bf85df93e22ba5597536c5e0a SHA256 9957928222547a62a05d6c03b6c571e91c53a5ee55552b0960af431d5e8a6df7
+DIST webmin-1.560.tar.gz 15152937 RMD160 1ee7c172baffc6e13a213a7bd61fa8ddc7814d54 SHA1 02ae664b0f01a8214aac018c74fd34447336ed5d SHA256 4370abe32f04012328e2afa93e1c00fd1353963a34d8f644604f9e36d00b6e55
+EBUILD webmin-1.560.ebuild 8977 RMD160 c8c00fb32d1b38457868647d8d9e8bc26a12dccf SHA1 8fec30dc0cfad44d4018122a43f40e437007a3a9 SHA256 9487336079c00fa57dc215b4a179717dc2db8510b6f4ac288a070782ecbfc3eb
+MISC ChangeLog 526 RMD160 699e3232a5fce07c8dcd82a0f0a24b82be5f316c SHA1 f5f200c0e70d75b5fca6436628abf20cb0606f0b SHA256 b8ca37f4887f86c9676af53bf33d2b81a284628abd801d43d0613a13c640a366
+MISC metadata.xml 496 RMD160 1d3e1e14cb2ef169f8899df66e3ebdf8d5e43a5c SHA1 5accb49047740e0374c3e9a3309f08dbde96632d SHA256 ae874cee0c2bc4eb921cd7dfa1f9b3f390e86feaab5ffd5194283f89d2ded5e3
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v2.0.18 (GNU/Linux)
+
+iQIcBAEBCgAGBQJOdcArAAoJEPqDWhW0r/LCsKwQAK6JaQbRZwv4Atw62GuDV6UE
+UPTEXkIA1YlqlQbMhaFQvLanrVzTmGI8xTVG3rN+rs7/BdtwtYUcNdeF2co1iqjI
+fhgano4/Kd7MS96Mx9XXyOvnTG8bHLRAgpr+CFk/NIHJEqNGBIagbjA0lABaycUy
+u2CEPqZcfPGNJvkTwPj2uYGvT4PP3LfVqXV+vr+JZDeiRl6qLziiWU700o+Ho+f4
+2vBwOVZOnksk0+GFCaQw32qR0522n5irnN45Yo96iDiIPDB4vKbZrAOdxW/iXLe/
+WZTjPxZedA225THkGu5Vj4jHQFMdQayObOfNMK2fzCazWbF9M004A+3k7v/ilbqn
+S9bIMnHdpT9kZ6jrYta8dGf+p1cgnAiQ/48Gj3jQqx/kDBd0LnJ18lHefgJLbBIN
+cHrq5tiCHpaov+mJgTbeKPfnEEdwRyL4t5j5pyVwr2YvqhRD3QAxgUL2VkiVPW4m
+JV3vLVBh6tzg3r6ANjl7nnjkvBF1qgOiiivQqNw7w9B4qa+G+GvVvNFj+q2TqxtH
+jYkzg1SOk79L0+dEL4t4eWT0U8jz676g5/JJtvSbOXPvU+Qp1CgJrVoNF7rsdNh0
+dCf48NKMsELGNxBHJReLsdUBDhWR3vHhiKmhX6UkJJ6uymQWaaQIznhDpUjaScPZ
+wQ/3ejDU/Ubxw3HXGyt1
+=LnIc
+-----END PGP SIGNATURE-----
diff --git a/app-admin/webmin/files/gentoo-setup b/app-admin/webmin/files/gentoo-setup
new file mode 100755 (executable)
index 0000000..566e564
--- /dev/null
@@ -0,0 +1,365 @@
+#!/bin/sh
+# gentoo-setup.sh
+# A modified original Webmin setup.sh script to comply with Gentoo specifics
+#
+# Modification done by: PhobosK <phobosk@kbfx.net>
+#
+# This script runs after the webmin archive is installed, and in the pkg_config() phase.
+# It does setup the various config files of Webmin depending on if it is
+# a new install, an upgrade or a reset.
+
+LANG=
+export LANG
+
+if [ -z ${wadir} ]; then
+       echo "You can't run this script outside of the 'emerge --config app-admin/webmin' command."
+       exit 1
+fi
+
+# All things we do is from the Webmin install dir - $wadir
+cd $wadir
+
+
+# Are we hard resetting everything?
+# If yes, we do:
+# 1. Run the specific Webmin $wadir/run-uninstalls.pl
+#       It runs all uninstall.pl files in every module's folder.
+#       They delete all the set specific Webmin cron jobs.
+#       If bumping you should go through these files using the command:
+#       find . -name uninstall.pl -exec cat {} \; -print
+# 2. Delete the whole /etc/webmin content, keeping only the gentoo .keep_* files
+if [ "$reset" = "hard" ]; then
+       echo "Running Webmin's specific uninstall procedures.. (Please ignore any possible errors)"
+       (WEBMIN_CONFIG=$config_dir WEBMIN_VAR=$var_dir LANG= "$wadir/run-uninstalls.pl")
+       echo "..done"
+       echo ""
+
+       echo "Deleting the content of user's config folder: $config_dir .."
+       find $config_dir ! -name '.keep_*' -delete 2>/dev/null
+       echo "..done"
+       echo ""
+fi
+
+
+# Are we soft resetting?
+# If yes we do:
+# - Delete the $config_dir/config file so we get new config values
+if [ "$reset" = "soft" ]; then
+       echo "Deleting the user's $config_dir/config file.."
+       if [ -f "$config_dir/config" ]; then
+               rm -f "$config_dir/config"
+       fi
+       echo "..done"
+       echo ""
+fi
+
+
+# Get all available modules of this version
+allmods=`echo */module.info | sed -e 's/\/module.info//g'`
+
+# Get current Webmin version
+ver=`cat "$wadir/version"`
+
+if [ -r "$config_dir/config" ]; then
+       upgrading=1
+fi
+
+
+# Check if upgrading from an old version
+if [ "$upgrading" = 1 ]; then
+       echo "Updating existant Webmin's config files.."
+
+       # Get current var path
+       if [ -r "$config_dir/var-path" ]; then
+               _var_dir=`cat $config_dir/var-path`
+               if [ -n ${_var_dir} ]; then
+                       var_dir=${_var_dir}
+               fi
+       fi
+
+       # Get current perl path
+       if [ -r "$config_dir/perl-path" ]; then
+               _perl=`cat $config_dir/perl-path`
+               if [ -n ${_perl} ]; then
+                       perl=${_perl}
+               fi
+       fi
+
+       # Get old os name and version
+       os_type=`grep "^os_type=" $config_dir/config | sed -e 's/os_type=//g'`
+       os_version=`grep "^os_version=" $config_dir/config | sed -e 's/os_version=//g'`
+       real_os_type=`grep "^real_os_type=" $config_dir/config | sed -e 's/real_os_type=//g'`
+       real_os_version=`grep "^real_os_version=" $config_dir/config | sed -e 's/real_os_version=//g'`
+
+       # Get port, ssl, ssl_redirect and keyfile
+       port=`grep "^port=" $config_dir/miniserv.conf | sed -e 's/port=//g'`
+       ssl=`grep "^ssl=" $config_dir/miniserv.conf | sed -e 's/ssl=//g'`
+       ssl_redirect=`grep "^ssl_redirect=" $config_dir/miniserv.conf | sed -e 's/ssl_redirect=//g'`
+       keyfile=`grep "^keyfile=" $config_dir/miniserv.conf | sed -e 's/keyfile=//g'`
+
+       # Update ACLs
+       $perl "$wadir/newmods.pl" $config_dir $allmods
+
+       # Update miniserv.conf with new root directory, mime types file and server info
+       grep -v "^root=" $config_dir/miniserv.conf | grep -v "^mimetypes=" | grep -v "^server=" >$tempdir/$$.miniserv.conf
+       mv $tempdir/$$.miniserv.conf $config_dir/miniserv.conf
+       echo "root=$wadir" >> $config_dir/miniserv.conf
+       echo "mimetypes=$wadir/mime.types" >> $config_dir/miniserv.conf
+       echo "server=MiniServ/$ver" >> $config_dir/miniserv.conf
+       grep logout= $config_dir/miniserv.conf >/dev/null
+       if [ $? != "0" ]; then
+               echo "logout=$config_dir/logout-flag" >> $config_dir/miniserv.conf
+       fi
+
+       # Remove old cache of module infos
+       rm -f $config_dir/module.infos.cache
+       echo "..done"
+       echo ""
+else
+       # Create webserver's new config files
+       echo "Creating Webmin's new config files.."
+
+       echo $perl > $config_dir/perl-path
+       echo $var_dir > $config_dir/var-path
+
+       # Create a totally new conf file
+       cfile=$config_dir/miniserv.conf
+       echo "port=$port" > $cfile
+       echo "root=$wadir" >> $cfile
+       echo "mimetypes=$wadir/mime.types" >> $cfile
+       echo "addtype_cgi=internal/cgi" >> $cfile
+       echo "realm=Webmin Server" >> $cfile
+       echo "logfile=$var_dir/miniserv.log" >> $cfile
+       echo "errorlog=$var_dir/miniserv.error" >> $cfile
+       echo "pidfile=$pidfile" >> $cfile
+       echo "logtime=168" >> $cfile
+       echo "ppath=$ppath" >> $cfile
+       echo "ssl=$ssl" >> $cfile
+       echo "ssl_redirect=$ssl_redirect" >> $cfile
+       echo "keyfile=$keyfile" >> $cfile
+       echo "env_WEBMIN_CONFIG=$config_dir" >> $cfile
+       echo "env_WEBMIN_VAR=$var_dir" >> $cfile
+       echo "atboot=$atboot" >> $cfile
+       echo "logout=$config_dir/logout-flag" >> $cfile
+       echo "listen=10000" >> $cfile
+       echo "denyfile=\\.pl\$" >> $cfile
+       echo "log=1" >> $cfile
+       echo "blockhost_failures=5" >> $cfile
+       echo "blockhost_time=60" >> $cfile
+       echo "syslog=1" >> $cfile
+       echo "session=1" >> $cfile
+       echo "premodules=WebminCore" >> $cfile
+       echo "server=MiniServ/$ver" >> $cfile
+
+       # Append package-specific info to config file.
+       # miniserv-conf can be created by upstream or by us in src_install phase (see there).
+       if [ -f "$wadir/miniserv-conf" ]; then
+               cat "$wadir/miniserv-conf" >>$cfile
+       fi
+
+       # Create the default user allowed to login - root only
+       login="root"
+
+       if [ -r /etc/shadow ]; then
+               #crypt=`grep "^root:" /etc/shadow | cut -f 2 -d :`
+               crypt=x
+       else
+               crypt=`grep "^root:" /etc/passwd | cut -f 2 -d :`
+       fi
+
+       ufile=$config_dir/miniserv.users
+       echo "$login:$crypt:0" > $ufile
+       chmod 600 $ufile
+
+
+       echo "userfile=$ufile" >> $cfile
+       chmod 600 $cfile
+       echo "..done"
+       echo ""
+
+       echo "Creating access control file.."
+       afile=$config_dir/webmin.acl
+       echo "$login: $allmods" > $afile
+       chmod 600 $afile
+       echo "..done"
+       echo ""
+fi
+
+
+# Create start, stop, restart and reload Gentoo compliant Webmin scripts
+# We use sys-apps/openrc functions which is already pulled by sys-apps/baselayout
+echo "Creating start and stop scripts.."
+rm -f $config_dir/{start,stop,restart,reload}
+
+# The start script in /etc/webmin (Gentoo compliant)
+cat <<END >>"$config_dir/start"
+#!/bin/sh
+
+if [ ! -f "${pidfile}" ]; then
+       rc-service --ifexists -- webmin start
+fi
+END
+
+# The stop script in /etc/webmin (Gentoo compliant)
+cat <<END >>"$config_dir/stop"
+#!/bin/sh
+
+rc-service --ifexists -- webmin --ifstarted stop
+END
+
+# The restart script in /etc/webmin (Gentoo compliant)
+cat <<END >>"$config_dir/restart"
+#!/bin/sh
+
+rc-service --ifexists -- webmin --ifstarted restart
+END
+
+# The reload script in /etc/webmin (Gentoo compliant)
+cat <<END >>"$config_dir/reload"
+#!/bin/sh
+
+rc-service --ifexists -- webmin --ifstarted reload
+END
+
+chmod 755 $config_dir/{start,stop,restart,reload}
+echo "..done"
+echo ""
+
+
+if [ "$upgrading" = 1 ]; then
+       echo "Updating other config files.."
+else
+       echo "Copying other config files.."
+fi
+
+# This just copies and merges the Webmin's release config files, with user's in the /etc/webmin folder
+newmods=`$perl "$wadir/copyconfig.pl" "$os_type/$real_os_type" "$os_version/$real_os_version" "$wadir" $config_dir "" $allmods`
+if [ "$upgrading" != 1 ]; then
+       # Store the OS and version
+       echo "os_type=$os_type" >> $config_dir/config
+       echo "os_version=$os_version" >> $config_dir/config
+       echo "real_os_type=$real_os_type" >> $config_dir/config
+       echo "real_os_version=$real_os_version" >> $config_dir/config
+
+       # Turn on logging by default
+       echo "log=1" >> $config_dir/config
+
+       # Disallow unknown referers by default
+       echo "referers_none=1" >>$config_dir/config
+else
+       # one-off hack to set log variable in config from miniserv.conf
+       grep log= $config_dir/config >/dev/null
+       if [ "$?" = "1" ]; then
+               grep log= $config_dir/miniserv.conf >> $config_dir/config
+               grep logtime= $config_dir/miniserv.conf >> $config_dir/config
+               grep logclear= $config_dir/miniserv.conf >> $config_dir/config
+       fi
+
+       # Disallow unknown referers if not set
+       grep referers_none= $config_dir/config >/dev/null
+       if [ "$?" != "0" ]; then
+               echo "referers_none=1" >>$config_dir/config
+       fi
+fi
+echo $ver > $config_dir/version
+echo "..done"
+echo ""
+
+# Set passwd_ fields in miniserv.conf from global config
+for field in passwd_file passwd_uindex passwd_pindex passwd_cindex passwd_mindex; do
+       grep $field= $config_dir/miniserv.conf >/dev/null
+       if [ "$?" != "0" ]; then
+               grep $field= $config_dir/config >> $config_dir/miniserv.conf
+       fi
+done
+grep passwd_mode= $config_dir/miniserv.conf >/dev/null
+if [ "$?" != "0" ]; then
+       echo passwd_mode=0 >> $config_dir/miniserv.conf
+fi
+
+# Make Perl crypt MD5 the default
+echo md5pass=1 >> $config_dir/config
+
+
+# Set a special theme if none was set before
+if [ "$theme" = "" ]; then
+       theme=`cat "$wadir/defaulttheme" 2>/dev/null`
+fi
+oldthemeline=`grep "^theme=" $config_dir/config`
+oldtheme=`echo $oldthemeline | sed -e 's/theme=//g'`
+if [ "$theme" != "" ] && [ "$oldthemeline" = "" ] && [ -d "$wadir/$theme" ]; then
+       themelist=$theme
+fi
+
+# Set a special overlay if none was set before
+if [ "$overlay" = "" ]; then
+       overlay=`cat "$wadir/defaultoverlay" 2>/dev/null`
+fi
+if [ "$overlay" != "" ] && [ "$theme" != "" ] && [ -d "$wadir/$overlay" ]; then
+       themelist="$themelist $overlay"
+fi
+
+# Apply the theme and maybe overlay
+if [ "$themelist" != "" ]; then
+       echo "theme=$themelist" >> $config_dir/config
+       echo "preroot=$themelist" >> $config_dir/miniserv.conf
+fi
+
+# Set the product field in the global config
+grep product= $config_dir/config >/dev/null
+if [ "$?" != "0" ]; then
+       echo product=webmin >> $config_dir/config
+fi
+
+# If password delays are not specifically disabled, enable them
+grep passdelay= $config_dir/miniserv.conf >/dev/null
+if [ "$?" != "0" ]; then
+       echo passdelay=1 >> $config_dir/miniserv.conf
+fi
+
+
+echo "Changing ownership and permissions.."
+# Make all config dirs non-world-readable
+for m in $newmods; do
+       chown -R root:root $config_dir/$m
+       chmod -R og-rw $config_dir/$m
+done
+
+# Make miniserv config files non-world-readable
+for f in miniserv.conf miniserv.users; do
+       chown -R root:root $config_dir/$f
+       chmod -R og-rw $config_dir/$f
+done
+chmod +r $config_dir/version
+
+# Fix up bad permissions from some older installs
+for m in ldap-client ldap-server ldap-useradmin mailboxes mysql postgresql servers virtual-server; do
+       if [ -d "$config_dir/$m" ]; then
+               chown root:root $config_dir/$m
+               chmod og-rw $config_dir/$m
+               chmod og-rw $config_dir/$m/config 2>/dev/null
+       fi
+done
+echo "..done"
+echo ""
+
+
+# This executes all postinstall.pl for every module
+# If you do bump, you should look at the specific changes they do with this command in root folder:
+# find . -name postinstall.pl -exec cat {} \; -print
+# Generally they are safe to run 'cause they change only user's config in /etc/webmin
+# or setup some cron jobs
+if [ "$nopostinstall" = "" ]; then
+       echo "Running postinstall scripts.. (Please ignore any possible errors)"
+       (cd "$wadir" ; WEBMIN_CONFIG=$config_dir WEBMIN_VAR=$var_dir "$wadir/run-postinstalls.pl")
+       echo "..done"
+       echo ""
+fi
+
+# Enable background collection
+if [ "$upgrading" != 1 -a -r $config_dir/system-status/enable-collection.pl ]; then
+       echo "Enabling background status collection.. (Please ignore any possible errors)"
+       $config_dir/system-status/enable-collection.pl 5
+       echo "..done"
+       echo ""
+fi
diff --git a/app-admin/webmin/files/init.d.webmin b/app-admin/webmin/files/init.d.webmin
new file mode 100644 (file)
index 0000000..4ab5821
--- /dev/null
@@ -0,0 +1,88 @@
+#!/sbin/runscript
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-admin/webmin/files/init.d.webmin,v 1.8 2011/09/18 09:56:11 hwoarang Exp $
+
+
+# We do not give a choice to user for configuring these 'cause it will mess up
+# Webmin's configuration
+WEBMIN_EXE="%exe%"
+WEBMIN_PID="%pid%"
+WEBMIN_CONF="%conf%"
+
+opts="${opts} reload"
+
+depend() {
+       use net logger
+}
+
+checkconfig() {
+       # Check if Webmin setup has been done
+       if [ ! -f /etc/webmin/config ]; then
+               eerror "Error in Webmin's configuration. The '/etc/webmin/config' is not present."
+               eerror "Please run 'emerge --config app-admin/webmin' to fix this."
+               return 1
+       fi
+
+       # Check if ssl cert is present
+       local key ssl
+       key=`grep "^keyfile=" ${WEBMIN_CONF} | sed -e 's/keyfile=//g'`
+       ssl=`grep "^ssl=" ${WEBMIN_CONF} | sed -e 's/ssl=//g'`
+
+       if [ ! -f "${key}" ] ; then
+               if [ "${ssl}" = "0" ]; then
+                       ewarn "Your SSL certificate is not present."
+                       ewarn "Please either fix the path in the 'keyfile=' option of your ${WEBMIN_CONF}"
+                       ewarn "OR run 'emerge --config app-admin/webmin'"
+               else
+                       eerror "Error in Webmin's configuration. No SSL certificate is present."
+                       eerror "Please either fix the path in the 'keyfile=' option of your ${WEBMIN_CONF}"
+                       eerror "OR change the 'ssl=' option of your ${WEBMIN_CONF} to 'ssl=0'"
+                       eerror "OR run 'emerge --config app-admin/webmin'"
+                       return 1
+               fi
+       fi
+
+       return 0
+}
+
+reload() {
+       if [ ! -f "${WEBMIN_PID}" ]; then
+               eerror "Webmin is not running"
+               return 1
+       fi
+
+       checkconfig || return 1
+
+       ebegin "Reloading Webmin's configuration files"
+       start-stop-daemon --oknodo --stop  --interpreted \
+               --signal USR1 \
+               --exec "$WEBMIN_EXE" \
+               --pidfile "$WEBMIN_PID"
+       eend $?
+}
+
+start() {
+       checkconfig || return 1
+       ebegin "Starting Webmin"
+
+       start-stop-daemon --start --background --interpreted \
+               --env LANG= \
+               --env PERLLIB="%perllib%" \
+               --exec "$WEBMIN_EXE" \
+               --pidfile "$WEBMIN_PID" \
+               -- "$WEBMIN_CONF"
+       eend $?
+       # Leave time to spawn, so no stop is received while spawning
+       sleep 3
+}
+
+stop() {
+       ebegin "Stopping Webmin"
+       start-stop-daemon --stop  --interpreted --quiet \
+               --exec "$WEBMIN_EXE" \
+               --pidfile "$WEBMIN_PID"
+       eend $?
+       # Leave time to stop because of the scripts that use this
+       sleep 3
+}
diff --git a/app-admin/webmin/metadata.xml b/app-admin/webmin/metadata.xml
new file mode 100644 (file)
index 0000000..bdf08f8
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+       <herd>proxy-maintainers</herd>
+       <maintainer>
+               <email>hwoarang@gentoo.org</email>
+               <name>Markos Chandras</name>
+               <description>Dedicated Gentoo maintainer. CC him on bugs</description>
+       </maintainer>
+       <maintainer>
+               <email>phobosk@fastmail.fm</email>
+               <name>PhobosK</name>
+               <description>Proxy maintainer. Assign bugs to him</description>
+       </maintainer>
+</pkgmetadata>
diff --git a/app-admin/webmin/webmin-1.560.ebuild b/app-admin/webmin/webmin-1.560.ebuild
new file mode 100644 (file)
index 0000000..4dcc132
--- /dev/null
@@ -0,0 +1,264 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-admin/webmin/webmin-1.560.ebuild,v 1.1 2011/09/18 09:56:11 hwoarang Exp $
+
+EAPI="3"
+
+inherit eutils pam ssl-cert
+
+DESCRIPTION="A web-based Unix systems administration interface"
+HOMEPAGE="http://www.webmin.com/"
+SRC_URI="minimal? ( mirror://sourceforge/webadmin/${P}-minimal.tar.gz )
+       !minimal? ( mirror://sourceforge/webadmin/${P}.tar.gz )"
+
+LICENSE="BSD"
+SLOT="0"
+
+KEYWORDS="~amd64 ~x86"
+
+# NOTE: The ssl flag auto added by ssl-cert eclass is not used actually
+# because openssl is forced by dev-perl/Net-SSLeay
+IUSE="minimal +ssl mysql postgres ldap"
+
+# All the required perl modules can be found easily using (in Webmin's root src dir):
+# find . -name cpan_modules.pl -exec grep "::" {} \;
+# NOTE: If Webmin doesn't find the required perl modules, it offers(runtime) the user
+# to install them using the in-built cpan module, and this will mess up perl on the system
+# That's why some modules are forced without a use flag
+# NOTE: pam and ssl deps are forced for security and Gentoo compliance installation reasons
+DEPEND="virtual/perl-Sys-Syslog
+       virtual/perl-Time-HiRes
+       virtual/perl-Time-Local
+       dev-perl/Authen-Libwrap
+       dev-perl/IO-Tty
+       dev-perl/MD5
+       dev-perl/Net-SSLeay
+       dev-perl/Authen-PAM
+       dev-perl/Sys-Hostname-Long
+       !minimal? (
+               mysql? ( dev-perl/DBD-mysql )
+               postgres? ( dev-perl/DBD-Pg )
+               ldap? ( dev-perl/perl-ldap )
+               dev-perl/XML-Generator
+               dev-perl/XML-Parser
+       )"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+       local perl="$( which perl )"
+
+       # Remove the unnecessary and incompatible files
+       rm -rf acl/Authen-SolarisRBAC-0.1*
+       if ! use minimal ; then
+               rm -rf {format,{bsd,hpux,sgi}exports,zones,rbac}
+               rm -f mount/{free,net,open}bsd-mounts*
+               rm -f mount/macos-mounts*
+       fi
+
+       # For security reasons remove the SSL certificate that comes with Webmin
+       # We will create our own later
+       rm -f miniserv.pem
+
+       # Remove the Webmin setup scripts to avoid Webmin in runtime to mess up config
+       # We will use our own later
+       rm -f setup.{sh,pl}
+
+       # Fix the permissions of the install files
+       chmod -R og-w "${S}"
+
+       # Since we should not modify any files after install
+       # we set the perl path in all cgi and pl files here using Webmin's routines
+       # The pl file is Prefix safe and works only on provided input, no other filesystem files
+       ebegin "Fixing perl path in source files"
+       (find "${S}" -name '*.cgi' -print ; find "${S}" -name '*.pl' -print) | $perl "${S}"/perlpath.pl $perl -
+       eend $?
+}
+
+src_install() {
+       # Create config dir and keep
+       diropts -m0755
+       dodir /etc/webmin
+       keepdir /etc/webmin
+
+       # Create install dir
+       # Third party modules installed through Webmin go here too, so keep
+       dodir /usr/libexec/webmin
+       keepdir /usr/libexec/webmin
+
+       # Copy our own setup script to installation folder
+       insinto /usr/libexec/webmin
+       newins "${FILESDIR}"/gentoo-setup gentoo-setup.sh
+       fperms 0744 /usr/libexec/webmin/gentoo-setup.sh
+
+       # This is here if we ever want in future ebuilds to add some specific
+       # config values in the /etc/webmin/miniserv.conf
+       # The format of this file should be the same as the one of miniserv.conf:
+       # var=value
+       #
+       # Uncomment it if you use such file. Before that check if upstream
+       # has this file in root dir too.
+       #newins "${FILESDIR}/miniserv-conf" miniserv-conf
+
+       # Create the log dir and keep
+       diropts -m0700
+       dodir /var/log/webmin
+       keepdir /var/log/webmin
+
+       # Create the init.d file and put the neccessary variables there
+       newinitd "${FILESDIR}"/init.d.webmin webmin
+       sed -i \
+               -e "s:%exe%:${EROOT}usr/libexec/webmin/miniserv.pl:" \
+               -e "s:%pid%:${EROOT}var/run/webmin.pid:" \
+               -e "s:%conf%:${EROOT}etc/webmin/miniserv.conf:" \
+               -e "s:%perllib%:${EROOT}usr/libexec/webmin:" \
+               "${ED}etc/init.d/webmin" \
+               || die "Failed to patch the webmin init file"
+
+       # Setup pam
+       pamd_mimic system-auth webmin auth account session
+
+       # Copy files to installation folder
+       ebegin "Copying install files to destination"
+       cp -pPR "${S}"/* "${ED}usr/libexec/webmin"
+       eend $?
+}
+
+pkg_preinst() {
+       # First stop service if running so Webmin to not messup our config
+       ebegin "Stopping any running Webmin instance prior merging"
+       rc-service --ifexists -- webmin --ifstarted stop
+       eend $?
+}
+
+pkg_postinst() {
+       # Run pkg_config phase first - non interactively
+       export INTERACTIVE="no"
+       pkg_config
+       # Every next time pkg_config should be interactive
+       INTERACTIVE="yes"
+
+       ewarn
+       ewarn "Bare in mind that not all Webmin modules are Gentoo tweaked and may have some issues."
+       ewarn "Always be careful when using modules that modify init entries, do update of webmin, install CPAN modules etc."
+       ewarn "To avoid problems, please before using any module, look at its configuration options first."
+       ewarn "(Usually there is a link at top in the right pane of Webmin for configuring the module.)"
+       ewarn
+       elog "- To make Webmin start at boot time, run: 'rc-update add webmin default'"
+       elog "- The default URL to connect to Webmin is: https://localhost:10000"
+       elog "- The default user that can login is: root"
+       elog "- To reconfigure Webmin in case of problems run 'emerge --config app-admin/webmin'"
+}
+
+pkg_prerm() {
+       # First stop service if running - we do not want Webmin to mess up config
+       ebegin "Stopping any running Webmin instance prior unmerging"
+       rc-service --ifexists -- webmin --ifstarted stop
+       eend $?
+}
+
+pkg_postrm() {
+       ewarn
+       ewarn "You have uninstalled Webmin, so have in mind that all cron jobs scheduled"
+       ewarn "by Webmin for its own modules, are left active and they will fail when Webmin is missing."
+       ewarn "To fix this just disable them if you intend to use Webmin again,"
+       ewarn "OR delete them if not."
+       ewarn
+}
+
+pkg_config(){
+       # First stop service if running
+       ebegin "Stopping any running Webmin instance"
+       rc-service --ifexists -- webmin --ifstarted stop
+       eend $?
+
+       # Next set the default reset variable to 'none'
+       # reset/_reset can be:
+       # 'none' - does not reset anything, just upgrades if a conf is present
+       #                  OR installs new conf if a conf is missing
+       # 'soft' - deletes only $config_dir/config file and thus resetting most
+       #                 conf values to their defaults. Keeps the specific Webmin cron jobs
+       # 'hard' - deletes all files in $config_dir (keeping the .keep_* Gentoo file)
+       #                 and thus resetting all Webmin. Deletes the specific Webmin cron jobs too.
+       local _reset="none"
+
+       # If in interactive mode ask user what should we do
+       if [[ "${INTERACTIVE}" = "yes" ]]; then
+               einfo
+               einfo "Please enter the number of the action you would like to perform?"
+               einfo
+               einfo "1. Update configuration"
+               einfo "   (keeps old config options and adds the new ones)"
+               einfo "2. Soft reset configuration"
+               einfo "   (keeps some old config options, the other options are set to default)"
+               ewarn "   All Webmin users will be reset"
+               einfo "3. Hard reset configuration"
+               einfo "   (all options including module options are set to default)"
+               ewarn "   You will lose all Webmin configuration options you have done till now"
+               einfo "4. Exit this configuration utility (default)"
+               while [ "$correct" != "true" ] ; do
+                       read answer
+                       if [[ "$answer" = "1" ]] ; then
+                               _reset="none"
+                               correct="true"
+                       elif [[ "$answer" = "2" ]] ; then
+                               _reset="soft"
+                               correct="true"
+                       elif  [[ "$answer" = "3" ]] ; then
+                               _reset="hard"
+                               correct="true"
+                       elif  [ "$answer" = "4" -o "$answer" = "" ] ; then
+                               die "User aborted configuration."
+                       else
+                               echo "Answer not recognized. Enter a number from 1 to 4"
+                       fi
+               done
+
+               if [[ "$_reset" = "hard" ]]; then
+                       while [ "$sure" != "true" ] ; do
+                               ewarn "You will lose all Webmin configuration options you have done till now."
+                               ewarn "Are you sure you want to do this? (y/n)"
+                               read answer
+                               if [[ $answer =~ ^[Yy]([Ee][Ss])?$ ]] ; then
+                                       sure="true"
+                               elif [[ $answer =~ ^[Nn]([Oo])?$ ]] ; then
+                                       die "User aborted configuration."
+                               else
+                                       echo "Answer not recognized. Enter 'y' or 'n'"
+                               fi
+                       done
+               fi
+       fi
+
+       export reset=$_reset
+
+       # Create ssl certificate for Webmin if there is not one in the proper place
+       if [[ ! -e "${EROOT}etc/ssl/webmin/server.pem" ]]; then
+               SSL_ORGANIZATION="${SSL_ORGANIZATION:-Webmin Server}"
+               SSL_COMMONNAME="${SSL_COMMONNAME:-*}"
+               install_cert "${EROOT}/etc/ssl/webmin/server"
+       fi
+
+       # Ensure all paths passed to the setup script use EROOT
+       export wadir="${EROOT}usr/libexec/webmin"
+       export config_dir="${EROOT}etc/webmin"
+       export var_dir="${EROOT}var/log/webmin"
+       export tempdir="${T}"
+       export pidfile="${EROOT}var/run/webmin.pid"
+       export perl="$( which perl )"
+       export os_type='gentoo-linux'
+       export os_version='*'
+       export real_os_type='Gentoo Linux'
+       export real_os_version='Any version'
+       # Forcing 'ssl' and 'ssl_redirect' for tightening security
+       export ssl=1
+       export ssl_redirect=1
+       export keyfile="${EROOT}etc/ssl/webmin/server.pem"
+       export port=10000
+
+       export atboot=0
+
+       einfo "Executing Webmin's configure script"
+       $wadir/gentoo-setup.sh
+
+       einfo "Configuration of Webmin done"
+}