Bonjour à tous,

J'ai trouvé un web serveur basé sur python qui permet d'envoyer des commandes http via un navigateur web distant. Les commandes exécutent des scripts sur le mac où le serveur se trouve.
Cela me permet d'utiliser mon iPhone pour contrôler le mac à distance, par exemple lancer ou quitter des applications depuis le navigateur web de l'iPhone.

Il faut se logguer et le coockie est valable un mois ou je peux utiliser l'url
mymac:8888/cmd/scriptmachin?login=bidule

Je souhaiterais pouvoir utiliser ce serveur depuis une application qui n'est pas un navigateur web (iRule pour ne pas la nommer) et là ça ne veut pas fonctionner.
Dans iRule le protocole est un peu différent, l'URL se construit en deux morceaux : l'adresse et le port puis la "commande".
Il me semble que ça ne peut pas fonctionner car le serveur doit attendre une requête d'un navigateur web et pas d'autres choses car il renvoi une information du type Done ou Bad Request chose qu'iRule ne sait pas gérer.

En fournissant tous les scripts nécessaires, y-a-t-il quelqu'un qui aurait la gentillesse de m'aider à faire en sorte que le serveur accepte les requêtes de l'application iRule.

Précision je suis sous snow léopard 10.6.8
tornado 1.1 et python 2.6

Le .js du web serveur:

//----------------------------------------
//Set up a request object to use to launch commands
var http_cmd = false;
http_cmd = new XMLHttpRequest();


function run_cmd(cmd, label, conf, output)
{
if (label != "")
{
str = "Confirm:\n"+label;
}
else
{
str = "Are you sure?"
}

if (conf != "true" || (conf == "true" && confirm(str)))
{
launcher_stat = document.getElementById('launcher_stat');
launcher_stat.style.display='block';

//Do the math to put the swirly circle in the middle of the screen
scrollX = window.pageXOffset; //scrollX;
scrollY = window.pageYOffset; //scrollY;
winWidth = window.innerWidth;
winHeight = window.innerHeight;
elementHeight = launcher_stat.offsetHeight ;
elementWidth = launcher_stat.offsetWidth;

myTop = (winHeight/2 + scrollY) - (elementHeight/2);
myLeft = (winWidth/2 + scrollX) - (elementWidth/2);

launcher_stat.style.pixelTop = myTop;
launcher_stat.style.pixelLeft = myLeft;
launcher_stat.style.top = myTop+"px"; //for mozilla
launcher_stat.style.left = myLeft+"px"; //for mozilla
launcher_stat.innerHTML="<img src=\"images/loading2.gif\" alt=\"Loading\"/>";

try
{
if (navigator.appName == "Microsoft Internet Explorer")
{
//add a random (more or less) string to prevent the over-agressive caching of IE
http_cmd.open("GET", "/cmd/"+cmd+"?foo="+new Date().getTime(), true);
}
else
{
http_cmd.open("GET", "/cmd/"+cmd, true);
}
}
catch (err)
{
alert("ERROR: " + err.description);
}
http_cmd.onreadystatechange=function()
{
if(http_cmd.readyState == 4)
{
launcher_stat.style.display='none';
if (http_cmd.status != 200)
{
alert("Could not run command. Remote server may be down.");
}
else
{
// parse out buttonboard status header
items = http_cmd.responseText.split("::", 2);
if (output == "true" || items[0] == "Fail")
{
alert(items[1]);
}
else if (items[0] != "Done")
{
//something went wrong. do we need to login again?
//See if we got the Login Page
if (http_cmd.responseText.indexOf("<title>ButtonBoard Login</title>")!=-1)
{
//Got it. Redirect to show login page
window.location = '/login'
}
else
{
alert("Something has gone wrong. Clear your cache and check your password!");
}
}
}

}
}
http_cmd.send(null);
}
}