From 284a7bd54e9cddb0eabcd77148ee64639010d2ee Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Wed, 26 Oct 2011 17:11:12 -0400 Subject: [PATCH] Return management-level settings if web.enableRpcAdministration=false --- src/com/gitblit/FileSettings.java | 22 ++++++++++++++++++++++ 1 files changed, 22 insertions(+), 0 deletions(-) diff --git a/src/com/gitblit/FileSettings.java b/src/com/gitblit/FileSettings.java index 56aac8b..6110058 100644 --- a/src/com/gitblit/FileSettings.java +++ b/src/com/gitblit/FileSettings.java @@ -18,7 +18,11 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; +import java.util.Map; import java.util.Properties; +import java.util.regex.Pattern; + +import com.gitblit.utils.FileUtils; /** * Dynamically loads and reloads a properties file by keeping track of the last @@ -75,6 +79,24 @@ } /** + * Updates the specified settings in the settings file. + */ + public synchronized boolean saveSettings(Map<String, String> settings) { + String content = FileUtils.readContent(propertiesFile, "\n"); + for (Map.Entry<String, String> setting:settings.entrySet()) { + String regex = "(?m)^(" + regExEscape(setting.getKey()) + "\\s*+=\\s*+)" + + "(?:[^\r\n\\\\]++|\\\\(?:\r?\n|\r|.))*+$"; + content = content.replaceAll(regex, setting.getKey() + " = " + setting.getValue()); + } + FileUtils.writeContent(propertiesFile, content); + return true; + } + + private String regExEscape(String input) { + return input.replace(".", "\\."); + } + + /** * @return the last modification date of the properties file */ protected long lastModified() { -- Gitblit v1.9.1