gtk-gnutella-upnp now runs as daemon to ensure connection stability
[mirrors/Programs.git] / bash / gtk-gnutella-upnp / gtk-gnutella-upnp.sh
index d3e83470dd70041a1ed302e8089f5e9010f040cc..abf7e551ae4903f843f620790f178334b19595a5 100755 (executable)
@@ -1,11 +1,29 @@
 #!/bin/bash
-upnpc="$(which upnpc)";
-gnet_port="$(grep listen_port ~/.gtk-gnutella/config_gnet | grep -o [0-9]* | head -n 1)";
-test "$gnet_port" -gt 1 || upnpc=true;
-"$upnpc" -r "$gnet_port" TCP "$gnet_port" TCP;
-"$upnpc" -r "$gnet_port" UDP "$gnet_port" UDP;
-echo -e '\n======================= GTK-GNUTELLA =======================\n'
-echo "listen_port=$gnet_port"
-gtk-gnutella $@;
-echo -e '\n===================== GTK-GNUTELLA-END =====================\n'
-"$upnpc" -d "$gnet_port" TCP "$gnet_port" UDP;
+gtk-gnutella-listen-port() {
+       grep listen_port ~/.gtk-gnutella/config_gnet | grep -o [0-9]* | head -n 1;
+}
+
+gtk-gnutella-upnpc() {
+       upnpc="$(which upnpc)";
+       test "$(echo $@ | grep -o [0-9]* | head -n 1)" -gt 1 || upnpc=true;
+       "$upnpc" $@ > ~/.gtk-gnutella/upnpc.log;
+}
+
+gtk-gnutella-upnp-daemon() {
+       sleep 1;
+       echo ======= gtk-gnutella-upnp-daemon started ========
+       while pgrep -x gtk-gnutella -u "$UID" >/dev/null; do
+               gnet_port="$(gtk-gnutella-listen-port)";
+               gtk-gnutella-upnpc -r "$gnet_port" TCP "$gnet_port" UDP;
+               sleep 60;
+       done;
+       echo Shutting down gtk-gnutella-upnp-daemon...
+       gnet_port="$(gtk-gnutella-listen-port)";
+       gtk-gnutella-upnpc -d "$gnet_port" TCP "$gnet_port" UDP;
+       echo ======= gtk-gnutella-upnp-daemon  exited ========
+}
+
+gtk-gnutella-upnp-daemon &
+gtk-gnutella $@; echo;
+pkill -x sleep -P $!;
+wait $!;
This page took 0.145375 seconds and 4 git commands to generate.