diff --git a/.gitignore b/.gitignore
index 432ea9f..cce4c4d 100755
--- a/.gitignore
+++ b/.gitignore
@@ -9,3 +9,8 @@ data/
surf.sublime-workspace
+
+
+# Added by cargo
+
+/target
diff --git a/Cargo.toml b/Cargo.toml
new file mode 100644
index 0000000..8336880
--- /dev/null
+++ b/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "slskdecks"
+version = "0.1.0"
+edition = "2024"
+
+[dependencies]
diff --git a/compose.yaml b/compose.yaml
index 0658122..d879807 100644
--- a/compose.yaml
+++ b/compose.yaml
@@ -9,7 +9,9 @@ services:
environment:
- SLSKD_REMOTE_CONFIGURATION=true
volumes:
- - ./data/shared:/app
+ - ./data/shared:/app/data
+ - ./src:/app/src/
+ - ./etc/:/app/etc/
- ./etc/slskd.yml:/app/slskd.yml
slskdecks:
@@ -17,12 +19,11 @@ services:
build:
context: .
dockerfile: slskdecks.Dockerfile
+ env_file: .env
volumes:
- ./data/shared:/app/data/shared
- ./src:/app/src/
- - ./etc/sldl.conf:/root/.config/sldl/sldl.conf
- command: |
- sleep 10000
+ - ./etc/:/app/etc/
volumes:
diff --git a/etc/run.sh b/etc/run.sh
new file mode 100644
index 0000000..b25f668
--- /dev/null
+++ b/etc/run.sh
@@ -0,0 +1,24 @@
+#! /bin/bash
+
+set -uxe
+
+SLDL_CONF_DIR="/root/.config/sldl/"
+SLDL_CONF="$SLDL_CONF_DIR/sldl.conf"
+
+configure() {
+ cd /app
+
+ mkdir -p $SLDL_CONF_DIR
+ envsubst < /app/etc/sldl.tpl.conf > $SLDL_CONF
+
+ echo "--------------------------------------------------------------"
+ echo "configured sldl"
+ cat $SLDL_CONF
+ echo "--------------------------------------------------------------"
+}
+
+main() {
+ configure
+}
+
+main
\ No newline at end of file
diff --git a/etc/run_slskd.sh b/etc/run_slskd.sh
new file mode 100644
index 0000000..1a8a247
--- /dev/null
+++ b/etc/run_slskd.sh
@@ -0,0 +1,30 @@
+#! /bin/bash
+
+set -uxe
+
+SLDL_CONF_DIR="/slskd/"
+SLDL_CONF="$SLDL_CONF_DIR/slskd.yml"
+
+configure() {
+ cd /app
+
+ mkdir -p $SLDL_CONF_DIR
+ envsubst < /app/etc/slskd.tpl.yml > $SLDL_CONF
+
+ echo "--------------------------------------------------------------"
+ echo "configured slskd"
+ cat $SLDL_CONF
+ echo "--------------------------------------------------------------"
+}
+
+run() {
+ cd /slskd
+ /usr/bin/tini -- ./start.sh
+}
+
+main() {
+ configure
+ run
+}
+
+main
\ No newline at end of file
diff --git a/etc/sldl.conf.tpl b/etc/sldl.conf.tpl
deleted file mode 100644
index 2bce07e..0000000
--- a/etc/sldl.conf.tpl
+++ /dev/null
@@ -1,13 +0,0 @@
-[slskdecks]
-username = "${SLSK_USER}"
-password = "${SLSK_PASS}"
-
-name-format = "{item-name}/{artist( - )title|filename}"
-
-fast-search = true
-interactive = false
-concurrent-downloads = 4
-
-pref-format = "flac,mp3"
-pref-min-bitrate = 200
-pref-max-bitrate = 2500
diff --git a/etc/sldl.tpl.conf b/etc/sldl.tpl.conf
new file mode 100644
index 0000000..08aab67
--- /dev/null
+++ b/etc/sldl.tpl.conf
@@ -0,0 +1,14 @@
+[slskdecks]
+username = "${SLDL_USER}"
+password = "${SLDL_PASS}"
+
+name-format = "{albumartist(/)album(/)track( )title|(missing-tags/)slsk-foldername(/)slsk-filename}"
+# name-format = "{item-name}/{artist( - )title|filename}"
+
+fast-search = true
+interactive = false
+concurrent-downloads = 4
+
+pref-format = "flac,mp3"
+pref-min-bitrate = 200
+pref-max-bitrate = 2500
diff --git a/etc/slskd.tpl.yml b/etc/slskd.tpl.yml
new file mode 100755
index 0000000..93f0647
--- /dev/null
+++ b/etc/slskd.tpl.yml
@@ -0,0 +1,302 @@
+# debug: false
+# headless: false
+# remote_configuration: false
+# remote_file_management: false
+# instance_name: default
+# flags:
+# no_logo: false
+# no_start: false
+# no_config_watch: false
+# no_connect: false
+# no_share_scan: false
+# force_share_scan: false
+# force_migrations: false
+# no_version_check: false
+# log_sql: false
+# experimental: false
+# volatile: false
+# case_sensitive_reg_ex: false
+# legacy_windows_tcp_keepalive: false
+# optimistic_relay_file_info: false
+# relay:
+# enabled: false
+# mode: controller # controller (default), agent, or debug (for local development)
+# # controller config is required when running in 'agent' mode
+# # this specifies the relay controller that will be controlling this agent
+# controller:
+# address: https://some.site.com:5000
+# ignore_certificate_errors: false
+# api_key:
+# secret:
+# downloads: false
+# # agent config is optional when running in 'controller' mode
+# # this specifies all of the agents capable of connecting
+# agents:
+# my_agent:
+# instance_name: my_agent # make sure the top-level instance_name of the agent matches!
+# secret:
+# cidr: 0.0.0.0/0,::/0
+# permissions:
+# file:
+# mode: ~ # not for Windows, chmod syntax, e.g. 644, 777. can't escalate beyond umask
+# directories:
+# incomplete: ~
+# downloads: ~
+shares:
+ directories:
+ - /app/shared
+# filters:
+# - \.ini$
+# - Thumbs.db$
+# - \.DS_Store$
+# cache:
+# storage_mode: memory
+# workers: 16
+# retention: ~ # retain indefinitely (do not automatically re-scan)
+# rooms:
+# - ~
+# global:
+# upload:
+# slots: 20
+# speed_limit: 1000 # in kibibytes
+# limits:
+# queued:
+# files: 500
+# megabytes: 5000
+# daily:
+# files: 1000
+# megabytes: 10000
+# failures: 200
+# weekly:
+# files: 5000
+# megabytes: 50000
+# failures: 1000
+# download:
+# slots: 500
+# speed_limit: 1000
+# groups:
+# default:
+# upload:
+# priority: 500
+# strategy: roundrobin
+# slots: 10
+# limits:
+# queued:
+# files: 150
+# megabytes: 1500
+# daily: ~ # no daily limits (weekly still apply)
+# weekly:
+# files: 1500
+# megabytes: 15000
+# failures: 150
+# leechers:
+# thresholds:
+# files: 1
+# directories: 1
+# upload:
+# priority: 999
+# strategy: roundrobin
+# slots: 1
+# speed_limit: 100
+# limits:
+# queued:
+# files: 15
+# megabytes: 150
+# daily:
+# files: 30
+# megabytes: 300
+# failures: 10
+# weekly:
+# files: 150
+# megabytes: 1500
+# failures: 30
+# blacklisted:
+# members:
+# -
+# cidrs:
+# -
+# user_defined:
+# my_buddies:
+# upload:
+# priority: 250
+# strategy: firstinfirstout
+# slots: 10
+# limits:
+# queued:
+# files: 1000 # override global default
+# members:
+# - alice
+# - bob
+# blacklist:
+# enabled: true
+# file:
+# filters:
+# search:
+# request:
+# - ^.{1,2}$
+web:
+ port: 5030
+ https:
+ disabled: false
+ port: 5031
+ force: false
+ certificate:
+ pfx: ~
+ password: ~
+ url_base: /
+ content_path: wwwroot
+ logging: false
+ authentication:
+ disabled: false
+ username: ${SLSKD_WEB_USER}
+ password: ${SLSKD_WEB_PASS}
+# jwt:
+# key: ~
+# ttl: 604800000
+# api_keys:
+# my_api_key:
+# key:
+# role: readonly # readonly, readwrite, administrator
+# cidr: 0.0.0.0/0,::/0
+# retention:
+# search: 10080 # 7 days, in minutes
+# transfers:
+# upload:
+# succeeded: 1440 # 1 day, in minutes
+# errored: 30
+# cancelled: 5
+# download:
+# succeeded: 1440 # 1 day, in minutes
+# errored: 20160 # 2 weeks, in minutes
+# cancelled: 5
+# files:
+# complete: 20160 # 2 weeks, in minutes
+# incomplete: 43200 # 30 days, in minutes
+# logs: 180 # days
+# logger:
+# disk: false
+# no_color: false
+# loki: ~
+# metrics:
+# enabled: false
+# url: /metrics
+# authentication:
+# disabled: false
+# username: slskd
+# password: slskd
+# feature:
+# swagger: false
+soulseek:
+ address: vps.slsknet.org
+ port: 2271
+ username: ${SLSKD_SS_USER}
+ password: ${SLSKD_SS_PASS}
+# description: |
+# A slskd user. https://github.com/slskd/slskd
+# picture: path/to/slsk-profile-picture.jpg
+# listen_ip_address: 0.0.0.0
+# listen_port: 50300
+# diagnostic_level: Info
+# distributed_network:
+# disabled: false
+# disable_children: false
+# child_limit: 25
+# logging: false
+# connection:
+# timeout:
+# connect: 10000
+# inactivity: 15000
+# buffer:
+# read: 16384
+# write: 16384
+# transfer: 262144
+# write_queue: 250
+# proxy:
+# enabled: false
+# address: ~
+# port: ~
+# username: ~
+# password: ~
+# integration:
+# webhooks:
+# my_webhook:
+# on:
+# - DownloadFileComplete
+# call:
+# url: https://192.168.1.42:8080/slskd_webhook
+# headers:
+# - name: X-API-Key
+# value: foobar1234
+# - name: Authorization
+# value: Bearer eyJ...ssw5c
+# - name: User-Agent
+# value: slskd/0.0
+# ignore_certificate_errors: false
+# timeout: 5000 # in milliseconds
+# retry:
+# attempts: 3
+# scripts:
+# run_command_with_linux_system_shell: # automatically uses the executable defined in $SHELL
+# on:
+# - DownloadFileComplete
+# run:
+# command: 'echo "$SLSKD_SCRIPT_DATA" >> linux_system_shell.txt'
+# run_with_sh:
+# on:
+# - DownloadFileComplete
+# run:
+# executable: /bin/sh
+# args: '-c "echo $SLSKD_SCRIPT_DATA >> linux_sh.txt"'
+# run_with_sh_and_args_list:
+# on:
+# - DownloadFileComplete
+# run:
+# executable: /bin/sh
+# arglist:
+# - -c
+# - echo $SLSKD_SCRIPT_DATA >> linux_sh_and_args_list.txt
+# run_command_with_windows_system_shell: # automatically uses cmd.exe (included with all Windows installs)
+# on:
+# - DownloadFileComplete
+# run:
+# command: 'echo "%SLSKD_SCRIPT_DATA%" >> windows_system_shell.txt'
+# run_with_windows_cmd:
+# on:
+# - DownloadFileComplete
+# run:
+# executable: cmd.exe
+# args: '/c "echo "%SLSKD_SCRIPT_DATA%" >> windows_cmd.txt"'
+# run_with_windows_git_bash:
+# on:
+# - DownloadFileComplete
+# run:
+# executable: C:\Program Files\Git\bin\bash.exe
+# args: '-c "echo "$SLSKD_SCRIPT_DATA" >> windows_git_bash.txt"'
+# run_with_windows_cmd_and_args_list:
+# on:
+# - DownloadFileComplete
+# run:
+# executable: cmd.exe
+# arglist:
+# - /c
+# - 'echo "%SLSKD_SCRIPT_DATA%" >> windows_cmd_and_args_list.txt'
+# ftp:
+# enabled: false
+# address: ~
+# port: ~
+# username: ~
+# password: ~
+# remote_path: /
+# encryption_mode: auto
+# ignore_certificate_errors: false
+# overwrite_existing: true
+# connection_timeout: 5000
+# retry_attempts: 3
+# pushbullet:
+# enabled: false
+# access_token: ~
+# notification_prefix: "From slskd:"
+# notify_on_private_message: true
+# notify_on_room_mention: true
+# retry_attempts: 3
+# cooldown_time: 900000
\ No newline at end of file
diff --git a/etc/slskd.yml b/etc/slskd.yml
old mode 100755
new mode 100644
index ebe659f..729e8d0
--- a/etc/slskd.yml
+++ b/etc/slskd.yml
@@ -148,8 +148,8 @@ web:
logging: false
authentication:
disabled: false
- username: ntwl
- password: church
+ username: ${SLSKD_WEB_USER}
+ password: ${SLSKD_WEB_PASS}
# jwt:
# key: ~
# ttl: 604800000
diff --git a/slskd.Dockerfile b/slskd.Dockerfile
new file mode 100644
index 0000000..a952c23
--- /dev/null
+++ b/slskd.Dockerfile
@@ -0,0 +1,5 @@
+FROM slskd/slskd
+
+RUN apk add envsubst
+
+ENTRYPOINT ["bash", "/app/etc/run_slskd.sh"]
\ No newline at end of file
diff --git a/slskdecks.Dockerfile b/slskdecks.Dockerfile
index 3b05555..1288daf 100644
--- a/slskdecks.Dockerfile
+++ b/slskdecks.Dockerfile
@@ -6,6 +6,7 @@ RUN apt-get update
RUN apt-get install -y \
curl \
unzip \
+ gettext-base \
libicu-dev
RUN mkdir -p /tmp/setup
@@ -18,7 +19,9 @@ RUN chmod +x sldl
RUN mv sldl /usr/local/bin/
RUN rm -rf /tmp/setup
-COPY ./src/ /app/src/slskdecks
+COPY ./src/ /app/src
+COPY ./etc/ /app/etc
-WORKDIR /app/data/shared
-# CMD npm start
+WORKDIR /app/
+
+CMD ["bash", "/app/etc/run.sh"]
diff --git a/src/main.rs b/src/main.rs
new file mode 100644
index 0000000..e7a11a9
--- /dev/null
+++ b/src/main.rs
@@ -0,0 +1,3 @@
+fn main() {
+ println!("Hello, world!");
+}