350681c79623cf4c06c5fec55b523de7e55ed0c6
[shibboleth/cpp-sp.git] / msi / scripts / shib_edit_config_files.vbs
1 Function ReadFile( filePath )
2    Dim theFile
3
4    'OpenTextFile args: <path>, 1 = ForReading
5    'If you read an empty file, VBScript throws an error for some reason
6    if (FileSystemObj.FileExists(filePath)) then
7      Set theFile = FileSystemObj.GetFile(filePath)
8      if (theFile.size > 0) then
9        Set theFile = FileSystemObj.OpenTextFile(filePath, 1)
10        ReadFile = theFile.ReadAll
11      else
12        ReadFile = ""
13      end if
14    else
15      ReadFile = ""
16    end if
17 End Function
18
19 Sub WriteFile( filePath, contents )
20    Dim theFile
21
22    'OpenTextFile args: <path>, 2 = ForWriting, True = create if not exist
23    Set theFile = FileSystemObj.OpenTextFile(filePath, 2, True)
24    theFile.Write contents
25 End Sub
26
27 Sub ReplaceInFile( filePath, lookForStr, replaceWithStr )
28   Dim buffer
29
30   buffer = ReadFile(filePath)
31   if (buffer <> "") then
32     buffer = Replace(buffer, lookForStr, replaceWithStr)
33     WriteFile filePath, buffer
34   end if
35 End Sub
36
37
38 Dim FileSystemObj, ConvertedDir, ConfigFile, XMLDir
39 Dim customData, msiProperties, InstallDir, ShibdPort
40
41 on error resume next
42 Set FileSystemObj = CreateObject("Scripting.FileSystemObject")
43 if (Err = 0) then
44
45   'Get the INSTALLDIR and SHIBD_PORT values via CustomActionData
46   customData = Session.Property("CustomActionData")
47   msiProperties = split(customData,";@;")
48   InstallDir = msiProperties(0)
49   ShibdPort = msiProperties(1)
50
51   'Remove all trailing backslashes to normalize
52   do while (mid(InstallDir,Len(InstallDir),1) = "\")
53     InstallDir = mid(InstallDir,1,Len(InstallDir)-1)
54   loop
55   ConvertedDir = Replace(InstallDir, "\", "/")
56   ConfigDir = InstallDir & "\etc\shibboleth\"
57   DistDir = ConfigDir & "dist\"
58
59   'Perform actual Substitutions
60   'Afterwards, if the config file doesn't already exist, copy up to etc/shibboleth
61   'Also strip *.in for files in dist
62
63   ConfigFile = DistDir & "attribute-map.xml.in"
64   ReplaceInFile ConfigFile, "@-PKGXMLDIR-@", ConvertedDir & "/share/xml/shibboleth"
65   If (NOT FileSystemObj.FileExists(ConfigDir & "attribute-map.xml")) then
66     FileSystemObj.CopyFile ConfigFile, ConfigDir & "attribute-map.xml", false
67   End If
68   If (FileSystemObj.FileExists(DistDir & "attribute-map.xml")) then
69     FileSystemObj.DeleteFile DistDir & "attribute-map.xml", true
70   End If
71   FileSystemObj.MoveFile ConfigFile, DistDir & "attribute-map.xml"
72
73   ConfigFile = DistDir & "attribute-policy.xml.in"
74   ReplaceInFile ConfigFile, "@-PKGXMLDIR-@", ConvertedDir & "/share/xml/shibboleth"
75   If (NOT FileSystemObj.FileExists(ConfigDir & "attribute-policy.xml")) then
76     FileSystemObj.CopyFile ConfigFile, ConfigDir & "attribute-policy.xml", false
77   End If
78   If (FileSystemObj.FileExists(DistDir & "attribute-policy.xml")) then
79     FileSystemObj.DeleteFile DistDir & "attribute-policy.xml", true
80   End If
81   FileSystemObj.MoveFile ConfigFile, DistDir & "attribute-policy.xml"
82   
83   ConfigFile = DistDir & "example-metadata.xml.in"
84   ReplaceInFile ConfigFile, "@-PKGXMLDIR-@", ConvertedDir & "/share/xml/shibboleth"
85   If (NOT FileSystemObj.FileExists(ConfigDir & "example-metadata.xml")) then
86     FileSystemObj.CopyFile ConfigFile, ConfigDir & "example-metadata.xml", false
87   End If
88   If (FileSystemObj.FileExists(DistDir & "example-metadata.xml")) then
89     FileSystemObj.DeleteFile DistDir & "example-metadata.xml", true
90   End If
91   FileSystemObj.MoveFile ConfigFile, DistDir & "example-metadata.xml"
92
93   ConfigFile = DistDir & "shibboleth.xml.in"
94   ReplaceInFile ConfigFile, "@-PKGXMLDIR-@", ConvertedDir & "/share/xml/shibboleth"
95   ReplaceInFile ConfigFile, "@-PKGSYSCONFDIR-@", ConvertedDir & "/etc/shibboleth"
96   ReplaceInFile ConfigFile, "@-LIBEXECDIR-@", ConvertedDir & "/libexec"
97   ReplaceInFile ConfigFile, "@-LOGDIR-@", ConvertedDir & "/var/log/shibboleth"
98   ReplaceInFile ConfigFile, "@-PREFIX-@", ConvertedDir
99   ReplaceInFile ConfigFile, "   <UnixListener address=""@-VARRUNDIR-@/shib-shar.sock""/>", "<!-- <UnixListener address=""@-VARRUNDIR-@/shib-shar.sock""/> -->"
100   ReplaceInFile ConfigFile, "<!-- <TCPListener address=""127.0.0.1"" port=""12345"" acl=""127.0.0.1""/> -->", "<TCPListener address=""127.0.0.1"" port=""" & ShibdPort & """ acl=""127.0.0.1""/>"
101   If (NOT FileSystemObj.FileExists(ConfigDir & "shibboleth.xml")) then
102     FileSystemObj.CopyFile ConfigFile, ConfigDir & "shibboleth.xml", false
103   End If
104   If (FileSystemObj.FileExists(DistDir & "shibboleth.xml")) then
105     FileSystemObj.DeleteFile DistDir & "shibboleth.xml", true
106   End If
107   FileSystemObj.MoveFile ConfigFile, DistDir & "shibboleth.xml"
108
109   ConfigFile = DistDir & "shibd.logger.in"
110   ReplaceInFile ConfigFile, "@-PKGLOGDIR-@", ConvertedDir & "/var/log/shibboleth"
111   If (NOT FileSystemObj.FileExists(ConfigDir & "shibd.logger")) then
112     FileSystemObj.CopyFile ConfigFile, ConfigDir & "shibd.logger", false
113   End If
114   If (FileSystemObj.FileExists(DistDir & "shibd.logger")) then
115     FileSystemObj.DeleteFile DistDir & "shibd.logger", true
116   End If
117   FileSystemObj.MoveFile ConfigFile, DistDir & "shibd.logger"
118
119   ConfigFile = DistDir & "native.logger.in"
120   ReplaceInFile ConfigFile, "@-SHIRELOGDIR-@", ConvertedDir & "/var/log/shibboleth"
121   If (NOT FileSystemObj.FileExists(ConfigDir & "native.logger")) then
122     FileSystemObj.CopyFile ConfigFile, ConfigDir & "native.logger", false
123   End If
124   If (FileSystemObj.FileExists(DistDir & "native.logger")) then
125     FileSystemObj.DeleteFile DistDir & "native.logger", true
126   End If
127   FileSystemObj.MoveFile ConfigFile, DistDir & "native.logger"
128
129   ConfigFile = DistDir & "apache.config.in"
130   ReplaceInFile ConfigFile, "@-PKGXMLDIR-@", ConvertedDir & "/share/xml/shibboleth"
131   ReplaceInFile ConfigFile, "@-PKGSYSCONFDIR-@", ConvertedDir & "/etc/shibboleth"
132   ReplaceInFile ConfigFile, "@-LIBEXECDIR-@", ConvertedDir & "/libexec"
133   ReplaceInFile ConfigFile, "@-PREFIX-@", ConvertedDir
134   If (NOT FileSystemObj.FileExists(ConfigDir & "apache.config")) then
135     FileSystemObj.CopyFile ConfigFile, ConfigDir & "apache.config", false
136   End If
137   If (FileSystemObj.FileExists(DistDir & "apache.config")) then
138     FileSystemObj.DeleteFile DistDir & "apache.config", true
139   End If
140   FileSystemObj.MoveFile ConfigFile, DistDir & "apache.config"
141
142   ConfigFile = DistDir & "apache2.config.in"
143   ReplaceInFile ConfigFile, "@-PKGXMLDIR-@", ConvertedDir & "/share/xml/shibboleth"
144   ReplaceInFile ConfigFile, "@-PKGSYSCONFDIR-@", ConvertedDir & "/etc/shibboleth"
145   ReplaceInFile ConfigFile, "@-LIBEXECDIR-@", ConvertedDir & "/libexec"
146   ReplaceInFile ConfigFile, "@-PREFIX-@", ConvertedDir
147   If (NOT FileSystemObj.FileExists(ConfigDir & "apache2.config")) then
148     FileSystemObj.CopyFile ConfigFile, ConfigDir & "apache2.config", false
149   End If
150   If (FileSystemObj.FileExists(DistDir & "apache2.config")) then
151     FileSystemObj.DeleteFile DistDir & "apache2.config", true
152   End If
153   FileSystemObj.MoveFile ConfigFile, DistDir & "apache2.config"
154
155   ConfigFile = DistDir & "apache22.config.in"
156   ReplaceInFile ConfigFile, "@-PKGXMLDIR-@", ConvertedDir & "/share/xml/shibboleth"
157   ReplaceInFile ConfigFile, "@-PKGSYSCONFDIR-@", ConvertedDir & "/etc/shibboleth"
158   ReplaceInFile ConfigFile, "@-LIBEXECDIR-@", ConvertedDir & "/libexec"
159   ReplaceInFile ConfigFile, "@-PREFIX-@", ConvertedDir
160   If (NOT FileSystemObj.FileExists(ConfigDir & "apache22.config")) then
161     FileSystemObj.CopyFile ConfigFile, ConfigDir & "apache22.config", false
162   End If
163   If (FileSystemObj.FileExists(DistDir & "apache22.config")) then
164     FileSystemObj.DeleteFile DistDir & "apache22.config", true
165   End If
166   FileSystemObj.MoveFile ConfigFile, DistDir & "apache22.config"
167
168   'Now just copy the other non-edited files over as well (if possible)
169
170   If (NOT FileSystemObj.FileExists(ConfigDir & "accessError.html")) then
171     FileSystemObj.CopyFile DistDir & "accessError.html", ConfigDir, false
172   End If
173
174   If (NOT FileSystemObj.FileExists(ConfigDir & "metadataError.html")) then
175     FileSystemObj.CopyFile DistDir & "metadataError.html", ConfigDir, false
176   End If
177
178   If (NOT FileSystemObj.FileExists(ConfigDir & "sessionError.html")) then
179     FileSystemObj.CopyFile DistDir & "sessionError.html", ConfigDir, false
180   End If
181
182   If (NOT FileSystemObj.FileExists(ConfigDir & "sslError.html")) then
183     FileSystemObj.CopyFile DistDir & "sslError.html", ConfigDir, false
184   End If
185
186   If (NOT FileSystemObj.FileExists(ConfigDir & "bindingTemplate.html")) then
187     FileSystemObj.CopyFile DistDir & "bindingTemplate.html", ConfigDir, false
188   End If
189
190   If (NOT FileSystemObj.FileExists(ConfigDir & "openssl.cnf")) then
191     FileSystemObj.CopyFile DistDir & "openssl.cnf", ConfigDir, false
192   End If
193
194   If (NOT FileSystemObj.FileExists(ConfigDir & "console.logger")) then
195     FileSystemObj.CopyFile DistDir & "console.logger", ConfigDir, false
196   End If
197
198   If (NOT FileSystemObj.FileExists(ConfigDir & "shibboleth.logger")) then
199     FileSystemObj.CopyFile DistDir & "shibboleth.logger", ConfigDir, false
200   End If
201
202   If (NOT FileSystemObj.FileExists(ConfigDir & "sp-example.crt")) then
203     FileSystemObj.CopyFile DistDir & "sp-example.crt", ConfigDir, false
204   End If
205
206   If (NOT FileSystemObj.FileExists(ConfigDir & "sp-example.key")) then
207     FileSystemObj.CopyFile DistDir & "sp-example.key", ConfigDir, false
208   End If
209
210   ' Finally, fix up schema catalogs.
211   
212   XMLDir = InstallDir & "\share\xml\xmltooling\"
213   ConfigFile = XMLDir & "catalog.xml.in"
214   ReplaceInFile ConfigFile, "@-PKGXMLDIR-@", XMLDir
215   FileSystemObj.MoveFile ConfigFile, XMLDir & "catalog.xml"
216
217   XMLDir = InstallDir & "\share\xml\opensaml\"
218   ConfigFile = XMLDir & "saml20-catalog.xml.in"
219   ReplaceInFile ConfigFile, "@-PKGXMLDIR-@", XMLDir
220   FileSystemObj.MoveFile ConfigFile, XMLDir & "saml20-catalog.xml"
221   ConfigFile = XMLDir & "saml11-catalog.xml.in"
222   ReplaceInFile ConfigFile, "@-PKGXMLDIR-@", XMLDir
223   FileSystemObj.MoveFile ConfigFile, XMLDir & "saml11-catalog.xml"
224   ConfigFile = XMLDir & "saml10-catalog.xml.in"
225   ReplaceInFile ConfigFile, "@-PKGXMLDIR-@", XMLDir
226   FileSystemObj.MoveFile ConfigFile, XMLDir & "saml10-catalog.xml"
227
228   XMLDir = InstallDir & "\share\xml\shibboleth\"
229   ConfigFile = XMLDir & "catalog.xml.in"
230   ReplaceInFile ConfigFile, "@-PKGXMLDIR-@", XMLDir
231   FileSystemObj.MoveFile ConfigFile, XMLDir & "catalog.xml"
232
233 'Last End If
234 End If