brouter/brouter-server/src/main/java/btools/server/CgiUpload.java
2014-01-18 15:29:05 +01:00

111 lines
3.4 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;
}
}