summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2013-01-15 22:17:08 -0500
committerJames Moger <james.moger@gitblit.com>2013-01-15 22:41:20 -0500
commit93d506581010cdb6308ae3d282a8bc513966d70d (patch)
treea0b11035f4feb010a3e68f92c22ff4d74b062ff3 /src/com
parent657a6596eb95635abd29c0a21befffc43da49d09 (diff)
downloadgitblit-93d506581010cdb6308ae3d282a8bc513966d70d.tar.gz
gitblit-93d506581010cdb6308ae3d282a8bc513966d70d.zip
Support --baseFolder parameter and small data reorganization
Diffstat (limited to 'src/com')
-rw-r--r--src/com/gitblit/Constants.java8
-rw-r--r--src/com/gitblit/FederationClient.java2
-rw-r--r--src/com/gitblit/GitBlit.java111
-rw-r--r--src/com/gitblit/GitBlitServer.java54
-rw-r--r--src/com/gitblit/GitServlet.java2
-rw-r--r--src/com/gitblit/GitblitUserService.java2
-rw-r--r--src/com/gitblit/LdapUserService.java2
-rw-r--r--src/com/gitblit/RedmineUserService.java2
-rw-r--r--src/com/gitblit/RobotsTxtServlet.java10
-rw-r--r--src/com/gitblit/authority/GitblitAuthority.java38
-rw-r--r--src/com/gitblit/build/Build.java2
-rw-r--r--src/com/gitblit/build/BuildWebXml.java64
-rw-r--r--src/com/gitblit/utils/FileUtils.java15
-rw-r--r--src/com/gitblit/wicket/pages/ChangePasswordPage.java2
-rw-r--r--src/com/gitblit/wicket/pages/EditUserPage.java2
-rw-r--r--src/com/gitblit/wicket/pages/RepositoriesPage.java2
16 files changed, 198 insertions, 120 deletions
diff --git a/src/com/gitblit/Constants.java b/src/com/gitblit/Constants.java
index 4dd14712..ca551184 100644
--- a/src/com/gitblit/Constants.java
+++ b/src/com/gitblit/Constants.java
@@ -90,10 +90,16 @@ public class Constants {
public static final String R_GITBLIT = "refs/gitblit/";
+ public static final String baseFolder = "baseFolder";
+
+ public static final String baseFolder$ = "${" + baseFolder + "}";
+
+ public static final String contextFolder$ = "${contextFolder}";
+
public static String getGitBlitVersion() {
return NAME + " v" + VERSION;
}
-
+
/**
* Enumeration representing the four access restriction levels.
*/
diff --git a/src/com/gitblit/FederationClient.java b/src/com/gitblit/FederationClient.java
index daa9bfbf..f6661394 100644
--- a/src/com/gitblit/FederationClient.java
+++ b/src/com/gitblit/FederationClient.java
@@ -76,7 +76,7 @@ public class FederationClient {
}
// configure the Gitblit singleton for minimal, non-server operation
- GitBlit.self().configureContext(settings, false);
+ GitBlit.self().configureContext(settings, null, false);
FederationPullExecutor executor = new FederationPullExecutor(registrations, params.isDaemon);
executor.run();
if (!params.isDaemon) {
diff --git a/src/com/gitblit/GitBlit.java b/src/com/gitblit/GitBlit.java
index e3ecebd8..7f06b35c 100644
--- a/src/com/gitblit/GitBlit.java
+++ b/src/com/gitblit/GitBlit.java
@@ -163,6 +163,8 @@ public class GitBlit implements ServletContextListener {
private final ObjectCache<String> projectRepositoriesMarkdownCache = new ObjectCache<String>();
private ServletContext servletContext;
+
+ private File baseFolder;
private File repositoriesFolder;
@@ -394,12 +396,8 @@ public class GitBlit implements ServletContextListener {
* @return the file
*/
public static File getFileOrFolder(String fileOrFolder) {
- String openShift = System.getenv("OPENSHIFT_DATA_DIR");
- if (!StringUtils.isEmpty(openShift)) {
- // running on RedHat OpenShift
- return new File(openShift, fileOrFolder);
- }
- return new File(fileOrFolder);
+ return com.gitblit.utils.FileUtils.resolveParameter(Constants.baseFolder$,
+ self().baseFolder, fileOrFolder);
}
/**
@@ -409,7 +407,7 @@ public class GitBlit implements ServletContextListener {
* @return the repositories folder path
*/
public static File getRepositoriesFolder() {
- return getFileOrFolder(Keys.git.repositoriesFolder, "git");
+ return getFileOrFolder(Keys.git.repositoriesFolder, "${baseFolder}/git");
}
/**
@@ -419,7 +417,7 @@ public class GitBlit implements ServletContextListener {
* @return the proposals folder path
*/
public static File getProposalsFolder() {
- return getFileOrFolder(Keys.federation.proposalsFolder, "proposals");
+ return getFileOrFolder(Keys.federation.proposalsFolder, "${baseFolder}/proposals");
}
/**
@@ -429,9 +427,9 @@ public class GitBlit implements ServletContextListener {
* @return the Groovy scripts folder path
*/
public static File getGroovyScriptsFolder() {
- return getFileOrFolder(Keys.groovy.scriptsFolder, "groovy");
+ return getFileOrFolder(Keys.groovy.scriptsFolder, "${baseFolder}/groovy");
}
-
+
/**
* Updates the list of server settings.
*
@@ -1652,7 +1650,7 @@ public class GitBlit implements ServletContextListener {
}
RepositoryModel model = new RepositoryModel();
model.isBare = r.isBare();
- File basePath = getFileOrFolder(Keys.git.repositoriesFolder, "git");
+ File basePath = getFileOrFolder(Keys.git.repositoriesFolder, "${baseFolder}/git");
if (model.isBare) {
model.name = com.gitblit.utils.FileUtils.getRelativePath(basePath, r.getDirectory());
} else {
@@ -3043,12 +3041,15 @@ public class GitBlit implements ServletContextListener {
*
* @param settings
*/
- public void configureContext(IStoredSettings settings, boolean startFederation) {
- logger.info("Reading configuration from " + settings.toString());
+ public void configureContext(IStoredSettings settings, File folder, boolean startFederation) {
this.settings = settings;
+ this.baseFolder = folder;
repositoriesFolder = getRepositoriesFolder();
- logger.info("Git repositories folder " + repositoriesFolder.getAbsolutePath());
+
+ logger.info("Gitblit base folder = " + folder.getAbsolutePath());
+ logger.info("Git repositories folder = " + repositoriesFolder.getAbsolutePath());
+ logger.info("Gitblit settings = " + settings.toString());
// prepare service executors
mailExecutor = new MailExecutor(settings);
@@ -3070,7 +3071,7 @@ public class GitBlit implements ServletContextListener {
serverStatus = new ServerStatus(isGO());
if (this.userService == null) {
- String realm = settings.getString(Keys.realm.userService, "users.properties");
+ String realm = settings.getString(Keys.realm.userService, "${baseFolder}/users.properties");
IUserService loginService = null;
try {
// check to see if this "file" is a login service class
@@ -3083,7 +3084,7 @@ public class GitBlit implements ServletContextListener {
}
// load and cache the project metadata
- projectConfigs = new FileBasedConfig(getFileOrFolder(Keys.web.projectsFile, "projects.conf"), FS.detect());
+ projectConfigs = new FileBasedConfig(getFileOrFolder(Keys.web.projectsFile, "${baseFolder}/projects.conf"), FS.detect());
getProjectConfigs();
// schedule mail engine
@@ -3198,39 +3199,63 @@ public class GitBlit implements ServletContextListener {
public void contextInitialized(ServletContextEvent contextEvent, InputStream referencePropertiesInputStream) {
servletContext = contextEvent.getServletContext();
if (settings == null) {
- // Gitblit WAR is running in a servlet container
+ // Gitblit is running in a servlet container
ServletContext context = contextEvent.getServletContext();
WebXmlSettings webxmlSettings = new WebXmlSettings(context);
-
- // gitblit.properties file located within the webapp
- String webProps = context.getRealPath("/WEB-INF/gitblit.properties");
- if (!StringUtils.isEmpty(webProps)) {
- File overrideFile = new File(webProps);
- webxmlSettings.applyOverrides(overrideFile);
- }
+ File contextFolder = new File(context.getRealPath("/"));
+ String openShift = System.getenv("OPENSHIFT_DATA_DIR");
- // gitblit.properties file located outside the deployed war
- // folder lie, for example, on RedHat OpenShift.
- File overrideFile = getFileOrFolder("gitblit.properties");
- if (!overrideFile.getPath().equals("gitblit.properties")) {
+ if (!StringUtils.isEmpty(openShift)) {
+ // Gitblit is running in OpenShift/JBoss
+ File base = new File(openShift);
+
+ // gitblit.properties setting overrides
+ File overrideFile = new File(base, "gitblit.properties");
webxmlSettings.applyOverrides(overrideFile);
- }
-
- configureContext(webxmlSettings, true);
-
- // Copy the included scripts to the configured groovy folder
- File localScripts = getFileOrFolder(Keys.groovy.scriptsFolder, "groovy");
- if (!localScripts.exists()) {
- File includedScripts = new File(context.getRealPath("/WEB-INF/groovy"));
- if (!includedScripts.equals(localScripts)) {
- try {
- com.gitblit.utils.FileUtils.copy(localScripts, includedScripts.listFiles());
- } catch (IOException e) {
- logger.error(MessageFormat.format(
- "Failed to copy included Groovy scripts from {0} to {1}",
- includedScripts, localScripts));
+
+ // Copy the included scripts to the configured groovy folder
+ File localScripts = new File(base, webxmlSettings.getString(Keys.groovy.scriptsFolder, "groovy"));
+ if (!localScripts.exists()) {
+ File warScripts = new File(contextFolder, "/WEB-INF/data/groovy");
+ if (!warScripts.equals(localScripts)) {
+ try {
+ com.gitblit.utils.FileUtils.copy(localScripts, warScripts.listFiles());
+ } catch (IOException e) {
+ logger.error(MessageFormat.format(
+ "Failed to copy included Groovy scripts from {0} to {1}",
+ warScripts, localScripts));
+ }
}
}
+
+ // configure context using the web.xml
+ configureContext(webxmlSettings, base, true);
+ } else {
+ // Gitblit is running in a standard servlet container
+ logger.info("WAR contextFolder is " + contextFolder.getAbsolutePath());
+
+ String path = webxmlSettings.getString(Constants.baseFolder, Constants.contextFolder$ + "/WEB-INF/data");
+ File base = com.gitblit.utils.FileUtils.resolveParameter(Constants.contextFolder$, contextFolder, path);
+ base.mkdirs();
+
+ // try to copy the data folder contents to the baseFolder
+ File localSettings = new File(base, "gitblit.properties");
+ if (!localSettings.exists()) {
+ File contextData = new File(contextFolder, "/WEB-INF/data");
+ if (!base.equals(contextData)) {
+ try {
+ com.gitblit.utils.FileUtils.copy(base, contextData.listFiles());
+ } catch (IOException e) {
+ logger.error(MessageFormat.format(
+ "Failed to copy included data from {0} to {1}",
+ contextData, base));
+ }
+ }
+ }
+
+ // delegate all config to baseFolder/gitblit.properties file
+ FileSettings settings = new FileSettings(localSettings.getAbsolutePath());
+ configureContext(settings, base, true);
}
}
diff --git a/src/com/gitblit/GitBlitServer.java b/src/com/gitblit/GitBlitServer.java
index 4c0e89f6..feddb93f 100644
--- a/src/com/gitblit/GitBlitServer.java
+++ b/src/com/gitblit/GitBlitServer.java
@@ -84,10 +84,29 @@ public class GitBlitServer {
private static Logger logger;
public static void main(String... args) {
+ // filter out the baseFolder parameter
+ List<String> filtered = new ArrayList<String>();
+ String folder = "data";
+ for (int i = 0; i< args.length; i++) {
+ String arg = args[i];
+ if (arg.equals("--baseFolder")) {
+ if (i + 1 == args.length) {
+ System.out.println("Invalid --baseFolder parameter!");
+ System.exit(-1);
+ } else if (args[i + 1] != ".") {
+ folder = args[i + 1];
+ }
+ i = i + 1;
+ } else {
+ filtered.add(arg);
+ }
+ }
+
+ Params.baseFolder = folder;
Params params = new Params();
JCommander jc = new JCommander(params);
try {
- jc.parse(args);
+ jc.parse(filtered.toArray(new String[filtered.size()]));
if (params.help) {
usage(jc, null);
}
@@ -147,13 +166,13 @@ public class GitBlitServer {
* Start Gitblit GO.
*/
private static void start(Params params) {
- FileSettings settings = Params.FILESETTINGS;
+ final File baseFolder = new File(Params.baseFolder).getAbsoluteFile();
+ FileSettings settings = params.FILESETTINGS;
if (!StringUtils.isEmpty(params.settingsfile)) {
if (new File(params.settingsfile).exists()) {
settings = new FileSettings(params.settingsfile);
}
}
-
logger = LoggerFactory.getLogger(GitBlitServer.class);
logger.info(Constants.BORDER);
logger.info(" _____ _ _ _ _ _ _");
@@ -197,11 +216,10 @@ public class GitBlitServer {
// conditionally configure the https connector
if (params.securePort > 0) {
- final File folder = new File(System.getProperty("user.dir"));
- File certificatesConf = new File(folder, X509Utils.CA_CONFIG);
- File serverKeyStore = new File(folder, X509Utils.SERVER_KEY_STORE);
- File serverTrustStore = new File(folder, X509Utils.SERVER_TRUST_STORE);
- File caRevocationList = new File(folder, X509Utils.CA_REVOCATION_LIST);
+ File certificatesConf = new File(baseFolder, X509Utils.CA_CONFIG);
+ File serverKeyStore = new File(baseFolder, X509Utils.SERVER_KEY_STORE);
+ File serverTrustStore = new File(baseFolder, X509Utils.SERVER_TRUST_STORE);
+ File caRevocationList = new File(baseFolder, X509Utils.CA_REVOCATION_LIST);
// generate CA & web certificates, create certificate stores
X509Metadata metadata = new X509Metadata("localhost", params.storePassword);
@@ -218,12 +236,12 @@ public class GitBlitServer {
}
metadata.notAfter = new Date(System.currentTimeMillis() + 10*TimeUtils.ONEYEAR);
- X509Utils.prepareX509Infrastructure(metadata, folder, new X509Log() {
+ X509Utils.prepareX509Infrastructure(metadata, baseFolder, new X509Log() {
@Override
public void log(String message) {
BufferedWriter writer = null;
try {
- writer = new BufferedWriter(new FileWriter(new File(folder, X509Utils.CERTS + File.separator + "log.txt"), true));
+ writer = new BufferedWriter(new FileWriter(new File(baseFolder, X509Utils.CERTS + File.separator + "log.txt"), true));
writer.write(MessageFormat.format("{0,date,yyyy-MM-dd HH:mm}: {1}", new Date(), message));
writer.newLine();
writer.flush();
@@ -277,7 +295,7 @@ public class GitBlitServer {
// tempDir is where the embedded Gitblit web application is expanded and
// where Jetty creates any necessary temporary files
- File tempDir = new File(params.temp);
+ File tempDir = com.gitblit.utils.FileUtils.resolveParameter(Constants.baseFolder$, baseFolder, params.temp);
if (tempDir.exists()) {
try {
FileUtils.delete(tempDir, FileUtils.RECURSIVE | FileUtils.RETRY);
@@ -361,7 +379,7 @@ public class GitBlitServer {
// Setup the GitBlit context
GitBlit gitblit = GitBlit.self();
- gitblit.configureContext(settings, true);
+ gitblit.configureContext(settings, baseFolder, true);
rootContext.addEventListener(gitblit);
try {
@@ -532,7 +550,9 @@ public class GitBlitServer {
@Parameters(separators = " ")
private static class Params {
- private static final FileSettings FILESETTINGS = new FileSettings(Constants.PROPERTIES_FILE);
+ public static String baseFolder;
+
+ private final FileSettings FILESETTINGS = new FileSettings(new File(baseFolder, Constants.PROPERTIES_FILE).getAbsolutePath());
/*
* Server parameters
@@ -551,14 +571,14 @@ public class GitBlitServer {
*/
@Parameter(names = { "--repositoriesFolder" }, description = "Git Repositories Folder")
public String repositoriesFolder = FILESETTINGS.getString(Keys.git.repositoriesFolder,
- "repos");
+ "git");
/*
* Authentication Parameters
*/
@Parameter(names = { "--userService" }, description = "Authentication and Authorization Service (filename or fully qualified classname)")
public String userService = FILESETTINGS.getString(Keys.realm.userService,
- "users.properties");
+ "users.conf");
/*
* JETTY Parameters
@@ -567,10 +587,10 @@ public class GitBlitServer {
public Boolean useNIO = FILESETTINGS.getBoolean(Keys.server.useNio, true);
@Parameter(names = "--httpPort", description = "HTTP port for to serve. (port <= 0 will disable this connector)")
- public Integer port = FILESETTINGS.getInteger(Keys.server.httpPort, 80);
+ public Integer port = FILESETTINGS.getInteger(Keys.server.httpPort, 0);
@Parameter(names = "--httpsPort", description = "HTTPS port to serve. (port <= 0 will disable this connector)")
- public Integer securePort = FILESETTINGS.getInteger(Keys.server.httpsPort, 443);
+ public Integer securePort = FILESETTINGS.getInteger(Keys.server.httpsPort, 8443);
@Parameter(names = "--ajpPort", description = "AJP port to serve. (port <= 0 will disable this connector)")
public Integer ajpPort = FILESETTINGS.getInteger(Keys.server.ajpPort, 0);
diff --git a/src/com/gitblit/GitServlet.java b/src/com/gitblit/GitServlet.java
index ff1ea7e9..77be963f 100644
--- a/src/com/gitblit/GitServlet.java
+++ b/src/com/gitblit/GitServlet.java
@@ -86,7 +86,7 @@ public class GitServlet extends org.eclipse.jgit.http.server.GitServlet {
groovyDir = GitBlit.getGroovyScriptsFolder();
try {
// set Grape root
- File grapeRoot = new File(GitBlit.getString(Keys.groovy.grapeFolder, "groovy/grape")).getAbsoluteFile();
+ File grapeRoot = GitBlit.getFileOrFolder(Keys.groovy.grapeFolder, "${baseFolder}/groovy/grape").getAbsoluteFile();
grapeRoot.mkdirs();
System.setProperty("grape.root", grapeRoot.getAbsolutePath());
diff --git a/src/com/gitblit/GitblitUserService.java b/src/com/gitblit/GitblitUserService.java
index db450cfc..37f22b01 100644
--- a/src/com/gitblit/GitblitUserService.java
+++ b/src/com/gitblit/GitblitUserService.java
@@ -60,7 +60,7 @@ public class GitblitUserService implements IUserService {
@Override
public void setup(IStoredSettings settings) {
- File realmFile = GitBlit.getFileOrFolder(Keys.realm.userService, "users.conf");
+ File realmFile = GitBlit.getFileOrFolder(Keys.realm.userService, "${baseFolder}/users.conf");
serviceImpl = createUserService(realmFile);
logger.info("GUS delegating to " + serviceImpl.toString());
}
diff --git a/src/com/gitblit/LdapUserService.java b/src/com/gitblit/LdapUserService.java
index 3c032b56..595c6589 100644
--- a/src/com/gitblit/LdapUserService.java
+++ b/src/com/gitblit/LdapUserService.java
@@ -61,7 +61,7 @@ public class LdapUserService extends GitblitUserService {
@Override
public void setup(IStoredSettings settings) {
this.settings = settings;
- String file = settings.getString(Keys.realm.ldap.backingUserService, "users.conf");
+ String file = settings.getString(Keys.realm.ldap.backingUserService, "${baseFolder}/users.conf");
File realmFile = GitBlit.getFileOrFolder(file);
serviceImpl = createUserService(realmFile);
diff --git a/src/com/gitblit/RedmineUserService.java b/src/com/gitblit/RedmineUserService.java
index 84194d5b..9d571e37 100644
--- a/src/com/gitblit/RedmineUserService.java
+++ b/src/com/gitblit/RedmineUserService.java
@@ -47,7 +47,7 @@ public class RedmineUserService extends GitblitUserService {
public void setup(IStoredSettings settings) {
this.settings = settings;
- String file = settings.getString(Keys.realm.redmine.backingUserService, "users.conf");
+ String file = settings.getString(Keys.realm.redmine.backingUserService, "${baseFolder}/users.conf");
File realmFile = GitBlit.getFileOrFolder(file);
serviceImpl = createUserService(realmFile);
diff --git a/src/com/gitblit/RobotsTxtServlet.java b/src/com/gitblit/RobotsTxtServlet.java
index c142be0d..d66ebf43 100644
--- a/src/com/gitblit/RobotsTxtServlet.java
+++ b/src/com/gitblit/RobotsTxtServlet.java
@@ -24,7 +24,6 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.gitblit.utils.FileUtils;
-import com.gitblit.utils.StringUtils;
/**
* Handles requests for robots.txt
@@ -55,13 +54,10 @@ public class RobotsTxtServlet extends HttpServlet {
protected void processRequest(javax.servlet.http.HttpServletRequest request,
javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException,
java.io.IOException {
- String robotstxt = GitBlit.getString(Keys.web.robots.txt, null);
+ File file = GitBlit.getFileOrFolder(Keys.web.robots.txt, null);
String content = "";
- if (!StringUtils.isEmpty(robotstxt)) {
- File robotsfile = new File(robotstxt);
- if (robotsfile.exists()) {
- content = FileUtils.readContent(robotsfile, "\n");
- }
+ if (file.exists()) {
+ content = FileUtils.readContent(file, "\n");
}
response.getWriter().append(content);
}
diff --git a/src/com/gitblit/authority/GitblitAuthority.java b/src/com/gitblit/authority/GitblitAuthority.java
index 909831fe..c3d81848 100644
--- a/src/com/gitblit/authority/GitblitAuthority.java
+++ b/src/com/gitblit/authority/GitblitAuthority.java
@@ -138,6 +138,21 @@ public class GitblitAuthority extends JFrame implements X509Log {
private JButton newSSLCertificate;
public static void main(String... args) {
+ // filter out the baseFolder parameter
+ String folder = "data";
+ for (int i = 0; i< args.length; i++) {
+ String arg = args[i];
+ if (arg.equals("--baseFolder")) {
+ if (i + 1 == args.length) {
+ System.out.println("Invalid --baseFolder parameter!");
+ System.exit(-1);
+ } else if (args[i + 1] != ".") {
+ folder = args[i+1];
+ }
+ break;
+ }
+ }
+ final String baseFolder = folder;
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
@@ -145,7 +160,7 @@ public class GitblitAuthority extends JFrame implements X509Log {
} catch (Exception e) {
}
GitblitAuthority authority = new GitblitAuthority();
- authority.initialize();
+ authority.initialize(baseFolder);
authority.setLocationRelativeTo(null);
authority.setVisible(true);
}
@@ -158,7 +173,7 @@ public class GitblitAuthority extends JFrame implements X509Log {
defaultSorter = new TableRowSorter<UserCertificateTableModel>(tableModel);
}
- public void initialize() {
+ public void initialize(String baseFolder) {
setIconImage(new ImageIcon(getClass().getResource("/gitblt-favicon.png")).getImage());
setTitle("Gitblit Certificate Authority v" + Constants.VERSION + " (" + Constants.VERSION_DATE + ")");
setContentPane(getUI());
@@ -174,10 +189,10 @@ public class GitblitAuthority extends JFrame implements X509Log {
}
});
- setSizeAndPosition();
-
- File folder = new File(System.getProperty("user.dir"));
+ File folder = new File(baseFolder).getAbsoluteFile();
load(folder);
+
+ setSizeAndPosition();
}
private void setSizeAndPosition() {
@@ -230,7 +245,7 @@ public class GitblitAuthority extends JFrame implements X509Log {
}
private StoredConfig getConfig() throws IOException, ConfigInvalidException {
- File configFile = new File(System.getProperty("user.dir"), X509Utils.CA_CONFIG);
+ File configFile = new File(folder, X509Utils.CA_CONFIG);
FileBasedConfig config = new FileBasedConfig(configFile, FS.detect());
config.load();
return config;
@@ -243,30 +258,31 @@ public class GitblitAuthority extends JFrame implements X509Log {
}
gitblitSettings = new FileSettings(file.getAbsolutePath());
mail = new MailExecutor(gitblitSettings);
- String us = gitblitSettings.getString(Keys.realm.userService, "users.conf");
+ String us = gitblitSettings.getString(Keys.realm.userService, "${baseFolder}/users.conf");
String ext = us.substring(us.lastIndexOf(".") + 1).toLowerCase();
IUserService service = null;
if (!ext.equals("conf") && !ext.equals("properties")) {
if (us.equals("com.gitblit.LdapUserService")) {
- us = gitblitSettings.getString(Keys.realm.ldap.backingUserService, "users.conf");
+ us = gitblitSettings.getString(Keys.realm.ldap.backingUserService, "${baseFolder}/users.conf");
} else if (us.equals("com.gitblit.LdapUserService")) {
- us = gitblitSettings.getString(Keys.realm.redmine.backingUserService, "users.conf");
+ us = gitblitSettings.getString(Keys.realm.redmine.backingUserService, "${baseFolder}/users.conf");
}
}
if (us.endsWith(".conf")) {
- service = new ConfigUserService(new File(us));
+ service = new ConfigUserService(FileUtils.resolveParameter(Constants.baseFolder$, folder, us));
} else {
throw new RuntimeException("Unsupported user service: " + us);
}
- service = new ConfigUserService(new File(us));
+ service = new ConfigUserService(FileUtils.resolveParameter(Constants.baseFolder$, folder, us));
return service;
}
private void load(File folder) {
this.folder = folder;
this.userService = loadUsers(folder);
+ System.out.println(Constants.baseFolder$ + " set to " + folder);
if (userService == null) {
JOptionPane.showMessageDialog(this, MessageFormat.format("Sorry, {0} doesn't look like a Gitblit GO installation.", folder));
} else {
diff --git a/src/com/gitblit/build/Build.java b/src/com/gitblit/build/Build.java
index 336c45de..ecc072af 100644
--- a/src/com/gitblit/build/Build.java
+++ b/src/com/gitblit/build/Build.java
@@ -217,7 +217,7 @@ public class Build {
Properties properties = new Properties();
FileInputStream is = null;
try {
- is = new FileInputStream(Constants.PROPERTIES_FILE);
+ is = new FileInputStream(new File("distrib", Constants.PROPERTIES_FILE));
properties.load(is);
} catch (Throwable t) {
t.printStackTrace();
diff --git a/src/com/gitblit/build/BuildWebXml.java b/src/com/gitblit/build/BuildWebXml.java
index 4fcc6e97..49a12ab2 100644
--- a/src/com/gitblit/build/BuildWebXml.java
+++ b/src/com/gitblit/build/BuildWebXml.java
@@ -60,44 +60,44 @@ public class BuildWebXml {
}
private static void generateWebXml(Params params) throws Exception {
+ StringBuilder parameters = new StringBuilder();
// Read the current Gitblit properties
- BufferedReader propertiesReader = new BufferedReader(new FileReader(new File(
- params.propertiesFile)));
-
- Vector<Setting> settings = new Vector<Setting>();
- List<String> comments = new ArrayList<String>();
- String line = null;
- while ((line = propertiesReader.readLine()) != null) {
- if (line.length() == 0) {
- comments.clear();
- } else {
- if (line.charAt(0) == '#') {
- if (line.length() > 1) {
- comments.add(line.substring(1).trim());
- }
+ if (params.propertiesFile != null) {
+ BufferedReader propertiesReader = new BufferedReader(new FileReader(new File(
+ params.propertiesFile)));
+
+ Vector<Setting> settings = new Vector<Setting>();
+ List<String> comments = new ArrayList<String>();
+ String line = null;
+ while ((line = propertiesReader.readLine()) != null) {
+ if (line.length() == 0) {
+ comments.clear();
} else {
- String[] kvp = line.split("=", 2);
- String key = kvp[0].trim();
- if (!skipKey(key)) {
- Setting s = new Setting(key, kvp[1].trim(), comments);
- settings.add(s);
+ if (line.charAt(0) == '#') {
+ if (line.length() > 1) {
+ comments.add(line.substring(1).trim());
+ }
+ } else {
+ String[] kvp = line.split("=", 2);
+ String key = kvp[0].trim();
+ if (!skipKey(key)) {
+ Setting s = new Setting(key, kvp[1].trim(), comments);
+ settings.add(s);
+ }
+ comments.clear();
}
- comments.clear();
}
}
- }
- propertiesReader.close();
+ propertiesReader.close();
- StringBuilder parameters = new StringBuilder();
-
- for (Setting setting : settings) {
- for (String comment : setting.comments) {
- parameters.append(MessageFormat.format(COMMENT_PATTERN, comment));
+ for (Setting setting : settings) {
+ for (String comment : setting.comments) {
+ parameters.append(MessageFormat.format(COMMENT_PATTERN, comment));
+ }
+ parameters.append(MessageFormat.format(PARAM_PATTERN, setting.name,
+ StringUtils.escapeForHtml(setting.value, false)));
}
- parameters.append(MessageFormat.format(PARAM_PATTERN, setting.name,
- StringUtils.escapeForHtml(setting.value, false)));
}
-
// Read the prototype web.xml file
File webxml = new File(params.sourceFile);
char[] buffer = new char[(int) webxml.length()];
@@ -150,11 +150,11 @@ public class BuildWebXml {
@Parameter(names = { "--sourceFile" }, description = "Source web.xml file", required = true)
public String sourceFile;
- @Parameter(names = { "--propertiesFile" }, description = "Properties settings file", required = true)
+ @Parameter(names = { "--propertiesFile" }, description = "Properties settings file")
public String propertiesFile;
@Parameter(names = { "--destinationFile" }, description = "Destination web.xml file", required = true)
public String destinationFile;
-
+
}
}
diff --git a/src/com/gitblit/utils/FileUtils.java b/src/com/gitblit/utils/FileUtils.java
index 08348670..a21b5128 100644
--- a/src/com/gitblit/utils/FileUtils.java
+++ b/src/com/gitblit/utils/FileUtils.java
@@ -274,4 +274,19 @@ public class FileUtils {
return path.getAbsoluteFile();
}
}
+
+ public static File resolveParameter(String parameter, File aFolder, String path) {
+ if (aFolder == null) {
+ // strip any parameter reference
+ path = path.replace(parameter, "").trim();
+ if (path.length() > 0 && path.charAt(0) == '/') {
+ // strip leading /
+ path = path.substring(1);
+ }
+ } else if (path.contains(parameter)) {
+ // replace parameter with path
+ path = path.replace(parameter, aFolder.getAbsolutePath());
+ }
+ return new File(path);
+ }
}
diff --git a/src/com/gitblit/wicket/pages/ChangePasswordPage.java b/src/com/gitblit/wicket/pages/ChangePasswordPage.java
index 3741853f..c4014208 100644
--- a/src/com/gitblit/wicket/pages/ChangePasswordPage.java
+++ b/src/com/gitblit/wicket/pages/ChangePasswordPage.java
@@ -54,7 +54,7 @@ public class ChangePasswordPage extends RootSubPage {
UserModel user = GitBlitWebSession.get().getUser();
if (!GitBlit.self().supportsCredentialChanges(user)) {
error(MessageFormat.format(getString("gb.userServiceDoesNotPermitPasswordChanges"),
- GitBlit.getString(Keys.realm.userService, "users.conf")), true);
+ GitBlit.getString(Keys.realm.userService, "${baseFolder}/users.conf")), true);
}
setupPage(getString("gb.changePassword"), user.username);
diff --git a/src/com/gitblit/wicket/pages/EditUserPage.java b/src/com/gitblit/wicket/pages/EditUserPage.java
index 4939e97c..c060f237 100644
--- a/src/com/gitblit/wicket/pages/EditUserPage.java
+++ b/src/com/gitblit/wicket/pages/EditUserPage.java
@@ -57,7 +57,7 @@ public class EditUserPage extends RootSubPage {
super();
if (!GitBlit.self().supportsAddUser()) {
error(MessageFormat.format(getString("gb.userServiceDoesNotPermitAddUser"),
- GitBlit.getString(Keys.realm.userService, "users.conf")), true);
+ GitBlit.getString(Keys.realm.userService, "${baseFolder}/users.conf")), true);
}
isCreate = true;
setupPage(new UserModel(""));
diff --git a/src/com/gitblit/wicket/pages/RepositoriesPage.java b/src/com/gitblit/wicket/pages/RepositoriesPage.java
index 4816d45c..4bce77f5 100644
--- a/src/com/gitblit/wicket/pages/RepositoriesPage.java
+++ b/src/com/gitblit/wicket/pages/RepositoriesPage.java
@@ -119,7 +119,7 @@ public class RepositoriesPage extends RootPage {
} else {
// Read user-supplied message
if (!StringUtils.isEmpty(messageSource)) {
- File file = new File(messageSource);
+ File file = GitBlit.getFileOrFolder(messageSource);
if (file.exists()) {
try {
FileInputStream fis = new FileInputStream(file);