Bonjour tout le monde,

Alors, voici mon problème :
Je souhaite creer, par le biais d'un script, un site Web dans IIS.
A priori mon script fonctionne.
Mais la seconde contrainte que je me suis imposé c'est de pouvoir créer un filtre ISAPI afin de le rajouter dans le groupe de filtres du Site Web en question, encore une fois par le biais d'un script VBS.
C'est donc à ce stade que ça coinçe...
Je pense que mon Script est bon, car lorsque je le test sur le Site Web par Défaut de IIS ça passe nikel...mais lorsque je le test sur mon propre site j'ai une erreur comme quoi l'accès aux groupes de filtres est impossible.
Alors je me demande si lors de la creation de mon site, je n'ai pas bien défini les autorisations d'accès au site, à savoir : autoriser les Scripts ASP et ASP.NET (car mes scripts VBS sont executés à partir de pages ASP), autoriser les ISAPI...

Voici le script de creation de Site Web (dsl pour la longueur...) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
 
 Function CreateWebSite(Computer, IPAddress, RootDirectory, LogDirectory, ServerComment, HostName, PortNum, DefaultDoc, Start)
 
    '
    ' ...Variables locales...
    '
    Dim objW3svc  'Objet Service Web
    Dim WebServer  'Objet Serveur Web 
    Dim objNewWebServer  'Objet nouveau Serveur Web   
    Dim objNewDir  'Objet nouveau repertoire 
    Dim objBindings  'Objet repertoire des caracteristiques des differents serveurs dans IIS  
    Dim strBinding  'Chaine correspondant au caracteristiques du Serveur a creer  
    Dim strArNewBindings  'Tableau contenant les chaines caracteristiques des serveurs dans IIS
    Dim iIndex  'Entier employe dans divers boucles
    Dim objSite  'Objet Site Web 
    Dim bDone  'Booleen representant l'etat de la procedure
 
        On Error Resume Next
 
        ' 
        ' ...Reference sur le Service Web...
        '
        Err.Clear
        Set objW3svc = GetObject("IIS://" & Computer & "/w3svc")
 
        Call Response.Write("<b>Référence sur le service web</b><br><br>")
 
        '
        ' ...Impossible de trouver le Service Web ?...
        '
        If Err.Number <> 0 Then
          Call Response.Write("<b><font color=#ff0000>Impossible d'ouvrir le repertoire</font></b><br><br>")
        Else
 
          '
          ' ...Mise en forme de la chaine caracterisant le Serveur associe au site a creer : IP, Port et Nom d'hote...
          '
          strBinding = IpAddress & ":" & PortNum & ":" & HostName
          Call Response.Write("<b>On veille a ce que ce serveur n'entre pas en conflit avec un autre deja existant...</b><br><br>")
 
          '
          ' ...Parcours de chaque Serveur present dans le Service...
          '
          For Each WebServer in objW3svc
 
            '
            ' ...On repertorie les caracteristiques de chaque serveur...
            '
            If WebServer.Class = "IIsWebServer" Then
              objBindings = WebServer.ServerBindings
 
              '
              ' ...Caracteristiques du nouveau serveur a creer deja existants ?...
              '
              If strBinding = objBindings(0) Then
                Call Response.Write("<b>Les caracteristiques du nouveau serveur sont dupliquees vers un autre</b><br><br>")
              End If
            End If
          Next
 
          '
          ' ...Debut de la procedure de creation du nouveau serveur...
          '        
          iIndex = 1
          bDone = False
 
          Call Response.Write("<b>Debut de la procedure de creation du nouveau serveur...</b><br><br>")
 
          While(Not bDone)
 
            Err.Clear
 
            '
            ' ...Recuperation de l'eventuel emplacement ou le site sera cree...
            '
            Set objSite = GetObject("IIS://"& Computer &"/w3svc/" & iIndex)
 
            '
            ' ...Emplacement occupe ?...
            '    
            If (Err.Number = 0) Then  
              Call Response.Write("<b>Il existe déjà un site web à cette position. Donc on incrémente.</b><br><br>")
 
              '
              ' ...On incremente alors l'index de l'emplacement...
              '
              iIndex = iIndex + 1
            Else
              Err.Clear
 
              '
              ' ...Creation du serveur a l'emplacement trouve...
              '
              Set objNewWebServer = objW3svc.Create("IIsWebServer", iIndex)
              objNewWebServer.SetInfo
 
              '
              ' ...Erreur lors de la creation du serveur ?...
              '
              If (Err.Number <> 0) Then
 
                '
                ' ...On tente alors de le creer a l'index suivant...
                '
                iIndex = iIndex + 1
              Else
                Err.Clear
 
                '
                ' ...On verifie que le site a bien ete cree...
                '
                Call Response.Write("<b>On vérifie que le site a bien été crée.</b><br><br>")
                Set objSite = GetObject("IIS://"& Computer &"/w3svc/" & iIndex)
 
                '
                ' ...Site cree avec succes ?...
                '
                If (Err.Number = 0) Then
                  bDone = True
                  Call Response.Write("<b>Serveur Web cree avec succes!</b><br><br>")
                Else
 
                  '
                  ' ...On retente encore la creation a l'index suivant
                  '
                  iIndex = iIndex + 1
                End If
              End If
            End If
 
            '
            ' ...Si l'index a atteint la position 10000 on arrete les tentatives de creation...
            '
            If (iIndex > 10000) Then
              Call Response.Write("<b><font color=#ff0000>Il est impossible de crée le site web</font></b><br><br>")
              Exit Function
            End If
          Wend
 
          strArNewBindings = Array(0)
          strArNewBindings(0) = strBinding
          objNewWebServer.ServerBindings = strArNewBindings
          objNewWebServer.ServerComment = ServerComment
          objNewWebServer.SetInfo
 
          Call Response.Write("<b>Creation du repertoire racine...</b><br><br>")
 
          '
          ' ...On crée le répertoire racine ...
          '
          Set objNewDir = objNewWebServer.Create("IIsWebVirtualDir", "root")
          objNewDir.Path = RootDirectory
          Call Response.Write("<b>On fixe les droits sur le repertoire...</b><br><br>")
 
          '
          '  ....On fixe les droits sur le repertoire...
          '
          objNewDir.AccessRead = true ' Lecture - client local
          'objNewDir.AccessWrite = false ' Ecriture - client local
          objNewDir.AccessScript = true  ' Scripts seulement - client local
          objNewDir.AccessExecute = true ' Scripts et exécutables - client local
          'objNewDir.Source = true ' Accès à la source des script
          'objNewDir.AccessNoRemoteRead = true ' Lecture - client distant
          'objNewDir.AccessNoRemoteWrite = false ' Ecriture - client distant
          objNewDir.AccessNoRemoteScript = true ' Scripts seulement - client distant
          'objNewDir.AccessNoRemoteExecute = true ' Scripts et exécutables - client distant
          Call Response.Write("<b>On fixe la liste des documents par defaut...</b><br><br>")
 
          '
          '  ...On fixe la liste des documents par defaut...
          '
          If DefaultDoc <> "" Then
            objNewDir.DefaultDoc = DefaultDoc
          Else
            objNewDir.DefaultDoc = "default.asp, default.htm, travaux.htm" 
          End If
 
 
          objSite.LogFileDirectory = LogDirectory  ' Chemin où est enregistrer le journal  
 
          '
          ' ...Activation du journal pour ce site...
          '
          objSite.LogType = 1   
 
          '
          ' ...On intervient ici sur un seul site, mais il est possible d'intervenir sur le serveur en entier...
          '        
          Set IIsLogModuleObj = GetObject("IIS://" & Computer & "/Logging/Format de fichier journal étendu du W3C")    
          sClsidW3C = IIsLogModuleObj.LogModuleId 
 
          '
          ' ...On affecte au site le type de format que l'on souhaite... 
          ' 
          objSite.LogPluginClsid=sClsidW3C   
 
          '
          ' .... On peut mettre dans le journal chaque propriété indépendemment ....
          '
          'objSite.Put "LogExtFileBytesRecv",True 
          'objSite.Put "LogExtFileMethod",True 
          'objSite.Put "LogExtFileTimeTaken",True 
          'objSite.Put "LogExtFileBytesSent",True 
          'objSite.Put "LogExtFileProtocolVersion",True
          'objSite.Put "LogExtFileUriQuery",True 
          'objSite.Put "LogExtFileClientIp",True 
          'objSite.Put "LogExtFileReferer",True 
          'objSite.Put "LogExtFileUriStem",True 
          'objSite.Put "LogExtFileComputerName",True 
          'objSite.Put "LogExtFileServerIp",True 
          'objSite.Put "LogExtFileUserAgent",True 
          'objSite.Put "LogExtFileCookie",True 
          'objSite.Put "LogExtFileServerPort",True 
          'objSite.Put "LogExtFileUserName",True 
          'objSite.Put "LogExtFileDate",True 
          'objSite.Put "LogExtFileSiteName",True 
          'objSite.Put "LogExtFileWin32Status",True 
          'objSite.Put "LogExtFileHttpStatus",True 
          'objSite.Put "LogExtFileTime",True  
          'objSite.Put "LogExtFileHttpSubStatus",True          
 
          '
          '  ....La propriété LogExtFileFlags inclue toutes les autres...
          '        
          objSite.Put "LogExtFileFlags", True       
          objSite.SetInfo
 
          '
          ' ... Méthodes d'authentification ....
          ' 
          'objSite.AuthAnonymous = false
          'objSite.AnonymousUserName = "bbb"
          'objSite.AnonymousUserPass = "aa"
          'objSite.SetInfo 
 
          objNewDir.SetInfo
 
          '
          ' ...Repertoire racine cree avec succes ?...
          '
 
          '
          ' ...On tente de lancer le serveur tout juste cree...
          '
          If Start = True Then
            Call Response.Write("<b>Lancement du serveur...</b><br><br>")
            Err.Clear
            Set objNewWebServer = GetObject("IIS://" & Computer & "/w3svc/" & iIndex)
            objNewWebServer.Start
 
            '
            ' ...Erreur lors du lancement ?...
            '
            If Err.Number <> 0 Then
              Call Response.Write("<b><font color=#ff0000>Erreur lors du lancement du serveur</font></b><br><br>")
              Err.Clear
            Else
              Call Response.Write("<b>Serveur Web lance avec succes!</b><br><br>")
            End If
          End If
        End If
      End Function
