From 816fe5105ca7111b535a2729094e65a2ad83718a Mon Sep 17 00:00:00 2001 From: Michael Andreen Date: Sat, 8 Aug 2020 20:06:40 +0200 Subject: [PATCH] Add jsrpc/addscans --- lib/NDWeb.pm | 1 + lib/NDWeb/Controller/JSRPC.pm | 33 +++++++++++++++++++++++++++++++++ root/src/jsrpc/addscans.tt2 | 0 3 files changed, 34 insertions(+) create mode 100644 root/src/jsrpc/addscans.tt2 diff --git a/lib/NDWeb.pm b/lib/NDWeb.pm index 55ffdac..283b56a 100644 --- a/lib/NDWeb.pm +++ b/lib/NDWeb.pm @@ -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//]); diff --git a/lib/NDWeb/Controller/JSRPC.pm b/lib/NDWeb/Controller/JSRPC.pm index 80912c1..bf7e594 100644 --- a/lib/NDWeb/Controller/JSRPC.pm +++ b/lib/NDWeb/Controller/JSRPC.pm @@ -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 index 0000000..e69de29 -- 2.39.2