====== HTTP POST using sed/wc/nc ====== On limited systems where there is no memory for cURL or a full wget, like DD-WRT routers, you can easily do some HTTP-POSTs using the mostly available ''sed'', ''wc'' and ''nc'' tools. First you'll need this ''sed''-file: s/%/%25/g s/ /%20/g s/ /%09/g s/!/%21/g s/"/%22/g s/#/%23/g s/\$/%24/g s/\&/%26/g s/'\''/%27/g s/(/%28/g s/)/%29/g s/\*/%2a/g s/+/%2b/g s/,/%2c/g s/-/%2d/g s/\./%2e/g s/\//%2f/g s/:/%3a/g s/;/%3b/g s//%3e/g s/?/%3f/g s/@/%40/g s/\[/%5b/g s/\\/%5c/g s/\]/%5d/g s/\^/%5e/g s/_/%5f/g s/`/%60/g s/{/%7b/g s/|/%7c/g s/}/%7d/g s/~/%7e/g s/ /%09/g Now use this script: #!/bin/sh if [ -z $1 ] || [ -z "$2" ]; then echo "Use: $0 \"event\" prio \"message\"" exit 1 fi SEDSCRIPT=/tmp/root/urlencode.sed EVENT=`echo $1 | sed -f $SEDSCRIPT` MESSAGE=`echo $3 | sed -f $SEDSCRIPT` APP=`echo "DD-WRT" | sed -f $SEDSCRIPT` RECIPIENT=0123456789abcdef0123456789abcdef01234567 # Priority can be -2 .. 2 (-2 = lowest, 2 = highest) PRIORITY=$2 HOST="my.server.com" PORT="80" URI="/path/to/prowlProxy.php?add" POST_DATA="apikey=$RECIPIENT&priority=$PRIORITY&application=$APP&event=$EVENT&description=$MESSAGE" POST_LEN=`echo "$POST_DATA" | wc -c` HTTP_QUERY="POST $URI HTTP/1.1 Host: $HOST Content-Length: $POST_LEN Content-Type: application/x-www-form-urlencoded $POST_DATA" # echo "$HTTP_QUERY" echo "$HTTP_QUERY" | nc -w 10 $HOST $PORT > /dev/null if [ $? -eq "0" ]; then exit 0 else exit 2 fi ===== Prowl without HTTPS ===== If you don't have cURL/wget with HTTPS available on the box, you might need to use this little proxy script I wrote for sending Prowl messages. Put it on a HTTP server: >>' . $post_data . '<<<'; die(); $context = stream_context_create( array( 'http' => array( 'method' => 'POST', 'header' => "Content-Type: application/x-www-form-urlencoded\r\n" . "Content-Length: " . strlen($post_data) . "\r\n", 'content' => $post_data, ), ) ); $result = file_get_contents( $URL, false, $context ); if ( $result === false ) die( 'Proxying failed.' ); echo $result; ?> Then change the ''HOST'' and ''URI'' to: HOST="yourserver.com" URI="/path/to/prowlProxy.php?add" (The ''?add'' is important as you set the Prowl function with it.)