From b792238f3f56436c5a22c552210cccc51a644c3d Mon Sep 17 00:00:00 2001 From: mpc Date: Sun, 7 Nov 2004 02:45:40 +0000 Subject: [PATCH] added my ping everyone script --- apps/sam/c/doc/todo.txt | 2 + apps/sam/c/examples/i2p-ping/pinger.sh | 60 ++++++++++++++++++++++++++ apps/sam/c/src/sam.c | 18 ++++++-- 3 files changed, 76 insertions(+), 4 deletions(-) create mode 100644 apps/sam/c/examples/i2p-ping/pinger.sh diff --git a/apps/sam/c/doc/todo.txt b/apps/sam/c/doc/todo.txt index f8f1f6f4c..72f72fce8 100644 --- a/apps/sam/c/doc/todo.txt +++ b/apps/sam/c/doc/todo.txt @@ -2,6 +2,8 @@ I need to do these things: * SAM raw support * Write an instruction manual +* Make dest a dynamic string +* Change SAM parser to use a hashmap Anyone can help with these things: diff --git a/apps/sam/c/examples/i2p-ping/pinger.sh b/apps/sam/c/examples/i2p-ping/pinger.sh new file mode 100644 index 000000000..598adbb09 --- /dev/null +++ b/apps/sam/c/examples/i2p-ping/pinger.sh @@ -0,0 +1,60 @@ +#!/bin/sh + +# Copyright (c) 2004, Matthew P. Cashdollar +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the author nor the names of any contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +# IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER +# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# This script I use to ping all the hosts in the I2P hosts.txt file. You should +# edit your hosts.txt and remove all the comments and blanks lines before +# running this. +# +# You can set this up to run daily via cron. It takes a very long time to run +# so I recommend starting it in the middle of the night. + +OUTPUT=/tmp/index.html +FINALOUT=$HOME/www/index.html + +echo "" > $OUTPUT +echo "" >> $OUTPUT +echo "I2P Weather Report" >> $OUTPUT +echo "" >> $OUTPUT +echo "" >> $OUTPUT +echo "

I2P Weather Report

" >> $OUTPUT +echo "Date: " >> $OUTPUT +date -u >> $OUTPUT +echo "(refreshed daily)" >> $OUTPUT +echo "

" >> $OUTPUT +echo "If your site isn't listed, that means the ping failed (I2P error)" >> $OUTPUT +echo "

" >> $OUTPUT +echo "

" >> $OUTPUT
+cut -d"=" -f1 $HOME/i2p/hosts.txt | tr "\n" " " | xargs $HOME/bin/i2p-ping -q -c 1 | grep -v "I2P error" >> $OUTPUT
+echo "
" >> $OUTPUT +echo "

" >> $OUTPUT +echo "Disclaimer: This only indicates accessibility from my router, not the network in general." >> $OUTPUT +echo "" >> $OUTPUT +echo "" >> $OUTPUT +cp $OUTPUT $FINALOUT diff --git a/apps/sam/c/src/sam.c b/apps/sam/c/src/sam.c index d426ecea7..793442289 100644 --- a/apps/sam/c/src/sam.c +++ b/apps/sam/c/src/sam.c @@ -85,8 +85,12 @@ void (*sam_statusback)(sam_sess_t *session, sam_sid_t stream_id, bool sam_close(sam_sess_t *session) { assert(session != NULL); - if (!session->connected) + if (!session->connected) { +#if SAM_WIRETAP + SAMLOGS("Connection already closed - sam_close() skipped"); +#endif return true; + } #ifdef WINSOCK if (closesocket(session->sock) == SOCKET_ERROR) { @@ -95,13 +99,19 @@ bool sam_close(sam_sess_t *session) return false; } session->connected = false; - if (sam_winsock_cleanup() == SAM_OK) + if (sam_winsock_cleanup() == SAM_OK) { +#if SAM_WIRETAP + SAMLOGS("Connection closed safely"); +#endif return true; - else + } else return false; #else if (close(session->sock) == 0) { session->connected = false; +#if SAM_WIRETAP + SAMLOGS("Connection closed safely"); +#endif return true; } else { SAMLOG("Failed closing the SAM connection (%s)", strerror(errno)); @@ -1119,7 +1129,7 @@ const char *sam_strerror(samerr_t code) case SAM_BAD_STYLE: /* Style must be stream, datagram, or raw */ return "Bad connection style"; case SAM_BAD_VERSION: /* sam_hello() had an unexpected reply */ - return "Bad SAM version"; + return "Not a SAM port, or bad SAM version"; case SAM_CALLBACKS_UNSET: /* Some callbacks are still set to NULL */ return "Callbacks unset"; case SAM_SOCKET_ERROR: /* TCP/IP connection to the SAM host:port