package btools.server; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.URLDecoder; public class CgiUpload { public static void main(String[] args) { try { _main(args); } catch (Exception e) { System.out.println("unexpected exception: " + e); } } private static void _main(String[] args) throws Exception { String htmlTemplate = args[0]; String customeProfileDir = args[1]; String id = "" + System.currentTimeMillis(); // cgi-header System.out.println("Content-type: text/html"); System.out.println(); // write the post message to a file BufferedWriter bw = new BufferedWriter( new OutputStreamWriter( new FileOutputStream(customeProfileDir + "/" + id + ".brf"))); BufferedReader ir = new BufferedReader(new InputStreamReader(System.in)); String postData = ir.readLine(); String[] coordValues = new String[4]; if (postData != null) { int coordsIdx = postData.indexOf("coords="); if (coordsIdx >= 0) { int coordsEnd = postData.indexOf('&'); if (coordsEnd >= 0) { String coordsString = postData.substring(coordsIdx + 7, coordsEnd); postData = postData.substring(coordsEnd + 1); int pos = 0; for (int idx = 0; idx < 4; idx++) { int p = coordsString.indexOf('_', pos); coordValues[idx] = coordsString.substring(pos, p); pos = p + 1; } } } int sepIdx = postData.indexOf('='); if (sepIdx >= 0) postData = postData.substring(sepIdx + 1); postData = URLDecoder.decode(postData, "ISO-8859-1"); bw.write(postData); } bw.close(); // echo the template with a custom select item BufferedReader br = new BufferedReader( new InputStreamReader( new FileInputStream(htmlTemplate))); for (; ; ) { String line = br.readLine(); if (line == null) break; if (line.indexOf("") >= 0) { line = " "; } else if (line.indexOf("paste your profile here") >= 0) { System.out.println(""; } else { line = replaceCoord(line, "lonfrom", coordValues[0]); line = replaceCoord(line, "latfrom", coordValues[1]); line = replaceCoord(line, "lonto", coordValues[2]); line = replaceCoord(line, "latto", coordValues[3]); } System.out.println(line); } br.close(); } private static String replaceCoord(String line, String name, String value) { String inputTag = "= 0) { return inputTag + " value=\"" + value + "\">"; } return line; } }