Автор Тема: Помогите в настройке NetGPS.pl  (Прочитано 3031 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн vohakot

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 1
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Помогите в настройке NetGPS.pl
« : 15 Июля 2006, 20:37:46 »
Кто может помочь в настройте данного скрипта? Его суть следующая:
1. GPS Bluetooth приемник. Принимает данные о месте нахождения со спутников и передает по Bluetooth на мобильный телефон.
2. Мобильный телефон с программой MobiTrack принимает данные по Bluetooth с GPS и передает (местоположение, скороть и направление движения) в интернет посредством GPRS.
3. Webserver с установленным скриптом netgps.pl принимает одну строку формата NMEA-0183 и записывает на сервер в указанную Вами директорию.
4. Компьютеры, подключенные к интернет (Windows 95, 2000, XP, PocketPC), считывают данные с сервера при помощи программы NetGPS (http://www.gpsvehiclenavigation.com/GPS/netgps.php) и отображают на карте в программе OziExplorer. Трек может быть сохранен компьютером для последующего проигрывания или анализа маршрута.
А вот исходник:

#!/usr/local/bin/perl

# netgps.pl
# Robert Pepper
# Version 1.1
# Use at your own risk.  Email problems to root@127.0.0.1

# ----- User defined
my $filedir    = \'/your/file/path/\';   # NOT in the webroot!
my $maxlength   = 10;                        # max length of usernames

# ----- Other variables, don\'t mess with them
my $username    = \'\';
my $password   = \'\';
my $mode      = \'\';
my $result       = 1;
my $returncode    = \'\';
my $coords      = \'\';
my $filename   = \'\';
my %FORM      = \'\';

#-----------------------------------
print "Content-type: text/plain\\n\\n";

&parseget();

($username,$password) = &getid($FORM{\'un\'},$FORM{\'pw\'});

# Filename controlled for security, can modify pre/suffix.
$filename = "ng-".$username.".txt";

# Decide what to do
if ($FORM{\'cds\'}) {
   $mode = \'remote\';
   $coords = &validateNMEA($FORM{\'cds\'});
   &remote;
   $result = \'GPSOK\';
} else {
   $mode = \'recv\';
   $result = &receiver($username);
   $result = "GPSOK$coords";
}

print "$result";

#----------------------------------
# ** Subs **
#----------------------------------

#----------------------------------
# It\'s all gone wrong!

sub failed() {
   my $error = shift;
   print "GPSERROR:$error:\\n\\n";
   exit 0;
}

#----------------------------------
# Remote is calling, supplying coords.  

sub remote() {
   if (-e "$filedir$filename") {
      my $filecont   = \'\';
      my $pwd2      = \'\';
      open FNAME, "$filedir$filename" or &failed("Proc error: RCV-FN1");
      $filecont = or &failed("Proc error: RCV-FN2");
      close FNAME or &failed("Proc error: RCV-FN3");

      ($pwd2,) = split /\\@/, $filecont;

      if ($pwd2 ne $password) {
         &failed("Incorrect password/unknown username.");
      }
   }

   open FNAME, ">$filedir$filename" or &failed("{Proc error: REM-FN1");
   print FNAME "$password\\@$coords\\n" or &failed("Proc error: REM-FN2");
   close FNAME or &failed("Proc error: REM-FN3");
}

#----------------------------------
# Receiver is calling, wanting coords.  Also validate password.

sub receiver() {
   my $filecont   = \'\';
   my $pwd2      = \'\';
   open FNAME, "$filedir$filename" or &failed("Proc error: RCV-FN1");
   $filecont = or &failed("Proc error: RCV-FN2");
   close FNAME or &failed("Proc error: RCV-FN3");

   ($pwd2,$coords) = split /\\@/, $filecont;

   if ($pwd2 ne $password) {
      &failed("Incorrect password/unknown username.");
   }
}

#----------------------------------
# Validate username

sub getid() {
   ($uname,$pwd) = @_;

   # we don\'t want overly long names for security.
   if (length($uname) > $maxlength or length($pwd) > $maxlength) {
      &failed("Incorrect password/unknown username.");
   }

   # only allow a-z, A-Z and 0-9 as usernames.
   if ($uname!~/^[a-zA-Z0-9]+$/) {
      &failed("Incorrect password/unknown username.");
   }

   # be a bit more generous for passwords
   if ($pwd!~/^[a-zA-Z0-9\\-]+$/) {
      &failed("Incorrect password/unknown username.");
   }

   return ($uname,$pwd);
}

#ERR:Invalid NMEA data: \'$GPRMC,143238,V,3731.0466,S,14523.8828,E,37.8,191.0,201202,11.8,E,S*0B\' Code IV:
#----------------------------------
# Validate NMEA string

sub validateNMEA() {
   my $cds = shift;

   # NMEA sentences should be no more than 82 chars
   if (length($cds) > 82) {
      &failed("Invalid NMEA data: \'$cds\' Code L");
   }

   # Regex to match four NMEA sentences
   #if ( $cds=~/^(\\$GP(RMC|GSA|GSV|GGA)[ABCDFVMNESW0-9\\,\\*\\.]+)$/ ) {
   if ( $cds=~/^(\\$GP(RMC|GSA|GSV|GGA)[AVMNESW0-9\\,\\.]+\\*[ABCDEF0-9][ABCDEF0-9]?)$/ ) {
      return $1;
   } else {
      &failed("Invalid NMEA data: \'$cds\' Code IV");
   }
}

#----------------------------------
# Parse GET data

sub parseget() {
   my @pairs;
   my $name, $value;
   @pairs = split(/&/, $ENV{\'QUERY_STRING\'});
   foreach $pair (@pairs) {
      ($name, $value) = split(/=/, $pair);
      $value =~ tr/+/ /;
      $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
      $value =~ s/<(([^>])*)>//g;
      $FORM{$name} = $value;
   }
}

Немогу понять, что нужно поправить, куда вписать свой пароль?
Помогите, плиз. :(

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Помогите в настройке NetGPS.pl
« Ответ #1 : 17 Июля 2006, 12:37:13 »
Пароль отправляется с формы(html страницы). Сравнивается с содержащимся в файле ng-".$username.".txt
Цитировать

# Use at your own risk. Email problems to root@127.0.0.1

Чудный комментарий. Нужно будет запомнить.
The documentations is your friend

 

Sitemap 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