summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolodoc2017-02-28 19:17:14 +0100
committerHolodoc2017-02-28 19:17:14 +0100
commiteafb98d304dbc85409b899e7299c53514382c2b7 (patch)
tree40d76925988a5d24e85efaf64167877862a7b4f8
parente85956b99476eec32bf0ffe6c77353211f71b3d5 (diff)
downloadaur-eafb98d304dbc85409b899e7299c53514382c2b7.tar.gz
changing type of service,own ctrl
-rw-r--r--.SRCINFO16
-rwxr-xr-xJDownloader5
-rw-r--r--JDownloaderHeadless20
-rw-r--r--JDownloaderHeadlessCleanLogin4
-rw-r--r--JDownloaderHeadlessCtl98
-rw-r--r--PKGBUILD21
-rw-r--r--changeUser24
-rw-r--r--functions.sh48
-rw-r--r--jdownloader.service9
9 files changed, 197 insertions, 48 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 4f83ac79198f..dcfcd36798c8 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = jdownloader2
pkgdesc = Download manager, written in Java, for one-click hosting sites like Rapidshare and Megaupload. Uses its own updater.
pkgver = latest
- pkgrel = 10
+ pkgrel = 12
url = http://jdownloader.org/
install = jdownloader.install
arch = any
@@ -20,7 +20,8 @@ pkgbase = jdownloader2
replaces = jdownloader
source = JDownloader
source = JDownloaderHeadless
- source = changeUser
+ source = JDownloaderHeadlessCtl
+ source = functions.sh
source = JDownloaderHeadlessCleanLogin
source = jdownloader.xml
source = jdownloader.desktop
@@ -38,10 +39,11 @@ pkgbase = jdownloader2
source = jdownloader48.png
source = jdownloader256.png
source = jdownloader.service
- sha256sums = 42796e98aa678e69e6c08d37302dac1f922b113371406ef0a8d5db45fa66d1ee
- sha256sums = 79c383f7e875c3c3e4781a58e2244b5cb5458cc70f0664f5a26e20979326a7d7
- sha256sums = 6a44f5719a2c9898ef901b2fde3ec026c268c60e6514b83737a07355f9285e7e
- sha256sums = d572f8c2be60e013bc8a18c1179f22766ee6885bf02dbdb9c9095371ac31c408
+ sha256sums = cab5904f226028fdc9384f407ceca34b4305885176fad29b08a2e8b83653a345
+ sha256sums = d555c78d8110e536aee67de765ee5134d872fbb48354050f7b2f14ff5499120a
+ sha256sums = dca392fad29c70eff609ec25abaefd33343c8a6c98088e0719c6746759ed0aa5
+ sha256sums = 70f4a5cd95532c70ae20a357e655d01ac23fe92bb71feac45973e2b53d024cff
+ sha256sums = 1c9949bfeaf3595783eec9501e600cb8c4443e04f72d57c095560fb66dcd53d1
sha256sums = c4301592694b3273ed44814debcc03bf1e4fc85882954f5c03e55508c53c4491
sha256sums = 44a499df472328f9034f9972aad02df0fc27a45ef1bb3e9314576d2fa9fdfcbe
sha256sums = 92cfbe543ee1f9e094347dbd9c0c6a59bd52974145f00dbece8ed0da9a828bfa
@@ -57,7 +59,7 @@ pkgbase = jdownloader2
sha256sums = cb63ab195ff1b876b668dbe518f4572971e5e0fe239a627ef67486933fcaed07
sha256sums = b5540647f8120f723fb14747473a96e3ee031ffbc0f097e66c6cfd3431bf4e56
sha256sums = 6c7a28ec72c8627e9bf06a58d7f6bfed075632a6743e1c8087dc0fa065261504
- sha256sums = 639bac9f10edfbedd1bff9d624e2bd2bafc62fc2a85089c296dd1ef39b25c83c
+ sha256sums = 8d170fd301b37302a4f64cec759bdb5c879cb30c8b8e94120f3f985df1d31b7f
pkgname = jdownloader2
diff --git a/JDownloader b/JDownloader
index edd8c047ab3a..73178899cadb 100755
--- a/JDownloader
+++ b/JDownloader
@@ -1,6 +1,9 @@
#!/usr/bin/env bash
THIS_PATH="$(dirname "$(readlink -f "$0")")"
-source "$THIS_PATH/changeUser"
+source "$THIS_PATH/functions.sh"
+changeUser
+changePath
+downloadJDownloader
exec java -jar JDownloader.jar "$@"
diff --git a/JDownloaderHeadless b/JDownloaderHeadless
index 99fef8c87d37..c3d4130920b6 100644
--- a/JDownloaderHeadless
+++ b/JDownloaderHeadless
@@ -1,7 +1,11 @@
#!/usr/bin/env bash
+set -u
THIS_PATH="$(dirname "$(readlink -f "$0")")"
-source "$THIS_PATH/changeUser"
+source "$THIS_PATH/functions.sh"
+changeUser
+changePath
+downloadJDownloader
function showFailure(){
local FAILURE="$1"
@@ -14,6 +18,11 @@ function showFailure(){
exit 2
fi
}
+AS_DAEMON=2
+if [ "${1:-}" == "--daemon" ]; then
+ AS_DAEMON=0
+ shift
+fi
#check for config
if [ ! -f "cfg/org.jdownloader.api.myjdownloader.MyJDownloaderSettings.json" ]; then
@@ -32,7 +41,7 @@ if [ $? -ne 0 ]; then
fi
LOGFILE="JDownloader.service.log"
-if [ -t 0 ] ; then
+if [ -t 0 -a "${AS_DAEMON}" -eq 2 ] ; then
exec java -Djava.awt.headless=true -jar JDownloader.jar -norestart "$@"
else
if [ -f "$LOGFILE" ]; then
@@ -40,5 +49,10 @@ else
mv "${LOGFILE}" "${LOGFILE}.old"
fi
echo "All output is redirected to \"$(readlink -f "${LOGFILE}")\""
- exec java -Djava.awt.headless=true -jar JDownloader.jar -norestart "$@" >"${LOGFILE}" 2>&1
+ if [ "${AS_DAEMON}" -eq 0 ]; then
+ nohup java -Djava.awt.headless=true -jar JDownloader.jar "$@" >"${LOGFILE}" 2>&1 &
+ else
+ exec java -Djava.awt.headless=true -jar JDownloader.jar "$@" >"${LOGFILE}" 2>&1
+ fi
fi
+sleep 5
diff --git a/JDownloaderHeadlessCleanLogin b/JDownloaderHeadlessCleanLogin
index 3b88f1d77325..935f0d6a0974 100644
--- a/JDownloaderHeadlessCleanLogin
+++ b/JDownloaderHeadlessCleanLogin
@@ -1,6 +1,8 @@
#!/usr/bin/env bash
THIS_PATH="$(dirname "$(readlink -f "$0")")"
-source "$THIS_PATH/changeUser"
+source "$THIS_PATH/functions.sh"
+changeUser
+changePath
LOGFILE="JDownloader.service.log"
diff --git a/JDownloaderHeadlessCtl b/JDownloaderHeadlessCtl
new file mode 100644
index 000000000000..06de4b7f478d
--- /dev/null
+++ b/JDownloaderHeadlessCtl
@@ -0,0 +1,98 @@
+#!/usr/bin/env bash
+set -u
+
+THIS_PATH="$(dirname "$(readlink -f "$0")")"
+
+source "$THIS_PATH/functions.sh"
+changePath
+
+#Common variable for the pid of running instance (initially none)
+JDPID=0
+
+#check if jdownloader is running (0=yes, 2=no). This function sets environment variable JDPID
+function getStatus(){
+ if [ -f "JD2.lock" ]; then
+ FUSER_STR="$(fuser "JD2.lock" 2>/dev/null)"
+ if [ $? -eq 0 ]; then
+ # get the PID
+ JDPID="$(echo "$FUSER_STR" | rev | cut -f 1 -d ' ' | rev)"
+ return 0
+ else
+ return 2
+ fi
+
+ else
+ return 2
+ fi
+}
+
+
+
+ACTION="${1:-}"
+
+if [ -z "$ACTION" ]; then
+ echo "$0 start/stop/status"
+ exit 2
+fi
+
+getStatus
+JDRUNS=$?
+
+if [ "$ACTION" = "status" ]; then
+ if [ $JDRUNS -eq 0 ]; then
+ echo "JDownloader is running under PID $JDPID"
+ exit 0
+ else
+ echo "JDownloader is currently not running"
+ exit 2
+ fi
+elif [ "$ACTION" = "start" ]; then
+ if [ $JDRUNS -eq 0 ]; then
+ echo "JDownloader is already running under PID $JDPID"
+ exit 0
+ fi
+ if [ "$JD_SCOPE" = "global" ]; then
+ if [ -t 0 ] && isRoot ; then
+ systemctl status jdownloader >/dev/null
+ if [ $? -ne 0 ] || isRoot ; then
+ echo "redirecting to systemctl..."
+ systemctl start jdownloader
+ exit $?
+ fi
+ fi
+ fi
+
+
+ /usr/bin/JDownloaderHeadless --daemon
+ exit $?
+elif [ "$ACTION" = "stop" ]; then
+ if [ $JDRUNS -ne 0 ]; then
+ echo "JDownloader is not running"
+ exit 2
+ fi
+ if [ "$JD_SCOPE" = "global" ]; then
+ if [ -t 0 ] && isRoot ; then
+ systemctl status jdownloader >/dev/null
+ if [ $? -eq 0 ]; then
+ echo "redirecting to systemctl..."
+ systemctl stop jdownloader
+ exit $?
+ fi
+ fi
+ fi
+
+ while true; do
+ ps -p $JDPID >/dev/null 2>/dev/null
+ if [ $? -ne 0 ]; then
+ break
+ fi
+ echo "trying to kill jdownloader with PID $JDPID"
+ kill $JDPID
+ sleep 5
+ done
+ exit 0
+else
+ echo "unknown command!"
+ exit 2
+fi
+
diff --git a/PKGBUILD b/PKGBUILD
index 30c55e3fdd4c..1a1439f7d0d3 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,7 +1,7 @@
# Maintainer: Holodoc
pkgname=jdownloader2
pkgver=latest
-pkgrel=10
+pkgrel=12
pkgdesc='Download manager, written in Java, for one-click hosting sites like Rapidshare and Megaupload. Uses its own updater.'
arch=('any')
conflicts=('jdownloader')
@@ -13,7 +13,8 @@ optdepends=('phantomjs: needed for some remote capture solving')
install='jdownloader.install'
source=('JDownloader'
'JDownloaderHeadless'
- 'changeUser'
+ 'JDownloaderHeadlessCtl'
+ 'functions.sh'
'JDownloaderHeadlessCleanLogin'
'jdownloader.xml'
'jdownloader.desktop'
@@ -31,10 +32,11 @@ source=('JDownloader'
'jdownloader48.png'
'jdownloader256.png'
'jdownloader.service' )
-sha256sums=('42796e98aa678e69e6c08d37302dac1f922b113371406ef0a8d5db45fa66d1ee'
- '79c383f7e875c3c3e4781a58e2244b5cb5458cc70f0664f5a26e20979326a7d7'
- '6a44f5719a2c9898ef901b2fde3ec026c268c60e6514b83737a07355f9285e7e'
- 'd572f8c2be60e013bc8a18c1179f22766ee6885bf02dbdb9c9095371ac31c408'
+sha256sums=('cab5904f226028fdc9384f407ceca34b4305885176fad29b08a2e8b83653a345'
+ 'd555c78d8110e536aee67de765ee5134d872fbb48354050f7b2f14ff5499120a'
+ 'dca392fad29c70eff609ec25abaefd33343c8a6c98088e0719c6746759ed0aa5'
+ '70f4a5cd95532c70ae20a357e655d01ac23fe92bb71feac45973e2b53d024cff'
+ '1c9949bfeaf3595783eec9501e600cb8c4443e04f72d57c095560fb66dcd53d1'
'c4301592694b3273ed44814debcc03bf1e4fc85882954f5c03e55508c53c4491'
'44a499df472328f9034f9972aad02df0fc27a45ef1bb3e9314576d2fa9fdfcbe'
@@ -51,12 +53,13 @@ sha256sums=('42796e98aa678e69e6c08d37302dac1f922b113371406ef0a8d5db45fa66d1ee'
'cb63ab195ff1b876b668dbe518f4572971e5e0fe239a627ef67486933fcaed07'
'b5540647f8120f723fb14747473a96e3ee031ffbc0f097e66c6cfd3431bf4e56'
'6c7a28ec72c8627e9bf06a58d7f6bfed075632a6743e1c8087dc0fa065261504'
- '639bac9f10edfbedd1bff9d624e2bd2bafc62fc2a85089c296dd1ef39b25c83c')
+ '8d170fd301b37302a4f64cec759bdb5c879cb30c8b8e94120f3f985df1d31b7f')
package() {
install -d -m755 "$pkgdir/opt/JDownloaderScripts"
install -D -m755 "$srcdir/JDownloader" "$pkgdir/opt/JDownloaderScripts/JDownloader"
install -D -m755 "$srcdir/JDownloaderHeadless" "$pkgdir/opt/JDownloaderScripts/JDownloaderHeadless"
- install -D -m755 "$srcdir/changeUser" "$pkgdir/opt/JDownloaderScripts/changeUser"
+ install -D -m755 "$srcdir/JDownloaderHeadlessCtl" "$pkgdir/opt/JDownloaderScripts/JDownloaderHeadlessCtl"
+ install -D -m755 "$srcdir/functions.sh" "$pkgdir/opt/JDownloaderScripts/functions.sh"
install -D -m755 "$srcdir/JDownloaderHeadlessCleanLogin" "$pkgdir/opt/JDownloaderScripts/JDownloaderHeadlessCleanLogin"
@@ -83,6 +86,6 @@ package() {
ln -s "/opt/JDownloaderScripts/JDownloader" "${pkgdir}/usr/bin/JDownloader"
ln -s "/opt/JDownloaderScripts/JDownloader" "${pkgdir}/usr/bin/jdownloader"
ln -s "/opt/JDownloaderScripts/JDownloaderHeadless" "${pkgdir}/usr/bin/JDownloaderHeadless"
-
+ ln -s "/opt/JDownloaderScripts/JDownloaderHeadlessCtl" "${pkgdir}/usr/bin/JDownloaderHeadlessCtl"
ln -s "/opt/JDownloaderScripts/JDownloaderHeadlessCleanLogin" "${pkgdir}/usr/bin/JDownloaderHeadlessCleanLogin"
}
diff --git a/changeUser b/changeUser
deleted file mode 100644
index a07abaec017c..000000000000
--- a/changeUser
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/env bash
-if [ "$(id -u)" -eq "0" ]; then
- #restart as user jdownloader
- echo "changing to user \"jdownloader\""
- runuser jdownloader -c "/bin/bash $0 $@" -s /bin/bash
- exit $?
-fi
-groups | grep -q -E '(\s|^)jdownloader(\s|$)' >/dev/null
-if [ "$?" -eq 0 ]; then
- echo "Starting global JDownloader"
- umask u=rwx,g=rwx,o=rx
- cd '/opt/JDownloader'
-else
- echo "starting local JDownloader"
- mkdir -p "${HOME}/.jd"
- cd "${HOME}/.jd"
-fi
-
-if [ ! -f "JDownloader.jar" ]; then
- wget -O JDownloader.jar http://installer.jdownloader.org/JDownloader.jar
-fi
-
-LOGFILE="JDownloader.service.log"
-
diff --git a/functions.sh b/functions.sh
new file mode 100644
index 000000000000..dcac4f3ad1c0
--- /dev/null
+++ b/functions.sh
@@ -0,0 +1,48 @@
+#!/usr/bin/env bash
+
+function changePath(){
+ # check the groups of the current loggedin users
+ groups | grep -q -E '(\s|^)jdownloader(\s|$)' >/dev/null
+ if [ "$?" -eq 0 ] || isRoot ; then
+ export JD_SCOPE="global"
+ echo "[global JDownloader scope]"
+ umask u=rwx,g=rwx,o=rx
+ cd '/opt/JDownloader'
+ else
+ export JD_SCOPE="user"
+ echo "[user JDownloader scope]"
+ mkdir -p "${HOME}/.jd"
+ cd "${HOME}/.jd"
+ fi
+}
+
+function changeUser(){
+ if isRoot ; then
+ #restart as user jdownloader
+ echo "changing to user \"jdownloader\""
+ runuser jdownloader -c "/bin/bash $0 $@" -s /bin/bash
+ exit $?
+ fi
+
+}
+
+function isRoot(){
+ if [ "$(id -u)" -eq "0" ]; then
+ return 0
+ fi
+ return 2
+}
+
+
+function downloadJDownloader(){
+ changePath
+ if [ ! -f "JDownloader.jar" ]; then
+ wget -O JDownloader.jar http://installer.jdownloader.org/JDownloader.jar
+ if [ $? -ne 0 ]; then
+ echo "Cannot download Jdownloader!"
+ exit 2
+ fi
+ fi
+}
+LOGFILE="JDownloader.service.log"
+
diff --git a/jdownloader.service b/jdownloader.service
index f854d51cf1b7..f029963e64d7 100644
--- a/jdownloader.service
+++ b/jdownloader.service
@@ -3,10 +3,13 @@ Description=JDownload Headless
After=network.target
[Service]
-ExecStart=/usr/bin/JDownloaderHeadless
-ExecStop=
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/opt/JDownloaderScripts/JDownloaderHeadlessCtl start
+ExecStop=/opt/JDownloaderScripts/JDownloaderHeadlessCtl stop
User=jdownloader
Group=jdownloader
-Restart=on-success
+
+
[Install]
WantedBy=multi-user.target