mirror of
https://github.com/openwrt/packages.git
synced 2025-07-06 12:53:18 +00:00
The alist was sold to a Chinese commercial company by the project owner without any clarification. Though the company bought it nearly a half year ago, they still cannot show a clear roadmap and privacy policy now. They also tried to collect runtime information from the user, but the code was not merged into the main tree "luckily". Anyway, various behaviors from the company indicate they are untrustable, so the other developers from the alist project have forked and made a new project named OpenList, which will continue to be maintained by the community. ===== security note ===== The alist code up to 3.45.0 has been reviewed "clean", however the main problem is from the author's private API that used to connect to cloud drives. For security reasons, please reset your password and/or token if possible. Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
114 lines
3.3 KiB
Bash
114 lines
3.3 KiB
Bash
#!/bin/sh /etc/rc.common
|
|
|
|
USE_PROCD=1
|
|
START=99
|
|
|
|
CONF="openlist"
|
|
PROG="/usr/bin/openlist"
|
|
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/openlist.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"
|
|
}
|