86f7dc851d0c56e0531266bc6f323bc2327891f6
[shibboleth/cpp-sp.git] / msi / scripts / shib_edit_config_files.vbs-wix
1 Function ReadFile( filePath )\r
2    Dim theFile\r
3 \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
11      else\r
12        ReadFile = ""\r
13      end if\r
14    else\r
15      ReadFile = ""\r
16    end if\r
17 End Function\r
18 \r
19 Sub WriteFile( filePath, contents )\r
20    Dim theFile\r
21 \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
25 End Sub\r
26 \r
27 Sub ReplaceInFile( filePath, lookForStr, replaceWithStr )\r
28   Dim buffer\r
29 \r
30   buffer = ReadFile(filePath)\r
31   if (buffer <> "") then\r
32     buffer = Replace(buffer, lookForStr, replaceWithStr)\r
33     WriteFile filePath, buffer\r
34   end if\r
35 End Sub\r
36 \r
37 \r
38 Dim FileSystemObj, ConvertedDir, ConfigFile, XMLDir, WshShell\r
39 Dim customData, msiProperties, InstallDir, ShibdPort\r
40 \r
41 on error resume next\r
42 Set FileSystemObj = CreateObject("Scripting.FileSystemObject")\r
43 if (Err = 0) then\r
44 \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
50   ProgramData = msiProperties(2)\r
51 \r
52   'Remove all trailing backslashes to normalize\r
53   do while (mid(InstallDir,Len(InstallDir),1) = "\")\r
54     InstallDir = mid(InstallDir,1,Len(InstallDir)-1)\r
55   loop\r
56   ConvertedDir = Replace(InstallDir, "\", "/")\r
57   ConfigDir = InstallDir & "\etc\shibboleth\"\r
58   DistDir = ConfigDir & "dist\"\r
59 \r
60   'Set ConvertedDir as the SHIBSP_PREFIX system variable.\r
61   Set WshShell = CreateObject("WScript.Shell")\r
62   WshShell.RegWrite "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\SHIBSP_PREFIX", ConvertedDir, "REG_SZ"\r
63 \r
64   'Perform actual Substitutions\r
65   'Afterwards, if the config file doesn't already exist, copy up to etc/shibboleth\r
66   'Also strip *.in for files in dist\r
67 \r
68   ConfigFile = DistDir & "shibd.logger.in"\r
69   ReplaceInFile ConfigFile, "@-PKGLOGDIR-@", ConvertedDir & "/var/log/shibboleth"\r
70   If (NOT FileSystemObj.FileExists(ConfigDir & "shibd.logger")) then\r
71     FileSystemObj.CopyFile ConfigFile, ConfigDir & "shibd.logger", false\r
72   End If\r
73   If (FileSystemObj.FileExists(DistDir & "shibd.logger")) then\r
74     FileSystemObj.DeleteFile DistDir & "shibd.logger", true\r
75   End If\r
76   FileSystemObj.MoveFile ConfigFile, DistDir & "shibd.logger"\r
77 \r
78   ConfigFile = DistDir & "native.logger.in"\r
79   ReplaceInFile ConfigFile, "@-SHIRELOGDIR-@", ConvertedDir & "/var/log/shibboleth"\r
80   If (NOT FileSystemObj.FileExists(ConfigDir & "native.logger")) then\r
81     FileSystemObj.CopyFile ConfigFile, ConfigDir & "native.logger", false\r
82   End If\r
83   If (FileSystemObj.FileExists(DistDir & "native.logger")) then\r
84     FileSystemObj.DeleteFile DistDir & "native.logger", true\r
85   End If\r
86   FileSystemObj.MoveFile ConfigFile, DistDir & "native.logger"\r
87 \r
88   ConfigFile = DistDir & "apache.config.in"\r
89   ReplaceInFile ConfigFile, "@-PKGLIBDIR-@", ConvertedDir & "/lib/shibboleth"\r
90   ReplaceInFile ConfigFile, "@-PKGDOCDIR-@", ConvertedDir & "/share/doc/shibboleth"\r
91   If (NOT FileSystemObj.FileExists(ConfigDir & "apache.config")) then\r
92     FileSystemObj.CopyFile ConfigFile, ConfigDir & "apache.config", false\r
93   End If\r
94   If (FileSystemObj.FileExists(DistDir & "apache.config")) then\r
95     FileSystemObj.DeleteFile DistDir & "apache.config", true\r
96   End If\r
97   FileSystemObj.MoveFile ConfigFile, DistDir & "apache.config"\r
98 \r
99   ConfigFile = DistDir & "apache2.config.in"\r
100   ReplaceInFile ConfigFile, "@-PKGLIBDIR-@", ConvertedDir & "/lib/shibboleth"\r
101   ReplaceInFile ConfigFile, "@-PKGDOCDIR-@", ConvertedDir & "/share/doc/shibboleth"\r
102   If (NOT FileSystemObj.FileExists(ConfigDir & "apache2.config")) then\r
103     FileSystemObj.CopyFile ConfigFile, ConfigDir & "apache2.config", false\r
104   End If\r
105   If (FileSystemObj.FileExists(DistDir & "apache2.config")) then\r
106     FileSystemObj.DeleteFile DistDir & "apache2.config", true\r
107   End If\r
108   FileSystemObj.MoveFile ConfigFile, DistDir & "apache2.config"\r
109 \r
110   ConfigFile = DistDir & "apache22.config.in"\r
111   ReplaceInFile ConfigFile, "@-PKGLIBDIR-@", ConvertedDir & "/lib/shibboleth"\r
112   ReplaceInFile ConfigFile, "@-PKGDOCDIR-@", ConvertedDir & "/share/doc/shibboleth"\r
113   If (NOT FileSystemObj.FileExists(ConfigDir & "apache22.config")) then\r
114     FileSystemObj.CopyFile ConfigFile, ConfigDir & "apache22.config", false\r
115   End If\r
116   If (FileSystemObj.FileExists(DistDir & "apache22.config")) then\r
117     FileSystemObj.DeleteFile DistDir & "apache22.config", true\r
118   End If\r
119   FileSystemObj.MoveFile ConfigFile, DistDir & "apache22.config"\r
120 \r
121   'Now just copy the other non-edited files over as well (if possible)\r
122 \r
123   If (NOT FileSystemObj.FileExists(ConfigDir & "shibboleth2.xml")) then\r
124     FileSystemObj.CopyFile DistDir & "shibboleth2.xml", ConfigDir, false\r
125   End If\r
126 \r
127   If (NOT FileSystemObj.FileExists(ConfigDir & "accessError.html")) then\r
128     FileSystemObj.CopyFile DistDir & "accessError.html", ConfigDir, false\r
129   End If\r
130 \r
131   If (NOT FileSystemObj.FileExists(ConfigDir & "metadataError.html")) then\r
132     FileSystemObj.CopyFile DistDir & "metadataError.html", ConfigDir, false\r
133   End If\r
134 \r
135   If (NOT FileSystemObj.FileExists(ConfigDir & "sessionError.html")) then\r
136     FileSystemObj.CopyFile DistDir & "sessionError.html", ConfigDir, false\r
137   End If\r
138 \r
139   If (NOT FileSystemObj.FileExists(ConfigDir & "sslError.html")) then\r
140     FileSystemObj.CopyFile DistDir & "sslError.html", ConfigDir, false\r
141   End If\r
142 \r
143   If (NOT FileSystemObj.FileExists(ConfigDir & "bindingTemplate.html")) then\r
144     FileSystemObj.CopyFile DistDir & "bindingTemplate.html", ConfigDir, false\r
145   End If\r
146 \r
147   If (NOT FileSystemObj.FileExists(ConfigDir & "discoveryTemplate.html")) then\r
148     FileSystemObj.CopyFile DistDir & "discoveryTemplate.html", ConfigDir, false\r
149   End If\r
150 \r
151   If (NOT FileSystemObj.FileExists(ConfigDir & "postTemplate.html")) then\r
152     FileSystemObj.CopyFile DistDir & "postTemplate.html", ConfigDir, false\r
153   End If\r
154 \r
155   If (NOT FileSystemObj.FileExists(ConfigDir & "localLogout.html")) then\r
156     FileSystemObj.CopyFile DistDir & "localLogout.html", ConfigDir, false\r
157   End If\r
158 \r
159   If (NOT FileSystemObj.FileExists(ConfigDir & "globalLogout.html")) then\r
160     FileSystemObj.CopyFile DistDir & "globalLogout.html", ConfigDir, false\r
161   End If\r
162 \r
163   If (NOT FileSystemObj.FileExists(ConfigDir & "partialLogout.html")) then\r
164     FileSystemObj.CopyFile DistDir & "partialLogout.html", ConfigDir, false\r
165   End If\r
166 \r
167   If (NOT FileSystemObj.FileExists(ConfigDir & "console.logger")) then\r
168     FileSystemObj.CopyFile DistDir & "console.logger", ConfigDir, false\r
169   End If\r
170 \r
171   If (NOT FileSystemObj.FileExists(ConfigDir & "shibboleth.logger")) then\r
172     FileSystemObj.CopyFile DistDir & "shibboleth.logger", ConfigDir, false\r
173   End If\r
174 \r
175   If (NOT FileSystemObj.FileExists(ConfigDir & "attribute-map.xml")) then\r
176     FileSystemObj.CopyFile DistDir & "attribute-map.xml", ConfigDir, false\r
177   End If\r
178 \r
179   If (NOT FileSystemObj.FileExists(ConfigDir & "attribute-policy.xml")) then\r
180     FileSystemObj.CopyFile DistDir & "attribute-policy.xml", ConfigDir, false\r
181   End If\r
182 \r
183   If (NOT FileSystemObj.FileExists(ConfigDir & "security-policy.xml")) then\r
184     FileSystemObj.CopyFile DistDir & "security-policy.xml", ConfigDir, false\r
185   End If\r
186 \r
187   If (NOT FileSystemObj.FileExists(ConfigDir & "protocols.xml")) then\r
188     FileSystemObj.CopyFile DistDir & "protocols.xml", ConfigDir, false\r
189   End If\r
190 \r
191   ConfigFile  = ConfigDir & "SetService64.bat"\r
192   ReplaceInFile ConfigFile, "@-INSTALLDIR-@", InstallDir\r
193 \r
194   ConfigFile  = ConfigDir & "SetService32.bat"\r
195   ReplaceInFile ConfigFile, "@-INSTALLDIR-@", InstallDir\r
196   \r
197 \r
198 'Last End If\r
199 End If