Ignore:
Timestamp:
2013-04-17T20:14:32+02:00 (11 years ago)
Author:
akks
Message:

Remote control: allow adding tags without confirmation for current session (add_tags), see #8612
added parsing of request headers and detecting request sender by IP and "referer" HTTP header

Location:
trunk/src/org/openstreetmap/josm/io/remotecontrol/handler
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddNodeHandler.java

    r5845 r5876  
    1313import org.openstreetmap.josm.data.osm.OsmPrimitive;
    1414import org.openstreetmap.josm.gui.util.GuiHelper;
     15import org.openstreetmap.josm.io.remotecontrol.AddTagsDialog;
    1516import org.openstreetmap.josm.io.remotecontrol.PermissionPrefWithDefault;
    1617import org.openstreetmap.josm.io.remotecontrol.handler.RequestHandler.RequestHandlerBadRequestException;
     
    9091        }
    9192        // parse parameter addtags=tag1=value1|tag2=vlaue2
    92         LoadAndZoomHandler.addTags(args);
     93        AddTagsDialog.addTags(args, sender);       
    9394    }
    9495
  • trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/AddWayHandler.java

    r5845 r5876  
    2020import org.openstreetmap.josm.data.osm.Way;
    2121import org.openstreetmap.josm.gui.util.GuiHelper;
     22import org.openstreetmap.josm.io.remotecontrol.AddTagsDialog;
    2223import org.openstreetmap.josm.io.remotecontrol.PermissionPrefWithDefault;
    2324import org.openstreetmap.josm.io.remotecontrol.handler.RequestHandler.RequestHandlerBadRequestException;
     
    5354        });
    5455        // parse parameter addtags=tag1=value1|tag2=value2
    55         LoadAndZoomHandler.addTags(args);       
     56        AddTagsDialog.addTags(args, sender);       
    5657    }
    5758
  • trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadAndZoomHandler.java

    r5790 r5876  
    66import java.awt.geom.Area;
    77import java.awt.geom.Rectangle2D;
    8 import java.io.UnsupportedEncodingException;
    9 import java.net.URLDecoder;
    108import java.util.HashSet;
    11 import java.util.Map;
    129import java.util.Set;
    1310import java.util.concurrent.Future;
     
    191188        }
    192189
    193         addTags(args);
    194     }
    195 
    196     /*
    197      * parse addtags parameters Example URL (part):
    198      * addtags=wikipedia:de%3DResidenzschloss Dresden|name:en%3DDresden Castle
    199      */
    200     static void addTags(final Map<String, String> args) {
    201         if (args.containsKey("addtags")) {
    202             GuiHelper.executeByMainWorkerInEDT(new Runnable() {
    203 
    204                 public void run() {
    205                     String[] tags = null;
    206                     try {
    207                         tags = URLDecoder.decode(args.get("addtags"), "UTF-8").split("\\|");
    208                     } catch (UnsupportedEncodingException e) {
    209                         throw new RuntimeException();
    210                     }
    211                     Set<String> tagSet = new HashSet<String>();
    212                     for (String tag : tags) {
    213                         if (!tag.trim().isEmpty() && tag.contains("=")) {
    214                             tagSet.add(tag.trim());
    215                         }
    216                     }
    217                     if (!tagSet.isEmpty()) {
    218                         String[][] keyValue = new String[tagSet.size()][2];
    219                         int i = 0;
    220                         for (String tag : tagSet) {
    221                             // support a  =   b===c as "a"="b===c"
    222                             String [] pair = tag.split("\\s*=\\s*",2);
    223                             keyValue[i][0] = pair[0];
    224                             keyValue[i][1] = pair.length<2 ? "": pair[1];
    225                             i++;
    226                         }
    227    
    228                         new AddTagsDialog(keyValue).showDialog();
    229                     }
    230                 }
    231             });
    232         }
     190        AddTagsDialog.addTags(args, sender);
    233191    }
    234192
  • trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/LoadObjectHandler.java

    r5844 r5876  
    1010import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
    1111import org.openstreetmap.josm.gui.util.GuiHelper;
     12import org.openstreetmap.josm.io.remotecontrol.AddTagsDialog;
    1213import org.openstreetmap.josm.io.remotecontrol.PermissionPrefWithDefault;
    1314
     
    4849                public void run() {
    4950                    Main.main.getCurrentDataSet().setSelected(ps);
    50                     LoadAndZoomHandler.addTags(args);
     51                    AddTagsDialog.addTags(args, sender);       
    5152                    ps.clear();
    5253                }
  • trunk/src/org/openstreetmap/josm/io/remotecontrol/handler/RequestHandler.java

    r5691 r5876  
    4343    /** will be filled with the command assigned to the subclass */
    4444    protected String myCommand;
     45   
     46    /**
     47     * who send th request?
     48     * the host from refrerer header or IP of request sender
     49     */
     50    protected String sender;
    4551
    4652    /**
     
    242248    }
    243249
     250    public void setSender(String sender) {
     251        this.sender = sender;
     252    }
     253 
    244254    public static class RequestHandlerException extends Exception {
    245255
Note: See TracChangeset for help on using the changeset viewer.