Compare commits

52 Commits
v1.2 ... v1.2.1

Author SHA1 Message Date
Jack Dallas
d9bd141951 Don't full remove unzip dir on startup 2022-06-26 21:19:46 +00:00
Jack Dallas
802eeedfef Update docker labels with source 2022-06-26 21:19:46 +00:00
Jack Dallas
4f9d8299e6 Re-Work Docker build 2022-06-26 21:19:32 +00:00
Jack Dallas
6bdf60f272 README: Add user install instructions 2022-06-26 21:19:32 +00:00
Jack Dallas
742bd1e324 Create blackhole folder in docker 2022-06-26 21:19:32 +00:00
Jack Dallas
1cd862c5dc Split release and pre-release builds 2022-06-26 21:19:32 +00:00
Jack Dallas
9479ebe7fd Update README.md 2022-06-26 21:19:32 +00:00
Jack Dallas
4147817d6f Update .gitignore 2022-06-26 21:19:32 +00:00
Jack Dallas
c48259cb12 Standard error if premiumuize.me apikey is not set 2022-06-26 21:19:32 +00:00
Jack Dallas
18ce2c95e9 Increase trace logging & refactor config loading 2022-06-26 21:19:32 +00:00
Jack Dallas
ff832a5d18 Set config location before saving it 2022-06-26 21:19:32 +00:00
Jack Dallas
56d52d0b3a Refactor in to app structure, make all config options reloadable 2022-06-26 21:19:32 +00:00
Jack Dallas
3e50ba2ae1 UI: Dynamically work out webroot paths 2022-06-26 21:19:32 +00:00
Jack Dallas
898b53276a Docker: Pre-set all directory locations 2022-06-26 21:19:32 +00:00
Jack Dallas
91cf5bcfc8 API: Config Service
Config: Refactor Implementation
2022-06-26 21:19:32 +00:00
Jack Dallas
c86896e881 UI: Add config page 2022-06-26 21:19:32 +00:00
Jack Dallas
3af570479f Add build status badge 2022-06-26 21:19:32 +00:00
Jack Dallas
e6825dcb26 Update default config 2022-06-26 21:19:32 +00:00
Jack Dallas
7c06cb050b Update docker release method 2022-06-26 21:19:32 +00:00
Jack Dallas
4d610d3f59 [ci] Always setup docker 2022-06-26 21:19:32 +00:00
Jack Dallas
4bed257802 Enable pre-releases 2022-06-26 21:19:32 +00:00
Jack Dallas
07843219ef Add arm64 docker build 2022-06-26 21:19:32 +00:00
Jack Dallas
b32ae333a8 Handle web calls if when services aren't initialised 2022-06-26 21:19:32 +00:00
Jack Dallas
49a716764c Fix broken log messages 2022-06-26 21:19:32 +00:00
Jack Dallas
d6b123d7a3 Fix pointer deref 2022-06-26 21:19:32 +00:00
Jack Dallas
0a4d6923b1 Update NPM 2022-06-26 21:19:32 +00:00
Jack Dallas
da1a11dba5 UI: Support more errors 2022-06-26 21:19:32 +00:00
Jack Dallas
1e295c3608 Add environment variables for flags 2022-06-26 21:19:32 +00:00
Jack Dallas
78fc4b8b39 Rework simultaneous downloads cap 2022-06-26 21:19:32 +00:00
Jack Dallas
bdda3ca793 Update existing configs 2022-06-26 21:19:32 +00:00
Jack Dallas
d44204a8ed update docker ubuntu version & expose port 2022-06-26 21:19:32 +00:00
Jack Dallas
5fff9f9f53 Update Dockerfile (Thanks @JRDevo) 2022-06-26 21:19:32 +00:00
Jack Dallas
085d26c816 Add simultaneous downloads cap 2022-06-26 21:19:32 +00:00
dependabot[bot]
b60ef30a93 Bump async from 2.6.3 to 2.6.4 in /web
Bumps [async](https://github.com/caolan/async) from 2.6.3 to 2.6.4.
- [Release notes](https://github.com/caolan/async/releases)
- [Changelog](https://github.com/caolan/async/blob/v2.6.4/CHANGELOG.md)
- [Commits](https://github.com/caolan/async/compare/v2.6.3...v2.6.4)

---
updated-dependencies:
- dependency-name: async
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-26 21:19:32 +00:00
Jack Dallas
5af4083c67 Fix docker build 2022-06-26 21:19:32 +00:00
Jack Dallas
e8e93c667f Make config change a breaking update 2022-06-26 21:19:32 +00:00
dependabot[bot]
1893a1a5e4 Bump node-forge from 1.2.1 to 1.3.1 in /web
Bumps [node-forge](https://github.com/digitalbazaar/forge) from 1.2.1 to 1.3.1.
- [Release notes](https://github.com/digitalbazaar/forge/releases)
- [Changelog](https://github.com/digitalbazaar/forge/blob/main/CHANGELOG.md)
- [Commits](https://github.com/digitalbazaar/forge/compare/v1.2.1...v1.3.1)

---
updated-dependencies:
- dependency-name: node-forge
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-26 21:19:32 +00:00
dependabot[bot]
fdddc40699 Bump follow-redirects from 1.14.7 to 1.14.9 in /web
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.7 to 1.14.9.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.7...v1.14.9)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-26 21:19:32 +00:00
dependabot[bot]
828eb43a4c Bump minimist from 1.2.5 to 1.2.6 in /web
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-26 21:19:32 +00:00
Jack Dallas
969a3ac2cb Update README and docker location 2022-06-26 21:19:32 +00:00
Jack Dallas
83f1d19dfb Docker support 2022-06-26 21:19:32 +00:00
Jack Dallas
ff36423729 Make Arr's a list not locked to one of each type 2022-06-26 21:19:32 +00:00
Jack Dallas
cd0b5fba99 Make unzip directory configurable 2022-06-26 21:19:32 +00:00
Jack Dallas
df9c768066 Tweak web paths to work on url root and subpaths 2022-06-26 21:19:32 +00:00
Jack Dallas
3786e1411c Enhance logging 2022-06-26 21:19:32 +00:00
Dallas
4bf929967a Update README.md 2022-06-26 21:19:32 +00:00
Jack Dallas
43ea4903c3 Update README 2022-06-26 21:19:32 +00:00
Jack Dallas
a55eea881c Fix dpkg and perms 2022-06-26 21:19:32 +00:00
Jack Dallas
8c4c3a1b24 limit logs 2022-06-26 21:19:32 +00:00
Dallas
2db7e04604 Don't glob 2022-06-26 21:19:32 +00:00
Jack Dallas
7ec072a767 Upload artifacts 2022-06-26 21:19:32 +00:00
Jack Dallas
935813b27f fix ci 2022-06-26 21:19:32 +00:00
12 changed files with 266 additions and 23 deletions

View File

@@ -24,9 +24,12 @@ jobs:
with:
go-version: '1.17'
- name: Confirm Version
- name: go Version
run: go version
- name: Docker Version
run: docker version
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
@@ -34,6 +37,7 @@ jobs:
id: buildx
uses: docker/setup-buildx-action@v2
# Standard Build
- name: Build
uses: goreleaser/goreleaser-action@v2
if: startsWith(github.ref, 'refs/tags/') == false
@@ -43,6 +47,8 @@ jobs:
args: release --rm-dist --snapshot
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DOCKER_BUILDKIT: 1
COMPOSE_DOCKER_CLI_BUILD: 1
- uses: docker/login-action@v1
if: startsWith(github.ref, 'refs/tags/')
@@ -51,15 +57,31 @@ jobs:
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
# Release build
- name: Release
uses: goreleaser/goreleaser-action@v2
if: startsWith(github.ref, 'refs/tags/')
if: startsWith(github.ref, 'refs/tags/') && !contains(github.ref, '-rc')
with:
distribution: goreleaser
version: latest
args: release --rm-dist
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DOCKER_BUILDKIT: 1
COMPOSE_DOCKER_CLI_BUILD: 1
# Pre-Release build
- name: Pre-Release
uses: goreleaser/goreleaser-action@v2
if: startsWith(github.ref, 'refs/tags/') && contains(github.ref, '-rc')
with:
distribution: goreleaser
version: latest
args: release --rm-dist -f .prerelease.goreleaser.yaml
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DOCKER_BUILDKIT: 1
COMPOSE_DOCKER_CLI_BUILD: 1
- name: Upload assets
uses: actions/upload-artifact@v2

View File

@@ -1,3 +1,6 @@
env:
- DOCKER_BUILDKIT=1
before:
hooks:
- go mod tidy
@@ -71,7 +74,7 @@ nfpms:
dockers:
-
use: docker
use: buildx
goos: linux
goarch: amd64
image_templates:
@@ -83,9 +86,12 @@ dockers:
- "--label=org.opencontainers.image.title={{.ProjectName}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Version}}"
- "--label=org.opencontainers.image.source=\"https://github.com/JackDallas/Premiumizearr\""
- "--platform=linux/amd64"
dockerfile: "docker/Dockerfile.amd64"
extra_files:
- build/static/
- docker/
-
use: buildx
goos: linux
@@ -99,9 +105,12 @@ dockers:
- "--label=org.opencontainers.image.title={{.ProjectName}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Version}}"
- "--label=org.opencontainers.image.source=\"https://github.com/JackDallas/Premiumizearr\""
- "--platform=linux/arm64"
dockerfile: "docker/Dockerfile.arm64"
extra_files:
- build/static/
- docker/
-
use: buildx
goos: linux
@@ -116,9 +125,12 @@ dockers:
- "--label=org.opencontainers.image.title={{.ProjectName}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Version}}"
- "--label=org.opencontainers.image.source=\"https://github.com/JackDallas/Premiumizearr\""
- "--platform=linux/arm/v7"
dockerfile: "docker/Dockerfile.armv7"
extra_files:
- build/static/
- docker/
docker_manifests:
# Release variants not created on rc-$i tags

147
.prerelease.goreleaser.yaml Normal file
View File

@@ -0,0 +1,147 @@
before:
hooks:
- go mod tidy
- make web
builds:
- env:
- CGO_ENABLED=0
goos:
- linux
- windows
main: ./cmd/premiumizearrd
binary: premiumizearrd
goarch:
- amd64
- arm64
- arm
goarm:
- 7
ignore:
- goos: windows
goarch: arm64
- goos: windows
goarch: arm
archives:
- format_overrides:
- goos: windows
format: zip
wrap_in_directory: true
files:
- README.md
- LICENSE
- src: build/*.service
dst: ./
strip_parent: true
- src: build/static/*
dst: static
strip_parent: true
checksum:
name_template: 'checksums.txt'
changelog:
sort: asc
filters:
exclude:
- '^docs:'
- '^test:'
nfpms:
-
package_name: premiumizearr
bindir: /opt/premiumizearrd
vendor: Jack Dallas.
homepage: https://github.com/JackDallas/Premiumizearr
maintainer: Dallas <jack-dallas@outlook.com>
description: Service to connect premiumize.me to Arr clients.
license: GPLv3
formats:
- deb
contents:
- src: build/static/*
dst: /opt/premiumizearrd/static/
- src: init/premiumizearrd.service
dst: /etc/systemd/system/premiumizearrd.service
scripts:
postinstall: "scripts/postinstall.sh"
dockers:
-
use: docker
goos: linux
goarch: amd64
image_templates:
- "ghcr.io/jackdallas/premiumizearr:{{ .Tag }}-amd64"
skip_push: "false"
build_flag_templates:
- "--pull"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.title={{.ProjectName}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Version}}"
- "--label=org.opencontainers.image.source=\"https://github.com/JackDallas/Premiumizearr\""
- "--platform=linux/amd64"
dockerfile: "docker/Dockerfile.amd64"
extra_files:
- build/static/
- docker/
-
use: buildx
goos: linux
goarch: arm64
image_templates:
- "ghcr.io/jackdallas/premiumizearr:{{ .Tag }}-arm64"
skip_push: "false"
build_flag_templates:
- "--pull"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.title={{.ProjectName}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Version}}"
- "--label=org.opencontainers.image.source=\"https://github.com/JackDallas/Premiumizearr\""
- "--platform=linux/arm64"
dockerfile: "docker/Dockerfile.arm64"
extra_files:
- build/static/
- docker/
-
use: buildx
goos: linux
goarch: arm
goarm: 7
image_templates:
- "ghcr.io/jackdallas/premiumizearr:{{ .Tag }}-armv7"
skip_push: "false"
build_flag_templates:
- "--pull"
- "--label=org.opencontainers.image.created={{.Date}}"
- "--label=org.opencontainers.image.title={{.ProjectName}}"
- "--label=org.opencontainers.image.revision={{.FullCommit}}"
- "--label=org.opencontainers.image.version={{.Version}}"
- "--label=org.opencontainers.image.source=\"https://github.com/JackDallas/Premiumizearr\""
- "--platform=linux/arm/v7"
dockerfile: "docker/Dockerfile.armv7"
extra_files:
- build/static/
- docker/
docker_manifests:
- skip_push: false
- name_template: 'ghcr.io/jackdallas/premiumizearr:dev'
image_templates:
- 'ghcr.io/jackdallas/premiumizearr:{{ .Tag }}-amd64'
- 'ghcr.io/jackdallas/premiumizearr:{{ .Tag }}-armv7'
- 'ghcr.io/jackdallas/premiumizearr:{{ .Tag }}-arm64'
- name_template: 'ghcr.io/jackdallas/premiumizearr:{{ .Tag }}'
image_templates:
- 'ghcr.io/jackdallas/premiumizearr:{{ .Tag }}-amd64'
- 'ghcr.io/jackdallas/premiumizearr:{{ .Tag }}-armv7'
- 'ghcr.io/jackdallas/premiumizearr:{{ .Tag }}-arm64'
release:
prerelease: true
header: "Premiumizearr Pre-Release {{ .Tag }}"
footer: "**Full Changelog**: https://github.com/JackDallas/Premiumizearr/compare/{{ .PreviousTag }}...{{ .Tag }}"

View File

@@ -18,18 +18,34 @@
### Binary
```cmd
#### System Install
```cli
wget https://github.com/JackDallas/Premiumizearr/releases/download/x.x.x/Premiumizearr_x.x.x_linux_amd64.tar.gz
tar xf Premiumizearr_x.x.x.x_linux_amd64.tar.gz
cd Premiumizearr_x.x.x.x_linux_amd64
sudo mkdir /opt/premiumizearrd/
sudo cp -r premiumizearrd static/ /opt/premiumizearrd/
sudo cp premiumizearrd /etc/systemd/system/
sudo cp premiumizearrd.service /etc/systemd/system/
sudo systemctl-reload
sudo systemctl enable premiumizearrd.service
sudo systemctl start premiumizearrd.service
```
#### User Install
```cli
wget https://github.com/JackDallas/Premiumizearr/releases/download/x.x.x/Premiumizearr_x.x.x_linux_amd64.tar.gz
tar xf Premiumizearr_x.x.x.x_linux_amd64.tar.gz
cd Premiumizearr_x.x.x.x_linux_amd64
mkdir -p ~/.local/bin/
cp -r premiumizearrd static/ ~/.local/bin/
echo -e "export PATH=~/.local/bin/:$PATH" >> ~/.bashrc
source ~/.bashrc
```
You're now able to run the daemon from anywhere just by typing `premiumizearrd`
### deb file
```cmd

5
docker/Dockerfile.amd64 Normal file
View File

@@ -0,0 +1,5 @@
# syntax=edrevo/dockerfile-plus
FROM ghcr.io/linuxserver/baseimage-alpine:3.16-f525477c-ls6@sha256:c25011f564093f523b1a793658d19275d9eac5a7f21aa5d00ce6cdff29c2a8c1
INCLUDE+ docker/Dockerfile.common

5
docker/Dockerfile.arm64 Normal file
View File

@@ -0,0 +1,5 @@
# syntax=edrevo/dockerfile-plus
FROM ghcr.io/linuxserver/baseimage-alpine:3.16-f525477c-ls6@sha256:611bc4a5a75132914dba740dffa4adcea5039fbe67e3704afd5731a55bf8c82f
INCLUDE+ docker/Dockerfile.common

5
docker/Dockerfile.armv7 Normal file
View File

@@ -0,0 +1,5 @@
# syntax=edrevo/dockerfile-plus
FROM ghcr.io/linuxserver/baseimage-alpine:3.16-f525477c-ls6@sha256:a31127cd9764c95d6137764a1854402d3a33ee085edd139e08726e2fc98d2254
INCLUDE+ docker/Dockerfile.common

View File

@@ -1,23 +1,23 @@
FROM ubuntu:latest
LABEL build_version="Premiumizearr version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="JackDallas"
RUN apt update && \
apt install openssl -y && \
apt install ca-certificates \
&& rm -rf /var/lib/apt/lists/*
COPY docker/root/ /
EXPOSE 8182
RUN mkdir /data
RUN mkdir /unzip
RUN mkdir /downloads
RUN mkdir /transfers
RUN mkdir /blackhole
RUN mkdir -p /opt/app/
WORKDIR /opt/app/
ENV PREMIUMIZEARR_CONFIG_DIR_PATH=/data
ENV PREMIUMIZEARR_LOGGING_DIR_PATH=/data
EXPOSE 8182
WORKDIR /opt/app/
COPY premiumizearrd /opt/app/
COPY build/static /opt/app/static
ENTRYPOINT [ "/opt/app/premiumizearrd" ]
ENTRYPOINT ["/init"]

View File

@@ -0,0 +1,10 @@
#!/usr/bin/with-contenv bash
# permissions
chown -R abc:abc \
/data \
/unzip \
/downloads \
/transfers \
/blackhole \
/opt \

View File

@@ -0,0 +1,6 @@
#!/usr/bin/with-contenv bash
cd /opt/app/ || exit
exec \
s6-setuidgid abc /opt/app/premiumizearrd

View File

@@ -64,17 +64,12 @@ func (t *TransferManagerService) CleanUpUnzipDir() {
return
}
err = os.RemoveAll(unzipBase)
err = utils.RemoveContents(unzipBase)
if err != nil {
log.Errorf("Error removing unzip base location: %s", err.Error())
return
}
err = os.MkdirAll(unzipBase, 0755)
if err != nil {
log.Errorf("Error creating unzip base location: %s", err.Error())
log.Errorf("Error cleaning unzip directory: %s", err.Error())
return
}
}
func (manager *TransferManagerService) ConfigUpdatedCallback(currentConfig config.Config, newConfig config.Config) {

View File

@@ -151,3 +151,23 @@ func IsDirectoryWriteable(path string) bool {
return true
}
//https://stackoverflow.com/questions/33450980/how-to-remove-all-contents-of-a-directory-using-golang
func RemoveContents(dir string) error {
d, err := os.Open(dir)
if err != nil {
return err
}
defer d.Close()
names, err := d.Readdirnames(-1)
if err != nil {
return err
}
for _, name := range names {
err = os.RemoveAll(filepath.Join(dir, name))
if err != nil {
return err
}
}
return nil
}