⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hotmail.tcl

📁 Linux下的MSN聊天程序源码
💻 TCL
字号:
namespace eval ::hotmail {	if { $initialize_amsn == 1 } {		variable unread 0		variable froms [list]		variable site ""	}	proc unreadMessages {} {		variable unread		return $unread	}	proc setUnreadMessages { number } {		variable unread		set unread $number	}	proc addFrom { from fromaddr } {		variable froms		lappend froms $from $fromaddr	}	proc emptyFroms { } {		variable froms		set froms [list]	}	proc getFroms { } {		variable froms		return $froms	}	proc gotURL {main_url {post_url "https://loginnet.passport.com/ppsecure/md5auth.srf?lc=1033"} {id 2}} {		global tcl_platform HOME password		set fd [open "hotmlog.htm" r]		set page_data [read $fd]		close $fd				#Here we calculate the creds and fields in the web page		set site $post_url		set url $main_url		set d(valid) Y		::abook::getDemographics d				set email [::config::getKey login]		set login [lindex [split $email "@"] 0]				set kv $d(kv)		set sl [expr {[clock seconds] - $d(sessionstart)}]		set sid $d(sid)		set auth $d(mspauth)		set tomd5 $auth$sl$password		set creds [::md5::md5 $tomd5]				#Now let's substitute the $vars in hotmlog.htm				set page_data [subst -nocommands -nobackslashes $page_data]				if {$tcl_platform(platform) == "unix"} {			set file_id [open "[file join ${HOME} hotlog.htm]" w 00600]		} else {			set file_id [open "[file join ${HOME} hotlog.htm]" w]		}				puts $file_id $page_data				close $file_id				if {$tcl_platform(os) != "Darwin"} {			launch_browser "file://${HOME}/hotlog.htm" 1		} else {			launch_browser [file join ${HOME} hotlog.htm] 1		}			}	proc viewProfile {user_login} {		#launch_browser "http://members.msn.com/default.msnw?mem=${user_login}&pgmarket="		set u_login [::config::getKey login]			if {[string match *@hotmail.* $u_login ] || [string match *@msn.* $u_login ] } {			gotURL "http://members.msn.com/default.msnw?mem=${user_login}&pgmarket="		} else {			launch_browser "http://g.msn.com/5meen_us/106?passport=${user_login}"		}	}	proc composeMail { toaddr} {		::MSN::WriteSB ns URL "COMPOSE $toaddr"	}	proc hotmail_profile {} {		::MSN::WriteSB ns URL "PROFILE 0x0409"	}	proc hotmail_login {} {		::MSN::WriteSB ns URL INBOX	}	proc hotmail_changeAccountInfo {} {		::MSN::WriteSB ns URL "PERSON 0x0409"	}	proc hotmail_changeMobile {} {		::MSN::WriteSB ns URL CHGMOB	}	proc QPDecode {str} {		#New version, no need of url_unmap		set begin 0		set end [string first "=" $str $begin]		set decode ""		while { $end >=0 } {			set decode "${decode}[string range $str $begin [expr {$end-1}]]"				set carval [format %d 0x[string range $str [expr {$end+1}] [expr {$end+2}]]]			if {$carval > 128} {				set carval [expr { $carval - 0x100 }]			}			set car [binary format c $carval]			set decode "${decode}$car"			set begin [expr {$end+3}]			set end [string first "=" $str $begin]		}		set decode ${decode}[string range $str $begin [string length $str]]	}	proc decode_from_field { from } {		set from [string map {"\r" ""} $from]		set from_list [split $from "?"]			if { [llength $from_list] == 1 } {			return $from		}			set encoding [string tolower [lindex $from_list 1]]		set sender [string map {"_" " " "= " ""} [join [lrange $from_list 3 end]]]		set sender [::hotmail::QPDecode $sender]		if { [catch {set sender [encoding convertfrom $encoding $sender]}]} {			status_log "decode_from_field: Wrong encoding - $encoding\n" red			return $sender 		}			return $sender		}	proc hotmail_procmsg {message} {		global password		#Nuevo by AIM			set content [lindex [split [$message getHeader Content-Type] ";"] 0 ]	#	set message [Message create %AUTO%]	#	$message createFromPayload "[$msg getBody]\r\n"		switch $content {			"text/x-msmsgsinitialmdatanotification" {				#Number of unread messages in inbox				set mailData [$message getField Mail-Data]				set inbox [string range $mailData [expr {[string first <I> $mailData]+3}] [expr {[string first </I> $mailData] -1}]]				set inboxUnread [string range $mailData [expr {[string first <IU> $mailData]+4}] [expr {[string first </IU> $mailData] -1}]]											#Get the URL of inbox directory in hotmail				set msgurl [$message getField Inbox-URL]				status_log "Hotmail: $inboxUnread unread emails\n"				#Remember the number of unread mails in inbox and create a notify window if necessary				if { [string length $inboxUnread] > 0 && $inboxUnread != 0} {					::hotmail::setUnreadMessages $inboxUnread					::hotmail::emptyFroms					cmsn_draw_online 0 1					if { [::config::getKey notifyemail] == 1} {						::amsn::notifyAdd "[trans newmail $inboxUnread\($inbox\)]" \						    [list ::hotmail::gotURL $msgurl] newemail					}				}						#Number of unread messages in other folders				set mailData [$message getField Mail-Data]				set folder [string range $mailData [expr {[string first <O> $mailData]+3}] [expr {[string first </O> $mailData] -1}]]				set folderUnread [string range $mailData [expr {[string first <OU> $mailData]+4}] [expr {[string first </OU> $mailData] -1}]]				#URL of folder directory in Hotmail				set msgurl [$message getField Folders-URL]				status_log "Hotmail: $folderUnread unread emails in others folders \n"				#If the pref notifyemail is active and more than 0 email unread, show a notify on connect				if { [::config::getKey notifyemailother] == 1 && [string length $folderUnread] > 0 && $folderUnread != 0 } {					::amsn::notifyAdd "[trans newmailfolder $folderUnread\($folder\)]" \					    [list ::hotmail::gotURL $msgurl] newemail				}			}			"text/x-msmsgsemailnotification" {     				if {[set from [$message getField From]] != ""} {					set fromaddr [$message getField From-Addr]					if {[catch {set from [::hotmail::decode_from_field $from]} res]} {						status_log "Fail to decode from field: $res\n" res						set from $fromaddr					}					set posturl [$message getField Post-URL]					set id [$message getField id]					set msgurl [$message getField Message-URL]					status_log "Hotmail: New mail from $from - $fromaddr\n"					set dest [$message getField Dest-Folder]					if {$dest == "ACTIVE"} {						::hotmail::setUnreadMessages [expr { [::hotmail::unreadMessages] + 1}]						::hotmail::addFrom $from $fromaddr						cmsn_draw_online 0 1						if { [::config::getKey notifyemail] == 1 } {							::amsn::notifyAdd "[trans newmailfrom $from $fromaddr]" \							    [list ::hotmail::gotURL $msgurl $posturl $id] newemail						}					} else {						if { [::config::getKey notifyemailother] == 1 } {							::amsn::notifyAdd "[trans newmailfromother $from $fromaddr]" \							    [list ::hotmail::gotURL $msgurl $posturl $id] newemail						}					}				}				::log::event email $from				}			"text/x-msmsgsinitialemailnotification" {			#Get the number of unread messages obsolete by MSNP11				#Number of unread messages in inbox				set noleidos [$message getField Inbox-Unread]				#Get the URL of inbox directory in hotmail				set msgurl [$message getField Inbox-URL]				status_log "Hotmail: $noleidos unread emails\n"				#Remember the number of unread mails in inbox and create a notify window if necessary				if { [string length $noleidos] > 0 && $noleidos != 0} {					::hotmail::setUnreadMessages $noleidos					::hotmail::emptyFroms					cmsn_draw_online 0 1					if { [::config::getKey notifyemail] == 1} {						::amsn::notifyAdd "[trans newmail $noleidos]" \							"::hotmail::hotmail_login" newemail					}				}						#Number of unread messages in other folders				set folderunread [$message getField Folders-Unread]				#URL of folder directory in Hotmail				set msgurl [$message getField Folders-URL]				status_log "Hotmail: $folderunread unread emails in others folders \n"				#If the pref notifyemail is active and more than 0 email unread, show a notify on connect				if { [::config::getKey notifyemailother] == 1 && [string length $folderunread] > 0 && $folderunread != 0 } {					::amsn::notifyAdd "[trans newmailfolder $folderunread]" \					    [list ::hotmail::gotURL $msgurl] newemail				}			}					"text/x-msmsgsactivemailnotification" {				set source [$message getField Src-Folder]				set dest [$message getField Dest-Folder]				set delta [$message getField Message-Delta]				if { $source == "ACTIVE" } {					set unread [expr {[::hotmail::unreadMessages] - $delta}]					::hotmail::emptyFroms					if { $unread < 0 } {						status_log "number of unread hotmail messages is $unread, setting to 0\n" red						set unread 0					}				} elseif {$dest == "ACTIVE"} {					set unread [expr {[::hotmail::unreadMessages] + $delta}]				} else {					set unread [::hotmail::unreadMessages]				}				status_log "Hotmail num of messages changed: $unread unread emails\n"				if { [string length $unread] > 0 } {					::hotmail::setUnreadMessages $unread					cmsn_draw_online 0 1				}			}			}			#End by AIM		# dock mail icon 		send_dock "MAIL" [::hotmail::unreadMessages]		status_log "hotmail_procmsg: Finishing\n"	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -