001.
<?
002.
$msn
[Host] =
"207.46.106.175"
;
003.
$msn
[Port] = 1863;
004.
$msn
[user] =
"your_msn_account"
;
005.
$msn
[Pass] =
"xxxxxx"
;
006.
$pic
[offline] =
"msnoff.png"
;
007.
$pic
[online] =
"msnon.png"
;
008.
009.
if
(!
$get
){?>
010.
<html>
011.
<head>
012.
</head>
013.
<body>
014.
<img src=
"<? echo $pic[offline]; ?>"
border=
"0"
name=
"msn"
>
015.
</body>
016.
</html>
017.
<?
018.
exit
;
019.
}
020.
021.
msn_connect();
022.
function
msn_connect() {
023.
global
$debug
,
$msn
,
$nr
,
$fp
;
$nr
= 0;
024.
if
(
$debug
) {
025.
echo
"<p><b>Connecting to msn $msn[Host]:$msn[Port]</b><br>"
;
026.
}
027.
if
(
$fp
=
fsockopen
(
$msn
[Host],
$msn
[Port],
$errno
,
$errstr
, 30))
028.
{msn_send(
"VER $nr MSNP7 CVRO"
,
$fp
);
029.
while
(!
feof
(
$fp
)) {
030.
usleep(1);
031.
if
(msn_get(
ereg_replace
(
"\r\n"
,
""
,
fgets
(
$fp
,128))) ==
"1"
) {
032.
die
(blieb);
033.
};
034.
}}
035.
else
{
036.
die
(
"cannot connect to msn server"
);
037.
}}
038.
039.
function
msn_send(
$text
,
$conn
) {
040.
global
$debug
;
041.
if
(
$debug
) {
042.
echo
"<font color=\"red\">$text</font><br>\n"
;
043.
}
044.
fputs
(
$conn
,
"$text\r\n"
);
045.
global
$nr
;
$nr
++; }
046.
function
msn_get(
$msg
) {
047.
global
$fp
,
$nr
,
$msn
,
$debug
,
$fp2
;
048.
if
(
$debug
) {
049.
echo
"<font color=\"blue\">$msg</font><br>\n"
;
050.
}
051.
$msg
=
explode
(
" "
,
$msg
);
052.
if
(
strtolower
(
$msg
[0]) ==
"ver"
) {
053.
msn_send(
"INF $nr"
,
$fp
);
054.
}
055.
elseif
(
strtolower
(
$msg
[0]) ==
"inf"
) {
056.
msn_send(
"USR $nr MD5 I $msn[user]"
,
$fp
);
057.
}
058.
elseif
(
strtolower
(
$msg
[0]) ==
"usr"
AND
strtolower
(
$msg
[2]) ==
"md5"
) {
059.
msn_send(
"USR $nr MD5 S "
.MD5(trim(
$msg
[4].
$msn
[Pass])),
$fp
);
060.
}
061.
elseif
(
strtolower
(
$msg
[0]) ==
"usr"
AND
strtolower
(
$msg
[2]) ==
"ok"
) {
062.
msn_send(
"CHG $nr BSY"
,
$fp
);
063.
msn_send(
"XFR $nr SB"
,
$fp
);
064.
}
065.
elseif
(
strtolower
(
$msg
[0]) ==
"xfr"
AND
strtolower
(
$msg
[2]) ==
"ns"
) {
066.
$tmp
=
explode
(
":"
,
$msg
[3]);
067.
$msn
[Host] =
$tmp
[0];
068.
$msn
[Port] =
$tmp
[1];
069.
fclose(
$fp
);
070.
msn_connect();
071.
}
072.
elseif
(
strtolower
(
$msg
[0]) ==
"xfr"
AND
strtolower
(
$msg
[2]) ==
"sb"
) {
073.
$tmp
=
explode
(
":"
,
$msg
[3]);
074.
$msn
[sb_host] =
$tmp
[0];
075.
$msn
[sb_port] =
$tmp
[1];
076.
$msn
[sb_cki] =
$msg
[5];
077.
fclose(
$fp
);
078.
if
(
$debug
) {
079.
echo
"<p><b>Connecting to sb $msn[sb_host]:$msn[sb_port]</b><br>"
;
080.
}
081.
if
(
$fp2
=
fsockopen
(
$msn
[sb_host],
$msn
[sb_port],
$errno
,
$errstr
, 30)){
082.
$start
= time()+5;
083.
msn_send(
"USR $nr $msn[user] $msn[sb_cki]"
,
$fp2
);
084.
while
(!
feof
(
$fp2
)) {
085.
if
(time() >=
$start
) {
086.
showstatus(0);
087.
exit
;
088.
}
089.
usleep(1);
090.
msn_sb_get(
ereg_replace
(
"\r\n"
,
""
,
fgets
(
$fp2
,128)));
091.
} }
092.
else
{
die
(
"cannot connect to sb"
); }
093.
}}
094.
095.
function
msn_sb_get(
$msg
) {
096.
global
$fp2
,
$nr
,
$msn
,
$debug
,
$get
;
097.
if
(
$debug
) {
098.
echo
"<font color=\"green\">$msg</font><br>\n"
;
099.
}
100.
$msg
=
explode
(
" "
,
$msg
);
101.
if
(
strtolower
(
$msg
[0]) ==
"usr"
AND
strtolower
(
$msg
[2]) ==
"ok"
) {
102.
msn_send(
"CAL $nr $get"
,
$fp2
);
103.
}
104.
elseif
(
strtolower
(
$msg
[0]) ==
"217"
) {
105.
showstatus(0);
106.
fclose(
$fp2
);
107.
exit
;
108.
}
109.
elseif
(
strtolower
(
$msg
[0]) ==
"joi"
) {
110.
showstatus(1);
111.
fclose(
$fp2
);
112.
exit
;
113.
} }
114.
function
showstatus(
$status
) {
115.
global
$pic
,
$get
;
116.
if
(
$status
) {
117.
@header(
"Location: status.php?msn=$get&status=online"
);
118.
}
else
{
119.
@header(
"Location: status.php?msn=$get&status=offline"
);
120.
}
121.
}?>
122.
123.
status.php
124.
<strong>Code (PHP)</strong>
125.
[php]<?php
126.
echo
"MSN : $msn "
;
127.
if
(
$status
==
"online"
) {
128.
echo
"<img src='msnon.png'>"
;
129.
}
else
{
130.
echo
"<img src='msnoff.png'>"
;
131.
}
132.
?>