Skip to Content.
Sympa Menu

perfsonar-dev - [pS-dev] [GEANT/SA2/ps-java-services] r5986 - in trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main: java/org/perfsonar/webadmin/base2 java/org/perfsonar/webadmin/base2/config java/org/perfsonar/webadmin/base2/filters java/org/perfsonar/webadmin/base2/servlet java/org/perfsonar/webadmin/base2/servlet/util java/org/perfsonar/webadmin/base2/util resources webapp webapp/WEB-INF webapp/views webapp/wa/styles

Subject: perfsonar development work

List archive

[pS-dev] [GEANT/SA2/ps-java-services] r5986 - in trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main: java/org/perfsonar/webadmin/base2 java/org/perfsonar/webadmin/base2/config java/org/perfsonar/webadmin/base2/filters java/org/perfsonar/webadmin/base2/servlet java/org/perfsonar/webadmin/base2/servlet/util java/org/perfsonar/webadmin/base2/util resources webapp webapp/WEB-INF webapp/views webapp/wa/styles


Chronological Thread 
  • From:
  • To:
  • Subject: [pS-dev] [GEANT/SA2/ps-java-services] r5986 - in trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main: java/org/perfsonar/webadmin/base2 java/org/perfsonar/webadmin/base2/config java/org/perfsonar/webadmin/base2/filters java/org/perfsonar/webadmin/base2/servlet java/org/perfsonar/webadmin/base2/servlet/util java/org/perfsonar/webadmin/base2/util resources webapp webapp/WEB-INF webapp/views webapp/wa/styles
  • Date: Sun, 2 Sep 2012 20:54:16 +0100 (BST)

Author: dante.delvaux
Date: 2012-09-02 20:54:16 +0100 (Sun, 02 Sep 2012)
New Revision: 5986

Added:

trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/filters/

trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/filters/AuthFilter.java

trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/servlet/LoginServlet.java

trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/views/README

trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/views/login.jsp
Removed:

trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/servlet/util/Base64.java
Modified:

trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/config/HTMLGenerator.java

trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/servlet/BasicServlet.java

trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/servlet/ConfigurationServlet.java

trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/servlet/SelfTestServlet.java

trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/servlet/util/ConfigurationServletHelper.java

trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/util/HTMLUtil.java

trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/util/HTMLUtilStringBuffer.java

trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/resources/wa.xsd

trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/WEB-INF/web.xml

trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/index.jsp

trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/views/selfTest.jsp

trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/views/sideBar.jsp

trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/wa/styles/default.css
Log:
Various improvements:
- possibility to derive easily new servlets in a perfSONAR service,
- adding servletId type link in the WebAdmin config file schema
- including service provided JSP page from index.jsp (use WAR overlays)
- a few HTML/CSS layout improvements (still very far from best practice HTML
code though)
- adding an AuthFilter and a LoginServlet instead of BASIC HTTP auth
- removing Base64.java class now unused


Modified:
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/config/HTMLGenerator.java
===================================================================
---
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/config/HTMLGenerator.java
2012-09-01 16:31:50 UTC (rev 5985)
+++
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/config/HTMLGenerator.java
2012-09-02 19:54:16 UTC (rev 5986)
@@ -86,22 +86,30 @@
LinkType l = (LinkType) o;

