[Rt-commit] rt branch, 4.4/passwd-script, created. rt-4.4.1-431-g3e9a664

Brian Duggan brian at bestpractical.com
Mon Jun 26 14:37:56 EDT 2017


The branch, 4.4/passwd-script has been created
        at  3e9a664971af2b3280e80c1c48cb2930f448a21e (commit)

- Log -----------------------------------------------------------------
commit 3e9a664971af2b3280e80c1c48cb2930f448a21e
Author: Brian C. Duggan <brian at bestpractical.com>
Date:   Mon Jun 26 14:33:26 2017 -0400

    Add sbin/rt-passwd command
    
    rt-passwd [--help|?] username|userid
    
    rt-passwd takes the username or user id of an RT user. Then it
    prompts the user for a password and sets the RT users's password to
    that value.

diff --git a/Makefile.in b/Makefile.in
index 464bda0..a1165d1 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -148,6 +148,7 @@ SYSTEM_BINARIES		=	rt-attributes-viewer \
 				rt-fulltext-indexer \
 				rt-importer \
 				rt-ldapimport \
+				rt-passwd \
 				rt-preferences-viewer \
 				rt-serializer \
 				rt-server \
diff --git a/configure.ac b/configure.ac
index 6b9e88c..d7685d8 100755
--- a/configure.ac
+++ b/configure.ac
@@ -485,6 +485,7 @@ AC_CONFIG_FILES([
                  sbin/rt-fulltext-indexer
                  sbin/rt-serializer
                  sbin/rt-importer
+                 sbin/rt-passwd
                  bin/rt-crontool
                  bin/rt-mailgate
                  bin/rt],
diff --git a/sbin/rt-passwd.in b/sbin/rt-passwd.in
new file mode 100755
index 0000000..3ff94e8
--- /dev/null
+++ b/sbin/rt-passwd.in
@@ -0,0 +1,131 @@
+#!@PERL@
+# BEGIN BPS TAGGED BLOCK {{{
+#
+# COPYRIGHT:
+#
+# This software is Copyright (c) 1996-2017 Best Practical Solutions, LLC
+#                                          <sales at bestpractical.com>
+#
+# (Except where explicitly superseded by other copyright notices)
+#
+#
+# LICENSE:
+#
+# This work is made available to you under the terms of Version 2 of
+# the GNU General Public License. A copy of that license should have
+# been provided with this software, but in any event can be snarfed
+# from www.gnu.org.
+#
+# This work is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 or visit their web page on the internet at
+# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html.
+#
+#
+# CONTRIBUTION SUBMISSION POLICY:
+#
+# (The following paragraph is not intended to limit the rights granted
+# to you to modify and distribute this software under the terms of
+# the GNU General Public License and is only of importance to you if
+# you choose to contribute your changes and enhancements to the
+# community by submitting them to Best Practical Solutions, LLC.)
+#
+# By intentionally submitting any modifications, corrections or
+# derivatives to this work, or any other work intended for use with
+# Request Tracker, to Best Practical Solutions, LLC, you confirm that
+# you are the copyright holder for those contributions and you grant
+# Best Practical Solutions,  LLC a nonexclusive, worldwide, irrevocable,
+# royalty-free, perpetual, license to use, copy, create derivative
+# works based on those contributions, and sublicense and distribute
+# those contributions and any derivatives thereof.
+#
+# END BPS TAGGED BLOCK }}}
+use strict;
+use warnings;
+use utf8;
+
+# fix lib paths, some may be relative
+BEGIN { # BEGIN RT CMD BOILERPLATE
+    require File::Spec;
+    require Cwd;
+    my @libs = ("@RT_LIB_PATH@", "@LOCAL_LIB_PATH@");
+    my $bin_path;
+
+    for my $lib (@libs) {
+        unless ( File::Spec->file_name_is_absolute($lib) ) {
+            $bin_path ||= ( File::Spec->splitpath(Cwd::abs_path(__FILE__)) )[1];
+            $lib = File::Spec->catfile( $bin_path, File::Spec->updir, $lib );
+        }
+        unshift @INC, $lib;
+    }
+
+}
+
+use RT;
+use RT::User;
+use Getopt::Long qw/GetOptions/;
+use Term::ReadKey;
+use Pod::Usage qw/pod2usage/;
+
+RT::Init();
+
+my $help;
+
+GetOptions(
+    "help|?" => \$help,
+) or Pod::Usage::pod2usage();
+
+Pod::Usage::pod2usage(-exitval=> 0, -verbose => 1) if $help;
+Pod::Usage::pod2usage(-exitval=> 0, -verbose => 0) unless $#ARGV+1 == 1;
+
+my $uid = $ARGV[0];
+
+my $user = RT::User->new( RT->SystemUser );
+my ($ret, $msg) = $user->Load($uid);
+
+$ret || die "Can't load user: $msg\n";
+
+my $username = $user->Name;
+print "Changing password for user $username.\n";
+print "Password: ";
+ReadMode('noecho');
+chomp(my $password = <STDIN>);
+ReadMode(0);
+
+($ret, $msg) = $user->SetPassword($password);
+print "\n";
+
+die "Couldn't change password for user $username: $msg\n" unless $ret;
+
+print "Successfully changed password for user $username.\n";
+
+exit 1;
+
+=head1 NAME
+
+rt-passwd - Set an RT user's password
+
+=head1 SYNOPSIS
+
+    rt-passwd username
+    rt-passwd user_id
+
+rt-passwd will set the password of an RT user to the value the user enters at the prompt.
+
+=head2 OPTIONS
+
+=over
+
+=item B<--help>
+
+Print this documentation and exit.
+
+=back
+
+=cut

-----------------------------------------------------------------------


More information about the rt-commit mailing list