]> ruin.nu Git - ndwebbie.git/commitdiff
Add jsrpc/addscans
authorMichael Andreen <harv@ruin.nu>
Sat, 8 Aug 2020 18:06:40 +0000 (20:06 +0200)
committerMichael Andreen <harv@ruin.nu>
Sat, 8 Aug 2020 18:06:40 +0000 (20:06 +0200)
lib/NDWeb.pm
lib/NDWeb/Controller/JSRPC.pm
root/src/jsrpc/addscans.tt2 [new file with mode: 0644]

index 55ffdac60d6d986d856ac494a57b10f63dd071eb..283b56ac25ac40cc6bce767c4404ba14dcdf6cb9 100644 (file)
@@ -124,6 +124,7 @@ __PACKAGE__->deny_access_unless('/intel/members',[qw/intel_members/]);
 __PACKAGE__->deny_access_unless('/intel/member',[qw/intel_member/]);
 __PACKAGE__->deny_access_unless('/intel/naps',[qw/intel_naps/]);
 __PACKAGE__->deny_access_unless('/jsrpc',[qw//]);
+__PACKAGE__->allow_access_if('/jsrpc/addscans',1);
 __PACKAGE__->allow_access_if('/jsrpc/end',1);
 __PACKAGE__->deny_access_unless('/forum/allUnread',[qw//]);
 __PACKAGE__->deny_access_unless('/forum/privmsg',[qw//]);
index 80912c10732e5b53045de5e071b1f53cb7de2a3f..bf7e5940256f6bf056d3cfbb3d268e4f77b86175 100644 (file)
@@ -219,6 +219,39 @@ sub assertTarget : Private {
        }
 }
 
+sub addscans : Local {
+       my ( $self, $c ) = @_;
+       my $dbh = $c->model;
+
+       my $findscan = $dbh->prepare(q{SELECT scan_id FROM scans
+               WHERE scan_id = LOWER(?) AND tick >= tick() - 168 AND groupscan = ?
+               });
+       my $addscan = $dbh->prepare(q{INSERT INTO scans (scan_id,tick,uid,groupscan)
+               VALUES (LOWER(?),tick(),?,?)
+               });
+       my $addpoint = $dbh->prepare(q{UPDATE users SET scan_points = scan_points + 1
+               WHERE uid = ?
+               });
+       my $message = $c->req->param('message');
+       my @scans;
+       while ($message =~ m{scan(_id|_grp)?=(\w+)}g){
+               my $groupscan = (defined $1 && $1 eq '_grp') || 0;
+               my %scan;
+               $scan{id} = $2;
+               $scan{group} = $groupscan;
+               $findscan->execute($2,$groupscan);
+               if ($findscan->rows == 0){
+                       if ($addscan->execute($2,$c->stash->{UID},$groupscan)){
+                               $addpoint->execute($c->stash->{UID}) unless $groupscan;
+                               $scan{added} = 1;
+                       }
+               }else{
+                       $scan{message} = 'already exists';
+               }
+               push @scans,\%scan;
+       }
+}
+
 sub end : ActionClass('RenderView') {
        my ($self,$c) = @_;
        $c->res->content_type('application/xml');
diff --git a/root/src/jsrpc/addscans.tt2 b/root/src/jsrpc/addscans.tt2
new file mode 100644 (file)
index 0000000..e69de29