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