Utöka WatchMouse funktionalitet
1. Vad är det?
2. Hur fungerar plug-ins?
3. Hur kan jag skapa en egen plug-in?
4. Tidsrestriktioner
5. Exempel
1. Vad är det?
I vissa WatchMouse-paket (t.ex. "Platina") kan man
specificera regler av typen 'plugin'. Med en plug-in-regel kan du utöka
funktionaliteten i WatchMouse-systemet till att testa valfritt protokoll
och valfri server eller process hos er, t.o.m. bakom er brandvägg.
2. Hur fungerar plug-ins?
Plug-ins är dynamiska webbsidor som placeras på er egen webbserver
och som utför testet åt WatchMouse server. Webbsidan (plug-in) öppnas
med ett antal parametrar (se nedan) och returnerar svaret av testet.
Eftersom den dynamiska sidan körs på er server, och kontrolleras av er,
så har den tillgång till fler system än WatchMouse externa system.
3. Hur kan jag skapa en egen plug-in?
Du kan göra en egen plug-in genom att skapa en dynamisk
webbsida på en webbserver som är åtkomlig från Internet. Valfritt
programmeringsspråk kan användas för att skapa denna dynamiska
sida (PHP, ASP, C++, Java, TCL, ...). Sidan besöks av WatchMouse
servrar enligt de intervaller du har satt upp i inställningarna för din regel.
Följande parametrar skickas till denna dynamiska sida via ett
HTTP POST komando:
- WMhost
- WMport
- WMpath
- WMpar
- WMaccount
- WMpasswd
- WMua [kommer att implementeras]
- WMmem [kommer att implementeras]
Värdet på parametern kopieras från regelinställningarna från
respektive fält: host, port, path, parameter, account och password.
Parametrarna postas med hjälp av HTTP 1.0 protokollet. I loggfilerna
för din webbserver kan du känna igen anropen från våra servrar då de
är taggade med user-agenten "WatchMouse/NNN". För närvarande
är versionen NNN 1.20.
3.1. Returvärden
Efter att testet i skriptet på din dynamiska sida är genomfört så ska du skicka
tillbaka en sida med content-typ "text/plain" och med en eller
flera rader som avslutas med 'newline' (företrädesvis ett linefeed-tecken).
Dessa rader ska se ut så här (inga tomma rader, inga inledande mellanslag):
parameter=value
Följande returvärden finns definierade, övriga parameternamn kommer att ignoreras:
| Name |
Type |
Optional |
Description |
| status |
unsigned integer |
N |
Använd 0 för att indikera ett lyckat resultat och värdet 1..9999 om ett fel uppstod.
Vänligen använd olika värden för olika fel. |
| message |
char(255) |
Y |
En kort text (inga radbrytningar, typiskt 20 tecken, max 255 tecken).
Lämpligen används unika texter för varje statusvärde. |
| rtime* |
unsigned integer |
N/A |
Uppslagstid. Loggas inte än, men finns tillgänglig 'on-line'. |
| ctime |
unsigned integer |
Y |
Uppkopplingstid. Tid i millisekunder för att skapa uppkopplingen. |
| dtime |
unsigned integer |
Y |
Hämtningstid. Tid i millisekunder för att ladda ner informationen. |
| dsize |
unsigned integer |
Y |
Hämtningsstorlek. Antal bytes som hämtats. |
| ptime |
unsigned integer |
Y |
Beräkningstid. Tid i millisekunder för beräkning.
Normalt tiden från uppkoppling tills första byten är mottagen. |
| user |
unsigned integer |
Y |
Användardefinierat värde |
| *) Loggas inte för närvarande |
Observera att förutom fälten 'status' och 'message', är
faktiskt alla fält möjliga för användaren att. Men om man
använder dem för det syfte som beskrivs ovan så blir det
enklare för andra personer att tolka loggar och grafer.
4. Tidsrestriktioner
Den timeout du sätter i regeln (8 sekunder är standard) skickas
till din plugin, en det är också den timeout som gäller för plugin:en
själv. Om det blir en timeout så lagras inte parametrarna (ctime, ...).
5. Exempel
Nedan hittar du exempel i PHP (http://www.php.net/), Java och
ASP.
5.1. Exempel i PHP
1. <?
2. // WatchMouse connector för MySQL databas
3. // Följande POST parametrar finns tillgängliga
4. // WMhost, WMport, WMpath, WMaccount, WMpasswd, WMpar
5. // Utdata från 'remote host' skall vara en MIME header,
6. // följt av:
7. // status=NNN\nmessage=XXX\n
8. // NNN är ett positivt tal, 0 betyder ok, 1..9999 ett fel
10. // XXX är ett meddelande, max 255 tecken, bara ASCII tecken 32..127
11.
12. $dbhost = 'dbhost.yourdomain.com';
13. $dbname = 'yourDBname';
14. $dbuser = $WMaccount;
15. $dbpass = $WMpasswd;
16.
17. $dbh = @mysql_connect($dbhost, $dbuser, $dbpass);
18.
19. $err = mysql_errno()+0;
20. $msg = mysql_error();
21. if (!$dbh && !$err) {
22. $err=1;
23. $msg = "Kunde inte koppla upp mot $dbhost($dbuser))";
24. }
25. print "status=$err\n";
26. print "message=$msg\n";
27.
28. if ($dbh) @mysql_close($dbh);
29. ?>
5.2. Exempel i Java
[TBI]
5.3. Exempel i ASP
[TBI] |