add_debug_user.pl
110 lines of code
1
#!/usr/local/bin/perl
2
3
# must have's!
4
use strict;
5
use warnings;
6
use CGI::Carp qw(fatalsToBrowser);
7
use DBI;
8
use URI::Escape;
9
10
use lib "/var/www/html/Pm";
11
12
use Html qw(pre_html_header header);
13
use Html2 qw(tag br hr embolden);
14
use Bc_chef qw(cookie_get);
15
use Bc_misc qw(get_param referrer);
16
use Bc_sql qw(sql_execute
17
              get_constant
18
              user_exists
19
              $QUERY_PAGE
20
              $QUERY_UID
21
              $LOGGEDIN
22
              is_debuggerAllowed
23
24
              $DB
25
             );
26
use Redir qw(notice_redir error_redir);
27
use User qw(isUserAdmin get_user_stat $DEBUGGER_ALLOWED $USER_DATA);
28
use Security qw(banned);
29
30
my $DEBUG = 0;
31
32
my $output;
33
34
if (not $DEBUGGER_ALLOWED) {
35
  my $msg =  "Access Denied";
36
  if ($DEBUG) { $msg .= " (add_debug_user.pl)"; }
37
  $output = error_redir("/", $msg);
38
} else {
39
  ############################################################
40
41
  my $uid_to_add = get_param($QUERY_UID);
42
43
  if ($uid_to_add) {
44
    my $uidnn = get_user_stat($uid_to_add, "nickname");
45
    my $remove = get_param("d");
46
    my $allowed = is_debuggerAllowed($uid_to_add);
47
48
    if ($DEBUG) {
49
      $output = pre_html_header();
50
      $output .= "uid: " . $uid_to_add . br;
51
      $output .= "nickname: " . $uidnn . br;
52
      $output .= "remove: " . $remove . br;
53
      $output .= "allowed: " . $allowed . br;
54
    } else {
55
      if (get_user_stat($uid_to_add, "ID") eq get_constant("SITE_ADMIN")) {
56
        if ($remove)
57
          { $output = error_redir(referrer(), "Remove not allowed"); } else
58
          { $output = error_redir(referrer(), "Add not allowed"); }
59
      } else {
60
        if ($remove) {
61
          if ($allowed) {
62
            my $delsql = "delete from debugger_allowed where UID=" . $DB->quote($uid_to_add);
63
64
            if ($DEBUG) {
65
              $output = pre_html_header();
66
              $output .= header("add_debug_user.pl", "", "", "", "grants access to debugger", "");
67
              $output .= $delsql;
68
            } else {
69
              my $r = sql_execute($delsql, "add debug user");
70
              if ($r)
71
                { $output = notice_redir(referrer(), "debugger access revoked for " . embolden($uidnn)); } else
72
                { $output = error_redir(referrer(), "could not deny access to debugger for " . embolden($uidnn)); }
73
            }
74
          } else {
75
            $output = error_redir(referrer(), "$uidnn wasn't found in the allow list");
76
          }
77
        } else {
78
          if (not $allowed) {
79
            my $addsql = "insert into debugger_allowed values (" . $DB->quote($uid_to_add) . ")";
80
81
            if ($DEBUG) {
82
              $output = pre_html_header();
83
              $output .= header("add_debug_user.pl", "", "", "", "grants access to debugger", "");
84
              $output .= $addsql;
85
            } else {
86
              my $r = sql_execute($addsql, "add debug user");
87
              if ($r)
88
                { $output = notice_redir(referrer(), "debugger access granted to " . embolden($uidnn)); } else
89
                { $output = error_redir(referrer(), "could not grant access to debugger for " . embolden($uidnn)); }
90
            }
91
          } else {
92
            $output = error_redir(referrer(), embolden($uidnn) . " is already on the allow list");
93
          }
94
        }
95
      }
96
    }
97
  } else {
98
    if ($DEBUG) {
99
      $output = pre_html_header();
100
      $output .= "invalid uid!";
101
    } else {
102
      $output = error_redir(referrer(), "Select a User First!");
103
    }
104
  }
105
  ############################################################
106
}
107
108
print $output;
109
110
exit 1;