String pageId = l.getPageId();
+ String servletId = l.getServletId();
+
if (pageId != null) {
- basic = HTMLUtil.tag("tr",
HTMLUtil.tag("td", HTMLUtil.att(
- "class", cls),
HTMLUtil.tag("p", HTMLUtil.tag("a",
- HTMLUtil.att("href",
"config?page=" + pageId)
- +
HTMLUtil.att("target", "_self"), l
-
.getTitle()))
- + HTMLUtil.tag("p",
"&nbsp")
+ basic = HTMLUtil.tag("tr",
HTMLUtil.tag("td", HTMLUtil.att("class", cls),
+
HTMLUtil.tag("p", HTMLUtil.tag("a",
+
HTMLUtil.att("href", "config?page=" + pageId)
+ +
HTMLUtil.att("target", "_self"), l.getTitle()))
+ +
HTMLUtil.tag("p", "&nbsp")
+ HTMLUtil.tag("p",
"&nbsp")))
+ "\n";
+ } else if (servletId != null) {
+ basic = HTMLUtil.tag("tr",
HTMLUtil.tag("td", HTMLUtil.att("class", cls),
+
HTMLUtil.tag("p", HTMLUtil.tag("a",
+
HTMLUtil.att("href", servletId)
+ +
HTMLUtil.att("target", "_self"), l.getTitle()))
+ +
HTMLUtil.tag("p", "&nbsp")
+ + HTMLUtil.tag("p",
"&nbsp")))
+ + "\n";
} else {
- basic = HTMLUtil.tag("tr",
HTMLUtil.tag("td", HTMLUtil.att(
- "class", cls),
HTMLUtil.tag("p", HTMLUtil.tag("a",
- HTMLUtil.att("href",
l.getRedirectTo())
- +
HTMLUtil.att("target", "_blank"), l
-
.getTitle()))
- + HTMLUtil.tag("p",
"&nbsp")
+ basic = HTMLUtil.tag("tr",
HTMLUtil.tag("td", HTMLUtil.att("class", cls),
+
HTMLUtil.tag("p", HTMLUtil.tag("a",
+
HTMLUtil.att("href", l.getRedirectTo())
+ +
HTMLUtil.att("target", "_blank"), l.getTitle()))
+ +
HTMLUtil.tag("p", "&nbsp")
+ HTMLUtil.tag("p",
"&nbsp")))
+ "\n";
}
@@ -112,15 +120,18 @@
LinkType l = (LinkType) o;

String pageId = l.getPageId();
+ String servletId = l.getServletId();

if (pageId != null) {
- basic = HTMLUtil.tag("a",
HTMLUtil.att("href",
- "config?page=" +
pageId)
+ basic = HTMLUtil.tag("a",
HTMLUtil.att("href", "config?page=" + pageId)
+
HTMLUtil.att("target", "_self"), l.getTitle())
+ "<br/>";
+ } else if (servletId != null) {
+ basic = HTMLUtil.tag("a",
HTMLUtil.att("href", servletId)
+ +
HTMLUtil.att("target", "_self"), l.getTitle())
+ + "<br/>";
} else {
- basic = HTMLUtil.tag("a",
HTMLUtil.att("href", l
- .getRedirectTo())
+ basic = HTMLUtil.tag("a",
HTMLUtil.att("href", l.getRedirectTo())
+
HTMLUtil.att("target", "_blank"), l.getTitle())
+ "<br/>";
}

Added:
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/filters/AuthFilter.java
===================================================================
---
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/filters/AuthFilter.java
(rev 0)
+++
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/filters/AuthFilter.java
2012-09-02 19:54:16 UTC (rev 5986)
@@ -0,0 +1,53 @@
+package org.perfsonar.webadmin.base2.filters;
+
+import java.io.IOException;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * This filter checks the user is authenticated.
+ * If he/she is not he/she is redirected to the login page.
+ *
+ * @author Antoine Delvaux - DANTE
+ */
+public class AuthFilter implements Filter {
+
+ protected Logger logger = LoggerFactory.getLogger(getClass());
+
+ @Override
+ public void init(FilterConfig filterConfig) throws ServletException {
+ }
+
+ @Override
+ public void destroy() {
+ }
+
+ /**
+ * Main filtering action, checking for the session attribute "logged"
+ * This attribute should be set in the LoginServlet
+ */
+ @Override
+ public void doFilter(ServletRequest servletRequest, ServletResponse
servletResponse, FilterChain filterChain)
+ throws IOException, ServletException {
+ HttpServletRequest request = (HttpServletRequest)
servletRequest;
+ HttpSession session = request.getSession();
+ if (session.getAttribute("logged") == null) {
+ logger.debug("User is not authenticated, we display
the login form");
+ HttpServletResponse response = (HttpServletResponse)
servletResponse;
+ response.sendRedirect("login");
+ } else {
+ filterChain.doFilter(servletRequest, servletResponse);
+ }
+ }
+}


Property changes on:
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/filters/AuthFilter.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain

Modified:
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/servlet/BasicServlet.java
===================================================================
---
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/servlet/BasicServlet.java
2012-09-01 16:31:50 UTC (rev 5985)
+++
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/servlet/BasicServlet.java
2012-09-02 19:54:16 UTC (rev 5986)
@@ -1,96 +1,32 @@
package org.perfsonar.webadmin.base2.servlet;

-import java.io.IOException;
-import java.util.Locale;
-
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;

import org.perfsonar.webadmin.base2.config.ObjectMap;
-import org.perfsonar.webadmin.base2.servlet.util.Base64;
import org.perfsonar.webadmin.base2.servlet.util.ConfigurationServletHelper;
-import org.perfsonar.webadmin.base2.waschema.v20090201.Credential;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

+/**
+ * This abstract Servlet is the common ancestor to all WebAdmin Servlets.
+ * It only initialise the logger and read the WebAdmin configuration file in
an objectMap.
+ *
+ * @author Antoine Delvaux - DANTE
+ *
+ */
@SuppressWarnings("serial")
public abstract class BasicServlet extends HttpServlet {

protected Logger logger = LoggerFactory.getLogger(getClass());
+
+ protected ObjectMap objectMap;

- protected Credential credential;
- protected boolean authorized;
-
public void init(ServletConfig arg0) throws ServletException {
super.init(arg0);
- logger.debug("Basic Configuration Servlet initialised");
- ObjectMap objectMap =
ConfigurationServletHelper.objectMap(getServletContext());
- credential = objectMap.getWA().getCredential();
+ logger.debug("perfSONAR Basic Servlet initialised");
+ objectMap =
ConfigurationServletHelper.objectMap(getServletContext());
}

- @Override
- protected void doGet(HttpServletRequest request, HttpServletResponse
response)
- throws ServletException, IOException {
-
- String auth = request.getHeader("Authorization");
-
- if (!allowUser(auth)) {
- logger.debug("Unauthenticated access: unauthorised.");
- response.setHeader("WWW-Authenticate", "BASIC
realm=\"perfSONAR WebAdmin\"");
-
response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
- // TODO: can't we get a nicer error page?
- } else {
- logger.debug("We received an authenticated GET
request.");
- }
-
- }
-
- @Override
- protected void doPost(HttpServletRequest request, HttpServletResponse
response)
- throws ServletException, IOException {
-
- String auth = request.getHeader("Authorization");
-
- if (!allowUser(auth)) {
- logger.debug("Unauthenticated access: unauthorised.");
- response.setHeader("WWW-Authenticate", "BASIC
realm=\"perfSONAR WebAdmin\"");
-
response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
- } else {
- logger.debug("We received an authenticated POST
request.");
- }
-
- }
-
- /**
- * Checks if the user is allowed to invoke this servlet.
- * The instance variable authorized is set with the return value
- *
- * @param auth The browser provided Authorization header
- * @return
- * @throws IOException
- */
- protected boolean allowUser(String auth) throws IOException {
- if (auth == null) {
- authorized = false;
- } else if
(!auth.toUpperCase(Locale.getDefault()).startsWith("BASIC ")) {
- // Not BASIC authentication scheme, we decline
- authorized = false;
- } else {
- // Now we check the username and password
- String userpassEncoded = auth.substring(6);
- String userpassDecoded = new
String(Base64.decodeString(userpassEncoded));
-
- if (userpassDecoded.equals(credential.getUsername() +
":" + credential.getPassword())) {
- authorized = true;
- } else {
- authorized = false;
- }
- }
-
- return authorized;
- }
-
}

Modified:
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/servlet/ConfigurationServlet.java
===================================================================
---
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/servlet/ConfigurationServlet.java
2012-09-01 16:31:50 UTC (rev 5985)
+++
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/servlet/ConfigurationServlet.java
2012-09-02 19:54:16 UTC (rev 5986)
@@ -26,11 +26,6 @@
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws
ServletException, IOException {

- // First we call the parent method to check authentication
- super.doGet(request, response);
- // And if access was not granted, we're not going further
- if (!authorized) return;
-
ConfigurationServletHelper config = new
ConfigurationServletHelper(request, getServletContext());
String htmlContent = config.getHTMLContent();
if (htmlContent != null) {
@@ -51,11 +46,6 @@
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws
ServletException, IOException {

- // First we call the parent method to check authentication
- super.doPost(request, response);
- // And if access was not granted, we're not going further
- if (!authorized) return;
-
ConfigurationServletHelper config = new
ConfigurationServletHelper(request, response, getServletContext());

String urlPath = "index.jsp?page=save";
@@ -64,7 +54,6 @@
urlPath += "&ok";
}
getServletContext().removeAttribute("ObjectMap");
- credential = config.objectMap().getWA().getCredential();
response.sendRedirect(urlPath);
}


Added:
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/servlet/LoginServlet.java
===================================================================
---
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/servlet/LoginServlet.java
(rev 0)
+++
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/servlet/LoginServlet.java
2012-09-02 19:54:16 UTC (rev 5986)
@@ -0,0 +1,54 @@
+package org.perfsonar.webadmin.base2.servlet;
+
+import java.io.IOException;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.perfsonar.webadmin.base2.waschema.v20090201.Credential;
+
+@SuppressWarnings("serial")
+public class LoginServlet extends BasicServlet {
+
+ @Override
+ protected void doGet(HttpServletRequest request,
+ HttpServletResponse response) throws
ServletException, IOException {
+
+ // Any GET request to this Servlet, removes existing
authentication
+ request.getSession().removeAttribute("logged");
+
+ getServletConfig().getServletContext().getRequestDispatcher(
+ "/index.jsp?page=login").forward(request, response);
+ }
+
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse
response)
+ throws ServletException, IOException {
+
+ Credential credential = objectMap.getWA().getCredential();
+
+ // FIXME: we must use HTTPS, but how to get a correct
certificate?
+// if (request.isSecure()) {
+ // We are receiving an authentication request
+ String username = (String)
request.getParameter("username");
+ String password = (String)
request.getParameter("password");
+ logger.debug("We received the authentication form for
" + username);
+
+ if (credential.getUsername().equals(username) &&
credential.getPassword().equals(password)) {
+ logger.info("Correct login from " +
request.getRemoteAddr());
+ request.getSession().setAttribute("logged",
true);
+ // We clear the attribute meant to stop the
filtering loop
+ request.getSession().setAttribute("info",
"You have been authenticated.");
+ } else {
+ logger.debug("Incorrect login from " +
request.getRemoteAddr());
+
request.getSession().removeAttribute("logged");
+ request.getSession().setAttribute("info",
"Incorrect login or password.");
+ }
+// }
+
+ response.sendRedirect("index.jsp");
+
+ }
+
+}


Property changes on:
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/servlet/LoginServlet.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain

Modified:
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/servlet/SelfTestServlet.java
===================================================================
---
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/servlet/SelfTestServlet.java
2012-09-01 16:31:50 UTC (rev 5985)
+++
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/servlet/SelfTestServlet.java
2012-09-02 19:54:16 UTC (rev 5986)
@@ -22,12 +22,8 @@
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse
response)
throws ServletException, IOException {
-
- // First we call the parent method to check authentication
- super.doGet(request, response);
- // And if access was not granted, we're not going further
- if (!authorized) return;
-
+
+ logger.debug("Performing self test");
String redirectURL = "index.jsp?page=selfTest";

ObjectMap objectMap =
ConfigurationServletHelper.objectMap(getServletContext());
@@ -37,14 +33,17 @@
String messageContent =
getFileContent(getServletContext().getRealPath("/") + SELF_TEST_FILE);

if (messageContent == null) {
+ logger.warn("Self test cannot be performed because
the selfTest message is empty. Please check the wa/soapMessages/selfTest.xml
file.");
request.setAttribute("errorMessage", "Message is
null");
} else {
try {
String result =
soapClient.sendMessage(messageContent);
if (result != null) {
if (result.contains("error")) {
+ logger.info("Self test
failed!");

getServletContext().setAttribute("errors", result);
} else if
(result.contains("success")) {
+ logger.info("Self test
succeeded!");
redirectURL = redirectURL +
"&ok";
} else {
logger.warn("Result of
selfTest is neither error nor success: " + result);
@@ -52,6 +51,7 @@
}

} else {
+ logger.info("Self test was returned
an empty result.");
request.setAttribute("errorMessage",
"Result is null");
}
} catch (SOAPClientException e) {

Deleted:
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/servlet/util/Base64.java
===================================================================
---
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/servlet/util/Base64.java
2012-09-01 16:31:50 UTC (rev 5985)
+++
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/servlet/util/Base64.java
2012-09-02 19:54:16 UTC (rev 5986)
@@ -1,163 +0,0 @@
-package org.perfsonar.webadmin.base2.servlet.util;
-
-public class Base64 {
- // Mapping table from 6-bit nibbles to Base64 characters.
- private static char[] map1 = new char[64];
- static {
- int i = 0;
- for (char c = 'A'; c <= 'Z'; c++)
- map1[i++] = c;
- for (char c = 'a'; c <= 'z'; c++)
- map1[i++] = c;
- for (char c = '0'; c <= '9'; c++)
- map1[i++] = c;
- map1[i++] = '+';
- map1[i++] = '/';
- }
-
- // Mapping table from Base64 characters to 6-bit nibbles.
- private static byte[] map2 = new byte[128];
- static {
- for (int i = 0; i < map2.length; i++)
- map2[i] = -1;
- for (int i = 0; i < 64; i++)
- map2[map1[i]] = (byte) i;
- }
-
- public Base64() {
-
- }
-
- /**
- * Encodes a string into Base64 format. No blanks or line breaks are
- * inserted.
- *
- * @param s
- * a String to be encoded.
- * @return A String with the Base64 encoded data.
- */
- public static String encodeString(String s) {
- return new String(encode(s.getBytes()));
- }
-
- /**
- * Encodes a byte array into Base64 format. No blanks or line breaks
are
- * inserted.
- *
- * @param in
- * an array containing the data bytes to be encoded.
- * @return A character array with the Base64 encoded data.
- */
- public static char[] encode(byte[] in) {
- return encode(in, in.length);
- }
-
- /**
- * Encodes a byte array into Base64 format. No blanks or line breaks
are
- * inserted.
- *
- * @param in
- * an array containing the data bytes to be encoded.
- * @param iLen
- * number of bytes to process in <code>in</code>.
- * @return A character array with the Base64 encoded data.
- */
- public static char[] encode(byte[] in, int iLen) {
- int oDataLen = (iLen * 4 + 2) / 3; // output length without
padding
- int oLen = ((iLen + 2) / 3) * 4; // output length including
padding
- char[] out = new char[oLen];
- int ip = 0;
- int op = 0;
- while (ip < iLen) {
- int i0 = in[ip++] & 0xff;
- int i1 = ip < iLen ? in[ip++] & 0xff : 0;
- int i2 = ip < iLen ? in[ip++] & 0xff : 0;
- int o0 = i0 >>> 2;
- int o1 = ((i0 & 3) << 4) | (i1 >>> 4);
- int o2 = ((i1 & 0xf) << 2) | (i2 >>> 6);
- int o3 = i2 & 0x3F;
- out[op++] = map1[o0];
- out[op++] = map1[o1];
- out[op] = op < oDataLen ? map1[o2] : '=';
- op++;
- out[op] = op < oDataLen ? map1[o3] : '=';
- op++;
- }
- return out;
- }
-
- /**
- * Decodes a string from Base64 format.
- *
- * @param s
- * a Base64 String to be decoded.
- * @return A String containing the decoded data.
- * @throws IllegalArgumentException
- * if the input is not valid Base64 encoded data.
- */
- public static String decodeString(String s) {
- return new String(decode(s));
- }
-
- /**
- * Decodes a byte array from Base64 format.
- *
- * @param s
- * a Base64 String to be decoded.
- * @return An array containing the decoded data bytes.
- * @throws IllegalArgumentException
- * if the input is not valid Base64 encoded data.
- */
- public static byte[] decode(String s) {
- return decode(s.toCharArray());
- }
-
- /**
- * Decodes a byte array from Base64 format. No blanks or line breaks
are
- * allowed within the Base64 encoded data.
- *
- * @param in
- * a character array containing the Base64 encoded data.
- * @return An array containing the decoded data bytes.
- * @throws IllegalArgumentException
- * if the input is not valid Base64 encoded data.
- */
- public static byte[] decode(char[] in) {
- int iLen = in.length;
- if (iLen % 4 != 0)
- throw new IllegalArgumentException(
- "Length of Base64 encoded input
string is not a multiple of 4.");
- while (iLen > 0 && in[iLen - 1] == '=')
- iLen--;
- int oLen = (iLen * 3) / 4;
- byte[] out = new byte[oLen];
- int ip = 0;
- int op = 0;
- while (ip < iLen) {
- int i0 = in[ip++];
- int i1 = in[ip++];
- int i2 = ip < iLen ? in[ip++] : 'A';
- int i3 = ip < iLen ? in[ip++] : 'A';
- if (i0 > 127 || i1 > 127 || i2 > 127 || i3 > 127)
- throw new IllegalArgumentException(
- "Illegal character in Base64
encoded data.");
- int b0 = map2[i0];
- int b1 = map2[i1];
- int b2 = map2[i2];
- int b3 = map2[i3];
- if (b0 < 0 || b1 < 0 || b2 < 0 || b3 < 0)
- throw new IllegalArgumentException(
- "Illegal character in Base64
encoded data.");
- int o0 = (b0 << 2) | (b1 >>> 4);
- int o1 = ((b1 & 0xf) << 4) | (b2 >>> 2);
- int o2 = ((b2 & 3) << 6) | b3;
- out[op++] = (byte) o0;
- if (op < oLen)
- out[op++] = (byte) o1;
- if (op < oLen)
- out[op++] = (byte) o2;
- }
- return out;
- }
-
-}

Modified:
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/servlet/util/ConfigurationServletHelper.java
===================================================================
---
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/servlet/util/ConfigurationServletHelper.java
2012-09-01 16:31:50 UTC (rev 5985)
+++
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/servlet/util/ConfigurationServletHelper.java
2012-09-02 19:54:16 UTC (rev 5986)
@@ -121,13 +121,11 @@
u.preamble();
u.form_begin("form_key",
renderedPage.first(), "config?page="
+ renderedPage.first(), 1);
- u.simplelineoftext("Please fill in the
following fields:",
- "green");
+ u.simplelineoftext("Please fill in the
following fields:", "green");
out.println(renderedPage.second());
u.form_end();
u.simplelineoftext("2",
- "<a
href=\"/wa/index.jsp\">Return to main page</a>",
- "green");
+ "<a
href=\"/index.jsp\">Return to main page</a>", "green");
u.postscript();
} catch (Exception e) {
//FIXME: would be better to log the stack
trace and output a sensible message to the user

Modified:
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/util/HTMLUtil.java
===================================================================
---
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/util/HTMLUtil.java
2012-09-01 16:31:50 UTC (rev 5985)
+++
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/util/HTMLUtil.java
2012-09-02 19:54:16 UTC (rev 5986)
@@ -259,9 +259,8 @@

public void form_end() throws IOException {
println(tag("tr", tag("td", nbsp)
- + tag("td", att("align", "right")
- + att("colspan", "" +
colspan), atag("input", att(
- "type", "submit")
+ + tag("td", att("align", "right") +
att("colspan", "" + colspan),
+ atag("input", att("type", "submit") +
att("class", "submit_button")
+ att("name", "submit") +
att("value", "Submit"))))
+ "</table><p/>\n" + "</form>" +
"</div>");

Modified:
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/util/HTMLUtilStringBuffer.java
===================================================================
---
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/util/HTMLUtilStringBuffer.java
2012-09-01 16:31:50 UTC (rev 5985)
+++
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/java/org/perfsonar/webadmin/base2/util/HTMLUtilStringBuffer.java
2012-09-02 19:54:16 UTC (rev 5986)
@@ -165,12 +165,6 @@
return ret;
}

- private String getCSS() {
- String css = "<link rel=\"stylesheet\" type=\"text/css\"
href=\""
- + cssFile + "\"/>";
- return css;
- }
-
private String getScript() // FIXME Vl_ stuff
{
return "<script src=\"Service_Admin.js\">"
@@ -318,9 +312,8 @@

public void form_end() throws IOException {
println(tag("tr", tag("td", nbsp)
- + tag("td", att("align", "right")
- + att("colspan", "" +
colspan), atag("input", att(
- "type", "submit")
+ + tag("td", att("align", "right") +
att("colspan", "" + colspan),
+ atag("input", att("type", "submit") +
att("class", "submit_button")
+ att("name", "submit") +
att("value", "Submit"))))
+ "</table><p/>\n" + "</form>" +
// "</center>"+

Modified:
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/resources/wa.xsd
===================================================================
---
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/resources/wa.xsd
2012-09-01 16:31:50 UTC (rev 5985)
+++
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/resources/wa.xsd
2012-09-02 19:54:16 UTC (rev 5986)
@@ -111,6 +111,8 @@
<xs:choice>
<xs:element name="pageId" type="xs:string"
minOccurs="1"
maxOccurs="1" />
+ <xs:element name="servletId" type="xs:string" minOccurs="1"
+ maxOccurs="1" />
<xs:element name="redirectTo"
type="xs:string" minOccurs="1"
maxOccurs="1" />
</xs:choice>

Modified:
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/WEB-INF/web.xml
===================================================================
---
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/WEB-INF/web.xml
2012-09-01 16:31:50 UTC (rev 5985)
+++
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/WEB-INF/web.xml
2012-09-02 19:54:16 UTC (rev 5986)
@@ -1,30 +1,43 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns="http://java.sun.com/xml/ns/j2ee";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd";
+ version="2.5">

-<web-app xmlns="http://java.sun.com/xml/ns/j2ee";
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_5.xsd";
- version="2.5">
+ <display-name>perfSONAR Web Admin</display-name>

- <display-name>perfSONAR Web Admin</display-name>
+ <!-- Authentication checks are done through a filter -->
+ <filter>
+ <filter-name>authFilter</filter-name>
+
<filter-class>org.perfsonar.webadmin.base2.filters.AuthFilter</filter-class>
+ </filter>
+ <filter-mapping>
+ <filter-name>authFilter</filter-name>
+ <!-- We only protect /config as a basic setting, but you can
add other URL to protect with login credentials -->
+ <url-pattern>/config</url-pattern>
+ </filter-mapping>

- <session-config>
- <!-- Default to 5 minute session timeouts -->
- <session-timeout>5</session-timeout>
- </session-config>
+ <!-- Login Servlet -->
+ <servlet>
+ <servlet-name>Authentification</servlet-name>
+
<servlet-class>org.perfsonar.webadmin.base2.servlet.LoginServlet</servlet-class>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>Authentification</servlet-name>
+ <url-pattern>/login</url-pattern>
+ </servlet-mapping>

- <!-- pS Config Servlet Admin -->
+ <!-- pS Config Servlet Admin -->
<servlet>
<servlet-name>BasicConfiguration</servlet-name>
<servlet-class>

org.perfsonar.webadmin.base2.servlet.ConfigurationServlet
- </servlet-class>
+ </servlet-class>
</servlet>
-
<servlet-mapping>
<servlet-name>BasicConfiguration</servlet-name>
<url-pattern>
/config
- </url-pattern>
+ </url-pattern>
</servlet-mapping>

<!-- SelfTest servlet -->
@@ -32,16 +45,16 @@
<servlet-name>SelfTestServlet</servlet-name>
<servlet-class>
org.perfsonar.webadmin.base2.servlet.SelfTestServlet
- </servlet-class>
+ </servlet-class>
</servlet>
-
<servlet-mapping>
<servlet-name>SelfTestServlet</servlet-name>
<url-pattern>
/selfTest
- </url-pattern>
+ </url-pattern>
</servlet-mapping>

+ <!-- Welcome page -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

Modified:
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/index.jsp
===================================================================
---
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/index.jsp
2012-09-01 16:31:50 UTC (rev 5985)
+++
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/index.jsp
2012-09-02 19:54:16 UTC (rev 5986)
@@ -30,9 +30,9 @@
if (map==null) { %>
<jsp:include page="views/error.jsp"/>

-<%-- <% } else if (pageParam != null &&
pageParam.equals("login")) { %>
+ <% } else if (pageParam != null &&
pageParam.equals("login")) { %>
<jsp:include page="views/login.jsp"/>
- --%>
+
<% } else if (pageParam != null &&
pageParam.equals("save")) { %>

<% if(request.getParameter("ok")!=null){ %>
@@ -46,6 +46,10 @@

} else if (pageParam != null &&
pageParam.equals("selfTest")) { %>
<jsp:include page="views/selfTest.jsp"/>
+
+ <% } else if (pageParam != null) { %>
+ <jsp:include page='<%= "views/"+pageParam+".jsp"
%>' />
+
<% } else { %>
<jsp:include page="views/welcome.jsp"/>
<% } %>

Added:
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/views/README
===================================================================
---
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/views/README
(rev 0)
+++
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/views/README
2012-09-02 19:54:16 UTC (rev 5986)
@@ -0,0 +1,12 @@
+This directory contains JSP templates included by the WebAdmin index.jsp
file.
+
+You can add a /webapp/views directory to your perfSONAR service and provide
new or other JSP files.
+The WebAdmin WAR should then be used as an overlay when building your
service WAR, with a
+configuration such as:
+
+ <overlays>
+ <overlay>
+ <groupId>net.geant.perfsonar</groupId>
+ <artifactId>web-admin-component</artifactId>
+ </overlay>
+ </overlays>

Added:
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/views/login.jsp
===================================================================
---
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/views/login.jsp
(rev 0)
+++
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/views/login.jsp
2012-09-02 19:54:16 UTC (rev 5986)
@@ -0,0 +1,20 @@
+<%@page
language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+
+<div class="centerWindow">
+ <p class="welcometext">
+ Welcome to the perfSONAR service web administration interface
+ </p>
+ <p class="heading1">
+ Please authenticate yourself to the administration interface.
+ </p>
+
+ <form method="POST" action="login">
+ <div class="properties">
+ <table id="login">
+ <tr><td>Username:&nbsp;</td><td><input class="input_style"
type="text" name="username" size="20" /></td></tr>
+ <tr><td>Password:&nbsp;</td><td><input class="input_style"
type="password" name="password" size="20" /></td></tr>
+ <tr><td colspan="2" align="right"><input class="button2_small"
type="submit" value="Login" /></td></tr>
+ </table>
+ </div>
+ </form>
+</div>


Property changes on:
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/views/login.jsp
___________________________________________________________________
Added: svn:mime-type
+ text/plain

Modified:
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/views/selfTest.jsp
===================================================================
---
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/views/selfTest.jsp
2012-09-01 16:31:50 UTC (rev 5985)
+++
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/views/selfTest.jsp
2012-09-02 19:54:16 UTC (rev 5986)
@@ -10,15 +10,13 @@
<%
if (request.getParameter("ok") !=
null) {
%>
- <div
style="padding:10px;margin:10px;border:1px solid #468C46;
background-color:#d9ecd9;display:table">
- <span style="font-weight:
bold">TEST SUCCEEDED</span><br/>
- <hr style="border: 1px solid
#468C46"/>
+ <div class="succeed">Test Succeeded!
+ <br/><hr/>
<%
} else {
%>
- <div
style="padding:10px;margin:10px;border:1px solid #960101;
background-color:#ff8080;display:table">
- <span style="font-weight:
bold">TEST FAILED</span><br/>
- <hr style="border: 1px solid
#960101"/>
+ <div class="failed">Test Failed!
+ <br/><hr/>
<%
String error = (String)
application.getAttribute("errors");
if (error != null) {

Modified:
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/views/sideBar.jsp
===================================================================
---
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/views/sideBar.jsp
2012-09-01 16:31:50 UTC (rev 5985)
+++
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/views/sideBar.jsp
2012-09-02 19:54:16 UTC (rev 5986)
@@ -4,10 +4,10 @@
pageEncoding="UTF-8"%>

<%
- HTMLGenerator sideBar_htmlGenerator=new HTMLGenerator();
- org.perfsonar.webadmin.base2.config.ObjectMap sideBar_map =
ConfigurationServletHelper.objectMap(getServletContext());
- String[]
sideBar_menuBasicLinks=sideBar_htmlGenerator.getBasicLinks(sideBar_map,false);
- String[]
sideBar_menuAdvancedLinks=sideBar_htmlGenerator.getAdvancedLinks(sideBar_map,false);
+ HTMLGenerator sideBar_htmlGenerator = new HTMLGenerator();
+ org.perfsonar.webadmin.base2.config.ObjectMap sideBar_map =
ConfigurationServletHelper.objectMap(getServletContext());
+ String[] sideBar_menuBasicLinks =
sideBar_htmlGenerator.getBasicLinks(sideBar_map,false);
+ String[] sideBar_menuAdvancedLinks =
sideBar_htmlGenerator.getAdvancedLinks(sideBar_map,false);
%>

<table border="0" cellpadding="0" cellspacing="0">
@@ -27,9 +27,12 @@
out.println(sideBar_basicLink);
}
%>
- <span class="navtex">
+ <p><span class="navtex">
<a href="selfTest">Test</a>
- </span>
+ </span></p>
+ <p><span class="navtex">
+ <a href="login">Logout</a>
+ </span></p>
</td>
</tr>
<%

Modified:
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/wa/styles/default.css
===================================================================
---
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/wa/styles/default.css
2012-09-01 16:31:50 UTC (rev 5985)
+++
trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main/webapp/wa/styles/default.css
2012-09-02 19:54:16 UTC (rev 5986)
@@ -60,6 +60,10 @@
padding: 0px;
}

+table#login {
+ width: 300px;
+}
+
.input {
padding: 1em;
font-family: Verdana, Arial, Helvetica, sans-serif;
@@ -82,7 +86,7 @@
border: 0;
text-indent: -1000em;
cursor: pointer;
- background: transparent url(graphics/cancel_button.gif) no-repeat
center
+ background: transparent url(../graphics/cancel_button.gif) no-repeat
center
top;
float: right;
}
@@ -96,7 +100,7 @@
padding: 0;
text-indent: -1000em;
cursor: pointer;
- background: transparent url(graphics/apply_button_2.gif) no-repeat
+ background: transparent url(../graphics/apply_button_2.gif) no-repeat
center top;
float: right;
}
@@ -109,7 +113,36 @@
padding: 0;
text-indent: -1000em;
cursor: pointer;
- background: transparent url(graphics/apply_button.gif) no-repeat
center
+ background: transparent url(../graphics/apply_button.gif) no-repeat
center
top;
float: none;
-}
\ No newline at end of file
+}
+
+.button2_small {
+ width: 56px;
+ height: 29px;
+ margin: 0;
+ border: 0;
+ padding: 0;
+ background: transparent url(../graphics/button_2_small.gif) no-repeat
center top;
+ float: none;
+}
+
+/* Results */
+
+.failed {
+ padding: 10px;
+ margin: 10px;
+ border: 1px solid #960101;
+ background-color: #ff8080;
+ display: table;
+ font-weight: bold;
+}
+.succeed {
+ padding: 10px;
+ margin: 10px;
+ border: 1px solid #468C46;
+ background-color: #d9ecd9;
+ display: table;
+ font-weight: bold;
+}



  • [pS-dev] [GEANT/SA2/ps-java-services] r5986 - in trunk/perfsonar-java-web-admin/perfsonar-java-web-admin-component/src/main: java/org/perfsonar/webadmin/base2 java/org/perfsonar/webadmin/base2/config java/org/perfsonar/webadmin/base2/filters java/org/perfsonar/webadmin/base2/servlet java/org/perfsonar/webadmin/base2/servlet/util java/org/perfsonar/webadmin/base2/util resources webapp webapp/WEB-INF webapp/views webapp/wa/styles, svn-noreply, 09/02/2012

Archive powered by MHonArc 2.6.16.

Top of Page