package de.fun2code.android.piratebox.util; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.regex.Pattern; import org.jdom.Document; import org.jdom.Element; import org.jdom.input.SAXBuilder; import android.content.Context; import de.fun2code.android.pawserver.PawServerActivity; import de.fun2code.android.piratebox.Constants; public class ServerConfigUtil { /** * Reads setting form {@literal server.xml} file * * @param setting setting to read * @param context Context to use * @return {@code true} on success, otherwise {@code false} */ public static String getServerSetting(String setting, Context context) { try { SAXBuilder builder = new SAXBuilder(false); Document doc = builder.build(new File(Constants.getInstallDir(context) + "/conf/server.xml")); // Get root element Element root = doc.getRootElement(); return root.getChild(setting) != null ? root.getChild( setting).getText().trim() : ""; } catch (Exception e) { return ""; } } /** * Writes setting to {@literal server.xml} file * * @param setting setting to write * @param value value to set * @param context Context to use * @return {@code true} on success, otherwise {@code false} */ public static boolean storeServerSetting(String setting, String value, Context context) { File confFile = new File(Constants.getInstallDir(context) + "/conf/server.xml"); byte[] buf = new byte[(int) confFile.length()]; FileInputStream fis = null; FileOutputStream fos = null; String content = null; try { fis = new FileInputStream(confFile); fis.read(buf); fis.close(); content = new String(buf); } catch (IOException e) { e.printStackTrace(); if(fis != null) { try { fis.close(); } catch (IOException e1) { } } return false; } //content = content.replaceAll("(<" + setting + ">).*?(</" + setting + ">)", "$1" + value + "$2"); String regex = "(<" + setting + ">).*?(</" + setting + ">)"; content = Pattern.compile(regex, Pattern.DOTALL).matcher(content).replaceAll("$1" + value + "$2"); try { fos = new FileOutputStream(confFile); fos.write(content.getBytes()); fos.close(); } catch (IOException e) { e.printStackTrace(); if(fos != null) { try { fos.close(); } catch (IOException e1) { } } return false; } return true; } }