mirror of
https://github.com/Ernous/TorrServerJellyfin.git
synced 2025-12-19 21:46:11 +05:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
14
.github/workflows/github-actions-docker.yml
vendored
14
.github/workflows/github-actions-docker.yml
vendored
@@ -13,16 +13,16 @@ jobs:
|
|||||||
run : echo ${{ github.event.release.tag_name }}
|
run : echo ${{ github.event.release.tag_name }}
|
||||||
-
|
-
|
||||||
name: Checkout
|
name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3.3.0
|
||||||
-
|
-
|
||||||
name: Set up QEMU
|
name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v1
|
uses: docker/setup-qemu-action@v2.1.0
|
||||||
-
|
-
|
||||||
name: Set up Docker Buildx
|
name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v1
|
uses: docker/setup-buildx-action@v2.2.1
|
||||||
-
|
-
|
||||||
name: Login to GitHub Container Registry
|
name: Login to GitHub Container Registry
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v2.1.0
|
||||||
with:
|
with:
|
||||||
registry: ghcr.io
|
registry: ghcr.io
|
||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
@@ -39,11 +39,11 @@ jobs:
|
|||||||
echo ${{ env.REG_REPO }}
|
echo ${{ env.REG_REPO }}
|
||||||
-
|
-
|
||||||
name: Build and push
|
name: Build and push
|
||||||
uses: docker/build-push-action@v2
|
uses: docker/build-push-action@v3.3.0
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
platforms: linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64
|
platforms: linux/amd64,linux/arm/v7,linux/arm64
|
||||||
push: true
|
push: true
|
||||||
tags: |
|
tags: |
|
||||||
ghcr.io/${{ env.REG_REPO }}:${{ github.event.release.tag_name }}
|
ghcr.io/${{ env.REG_REPO }}:${{ github.event.release.tag_name }}
|
||||||
ghcr.io/${{ env.REG_REPO }}:latest
|
ghcr.io/${{ env.REG_REPO }}:latest
|
||||||
@@ -6,8 +6,9 @@ WORKDIR /app
|
|||||||
RUN yarn install && yarn run build
|
RUN yarn install && yarn run build
|
||||||
### FRONT BUILD END ###
|
### FRONT BUILD END ###
|
||||||
|
|
||||||
|
|
||||||
### BUILD TORRSERVER MULTIARCH START ###
|
### BUILD TORRSERVER MULTIARCH START ###
|
||||||
FROM --platform=$BUILDPLATFORM golang:1.18-alpine as builder
|
FROM --platform=$BUILDPLATFORM golang:1.19-alpine as builder
|
||||||
|
|
||||||
COPY . /opt/src
|
COPY . /opt/src
|
||||||
COPY --from=front /app/build /opt/src/web/build
|
COPY --from=front /app/build /opt/src/web/build
|
||||||
@@ -42,6 +43,7 @@ RUN apt-get update && apt-get install -y upx-ucl && upx --best --lzma ./torrserv
|
|||||||
# && if [[ "$compress" -eq 1 ]]; then ./upx --best --lzma ./torrserver; fi
|
# && if [[ "$compress" -eq 1 ]]; then ./upx --best --lzma ./torrserver; fi
|
||||||
### UPX COMPRESSING END ###
|
### UPX COMPRESSING END ###
|
||||||
|
|
||||||
|
|
||||||
### BUILD MAIN IMAGE START ###
|
### BUILD MAIN IMAGE START ###
|
||||||
FROM alpine
|
FROM alpine
|
||||||
|
|
||||||
|
|||||||
186
installTorrServerMac.sh
Executable file
186
installTorrServerMac.sh
Executable file
@@ -0,0 +1,186 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
dirInstall="/Users/Shared/TorrServer"
|
||||||
|
serviceName="torrserver"
|
||||||
|
|
||||||
|
function checkArch() {
|
||||||
|
case $(uname -m) in
|
||||||
|
i386) architecture="386" ;;
|
||||||
|
i686) architecture="386" ;;
|
||||||
|
x86_64) architecture="amd64" ;;
|
||||||
|
aarch64) architecture="arm64" ;;
|
||||||
|
*) echo "Извините, не поддерживаемая архитектура. Продолжение невозможно" && exit 1;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
function getLatestRelease() {
|
||||||
|
curl -s "https://api.github.com/repos/YouROK/TorrServer/releases" |
|
||||||
|
grep -iE '"tag_name":|"version":' |
|
||||||
|
sed -E 's/.*"([^"]+)".*/\1/' |
|
||||||
|
head -1
|
||||||
|
}
|
||||||
|
|
||||||
|
function cleanup() {
|
||||||
|
sudo rm -f /Library/LaunchAgents/*torrserver* 1>/dev/null 2>&1
|
||||||
|
sudo rm -f /Library/LaunchDaemons/*torrserver* 1>/dev/null 2>&1
|
||||||
|
sudo rm -f $HOME/Library/LaunchAgents/*torrserver* 1>/dev/null 2>&1
|
||||||
|
sudo rm -f $HOME/Library/LaunchDaemons/*torrserver* 1>/dev/null 2>&1
|
||||||
|
self="$(basename "$0")"
|
||||||
|
runningPid=$(ps -ax|grep -i torrserver|grep -v grep|grep -v "$self"|awk '{print $1}')
|
||||||
|
sudo kill -9 $runningPid 1>/dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
function uninstall() {
|
||||||
|
echo ""
|
||||||
|
echo "Директория c TorrServer - ${dirInstall}"
|
||||||
|
echo ""
|
||||||
|
echo "Это действие удалит все данные TorrServer включая базу данных торрентов и настройки по указанному выше пути."
|
||||||
|
echo ""
|
||||||
|
printf 'Вы уверены что хотите удалить программу? '
|
||||||
|
read answer
|
||||||
|
if [ "$answer" != "${answer#[YyДд]}" ] ; then
|
||||||
|
cleanup
|
||||||
|
sudo rm -rf $dirInstall
|
||||||
|
echo ""
|
||||||
|
echo "TorrServer удален c вашего Mac"
|
||||||
|
echo ""
|
||||||
|
sleep 5
|
||||||
|
else
|
||||||
|
echo ""
|
||||||
|
echo "OK"
|
||||||
|
echo ""
|
||||||
|
sleep 5
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
checkArch
|
||||||
|
|
||||||
|
function installTorrServer() {
|
||||||
|
echo ""
|
||||||
|
echo "Устанавливаем TorrServer $(getLatestRelease) ..."
|
||||||
|
echo ""
|
||||||
|
binName="TorrServer-darwin-${architecture}"
|
||||||
|
[[ ! -d "$dirInstall" ]] && mkdir -p ${dirInstall}
|
||||||
|
urlBin="https://github.com/YouROK/TorrServer/releases/download/$(getLatestRelease)/${binName}"
|
||||||
|
if [[ ! -f "$dirInstall/$binName" ]] | [[ ! -x "$dirInstall/$binName" ]] || [[ $(stat -c%s "$dirInstall/$binName" 2>/dev/null) -eq 0 ]]; then
|
||||||
|
curl -L --progress-bar -# -o "$dirInstall/$binName" "$urlBin"
|
||||||
|
chmod a+rx "$dirInstall/$binName"
|
||||||
|
xattr -r -d com.apple.quarantine "$dirInstall/$binName"
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
echo "Создаем сервис автозагрузки TorrServer $(getLatestRelease) ..."
|
||||||
|
echo ""
|
||||||
|
echo "Система запросит ваш пароль администратора"
|
||||||
|
echo ""
|
||||||
|
cat << EOF > $dirInstall/$serviceName.plist
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>Label</key>
|
||||||
|
<string>${serviceName}</string>
|
||||||
|
<key>ServiceDescription</key>
|
||||||
|
<string>TorrServer service for MacOS</string>
|
||||||
|
<key>LaunchOnlyOnce</key>
|
||||||
|
<true/>
|
||||||
|
<key>RunAtLoad</key>
|
||||||
|
<true/>
|
||||||
|
<key>ProgramArguments</key>
|
||||||
|
<array>
|
||||||
|
<string>${dirInstall}/TorrServer-darwin-${architecture}</string>
|
||||||
|
<string>--port</string>
|
||||||
|
<string>8090</string>
|
||||||
|
<string>--path</string>
|
||||||
|
<string>${dirInstall}</string>
|
||||||
|
<string>--logpath</string>
|
||||||
|
<string>${dirInstall}/torrserver.log</string>
|
||||||
|
<string>--httpauth</string>
|
||||||
|
</array>
|
||||||
|
<key>StandardOutPath</key>
|
||||||
|
<string>${dirInstall}/torrserver.log</string>
|
||||||
|
<key>StandardErrorPath</key>
|
||||||
|
<string>${dirInstall}/torrserver.log</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
|
EOF
|
||||||
|
###
|
||||||
|
cleanup
|
||||||
|
###
|
||||||
|
printf 'Включить авторизацию на сервере? '
|
||||||
|
read answer
|
||||||
|
if [ "$answer" != "${answer#[YyДд]}" ] ;then
|
||||||
|
isAuth=1
|
||||||
|
else
|
||||||
|
isAuth=0
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
if [[ "$isAuth" == 1 ]]; then
|
||||||
|
echo "Вы выбрали установку с авторизацией"
|
||||||
|
[[ ! -f "$dirInstall/accs.db" ]] && {
|
||||||
|
echo ""
|
||||||
|
printf 'Пользователь: '
|
||||||
|
read answer
|
||||||
|
isAuthUser=$answer
|
||||||
|
echo ""
|
||||||
|
printf 'Пароль: '
|
||||||
|
read answer
|
||||||
|
isAuthPass=$answer
|
||||||
|
echo ""
|
||||||
|
echo "Устанавливаем логин и пароль: $isAuthUser:$isAuthPass"
|
||||||
|
echo ""
|
||||||
|
echo -e "{\n \"$isAuthUser\": \"$isAuthPass\"\n}" > $dirInstall/accs.db
|
||||||
|
} || {
|
||||||
|
echo ""
|
||||||
|
echo "Используйте реквизиты из ${dirInstall}/accs.db для входа"
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
else
|
||||||
|
sed -i '' -e '/httpauth/d' $dirInstall/$serviceName.plist
|
||||||
|
fi
|
||||||
|
printf 'Автозагрузка для текушего пользователя (1) или всех (2)? '
|
||||||
|
read answer
|
||||||
|
if [ "$answer" != "${answer#[1]}" ] ;then
|
||||||
|
# user
|
||||||
|
sysPath="${HOME}/Library/LaunchAgents"
|
||||||
|
[[ ! -d "$sysPath" ]] && mkdir -p ${sysPath}
|
||||||
|
cp "$dirInstall/$serviceName.plist" $sysPath
|
||||||
|
chmod 0644 "$sysPath/$serviceName.plist"
|
||||||
|
launchctl load -w "$sysPath/$serviceName.plist" 1>/dev/null 2>&1
|
||||||
|
else
|
||||||
|
# root
|
||||||
|
sysPath="/Library/LaunchDaemons"
|
||||||
|
[[ ! -d "$sysPath" ]] && sudo mkdir -p ${sysPath}
|
||||||
|
sudo cp "$dirInstall/$serviceName.plist" $sysPath
|
||||||
|
sudo chown root:wheel "$sysPath/$serviceName.plist"
|
||||||
|
sudo chmod 0644 "$sysPath/$serviceName.plist"
|
||||||
|
sudo launchctl load -w "$sysPath/$serviceName.plist" 1>/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
echo "Сервис автозагрузки записан в ${sysPath}"
|
||||||
|
echo ""
|
||||||
|
echo "TorrServer $(getLatestRelease) для ${architecture} Mac установлен в ${dirInstall}"
|
||||||
|
echo ""
|
||||||
|
echo "Теперь вы можете открыть браузер по адресу http://localhost:8090 для его настройки"
|
||||||
|
echo ""
|
||||||
|
if [[ "$isAuth" == 1 && $isAuthUser > 0 ]]; then
|
||||||
|
echo "Для авторизации введите пользователя $isAuthUser с паролем $isAuthPass"
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
sleep 60
|
||||||
|
}
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
echo "==============================================================="
|
||||||
|
echo " Скрипт установки, обновления и удаления TorrServer для MacOS"
|
||||||
|
echo "==============================================================="
|
||||||
|
echo ""
|
||||||
|
read -p "Хотите установить или обновить TorrServer? Для удаления введите «Удалить» " yn
|
||||||
|
case $yn in
|
||||||
|
[YyДд]* ) installTorrServer; break;;
|
||||||
|
[DdУу]* ) uninstall; break;;
|
||||||
|
[NnНн]* ) exit;;
|
||||||
|
* ) echo "Ввведите Да (Yes) Нет (No) или Удалить (Delete).";;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
echo "Have Fun!"
|
||||||
|
echo ""
|
||||||
|
sleep 5
|
||||||
@@ -7874,9 +7874,9 @@ json-stable-stringify-without-jsonify@^1.0.1:
|
|||||||
integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
|
integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
|
||||||
|
|
||||||
json5@^1.0.1:
|
json5@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.2"
|
||||||
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
|
resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593"
|
||||||
integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
|
integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==
|
||||||
dependencies:
|
dependencies:
|
||||||
minimist "^1.2.0"
|
minimist "^1.2.0"
|
||||||
|
|
||||||
@@ -8525,9 +8525,9 @@ minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2:
|
|||||||
brace-expansion "^1.1.7"
|
brace-expansion "^1.1.7"
|
||||||
|
|
||||||
minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.6:
|
minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.6:
|
||||||
version "1.2.6"
|
version "1.2.7"
|
||||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
|
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18"
|
||||||
integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
|
integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==
|
||||||
|
|
||||||
minipass-collect@^1.0.2:
|
minipass-collect@^1.0.2:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
|
|||||||
Reference in New Issue
Block a user