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

Filed under:
|
|
|

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

Related posts about php

Related posts about tcp