commit:     30cf999cd2ab9c4d29751305c986d4e692721d2c
Author:     Jesus P Rey (Chuso) <gentoo <AT> chuso <DOT> net>
AuthorDate: Sat Jan 30 19:18:29 2021 +0000
Commit:     Joonas Niilola <juippis <AT> gentoo <DOT> org>
CommitDate: Thu Feb 18 08:24:51 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=30cf999c

net-p2p/mldonkey: revision bump to 3.1.7-r1

Adds support to send init.d commands via telnet in addition to http.

Signed-off-by: Jesus P Rey <gentoo <AT> chuso.net>
Closes: https://bugs.gentoo.org/338017
Signed-off-by: Joonas Niilola <juippis <AT> gentoo.org>

 .../files/{mldonkey.confd-2.8 => mldonkey.confd}   |  3 +
 net-p2p/mldonkey/files/mldonkey.initd              | 70 ++++++++++++++--------
 ...onkey-3.1.7.ebuild => mldonkey-3.1.7-r1.ebuild} |  3 +-
 3 files changed, 50 insertions(+), 26 deletions(-)

diff --git a/net-p2p/mldonkey/files/mldonkey.confd-2.8 
b/net-p2p/mldonkey/files/mldonkey.confd
similarity index 93%
rename from net-p2p/mldonkey/files/mldonkey.confd-2.8
rename to net-p2p/mldonkey/files/mldonkey.confd
index 1d1f282234f..7cdb2b7134e 100644
--- a/net-p2p/mldonkey/files/mldonkey.confd-2.8
+++ b/net-p2p/mldonkey/files/mldonkey.confd
@@ -33,6 +33,9 @@ SERVER="localhost"
 # port for webinterface, usually 4080
 PORT="4080"
 
+# port for telnet interface, usually 4000
+TELNET_PORT="4000"
+
 # to enable password restricted access,
 # uncomment and set BOTH following vars:
 #USERNAME="admin"

diff --git a/net-p2p/mldonkey/files/mldonkey.initd 
b/net-p2p/mldonkey/files/mldonkey.initd
index 12dd599de7b..b7e56137239 100644
--- a/net-p2p/mldonkey/files/mldonkey.initd
+++ b/net-p2p/mldonkey/files/mldonkey.initd
@@ -35,26 +35,55 @@ start() {
        eend $?
 }
 
