| | |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | import com.gitblit.AvatarGenerator; |
| | | import com.gitblit.Constants; |
| | | import com.gitblit.servlet.AccessDeniedServlet; |
| | | import com.gitblit.servlet.BranchGraphServlet; |
| | |
| | | import com.gitblit.servlet.DownloadZipServlet; |
| | | import com.gitblit.servlet.EnforceAuthenticationFilter; |
| | | import com.gitblit.servlet.FederationServlet; |
| | | import com.gitblit.servlet.FilestoreServlet; |
| | | import com.gitblit.servlet.GitFilter; |
| | | import com.gitblit.servlet.GitServlet; |
| | | import com.gitblit.servlet.LogoServlet; |
| | |
| | | public class WebModule extends ServletModule { |
| | | |
| | | final static String ALL = "/*"; |
| | | private boolean isGO; |
| | | |
| | | public WebModule(boolean isGO) { |
| | | this.isGO=isGO; |
| | | } |
| | | |
| | | @Override |
| | | protected void configureServlets() { |
| | | |
| | | // bind web component providers |
| | | bind(AvatarGenerator.class).toProvider(AvatarGeneratorProvider.class); |
| | | |
| | | // servlets |
| | | serveRegex(FilestoreServlet.REGEX_PATH).with(FilestoreServlet.class); |
| | | serve(fuzzy(Constants.R_PATH), fuzzy(Constants.GIT_PATH)).with(GitServlet.class); |
| | | serve(fuzzy(Constants.RAW_PATH)).with(RawServlet.class); |
| | | serve(fuzzy(Constants.PAGES)).with(PagesServlet.class); |
| | | serve(fuzzy(Constants.RPC_PATH)).with(RpcServlet.class); |
| | | serve(fuzzy(Constants.ZIP_PATH)).with(DownloadZipServlet.class); |
| | | serve(fuzzy(Constants.SYNDICATION_PATH)).with(SyndicationServlet.class); |
| | | |
| | | |
| | | serve(fuzzy(Constants.FEDERATION_PATH)).with(FederationServlet.class); |
| | | serve(fuzzy(Constants.SPARKLESHARE_INVITE_PATH)).with(SparkleShareInviteServlet.class); |
| | |
| | | serve(Constants.PT_PATH).with(PtServlet.class); |
| | | serve("/robots.txt").with(RobotsTxtServlet.class); |
| | | serve("/logo.png").with(LogoServlet.class); |
| | | if(isGO) |
| | | { |
| | | /* Prevent accidental access to 'resources' such as GitBlit java classes |
| | | * |
| | | * In the GO setup the JAR containing the application and the WAR injected |
| | | * into Jetty are the same file. However Jetty expects to serve the entire WAR |
| | | * contents, except the WEB-INF folder. Thus, all java binary classes in the |
| | | * JAR are served by default as is they were legitimate resources. |
| | | * |
| | | * The below servlet mappings prevent that behavior |
| | | */ |
| | | serve(fuzzy("/com/")).with(AccessDeniedServlet.class); |
| | | serve(fuzzy("/org/")).with(AccessDeniedServlet.class); |
| | | } |
| | | |
| | | /* Prevent accidental access to 'resources' such as GitBlit java classes |
| | | * |
| | | * In the GO setup the JAR containing the application and the WAR injected |
| | | * into Jetty are the same file. However Jetty expects to serve the entire WAR |
| | | * contents, except the WEB-INF folder. Thus, all java binary classes in the |
| | | * JAR are served by default as is they were legitimate resources. |
| | | * |
| | | * The below servlet mappings prevent that behavior |
| | | */ |
| | | serve(fuzzy("/com/")).with(AccessDeniedServlet.class); |
| | | |
| | | // global filters |
| | | filter(ALL).through(ProxyFilter.class); |
| | | filter(ALL).through(EnforceAuthenticationFilter.class); |
| | |
| | | filter(fuzzy(Constants.RPC_PATH)).through(RpcFilter.class); |
| | | filter(fuzzy(Constants.ZIP_PATH)).through(DownloadZipFilter.class); |
| | | filter(fuzzy(Constants.SYNDICATION_PATH)).through(SyndicationFilter.class); |
| | | |
| | | |
| | | |
| | | // Wicket |
| | | String toIgnore = Joiner.on(",").join(Constants.R_PATH, Constants.GIT_PATH, Constants.RAW_PATH, |
| | | Constants.PAGES, Constants.RPC_PATH, Constants.ZIP_PATH, Constants.SYNDICATION_PATH, |