IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

[VBS et IIS]Creer et Manipuler un Site Web IIS avec VBS


Sujet :

VBScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 31
    Points : 25
    Points
    25
    Par défaut [VBS et IIS]Creer et Manipuler un Site Web IIS avec VBS
    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!

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 31
    Points : 25
    Points
    25
    Par défaut
    Ok...j'avais tout simplement oublié de creer un objet IIsFilters, d'où le fait qu'il ne réussisait pas à trouver mon répertoire "Filters", tout simplement parce qu'il n'existait pas!

    En fait cet objet est automatiquement créé pour un web service, mais lorsqu'on veut affecter un filtre à un site spécifique, il faut le faire manuellement lors de sa création.

    Voici les lignes de code à rajouter, dans la fonction CreateWebSite (je les mets au cas où quelqu'un aura le même problème...) :

    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
     
    Function CreateWebSite(Computer, IPAddress, RootDirectory, LogDirectory, ServerComment, HostName, PortNum, DefaultDoc, Start)
    .
    .
    .
    '
    ' ...Declarer une variable au début de la procédure
    '
    Dim objFilters
    .
    .
    .
    '
    ' ...Creation du serveur a l'emplacement trouve...
    '
    Set objNewWebServer = objW3svc.Create("IIsWebServer", iIndex)
    objNewWebServer.AspEnableParentPaths = true
     
    '
    ' ...Voici les lignes a rajouter...
    '              
    Set objFilters = objNewWebServer.Create("IIsFilters", "Filters")
    objFilters.SetInfo
    If (Err.Number <> 0) Then
      Call Response.Write("<b><font color=#ff0000>Impossible de creer l'objet correspondant aux Filtres</font></b><br><br>")
    End If
    Err.Clear
    objNewWebServer.SetInfo
    Voilà, en ésperant que ça aidera un jour quelqu'un et surtout lui éviter de perdre autant de temps que moi !

    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. IIS 7.0 paramettrage droit site web
    Par bleuerouge dans le forum IIS
    Réponses: 0
    Dernier message: 26/02/2010, 19h50
  2. Architecture site web IIS
    Par olibara dans le forum IIS
    Réponses: 0
    Dernier message: 05/12/2008, 11h32
  3. Transfert d'un site WEB IIS sur Apache
    Par louismdev dans le forum Apache
    Réponses: 3
    Dernier message: 03/06/2007, 23h38
  4. [2.0][IIS] Probleme de déploiment de site web
    Par batosai dans le forum IIS
    Réponses: 7
    Dernier message: 06/06/2006, 14h01
  5. IIS et 2DNS et 1 site web
    Par topolino dans le forum ASP
    Réponses: 1
    Dernier message: 16/05/2006, 17h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo