|
22 | 22 | import org.apache.http.impl.client.DefaultHttpClient; |
23 | 23 | import org.w3c.dom.Document; |
24 | 24 | import org.w3c.dom.Element; |
| 25 | +import org.w3c.dom.NodeList; |
25 | 26 | import org.xml.sax.SAXException; |
26 | 27 |
|
27 | 28 | import java.io.BufferedReader; |
@@ -274,20 +275,43 @@ private File getConfigFile() { |
274 | 275 | } |
275 | 276 |
|
276 | 277 | /** |
277 | | - * Applies changes to config after update from version 0.2.0 or earlier. |
| 278 | + * Updates the config file. |
| 279 | + * |
| 280 | + * Coming from 0.2.0 and earlier, globalAnnounceServer value "announce.syncthing.net:22025" is |
| 281 | + * replaced with "194.126.249.5:22025" (as domain resolve is broken). |
| 282 | + * |
| 283 | + * Coming from 0.3.0 and earlier, the ignorePerms flag is set to true on every repository. |
278 | 284 | */ |
279 | 285 | private void updateConfig() { |
280 | 286 | try { |
| 287 | + boolean changed = false; |
281 | 288 | DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); |
282 | 289 | Document d = db.parse(getConfigFile()); |
| 290 | + |
| 291 | + // Hardcode default globalAnnounceServer ip. |
283 | 292 | Element options = (Element) |
284 | 293 | d.getDocumentElement().getElementsByTagName("options").item(0); |
285 | 294 | Element globalAnnounceServer = (Element) |
286 | 295 | options.getElementsByTagName("globalAnnounceServer").item(0); |
287 | 296 | if (globalAnnounceServer.getTextContent().equals("announce.syncthing.net:22025")) { |
288 | 297 | Log.i(TAG, "Replacing globalAnnounceServer host with ip"); |
289 | 298 | globalAnnounceServer.setTextContent("194.126.249.5:22025"); |
| 299 | + changed = true; |
| 300 | + } |
| 301 | + |
| 302 | + // Set ignorePerms attribute. |
| 303 | + NodeList repos = d.getDocumentElement().getElementsByTagName("repository"); |
| 304 | + for (int i = 0; i < repos.getLength(); i++) { |
| 305 | + Element r = (Element) repos.item(i); |
| 306 | + if (!r.hasAttribute("ignorePerms") || |
| 307 | + !Boolean.parseBoolean(r.getAttribute("ignorePerms"))) { |
| 308 | + r.setAttribute("ignorePerms", Boolean.toString(true)); |
| 309 | + changed = true; |
| 310 | + } |
| 311 | + } |
290 | 312 |
|
| 313 | + // Write the changes back to file. |
| 314 | + if (changed) { |
291 | 315 | TransformerFactory transformerFactory = TransformerFactory.newInstance(); |
292 | 316 | Transformer transformer = transformerFactory.newTransformer(); |
293 | 317 | DOMSource domSource = new DOMSource(d); |
|
0 commit comments