packages/frickin: use uci config
[packages.git] / net / frickin / files / frickin.init
index 3e90470..c002513 100644 (file)
@@ -6,13 +6,57 @@ START=50
 SERVICE_DAEMONIZE=1
 SERVICE_WRITE_PID=1
 
-DEFAULT=/etc/default/frickin
+append_string() {
+       local var="$1"
+       local section="$2"
+       local option="$3"
+       local val="$4"
+       local _val
+       config_get _val "$section" "$option"
+       [ -n "$_val" ] && append "$var" "$val $_val"
+}
+
+section_enabled() {
+       local enabled
+       config_get_bool enabled "$1" 'enabled' 0
+       [ $enabled -gt 0 ]
+}
+
+start_instance() {
+       local section="$1"
+       local args
+
+       section_enabled "$section" || return 1
+
+       append_string args "$section" 'listen_ip' '-l'
+       append_string args "$section" 'server_ip' '-s'
+       append_string args "$section" 'conn_limit' '-c'
+
+       SERVICE_PID_FILE="/var/run/frickin-${section}.pid"
+       service_start /usr/sbin/frickin $args
+}
+
+stop_instance() {
+       local section="$1"
+       local id
+       local if
+
+       section_enabled "$section" || return 1
+
+       SERVICE_PID_FILE="/var/run/frickin-${section}.pid"
+       service_stop /usr/sbin/frickin
+}
 
 start() {
-       [ -f $DEFAULT ] && . $DEFAULT
-       service_start /usr/sbin/frickin $OPTIONS
+       include /lib/network
+       scan_interfaces
+       config_load 'frickin'
+       config_foreach start_instance 'frickin'
 }
 
 stop() {
-       service_stop /usr/sbin/frickin
+       include /lib/network
+       scan_interfaces
+       config_load 'frickin'
+       config_foreach stop_instance 'frickin'
 }