###################################################################### #Begin config set db "domain-stats.sql.db" set resolve 1 set debug 1 #End config ###################################################################### set mydir "/home/vadtec/tcl/" lappend auto_path $mydir package require dns package require ip package require sqlite3 # sql DB sqlite3 dbs $db bind msgm - "!resolve*" cm_resolve proc cm_resolve { nick uhost handle text } { global resolve set sql "SELECT id, domain FROM domain WHERE ip = \"\" AND longip ISNULL ORDER BY id;" output "log" $sql set result [dbs eval $sql] output "log" $result if {$resolve} { set i 0 foreach r [split $result " "] { if {[string is integer -strict $r]} { set i $r } else { set status "" set ipver [ip::version $r] output "log" ">>> 1 >> 1 > id: $i domain $r ipver: $ipver" if {$ipver == 4} { set longip [ip::toInteger $r] output "log" ">>> 1 >> 2 > ipver: $ipver ip: $r longip: $longip" set sql "UPDATE domain SET ip = '$r', longip = $longip WHERE id = $i" dbs eval $sql } if {$ipver == 6} { set longip "0" catch {[set longip [ip::toInteger $r]]} output "log" ">>> 1 >> 3 > ipver: $ipver ip: $r longip: $longip" set sql "UPDATE domain SET ip = '$r', longip = $longip WHERE id = $i" dbs eval $sql } if {$ipver == -1} { set tok [dns::resolve $r] set status [dns::status $tok] output "log" ">>> 1 >> 4 > ipver: $ipver ip: $r status: $status" } if {$status eq "ok"} { set ip [dns::address $tok] if {[llength $ip] != 1} { set temp [split $ip] set ip [lindex $temp 0] } set longip [ip::toInteger $ip] output "log" ">>> 1 >> 5 > id: $i ipver: $ipver ip: $ip longip: $longip" set sql "UPDATE domain SET ip = '$ip', longip = $longip WHERE id = $i" dbs eval $sql } } } } } proc output { where text } { global debug if {$debug} { if {$where eq "log"} { putlog $text } else { putmsg $where $text } } }