mirror of
				https://github.com/gitbucket/gitbucket.git
				synced 2025-10-31 10:36:05 +01:00 
			
		
		
		
	executable: Allow saving sessions to disk (#2474)
This commit allows saving sessions to disk in ~/.gitbucket/sessions or wherever the gitbucket home is so that logins and other session data persist between restarts of the program. Usage: java -jar gitbucket.war --save_sessions
This commit is contained in:
		| @@ -4,6 +4,10 @@ import org.eclipse.jetty.server.Handler; | ||||
| import org.eclipse.jetty.server.HttpConnectionFactory; | ||||
| import org.eclipse.jetty.server.Server; | ||||
| import org.eclipse.jetty.server.handler.StatisticsHandler; | ||||
| import org.eclipse.jetty.server.session.DefaultSessionCache; | ||||
| import org.eclipse.jetty.server.session.FileSessionDataStore; | ||||
| import org.eclipse.jetty.server.session.SessionCache; | ||||
| import org.eclipse.jetty.server.session.SessionHandler; | ||||
| import org.eclipse.jetty.webapp.WebAppContext; | ||||
|  | ||||
| import java.io.File; | ||||
| @@ -21,6 +25,7 @@ public class JettyLauncher { | ||||
|         String contextPath = "/"; | ||||
|         String tmpDirPath=""; | ||||
|         boolean forceHttps = false; | ||||
|         boolean saveSessions = false; | ||||
|  | ||||
|         host = getEnvironmentVariable("gitbucket.host"); | ||||
|         port = getEnvironmentVariable("gitbucket.port"); | ||||
| @@ -28,6 +33,9 @@ public class JettyLauncher { | ||||
|         tmpDirPath = getEnvironmentVariable("gitbucket.tempDir"); | ||||
|  | ||||
|         for(String arg: args) { | ||||
|             if(arg.equals("--save_sessions")) { | ||||
|                 saveSessions = true; | ||||
|             } | ||||
|             if(arg.startsWith("--") && arg.contains("=")) { | ||||
|                 String[] dim = arg.split("="); | ||||
|                 if(dim.length >= 2) { | ||||
| @@ -87,6 +95,19 @@ public class JettyLauncher { | ||||
|  | ||||
|         WebAppContext context = new WebAppContext(); | ||||
|  | ||||
|         if(saveSessions) { | ||||
|             File sessDir = new File(getGitBucketHome(), "sessions"); | ||||
|             if(!sessDir.exists()){ | ||||
|                 sessDir.mkdirs(); | ||||
|             } | ||||
|             SessionHandler sessions = context.getSessionHandler(); | ||||
|             SessionCache cache = new DefaultSessionCache(sessions); | ||||
|             FileSessionDataStore fsds = new FileSessionDataStore(); | ||||
|             fsds.setStoreDir(sessDir); | ||||
|             cache.setSessionDataStore(fsds); | ||||
|             sessions.setSessionCache(cache); | ||||
|         } | ||||
|  | ||||
|         File tmpDir; | ||||
|         if(tmpDirPath == null || tmpDirPath.equals("")){ | ||||
|             tmpDir = new File(getGitBucketHome(), "tmp"); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user