aria2: Add files in order to use LuCI
authorHsing-Wang Liao <kuoruan@gmail.com>
Mon, 30 May 2016 07:02:08 +0000 (15:02 +0800)
committerHsing-Wang Liao <kuoruan@gmail.com>
Thu, 2 Jun 2016 08:26:02 +0000 (16:26 +0800)
* Add config file.
* Add init.d file.

Signed-off-by: Hsing-Wang Liao <kuoruan@gmail.com>
net/aria2/Makefile
net/aria2/files/aria2.conf [new file with mode: 0644]
net/aria2/files/aria2.init [new file with mode: 0755]

index 5ebdd224236a2316edfc43c60f776d156237ec1d..6ade70d64b1afc04e1328ace39c869d6ce3a1c50 100644 (file)
@@ -67,6 +67,12 @@ CONFIGURE_ARGS += \
 define Package/aria2/install
        $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/aria2c $(1)/usr/bin
+
+       $(INSTALL_DIR) $(1)/etc/init.d
+       $(INSTALL_BIN) ./files/aria2.init $(1)/etc/init.d/aria2
+
+       $(INSTALL_DIR) $(1)/etc/config
+       $(INSTALL_CONF) ./files/aria2.conf $(1)/etc/config/aria2
 endef
 
 $(eval $(call BuildPackage,aria2))
diff --git a/net/aria2/files/aria2.conf b/net/aria2/files/aria2.conf
new file mode 100644 (file)
index 0000000..22aca30
--- /dev/null
@@ -0,0 +1,10 @@
+
+config aria2 'main'
+       option enabled '0'
+       option file_allocation 'none'
+       option bt_enable_lpd 'true'
+       option enable_dht 'true'
+       option follow_torrent 'true'
+       option user 'root'
+       option dir '/mnt/sda1'
+       option save_session_interval '30'
diff --git a/net/aria2/files/aria2.init b/net/aria2/files/aria2.init
new file mode 100755 (executable)
index 0000000..4205273
--- /dev/null
@@ -0,0 +1,78 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2014-2016 nanpuyue <nanpuyue@gmail.com>
+
+START=99
+SERVICE_WRITE_PID=1
+SERVICE_DAEMONIZE=1
+
+
+append_params() {
+       local p; local v; local s="$1"; shift
+       for p in $*; do
+               config_get v "$s" "$p"
+               [ -n "$v" ] && (
+                       p=$(echo "$p" | sed -e 's|_|-|g');
+                       echo "$p=$v" >> $config_file
+                       )
+       done
+}
+
+section_enabled() {
+       local result
+       config_get_bool result "$1" 'enabled' 0
+       [ $result -eq 1 ]
+}
+
+option_disabled() {
+       local result
+       config_get_bool result "$1" "$2" 1
+       [ $result -eq 0 ]
+}
+
+start_instance() {
+       local s="$1"
+       local user
+
+       section_enabled "$s" || return 1
+
+       config_get config_dir "$s" 'config_dir' '/var/etc/aria2'
+       config_get user "$s" 'user'
+
+       config_file="$config_dir/aria2.conf"
+       session_file="$config_dir/aria2.session"
+       dht_file="$config_dir/dht.dat"
+       [ -d "$config_dir" ] || {
+               mkdir -m 0755 -p "$config_dir"
+               touch "$config_file"
+               [ -z "$user" ] || chown -R $user $config_dir
+       }
+       touch "$session_file"
+
+       echo -e "enable-rpc=true\nrpc-allow-origin-all=true\nrpc-listen-all=true\nquiet=true" > $config_file
+       echo -e "continue=true\ninput-file=$session_file\nsave-session=$session_file" >> $config_file
+       option_disabled "$s" 'enable_dht' || echo "dht-file-path=$dht_file" >> $config_file
+
+       append_params "$s" \
+               file_allocation bt_enable_lpd enable_dht rpc_user rpc_passwd rpc_listen_port dir bt_tracker disk_cache \
+               max_overall_download_limit max_overall_upload_limit max_download_limit max_upload_limit max_concurrent_downloads \
+               max_connection_per_server min_split_size split save_session_interval follow_torrent listen_port bt_max_peers \
+               peer_id_prefix user_agent rpc_secret
+       
+       config_list_foreach "$s" extra_settings append_extrasettings
+       
+       SERVICE_UID="$user" \
+       service_start /usr/bin/aria2c --conf-path="$config_file"
+}
+
+append_extrasettings() {
+       echo "$1" >> $config_file
+}
+
+start() {
+       config_load 'aria2'
+       config_foreach start_instance 'aria2'
+}
+
+stop() {
+       service_stop /usr/bin/aria2c
+}