X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=map-server%2Faltos-map%2FAltosMap.java;fp=map-server%2Faltos-map%2FAltosMap.java;h=0000000000000000000000000000000000000000;hp=ad0a4f5f3aa439f4a9f530b0f7c96a88def9fe4e;hb=af678be97e419a1167a0630f28bcaba82d67929b;hpb=7b248524d4bd2c3ab64899b133230d131258396c diff --git a/map-server/altos-map/AltosMap.java b/map-server/altos-map/AltosMap.java deleted file mode 100644 index ad0a4f5f..00000000 --- a/map-server/altos-map/AltosMap.java +++ /dev/null @@ -1,182 +0,0 @@ -/* - * Copyright © 2018 Keith Packard - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - */ - -package altosmap; - -import java.net.*; -import java.io.*; -import java.util.*; -import java.text.*; - -import org.altusmetrum.altoslib_13.*; - -public class AltosMap { - - public final static int port = 16717; - - public final static String protocol_version = "1.0.0"; - - String query_string; - String remote_addr; - - public String reason_string(int code) { - switch (code) { - case 200: - return "OK"; - case 400: - return "Bad Request"; - case 403: - return "Forbidden"; - case 404: - return "Not Found"; - case 408: - return "Request Timeout"; - default: - return "Failure"; - } - } - - public void write_status(int status) { - System.out.printf("Status: %d %s\n", status, reason_string(status)); - } - - public void write_type(String type) { - System.out.printf("Content-Type: %s\n", type); - } - - public void fail(int status, String reason) { - write_status(status); - write_type("text/html"); - System.out.printf("\n"); - System.out.printf("\n"); - System.out.printf("Map Fetch Failure\n"); - System.out.printf("%s\n", reason); - System.out.printf("\n"); - System.exit(1); - } - - public void process() { - query_string = System.getenv("QUERY_STRING"); - - if (query_string == null) - fail(400, "Missing query string"); - - remote_addr = System.getenv("REMOTE_ADDR"); - - if (remote_addr == null) - fail(400, "Missing remote address"); - - String[] queries = query_string.split("&"); - - double lon = AltosLib.MISSING; - double lat = AltosLib.MISSING; - int zoom = AltosLib.MISSING; - String version = null; - - try { - for (String query : queries) { - String[] q = query.split("="); - if (q.length >= 2) { - String name = q[0]; - String value = q[1]; - if (name.equals("lon")) - lon = AltosParse.parse_double_net(value); - else if (name.equals("lat")) - lat = AltosParse.parse_double_net(value); - else if (name.equals("zoom")) - zoom = AltosParse.parse_int(value); - else if (name.equals("version")) - version = value; - else - fail(400, String.format("Extra query param \"%s\"", query)); - } - } - } catch (ParseException pe) { - fail(400, String.format("Invalid query: %s", pe.toString())); - } - - if (version != null) { - System.out.printf("Content-Type: text/plain\n"); - System.out.printf("\n"); - System.out.printf("%s\n", protocol_version); - } else { - if (lon == AltosLib.MISSING) - fail(400, "Missing longitude"); - if (lat == AltosLib.MISSING) - fail(400, "Missing latitude"); - if (zoom == AltosLib.MISSING) - fail(400, "Missing zoom"); - - try { - Socket socket = null; - int tries = 0; - - while (tries < 10 && socket == null) { - try { - socket = new Socket(InetAddress.getLoopbackAddress(), port); - } catch (IOException ie) { - Thread.sleep(100); - tries++; - } - } - - AltosJson request = new AltosJson(); - - request.put("lat", lat); - request.put("lon", lon); - request.put("zoom", zoom); - request.put("remote_addr", remote_addr); - - Writer writer = new PrintWriter(socket.getOutputStream()); - request.write(writer); - writer.flush(); - - AltosJson reply = AltosJson.fromInputStream(socket.getInputStream()); - - int status = reply.get_int("status", 400); - - if (status != 200) - fail(status, "Bad cache status"); - - String filename = reply.get_string("filename", null); - try { - File file = new File(filename); - long length = file.length(); - FileInputStream in = new FileInputStream(file); - String content_type = reply.get_string("content_type", null); - System.out.printf("Content-Type: %s\n", content_type); - System.out.printf("Content-Length: %d\n", file.length()); - System.out.printf("\n"); - byte[] buf = new byte[4096]; - int bytes_read; - while ((bytes_read = in.read(buf)) > 0) - System.out.write(buf); - } catch (IOException ie) { - fail(404, String.format("IO Exception: %s", ie.toString())); - } - } catch (Exception e) { - fail(404, String.format("Exception %s", e.toString())); - } - } - } - - public AltosMap() { - } - - public static void main(final String[] args) { - - new AltosMap().process(); - - } -}