diff options
author | cvs2git <cvs2git> | 2002-08-12 06:17:10 +0000 |
---|---|---|
committer | cvs2git <cvs2git> | 2002-08-12 06:17:10 +0000 |
commit | 160be29a0dc62e79a4fb95d2ab8c0c7e5996760e (patch) | |
tree | 94ebadb17321b138fd7bfd9a5c379eec97c5d328 /rt/bin | |
parent | 3ef62a0570055da710328937e7f65dbb2c027c62 (diff) |
This commit was manufactured by cvs2svn to create branch 'BESTPRACTICAL'.
Diffstat (limited to 'rt/bin')
-rw-r--r-- | rt/bin/initacls.Oracle | 26 | ||||
-rwxr-xr-x | rt/bin/initacls.Pg | 28 | ||||
-rwxr-xr-x | rt/bin/initacls.mysql | 20 | ||||
-rw-r--r-- | rt/bin/rtadmin | 1040 |
4 files changed, 0 insertions, 1114 deletions
diff --git a/rt/bin/initacls.Oracle b/rt/bin/initacls.Oracle deleted file mode 100644 index 8d05f45e1..000000000 --- a/rt/bin/initacls.Oracle +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh - -DATABASEHOME=$1 -HOSTNAME=$2 -PORT=$3 -DATABASEADMIN=$4 -DBAPASSWD=$5 -DATABASENAME=$6 -DATABASEACLS=$7 - -BINDIR=${DATABASEHOME}/bin - -echo "DBHOME = $DATABASEHOME" -echo "HOSTNAME = $HOSTNAME" -echo "PORT = $PORT" -echo "DATABASEADMIN = $DATABASEADMIN" -echo "DBAPASSWD = $DBAPASSWD" -echo "DATABASENAME = $DATABASENAME" - -PATH=$PATH:$BINDIR -export PATH - -echo "Please enter ${DATABASEADMIN}'s password for the SID ${DATABASENAME} to create an rt user"; - -$BINDIR/sqlplus ${DATABASEADMIN}@${DATABASENAME} @$DATABASEACLS - diff --git a/rt/bin/initacls.Pg b/rt/bin/initacls.Pg deleted file mode 100755 index 82e32de74..000000000 --- a/rt/bin/initacls.Pg +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/sh - -DATABASEHOME=$1 -HOSTNAME=$2 -PORT=$3 -DATABASEADMIN=$4 -DBAPASSWD=$5 -DATABASENAME=$6 -DATABASEACLS=$7 - -BINDIR=${DATABASEHOME}/bin - - -PATH=$PATH:$BINDIR -export PATH - -echo "Enter the postgres administrator's database password to create a new user for rt" - -if [ "fnord$PORT" != "fnord" ]; then - PORT="-p $PORT" -fi; - -if [ "fnord$HOSTNAME" != "fnord" ]; then - HOSTNAME="-h $HOSTNAME" -fi; - -psql $HOSTNAME $PORT -d $DATABASENAME -f $DATABASEACLS -U $DATABASEADMIN - diff --git a/rt/bin/initacls.mysql b/rt/bin/initacls.mysql deleted file mode 100755 index 17e63f837..000000000 --- a/rt/bin/initacls.mysql +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh - -DATABASEHOME=$1 -HOSTNAME=$2 -PORT=$3 -DATABASEADMIN=$4 -DBAPASSWD=$5 -DATABASENAME=$6 -DATABASEACLS=$7 - -BINDIR=${DATABASEHOME}/bin - -PATH=$PATH:$BINDIR -export PATH - -echo "Enter the mysql administrator's database password to create a new user for RT" -$BINDIR/mysql --host=${HOSTNAME} --port=${PORT} --user=${DATABASEADMIN} -p${DBAPASSWD} mysql < $DATABASEACLS - -echo "Enter the mysql administrator's database password to nondestructively reload the database" -$BINDIR/mysqladmin --host=${HOSTNAME} --port=${PORT} --user=${DATABASEADMIN} -p${DBAPASSWD} reload diff --git a/rt/bin/rtadmin b/rt/bin/rtadmin deleted file mode 100644 index 25ba1b06a..000000000 --- a/rt/bin/rtadmin +++ /dev/null @@ -1,1040 +0,0 @@ -#!!!PERL!! -w -# -# $Header: /home/cvs/cvsroot/freeside/rt/bin/Attic/rtadmin,v 1.1 2002-08-12 06:17:07 ivan Exp $ -# RT is (c) 1996-2001 Jesse Vincent <jesse@fsck.com> - -use strict; -use Carp; -use Getopt::Long qw(:config pass_through); - -use lib "!!RT_LIB_PATH!!"; -use lib "!!RT_ETC_PATH!!"; - -use RT::Interface::CLI qw(CleanEnv LoadConfig DBConnect - GetCurrentUser GetMessageContent); - -#Clean out all the nasties from the environment -CleanEnv(); - -#Load etc/config.pm and drop privs -LoadConfig(); - -#Connect to the database and get RT::SystemUser and RT::Nobody loaded -DBConnect(); - -#Drop setgid permissions -RT::DropSetGIDPermissions(); - -#Get the current user all loaded -my $CurrentUser = GetCurrentUser(); - -unless ($CurrentUser->Id) { - print "No RT user found. Please consult your RT administrator.\n"; - exit(1); -} - - - - -PickMode(); - - -# {{{ Help - -sub Help { - - # {{{ help_acl -my $help_acl =" - Access control - --grant-right <right> - --revoke-right <right> - --userid <user> - --groupid <group> - --list-rights"; - -# }}} - - # {{{ help_keyword_sel -my $help_keyword_sel = " - Keyword Selections - --add-keyword-select - --modify-keyword-select <name> - --ks-name <name> - --ks-keyword <keyword> - --ks-single - --ks-multiple - --ks-depth <int> - - --disable-keyword-select <name>"; -# }}} - - # {{{ help_scrip -my $help_scrip = " - Scrips - --create-scrip - --scrip-condition <condition name or id> - --scrip-action <action name or id> - --scrip-template <template name or id> - - --delete-scrip <id> - --list-scrips"; - -# }}} - - # {{{ help_template -my $help_template = " - Templates - --delete-template [<id>|<name>] - --display-template [<id>|<name>] - - --create-template - --modify-template [<id>|<name>] - Flags for --create-template and --modify-template - --template-name - --template-description - --template-edit-content - - --list-templates"; - -# }}} - - -print <<EOF; - -USAGE: rtadmin --user <userid> [Userflags] - rtadmin --list-users - rtadmin --queue <queueid> [Queueflags] - rtadmin --list-queues - rtadmin --group [groupflags] - rtadmin --list-groups - rtadmin --system [SystemFlags] - rtadmin --keyword [keywordflags] - -User configuration for --user <userid> - - --disable - --create - --display - - Core Attributes - --userid - --gecos - --password - --emailaddress - --privileged - --comments - --signature - --organization - - Names - --realname - --nickname - - Auth and external info - --externalcontactinfoid - --contactinfosystem - --externalauthid - --authsystem - - Phone numbers - --pagerphone - --workphone - --mobilemphone - --homephone - - Paper address - --address1 - --address2 - --city - --state - --zip - --country - --freeformcontactqinfo - - -Group Configuration for --group <groupid> - --create - --delete - --display - - --name <new name> - --description <new description> - - - - --add-member <userid> - --delete-member <userid> - --list-members - -Queue Configuration for --queue <queueid> - --create - --disable - --display - - --name <name> - --correspondaddress <email address> - --commentaddress <email address> - --initialpriority <int> - --finalpriority <int> - --defaultduein <days> - - --add-cc <email address> - --delete-cc <email address> - --add-admincc <email address> - --delete-admincc <email address> - --list-watchers - - - -$help_acl - -$help_keyword_sel - -$help_template - -$help_scrip - - -System configuration for --system - -$help_acl - -$help_keyword_sel - -$help_template - -$help_scrip - - -Keyword configuration for --keyword <fully qualified name> - --list-children - --create-child <name> - --disable - --name <new name> - --description <new description> - -EOF - - - -} - -# }}} - -# {{{ PickMode - -sub PickMode { - my ($user,$group, $queue, $system, $keyword, $listusers, - $listgroups, $listqueues, $help); - - - GetOptions ('help|h|usage' => \$help, - 'user=s' => \$user, - 'queue=s' => \$queue, - 'group=s' => \$group, - 'system' => \$system, - 'keyword=s', => \$keyword, - 'list-users' => \$listusers, - 'list-queues' => \$listqueues, - 'list-groups' => \$listgroups, - ); - - - - if ($user) { AdminUser($user) } - elsif ($group) { AdminGroup($group) } - elsif ($queue) { AdminQueue($queue) } - elsif ($system) { AdminSystem($system) } - elsif ($keyword) { AdminKeywords($keyword) } - elsif ($listusers) { ListUsers() } - elsif ($listgroups) { ListGroups() } - elsif ($listqueues) { ListQueues() } - elsif ($help) { Help()} - else { - print "No command found\n"; - } - exit(0); -} - -# }}} - -# {{{ AdminUser - -sub AdminUser { - my $user=shift; - my %args; - - GetOptions(\%args, - 'create', 'disable|delete', 'display', - 'Name=s', 'Gecos=s', 'Password=s', - 'EmailAddress=s', 'Privileged=s', 'Comments=s', 'Signature=s', - 'Organization=s', 'RealName=s', 'NickName=s', - 'ExternalContactInfoId=s', 'ContactInfoSystem=s', - 'ExternalAuthId=s', 'AuthSystem=s', - 'HomePhone=s', 'WorkPhone=s', 'MobilePhone=s', 'PagerPhone=s', - 'Address1=s', 'Address2=s', 'City=s', 'State=s', 'Zip=s', - 'Country=s', 'FreeformContactInfo=s'); - - my $user_obj = new RT::User($CurrentUser); - - - #Create the user if we need to - if ($args{'create'}) { - my ($status, $msg) = - $user_obj->Create( Name => ($args{'Name'} || $user), - Gecos => $args{'Gecos'}, - Password => $args{'Password'}, - EmailAddress => $args{'EmailAddress'}, - Privileged => $args{'Privileged'}, - Comments => $args{'Comments'}, - Signature => $args{'Signature'}, - Organization => $args{'Organization'}, - RealName => $args{'RealName'}, - NickName => $args{'NickName'}, - ExternalContactInfoId => $args{'ExternalContactInfoId'}, - ContactInfoSystem => $args{'ContactInfoSystem'}, - ExternalAuthId => $args{'ExternalAuthId'}, - AuthSystem => $args{'AuthSystem'}, - HomePhone => $args{'HomePhone'}, - WorkPhone => $args{'WorkPhone'}, - MobilePhone => $args{'MobilePhone'}, - PagerPhone => $args{'PagerPhone'}, - Address1 => $args{'Address1'}, - Address2 => $args{'Address2'}, - City => $args{'City'}, - State => $args{'State'}, - Zip => $args{'Zip'}, - FreeformContactInfo => $args{'FreeformContactInfo'} - ); - - print "$msg\n"; - return(); - - } - else { - - - #Load the user - $user_obj->Load($user); - - unless ($user_obj->id) { - print "User '$user' not found\n"; - return(); - } - - - - #modify the user if we need to - my @attributes = ('Name', 'Gecos', - 'EmailAddress', 'Privileged', 'Comments', 'Signature', - 'Organization', 'RealName', 'NickName', - 'ExternalContactInfoId', 'ContactInfoSystem', - 'ExternalAuthId', 'AuthSystem', - 'HomePhone', 'WorkPhone', 'MobilePhone', 'PagerPhone', - 'Address1', 'Address2', 'City', 'State', 'Zip', - 'Country', 'FreeformContactInfo'); - foreach my $attrib (@attributes) { - if ( (exists ($args{"$attrib"})) and - ($user_obj->$attrib() ne $args{"$attrib"})) { - - my $method = "Set$attrib"; - my ($val, $msg) = $user_obj->$method($args{"$attrib"}); - print "User ".$user_obj->Name. " $attrib: $msg\n"; - - } - } - - if (exists ($args{'Password'})) { - my ($code, $msg); - ($code, $msg) = $user_obj->SetPassword($args{'Password'}); - print "User ". $user_obj->Name. ' Password: '. $msg . "\n"; - } - - #Check if we need to display the user - if ($args{'display'}) { - foreach my $attrib (@attributes) { - next if ($attrib eq 'Password'); #Can't see the password - printf("%22.22s %-64s\n",$attrib, ($user_obj->$attrib()||'(undefined)')); - - } - } - - #Check if we need to delete the user - if ($args{'disable'}) { - my ($val, $msg) = $user_obj->SetDisabled(1); - print "$msg\n"; - } - - } -} - -# }}} - -# {{{ AdminQueue - -sub AdminQueue { - my $queue=shift; - my %args; - - GetOptions(\%args, - 'create', 'disable|delete', 'display', - 'Name=s', 'CorrespondAddress=s', 'Description=s', - 'CommentAddress=s', 'InitialPriority=n', 'FinalPriority=n', - 'DefaultDueIn=n', - - 'add-cc=s@', 'add-admincc=s@', - 'delete-cc=s@', 'delete-admincc=s@', - 'list-watchers', 'create-template' - ); - - use RT::Queue; - my $queue_obj = new RT::Queue($CurrentUser); - - #Create the queue if we need to - if ($args{'create'}) { - my ($status, $msg) = - $queue_obj->Create( - Name => ($args{'Name'} || $queue) , - CorrespondAddress => $args{'CorrespondAddress'}, - Description => $args{'Description'}, - CommentAddress => $args{'CommentAddress'}, - InitialPriority => $args{'InitialPriority'}, - FinalPriority => $args{'FinalPriority'}, - DefaultDueIn => $args{'DefaultDueIn'} - ); - - print "$msg\n"; - } - else { - #Load the queue - $queue_obj->Load($queue); - - unless ($queue_obj->id) { - print "Queue '$queue' not found\n"; - return(); - } - - #modify if we need to - my @attributes = qw(Name CorrespondAddress Description - CommentAddress InitialPriority FinalPriority - DefaultDueIn - ); - foreach my $attrib (@attributes) { - if ( (exists ($args{"$attrib"})) and - ($queue_obj->$attrib() ne $args{"$attrib"})) { - - my $method = "Set$attrib"; - my ($val, $msg) = $queue_obj->$method($args{"$attrib"}); - print "Queue ".$queue_obj->Name. " $attrib: $msg\n"; - - } - } - - - #Check if we need to display the queue - if ($args{'display'}) { - foreach my $attrib (@attributes) { - printf("%22.22s %-64s\n",$attrib, ($queue_obj->$attrib()||'(undefined)')); - - } - } - - foreach my $person (@{$args{'add-cc'}}) { - my ($val, $msg) = $queue_obj->AddCc(Email => $person); - print "$msg\n"; - } - foreach my $person (@{$args{'add-admincc'}}) { - my ($val, $msg) = $queue_obj->AddAdminCc(Email => $person); - print "$msg\n"; - } - - foreach my $person (@{$args{'delete-cc'}}) { - my ($val, $msg) = $queue_obj->DeleteCc($person); - print "$msg\n"; - } - foreach my $person (@{$args{'delete-admincc'}}) { - my ($val, $msg) = $queue_obj->DeleteAdminCc($person); - print "$msg\n"; - } - - if ($args{'list-watchers'}) { - require RT::Watchers; - my $watchers = new RT::Watchers($CurrentUser); - $watchers->LimitToQueue($queue_obj->id); - while (my $watcher = $watchers->Next()) { - printf("%10s %-60s\n", - $watcher->Type, $watcher->Email ); - } - } - - AdminTemplates($queue_obj->Id()); - AdminScrips($queue_obj->Id()); - AdminRights($queue_obj->Id()); - AdminKeywordSelects($queue_obj->Id()); - - #Check if we need to delete the queue - if ($args{'disable'}) { - my ($val, $msg) = $queue_obj->SetDisabled(1); - print "$msg\n"; - } - - } -} - -# }}} - -# {{{ AdminKeywords - -sub AdminKeywords { - my $keyword = shift; - - my %args; - GetOptions(\%args, 'list-children', 'create-child=s', 'disable|delete', 'Name=s', 'Description=s'); - - use RT::Keyword; - - my $key_obj = new RT::Keyword($CurrentUser); - my $key_id; - - #If we're dealing with the root of the keyword list - if ($keyword eq '/') { - $key_id=0; - } - else { - my ($val, $msg) = $key_obj->LoadByPath( $keyword ); - unless ($val) { - print $msg ."\n"; - } - $key_id = $key_obj->Id(); - } - - if ($args{'create-child'}) { - my $child = new RT::Keyword($CurrentUser); - - my ($val, $msg) = $child->Create( Parent => $key_id, - Name => $args{'create-child'}, - ); - print $msg ."\n"; - } - - elsif ($args{'list-children'}) { - my $keywords; - if ($key_obj->id) { - $keywords = $key_obj->Children(); - } - #If we didn't actually have a keyword object, we need to create our own Keywords object. - else { - $keywords = new RT::Keywords($CurrentUser); - $keywords->LimitToParent(0); - } - - while (my $key=$keywords->Next) { - print $key->Name; - if ($key->Description) { - print " (" . $key->Description .")"; - } - print "\n"; - } - - - } - - #Else we wanna do some modification. - else { - - #If we didn't load a keyword, get out - return(undef) unless ($key_obj->Id); - - - my @attributes = qw( Name Description ); - foreach my $attrib (@attributes) { - if ( (exists ($args{"$attrib"})) and - ($key_obj->$attrib() ne $args{"$attrib"})) { - - my $method = "Set$attrib"; - my ($val, $msg) = $key_obj->$method($args{"$attrib"}); - - print "Keyword ".$key_obj->Name. " $attrib: $msg\n"; } - } - - if ($args{'disable'}) { - $key_obj->SetDisabled(1); - - } - - } -} - -# }}} - -# {{{ AdminKeywordSelects - -sub AdminKeywordSelects { - my $queue = shift; - # O for queue means global - - my %args; - GetOptions(\%args, 'add-keyword-select','disable-keyword-select|delete-keyword-select=s', - 'modify-keyword-select=s', - 'keyword-select-Keyword|ks-keyword=s', - 'keyword-select-Single|ks-single', - 'keyword-select-Multiple|ks-multiple', - 'keyword-select-Depth|ks-depth=i', - 'keyword-select-Name|ks-name=s' - ); - - # sanitize single vs multiple. - if ($args{'keyword-select-Multiple'}) { - $args{'keyword-select-Single'} = 0; - } - - use RT::KeywordSelect; - my $keysel_obj = new RT::KeywordSelect($CurrentUser); - if ($args{'add-keyword-select'}) { - - my ($val, $msg) = $keysel_obj->Create( Keyword => $args{'keyword-select-Keyword'}, - Depth => $args{'keyword-select-Depth'}, - Single => $args{'keyword-select-Single'}, - Name => $args{'keyword-select-Name'}, - ObjectType => 'Ticket', - ObjectField => 'Queue', - ObjectValue => $queue); - print $msg ."\n"; - } - elsif ($args{'modify-keyword-select'}) { - $keysel_obj->LoadByName(Name => $args{'modify-keyword-select'}, - Queue => $queue - ); - - unless ($keysel_obj->Id()) { - print "Keyword select not found\n"; - return(); - } - my @attributes = qw( Name Keyword Single Depth ); - foreach my $attrib (@attributes) { - if ( (exists ($args{"keyword-select-$attrib"})) and - ($keysel_obj->$attrib() ne $args{"keyword-select-$attrib"})) { - - my $method = "Set$attrib"; - my ($val, $msg) = $keysel_obj->$method($args{"keyword-select-$attrib"}); - - print "Keyword select ".$keysel_obj->Name. " $attrib: $msg\n"; } - } - - - } - - - elsif ($args{'disable-keyword-select'}) { - $keysel_obj->LoadByName(Name => $args{'disable-keyword-select'}, - Queue => $queue); - - $keysel_obj->SetDisabled(1); - - } -} - -# }}} - -# {{{ AdminGroup - -sub AdminGroup { - my $group = shift; - - my (%args); - - GetOptions(\%args, - 'create', 'delete', 'display', - 'Name=s', 'Description=s', - - 'add-member=s@', 'delete-member=s@', - 'list-members' - ); - - - use RT::Group; - my $group_obj = new RT::Group($CurrentUser); - unless ($group) { - print "Group not specified.\n"; - return(); - } - - - #Create the group if we need to - if ($args{'create'}) { - my ($val, $msg) = $group_obj->Create( Name => ($args{'Name'} || $group), - Description => $args{'Description'} ); - print $msg ."\n"; - } - #otherwise we load it - else { - $group_obj->Load($group); - } - - #If we have no group object, get the hell out - unless ($group_obj->Id) { - print "Group not found.\n"; - } - - if ($args{'delete'}) { - my ($val, $msg) = $group_obj->Delete(); - print $msg ."\n"; - return(); - } - - - - #modify if we need to - my @attributes = qw(Name Description - - ); - foreach my $attrib (@attributes) { - if ( (exists ($args{"$attrib"})) and - ($group_obj->$attrib() ne $args{"$attrib"})) { - - my $method = "Set$attrib"; - my ($val, $msg) = $group_obj->$method($args{"$attrib"}); - print "Group ".$group_obj->Name. " $attrib: $msg\n"; - - } - } - - foreach my $user (@{$args{'add-member'}}) { - my ($val, $msg) = $group_obj->AddMember($user); - print $msg. "\n"; - } - foreach my $user (@{$args{'delete-member'}}) { - my ($val, $msg) = $group_obj->DeleteMember($user); - print $msg ."\n"; - } - - if ($args{'list-members'}) { - my $members = $group_obj->MembersObj(); - while (my $member = $members->Next()) { - print $member->UserObj->Name() ."\n"; - } - } - -} - -# }}} - -# {{{ AdminSystem -sub AdminSystem { - print "In AdminSystem\n"; - - AdminTemplates(0); - AdminScrips(0); - AdminRights(0); - AdminKeywordSelects(0); -} -# }}} - -# {{{ sub AdminTemplates - -sub AdminTemplates { - my $queue = shift; - #Queue = 0 means 'global'; - - my %args; - - - GetOptions(\%args, 'list-templates', 'create-template','modify-template=s', - 'delete-template=s', 'display-template=s', - 'template-Name=s', 'template-Description=s', - 'template-edit-content!'); - - # {{{ List templates - if ($args{'list-templates'}) { - print "Templates for $queue\n"; - require RT::Templates; - my $templates = new RT::Templates($CurrentUser); - if ($queue != 0) { - $templates->LimitToQueue($queue); - } - else { - $templates->LimitToGlobal(); - } - while (my $template = $templates->Next) { - print $template->Id.": ".$template->Name." - " . $template->Description ."\n"; - } - } - - # }}} - - require RT::Template; - my $template = new RT::Template($CurrentUser); - if ($args{'delete-template'}) { - $template->Load($args{'delete-template'}); - unless ($template->id) { - print "Couldn't load template"; - return(undef); - } - my ($val, $msg) = $template->Delete(); - print "$msg\n"; - } - elsif ($args{'create-template'}) { - #TODO edit the template content - my $content; - - my $linesref = GetMessageContent(CurrentUser => $CurrentUser, - Edit => 1); - - $content = join("\n", @{$linesref}); - - - my ($val, $msg) = $template->Create(Name => $args{'template-Name'}, - Description => $args{'template-Description'}, - Content => $content, - Queue => $queue); - print "$msg\n"; - } - elsif ($args{'modify-template'}) { - - $template->Load($args{'modify-template'}); - unless ($template->Id()) { - print "Template not found\n"; - return(); - } - my @attributes = qw( Name Description ); - foreach my $attrib (@attributes) { - if ( (exists ($args{"template-$attrib"})) and - ($template->$attrib() ne $args{"template-$attrib"})) { - - my $method = "Set$attrib"; - my $val = $template->$method($args{"template-$attrib"}); - - } - } - if ($args{'template-edit-content'}) { - - my $linesref = GetMessageContent(CurrentUser => $CurrentUser, - Content => $template->Content, - Edit => 1); - - my $content = join("\n", @{$linesref}); - my ($val) = $template->SetContent($content); - print $val."\n"; - } - - } - if ($args{'display-template'}) { - $template->Load($args{'display-template'}); - print $template->Name . "\n". $template->Description ."\n". $template->Content."\n"; - } -} - -# }}} - -# {{{ sub AdminScrips - -sub AdminScrips { - my $queue = shift; - #Queue = 0 means 'global'; - - my %args; - - - GetOptions(\%args, 'list-scrips', 'create-scrip','modify-scrip=s', - 'scrip-action=s', 'scrip-template=s', 'scrip-condition=s', - 'delete-scrip=s'); - - - # {{{ List entries - if ($args{'list-scrips'}) { - print "Scrips for $queue\n"; - require RT::Scrips; - my $scrips = new RT::Scrips($CurrentUser); - if ($queue != 0) { - $scrips->LimitToQueue($queue); - } - else { - $scrips->LimitToGlobal(); - } - while (my $scrip = $scrips->Next) { - print $scrip->Id.": If ". - $scrip->ConditionObj->Name." then " . - $scrip->ActionObj->Name." with template " . - $scrip->TemplateObj->Name."\n"; - } - } - - # }}} - - require RT::Scrip; - my $scrip = new RT::Scrip($CurrentUser); - if ($args{'delete-scrip'}) { - $scrip->Load($args{'delete-scrip'}); - unless ($scrip->id) { - print "Couldn't load scrip"; - return(undef); - } - my ($val, $msg) = $scrip->Delete(); - print "$msg\n"; - } - elsif ($args{'create-scrip'}) { - my ($val, $msg) = $scrip->Create( ScripAction => $args{'scrip-action'}, - ScripCondition => $args{'scrip-condition'}, - Template => $args{'scrip-template'}, - Queue => $queue); - - print "$msg\n"; - } -} - -# }}} - -# {{{ sub AdminRights - -sub AdminRights { - my $queue = shift; - #Queue = 0 means 'global'; - - my ($scope, $appliesto); - if ($queue == 0) { - $scope = 'System'; - $appliesto = 0; - } - else { - $scope = 'Queue'; - $appliesto = $queue; - } - - my %args; - GetOptions(\%args, - 'grant-right|add-right|new-right|create-right=s@', - 'revoke-right|del-right|delete-right=s@', - 'list-rights', 'userid=s@', 'groupid=s@', - ); - - - # {{{ List entries - if ($args{'list-rights'}) { - require RT::ACL; - my $acl = new RT::ACL($CurrentUser); - if ($queue != 0) { - $acl->LimitToQueue($queue); - } - else { - $acl->LimitToSystem(); - } - while (my $ace = $acl->Next) { - print $ace->RightScope; - - #Print the queue name if we have it. - print " " . $ace->AppliesToObj->Name if (defined $ace->AppliesToObj); - - print ": ". $ace->PrincipalType . " " .$ace->PrincipalObj->Name . - " has right " . $ace->RightName ."\n"; - - } - } - - # }}} - - require RT::ACE; - - # {{{ Build up an array of principals - my (@principals); - my $i = 0; - foreach my $group (@{$args{'groupid'}}) { - - - my $princ = new RT::Group($CurrentUser); - $princ->Load("$group"); - if ($princ->id) { - $principals[$i]->{'type'} = 'Group'; - $principals[$i]->{'id'} = $princ->id(); - $i++; - } - else { - print "Could not find group $group\n"; - } - } - - - foreach my $user (@{$args{'userid'}}) { - my $princ = new RT::User($CurrentUser); - $princ->Load("$user"); - if ($princ->id) { - $principals[$i]->{'type'} = 'User'; - $principals[$i]->{'id'} = $princ->id(); - $i++; - } - else { - print "Could not find user $user.\n"; - } - } - # }}} - - - foreach my $principal (@principals) { - - # {{{ Delete rights that need deleting - foreach my $right (@{$args{'revoke-right'}}) { - my $ace = new RT::ACE($CurrentUser); - $RT::Logger->debug("Trying to delete a right: $right \n"); - my ($val, $msg) = $ace->LoadByValues( RightName => $right, - RightScope => $scope, - PrincipalType => $principal->{'type'}, - PrincipalId => $principal->{'id'}, - RightAppliesTo => $appliesto); - - unless ($val) { - print "Right $right not found for" . $principal->{'type'} . " " . - $principal->{'id'} . " in scope $scope ($appliesto)\n"; - next; - } - my ($delval, $delmsg) =$ace->Delete; - print "$delmsg\n"; - - - } - - # }}} - - # {{{ grant rights that need granting - foreach my $right (@{$args{'grant-right'}}) { - my $ace = new RT::ACE($CurrentUser); - my ($val, $msg) = $ace->Create(RightName => $right, - PrincipalType => $principal->{'type'}, - PrincipalId => $principal->{'id'}, - RightScope => $scope, - RightAppliesTo => $appliesto); - - print $msg . "\n"; - } - - # }}} - } - -} - -# }}} - - -sub ListUsers { - require RT::Users; - my $users = new RT::Users($CurrentUser); - $users->UnLimit(); - while (my $user = $users->Next()) { - printf ("%16s %-16s\n",$user->Name(), $user->EmailAddress()); - } -} -sub ListQueues { - require RT::Queues; - my $queues = new RT::Queues($CurrentUser); - $queues->UnLimit(); - while (my $queue = $queues->Next()) { - printf ("%16s %-16s\n",$queue->Name(), $queue->Description()); - } -} - -sub ListGroups { - require RT::Groups; - my $groups = new RT::Groups($CurrentUser); - $groups->UnLimit(); - while (my $group = $groups->Next()) { - printf ("%16s %-16s\n",$group->Name(), $group->Description()); - } -} |