@@ -286,6 +286,7 @@ | |||
<class name="com.gitblit.FederationServlet" /> | |||
<class name="com.gitblit.GitFilter" /> | |||
<class name="com.gitblit.git.GitServlet" /> | |||
<class name="com.gitblit.LogoServlet" /> | |||
<class name="com.gitblit.PagesFilter" /> | |||
<class name="com.gitblit.PagesServlet" /> | |||
<class name="com.gitblit.RobotsTxtServlet" /> | |||
@@ -402,6 +403,7 @@ | |||
<class name="com.gitblit.FederationServlet" /> | |||
<class name="com.gitblit.GitFilter" /> | |||
<class name="com.gitblit.git.GitServlet" /> | |||
<class name="com.gitblit.LogoServlet" /> | |||
<class name="com.gitblit.PagesFilter" /> | |||
<class name="com.gitblit.PagesServlet" /> | |||
<class name="com.gitblit.RobotsTxtServlet" /> |
@@ -52,6 +52,7 @@ r17: { | |||
additions: | |||
- Added a ui for the ref log introduced in 1.2.1 (issue-177) | |||
- Added weblogic.xml to WAR for deployment on WebLogic (issue 199) | |||
- Support setting a custom header logo (issue 208) | |||
- Support username substitution in web.otherUrls (issue 213) | |||
- Option to force client-side basic authentication instead of form-based authentication if web.authenticateViewPages=true (issue 222) | |||
- Setting to automatically create an user account based on an authenticated user principal from the servlet container (issue-246) |
@@ -531,6 +531,13 @@ realm.minPasswordLength = 5 | |||
# SINCE 0.5.0 | |||
web.siteName = | |||
# You may specify a different logo image for the header but it must be 120x45px. | |||
# If the specified file does not exist, the default Gitblit logo will be used. | |||
# | |||
# SINCE 1.3.0 | |||
# BASEFOLDER | |||
web.headerLogo = ${baseFolder}/logo.png | |||
# If *web.authenticateAdminPages*=true, users with "admin" role can create | |||
# repositories, create users, and edit repository metadata. | |||
# |
@@ -140,7 +140,20 @@ | |||
<servlet-name>PagesServlet</servlet-name> | |||
<url-pattern>/pages/*</url-pattern> | |||
</servlet-mapping> | |||
<!-- Logo Servlet | |||
<url-pattern> MUST match: | |||
* Wicket Filter ignorePaths parameter --> | |||
<servlet> | |||
<servlet-name>LogoServlet</servlet-name> | |||
<servlet-class>com.gitblit.LogoServlet</servlet-class> | |||
</servlet> | |||
<servlet-mapping> | |||
<servlet-name>LogoServlet</servlet-name> | |||
<url-pattern>/logo.png</url-pattern> | |||
</servlet-mapping> | |||
<!-- Robots.txt Servlet | |||
<url-pattern> MUST match: | |||
@@ -269,7 +282,7 @@ | |||
* PagesFilter <url-pattern> | |||
* PagesServlet <url-pattern> | |||
* com.gitblit.Constants.PAGES_PATH --> | |||
<param-value>git/,feed/,zip/,federation/,rpc/,pages/,robots.txt,sparkleshare/</param-value> | |||
<param-value>git/,feed/,zip/,federation/,rpc/,pages/,robots.txt,logo.png,sparkleshare/</param-value> | |||
</init-param> | |||
</filter> | |||
<filter-mapping> |
@@ -0,0 +1,93 @@ | |||
/* | |||
* Copyright 2013 gitblit.com. | |||
* | |||
* Licensed under the Apache License, Version 2.0 (the "License"); | |||
* you may not use this file except in compliance with the License. | |||
* You may obtain a copy of the License at | |||
* | |||
* http://www.apache.org/licenses/LICENSE-2.0 | |||
* | |||
* Unless required by applicable law or agreed to in writing, software | |||
* distributed under the License is distributed on an "AS IS" BASIS, | |||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
* See the License for the specific language governing permissions and | |||
* limitations under the License. | |||
*/ | |||
package com.gitblit; | |||
import java.io.File; | |||
import java.io.FileInputStream; | |||
import java.io.IOException; | |||
import java.io.InputStream; | |||
import java.io.OutputStream; | |||
import javax.servlet.ServletContext; | |||
import javax.servlet.ServletException; | |||
import javax.servlet.http.HttpServlet; | |||
import javax.servlet.http.HttpServletRequest; | |||
import javax.servlet.http.HttpServletResponse; | |||
/** | |||
* Handles requests for logo.png | |||
* | |||
* @author James Moger | |||
* | |||
*/ | |||
public class LogoServlet extends HttpServlet { | |||
private static final long serialVersionUID = 1L; | |||
private static final long lastModified = System.currentTimeMillis(); | |||
public LogoServlet() { | |||
super(); | |||
} | |||
@Override | |||
protected long getLastModified(HttpServletRequest req) { | |||
File file = GitBlit.getFileOrFolder(Keys.web.headerLogo, "${baseFolder}/logo.png"); | |||
if (file.exists()) { | |||
return file.lastModified(); | |||
} else { | |||
return lastModified; | |||
} | |||
} | |||
@Override | |||
protected void doGet(HttpServletRequest request, HttpServletResponse response) | |||
throws ServletException, IOException { | |||
InputStream is = null; | |||
try { | |||
String contentType = null; | |||
File file = GitBlit.getFileOrFolder(Keys.web.headerLogo, "${baseFolder}/logo.png"); | |||
if (file.exists()) { | |||
// custom logo | |||
ServletContext context = request.getSession().getServletContext(); | |||
contentType = context.getMimeType(file.getName()); | |||
response.setContentLength((int) file.length()); | |||
response.setDateHeader("Last-Modified", file.lastModified()); | |||
is = new FileInputStream(file); | |||
} else { | |||
// default logo | |||
response.setDateHeader("Last-Modified", lastModified); | |||
is = getClass().getResourceAsStream("/logo.png"); | |||
} | |||
if (contentType == null) { | |||
contentType = "image/png"; | |||
} | |||
response.setContentType(contentType); | |||
OutputStream os = response.getOutputStream(); | |||
byte[] buf = new byte[4096]; | |||
int bytesRead = is.read(buf); | |||
while (bytesRead != -1) { | |||
os.write(buf, 0, bytesRead); | |||
bytesRead = is.read(buf); | |||
} | |||
os.flush(); | |||
} catch (Exception e) { | |||
e.printStackTrace(); | |||
} finally { | |||
is.close(); | |||
} | |||
} | |||
} |
@@ -14,7 +14,7 @@ | |||
<span class="icon-bar"></span> | |||
</a> | |||
<a class="brand" wicket:id="rootLink"> | |||
<img src="gitblt_25_white.png" width="79" height="25" alt="gitblit" class="logo"/> | |||
<img src="logo.png" height="45" width="120" class="logo"/> | |||
</a> | |||
<div class="nav-collapse"> |
@@ -59,7 +59,7 @@ hr { | |||
} | |||
.navbar .brand { | |||
padding: 10px 20px; | |||
padding: 0px 10px 0px 20px; | |||
} | |||
.navbar .pull-right { |