1 Function ReadFile( filePath )
\r
4 'OpenTextFile args: <path>, 1 = ForReading
\r
5 'If you read an empty file, VBScript throws an error for some reason
\r
6 if (FileSystemObj.FileExists(filePath)) then
\r
7 Set theFile = FileSystemObj.GetFile(filePath)
\r
8 if (theFile.size > 0) then
\r
9 Set theFile = FileSystemObj.OpenTextFile(filePath, 1)
\r
10 ReadFile = theFile.ReadAll
\r
19 Sub WriteFile( filePath, contents )
\r
22 'OpenTextFile args: <path>, 2 = ForWriting, True = create if not exist
\r
23 Set theFile = FileSystemObj.OpenTextFile(filePath, 2, True)
\r
24 theFile.Write contents
\r
27 Sub ReplaceInFile( filePath, lookForStr, replaceWithStr )
\r
30 buffer = ReadFile(filePath)
\r
31 if (buffer <> "") then
\r
32 buffer = Replace(buffer, lookForStr, replaceWithStr)
\r
33 WriteFile filePath, buffer
\r
38 Dim FileSystemObj, ConvertedDir, ConfigFile, XMLDir, WshShell
\r
39 Dim customData, msiProperties, InstallDir, ShibdPort, LogFile
\r
41 on error resume next
\r
42 Set FileSystemObj = CreateObject("Scripting.FileSystemObject")
\r
45 'Get the INSTALLDIR and SHIBD_PORT values via CustomActionData
\r
46 customData = Session.Property("CustomActionData")
\r
47 msiProperties = split(customData,";@;")
\r
48 InstallDir = msiProperties(0)
\r
49 ShibdPort = msiProperties(1)
\r
51 Set LogFile = FileSystemObj.OpenTextFile(InstallDir & "\var\log\shibboleth\Installer.log", 8, true)
\r
54 LogFile.WriteLine "Edit Config Files to " & InstallDir & ", Port = " & ShibdPort
\r
57 'Remove all trailing backslashes to normalize
\r
58 do while (mid(InstallDir,Len(InstallDir),1) = "\")
\r
59 InstallDir = mid(InstallDir,1,Len(InstallDir)-1)
\r
61 ConvertedDir = Replace(InstallDir, "\", "/")
\r
62 ConfigDir = InstallDir & "\etc\shibboleth\"
\r
63 DistDir = ConfigDir & "dist\"
\r
65 'Set ConvertedDir as the SHIBSP_PREFIX system variable.
\r
66 Set WshShell = CreateObject("WScript.Shell")
\r
67 WshShell.RegWrite "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\SHIBSP_PREFIX", ConvertedDir, "REG_SZ"
\r
69 'Perform actual Substitutions
\r
70 'Afterwards, if the config file doesn't already exist, copy up to etc/shibboleth
\r
71 'Also strip *.in for files in dist
\r
73 ConfigFile = DistDir & "shibd.logger.in"
\r
74 ReplaceInFile ConfigFile, "@-PKGLOGDIR-@", ConvertedDir & "/var/log/shibboleth"
\r
75 If (NOT FileSystemObj.FileExists(ConfigDir & "shibd.logger")) then
\r
76 FileSystemObj.CopyFile ConfigFile, ConfigDir & "shibd.logger", false
\r
78 If (FileSystemObj.FileExists(DistDir & "shibd.logger")) then
\r
79 FileSystemObj.DeleteFile DistDir & "shibd.logger", true
\r
81 FileSystemObj.MoveFile ConfigFile, DistDir & "shibd.logger"
\r
83 ConfigFile = DistDir & "native.logger.in"
\r
84 ReplaceInFile ConfigFile, "@-SHIRELOGDIR-@", ConvertedDir & "/var/log/shibboleth"
\r
85 If (NOT FileSystemObj.FileExists(ConfigDir & "native.logger")) then
\r
86 FileSystemObj.CopyFile ConfigFile, ConfigDir & "native.logger", false
\r
88 If (FileSystemObj.FileExists(DistDir & "native.logger")) then
\r
89 FileSystemObj.DeleteFile DistDir & "native.logger", true
\r
91 FileSystemObj.MoveFile ConfigFile, DistDir & "native.logger"
\r
93 ConfigFile = DistDir & "apache.config.in"
\r
94 ReplaceInFile ConfigFile, "@-PKGLIBDIR-@", ConvertedDir & "/lib/shibboleth"
\r
95 ReplaceInFile ConfigFile, "@-PKGDOCDIR-@", ConvertedDir & "/share/doc/shibboleth"
\r
96 If (NOT FileSystemObj.FileExists(ConfigDir & "apache.config")) then
\r
97 FileSystemObj.CopyFile ConfigFile, ConfigDir & "apache.config", false
\r
99 If (FileSystemObj.FileExists(DistDir & "apache.config")) then
\r
100 FileSystemObj.DeleteFile DistDir & "apache.config", true
\r
102 FileSystemObj.MoveFile ConfigFile, DistDir & "apache.config"
\r
104 ConfigFile = DistDir & "apache2.config.in"
\r
105 ReplaceInFile ConfigFile, "@-PKGLIBDIR-@", ConvertedDir & "/lib/shibboleth"
\r
106 ReplaceInFile ConfigFile, "@-PKGDOCDIR-@", ConvertedDir & "/share/doc/shibboleth"
\r
107 If (NOT FileSystemObj.FileExists(ConfigDir & "apache2.config")) then
\r
108 FileSystemObj.CopyFile ConfigFile, ConfigDir & "apache2.config", false
\r
110 If (FileSystemObj.FileExists(DistDir & "apache2.config")) then
\r
111 FileSystemObj.DeleteFile DistDir & "apache2.config", true
\r
113 FileSystemObj.MoveFile ConfigFile, DistDir & "apache2.config"
\r
115 ConfigFile = DistDir & "apache22.config.in"
\r
116 ReplaceInFile ConfigFile, "@-PKGLIBDIR-@", ConvertedDir & "/lib/shibboleth"
\r
117 ReplaceInFile ConfigFile, "@-PKGDOCDIR-@", ConvertedDir & "/share/doc/shibboleth"
\r
118 If (NOT FileSystemObj.FileExists(ConfigDir & "apache22.config")) then
\r
119 FileSystemObj.CopyFile ConfigFile, ConfigDir & "apache22.config", false
\r
121 If (FileSystemObj.FileExists(DistDir & "apache22.config")) then
\r
122 FileSystemObj.DeleteFile DistDir & "apache22.config", true
\r
124 FileSystemObj.MoveFile ConfigFile, DistDir & "apache22.config"
\r
126 'Now just copy the other non-edited files over as well (if possible)
\r
128 If (NOT FileSystemObj.FileExists(ConfigDir & "shibboleth2.xml")) then
\r
129 FileSystemObj.CopyFile DistDir & "shibboleth2.xml", ConfigDir, false
\r
132 If (NOT FileSystemObj.FileExists(ConfigDir & "accessError.html")) then
\r
133 FileSystemObj.CopyFile DistDir & "accessError.html", ConfigDir, false
\r
136 If (NOT FileSystemObj.FileExists(ConfigDir & "metadataError.html")) then
\r
137 FileSystemObj.CopyFile DistDir & "metadataError.html", ConfigDir, false
\r
140 If (NOT FileSystemObj.FileExists(ConfigDir & "sessionError.html")) then
\r
141 FileSystemObj.CopyFile DistDir & "sessionError.html", ConfigDir, false
\r
144 If (NOT FileSystemObj.FileExists(ConfigDir & "sslError.html")) then
\r
145 FileSystemObj.CopyFile DistDir & "sslError.html", ConfigDir, false
\r
148 If (NOT FileSystemObj.FileExists(ConfigDir & "bindingTemplate.html")) then
\r
149 FileSystemObj.CopyFile DistDir & "bindingTemplate.html", ConfigDir, false
\r
152 If (NOT FileSystemObj.FileExists(ConfigDir & "discoveryTemplate.html")) then
\r
153 FileSystemObj.CopyFile DistDir & "discoveryTemplate.html", ConfigDir, false
\r
156 If (NOT FileSystemObj.FileExists(ConfigDir & "postTemplate.html")) then
\r
157 FileSystemObj.CopyFile DistDir & "postTemplate.html", ConfigDir, false
\r
160 If (NOT FileSystemObj.FileExists(ConfigDir & "localLogout.html")) then
\r
161 FileSystemObj.CopyFile DistDir & "localLogout.html", ConfigDir, false
\r
164 If (NOT FileSystemObj.FileExists(ConfigDir & "globalLogout.html")) then
\r
165 FileSystemObj.CopyFile DistDir & "globalLogout.html", ConfigDir, false
\r
168 If (NOT FileSystemObj.FileExists(ConfigDir & "partialLogout.html")) then
\r
169 FileSystemObj.CopyFile DistDir & "partialLogout.html", ConfigDir, false
\r
172 If (NOT FileSystemObj.FileExists(ConfigDir & "console.logger")) then
\r
173 FileSystemObj.CopyFile DistDir & "console.logger", ConfigDir, false
\r
176 If (NOT FileSystemObj.FileExists(ConfigDir & "shibboleth.logger")) then
\r
177 FileSystemObj.CopyFile DistDir & "shibboleth.logger", ConfigDir, false
\r
180 If (NOT FileSystemObj.FileExists(ConfigDir & "attribute-map.xml")) then
\r
181 FileSystemObj.CopyFile DistDir & "attribute-map.xml", ConfigDir, false
\r
184 If (NOT FileSystemObj.FileExists(ConfigDir & "attribute-policy.xml")) then
\r
185 FileSystemObj.CopyFile DistDir & "attribute-policy.xml", ConfigDir, false
\r
188 If (NOT FileSystemObj.FileExists(ConfigDir & "security-policy.xml")) then
\r
189 FileSystemObj.CopyFile DistDir & "security-policy.xml", ConfigDir, false
\r
192 If (NOT FileSystemObj.FileExists(ConfigDir & "protocols.xml")) then
\r
193 FileSystemObj.CopyFile DistDir & "protocols.xml", ConfigDir, false
\r
196 ConfigFile = ConfigDir & "SetService64.bat"
\r
197 ReplaceInFile ConfigFile, "@-INSTALLDIR-@", InstallDir
\r
199 ConfigFile = ConfigDir & "SetService32.bat"
\r
200 ReplaceInFile ConfigFile, "@-INSTALLDIR-@", InstallDir
\r