Je dois d'abord préciser que je n'y connais absolument rien en VBS,
habituellement je code en C++.
Voilà, j'ai récupéré un script VBS qui permet d'intégrer les blacklists
de Squid dans dans un serveur ISA.
Celui-ci fonctionne pas trop mal à un détail près.
Les listes fournies sont constituées de noms de sites, de noms de
domaines, d'adresses IP.
Le problème c'est qu'il faudrait ajouter "*" devant les noms de domaines
pour que l'ISA prenne en compte les www.domain, ftp.domain tsétéra. Mais
pas devant les adresses IP.
Voici une partie du script en question :
----------------
configname = config.readline
s = left(configname, 1)
if (s<>"#") and (s<>"") then
l = l + 1
#Ligne que j'ai ajoutée qui bien sur ne fonctionne pas
# dès qu'il y a une adresse IP
configname = "*" & configname
Set Destination = DestinationSet.Add(configname)
end if
-----------------
En fait, ça ne fonctionne pas quand la ligne contient une adresse IP
Comment puis-je tester si la variable configname contient une adresse IP
avant d'ajouter mon "*".
Il me faudrait une fonction genre IsIPAddress(configname) qui renvoie 0
ou 1 de façon à ce que je fasse :
if IsIPAddress(configname) = 0 then
configname = "*" & configname
end if
Pour tester, en reprenant l'exemple fourni dans la doc, ça donnerait p ex. :
'---8<--- Function RegExpTest(patrn, strng) Dim regEx, Match, Matches ' Create variable. Set regEx = New RegExp ' Create a regular expression. regEx.Pattern = patrn ' Set pattern. regEx.IgnoreCase = True ' Set case insensitivity. regEx.Global = True ' Set global applicability. Set Matches = regEx.Execute(strng) ' Execute search. For Each Match in Matches ' Iterate Matches collection. RetStr = RetStr & "Match found at position " RetStr = RetStr & Match.FirstIndex & ". Match Value is '" RetStr = RetStr & Match.Value & "'." & vbCRLF Next RegExpTest = RetStr End Function MsgBox(RegExpTest("(([01]?dd?|2[0-4]d|25[0-5]).){3}([01]?dd?|2[0-4]d|25[0-5])", "207.46.248.16")) '---8<---
Amicalement,
Jean - JMST Belgium
"Alni" a écrit dans le message de news:
Bonjour,
Je dois d'abord préciser que je n'y connais absolument rien en VBS, habituellement je code en C++.
Voilà, j'ai récupéré un script VBS qui permet d'intégrer les blacklists de Squid dans dans un serveur ISA.
Celui-ci fonctionne pas trop mal à un détail près.
Les listes fournies sont constituées de noms de sites, de noms de domaines, d'adresses IP.
Le problème c'est qu'il faudrait ajouter "*" devant les noms de domaines pour que l'ISA prenne en compte les www.domain, ftp.domain tsétéra. Mais pas devant les adresses IP.
Voici une partie du script en question : ---------------- configname = config.readline s = left(configname, 1) if (s<>"#") and (s<>"") then l = l + 1 #Ligne que j'ai ajoutée qui bien sur ne fonctionne pas # dès qu'il y a une adresse IP configname = "*" & configname Set Destination = DestinationSet.Add(configname) end if -----------------
En fait, ça ne fonctionne pas quand la ligne contient une adresse IP Comment puis-je tester si la variable configname contient une adresse IP avant d'ajouter mon "*".
Il me faudrait une fonction genre IsIPAddress(configname) qui renvoie 0 ou 1 de façon à ce que je fasse : if IsIPAddress(configname) = 0 then configname = "*" & configname end if
Merci
Bonjour,
Je dois d'abord préciser que je n'y connais absolument rien en VBS,
habituellement je code en C++.
Vous seriez plus à l'aise en JScript AMHA.
Comment puis-je tester si la variable configname contient une adresse IP
avant d'ajouter mon "*".
A l'aide d'une expression régulière :
"Introduction to Regular Expressions"
http://msdn.microsoft.com/library/en-us/script56/html/reconIntroductionToRegularExpressions.asp
Pour tester, en reprenant l'exemple fourni dans la doc, ça donnerait p ex. :
'---8<---
Function RegExpTest(patrn, strng)
Dim regEx, Match, Matches ' Create variable.
Set regEx = New RegExp ' Create a regular expression.
regEx.Pattern = patrn ' Set pattern.
regEx.IgnoreCase = True ' Set case insensitivity.
regEx.Global = True ' Set global applicability.
Set Matches = regEx.Execute(strng) ' Execute search.
For Each Match in Matches ' Iterate Matches collection.
RetStr = RetStr & "Match found at position "
RetStr = RetStr & Match.FirstIndex & ". Match Value is '"
RetStr = RetStr & Match.Value & "'." & vbCRLF
Next
RegExpTest = RetStr
End Function
MsgBox(RegExpTest("(([01]?dd?|2[0-4]d|25[0-5]).){3}([01]?dd?|2[0-4]d|25[0-5])", "207.46.248.16"))
'---8<---
Amicalement,
Jean - JMST
Belgium
"Alni" <nospam@nowhere.com> a écrit dans le message de news:O89F162WEHA.3340@TK2MSFTNGP10.phx.gbl...
Bonjour,
Je dois d'abord préciser que je n'y connais absolument rien en VBS,
habituellement je code en C++.
Voilà, j'ai récupéré un script VBS qui permet d'intégrer les blacklists
de Squid dans dans un serveur ISA.
Celui-ci fonctionne pas trop mal à un détail près.
Les listes fournies sont constituées de noms de sites, de noms de
domaines, d'adresses IP.
Le problème c'est qu'il faudrait ajouter "*" devant les noms de domaines
pour que l'ISA prenne en compte les www.domain, ftp.domain tsétéra. Mais
pas devant les adresses IP.
Voici une partie du script en question :
----------------
configname = config.readline
s = left(configname, 1)
if (s<>"#") and (s<>"") then
l = l + 1
#Ligne que j'ai ajoutée qui bien sur ne fonctionne pas
# dès qu'il y a une adresse IP
configname = "*" & configname
Set Destination = DestinationSet.Add(configname)
end if
-----------------
En fait, ça ne fonctionne pas quand la ligne contient une adresse IP
Comment puis-je tester si la variable configname contient une adresse IP
avant d'ajouter mon "*".
Il me faudrait une fonction genre IsIPAddress(configname) qui renvoie 0
ou 1 de façon à ce que je fasse :
if IsIPAddress(configname) = 0 then
configname = "*" & configname
end if
Pour tester, en reprenant l'exemple fourni dans la doc, ça donnerait p ex. :
'---8<--- Function RegExpTest(patrn, strng) Dim regEx, Match, Matches ' Create variable. Set regEx = New RegExp ' Create a regular expression. regEx.Pattern = patrn ' Set pattern. regEx.IgnoreCase = True ' Set case insensitivity. regEx.Global = True ' Set global applicability. Set Matches = regEx.Execute(strng) ' Execute search. For Each Match in Matches ' Iterate Matches collection. RetStr = RetStr & "Match found at position " RetStr = RetStr & Match.FirstIndex & ". Match Value is '" RetStr = RetStr & Match.Value & "'." & vbCRLF Next RegExpTest = RetStr End Function MsgBox(RegExpTest("(([01]?dd?|2[0-4]d|25[0-5]).){3}([01]?dd?|2[0-4]d|25[0-5])", "207.46.248.16")) '---8<---
Amicalement,
Jean - JMST Belgium
"Alni" a écrit dans le message de news:
Bonjour,
Je dois d'abord préciser que je n'y connais absolument rien en VBS, habituellement je code en C++.
Voilà, j'ai récupéré un script VBS qui permet d'intégrer les blacklists de Squid dans dans un serveur ISA.
Celui-ci fonctionne pas trop mal à un détail près.
Les listes fournies sont constituées de noms de sites, de noms de domaines, d'adresses IP.
Le problème c'est qu'il faudrait ajouter "*" devant les noms de domaines pour que l'ISA prenne en compte les www.domain, ftp.domain tsétéra. Mais pas devant les adresses IP.
Voici une partie du script en question : ---------------- configname = config.readline s = left(configname, 1) if (s<>"#") and (s<>"") then l = l + 1 #Ligne que j'ai ajoutée qui bien sur ne fonctionne pas # dès qu'il y a une adresse IP configname = "*" & configname Set Destination = DestinationSet.Add(configname) end if -----------------
En fait, ça ne fonctionne pas quand la ligne contient une adresse IP Comment puis-je tester si la variable configname contient une adresse IP avant d'ajouter mon "*".
Il me faudrait une fonction genre IsIPAddress(configname) qui renvoie 0 ou 1 de façon à ce que je fasse : if IsIPAddress(configname) = 0 then configname = "*" & configname end if
Merci
Alni
Bonjour,
Comment puis-je tester si la variable configname contient une adresse IP avant d'ajouter mon "*".
Pour tester, en reprenant l'exemple fourni dans la doc, ça donnerait p ex. :
'---8<--- Function RegExpTest(patrn, strng) Dim regEx, Match, Matches ' Create variable. Set regEx = New RegExp ' Create a regular expression. regEx.Pattern = patrn ' Set pattern. regEx.IgnoreCase = True ' Set case insensitivity. regEx.Global = True ' Set global applicability. Set Matches = regEx.Execute(strng) ' Execute search. For Each Match in Matches ' Iterate Matches collection. RetStr = RetStr & "Match found at position " RetStr = RetStr & Match.FirstIndex & ". Match Value is '" RetStr = RetStr & Match.Value & "'." & vbCRLF Next RegExpTest = RetStr End Function
Pour tester, en reprenant l'exemple fourni dans la doc, ça donnerait
p ex. :
'---8<---
Function RegExpTest(patrn, strng)
Dim regEx, Match, Matches ' Create variable.
Set regEx = New RegExp ' Create a regular expression.
regEx.Pattern = patrn ' Set pattern.
regEx.IgnoreCase = True ' Set case insensitivity.
regEx.Global = True ' Set global applicability.
Set Matches = regEx.Execute(strng) ' Execute search.
For Each Match in Matches ' Iterate Matches collection.
RetStr = RetStr & "Match found at position "
RetStr = RetStr & Match.FirstIndex & ". Match Value is '"
RetStr = RetStr & Match.Value & "'." & vbCRLF
Next
RegExpTest = RetStr
End Function
Pour tester, en reprenant l'exemple fourni dans la doc, ça donnerait p ex. :
'---8<--- Function RegExpTest(patrn, strng) Dim regEx, Match, Matches ' Create variable. Set regEx = New RegExp ' Create a regular expression. regEx.Pattern = patrn ' Set pattern. regEx.IgnoreCase = True ' Set case insensitivity. regEx.Global = True ' Set global applicability. Set Matches = regEx.Execute(strng) ' Execute search. For Each Match in Matches ' Iterate Matches collection. RetStr = RetStr & "Match found at position " RetStr = RetStr & Match.FirstIndex & ". Match Value is '" RetStr = RetStr & Match.Value & "'." & vbCRLF Next RegExpTest = RetStr End Function