Кто может помочь в настройте данного скрипта? Его суть следующая:
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;
}
}
Немогу понять, что нужно поправить, куда вписать свой пароль?
Помогите, плиз.