This is the new home of the egghelp.org community forum.
All data has been migrated (including user logins/passwords) to a new phpBB version.


For more information, see this announcement post. Click the X in the top right-corner of this box to dismiss this message.

problem with icq-drop

Support & discussion of released scripts, and announcements of new releases.
Post Reply
m
multikon
Voice
Posts: 22
Joined: Sat Jun 19, 2004 10:28 pm

problem with icq-drop

Post by multikon »

Hi Freaks

Have problems with "icq-drop 1.8" script ...

i type in a channel: !icqsend <user> <message>

answer in PL: cant read "meta(location)" ?!

the codeline of this in the script: return "http://web.icq.com$meta(Location)"


can anyone help me ?


big thx[/b]
User avatar
^DooM^
Owner
Posts: 772
Joined: Tue Aug 26, 2003 5:40 pm
Location: IronForge
Contact:

Post by ^DooM^ »

Freaks, no. Nothing better to do, yes :lol:

what does $meta(location) contain?

Maybe posting the script inside code tags for us would help.
The lifecycle of a noob is complex. Fledgling noobs gestate inside biometric pods. Once a budding noob has matured thru gestation they climb out of their pod, sit down at a PC, ask a bunch of questions that are clearly in the FAQ, The Noob is born
m
multikon
Voice
Posts: 22
Joined: Sat Jun 19, 2004 10:28 pm

Post by multikon »

Code: Select all

################################################################################################
################################################################################################
################################################################################################
####                                                                                        ####
####  ICQ-drop Ver 1.8  GeC on IRCnet (gec@raw.scene.org) May 18 2002                       ####
####       Added check if user used a valid ICQ number (number check only)                  ####
####       Added better configurable feedback messages                                      ####
####       Added website results, check if the message is really send                       ####
####       Added if-op for icqsend number / user                                            ####
####       Proc location_filter added                                                       ####
####       Todo: full ICQ protocol implementation                                           ####
####                                                                                        ####
####  ICQ-drop Ver 1.7  GeC on IRCnet (gec@raw.scene.org) Apr 3 2002                        ####
####       Added recipient can be an ICQ number (also security bug!)                        ####
####       Added help if no parameters are found                                            ####
####       Added escape uri with that                                                       ####
####       Proc go_connect completely rewritten (require http now)                          ####
####       Todo: if-op for icqsend number / user                                            ####
####       Todo: check if user used a valid ICQ number                                      ####
####       Todo: check website results, is message really send?                             ####
####                                                                                        ####
####  ICQ-drop Ver 1.6  GeC on IRCnet (gec@raw.scene.org) Apr 2 2002                        ####
####       Fixed code for new ICQ webapp.                                                   ####
####       Fixed fromemail + header in message                                              ####
####       Added channel to header & fromemail                                              ####
####       Added some extra info for log                                                    ####
####       Todo: Escape uri                                                                 ####
####                                                                                        ####
####  ICQ-drop Ver 1.5  simple on Undernet (simple@utw.com) Mar 06 1999                     ####
####       Cleaned up the sloppy code and changed up some of the fields, also added a       ####
####       public bind just for fun, because it was easy to do. Variable names are now      ####
####       also much clearer and easier to understand. Kudos to ^Dark^ for this great idea  ####
####                                                                                        ####
####  ICQ-drop Ver 1.0  ^DaRk^ on EFnet (Darkbringer@Rocketmail.com) (Edited by Xanith)     ####
####       For Eggdrop 1.3.*                                                                ####
####       as always: the code IS sloppy since im teaching myself TCL as i go...            ####
####       learned another 30 or so new commands while making this script heh               ####
####                                                                                        ####
####  This script is simple in theroy (took me forever to make it actually work outside of  ####
####       Theroy though) the bot is able to create a raw socket to ICQ's web server and    ####
####       post to their CGI exactly (almost) as one would to submit a WWPager message.     ####
####       people are able to have the bot send you ICQ messages when youre not on IRC.     ####
####       the possibilities with this script are virtualy limitless depending on what you  ####
####       wish to be notified about. the only requirements are that you run a slightly     ####
####       edited userinfo1.0.tcl <included> (to add the ICQ field in XTRA) and that you    ####
####       and/or any other user on the bot defines their ICQ UIN# with the .icq <UIN#>     ####
####       command.                                                                         ####
####                                                                                        ####
################################################################################################

################################################################################################
####                                                                                        ####
####  Syntax:                                                                               #### 
####     MSG: /msg <bot> icqsend <recipient> <message>                                      ####
####     PUB: !icqsend <recipient> <message>                                                ####
####     DCC: .icqsend <recipient> <message>                                                ####
####                                                                                        ####
################################################################################################

################################################################################################
####                                                                                        ####
####  Extra thanks to Gecko and Noob from #TCL who helped me ALOT with the sockets and      ####
####       regsub commands, and never once losing patients with my constant questions (I    ####
####       really DO know how to add in TCL, i just temporarily forgot)                     ####
####                                                                                        ####
####  Greetz to my bros ReJeCt-, DarKni9hT, _Tenchi_, and Frmbob                            ####
####                                                                                        ####
####  Still much hate to reddog`` who still holds my chan :/                                ####
####                                                                                        ####
################################################################################################
################################################################################################


package require http

set oponly 0;
set validuseronly 1;
set helpnop "you must be oper to use this function"
set helpnvu "you must be a registered user to use this function"

set helpsyntax "syntax: .icqsend <recipient> <msg>"
set helpnouser "no user by that name"
set helpnoicqfor "no ICQ # for registered for"			; # $whom
set helpisnan "is not a ICQ-number"				; # $icq
set helpsendmsg "ICQ message sent to" 				; # $whom
set helpweberror "Error occured at ICQ, please refer to" 	; # website $location


# bindings
bind dcc - icqsend sendicqdcc
bind msg - icqsend sendicqmsg
bind pub - !icqsend sendicqpub


# dcc
proc sendicqdcc {hand idx rest} {
    global botnick
    global helpsyntax helpnouser helpnoicqfor helpisnan helpsendmsg helpweberror
    global helpnop, helpnvu
    global oponly validuseronly

    if {$oponly && (![matchattr $hand o])} {
	# || ([matchchanattr $hand o $chan]))
	putdcc $idx "$helpnop"
        return 0
    }
    if {$validuseronly && (![validuser $hand])} {
	putdcc $idx "$helpnvu"
        return 0
    }


    set whom [lindex $rest 0]
    
    if {$whom==""} {
	putdcc $idx "$helpsyntax"
        return 0
    }
    
    # check if user (exists) OR number
    if {![validuser $whom]} {
	# no user
	if {[string is digit $whom]} {
	    set icq $whom
        } else {
	    putdcc $idx "$helpnouser"
	    return 0
	}
    } elseif {[getuser $whom XTRA ICQ] == "" } {
        putdcc $idx "$helpnoicqfor $whom"
	return 0
    } else {
	set icq [getuser $whom XTRA ICQ ] 
	if {![string is digit $icq]} {
	    putdcc $idx "$icq $helpisnan"
	    return 0
	}

    }

    # rewritten head +from (added channel)

    set from "$hand@$botnick.irc"
    set head "from $hand@$botnick (irc)\n"
    set origmsg [lrange $rest 1 end]

    set body $head
    append body $origmsg
    set var $body
    append var $hand $from $hand

    set location [go_connect $from $body $icq $head $hand]

    if {[location_filter $location] != 0} {
	putdcc $idx "$helpweberror $location"
        putlog "$hand failed send ICQ msg to $whom on $icq"
    } else {
        putdcc $idx "$helpsendmsg $whom"
        putlog "$hand send ICQ msg to $whom on $icq"
    }

    return 0
}


# pub
proc sendicqpub {nick uhost hand chan rest} {
    global botnick
    global helpsyntax helpnouser helpnoicqfor helpisnan helpsendmsg helpweberror
    global helpnop, helpnvu
    global oponly validuseronly

    if {$oponly && !(([matchattr $hand o]) || ([matchchanattr $hand o $chan]))} {
	putserv "NOTICE $nick :$helpnop"
        return 0
    }
    if {$validuseronly && (![validuser $hand])} {
	putserv "NOTICE $nick :$helpnvu"
        return 0
    }

    set whom [lindex $rest 0]

    if {$whom==""} {
	putserv "NOTICE $nick :$helpsyntax"
        return 0
    }

    # check if user (exists) OR number
    if {![validuser $whom]} {
	# no user
	if {[string is digit $whom]} {
	    set icq $whom
        } else {
	    putserv "NOTICE $nick :$helpnouser"
	    return 0
	}
    } elseif {[getuser $whom XTRA ICQ] == "" } {
	putserv "NOTICE $nick :$helpnoicqfor $whom"
	return 0
    } else {
	set icq [getuser $whom XTRA ICQ ] 
	if {![string is digit $icq]} {
	    putserv "NOTICE $nick :$icq $helpisnan"
	    return 0
	}
    }

    # rewritten head +from (added channel)

    set fromchan [string trimleft $chan "#"]
    set from "$hand@$fromchan.$botnick.irc"
    set head "from $hand@$botnick $chan (irc)\n"
    set origmsg [lrange $rest 1 end]

    set body $head
    append body $origmsg
    set var $body
    append var $hand $from $botnick

    set location [go_connect $from $body $icq $head $hand]
    if {[location_filter $location]!=0} {
	putserv "NOTICE $nick :$helpweberror $location"
        putlog "$hand failed send ICQ msg to $whom on $icq"
    } else {
        putserv "NOTICE $nick :$helpsendmsg $whom"
        putlog "$hand send ICQ msg to $whom on $icq"
    }

    return 0
}


