#!/bin/sh /etc/rc.common START=94 USE_PROCD=1 get_config() { config_get_bool enabled "$1" enabled 0 config_get data_dir "$1" data_dir "" config_get listen_mode "$1" listen_mode "auto" config_get_bool external_port_enabled "$1" external_port_enabled 0 config_get socket_path "$1" socket_path "/var/run/dockermanager.sock" config_get port "$1" port "8192" config_get bind_addr "$1" bind_addr "0.0.0.0" config_get base_path "$1" base_path "/apps/dockermanager/" } mkdir_p() { [ -d "$1" ] || mkdir -p "$1" } start_service() { config_load dockermanager config_foreach get_config dockermanager if [ "$enabled" != 1 ]; then return 1 fi if [ -z "$data_dir" ]; then logger -t dockermanager "data_dir is empty; set option data_dir in /etc/config/dockermanager" return 1 fi mkdir_p "$data_dir" || return 1 mkdir_p "$data_dir/state" || return 1 mkdir_p "$data_dir/cache" || return 1 logger -t dockermanager "Starting Docker Manager service" procd_open_instance docker-manager if [ "$listen_mode" = "tcp" ] || [ "$external_port_enabled" = 1 ]; then procd_set_param env \ DOCKER_MANAGER_LISTEN_MODE="tcp" \ DOCKER_MANAGER_ADDR="$bind_addr:$port" \ DOCKER_MANAGER_BASE_PATH="$base_path" \ DOCKER_MANAGER_DATA_DIR="$data_dir" \ DOCKER_MANAGER_STATIC_ROOT="/usr/share/dockermanager/www" \ DOCKER_MANAGER_PLATFORM="openwrt" \ DOCKER_MANAGER_AUTH_MODE="openwrt_luci" else procd_set_param env \ DOCKER_MANAGER_LISTEN_MODE="unix" \ DOCKER_MANAGER_SOCKET_PATH="$socket_path" \ DOCKER_MANAGER_BASE_PATH="$base_path" \ DOCKER_MANAGER_DATA_DIR="$data_dir" \ DOCKER_MANAGER_STATIC_ROOT="/usr/share/dockermanager/www" \ DOCKER_MANAGER_PLATFORM="openwrt" \ DOCKER_MANAGER_AUTH_MODE="openwrt_luci" fi procd_set_param command /usr/sbin/docker-manager procd_set_param stdout 1 procd_set_param stderr 1 procd_set_param respawn procd_close_instance logger -t dockermanager "Docker Manager service started" } service_triggers() { procd_add_reload_trigger "dockermanager" }