Java tutorial
/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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 org.apache.jena.fuseki.mgt; import java.io.IOException; import java.io.UnsupportedEncodingException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.codec.binary.Base64; import org.apache.jena.fuseki.FusekiLib; import org.apache.jena.fuseki.HttpNames; import org.apache.jena.fuseki.server.DatasetRegistry; import org.apache.jena.web.HttpSC; /** Log-in and choose dataset */ public class ActionDataset extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { // request.getRemoteUser() ; // request.getUserPrincipal() ; String dataset = FusekiLib.safeParameter(request, "dataset"); HttpSession session = request.getSession(true); session.setAttribute("dataset", dataset); session.setMaxInactiveInterval(15 * 60); // 10 mins boolean known = DatasetRegistry.get().isRegistered(dataset); if (!known) { response.sendError(HttpSC.BAD_REQUEST_400, "No such dataset: " + dataset); return; } if (true) { // Redirect to GET page. response.setHeader(HttpNames.hLocation, PageNames.pageAfterLogin); response.setStatus(HttpSC.SEE_OTHER_303); } else { // Welcome style - but HTML inline :-( response.setContentType("text/html"); response.setStatus(HttpSC.OK_200); ServletOutputStream out = response.getOutputStream(); out.print("<p>" + dataset + "(" + known + ")</p>"); for (String name : DatasetRegistry.get().keys()) { out.print("<li>"); out.print(name); out.println("</li>"); } out.println("</ul>"); out.println("<p><a href=\"info\">Next</a></p>"); } // Cookie cookie = new Cookie("org.apache.jena.fuseki.session", dataset) ; // // 24 hours. // cookie.setMaxAge(24*60*60) ; } /** * This method returns true if the HttpServletRequest contains a valid * authorisation header * @param req The HttpServletRequest to test * @return true if the Authorisation header is valid */ private boolean authenticate(HttpServletRequest req) { String authhead = req.getHeader("Authorization"); if (authhead != null) { byte[] up = Base64.decodeBase64(authhead.substring(6)); // Decode the authorisation String String usernpass; try { usernpass = new String(up, "ascii"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); usernpass = null; } // Split the username from the password String user = usernpass.substring(0, usernpass.indexOf(":")); String password = usernpass.substring(usernpass.indexOf(":") + 1); if (user.equals("user") && password.equals("pass")) return true; } return false; } }