X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=Usermgm.pm;h=3c58aebd8dabec6a888c3e161cae34154ec6efbb;hb=7c7b5c9c679147e5dbf172a312ed7ef992a9e63c;hp=6e0a05037b5e85184a139ad97ae04f0ab0b177ef;hpb=51bb1ae8ebc8e03ad042229fd12215ad63e5f6ef;p=NDIRC.git diff --git a/Usermgm.pm b/Usermgm.pm index 6e0a050..3c58aeb 100644 --- a/Usermgm.pm +++ b/Usermgm.pm @@ -28,8 +28,16 @@ our @ISA = qw/Exporter/; our @EXPORT = qw/addUser whois flags flag laston addPoints chattrG setHost setPNick deactivateUser getShips/; sub addUser { - my ($nick,$pnick) = @_; - DB(); + my ($msg, $command) = @_; + + my ($nick,$pnick); + if(defined $msg && $msg =~ /^(\w+)(?: ([^.\s]+))?$/){ + $nick = $1; + $pnick = $2; + }else{ + $ND::server->command("notice $ND::nick syntax: .$command nick [pnick] | nick must be alphanum characters, if no pnick is given then it will be set to nick"); + return; + } if (hc()){ $pnick = $nick unless $pnick; my $host = "$pnick.users.netgamers.org"; @@ -50,8 +58,15 @@ sub addUser { } } sub whois { - my ($nick) = @_; - DB(); + my ($msg, $command) = @_; + + my ($nick); + if(defined $msg && $msg =~ /^(\S+)$/){ + $nick = $1; + }else{ + $ND::server->command("notice $ND::nick syntax: .$command nick | % can be used for wildcards \%arro% will match barrow"); + return; + } if (officer()){ my $f = $ND::DBH->prepare("SELECT username, hostmask, concat(flag) FROM users u LEFT OUTER JOIN (SELECT uid,flag FROM groupmembers NATURAL JOIN groups ORDER BY uid,flag ) g ON g.uid = u.uid WHERE username ILIKE ? GROUP BY username,hostmask"); $f->execute($nick); @@ -67,12 +82,17 @@ sub whois { } sub flags { - my ($nick) = @_; - DB(); - unless ($1){ + my ($msg, $command) = @_; + + my ($nick); + if(defined $msg && $msg =~ /^(\S+)$/){ + $nick = $1; + }else{ my ($flags) = $ND::DBH->selectrow_array("SELECT TRIM(', ' FROM concat(flag||':'||groupname||', ')) FROM groups"); - $ND::server->command("msg $ND::target $flags"); - }elsif (hc()){ + $ND::server->command("notice $ND::nick syntax: .$command nick | % can be used for wildcards \%arro% will match barrow | Current flags: $flags"); + return; + } + if (hc()){ my $f = $ND::DBH->prepare("SELECT username, concat(flag), TRIM(', ' FROM concat(groupname||', ')) FROM users u LEFT OUTER JOIN (SELECT uid,flag,groupname FROM groupmembers NATURAL JOIN groups ORDER BY uid,flag ) g ON g.uid = u.uid WHERE username ILIKE ? GROUP BY username,hostmask"); $f->execute($nick); while (my @row = $f->fetchrow()){ @@ -81,13 +101,19 @@ sub flags { if ($f->rows == 0){ $ND::server->command("msg $ND::target No hit, maybe spelling mistake, or add % as wildcard"); } - }else{ - $ND::server->command("msg $ND::target Only HCs are allowed to check that"); } } sub flag { - my ($flag) = @_; + my ($msg, $command) = @_; + + my ($flag); + if(defined $msg && $msg =~ /^(\w)$/){ + $flag = $1; + }else{ + $ND::server->command("notice $ND::nick syntax: .$command flag"); + return; + } if (officer()|| ($ND::target eq $ND::scanchan && $flag eq 'S')){ my $f = $ND::DBH->prepare(qq{ @@ -105,7 +131,16 @@ WHERE flag = ?; } sub laston { - my ($flag,$min) = @_; + my ($msg, $command) = @_; + + my ($flag,$min); + if(defined $msg && $msg =~ /^(\w)(?: (\d+))?$/){ + $flag = $1; + $min = $2; + }else{ + $ND::server->command("notice $ND::nick syntax: .$command flag [days] | lists users and the number of days since they were last seen. If days is specified it will only list users with at least that amount of idle time."); + return; + } if (officer()){ my $f = $ND::DBH->prepare(qq{SELECT username,last @@ -196,9 +231,17 @@ sub addPoints { } sub chattrG { - my ($nick, $flags) = @_; - DB(); - if (hc() || ($flags =~ /^(\+|-)?x$/ && $ND::address eq 'Assassin.users.netgamers.org')){ + my ($msg, $command) = @_; + + my ($nick, $flags); + if(defined $msg && $msg =~ /^(\S+) ((\+|-)?\w+)$/){ + $nick = $1; + $flags = $2; + }else{ + $ND::server->command("notice $ND::nick syntax: .chattr nick [-]flags | % can be used for wildcards \%arro% will match barrow, if a - is given then flags will be removed, otherwise added"); + return; + } + if (hc()){# || ($flags =~ /^(\+|-)?x$/ && $ND::address eq 'Assassin.users.netgamers.org')){ my $f = $ND::DBH->prepare("SELECT uid,username FROM users WHERE username ILIKE ?"); $f->execute($nick); my @user = $f->fetchrow(); @@ -294,8 +337,15 @@ sub setPNick { } sub deactivateUser { - my ($nick) = @_; - DB(); + my ($msg, $command) = @_; + + my $nick; + if(defined $msg && $msg =~ /^(\S+)$/){ + $nick = $1; + }else{ + $ND::server->command("notice $ND::nick syntax: .$command user"); + return; + } if (hc()){ my $f = $ND::DBH->prepare("SELECT uid,username FROM users WHERE username ILIKE ?"); $f->execute($nick);