You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by br...@hyperreal.org on 1998/05/05 05:15:34 UTC

cvs commit: apache-site/uri-res N2L.cgi

brian       98/05/04 20:15:34

  Added:       uri-res  N2L.cgi
  Log:
  Added a URN->URL resolution program provided by the Squid developers.  Let's
  see if this works!
  
  Revision  Changes    Path
  1.1                  apache-site/uri-res/N2L.cgi
  
  Index: N2L.cgi
  ===================================================================
  #!/usr/local/bin/perl
  $mirfile = '/pub/apache/mirrors/mirrors.list';
  
  print "Content-type: text/plain\r\n";
  print "Expires: ", &http_time(time+3600), "\r\n";
  print "\r\n";
  
  if ($ENV{'REQUEST_METHOD'} eq "POST") {
          read(STDIN, $request, $ENV{'CONTENT_LENGTH'});
  } elsif ($ENV{'REQUEST_METHOD'} eq "GET" ) {
          $request = $ENV{'QUERY_STRING'};
  }
  $request = &url_decode($request);
  
  #
  # special hack; turn 'urn:foo' into 'urn:foo:/'
  #
  $request .= ':/' unless ($request =~ /([^:]+):([^:]+):/);
  
  #$state = 0;
  open(MIRR, $mirfile) || die "can't open mirror file!";
  while (<MIRR>) {
      chop;
      next if (/^#/);
      next unless (/./);
  
      # We have two URN's, www.apache.org and ftp.apache.org.  
      # Soak them up into two arrays, then blast them out.
  
      ($scheme, $country, $url, $admin) = split(/\s+/);
      $urns{$scheme} .= "$url\n";
  }
  	
  if ($request =~ /www.apache.org/) {
      print "$urns{'http'}" 
  } elsif ($request =~ /ftp.apache.org/) {
      print "$urns{'ftp'}"
  }
  
  exit 0;
  
  sub url_decode {
          local($_) = @_;
          tr/+/ /;
          s/%(..)/pack("c",hex($1))/ge;
          $_;
  }
  
  sub http_time {
          local($t) = @_;
          local(@T) = gmtime($t);
          local(@WD) = ('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
          local(@MO) = ( 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
          sprintf "%s, %d %s %d %02d:%02d:%02d GMT",
                  $WD[$T[6]],
                  $T[3],
                  $MO[$T[4]],
                  $T[5],
                  $T[2],$T[1],$T[0];
  }