This file is indexed.

/usr/share/routino/www/visualiser.cgi is in routino-www 2.4.1-1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#!/usr/bin/perl
#
# Routino data visualiser CGI
#
# Part of the Routino routing software.
#
# This file Copyright 2008-2012 Andrew M. Bishop
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#

# Use the directory paths script
require "paths.pl";

# Use the perl CGI module
use CGI ':cgi';


# Create the query and get the parameters

$query=new CGI;

@rawparams=$query->param;

# Legal CGI parameters with regexp validity check

%legalparams=(
              "latmin" => "[-0-9.]+",
              "latmax" => "[-0-9.]+",
              "lonmin" => "[-0-9.]+",
              "lonmax" => "[-0-9.]+",
              "data"   => "(junctions|super|oneway|highway-.*|transport-.*|barrier-.*|turns|speed|weight|height|width|length)"
             );

# Validate the CGI parameters, ignore invalid ones

foreach my $key (@rawparams)
  {
   foreach my $test (keys (%legalparams))
     {
      if($key =~ m%^$test$%)
        {
         my $value=$query->param($key);

         if($value =~ m%^$legalparams{$test}$%)
           {
            $cgiparams{$key}=$value;
            last;
           }
        }
     }
  }

# Parameters to limit range selected

%limits=(
         "junctions" => 0.2,
         "speed"     => 0.2,
         "super"     => 0.2,
         "oneway"    => 0.2,
         "highway"   => 0.2,
         "transport" => 0.2,
         "barrier"   => 0.2,
         "turns"     => 0.3,
         "weight"    => 0.3,
         "height"    => 0.3,
         "width"     => 0.3,
         "length"    => 0.3
        );

# Check the parameters

$latmin=$cgiparams{"latmin"};
$latmax=$cgiparams{"latmax"};
$lonmin=$cgiparams{"lonmin"};
$lonmax=$cgiparams{"lonmax"};
$data  =$cgiparams{"data"};

if($latmin eq "" || $latmax eq "" || $lonmin eq "" || $lonmax eq "" || $data eq "")
  {
   print header(-status => '500 Invalid CGI parameters');
   exit;
  }

$subdata=$data;
$subdata="highway"   if($data =~ m%highway-%);
$subdata="transport" if($data =~ m%transport-%);
$subdata="barrier"   if($data =~ m%barrier-%);

if(($latmax-$latmin)>$limits{$subdata} || ($lonmax-$lonmin)>$limits{$subdata})
  {
   print header(-status => '500 Selected area too large');
   exit;
  }

# Print the output

print header('text/plain');

print "$latmin $lonmin $latmax $lonmax\n";

# Run the filedumper

$params.=" --dir=$data_dir" if($data_dir);
$params.=" --prefix=$data_prefix" if($data_prefix);
$params.=" --visualiser --data=$data";
$params.=" --latmin=$latmin --latmax=$latmax --lonmin=$lonmin --lonmax=$lonmax";

system "$bin_dir/$filedumper_exe $params 2>&1";