Bon, à priori celui là marche, ça me créé mon site sans problèmes...
Mais dès que je lance mon script de creation d'un filtre ISAPI, ça couine...

Le voici (encore une fois dsl pour la longueur...) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 
      Function CreateWebSiteFilter(strFilterName, strFilterPath, strFilterDesc, strIISWebSite)  
 
        Dim objIISWebVirtualDir  
        Dim objFilters
        Dim objFilter
 
        'On Error Resume Next
 
        '
        '...Connection au repertoire racine du site...
        '
        Err.Clear
        Call Response.Write("<b>Connection au repertoire racine du site...</b><br><br>")
        Set objIISWebVirtualDir = GetObject(strIISWebSite & "/root")
        If Err.Number <> 0 Then
          Call Response.Write("<b><font color=#ff0000>Impossible de se connecter au repertoire racine</font></b><br><br>")
        Else
 
          '
          '...Recuperation du groupe de filtres...
          '
          Err.Clear
          Call Response.Write("<b>Recuperation du groupe de filtres...</b><br><br>")
          Set objFilters = GetObject(strIISWebSite & "/Filters")
          If Err.Number <> 0 Then
            Call Response.Write("<b><font color=#ff0000>Impossible de recuperer le groupe de filtres</font></b><br><br>")
          Else
 
            '
            '...Creation du nouveau filtre...
            '  
            Err.Clear
            Call Response.Write("<b>Creation du nouveau filtre...</b><br><br>")
            Set objFilter = objFilters.Create("IIsFilter", strFilterName)
            If Err.Number <> 0 Then
              Call Response.Write("<b><font color=#ff0000>Impossible de creer le nouveau filtre</font></b><br><br>")
            Else
 
              '
              '...Definition des propriétés du filtre...
              '
              Err.Clear
              Call Response.Write("<b>Definition des propriétés du filtre...</b><br><br>")
              objFilter.FilterPath = strFilterPath 
              objFilter.FilterDescription = strFilterDesc 
              objFilter.NotifyOrderHigh = true
              objFilter.NotifyOrderMedium = true
              objFilter.NotifyOrderLow = true
 
              objFilter.SetInfo 
              objFilters.SetInfo 
              objIISWebVirtualDir.SetInfo
 
              If Err.Number <> 0 Then
                Call Response.Write("<b><font color=#ff0000>Impossible de definir les proprietes du filtre</font></b><br><br>")
              Else
                Call Response.Write("<b>ISAPI Filter created with succes!</b><br><br>")
              End If
 
            End If
 
          End If
 
        End If        
 
      End Function
C'est lorsque je fais un GetObject() sur le groupe de filtres de mon Site
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Set objFilters = GetObject(strIISWebSite & "/Filters")
que je me fais rejeter...
Alors j'ai bien du mal a comprendre comment résoudre ce problème.

Si vous avez une idée voir même la solution a mon problème, j'en serais super reconnaissant!!
Merci d'avance!