]> ruin.nu Git - ndwebbie.git/blobdiff - lib/NDWeb/Controller/Members.pm
Allow non member attackers to post own coords
[ndwebbie.git] / lib / NDWeb / Controller / Members.pm
index 208a8c8d6da71ab5407f939de8a13b66b5cf0fdd..b88574505f2f2e677794889564e97c268fbc7c3b 100644 (file)
@@ -163,7 +163,7 @@ sub postowncoords : Local {
                $c->flash(error => $c->req->param('planet') . " are not valid coords.");
        }
 
-       $c->res->redirect($c->uri_for(''));
+       $c->res->redirect($c->uri_for('/'.$c->session->{referrer}));
 }
 
 sub postfleetsupdates : Local {
@@ -353,7 +353,7 @@ sub insertintel : Private {
                });
        my @scans;
        my $intel = $c->req->param('message');
-       while ($intel =~ m{http://[\w.]+/.+?scan(_id|_grp)?=(\w+)}g){
+       while ($intel =~ m{https?://[\w.]+/.+?scan(_id|_grp)?=(\w+)}g){
                my $groupscan = (defined $1 && $1 eq '_grp') || 0;
                my %scan;
                $scan{id} = $2;
@@ -586,16 +586,16 @@ sub parseconfirmations {
        $missions =~ s/\s\)/)/g;
        my $returnetare = qr/(\d+) \s+
                Arrival:\s*(\d+)/sx;
-       my $missionetare = qr/(\d+) (\s* \+ \s* \d+)? \s+
+       my $missionetare = qr/\s* (\d+ \+ \s*)? (\d+) \s+
                Arrival:\s*(\d+) \s+
                \QReturn ETA:\E\s*(?:(?<eta>Instant) \s+ Cancel \s+ Order
                        | (?<eta>\d+) \s+ Ticks \s+ Recall \s+ Fleet)/sx;
        my $etare = qr/(Galaxy:\d+Universe:\d+(?:Alliance:\d+)?
                |$missionetare
                |$returnetare)\s*/x;
-       my $missre = qr/((?:Fake\ )?\w+)\s*/x;
+       my $missre = qr/((?:Alliance\ Standby)|(?:(?:Fake\ )?\w+))\s*/x;
        if ($missions =~ m/
-               Ships \s+ Cla \s+ T\s?1 \s+ T\s?2 \s+ T\s?3 \s+ Base \s+ \(i\) \s (?<name>.+?) \s+ \(i\) \s+ (?<name>.+?) \s+ \(i\) \s+ (?<name>.+?) \s+ \(i\) \s+ TOTAL \s+
+               Ships \s+ Cla \s+ T\s?1 \s+ T\s?2 \s+ T\s?3 \s+ ETA \s+ Base \s+ \(i\) \s (?<name>.+?) \s+ \(i\) \s+ (?<name>.+?) \s+ \(i\) \s+ (?<name>.+?) \s+ \(i\) \s+ TOTAL \s+
                (?<ships>.+?)
                \QTotal Ships in Fleet\E \s+ (\d+) \s+ (?<amount>\d+) \s+ (?<amount>\d+) \s+ (?<amount>\d+) \s+
                Mission: \s* (?<missions>(?:$missre)*)  \s*
@@ -607,7 +607,7 @@ sub parseconfirmations {
                my @targets = split /\s+/, $+{targets};
                my @lts = split /\s+/, $+{lts};
                my @etas;
-               my $_ = $+{etas};
+               local $_ = $+{etas};
                while(/$etare/sxg){
                        push @etas, $1;
                }
@@ -629,10 +629,16 @@ sub parseconfirmations {
                                next;
                        }
 
+                       if ($missions[0] eq 'Alliance Standby'){
+                               shift @missions;
+                               push @slots,\%mission;
+                               next;
+                       }
+
                        given(shift @etas){
                                when(/$missionetare/sx){
                                        $mission{tick} = $3;
-                                       $mission{eta} = $1 + $+{eta};
+                                       $mission{eta} = $2 + $+{eta};
                                        $mission{back} = $3 + $mission{eta} - 1;
                                        $mission{target} = shift @targets;
                                        $mission{lt} = shift @lts;
@@ -645,7 +651,7 @@ sub parseconfirmations {
                                        $mission{target} = shift @targets;
                                        $mission{lt} = shift @lts;
                                        $mission{mission} = shift @missions;
-                                       die 'Did you forget some at the end?' if $mission{mission} ne 'Return';
+                                       die "Did you forget some at the end? '$mission{mission}'" if $mission{mission} ne 'Return';
                                }
                        }
                        push @slots,\%mission;
@@ -658,7 +664,7 @@ sub parseconfirmations {
                        amount => 0,
                        ships => []
                };
-               while ($match{ships}->[0] =~ m/(\w[ \w]+?)\s+(FI|CO|FR|DE|CR|BS)[^\d]+((?:\d+\s*){5})/g){
+               while ($match{ships}->[0] =~ m/(\w[ \w]+?)\s+(FI|CO|FR|DE|CR|BS|--)[^\d]+\d+\s+((?:\d+\s*){5})/g){
                        my $ship = $1;
                        my @amounts = split /\D+/, $3;
                        my $base = shift @amounts;