etherwake: import from packages
This commit is contained in:
parent
f5e6eced6e
commit
bf27645121
4 changed files with 251 additions and 0 deletions
54
net/etherwake/Makefile
Normal file
54
net/etherwake/Makefile
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
#
|
||||||
|
# Copyright (C) 2007-2011 OpenWrt.org
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
# See /LICENSE for more information.
|
||||||
|
#
|
||||||
|
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
|
PKG_NAME:=etherwake
|
||||||
|
PKG_VERSION:=1.09
|
||||||
|
PKG_RELEASE:=3
|
||||||
|
|
||||||
|
PKG_SOURCE:=$(PKG_NAME)_$(PKG_VERSION).orig.tar.gz
|
||||||
|
PKG_SOURCE_URL:=http://ftp.debian.org/debian/pool/main/e/etherwake
|
||||||
|
PKG_MD5SUM:=628e8b2a28d47f262e4c26c989402a59
|
||||||
|
|
||||||
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION).orig
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
define Package/etherwake
|
||||||
|
SECTION:=net
|
||||||
|
CATEGORY:=Network
|
||||||
|
TITLE:=WoL client for magic packets via ethernet frames
|
||||||
|
URL:=http://ftp.debian.org/debian/pool/main/e/etherwake
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/etherwake/description
|
||||||
|
You can wake up WOL compliant Computers which have been powered down to
|
||||||
|
sleep mode or start WOL compliant Computers with a BIOS feature.
|
||||||
|
WOL is an abbreviation for Wake-on-LAN. It is a standard that allows you
|
||||||
|
to turn on a computer from another location over a network connection.
|
||||||
|
ether-wake also supports WOL passwords.
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Build/Compile
|
||||||
|
$(TARGET_CC) $(TARGET_CFLAGS) -D__UCLIBC__ $(PKG_BUILD_DIR)/ether-wake.c -o $(PKG_BUILD_DIR)/etherwake
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/etherwake/install
|
||||||
|
$(INSTALL_DIR) $(1)/usr/bin
|
||||||
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/etherwake $(1)/usr/bin/
|
||||||
|
$(INSTALL_DIR) $(1)/etc/config
|
||||||
|
$(INSTALL_DATA) files/$(PKG_NAME).config $(1)/etc/config/$(PKG_NAME)
|
||||||
|
$(INSTALL_DIR) $(1)/etc/init.d
|
||||||
|
$(INSTALL_BIN) files/$(PKG_NAME).init $(1)/etc/init.d/$(PKG_NAME)
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/etherwake/conffiles
|
||||||
|
/etc/config/etherwake
|
||||||
|
endef
|
||||||
|
|
||||||
|
$(eval $(call BuildPackage,etherwake))
|
28
net/etherwake/files/etherwake.config
Normal file
28
net/etherwake/files/etherwake.config
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
config 'etherwake' 'setup'
|
||||||
|
# possible program pathes
|
||||||
|
option 'pathes' '/usr/bin/etherwake /usr/bin/ether-wake'
|
||||||
|
# use sudo, defaults to off
|
||||||
|
option 'sudo' 'off'
|
||||||
|
# interface, defaults to 'eth0'
|
||||||
|
# -i <ifname>
|
||||||
|
option 'interface' ''
|
||||||
|
# send wake-up packet to the broadcast address, defaults to off
|
||||||
|
# -b
|
||||||
|
option 'broadcast' 'off'
|
||||||
|
|
||||||
|
config 'target'
|
||||||
|
# name for the target
|
||||||
|
option 'name' 'example'
|
||||||
|
# mac address to wake up
|
||||||
|
option 'mac' '11:22:33:44:55:66'
|
||||||
|
# password in hex without any delimiters
|
||||||
|
option 'password' 'AABBCCDDEEFF'
|
||||||
|
# wake up on system start, defaults to off
|
||||||
|
option 'wakeonboot' 'off'
|
||||||
|
|
||||||
|
# To add a new target use:
|
||||||
|
# uci add etherwake target
|
||||||
|
# uci set etherwake.@target[-1].name=example
|
||||||
|
# uci set etherwake.@target[-1].mac=11:22:33:44:55:66
|
||||||
|
# uci set etherwake.@target[-1].password=AABBCCDDEEFF
|
||||||
|
# uci set etherwake.@target[-1].wakeonboot=off
|
132
net/etherwake/files/etherwake.init
Normal file
132
net/etherwake/files/etherwake.init
Normal file
|
@ -0,0 +1,132 @@
|
||||||
|
#!/bin/sh /etc/rc.common
|
||||||
|
# Copyright (C) 2009 OpenWrt.org
|
||||||
|
|
||||||
|
NAME='etherwake'
|
||||||
|
START=60
|
||||||
|
PROGRAM=''
|
||||||
|
|
||||||
|
start()
|
||||||
|
{
|
||||||
|
local searchlist=''
|
||||||
|
local section=''
|
||||||
|
local value=''
|
||||||
|
|
||||||
|
config_load "${NAME}"
|
||||||
|
|
||||||
|
# check for available program
|
||||||
|
config_get searchlist 'setup' 'pathes'
|
||||||
|
PROGRAM=$(search_program "${searchlist}")
|
||||||
|
[ -z "${PROGRAM}" ] && {
|
||||||
|
echo "${initscript}: No ${NAME} program installed. Check: opkg list | grep ${NAME}"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# sudo
|
||||||
|
config_get_bool value 'setup' 'sudo' '0'
|
||||||
|
[ "${value}" -ne 0 ] && PROGRAM="sudo ${PROGRAM}"
|
||||||
|
|
||||||
|
# interface
|
||||||
|
config_get value 'setup' 'interface'
|
||||||
|
[ -n "${value}" ] && append PROGRAM "-i ${value}"
|
||||||
|
|
||||||
|
# broadcast
|
||||||
|
config_get_bool value 'setup' 'broadcast' '0'
|
||||||
|
[ "${value}" -ne 0 ] && append PROGRAM '-b'
|
||||||
|
|
||||||
|
# wake up targets
|
||||||
|
config_foreach etherwake_start target $*
|
||||||
|
}
|
||||||
|
|
||||||
|
etherwake_start()
|
||||||
|
{
|
||||||
|
local section="$1"
|
||||||
|
shift
|
||||||
|
|
||||||
|
local names="$*"
|
||||||
|
|
||||||
|
local value=''
|
||||||
|
local target=''
|
||||||
|
|
||||||
|
if [ -z "${names}" ]
|
||||||
|
then
|
||||||
|
# check if boot target
|
||||||
|
config_get_bool value "${section}" 'wakeonboot' '0'
|
||||||
|
[ "${value}" -eq 0 ] && return 0
|
||||||
|
|
||||||
|
# wake up target
|
||||||
|
do_etherwake "${section}"
|
||||||
|
return $?
|
||||||
|
else
|
||||||
|
# name
|
||||||
|
config_get value "${section}" 'name'
|
||||||
|
[ -z "${value}" ] && return 0
|
||||||
|
|
||||||
|
for target in ${names}
|
||||||
|
do
|
||||||
|
[ "${value}" != "${target}" ] && continue
|
||||||
|
|
||||||
|
# wake up target
|
||||||
|
do_etherwake "${section}"
|
||||||
|
return $?
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# execute etherwake command for target
|
||||||
|
do_etherwake()
|
||||||
|
{
|
||||||
|
local section="$1"
|
||||||
|
local value=''
|
||||||
|
local password=''
|
||||||
|
local args=''
|
||||||
|
|
||||||
|
# password
|
||||||
|
config_get value "${section}" 'password'
|
||||||
|
[ -n "${value}" ] && {
|
||||||
|
password=$(etherwake_password "${value}")
|
||||||
|
append args "-p ${password}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# mac address
|
||||||
|
config_get value "${section}" 'mac'
|
||||||
|
[ -z "${value}" ] && { echo "${initscript}: Target ${section} has no MAC address"; return 1; }
|
||||||
|
append args "${value}"
|
||||||
|
|
||||||
|
# name
|
||||||
|
config_get value "${section}" 'name'
|
||||||
|
[ -z "${value}" ] && value="{section}"
|
||||||
|
|
||||||
|
# execute command
|
||||||
|
echo "${initscript}: Waking up ${value} via ${PROGRAM}${args:+ ${args}}"
|
||||||
|
${PROGRAM} ${args}
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# find first available program from searchlist
|
||||||
|
search_program()
|
||||||
|
{
|
||||||
|
local searchlist="$1"
|
||||||
|
local test=''
|
||||||
|
local program=''
|
||||||
|
|
||||||
|
for test in ${searchlist} ; do
|
||||||
|
[ -x "${test}" ] && {
|
||||||
|
program="${test}"
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
done
|
||||||
|
|
||||||
|
[ -n "${program}" ] && echo "${program}"
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
# prepare hex password
|
||||||
|
etherwake_password()
|
||||||
|
{
|
||||||
|
local delimiter=':'
|
||||||
|
local password=`echo "$1" | sed "s/../&${delimiter}/g"`
|
||||||
|
echo "${password%${delimiter}}"
|
||||||
|
return
|
||||||
|
}
|
37
net/etherwake/patches/100-no_ether_hostton.patch
Normal file
37
net/etherwake/patches/100-no_ether_hostton.patch
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
--- etherwake-1.09.orig/ether-wake.c 2005-07-10 20:44:25.000000000 +0200
|
||||||
|
+++ etherwake-1.09.orig.no_ether_hostton/ether-wake.c 2007-04-29 19:03:41.000000000 +0200
|
||||||
|
@@ -15,7 +15,11 @@
|
||||||
|
" an optional password appended.\n"
|
||||||
|
"\n"
|
||||||
|
" The single required parameter is the Ethernet MAC (station) address\n"
|
||||||
|
+#if !defined(__UCLIBC__)
|
||||||
|
" of the machine to wake or a host ID with known NSS 'ethers' entry.\n"
|
||||||
|
+#else
|
||||||
|
+" of the machine to wake.\n"
|
||||||
|
+#endif
|
||||||
|
" The MAC address may be found with the 'arp' program while the target\n"
|
||||||
|
" machine is awake.\n"
|
||||||
|
"\n"
|
||||||
|
@@ -289,16 +293,22 @@
|
||||||
|
if (debug)
|
||||||
|
fprintf(stderr, "The target station address is %s.\n",
|
||||||
|
ether_ntoa(eaddr));
|
||||||
|
+#if !defined(__UCLIBC__)
|
||||||
|
} else if (ether_hostton(hostid, eaddr) == 0) {
|
||||||
|
if (debug)
|
||||||
|
fprintf(stderr, "Station address for hostname %s is %s.\n",
|
||||||
|
hostid, ether_ntoa(eaddr));
|
||||||
|
+#endif
|
||||||
|
} else {
|
||||||
|
(void)fprintf(stderr,
|
||||||
|
"ether-wake: The Magic Packet host address must be "
|
||||||
|
"specified as\n"
|
||||||
|
+#if !defined(__UCLIBC__)
|
||||||
|
" - a station address, 00:11:22:33:44:55, or\n"
|
||||||
|
" - a hostname with a known 'ethers' entry.\n");
|
||||||
|
+#else
|
||||||
|
+ " - a station address, 00:11:22:33:44:55\n");
|
||||||
|
+#endif
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
Loading…
Reference in a new issue