Skip to content

Openwrt service #20

Description

@mfat

This is an init.d service file for openwrt.

To deploy:

Copy skirk executable in /usr/local/bin and make it executable:

chmod +x /usr/local/bin/skirk

Then copy the service unit file to /etc/init.d/:

scp skirk root@192.168.1.1:/etc/init.d/skirk
ssh root@192.168.1.1 'chmod +x /etc/init.d/skirk && /etc/init.d/skirk enable && /etc/init.d/skirk start'

# check logs
logread -e skirk
#!/bin/sh /etc/rc.common

# OpenWrt procd init script for Skirk
# Place at: /etc/init.d/skirk
# Make executable: chmod +x /etc/init.d/skirk
# Enable on boot:  /etc/init.d/skirk enable
# Start now:       /etc/init.d/skirk start

USE_PROCD=1

START=99
STOP=10

NAME="skirk"
BINARY="/usr/local/bin/skirk"

# Paste your full skirk:... URI here
SKIRK_URI="skirk:XXXXXXXXX"

LISTEN_ADDR="0.0.0.0:18080"
CLIENT_ID="openwrt-router"
ROUTE_MODE="google_front"
POLL_MS="800"
# Optional extras (leave empty to disable)
UPSTREAM_PROXY=""
HTTP_PROXY_LISTEN=""

validate_config() {
    [ -f "$BINARY" ] || { logger -t "$NAME" "Binary not found: $BINARY"; return 1; }
    [ -x "$BINARY" ] || { logger -t "$NAME" "Binary not executable: $BINARY"; return 1; }
    case "$SKIRK_URI" in
        skirk:*) ;;
        *) logger -t "$NAME" "SKIRK_URI does not look like a skirk: URI"; return 1 ;;
    esac
    return 0
}

start_service() {
    validate_config || return 1

    logger -t "$NAME" "Starting Skirk client (listen: $LISTEN_ADDR)"

    procd_open_instance
    procd_set_param command "$BINARY" serve-client \
        --config "$SKIRK_URI" \
        --listen "$LISTEN_ADDR" \
        --client-id "$CLIENT_ID" \
        --route-mode "$ROUTE_MODE" \
        --poll-ms "$POLL_MS"

    [ -n "$UPSTREAM_PROXY" ]    && procd_append_param command --upstream-proxy "$UPSTREAM_PROXY"
    [ -n "$HTTP_PROXY_LISTEN" ] && procd_append_param command --http-proxy-listen "$HTTP_PROXY_LISTEN"

    # Restart on crash (3 retries, 5s delay)
    procd_set_param respawn 3600 5 3

    procd_set_param stdout 1
    procd_set_param stderr 1

    procd_close_instance
}

stop_service() {
    logger -t "$NAME" "Stopping Skirk"
}

service_triggers() {
    procd_add_reload_trigger "network"
}

reload_service() {
    stop
    start
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions