aboutsummaryrefslogtreecommitdiff
path: root/net/alist/files
diff options
context:
space:
mode:
Diffstat (limited to 'net/alist/files')
-rw-r--r--net/alist/files/alist.config38
-rw-r--r--net/alist/files/alist.init113
2 files changed, 151 insertions, 0 deletions
diff --git a/net/alist/files/alist.config b/net/alist/files/alist.config
new file mode 100644
index 000000000..519036655
--- /dev/null
+++ b/net/alist/files/alist.config
@@ -0,0 +1,38 @@
+
+config alist 'config'
+ option enabled '0'
+ option debug '0'
+
+ # listen
+ option listen_addr '0.0.0.0'
+ option listen_http_port '5244'
+ option listen_https_port '-1'
+ option listen_force_https '0'
+ option listen_cert_file ''
+ option listen_key_file ''
+ option listen_unix_file ''
+ option listen_unix_file_perm ''
+
+ # site
+ option site_url ''
+ option site_cdn ''
+ option site_login_expire '48'
+ option site_max_connections '0'
+ option site_tls_insecure '0'
+
+ # database
+ option db_type 'sqlite3'
+ option db_host ''
+ option db_port '0'
+ option db_user ''
+ option db_pass ''
+ option db_name ''
+ option db_table_prefix 'x_'
+ option db_ssl_mode ''
+
+ # log
+ option log_enable '1'
+ option log_max_size '5'
+ option log_max_backups '1'
+ option log_max_age '15'
+
diff --git a/net/alist/files/alist.init b/net/alist/files/alist.init
new file mode 100644
index 000000000..a06e4e165
--- /dev/null
+++ b/net/alist/files/alist.init
@@ -0,0 +1,113 @@
+#!/bin/sh /etc/rc.common
+
+USE_PROCD=1
+START=99
+
+CONF="alist"
+PROG="/usr/bin/alist"
+CONF_DIR="/etc/$CONF"
+RUN_DIR="/var/run/$CONF"
+
+uci_json_add_boolean() {
+ local enabled
+ config_get_bool enabled "${4:-config}" "$2" "${3:-0}"
+ json_add_boolean "$1" "$enabled"
+}
+
+uci_json_add_int() {
+ local value
+ config_get value "${4:-config}" "$2" "${3:-0}"
+ json_add_int "$1" "$value"
+}
+
+uci_json_add_string() {
+ local value
+ config_get value "${4:-config}" "$2" $3
+ json_add_string "$1" "$value"
+}
+
+start_service() {
+ config_load "$CONF"
+
+ local enabled
+ config_get_bool enabled "config" "enabled" "0"
+ [ "$enabled" -eq "1" ] || return 1
+
+ local jwt_secret
+ jwt_secret="$(jsonfilter -qi "$CONF_DIR/config.json" -e "@.jwt_secret")"
+ [ -n "$jwt_secret" ] || jwt_secret="$(tr -cd "a-zA-Z0-9" < "/dev/urandom" | head -c16)"
+
+ mkdir -p "$CONF_DIR"
+ mkdir -p "$RUN_DIR"
+
+ json_init
+ json_add_boolean "force" "1"
+ uci_json_add_string "site_url" "site_url"
+ uci_json_add_string "cdn" "site_cdn"
+ json_add_string "jwt_secret" "$jwt_secret"
+ uci_json_add_int "token_expires_in" "site_login_expire" "48"
+ json_add_object "database"
+ uci_json_add_string "type" "db_type" "sqlite3"
+ uci_json_add_string "host" "db_host"
+ uci_json_add_int "port" "db_port"
+ uci_json_add_string "user" "db_user"
+ uci_json_add_string "password" "db_pass"
+ uci_json_add_string "name" "db_name"
+ json_add_string "db_file" "$CONF_DIR/data.db"
+ uci_json_add_string "table_prefix" "db_table_prefix" "x_"
+ uci_json_add_string "ssl_mode" "db_ssl_mode"
+ json_close_object
+ json_add_object "scheme"
+ uci_json_add_string "address" "listen_addr" "0.0.0.0"
+ uci_json_add_int "http_port" "listen_http_port" "5244"
+ uci_json_add_int "https_port" "listen_https_port" "-1"
+ uci_json_add_boolean "force_https" "listen_force_https"
+ uci_json_add_string "cert_file" "listen_cert_file"
+ uci_json_add_string "key_file" "listen_key_file"
+ uci_json_add_string "unix_file" "listen_unix_file"
+ uci_json_add_string "unix_file_perm" "listen_unix_file_perm"
+ json_close_object
+ json_add_string "temp_dir" "$RUN_DIR/temp"
+ json_add_string "bleve_dir" "$CONF_DIR/bleve"
+ json_add_object "log"
+ uci_json_add_boolean "enable" "log_enable" "1"
+ json_add_string "name" "$RUN_DIR/log/alist.log"
+ uci_json_add_int "max_size" "log_max_size" "5"
+ uci_json_add_int "max_backups" "log_max_backups" "1"
+ uci_json_add_int "max_age" "log_max_age" "15"
+ json_add_boolean "compress" "0"
+ json_close_object
+ json_add_int "delayed_start" "0"
+ uci_json_add_int "max_connections" "site_max_connections"
+ uci_json_add_boolean "tls_insecure_skip_verify" "site_tls_insecure"
+ json_dump > "$CONF_DIR/config.json"
+
+ local db_type
+ config_get db_type "config" "db_type" "sqlite3"
+ [ "$db_type" != "sqlite3" -o -e "$CONF_DIR/data.db" ] || "$PROG" --data "$CONF_DIR" admin set "password" 2>"/dev/null"
+
+ procd_open_instance
+ procd_set_param command "$PROG"
+ procd_append_param command server
+ procd_append_param command --data "$CONF_DIR"
+ procd_append_param command --no-prefix
+
+ local debug
+ config_get_bool debug "config" "debug" "0"
+ [ "$debug" -eq "0" ] || procd_append_param command --debug
+
+ procd_set_param limits core="unlimited"
+ procd_set_param limits nofile="1000000 1000000"
+ procd_set_param respawn
+ [ "$debug" -eq "0" ] || procd_set_param stderr 1
+
+ procd_close_instance
+}
+
+stop_service() {
+ rm -rf "$RUN_DIR"
+}
+
+service_triggers() {
+ procd_add_reload_trigger "$CONF"
+}