/*********************************************************************************************************
* 프로그램명 : JavaScriptUtil.java 프로그램설명 : JSP, Servlet에서 자바스크립트를 편리하가 활용할수 있도록 지원 작성자 : 강원중 작성일 : 2004.01.06 변경일 :
* 2003.11.30
**********************************************************************************************************/
package kr.co.kihyun.text.javascript;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.InterruptedIOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.MalformedURLException;
import java.net.Socket;
import java.net.URL;
import java.net.URLConnection;
import javax.servlet.Servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletRequest;
public class JavaScriptUtil {
public static String alert(String str) {
StringBuffer strbuf = new StringBuffer();
strbuf.append("");
return strbuf.toString();
}
public static String redirect(String strURL) {
StringBuffer strbuf = new StringBuffer();
strbuf.append("\n");
return strbuf.toString();
}
public static String getJavaScript(String str) {
StringBuffer strbuf = new StringBuffer();
strbuf.append("\n");
return strbuf.toString();
}
public static void returnFile(String filename, OutputStream out) throws FileNotFoundException, IOException {
FileInputStream fis = null;
try {
fis = new FileInputStream(filename);
byte[] buf = new byte[4 * 1024]; // 4K buffer
int bytesRead;
while ((bytesRead = fis.read(buf)) != -1) {
out.write(buf, 0, bytesRead);
}
} finally {
if (fis != null)
fis.close();
}
}
public static void returnURL(URL url, OutputStream out) throws IOException {
InputStream in = url.openStream();
byte[] buf = new byte[4 * 1024]; // 4K buffer
int bytesRead;
while ((bytesRead = in.read(buf)) != -1) {
out.write(buf, 0, bytesRead);
}
}
public static void returnURL(URL url, PrintWriter out) throws IOException {
// Determine the URL's content encoding
URLConnection con = url.openConnection();
con.connect();
String encoding = con.getContentEncoding();
// Construct a Reader appropriate for that encoding
BufferedReader in = null;
if (encoding == null) {
in = new BufferedReader(new InputStreamReader(url.openStream()));
} else {
in = new BufferedReader(new InputStreamReader(url.openStream(), encoding));
}
char[] buf = new char[4 * 1024]; // 4Kchar buffer
int charsRead;
while ((charsRead = in.read(buf)) != -1) {
out.write(buf, 0, charsRead);
}
}
public static String getStackTraceAsString(Throwable t) {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
PrintWriter writer = new PrintWriter(bytes, true);
t.printStackTrace(writer);
return bytes.toString();
}
public static Servlet getServlet(String name, ServletRequest req, ServletContext context) {
try {
Servlet servlet = context.getServlet(name);
if (servlet != null)
return servlet;
Socket socket = new Socket(req.getServerName(), req.getServerPort());
socket.setSoTimeout(4000); // wait up to 4 secs for a response
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println("GET /servlet/" + name + " HTTP/1.0"); // the request
out.println();
try {
socket.getInputStream().read(); // Even one byte means its loaded
} catch (InterruptedIOException e) { /* timeout: ignore, hope for best */
//31.오류 상황 대응 부재_CWE-390 Add by YOUNGJUN,CHO
e.printStackTrace();
//++++++++++++++++++++++++++++++++++++++++++++++++
//16.부적절한 자원 해제(Socket)_CWE-404 : Add by KWON,HAN
} catch (IOException e) {
e.printStackTrace();
} finally {
socket.close();
//++++++++++++++++++++++++++++++++++++++++++++++++++++++
}
out.close();
// Try getting the servlet again.
return context.getServlet(name);
} catch (Exception e) {
// If there's any problem, return null.
return null;
}
}
public static URL getResource(ServletContext context, String resource) throws IOException {
// Short-circuit if resource is null
if (resource == null) {
throw new FileNotFoundException("Requested resource was null (passed in null)");
}
if (resource.endsWith("/") || resource.endsWith("\\") || resource.endsWith(".")) {
throw new MalformedURLException("Path may not end with a slash or dot");
}
if (resource.indexOf("..") != -1) {
throw new MalformedURLException("Path may not contain double dots");
}
String upperResource = resource.toUpperCase();
if (upperResource.startsWith("/WEB-INF") || upperResource.startsWith("/META-INF")) {
throw new MalformedURLException("Path may not begin with /WEB-INF or /META-INF");
}
if (upperResource.endsWith(".JSP")) {
throw new MalformedURLException("Path may not end with .jsp");
}
// Convert the resource to a URL
URL url = context.getResource(resource);
if (url == null) {
throw new FileNotFoundException("Requested resource was null (" + resource + ")");
}
return url;
}
public static void nude(String str) {
}
public static String toCRLF(String datas) {
datas = datas.replaceAll("\r\n", "\\\\n");
return datas;
}
}