public void init() throws ServletException {
if ( !firstInstanceInited) {
putPage("/error", new PageNotFound(), null);
public void init() throws ServletException {
if ( !firstInstanceInited) {
putPage("/error", new PageNotFound(), null);
putPage(ChangePasswordPage.PATH, new ChangePasswordPage(), "My Account");
putPage(LogoutPage.PATH, new LogoutPage("Logout"), "My Account");
putPage("/secure", new TestSecure(), null);
putPage(ChangePasswordPage.PATH, new ChangePasswordPage(), "My Account");
putPage(LogoutPage.PATH, new LogoutPage("Logout"), "My Account");
putPage("/secure", new TestSecure(), null);
putPage(AssurePage.PATH + "/*", new AssurePage(), "CAcert Web of Trust");
putPage(Certificates.PATH + "/*", new Certificates(), "Certificates");
putPage(MyDetails.PATH, new MyDetails(), "My Account");
putPage(AssurePage.PATH + "/*", new AssurePage(), "CAcert Web of Trust");
putPage(Certificates.PATH + "/*", new Certificates(), "Certificates");
putPage(MyDetails.PATH, new MyDetails(), "My Account");
putPage(CertificateAdd.PATH, new CertificateAdd(), "Certificates");
putPage(MailOverview.DEFAULT_PATH, new MailOverview("My email addresses"), "Certificates");
putPage(DomainOverview.PATH + "*", new DomainOverview("Domains"), "Certificates");
putPage(CertificateAdd.PATH, new CertificateAdd(), "Certificates");
putPage(MailOverview.DEFAULT_PATH, new MailOverview("My email addresses"), "Certificates");
putPage(DomainOverview.PATH + "*", new DomainOverview("Domains"), "Certificates");
protected void service(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {
boolean isSecure = req.getServerPort() == ServerConstants.getSecurePort();
addXSSHeaders(resp, isSecure);
protected void service(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {
boolean isSecure = req.getServerPort() == ServerConstants.getSecurePort();
addXSSHeaders(resp, isSecure);
// Firefox only sends this, if it's a cross domain access; safari sends
// it always
String originHeader = req.getHeader("Origin");
// Firefox only sends this, if it's a cross domain access; safari sends
// it always
String originHeader = req.getHeader("Origin");
!(originHeader.matches("^" + Pattern.quote("https://" + ServerConstants.getWwwHostNamePortSecure()) + "(/.*|)") || //
originHeader.matches("^" + Pattern.quote("http://" + ServerConstants.getWwwHostNamePort()) + "(/.*|)") || //
originHeader.matches("^" + Pattern.quote("https://" + ServerConstants.getSecureHostNamePort()) + "(/.*|)"))) {
!(originHeader.matches("^" + Pattern.quote("https://" + ServerConstants.getWwwHostNamePortSecure()) + "(/.*|)") || //
originHeader.matches("^" + Pattern.quote("http://" + ServerConstants.getWwwHostNamePort()) + "(/.*|)") || //
originHeader.matches("^" + Pattern.quote("https://" + ServerConstants.getSecureHostNamePort()) + "(/.*|)"))) {
vars.put("static", getStaticTemplateVar(isSecure));
vars.put("year", Calendar.getInstance().get(Calendar.YEAR));
vars.put("content", content);
vars.put("static", getStaticTemplateVar(isSecure));
vars.put("year", Calendar.getInstance().get(Calendar.YEAR));
vars.put("content", content);
baseTemplate.output(resp.getWriter(), Page.getLanguage(req), vars);
} else {
resp.sendError(404, "Page not found.");
baseTemplate.output(resp.getWriter(), Page.getLanguage(req), vars);
} else {
resp.sendError(404, "Page not found.");