brouter/brouter-server/src/main/java/btools/server/CgiUpload.java
2022-07-25 06:14:46 +02:00

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;
}
}