mirror of
				https://github.com/gitbucket/gitbucket.git
				synced 2025-10-31 10:36:05 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			118 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| import org.eclipse.jetty.server.Server;
 | |
| import org.eclipse.jetty.webapp.WebAppContext;
 | |
| 
 | |
| import java.io.File;
 | |
| import java.net.URL;
 | |
| import java.net.InetSocketAddress;
 | |
| import java.security.ProtectionDomain;
 | |
| 
 | |
| public class JettyLauncher {
 | |
|     public static void main(String[] args) throws Exception {
 | |
|         String host = null;
 | |
|         int port = 8080;
 | |
|         InetSocketAddress address = null;
 | |
|         String contextPath = "/";
 | |
|         String tmpDirPath="";
 | |
|         boolean forceHttps = false;
 | |
| 
 | |
|         for(String arg: args) {
 | |
|             if(arg.startsWith("--") && arg.contains("=")) {
 | |
|                 String[] dim = arg.split("=");
 | |
|                 if(dim.length >= 2) {
 | |
|                     if(dim[0].equals("--host")) {
 | |
|                         host = dim[1];
 | |
|                     } else if(dim[0].equals("--port")) {
 | |
|                         port = Integer.parseInt(dim[1]);
 | |
|                     } else if(dim[0].equals("--prefix")) {
 | |
|                         contextPath = dim[1];
 | |
|                         if(!contextPath.startsWith("/")){
 | |
|                             contextPath = "/" + contextPath;
 | |
|                         }
 | |
|                     } else if(dim[0].equals("--gitbucket.home")){
 | |
|                         System.setProperty("gitbucket.home", dim[1]);
 | |
|                     } else if(dim[0].equals("--temp_dir")){
 | |
|                         tmpDirPath = dim[1];
 | |
|                     }
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         if(host != null) {
 | |
|             address = new InetSocketAddress(host, port);
 | |
|         } else {
 | |
|             address = new InetSocketAddress(port);
 | |
|         }
 | |
| 
 | |
|         Server server = new Server(address);
 | |
| 
 | |
| //        SelectChannelConnector connector = new SelectChannelConnector();
 | |
| //        if(host != null) {
 | |
| //            connector.setHost(host);
 | |
| //        }
 | |
| //        connector.setMaxIdleTime(1000 * 60 * 60);
 | |
| //        connector.setSoLingerTime(-1);
 | |
| //        connector.setPort(port);
 | |
| //        server.addConnector(connector);
 | |
| 
 | |
|         WebAppContext context = new WebAppContext();
 | |
| 
 | |
|         File tmpDir;
 | |
|         if(tmpDirPath.equals("")){
 | |
|             tmpDir = new File(getGitBucketHome(), "tmp");
 | |
|             if(!tmpDir.exists()){
 | |
|                 tmpDir.mkdirs();
 | |
|             }
 | |
|         } else {
 | |
|             tmpDir = new File(tmpDirPath);
 | |
|             if(!tmpDir.exists()){
 | |
|                 throw new java.io.FileNotFoundException(
 | |
|                     String.format("temp_dir \"%s\" not found", tmpDirPath));
 | |
|             } else if(!tmpDir.isDirectory()) {
 | |
|                 throw new IllegalArgumentException(
 | |
|                     String.format("temp_dir \"%s\" is not a directory", tmpDirPath));
 | |
|             }
 | |
|         }
 | |
|         context.setTempDirectory(tmpDir);
 | |
| 
 | |
|         ProtectionDomain domain = JettyLauncher.class.getProtectionDomain();
 | |
|         URL location = domain.getCodeSource().getLocation();
 | |
| 
 | |
|         context.setContextPath(contextPath);
 | |
|         context.setDescriptor(location.toExternalForm() + "/WEB-INF/web.xml");
 | |
|         context.setServer(server);
 | |
|         context.setWar(location.toExternalForm());
 | |
|         if (forceHttps) {
 | |
|             context.setInitParameter("org.scalatra.ForceHttps", "true");
 | |
|         }
 | |
| 
 | |
|         server.setHandler(context);
 | |
|         server.setStopAtShutdown(true);
 | |
|         server.setStopTimeout(7_000);
 | |
|         server.start();
 | |
|         server.join();
 | |
|     }
 | |
| 
 | |
|     private static File getGitBucketHome(){
 | |
|         String home = System.getProperty("gitbucket.home");
 | |
|         if(home != null && home.length() > 0){
 | |
|             return new File(home);
 | |
|         }
 | |
|         home = System.getenv("GITBUCKET_HOME");
 | |
|         if(home != null && home.length() > 0){
 | |
|             return new File(home);
 | |
|         }
 | |
|         return new File(System.getProperty("user.home"), ".gitbucket");
 | |
|     }
 | |
| 
 | |
|     private static void deleteDirectory(File dir){
 | |
|         for(File file: dir.listFiles()){
 | |
|             if(file.isFile()){
 | |
|                 file.delete();
 | |
|             } else if(file.isDirectory()){
 | |
|                 deleteDirectory(file);
 | |
|             }
 | |
|         }
 | |
|         dir.delete();
 | |
|     }
 | |
| }
 |