7 Dim WebObj, WebSite, WebSiteRoot
11 Dim line, lineArray, lineIndex
14 Dim customData, msiProperties, InstallDir, ShibFileExtension
17 Set WebObj = GetObject("IIS://LocalHost/W3SVC")
20 'Get the INSTALLDIR and SHIB_FILE_EXTENSION values via CustomActionData
21 customData = Session.Property("CustomActionData")
22 msiProperties = split(customData,";@;")
23 InstallDir = msiProperties(0)
24 ShibFileExtension = msiProperties(1)
26 'Remove all trailing backslashes to normalize
27 do while (mid(InstallDir,Len(InstallDir),1) = "\")
28 InstallDir = mid(InstallDir,1,Len(InstallDir)-1)
30 ShibISAPIPath = InstallDir & "\libexec\isapi_shib.dll"
31 'Make sure ShibFileExtension is in proper format
32 'First, strip any preceding periods
33 do while (mid(ShibFileExtension,1,1) = ".")
34 ShibFileExtension = mid(ShibFileExtension,2,Len(ShibFileExtension)-1)
36 'If there is nothing left (or was nothing to begin with), use the default
37 if (ShibFileExtension = "") then
38 ShibFileExtension = ".sso"
41 ShibFileExtension = "." & ShibFileExtension
44 'Specify other ISAPI Filter details
45 FilterName = "Shibboleth"
46 FilterPath = ShibISAPIPath
49 Set FiltersObj = GetObject("IIS://LocalHost/W3SVC/Filters")
50 LoadOrder = FiltersObj.FilterLoadOrder
51 'Check to see if 'Shibboleth' is already sequenced
52 existsFlag = "not_exist"
53 lineArray = split(LoadOrder, ",")
54 for each line in lineArray
55 if (line = FilterName) then
59 if (existsFlag = "not_exist") then
60 If LoadOrder <> "" Then
61 LoadOrder = LoadOrder & ","
63 LoadOrder = LoadOrder & FilterName
64 FiltersObj.FilterLoadOrder = LoadOrder
67 'msgbox "Shib Filter already sequenced"
70 Set FilterObj = FiltersObj.Create("IIsFilter", FilterName)
72 'Open existing filter for updating
74 Set FilterObj = GetObject("IIS://LocalHost/W3SVC/Filters/" & FilterName)
76 FilterObj.FilterPath = FilterPath
77 FilterObj.FilterDescription = FilterDesc
80 'Create file extension mapping to ISAPI filter
81 newScriptLine = ShibFileExtension & "," & ShibISAPIPath & ",1"
82 ScriptMaps = WebObj.ScriptMaps
84 existsFlag = "not_exist"
86 for each line in ScriptMaps
87 lineArray = split(line,",")
88 if (lineArray(0) = ShibFileExtension) then
92 lineIndex = lineIndex + 1
94 if (existsFlag = "not_exist") then
95 redim preserve ScriptMaps(UBound(ScriptMaps)+1)
96 ScriptMaps(UBound(ScriptMaps)) = newScriptLine
97 WebObj.ScriptMaps = ScriptMaps
100 'msgbox ".sso already exists: " & lineIndex
101 'We already warned user in dialog that this value would be updated
102 ScriptMaps(lineIndex) = newScriptLine
103 WebObj.ScriptMaps = ScriptMaps
107 'Create file extension mapping to filter on each web site root
108 For Each WebSite in WebObj
109 Set WebSiteRoot = GetObject(WebSite.ADsPath & "/ROOT")
111 ScriptMaps = WebSiteRoot.ScriptMaps
113 existsFlag = "not_exist"
115 for each line in ScriptMaps
116 lineArray = split(line,",")
117 if (lineArray(0) = ShibFileExtension) then
118 existsFlag = "exists"
121 lineIndex = lineIndex + 1
123 if (existsFlag = "not_exist") then
124 redim preserve ScriptMaps(UBound(ScriptMaps)+1)
125 ScriptMaps(UBound(ScriptMaps)) = newScriptLine
126 WebSiteRoot.ScriptMaps = ScriptMaps
129 'msgbox ".sso already exists: " & lineIndex
130 'We already warned user in dialog that this value would be updated
131 ScriptMaps(lineIndex) = newScriptLine
132 WebSiteRoot.ScriptMaps = ScriptMaps
139 'Web Services Extension
141 WebSvcExts = WebObj.WebSvcExtRestrictionList
143 newWebSvcExtLine = "1," & ShibISAPIPath & ",1,ShibGroup,Shibboleth Web Service Extension"
145 existsFlag = "not_exist"
147 for each line in WebSvcExts
148 lineArray = split(line,",")
149 if (lineArray(1) = ShibISAPIPath) then
150 existsFlag = "exists"
153 lineIndex = lineIndex + 1
156 if (existsFlag = "not_exist") then
157 redim preserve WebSvcExts(UBound(WebSvcExts)+1)
158 WebSvcExts(UBound(WebSVCExts)) = newWebSvcExtLine
159 WebObj.WebSvcExtRestrictionList = WebSvcExts
162 'msgbox "Shibboleth Web Services Extension already exists: " & lineIndex
163 'We already warned user in dialog that this value would be updated
164 WebSvcExts(lineIndex) = newWebSvcExtLine
165 WebObj.WebSvcExtRestrictionList = WebSvcExts