# msg
proc sendicqmsg {nick uhost hand rest} {
    global botnick
    global helpsyntax helpnouser helpnoicqfor helpisnan helpsendmsg helpweberror
    global helpnop, helpnvu
    global oponly validuseronly

    if {$oponly && !(([matchattr $hand o]) || ([matchchanattr $hand o $chan]))} {
	putserv "NOTICE $nick :$helpnop"
        return 0
    }
    if {$validuseronly && (![validuser $hand])} {
	putserv "NOTICE $nick :$helpnvu"
        return 0
    }

    set whom [lindex $rest 0]

    if {$whom==""} {
	putserv "NOTICE $nick :$helpsyntax"
        return 0
    }

    # check if user (exists) OR number
    if {![validuser $whom]} {
	# no user
	if {[string is digit $whom]} {
	    set icq $whom
        } else {
	    putserv "NOTICE $nick :$helpnouser"
	    return 0
	}
    } elseif {[getuser $whom XTRA ICQ] == "" } {
	putserv "NOTICE $nick :$helpnoicqfor $whom"
	return 0
    } else {
	set icq [getuser $whom XTRA ICQ ] 
	if {![string is digit $icq]} {
	    putserv "NOTICE $nick :$icq $helpisnan"
	    return 0
	}
    }


    # rewritten head +from (added channel)

    set from "$hand@$botnick.irc"
    set head "from $hand@$botnick (irc)\n"
    set origmsg [lrange $rest 1 end]

    set body $head
    append body $origmsg
    set var $body
    append var $hand $from $botnick

    set location [go_connect $from $body $icq $head $hand]
    if {[location_filter $location]!=0} {
	putserv "NOTICE $nick :$helpweberror $location"
        putlog "$hand failed send ICQ msg to $whom on $icq"
    } else {
        putserv "NOTICE $nick :$helpsendmsg $whom"
        putlog "$hand send ICQ msg to $whom on $icq"
    }

    return 0
}


# socket procedure
#
proc go_connect {from body icq head hand} {
    # rewritten by GeC / #give / IRCnet, old versions was neat but didn't do the job anymore

    set url "http://web.icq.com/whitepages/page_me/1,,,00.html"
#    set query "to=$icq&from=$hand&fromemail=$from&body=$body"
    set query [http::formatQuery "to" $icq "from" $hand "fromemail" $from "body" $body]
#    putlog "$url?$query"
    http::config -useragent "User-Agent: Mozilla/4.0 (compatible; ICQdrop 1.7; Eggdrop 1.3)"

    set done 0
    set token [http::geturl $url -query $query -validate 1]

    upvar #0 $token state

    array set meta $state(meta)
    http::cleanup $token

    return "http://web.icq.com$meta(Location)"
}


# location filter procedure
#
proc location_filter {location} {
    if {[regexp -nocase .*error.* $location]} {
	# /whitepages/error/1,,pager_error,00.html
        return 1; # error = true
    } else {
	# /whitepages/page_me_ok/0,,,00.html
        return 0; # false
    }
}


putlog "ICQ-Drop v1.8"
[/code]
User avatar
^DooM^
Owner
Posts: 772
Joined: Tue Aug 26, 2003 5:40 pm
Location: IronForge
Contact:

Post by ^DooM^ »

Theres your problem

http://web.icq.com/whitepages/confirm/1,,,00.html

The page requires you to validate that you are human by typing in a code. the script doesn't account for that as it must be a new thing they have added to stop people / bots abusing it.
The lifecycle of a noob is complex. Fledgling noobs gestate inside biometric pods. Once a budding noob has matured thru gestation they climb out of their pod, sit down at a PC, ask a bunch of questions that are clearly in the FAQ, The Noob is born
Post Reply