93 lines
3 KiB
Java
93 lines
3 KiB
Java
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("<!-- sample profiles -->") >= 0) {
|
|
line = " <option value=\"../customprofiles/" + id + "\">custom</option>";
|
|
} else if (line.indexOf("paste your profile here") >= 0) {
|
|
System.out.println("<textarea type=\"text\" name=\"profile\" rows=30 cols=100>");
|
|
System.out.println(postData);
|
|
line = "</textarea>";
|
|
} 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 = "<td><input type=\"text\" name=\"" + name + "\"";
|
|
if (line.indexOf(inputTag) >= 0) {
|
|
return inputTag + " value=\"" + value + "\"></td>";
|
|
}
|
|
return line;
|
|
}
|
|
}
|