aethernal-agent 0.1.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +12 -0
- data/.gitlab-ci.yml +23 -0
- data/.rspec +2 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +6 -0
- data/Gemfile.lock +107 -0
- data/README.md +35 -0
- data/Rakefile +31 -0
- data/Vagrantfile +32 -0
- data/aethernal-agent.gemspec +45 -0
- data/bin/console +14 -0
- data/bin/run-aa-for-test +35 -0
- data/bin/setup +8 -0
- data/exe/aa-web +7 -0
- data/lib/aethernal_agent.rb +34 -0
- data/lib/aethernal_agent/apache/apache.rb +70 -0
- data/lib/aethernal_agent/apache/templates/aa-user.conf.erb +21 -0
- data/lib/aethernal_agent/app.rb +317 -0
- data/lib/aethernal_agent/apt.rb +30 -0
- data/lib/aethernal_agent/errors.rb +17 -0
- data/lib/aethernal_agent/filesystem.rb +178 -0
- data/lib/aethernal_agent/loader.rb +56 -0
- data/lib/aethernal_agent/manifest.rb +6 -0
- data/lib/aethernal_agent/operation.rb +51 -0
- data/lib/aethernal_agent/operation_pool.rb +46 -0
- data/lib/aethernal_agent/plugins/deluge/deluge.rb +65 -0
- data/lib/aethernal_agent/plugins/deluge/manifest.yml +51 -0
- data/lib/aethernal_agent/plugins/deluge/meta/deluge.png +0 -0
- data/lib/aethernal_agent/plugins/deluge/templates/auth.erb +2 -0
- data/lib/aethernal_agent/plugins/deluge/templates/core.conf.erb +95 -0
- data/lib/aethernal_agent/plugins/deluge/templates/deluge-web.service.erb +12 -0
- data/lib/aethernal_agent/plugins/deluge/templates/deluge.apache.conf.erb +9 -0
- data/lib/aethernal_agent/plugins/deluge/templates/deluged.service.erb +12 -0
- data/lib/aethernal_agent/plugins/deluge/templates/hostlist.conf.erb +14 -0
- data/lib/aethernal_agent/plugins/deluge/templates/web.conf.erb +24 -0
- data/lib/aethernal_agent/plugins/filebrowser/filebrowser.rb +45 -0
- data/lib/aethernal_agent/plugins/filebrowser/files/filebrowser.service +12 -0
- data/lib/aethernal_agent/plugins/filebrowser/manifest.yml +51 -0
- data/lib/aethernal_agent/plugins/filebrowser/meta/filebrowser.png +0 -0
- data/lib/aethernal_agent/plugins/filebrowser/templates/filebrowser.apache.conf.erb +6 -0
- data/lib/aethernal_agent/plugins/gitea/files/gitea.service +12 -0
- data/lib/aethernal_agent/plugins/gitea/gitea.rb +64 -0
- data/lib/aethernal_agent/plugins/gitea/manifest.yml +53 -0
- data/lib/aethernal_agent/plugins/gitea/meta/gitea.png +0 -0
- data/lib/aethernal_agent/plugins/gitea/templates/app.ini.erb +68 -0
- data/lib/aethernal_agent/plugins/gitea/templates/gitea.apache.conf.erb +6 -0
- data/lib/aethernal_agent/plugins/olaris/manifest.yml +52 -0
- data/lib/aethernal_agent/plugins/olaris/meta/olaris.png +0 -0
- data/lib/aethernal_agent/plugins/olaris/olaris.rb +35 -0
- data/lib/aethernal_agent/plugins/olaris/templates/olaris.apache.conf.erb +6 -0
- data/lib/aethernal_agent/plugins/olaris/templates/olaris.service.erb +12 -0
- data/lib/aethernal_agent/plugins/ombi/manifest.yml +57 -0
- data/lib/aethernal_agent/plugins/ombi/meta/ombi.jpeg +0 -0
- data/lib/aethernal_agent/plugins/ombi/ombi.rb +81 -0
- data/lib/aethernal_agent/plugins/ombi/templates/ombi.apache.conf.erb +6 -0
- data/lib/aethernal_agent/plugins/ombi/templates/ombi.service.erb +14 -0
- data/lib/aethernal_agent/plugins/plex/files/plex.service +26 -0
- data/lib/aethernal_agent/plugins/plex/manifest.yml +49 -0
- data/lib/aethernal_agent/plugins/plex/meta/plex.png +0 -0
- data/lib/aethernal_agent/plugins/plex/plex.rb +65 -0
- data/lib/aethernal_agent/plugins/plex/templates/Preferences.xml.erb +2 -0
- data/lib/aethernal_agent/plugins/radarr/files/radarr.service +13 -0
- data/lib/aethernal_agent/plugins/radarr/manifest.yml +68 -0
- data/lib/aethernal_agent/plugins/radarr/meta/radarr.png +0 -0
- data/lib/aethernal_agent/plugins/radarr/radarr.rb +72 -0
- data/lib/aethernal_agent/plugins/radarr/templates/config.xml.erb +16 -0
- data/lib/aethernal_agent/plugins/radarr/templates/radarr.apache.conf.erb +6 -0
- data/lib/aethernal_agent/plugins/sonarr/files/sonarr.service +13 -0
- data/lib/aethernal_agent/plugins/sonarr/manifest.yml +66 -0
- data/lib/aethernal_agent/plugins/sonarr/meta/sonarr.jpeg +0 -0
- data/lib/aethernal_agent/plugins/sonarr/sonarr.rb +70 -0
- data/lib/aethernal_agent/plugins/sonarr/templates/config.xml.erb +16 -0
- data/lib/aethernal_agent/plugins/sonarr/templates/sonarr.apache.conf.erb +6 -0
- data/lib/aethernal_agent/plugins/vnc/files/xstartup +9 -0
- data/lib/aethernal_agent/plugins/vnc/manifest.yml +41 -0
- data/lib/aethernal_agent/plugins/vnc/meta/vnc.png +0 -0
- data/lib/aethernal_agent/plugins/vnc/templates/vnc.service.erb +14 -0
- data/lib/aethernal_agent/plugins/vnc/vnc.rb +41 -0
- data/lib/aethernal_agent/systemd.rb +123 -0
- data/lib/aethernal_agent/template.rb +57 -0
- data/lib/aethernal_agent/utils.rb +107 -0
- data/lib/aethernal_agent/version.rb +3 -0
- data/lib/aethernal_agent/webserver/api.rb +77 -0
- data/lib/aethernal_agent/webserver/core.rb +32 -0
- metadata +257 -0
@@ -0,0 +1,57 @@
|
|
1
|
+
name: Ombi
|
2
|
+
script_name: ombi.rb
|
3
|
+
version: 0.1
|
4
|
+
required_aethernal_agent_version: "~> 0.1.0"
|
5
|
+
description: Ombi is a self-hosted web application that automatically gives your shared Plex or Emby users the ability to request content by themselves!
|
6
|
+
installation_type: local_install
|
7
|
+
configuration_type: multi_user
|
8
|
+
apache_configuration: ombi.apache.conf.erb
|
9
|
+
icon:
|
10
|
+
name: ombi.jpeg
|
11
|
+
sha256sum: 1cc73f52ebff93f11c0a54c9743d084016f1b7567ee60ddd9107169702ae0b73
|
12
|
+
plain_name: ombi
|
13
|
+
services:
|
14
|
+
- ombi
|
15
|
+
actions:
|
16
|
+
restart:
|
17
|
+
user:
|
18
|
+
required: true
|
19
|
+
linux_user: true
|
20
|
+
uninstall:
|
21
|
+
nothing: true
|
22
|
+
install_packages:
|
23
|
+
user:
|
24
|
+
required: true
|
25
|
+
linux_user: true
|
26
|
+
remove_app_user:
|
27
|
+
user:
|
28
|
+
required: true
|
29
|
+
linux_user: true
|
30
|
+
configure_app_user:
|
31
|
+
port:
|
32
|
+
auto_generate_port: true
|
33
|
+
min: 7900
|
34
|
+
max: 7999
|
35
|
+
user:
|
36
|
+
required: true
|
37
|
+
linux_user: true
|
38
|
+
password:
|
39
|
+
required: false
|
40
|
+
auto_generate: true
|
41
|
+
return_values:
|
42
|
+
- password
|
43
|
+
- port
|
44
|
+
estimated_size_mb: 23
|
45
|
+
package:
|
46
|
+
folder_name: ombi
|
47
|
+
direct_download:
|
48
|
+
url: https://github.com/tidusjar/Ombi/releases/download/v3.0.4892/linux.tar.gz
|
49
|
+
target_name: linux.tar.gz
|
50
|
+
auto_extract: true
|
51
|
+
always_latest: false
|
52
|
+
apt:
|
53
|
+
"18.04":
|
54
|
+
packages:
|
55
|
+
- libicu-dev
|
56
|
+
- libunwind8
|
57
|
+
- libcurl4-openssl-dev
|
Binary file
|
@@ -0,0 +1,81 @@
|
|
1
|
+
require 'httparty'
|
2
|
+
|
3
|
+
class AethernalAgent::Ombi < AethernalAgent::App
|
4
|
+
|
5
|
+
def initialize(options = {})
|
6
|
+
super(options)
|
7
|
+
end
|
8
|
+
|
9
|
+
def install_packages(options = {})
|
10
|
+
remove_app_user
|
11
|
+
directory(ombi_config_path, action: :create)
|
12
|
+
super(options)
|
13
|
+
end
|
14
|
+
|
15
|
+
def remove_app_user(options = {})
|
16
|
+
super(options) do |opts|
|
17
|
+
directory(app_path, action: :delete)
|
18
|
+
directory(ombi_config_path, action: :delete)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def configure_app_user(options = {})
|
23
|
+
self.install_packages(options)
|
24
|
+
super(options) do |opts|
|
25
|
+
ensure_permissions
|
26
|
+
@timer = 0
|
27
|
+
@opts = opts
|
28
|
+
end
|
29
|
+
add_user_to_db
|
30
|
+
return create_return_args(@opts)
|
31
|
+
end
|
32
|
+
|
33
|
+
protected
|
34
|
+
|
35
|
+
def ombi_config_path(path ="/")
|
36
|
+
File.join(home_folder_path(".config/ombi"), path)
|
37
|
+
end
|
38
|
+
|
39
|
+
def source_name
|
40
|
+
self.manifest.package['direct_download']['target_name']
|
41
|
+
end
|
42
|
+
|
43
|
+
def ensure_permissions
|
44
|
+
file(app_path("Ombi"), chmod: 0755, owner: self.user)
|
45
|
+
file(app_path, owner: self.user)
|
46
|
+
file(ombi_config_path, owner: self.user)
|
47
|
+
end
|
48
|
+
|
49
|
+
def add_user_to_db
|
50
|
+
begin
|
51
|
+
AethernalAgent.logger.info("Calling Ombi API to create our initial user for #{self.user}")
|
52
|
+
url = URI(ombi_api_url(@opts["port"], "Identity/Wizard"))
|
53
|
+
AethernalAgent.logger.info(url)
|
54
|
+
body = {username: self.user, password: @opts["password"], usePlexAdminAccount: false}.to_json
|
55
|
+
update_ombi_db(url, body)
|
56
|
+
rescue
|
57
|
+
@timer += 1
|
58
|
+
sleep 60
|
59
|
+
if @timer < 6
|
60
|
+
add_user_to_db
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def ombi_api_url(web_port, path)
|
66
|
+
return "http://127.0.0.1:#{web_port}/api/v1/#{path}"
|
67
|
+
end
|
68
|
+
|
69
|
+
def update_ombi_db(url, body, token=nil)
|
70
|
+
HTTParty.post(url, headers: headers(token), body: body)
|
71
|
+
end
|
72
|
+
|
73
|
+
def headers(token=nil)
|
74
|
+
if token
|
75
|
+
{ 'Content-Type' => 'application/json',
|
76
|
+
'Authorization' => "Bearer #{token}"}
|
77
|
+
else
|
78
|
+
{ 'Content-Type' => 'application/json'}
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
[Unit]
|
2
|
+
Description=Ombi - PMS Requests System
|
3
|
+
After=network-online.target
|
4
|
+
|
5
|
+
[Service]
|
6
|
+
WorkingDirectory=%h/apps/ombi/
|
7
|
+
ExecStart=%h/apps/ombi/Ombi --host "http://*:<%= @port %>"
|
8
|
+
Type=simple
|
9
|
+
TimeoutStopSec=30
|
10
|
+
Restart=on-failure
|
11
|
+
RestartSec=5
|
12
|
+
|
13
|
+
[Install]
|
14
|
+
WantedBy=multi-user.target
|
@@ -0,0 +1,26 @@
|
|
1
|
+
[Unit]
|
2
|
+
Description=Plex Media Server
|
3
|
+
After=network.target network-online.target
|
4
|
+
|
5
|
+
[Service]
|
6
|
+
Environment="PLEX_MEDIA_SERVER_APPLICATION_SUPPORT_DIR=/var/lib/plexmediaserver/Library/Application Support"
|
7
|
+
Environment=PLEX_MEDIA_SERVER_HOME=/usr/lib/plexmediaserver
|
8
|
+
Environment=PLEX_MEDIA_SERVER_MAX_PLUGIN_PROCS=6
|
9
|
+
Environment=PLEX_MEDIA_SERVER_TMPDIR=/tmp
|
10
|
+
ExecStartPre=/bin/sh -c '/usr/bin/test -d "${PLEX_MEDIA_SERVER_APPLICATION_SUPPORT_DIR}" || /bin/mkdir -p "${PLEX_MEDIA_SERVER_APPLICATION_SUPPORT_DIR}"'
|
11
|
+
ExecStart=/bin/sh -c '\
|
12
|
+
export PLEX_MEDIA_SERVER_INFO_VENDOR="$(grep ^NAME= /etc/os-release | awk -F= "{print \\$2}" | tr -d \\" )"; \
|
13
|
+
export PLEX_MEDIA_SERVER_INFO_DEVICE="PC"; \
|
14
|
+
export PLEX_MEDIA_SERVER_INFO_MODEL="$(uname -m)"; \
|
15
|
+
export PLEX_MEDIA_SERVER_INFO_PLATFORM_VERSION="$(grep ^VERSION= /etc/os-release | awk -F= "{print \\$2}" | tr -d \\" )"; \
|
16
|
+
export LD_LIBRARY_PATH=/usr/lib/plexmediaserver/lib; \
|
17
|
+
exec "/usr/lib/plexmediaserver/Plex Media Server"'
|
18
|
+
Type=simple
|
19
|
+
Restart=on-failure
|
20
|
+
RestartSec=5
|
21
|
+
StartLimitInterval=60s
|
22
|
+
StartLimitBurst=3
|
23
|
+
SyslogIdentifier=Plex Media Server
|
24
|
+
|
25
|
+
[Install]
|
26
|
+
WantedBy=multi-user.target
|
@@ -0,0 +1,49 @@
|
|
1
|
+
name: Plex Media Server
|
2
|
+
script_name: plex.rb
|
3
|
+
version: 0.1
|
4
|
+
required_aethernal_agent_version: "~> 0.1.0"
|
5
|
+
description: Plex is plex, I guess
|
6
|
+
installation_type: global_install
|
7
|
+
configuration_type: server_wide
|
8
|
+
plain_name: plex
|
9
|
+
built_in_updater: false
|
10
|
+
icon:
|
11
|
+
name: plex.png
|
12
|
+
sha256sum: 2c35c38cb223826938c96faff20bee4fc32df728a34028119a61832657f8f997
|
13
|
+
services:
|
14
|
+
- plex
|
15
|
+
actions:
|
16
|
+
claim:
|
17
|
+
claim_token:
|
18
|
+
required: true
|
19
|
+
user:
|
20
|
+
required: true
|
21
|
+
linux_user: true
|
22
|
+
restart:
|
23
|
+
user:
|
24
|
+
required: true
|
25
|
+
linux_user: true
|
26
|
+
configure_app_user:
|
27
|
+
claim_token:
|
28
|
+
required: true
|
29
|
+
hint: You can grab your claim token from https://plex.tv/claim
|
30
|
+
port:
|
31
|
+
value: 32400
|
32
|
+
external_port: plex_port
|
33
|
+
read_only: true
|
34
|
+
host_port:
|
35
|
+
required: false
|
36
|
+
user:
|
37
|
+
required: true
|
38
|
+
linux_user: true
|
39
|
+
display_values:
|
40
|
+
estimated_size_mb: 30
|
41
|
+
package:
|
42
|
+
apt:
|
43
|
+
"18.04":
|
44
|
+
add_sources:
|
45
|
+
plex:
|
46
|
+
source_url: "deb https://downloads.plex.tv/repo/deb public main"
|
47
|
+
key_url: "https://downloads.plex.tv/plex-keys/PlexSign.key"
|
48
|
+
packages:
|
49
|
+
- plexmediaserver
|
Binary file
|
@@ -0,0 +1,65 @@
|
|
1
|
+
class AethernalAgent::Plex < AethernalAgent::App
|
2
|
+
def initialize(options = {})
|
3
|
+
super(options)
|
4
|
+
end
|
5
|
+
|
6
|
+
def install_packages(options = {})
|
7
|
+
super(options)
|
8
|
+
end
|
9
|
+
|
10
|
+
def uninstall_packages(options = {})
|
11
|
+
super(options)
|
12
|
+
|
13
|
+
directory("/var/lib/plexmediaserver", action: :delete)
|
14
|
+
directory("/usr/lib/plexmediaserver", action: :delete)
|
15
|
+
end
|
16
|
+
|
17
|
+
def remove_app_user(options = {})
|
18
|
+
super(options) do |opts|
|
19
|
+
directory("/var/lib/plexmediaserver/", action: :delete)
|
20
|
+
directory("/usr/lib/plexmediaserver/", action: :delete)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def configure_app_user(options = {})
|
25
|
+
#TODO: Do error handling here.
|
26
|
+
install_packages(options)
|
27
|
+
|
28
|
+
# Plex runs automatically after installing so let's stop it.
|
29
|
+
run_command("systemctl daemon-reload")
|
30
|
+
run_command("service plexmediaserver stop")
|
31
|
+
|
32
|
+
directory("/var/lib/plexmediaserver", owner: self.user)
|
33
|
+
directory("/usr/lib/plexmediaserver", owner: self.user)
|
34
|
+
file("/lib/systemd/system/plexmediaserver.service", action: :delete)
|
35
|
+
|
36
|
+
|
37
|
+
result = super(options) do |opts|
|
38
|
+
container_domain = "#{get_global_config(:container_name)}.#{get_global_config(:hostname)}"
|
39
|
+
write_template(template_path('Preferences.xml.erb'),
|
40
|
+
'/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Preferences.xml',
|
41
|
+
opts.merge(domain: container_domain),
|
42
|
+
{owner: self.user})
|
43
|
+
end
|
44
|
+
|
45
|
+
return result if result[:errors].present?
|
46
|
+
|
47
|
+
# We will have to do this after the service files have been created so we can't do this inside the super itself
|
48
|
+
reload_systemd_config
|
49
|
+
start
|
50
|
+
|
51
|
+
AethernalAgent.logger.debug("Sleeping to wait for Plex server start-up")
|
52
|
+
sleep 30
|
53
|
+
self.claim(result[:options])
|
54
|
+
|
55
|
+
return create_return_args(result[:options])
|
56
|
+
end
|
57
|
+
|
58
|
+
def claim(options = {})
|
59
|
+
AethernalAgent.logger.info("Claiming server")
|
60
|
+
ensure_action_options('claim', options)
|
61
|
+
run_command("curl -v -X POST http://127.0.0.1:32400/myplex/claim?token=#{options['claim_token']}")
|
62
|
+
AethernalAgent.logger.info("Done claiming server")
|
63
|
+
return create_return_args(options)
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
[Unit]
|
2
|
+
Description=Radarr Daemon
|
3
|
+
After=syslog.target network.target
|
4
|
+
|
5
|
+
[Service]
|
6
|
+
Type=simple
|
7
|
+
ExecStart=/usr/bin/mono --debug %h/apps/radarr/Radarr.exe -nobrowser
|
8
|
+
TimeoutStopSec=20
|
9
|
+
KillMode=process
|
10
|
+
Restart=on-failure
|
11
|
+
|
12
|
+
[Install]
|
13
|
+
WantedBy=multi-user.target
|
@@ -0,0 +1,68 @@
|
|
1
|
+
name: Radarr
|
2
|
+
script_name: radarr.rb
|
3
|
+
version: 0.1
|
4
|
+
required_aethernal_agent_version: "~> 0.1.0"
|
5
|
+
description: Radarr is an independent fork of Sonarr reworked for automatically downloading movies via Usenet and BitTorrent.
|
6
|
+
installation_type: local_install
|
7
|
+
configuration_type: multi_user
|
8
|
+
apache_configuration: radarr.apache.conf.erb
|
9
|
+
icon:
|
10
|
+
name: radarr.png
|
11
|
+
sha256sum: aadfe91299aa9fbf4a027566fdd0102fc455e7d2224c22ea886c22520e039a51
|
12
|
+
plain_name: radarr
|
13
|
+
services:
|
14
|
+
- radarr
|
15
|
+
actions:
|
16
|
+
restart:
|
17
|
+
user:
|
18
|
+
required: true
|
19
|
+
linux_user: true
|
20
|
+
uninstall:
|
21
|
+
nothing: true
|
22
|
+
install_packages:
|
23
|
+
user:
|
24
|
+
required: true
|
25
|
+
linux_user: true
|
26
|
+
remove_app_user:
|
27
|
+
user:
|
28
|
+
required: true
|
29
|
+
linux_user: true
|
30
|
+
configure_app_user:
|
31
|
+
port:
|
32
|
+
auto_generate_port: true
|
33
|
+
min: 6900
|
34
|
+
max: 6999
|
35
|
+
ssl_port:
|
36
|
+
auto_generate_port: true
|
37
|
+
min: 7900
|
38
|
+
max: 7999
|
39
|
+
user:
|
40
|
+
required: true
|
41
|
+
linux_user: true
|
42
|
+
password:
|
43
|
+
required: false
|
44
|
+
auto_generate: true
|
45
|
+
return_values:
|
46
|
+
- password
|
47
|
+
- port
|
48
|
+
display_values:
|
49
|
+
- user
|
50
|
+
- password
|
51
|
+
estimated_size_mb: 23
|
52
|
+
package:
|
53
|
+
folder_name: Radarr
|
54
|
+
direct_download:
|
55
|
+
url: https://github.com/Radarr/Radarr/releases/download/v0.2.0.1450/Radarr.develop.0.2.0.1450.linux.tar.gz
|
56
|
+
target_name: Radarr.develop.0.2.0.1450.linux.tar.gz
|
57
|
+
auto_extract: true
|
58
|
+
always_latest: false
|
59
|
+
apt:
|
60
|
+
"18.04":
|
61
|
+
add_sources:
|
62
|
+
mono_stable:
|
63
|
+
source_url: "deb https://download.mono-project.com/repo/ubuntu stable-bionic main"
|
64
|
+
key_id: "3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF"
|
65
|
+
packages:
|
66
|
+
- gnupg
|
67
|
+
- ca-certificates
|
68
|
+
- mono-devel
|
Binary file
|
@@ -0,0 +1,72 @@
|
|
1
|
+
class AethernalAgent::Radarr < AethernalAgent::App
|
2
|
+
def initialize(options = {})
|
3
|
+
super(options)
|
4
|
+
end
|
5
|
+
|
6
|
+
def install_packages(options = {})
|
7
|
+
remove_app_user
|
8
|
+
|
9
|
+
super(options)
|
10
|
+
|
11
|
+
file(app_path, chmod: 711, owner: self.user)
|
12
|
+
FileUtils.mv(app_path + "/Radarr", app_path + "/radarr")
|
13
|
+
FileUtils.mv(app_path + "/radarr", home_folder_path(File.join("apps")))
|
14
|
+
directory(app_path, action: :delete)
|
15
|
+
end
|
16
|
+
|
17
|
+
def remove_app_user(options = {})
|
18
|
+
super(options) do |opts|
|
19
|
+
directory(home_folder_path("/apps/radarr"), action: :delete)
|
20
|
+
directory(home_folder_path("/apps/Radarr"), action: :delete)
|
21
|
+
directory(home_folder_path("/.config/Radarr"), action: :delete)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def configure_app_user(options = {})
|
26
|
+
self.install_packages(options)
|
27
|
+
|
28
|
+
super(options) do |opts|
|
29
|
+
@vars = {
|
30
|
+
api_key: Digest::SHA256.hexdigest(Time.now.to_i.to_s + "aethernal")[0..32],
|
31
|
+
port: opts['port'],
|
32
|
+
ssl_port: opts['ssl_port'],
|
33
|
+
password: opts['password'],
|
34
|
+
user: self.user}
|
35
|
+
|
36
|
+
write_template(template_path('config.xml.erb'),
|
37
|
+
radarr_config_path('config.xml'),
|
38
|
+
@vars,
|
39
|
+
{owner: @vars[:user]})
|
40
|
+
end
|
41
|
+
# If we run this within the super we have no systemd scripts yet so we need to do this after everything has been setup except the user.
|
42
|
+
add_user_to_db
|
43
|
+
return create_return_args(@vars)
|
44
|
+
end
|
45
|
+
|
46
|
+
protected
|
47
|
+
|
48
|
+
def radarr_config_path(path ="/")
|
49
|
+
File.join(home_folder_path(".config/Radarr"), path)
|
50
|
+
end
|
51
|
+
|
52
|
+
def add_user_to_db
|
53
|
+
# We need to start it for the database and migrations to be created
|
54
|
+
start
|
55
|
+
# Let's sleep a bit so we have some guarantee that the database has been migrated properly
|
56
|
+
sleep 120
|
57
|
+
# Let's stop it so we can mess with the database, not sure this is needed
|
58
|
+
stop
|
59
|
+
begin
|
60
|
+
db = SQLite3::Database.open(home_folder_path(".config/Radarr/nzbdrone.db"))
|
61
|
+
# Add default user
|
62
|
+
db.execute "INSERT INTO Users VALUES (1, 'e852a6bb-6812-4e6c-8f99-f8c3c5201594', '#{self.user}', '#{Digest::SHA256.hexdigest(@vars[:password])}');"
|
63
|
+
rescue SQLite3::Exception => e
|
64
|
+
raise "Error setting up Radarr: #{e}"
|
65
|
+
ensure
|
66
|
+
db.close if db
|
67
|
+
end
|
68
|
+
|
69
|
+
start
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|