Page 1 of 1
AUX scripts
Posted: Thu May 25, 2006 9:43 pm
by Aeros
Hi guys,
If there's anyone who's familiar with Aux scripts, and wants to post a small explanation of how they work.. it'd be very handy to the rest of us
Anyone?
Posted: Thu May 25, 2006 10:23 pm
by tekproxy
It's all explained in the documentation. What exactly do you want to know?
Define an auxsvc.cfg in the package.
Code: Select all
AuxService
{
Port (intger port)
Script (string script filename)
}
Then you write a control script (defined by Script in auxsvc.cfg)
Code: Select all
use uo;
use os;
program auxControl(connection)
var ev;
print("AuxControl->connection established");
while ( connection )
ev := wait_for_event(5);
print("AuxControl->recieved: "+ev.value);
if ( ev )
print ev.value;
endif
endwhile
print("AuxControl->connection terminated");
endprogram
Again, all of this stuff is in the documentation.
You can do all sorts of neat things with these. The only thing neat I have laying around that I can think of is account authentication. If you think that would be neat I could upload it to the forums.
Posted: Thu May 25, 2006 10:45 pm
by Aeros
Thanks texproxy,
What I would like to know, and what I could not find in the documentation, is:
1. How do you "call" the aux script from an external webpage?
2. How do you send data back to the webpage, and in what format?
Posted: Thu May 25, 2006 11:19 pm
by tekproxy
By webpage I'm going to assume you mean PHP. In PHP you'd make a connection like you would to any other server. This is how I do it. Mind you it's been a while since I've used PHP and I just threw this together from some other code I had.
Code: Select all
<?
$polServer = "tribulation.sytes.net";
$polAuxPort = 5012;
$fp = fSockOpen($polServer, $polAuxPort);
if ( $fp ) {
// sHello = string "Hello", i10 = integer 10, like any other "packed" data
// very important to have \r\n or POL will not know when the string is terminated
fwrite($fp, "sHello\r\n");
stream_set_timeout($fp, 2);
$status = socket_get_status($fp);
$data = "";
while ( !feof($fp) && !$status['timed_out'] ) {
$data .= fgets($fp, 1000);
// Data is finished if last char is return
if ( ord(substr($data, strlen($data) - 1, 1) == chr(10)) )
break;
else
$status = socket_get_status($fp);
}
}
if ( $data )
echo "Recieved response: " . $data;
else
echo "No data returned from server. Prepare for crying.";
?>
In your auxControl.src you would check to see if the ev.value == "Hello" and if so, send a response.
How to send data from the auxscript is in the documentation.
When data is sent TO or FROM the server it must be "packed". It's quite simple and if you're too lazy you can just poke around for MuadDib's PHP packer. What you could do is just send different types of data and see how POL sends it.
Posted: Fri May 26, 2006 2:44 am
by Aeros
Thanks tekproxy, that was very helpful.
One thing, though - when the server is down or off, the PHP page gives this response:
Code: Select all
CGI Timeout
The specified CGI application exceeded the allowed time for processing. The server has deleted the process.
Is there any way to avoid this?
EDIT: Nevermind, I forgot about the fsock timeout setting. Sorry about that
:?
Posted: Fri May 26, 2006 3:09 am
by Aeros
I do have a question that I can't find an answer to though - due to my lack of knowledge of PHP. If the server is down/off, and the connection therefore times out, it gives this report in the PHP page:
Code: Select all
Warning: fsockopen(): unable to connect to ***.**.*.***:5003 in d:\inetpub\chyrellos\auxtest.php on line 8
As I want to use this for a server status script, I can't have error messages in my page. Any ideas?
Posted: Fri May 26, 2006 3:37 am
by Zacharias
Code: Select all
if (($connect = @fsockopen("127.0.0.1", 2020, $errno, $errstr, 2)) === FALSE) {
// the server is offline.
} else {
fputs($connect, $packet."\n");
$data = fgets($connect);
fclose($connect);
// the server is online. Information is stored in $data
}
You should look into the status-packet of PHPNuke. It's very usefull:
http://forums.polserver.com/viewtopic.p ... ht=phpnuke
Posted: Fri May 26, 2006 7:07 am
by Aeros
Zacharias, thanks a mil.