package require http
####
# JoinSMS 1.1 by xiv (lokiniade@hotmail.com) (-based on EggSMS by ube (ube@rajraj.nu)-)
# 
# For eggdrops 1.3.x
# NOTE: THIS TCL REQUIRES =< TCL8.0
#  
####
#
# This script sends a SMS (Short Message Send) to a mobile phone when certain users
# join any of the channels your bot is on.
# This script is multi-configurable, and was made based on EggSMS by ube
#
# Owners of the bot can set it to "ON" and "OFF" or check its status by typing in dcc chat :
# .smspager (on/off/status)
#
# Updates :
#		24/07/1999 : - A few bugfixes (like the call to procedure for signoff)
#				 - .smspager status will now list the users that will trigger the SMS
#				   
####

# Set the pager ON or OFF by default?
set sms_pager 1

# Put the handle of the users you want to be paged about (separated by -space-)
set sms_users "Lameuser1 Lameuser2"

# Put the phonenumber where the SMS will be sent (no need to add the + sign)
set phone "22222222222"

# Want to be informed as well when user leaves/quits the channel?
set leave 0


### Don't modify anything from here unless you know what you are doing


# This will set a list of all the users that will trigger the SMS
catch {unset smslist}
set lng [string length $sms_users]
incr lng -1
set sms_users "[string range $sms_users 0 $lng]"
incr lng +1
set tmp ""
set i 0
while { $i != $lng } {
	set temp [string range $sms_users $i $i]
	if { $temp == " " } {
		lappend smslist $tmp
		set tmp ""
	} {
		set tmp "$tmp$temp"
	}

	if {$i == $lng - 1} {
		lappend smslist $tmp
		set tmp ""
	}
	incr i
}

if { $sms_pager == 1 } {
	bind join -|- * sms_send
	bind part -|- * sms_send_quit
	bind sign -|- * sms_send_sign
}

bind dcc n smspager smspager_dcc

proc sms_send {nick uhost handle chan} {
	global smslist phone
      set tmp [lsearch -exact $smslist $handle]
      if {($tmp != -1)} {
	set text "$handle just entered $chan"
	set url "www.mtnsms.com/sms.asp?msgTo=$phone&msgText=[format_text $text]"
	::http::geturl "$url"
	}
}

proc sms_send_quit {nick uhost handle chan} {
	global smslist phone leave
      set tmp [lsearch -exact $smslist $handle]
      if {($tmp != -1) && ($leave == 1)} {
	set text "$handle just left $chan"
	set url "www.mtnsms.com/sms.asp?msgTo=$phone&msgText=[format_text $text]"
	::http::geturl "$url"
	}
}

proc sms_send_sign {nick uhost handle chan args} {
	sms_send_quit $nick $uhost $handle $chan
}

proc smspager_dcc {hand idx mode} {
 global sms_pager smslist
 if {($mode == "on") && ($sms_pager == 0)} { 
	bind join -|- * sms_send
	bind part -|- * sms_send_quit
	bind sign -|- * sms_send_sign
	set sms_pager 1
	putlog "--> SMS pager is now ON"
 }  
 if {($mode == "off") && ($sms_pager == 1)} {
	unbind join -|- * sms_send
	unbind part -|- * sms_send_quit
	unbind sign -|- * sms_send_sign
	set sms_pager 0
	putlog "--> SMS pager is now OFF"
 }
 if {($mode == "status")} {
	if {$sms_pager == 1} {
		putlog "SMS pager is currently ON ( $smslist )"
	} {
		putlog "SMS pager is currently OFF"
	}
 }
}

proc format_text { text } {
	set lng [string length $text]
	incr lng -1
	set text "[string range $text 0 $lng]"
	incr lng +1
	set tmp ""
	set i 0
	while { $i != $lng } {
		set temp [string range $text $i $i]
		if { $temp == " " } {
			set tmp "$tmp+"
		} {
			set tmp "$tmp$temp"
		}
	incr i
	}
	return $tmp
}

putlog "JoinSMS by xiv installed (status = $sms_pager) - $smslist"