0
0
mirror of https://github.com/openwrt/packages.git synced 2025-07-06 12:53:18 +00:00
Files
packages/net/openlist/files/openlist.init
Tianling Shen b13bdcbac6 openlist: move from alist and update to 4.0.5
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>
2025-07-01 01:04:08 +08:00

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"
}