diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ec53ade..d44c304 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -40,10 +40,10 @@ jobs: race: false ldflags: > -s -w - -X 'github.com/debridmediamanager/zurg/internal.BuiltAt=$(date +%Y-%m-%dT%H:%M:%S)' - -X 'github.com/debridmediamanager/zurg/internal.GoVersion=$(go version | cut -d ' ' -f 3)' - -X 'github.com/debridmediamanager/zurg/internal.GitCommit=$(git rev-parse HEAD)' - -X 'github.com/debridmediamanager/zurg/internal.Version=${{ steps.version.outputs.version }}' + -X 'github.com/debridmediamanager/zurg/internal/version.BuiltAt=$(date +%Y-%m-%dT%H:%M:%S)' + -X 'github.com/debridmediamanager/zurg/internal/version.GoVersion=$(go version | cut -d ' ' -f 3)' + -X 'github.com/debridmediamanager/zurg/internal/version.GitCommit=$(git rev-parse HEAD)' + -X 'github.com/debridmediamanager/zurg/internal/version.Version=${{ steps.version.outputs.version }}' buildmode: default trimpath: true diff --git a/Dockerfile b/Dockerfile index 162e63f..2c18177 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,7 +11,7 @@ FROM golang:1-alpine AS builder WORKDIR /app COPY . . RUN apk add --no-cache bash git go gcc musl-dev curl fuse -RUN go build -ldflags="-s -w -X 'github.com/debridmediamanager/zurg/internal.BuiltAt=${BuiltAt}' -X 'github.com/debridmediamanager/zurg/internal.GoVersion=${GoVersion}' -X 'github.com/debridmediamanager/zurg/internal.GitCommit=${GitCommit}' -X 'github.com/debridmediamanager/zurg/internal.Version=${Version}'" -o zurg ./cmd/zurg +RUN go build -ldflags="-s -w -X 'github.com/debridmediamanager/zurg/internal/version.BuiltAt=${BuiltAt}' -X 'github.com/debridmediamanager/zurg/internal/version.GoVersion=${GoVersion}' -X 'github.com/debridmediamanager/zurg/internal/version.GitCommit=${GitCommit}' -X 'github.com/debridmediamanager/zurg/internal/version.Version=${Version}'" -o zurg ./cmd/zurg # Obfuscation stage FROM alpine:3 AS obfuscator diff --git a/build.sh b/build.sh deleted file mode 100755 index 551f858..0000000 --- a/build.sh +++ /dev/null @@ -1,109 +0,0 @@ -#!/bin/bash - -appName="zurg" -builtAt="$(date +'%F %T %z')" -goVersion=$(go version | sed 's/go version //') -gitCommit=$(git log --pretty=format:"%h" -1) - -if [ "$1" = "dev" ]; then - version="dev" -else - version=$(git describe --abbrev=0 --tags) -fi - -echo "app version: $version" - -ldflags="\ --w -s \ --X 'github.com/debridmediamanager/zurg/internal/version.BuiltAt=$builtAt' \ --X 'github.com/debridmediamanager/zurg/internal/version.GoVersion=$goVersion' \ --X 'github.com/debridmediamanager/zurg/internal/version.GitCommit=$gitCommit' \ --X 'github.com/debridmediamanager/zurg/internal/version.Version=$version' \ -" - -BuildDev() { - # rm -rf .git/ - xgo -targets=linux/amd64,windows/amd64,darwin/arm64 -out "$appName" -ldflags="$ldflags" ./cmd/zurg - mkdir -p "dist" - mv zurg-* dist - cd dist - upx -9 ./zurg-linux-amd64 - upx -9 ./zurg-windows* - find . -type f -print0 | xargs -0 md5sum >md5.txt - cat md5.txt -} - -BuildDocker() { - go build -o ./bin/zurg -ldflags="$ldflags" . -} - -BuildRelease() { - # rm -rf .git/ - mkdir -p "build" - muslflags="--extldflags '-static -fpic' $ldflags" - BASE="https://musl.nn.ci/" - FILES=(x86_64-linux-musl-cross aarch64-linux-musl-cross arm-linux-musleabihf-cross mips-linux-musl-cross mips64-linux-musl-cross mips64el-linux-musl-cross mipsel-linux-musl-cross powerpc64le-linux-musl-cross s390x-linux-musl-cross) - for i in "${FILES[@]}"; do - url="${BASE}${i}.tgz" - curl -L -o "${i}.tgz" "${url}" - sudo tar xf "${i}.tgz" --strip-components 1 -C /usr/local - done - OS_ARCHES=(linux-musl-amd64 linux-musl-arm64 linux-musl-arm linux-musl-mips linux-musl-mips64 linux-musl-mips64le linux-musl-mipsle linux-musl-ppc64le linux-musl-s390x) - CGO_ARGS=(x86_64-linux-musl-gcc aarch64-linux-musl-gcc arm-linux-musleabihf-gcc mips-linux-musl-gcc mips64-linux-musl-gcc mips64el-linux-musl-gcc mipsel-linux-musl-gcc powerpc64le-linux-musl-gcc s390x-linux-musl-gcc) - for i in "${!OS_ARCHES[@]}"; do - os_arch=${OS_ARCHES[$i]} - cgo_cc=${CGO_ARGS[$i]} - echo building for ${os_arch} - export GOOS=${os_arch%%-*} - export GOARCH=${os_arch##*-} - export CC=${cgo_cc} - export CGO_ENABLED=1 - go build -o ./build/$appName-$os_arch -ldflags="$muslflags" . - done - xgo -out "$appName" -ldflags="$ldflags" . - # why? Because some target platforms seem to have issues with upx compression - upx -9 ./zurg-linux-amd64 - upx -9 ./zurg-windows* - mv zurg-* build -} - -MakeRelease() { - cd build - mkdir compress - for i in $(find . -type f -name "$appName-linux-*"); do - cp "$i" zurg - tar -czvf compress/"$i".tar.gz zurg - rm -f zurg - done - for i in $(find . -type f -name "$appName-darwin-*"); do - cp "$i" zurg - tar -czvf compress/"$i".tar.gz zurg - rm -f zurg - done - for i in $(find . -type f -name "$appName-windows-*"); do - cp "$i" zurg.exe - zip compress/$(echo $i | sed 's/\.[^.]*$//').zip zurg.exe - rm -f zurg.exe - done - cd compress - find . -type f -print0 | xargs -0 md5sum >md5.txt - cat md5.txt - cd ../.. -} - -if [ "$1" = "dev" ]; then - if [ "$2" = "docker" ]; then - BuildDocker - else - BuildDev - fi -elif [ "$1" = "release" ]; then - if [ "$2" = "docker" ]; then - BuildDocker - else - BuildRelease - MakeRelease - fi -else - echo -e "Parameter error" -fi diff --git a/internal/app.go b/internal/app.go index 54615e0..4164df6 100644 --- a/internal/app.go +++ b/internal/app.go @@ -59,7 +59,7 @@ func MainApp(configPath string) { handler := httprouter.New() handler.RedirectTrailingSlash = false handler.RedirectFixedPath = true - router.ApplyRouteTable(handler, getfile, torrentMgr, config, log.Named("router")) + router.ApplyRouteTable(handler, getfile, torrentMgr, config, rd, log.Named("router")) addr := fmt.Sprintf("%s:%s", config.GetHost(), config.GetPort()) zurglog.Infof("Starting server on %s", addr) diff --git a/internal/router/router.go b/internal/router/router.go index 9e48209..ba39fb7 100644 --- a/internal/router/router.go +++ b/internal/router/router.go @@ -1,6 +1,7 @@ package router import ( + "encoding/json" "fmt" "net/http" @@ -9,6 +10,8 @@ import ( intHttp "github.com/debridmediamanager/zurg/internal/http" "github.com/debridmediamanager/zurg/internal/torrent" "github.com/debridmediamanager/zurg/internal/universal" + "github.com/debridmediamanager/zurg/internal/version" + "github.com/debridmediamanager/zurg/pkg/realdebrid" "github.com/julienschmidt/httprouter" "go.uber.org/zap" ) @@ -17,14 +20,16 @@ type ZurgRouter struct { getfile *universal.GetFile torMgr *torrent.TorrentManager cfg config.ConfigInterface + api *realdebrid.RealDebrid log *zap.SugaredLogger } -func ApplyRouteTable(router *httprouter.Router, getfile *universal.GetFile, torMgr *torrent.TorrentManager, cfg config.ConfigInterface, log *zap.SugaredLogger) { +func ApplyRouteTable(router *httprouter.Router, getfile *universal.GetFile, torMgr *torrent.TorrentManager, cfg config.ConfigInterface, api *realdebrid.RealDebrid, log *zap.SugaredLogger) { zr := &ZurgRouter{ getfile: getfile, torMgr: torMgr, cfg: cfg, + api: api, log: log, } @@ -92,10 +97,6 @@ func (zr *ZurgRouter) httpRootHandler(resp http.ResponseWriter, req *http.Reques fmt.Fprint(resp, *out) } -func (zr *ZurgRouter) rootHandler(resp http.ResponseWriter, req *http.Request, params httprouter.Params) { - fmt.Fprint(resp, "