L-Soft LISTSERV TCPGUI Interface for PHP Creation
Posted
by poolnoodl
on Stack Overflow
See other posts from Stack Overflow
or by poolnoodl
Published on 2010-06-03T20:17:32Z
Indexed on
2010/06/03
20:34 UTC
Read the original article
Hit count: 239
I'm trying to use LISTSERV's "API" in PHP. L-Soft calls this TCPGUI, and essentially, you can request data like over Telnet. To do this, I'm using PHP's TCP socket functions.
I've seen this done in other languages but can't quite convert it to PHP. I can connect, I can change set ASCII or BINARY mode. But I can never quite craft the header packet the way I need to authenticate, so I'm thinking I'm messing up my conversion.
C: http://www.lsoft.com/manuals/16.0/htmlhelp/advanced%20topics/TCPGUI.html#2334328
$origin = '[email protected]';
$pwd = 'password';
$host = "example.com";
$port = 2306;
$email = "[email protected]";
$list = "mailinglist";
$command = "Query $list FOR $email";
$fp = stream_socket_client("tcp://$host:$port", $errno, $errstr, 30);
$cmd = $command . " PW=" . $pwd;
$len = strlen($cmd);
$orglen = strlen($origin);
$n = $len + $orglen + 1;
$headerPacket[0] = "1";
$headerPacket[1] = "B";
$headerPacket[2] = "\r";
$headerPacket[3] = "\n";
$headerPacket[4] = ord($n / 256);
$headerPacket[5] = ord($n + 255);
$headerPacket[6] = ord($orglen);
for ($i = 0; $i < $orglen; $i++) {
$headerPacket[$i + 7] = ord($origin[$i]);
}
for ($i = 0; $i < $len; $i++) {
$cmdPacket[$i] = ord($cmd[$i]);
}
fwrite($fp, implode($headerPacket));
while (!feof($fp)) {
echo fgets($fp, 1024);
}
Any thoughts on where I'm going wrong? I'd much appreciate it if anyone could point me toward some code to do this, days of googling and searching here on SO has only lead me to examples in other languages.
Of course, if you know C (or Java or Perl as linked below in my comment to bypass the spam filter), PHP, and socket programming fairly well, you could probably rewrite the whole of the code in an hour, maybe a few minutes. You'd have my eternal thanks for that.
© Stack Overflow or respective owner