-setup_uri() {
-       BASE="http://";
+send_telnet_commands() {
+       if [ -z "${TELNET_PORT+x}" ]; then
+               return 1
+       fi
+       local cmds=
        if [ -n "${USERNAME}" -a -n "${PASSWORD}" ]; then
-               BASE="${BASE}${USERNAME}:${PASSWORD}@"
+               cmds="auth ${USERNAME} ${PASSWORD}\n"
        fi
-       BASE="${BASE}${SERVER}:${PORT}"
+       cmds="$cmds\nansi false\n"
+       while [ $# -gt 0 ]; do
+               cmds="$cmds$1\n"
+               shift
+       done
+       printf "$cmds\nexit\n" | nc -w "${MLDONKEY_TIMEOUT}" localhost 
"${TELNET_PORT}" 2> /dev/null
+       return $?
+}
+
+send_http_commands() {
+       if [ -z "${PORT+x}" ]; then
+               return 1
+       fi
+       local base="http://";
+       if [ -n "${USERNAME}" -a -n "${PASSWORD}" ]; then
+               base="${base}${USERNAME}:${PASSWORD}@"
+       fi
+       base="${base}${SERVER}:${PORT}"
+       local retval=0
+       while [ $retval -eq 0 -a $# -gt 0 ]; do
+               wget -q -O /dev/stdout --timeout="${MLDONKEY_TIMEOUT}" 
"${base}/submit?q=${1// /+}" 2> /dev/null
+               retval=$?
+               shift
+       done
+       return $retval
+}
+
+send_commands() {
+       send_telnet_commands "$@" &> /dev/null || send_http_commands "$@" &> 
/dev/null
+       return $?
 }
 
 stop() {
        ebegin "Stopping ${SVCNAME} -- please wait"
 
-       setup_uri
-       wget --spider --timeout="${MLDONKEY_TIMEOUT}" 
"${BASE}"/submit?q=close_fds -q
-       wget --spider --timeout="${MLDONKEY_TIMEOUT}" "${BASE}"/submit?q=save -q
-       wget --spider --timeout="${MLDONKEY_TIMEOUT}" "${BASE}"/submit?q=kill -q
+       send_commands close_fds save kill
 
        # give it a chance to die:
        local timeout=${MLDONKEY_TIMEOUT}
        while [ $timeout -gt 0 ]; do
-               if ! start-stop-daemon --test --quiet --stop \
+               if ! start-stop-daemon --test --quiet --quiet --stop \
                        --exec "${MLDONKEY_BINARY}" \
                        --pidfile /var/run/"${SVCNAME}".pid ; then
                        eend 0
@@ -87,32 +116,23 @@ reload() {
 
 slow() {
        ebegin "Reducing bandwidth to ${LOW_DOWN}k/${LOW_UP}k"
-       setup_uri
-       wget --spider --timeout="${MLDONKEY_TIMEOUT}" \
-               "${BASE}/submit?q=set+max_hard_download_rate+${LOW_DOWN}" -q
-       wget --spider --timeout=${MLDONKEY_TIMEOUT} \
-               "${BASE}/submit?q=set+max_hard_upload_rate+${LOW_UP}" -q
+       send_commands "set max_hard_download_rate ${LOW_DOWN}" "set 
max_hard_upload_rate ${LOW_UP}"
        eend $?
 }
 
 fast() {
        ebegin "Increasing bandwidth to ${HIGH_DOWN}k/${HIGH_UP}k"
-
-       setup_uri
-       wget --spider --timeout="${MLDONKEY_TIMEOUT}" \
-               "${BASE}/submit?q=set+max_hard_upload_rate+${HIGH_UP}" -q
-       wget --spider --timeout="${MLDONKEY_TIMEOUT}" \
-               "${BASE}/submit?q=set+max_hard_download_rate+${HIGH_DOWN}" -q
+       send_commands "set max_hard_upload_rate ${HIGH_UP}" "set 
max_hard_download_rate ${HIGH_DOWN}"
        eend $?
 }
 
 
 info() {
-       setup_uri
-       local result=$(wget --timeout="${MLDONKEY_TIMEOUT}" \
-               -O - "${BASE}"/submit?q=vo 2>/dev/null | \
-               grep -C1 max_hard_upload | \
-               grep value=\" | cut -d\" -f2)
+       set -o pipefail
+       local result=$(
+               send_telnet_commands "voo max_hard_upload_rate" | grep -a 
'max_hard_upload_rate.* =' | cut -d \  -f 3 ||
+               send_http_commands "voo max_hard_upload_rate" | fgrep 
name=value | sed -e 's/.*value="//' -e 's/".*//'
+       )
        if [ "${result}" = "${LOW_UP}" ]; then
                einfo "${SVCNAME} runs slow"
        else

diff --git a/net-p2p/mldonkey/mldonkey-3.1.7.ebuild 
b/net-p2p/mldonkey/mldonkey-3.1.7-r1.ebuild
similarity index 98%
rename from net-p2p/mldonkey/mldonkey-3.1.7.ebuild
rename to net-p2p/mldonkey/mldonkey-3.1.7-r1.ebuild
index 07ce1065498..0eaeac9e746 100644
--- a/net-p2p/mldonkey/mldonkey-3.1.7.ebuild
+++ b/net-p2p/mldonkey/mldonkey-3.1.7-r1.ebuild
@@ -19,6 +19,7 @@ REQUIRED_USE="guionly? ( gtk )"
 
 RDEPEND="dev-lang/perl
        dev-ml/camlp4:=
+       net-analyzer/netcat
        gd? ( media-libs/gd[truetype] )
        gtk? (
                gnome-base/librsvg
@@ -137,7 +138,7 @@ src_install() {
                done
                use bittorrent && newbin "make_torrent${myext}" make_torrent
 
-               newconfd "${FILESDIR}/mldonkey.confd-2.8" mldonkey
+               newconfd "${FILESDIR}/mldonkey.confd" mldonkey
                fperms 600 /etc/conf.d/mldonkey
                newinitd "${FILESDIR}/mldonkey.initd" mldonkey
        fi

Reply via email to