mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
135 lines
4.7 KiB
Java
135 lines
4.7 KiB
Java
/*
|
|
* 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.
|
|
*/
|
|
/**
|
|
* Title: PSI Java Framework: UserDialogRequestHandler<p>
|
|
* Copyright: PSI-BT AG<p>
|
|
* History:
|
|
* Date Author What's new
|
|
* 16.04.2001 VMentzner Created
|
|
*/
|
|
|
|
package com.psibt.framework.net;
|
|
/**
|
|
* This class implements a RequestHandler for the path "/userdialog/" in the PluggableHTTPServer.
|
|
* A simple input form is presented in the browser where you can enter a message. This message will be sent
|
|
* to the PluggableHTTPServer and shown in a JOptionPane MessageDialog.
|
|
*
|
|
* @author <a HREF="mailto:V.Mentzner@psi-bt.de">Volker Mentzner</a>
|
|
*/
|
|
public class UserDialogRequestHandler extends RootRequestHandler {
|
|
|
|
private Component parentComponent;
|
|
|
|
/**
|
|
* Creates a new UserDialogRequestHandler object
|
|
*/
|
|
public UserDialogRequestHandler() {
|
|
this(null);
|
|
}
|
|
|
|
/**
|
|
* Creates a new UserDialogRequestHandler object with a parentComponent reference
|
|
*/
|
|
public UserDialogRequestHandler(Component parentComponent) {
|
|
this.setTitle("user dialog");
|
|
this.setDescription("show user dialog");
|
|
this.setHandledPath("/userdialog/");
|
|
this.parentComponent = parentComponent;
|
|
}
|
|
|
|
/**
|
|
* Handles the given request and writes the reply to the given out-stream.
|
|
*
|
|
* @param request - client browser request
|
|
* @param out - Out stream for sending data to client browser
|
|
* @return if the request was handled by this handler : true, else : false
|
|
*/
|
|
public boolean handleRequest(String request, Writer out) {
|
|
String path = "";
|
|
String query = null;
|
|
try {
|
|
URL url = new URL("http://localhost"+request);
|
|
path = url.getPath();
|
|
query = url.getQuery();
|
|
if (path.startsWith(this.getHandledPath()) == false) {
|
|
return false;
|
|
}
|
|
|
|
out.write("HTTP/1.0 200 OK\r\n");
|
|
out.write("Content-type: text/html\r\n\r\n");
|
|
out.write("<HTML><HEAD><TITLE>" + this.getTitle() + "</TITLE></HEAD>\r\n");
|
|
out.write("<BODY><H1>" + this.getDescription() + "</H1>\r\n");
|
|
if ((query != null) && (query.length() >= 0)) {
|
|
int idx = query.indexOf("=");
|
|
String message = query.substring(idx+1, query.length());
|
|
// replace '+' by space
|
|
message = message.replace('+', ' ');
|
|
// replace hex strings starting with '%' by their values
|
|
idx = message.indexOf("%");
|
|
while (idx >= 0) {
|
|
String sl = message.substring(0, idx);
|
|
String sm = message.substring(idx+1, idx+3);
|
|
String sr = message.substring(idx+3, message.length());
|
|
try {
|
|
int i = Integer.parseInt(sm, 16);
|
|
sm = String.valueOf((char)i);
|
|
}
|
|
catch (Exception ex) {
|
|
sm = "";
|
|
}
|
|
message = sl + sm + sr;
|
|
idx = message.indexOf("%");
|
|
}
|
|
// show message in a new thread
|
|
if ((message != null) && (message.length() > 0)) {
|
|
Thread t = new Thread(new DialogThread(parentComponent, message));
|
|
t.start();
|
|
}
|
|
}
|
|
out.write("<form name=\"Formular\" ACTION=\""+this.getHandledPath()+"+\" METHOD=\"PUT\">");
|
|
out.write("<table>\r\n");
|
|
out.write(" <tr><td>Send message to user</td></tr>\r\n");
|
|
out.write(" <tr><td><textarea name=\"message\" rows=10 cols=50></textarea></td></tr>\r\n");
|
|
out.write("</table>\r\n");
|
|
out.write("<input type=submit value=\"Submit\">");
|
|
out.write("</form>");
|
|
out.write("</BODY></HTML>\r\n");
|
|
out.flush();
|
|
return true;
|
|
} catch (Exception ex) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Internal class to start the user dialog in a new thread. This makes the RequestHandler return
|
|
* immediatly
|
|
*/
|
|
class DialogThread implements Runnable {
|
|
private Component parentComponent;
|
|
private String message;
|
|
|
|
public DialogThread(Component parentComponent, String message) {
|
|
this.parentComponent = parentComponent;
|
|
this.message = message;
|
|
}
|
|
|
|
public void run() {
|
|
JOptionPane.showMessageDialog(parentComponent, message);
|
|
}
|
|
}
|
|
} |