musashi75
Messages postés7Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention31 août 2011
-
20 avril 2007 à 16:27
musashi75
Messages postés7Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention31 août 2011
-
31 août 2011 à 16:57
Bonjour à toutes et à tous !
Je suis en train de mettre en place des scripts de configuration automatique d'Internet Explorer (pac file).
Un pac file est composé d'une fonction javascript: function FindProxyForURL(url, host) où url est la ressource que l'on cherche à atteindre et host le nom court de la ressource (exemple: si l'URL vaut http://www.javascriptfr.com/infomsg.aspx?ajout=1 , host vaudra www.javascriptfr.com).
Je cherche à récupérer via une seconde fonction javascript le nom complet de la machine source (soit le client, pas le serveur) afin de définir un proxy en fonction du nom de machine. Dans mon cas particulier je ne peux pas utiliser la fonction myIPAddress car il s'agit d'adresses aléatoires.
Savez-vous s'il existe une fonction javascript qui permettrait de récupérer le suffixe DNS de la machine ?
En vous remerciant par avance pour votre aide préciseuse,
Jérôme
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 21 avril 2007 à 11:35
Bonjour,
pas tout compris.... ( normal, je suis un peu niais )
un ch'tit début de piste ?
<script type= "text/javascript">
var wn = new ActiveXObject("WScript.Network");
alert( "Nom PC\t\t : "+wn.ComputerName+
"\r\nDomaine\t\t : "+wn.UserDomain+
"\r\nUtilisateur\t : "+wn.UserName
);
</script>
par contre pour le DNS :
le DNS fut inventé en 1983 par Paul Mockapetris. Il permet d'associer à une adresse IP,
un nom intelligible, humainement plus simple à retenir, appelé nom de domaine.
lu chez wikipedia...
alors qu'entends tu par
le suffixe DNS de la machine ?
musashi75
Messages postés7Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention31 août 2011 23 avril 2007 à 10:04
Bonjour et merci pour cette première réponse (qui m'aide).
Je n'avais pas encore utilisé d'ActiveX dans Javascript.
Ce que j'entends par suffixe DNS, c'est en fait le domaine dans lequel la machine est enregistrée, au sens DNS du terme.
Je m'explique:
C:\Program Files\Support Tools>ipconfig
Configuration IP de Windows
Carte Ethernet Connexion au réseau local:
Suffixe DNS propre à la connexion : domaine.forêt.com Adresse IP. . . . . . . . . . . . : 192.168.0.1
Masque de sous-réseau . . . . . . : 255.255.255.0
Passerelle par défaut . . . . . . : 192.168.0.2
Je cherche à récupérer cette information.
Ainsi, en l'associant au nom de machine, j'obtiens un identifiant unique que je peux ensuite exploiter via une variable.
musashi75
Messages postés7Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention31 août 2011 23 avril 2007 à 12:01
mon seul problème, c'est que je suis assez limité par l'utilisation d'un fichier pac.
Pour info:
References to Object Model objects, properties,
or methods cause the .pac file to run unsuccessfully. For example, all
of the following references cause the .pac file to run unsuccessfully
on IExplorer:
Je ne pense donc pas que l'on puisse écrire dans un fichier puis lire son contenu (malheureusement).
La seule solution est de récupérer l'info directement dans une variable afin de l'exploiter dans la fonction FindProxyForURL(url, host) qui permet de renvoyer l'adresse d'un ou plusieurs proxys au navigateur.
Vous n’avez pas trouvé la réponse que vous recherchez ?
A la base, le fichier pac n'est conçu que pour faire des tests sur le nom d'host (ou l'url complète) en destination de la requête HTTP.
Je pense qu'il est peut-être possible, via effectivement ActiveX & Co, de récupérer certaines informations supplémentaires, comme le nom complet de la machine par exemple (concaténation du nom de machine + suffixe DNS).
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 23 avril 2007 à 13:54
je me cite :
_ lancement ipconfig >fichier.tmp et relecture de ce fichier.tmp
avec ActiveX donc
ActiveXObject("WScript.Shell"); ou autre pour lancer un exécutable
new ActiveXObject("Scripting.FileSystemObject") pour gérer les fichiers
_ lien ( ou ajax ) vers cet IP ==> on doit pouvoir retrouver le domaine.
_ ...
musashi75
Messages postés7Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention31 août 2011 23 avril 2007 à 14:16
Je ne suis pas familier du tout avec le javascript et necore moins avec les ActiveX.
Pour mes tests, j'ai un fichier html vide dans lequel j'ai mis les lignes que tu m'as indiqué auparavant:
<html>
<script type="text/javascript">
var wn = new ActiveXObject("WScript.Network");
alert( "Nom PC\t\t : "+wn.ComputerName+
"\r\nDomaine\t\t : "+wn.UserDomain+
"\r\nUtilisateur\t : "+wn.UserName
);
</script>
</html>
Pour ajouter une section relative au suffixe DNS:
var temp = new ActiveXObject("Scripting.FileSystemObject");
par contre, après, je ne vois pas trop comment faire pour mettre l'IPconfig dans un fichier, etc.
musashi75
Messages postés7Date d'inscriptionvendredi 20 avril 2007StatutMembreDernière intervention31 août 2011 23 avril 2007 à 17:39
Merci pour ce lien et ces info.
Voilà ou j'en suis:
<html>
<script type="text/javascript">
// je récupère le nom de machine
var wn = new ActiveXObject("WScript.Network");
var machine = wn.ComputerName;
// je crée et ouvre en écriture mon fichier temporaire
var ws = new ActiveXObject("Scripting.FileSystemObject");
var temp=ws.GetFile("ipconfig.txt",2,true);
// je lance ipconfig et redirige la sortie dans un fichier
var w = new ActiveXObject("WScript.Shell");
ws.Write(w.run ('cmd /c "ipconfig"'));
// je récupère le suffixe DNS dans le fichier
var ligne;
while (!ws.AtEndOf Stream)
{ ligne=ws.ReadLine();
if ( //MA LIGNE CONTIENT "DNS" ALORS JE STOCKE LE CONTENU DE LA LIGNE DANS UNE VARIABLE A PARTIR DES ':' ET EN RETIRANT LE PERMIER ESPACE
{
// EXEMPLE :
// Suffixe DNS propre à la connexion : domain.forest.com -> je dois garder domain.forest.com
}
}
ws.close();
// je détruis mon fichier temporaire
var temp=ws.DeleteFile("ipconfig.txt");
</script>
</html>
Je ne suis pas sûr que c'est de cette manière que l'on peut rediriger la commande dans un fichier (ws.Write(w.run ('cmd /c "ipconfig"'));).
De plus, les manipulation de fichier sous javascript ne sont pas non plus mon fort (je ne trouve pas de grep :)
Merci pour ton aide préciseuse en tout cas.
Jérôme
0DTFeldunost
Messages postés1Date d'inscriptionvendredi 28 décembre 2007StatutMembreDernière intervention18 août 2011 18 août 2011 à 11:29
Bonjour,
Je suis confronté au même problème que toi musashi, j'ai besoin de récupérer le suffixe dns pour faire une comparaison et aboutir à quelque chose du genre:
if (fonction_get_dns() == "blabla.fr")
Return "DIRECT";
else
Return "PROXY 192.168.1.1:8080";
Les fonctions existantes compatibles avec les fichiers PAC ne sont pas utiles d'après ce que j'ai pu observer pour ce cas de figure.
Bon le javascript pour les fichiers pac ne peuvent être imbriquées dans un fichier HTML, c'est pas possible car la normalisation est très précise.
Si j'obtiens une réponse après les 4 années d'existence de ce topic, ce serait formidable !