Ticket #6025: etherwake_uci.patch

File etherwake_uci.patch, 5.1 KB (added by Maddes <maddes_trac@…>, 8 years ago)

Makefile changes, init script and config file

  • net/etherwake/files/etherwake.init

     
     1#!/bin/sh /etc/rc.common 
     2# Copyright (C) 2009 OpenWrt.org 
     3 
     4NAME='etherwake' 
     5START=60 
     6PROGRAM='' 
     7 
     8start() 
     9{ 
     10        local searchlist='' 
     11        local section='' 
     12        local value='' 
     13 
     14        config_load "${NAME}" 
     15 
     16        # check for available program 
     17        config_get searchlist 'setup' 'pathes' 
     18        PROGRAM=$(search_program "${searchlist}") 
     19        [ -z "${PROGRAM}" ] && { 
     20                echo "${initscript}: No ${NAME} program installed. Check: opkg list | grep ${NAME}" 
     21                exit 1 
     22        } 
     23 
     24        # sudo 
     25        config_get_bool value 'setup' 'sudo' '0' 
     26        [ "${value}" -ne 0 ] && PROGRAM="sudo ${PROGRAM}" 
     27 
     28        # interface 
     29        config_get value 'setup' 'interface' 
     30        [ -n "${value}" ] && append PROGRAM "-i ${value}" 
     31 
     32        # broadcast 
     33        config_get_bool value 'setup' 'broadcast' '0' 
     34        [ "${value}" -ne 0 ] && append PROGRAM '-b' 
     35 
     36        # wake up targets 
     37        config_foreach etherwake_start target $* 
     38} 
     39 
     40etherwake_start() 
     41{ 
     42        local section="$1" 
     43        shift 
     44 
     45        local names="$*" 
     46 
     47        local value='' 
     48        local target='' 
     49 
     50        if [ -z "${names}" ] 
     51         then 
     52                # check if boot target 
     53                config_get_bool value "${section}" 'wakeonboot' '0' 
     54                [ "${value}" -eq 0 ] && return 0 
     55 
     56                # wake up target 
     57                do_etherwake "${section}" 
     58                return $? 
     59        else 
     60                # name 
     61                config_get value "${section}" 'name' 
     62                [ -z "${value}" ] && return 0 
     63 
     64                for target in ${names} 
     65                 do 
     66                        [ "${value}" != "${target}" ] && continue 
     67 
     68                        # wake up target 
     69                        do_etherwake "${section}" 
     70                        return $? 
     71                done 
     72        fi 
     73} 
     74 
     75# execute etherwake command for target 
     76do_etherwake() 
     77{ 
     78        local section="$1" 
     79        local value='' 
     80        local password='' 
     81        local args='' 
     82 
     83        # password 
     84        config_get value "${section}" 'password' 
     85        [ -n "${value}" ] && { 
     86                password=$(etherwake_password "${value}") 
     87                append args "-p ${password}" 
     88        } 
     89 
     90        # mac address 
     91        config_get value "${section}" 'mac' 
     92        [ -z "${value}" ] && { echo "${initscript}: Target ${section} has no MAC address"; return 1; } 
     93        append args "${value}" 
     94 
     95        # name 
     96        config_get value "${section}" 'name' 
     97        [ -z "${value}" ] && value="{section}" 
     98 
     99        # execute command 
     100        echo "${initscript}: Waking up ${value} via ${PROGRAM}${args:+ ${args}}" 
     101        ${PROGRAM} ${args} 
     102        return $? 
     103} 
     104 
     105 
     106# find first available program from searchlist 
     107search_program() 
     108{ 
     109        local searchlist="$1" 
     110        local test='' 
     111        local program='' 
     112 
     113        for test in ${searchlist} ; do 
     114                [ -x "${test}" ] && { 
     115                        program="${test}" 
     116                        break; 
     117                } 
     118        done 
     119 
     120        [ -n "${program}" ] && echo "${program}" 
     121 
     122        return 
     123} 
     124 
     125# prepare hex password 
     126etherwake_password() 
     127{ 
     128        local delimiter=':' 
     129        local password=`echo "$1" | sed "s/../&${delimiter}/g"` 
     130        echo "${password%${delimiter}}" 
     131        return 
     132} 
  • net/etherwake/files/etherwake.config

     
     1config 'etherwake' 'setup' 
     2        # possible program pathes 
     3        option 'pathes' '/usr/bin/etherwake /usr/bin/ether-wake' 
     4        # use sudo, defaults to off 
     5        option 'sudo' 'off' 
     6        # interface, defaults to 'eth0' 
     7        # -i <ifname> 
     8        option 'interface' '' 
     9        # send wake-up packet to the broadcast address, defaults to off 
     10        # -b 
     11        option 'broadcast' 'off' 
     12 
     13config 'target' 
     14        # name for the target 
     15        option 'name' 'example' 
     16        # mac address to wake up 
     17        option 'mac' '11:22:33:44:55:66' 
     18        # password in hex without any delimiters 
     19        option 'password' 'AABBCCDDEEFF' 
     20        # wake up on system start, defaults to off 
     21        option 'wakeonboot' 'off' 
     22 
     23# To add a new target use: 
     24#  uci add etherwake target 
     25#  uci set etherwake.@target[-1].name=example 
     26#  uci set etherwake.@target[-1].mac=11:22:33:44:55:66 
     27#  uci set etherwake.@target[-1].password=AABBCCDDEEFF 
     28#  uci set etherwake.@target[-1].wakeonboot=off 
  • net/etherwake/Makefile

     
    11# 
    2 # Copyright (C) 2007 OpenWrt.org 
     2# Copyright (C) 2007-2009 OpenWrt.org 
    33# 
    44# This is free software, licensed under the GNU General Public License v2. 
    55# See /LICENSE for more information. 
     6# 
    67 
    78include $(TOPDIR)/rules.mk 
    89 
    910PKG_NAME:=etherwake 
    1011PKG_VERSION:=1.09 
    11 PKG_RELEASE:=1 
     12PKG_RELEASE:=2 
    1213 
    1314PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).orig.tar.gz 
    1415PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/main/e/etherwake 
     
    2122define Package/etherwake 
    2223  SECTION:=net 
    2324  CATEGORY:=Network 
    24   TITLE:=A little tool to send magic Wake-on-LAN packets 
     25  TITLE:=WoL client for magic packets via ethernet frames 
    2526  URL:=http://ftp.debian.org/debian/pool/main/e/etherwake 
    2627endef 
    2728 
     
    4041define Package/etherwake/install 
    4142        $(INSTALL_DIR) $(1)/usr/bin 
    4243        $(INSTALL_BIN) $(PKG_BUILD_DIR)/etherwake $(1)/usr/bin/ 
     44        $(INSTALL_DIR) $(1)/etc/config 
     45        $(INSTALL_DATA) files/$(PKG_NAME).config $(1)/etc/config/$(PKG_NAME) 
     46        $(INSTALL_DIR) $(1)/etc/init.d 
     47        $(INSTALL_BIN) files/$(PKG_NAME).init $(1)/etc/init.d/$(PKG_NAME) 
    4348endef 
    4449 
    4550$(eval $(call BuildPackage,etherwake))