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!"); +}