$! Traceroute.COM $! $! Do a Traceroute $! $! This search takes a single string and a set of additional $! qualifiers. Then it does a traceroute. $! $! Inputs from the form will be: $! $! (X_)QUERY - the text of the query (spaces are + characters) $! (X_)AS - if set to "YES," then will do AS lookups $! (X_)LRR - if set to a station, will trace from there $! (X_)MAX - if set to an integer, will be maximum TTL. Default 30. $! (X_)MIN - if set to an integer, will be minimum TTL. Default 4. $! (X_)NUM - if set to an integer, will be number probes. Default 3. $! (X_)NOSYM - if set to "YES," then will NOT do DNS lookups $! $! An example of this might be: $! $!
",nl
$!
$! If this is from Combat.UXN.COM, tell them
$!
$!+++ no more mr nice guy - ehud
$! if (f$locate("COMBAT.UXN.COM",h_refer) .ne. f$length(h_refer)) then -
$! $ say "Traceroute for combat.uxn.com users starts at hop 8 for best speed",nl
$!---
$ define/nolog/user sys$output net_link
$ traceroute 'query' 'switches'
$ say "For more information on enhanced traceroute, ",nl $ say "read the ",nl $ say "FAQ
",nl $ say "Press the back button on your browser to do it again,",nl $ say "or if you're an exceptionally lazy person and want to waste",nl $ say "resources, click here",nl $ say "to go back to the Opus One traceroute page. If you have a",nl $ say "sudden urge to care about what Opus One is,",nl $ say "this will get you",nl $ say "to our home page. As if.",nl $ say "" $! $done: $ exit $no_query: $ say "Stop screwing around." $ exit $validate_string: subroutine $! $! p1 is string to validate. If it doesn't, we never return $! $ p1_len = f$length(p1) $ if (f$locate("%",p1) .ne. p1_len) then $ goto no_p1 $ if (f$locate("+",p1) .ne. p1_len) then $ goto no_p1 $ if (f$locate("\",p1) .ne. p1_len) then $ goto no_p1 $ if (f$locate("/",p1) .ne. p1_len) then $ goto no_p1 $ if (f$locate("!",p1) .ne. p1_len) then $ goto no_p1 $ if (f$locate("&",p1) .ne. p1_len) then $ goto no_p1 $ if (f$locate("@",p1) .ne. p1_len) then $ goto no_p1 $ if (f$locate("$",p1) .ne. p1_len) then $ goto no_p1 $ if (f$locate("^",p1) .ne. p1_len) then $ goto no_p1 $ if (f$locate("*",p1) .ne. p1_len) then $ goto no_p1 $ if (f$locate("(",p1) .ne. p1_len) then $ goto no_p1 $ if (f$locate("=",p1) .ne. p1_len) then $ goto no_p1 $ if (f$locate("?",p1) .ne. p1_len) then $ goto no_p1 $ if (f$locate("<",p1) .ne. p1_len) then $ goto no_p1 $ if (f$locate("[",p1) .ne. p1_len) then $ goto no_p1 $ if (f$locate("{",p1) .ne. p1_len) then $ goto no_p1 $ if (f$locate("'",p1) .ne. p1_len) then $ goto no_p1 $ if (f$locate(":",p1) .ne. p1_len) then $ goto no_p1 $ if (f$locate(",",p1) .ne. p1_len) then $ goto no_p1 $ if (f$locate("""",p1) .ne. p1_len) then $ goto no_p1 $ exit $no_p1: $ say "Stop screwing around. Do you think that this is, Unix?" $! close net_link $ exit $ENDSUBROUTINE $validate_ipaddr: subroutine $! $! p1 is an IP address to validate. If it doesn't, we never return $! $ p1_len = f$length(p1) $ p1_char1 = f$extract(0,1,p1) $ p1_char3 = f$extract(0,3,p1) $ p1_char7 = f$extract(0,7,p1) $! $! If not starting with numeric 1, then don't bother $! $ if (p1_char1 .nes. "1") then $ exit $! $! Trap out 10/8 $! $ if (p1_char3 .eqs. "10.") then $ goto no_ip $! $! Trap out 192.168/16 $! $ if (p1_char7 .eqs. "192.168") then $ goto no_ip $! $! Trap out 172.16/12 $! $ if (p1_char7 .eqs. "172.16.") then $ goto no_ip $ if (p1_char7 .eqs. "172.17.") then $ goto no_ip $ if (p1_char7 .eqs. "172.18.") then $ goto no_ip $ if (p1_char7 .eqs. "172.19.") then $ goto no_ip $ if (p1_char7 .eqs. "172.20.") then $ goto no_ip $ if (p1_char7 .eqs. "172.21.") then $ goto no_ip $ if (p1_char7 .eqs. "172.22.") then $ goto no_ip $ if (p1_char7 .eqs. "172.23.") then $ goto no_ip $ if (p1_char7 .eqs. "172.24.") then $ goto no_ip $ if (p1_char7 .eqs. "172.25.") then $ goto no_ip $ if (p1_char7 .eqs. "172.26.") then $ goto no_ip $ if (p1_char7 .eqs. "172.27.") then $ goto no_ip $ if (p1_char7 .eqs. "172.28.") then $ goto no_ip $ if (p1_char7 .eqs. "172.29.") then $ goto no_ip $ if (p1_char7 .eqs. "172.30.") then $ goto no_ip $ if (p1_char7 .eqs. "172.31.") then $ goto no_ip $! $! We must be OK $! $ exit $no_ip: $! Explain that the user is broken $ say "
",nl $ say "You are trying to traceroute to a private address, as defined ",nl $ say "in RFC 1918 (among others). Those addresses are not available from ",nl $ say "Opus One. If you are trying to track down a spammer, please click ",nl $ say "on the link below for Spam Fighters.",nl $ say "",nl $ say "If you are actually trying to traceroute from Opus One to ",nl $ say "one of those addresses, then ... well ... you can't get there ",nl $ say "from here.",nl $ say "
For more information on enhanced traceroute, ",nl $ say "read the ",nl $ say "FAQ
",nl $ say "Press the back button on your browser to do it again,",nl $ say "or if you're an exceptionally lazy person and want to waste",nl $ say "resources, click here",nl $ say "to go back to the Opus One traceroute page. If you have a",nl $ say "sudden urge to care about what Opus One is,",nl $ say "this will get you",nl $ say "to our home page. As if.",nl $ say "",nl $ exit $! $done: $ exit $ ENDSUBROUTINE