diff options
author | Holodoc | 2017-02-28 19:17:14 +0100 |
---|---|---|
committer | Holodoc | 2017-02-28 19:17:14 +0100 |
commit | eafb98d304dbc85409b899e7299c53514382c2b7 (patch) | |
tree | 40d76925988a5d24e85efaf64167877862a7b4f8 | |
parent | e85956b99476eec32bf0ffe6c77353211f71b3d5 (diff) | |
download | aur-eafb98d304dbc85409b899e7299c53514382c2b7.tar.gz |
changing type of service,own ctrl
-rw-r--r-- | .SRCINFO | 16 | ||||
-rwxr-xr-x | JDownloader | 5 | ||||
-rw-r--r-- | JDownloaderHeadless | 20 | ||||
-rw-r--r-- | JDownloaderHeadlessCleanLogin | 4 | ||||
-rw-r--r-- | JDownloaderHeadlessCtl | 98 | ||||
-rw-r--r-- | PKGBUILD | 21 | ||||
-rw-r--r-- | changeUser | 24 | ||||
-rw-r--r-- | functions.sh | 48 | ||||
-rw-r--r-- | jdownloader.service | 9 |
9 files changed, 197 insertions, 48 deletions
@@ -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 + @@ -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 |