Skip to content
This repository was archived by the owner on Dec 3, 2024. It is now read-only.

Commit 7ca64b8

Browse files
committed
Automatically set ignorePerms attribute on all repos on start.
1 parent 1e787c9 commit 7ca64b8

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

src/main/java/com/nutomic/syncthingandroid/service/SyncthingService.java

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.apache.http.impl.client.DefaultHttpClient;
2323
import org.w3c.dom.Document;
2424
import org.w3c.dom.Element;
25+
import org.w3c.dom.NodeList;
2526
import org.xml.sax.SAXException;
2627

2728
import java.io.BufferedReader;
@@ -274,20 +275,43 @@ private File getConfigFile() {
274275
}
275276

276277
/**
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.
278284
*/
279285
private void updateConfig() {
280286
try {
287+
boolean changed = false;
281288
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
282289
Document d = db.parse(getConfigFile());
290+
291+
// Hardcode default globalAnnounceServer ip.
283292
Element options = (Element)
284293
d.getDocumentElement().getElementsByTagName("options").item(0);
285294
Element globalAnnounceServer = (Element)
286295
options.getElementsByTagName("globalAnnounceServer").item(0);
287296
if (globalAnnounceServer.getTextContent().equals("announce.syncthing.net:22025")) {
288297
Log.i(TAG, "Replacing globalAnnounceServer host with ip");
289298
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+
}
290312

313+
// Write the changes back to file.
314+
if (changed) {
291315
TransformerFactory transformerFactory = TransformerFactory.newInstance();
292316
Transformer transformer = transformerFactory.newTransformer();
293317
DOMSource domSource = new DOMSource(d);

0 commit comments

Comments
 (0)