You are viewing a plain text version of this content. The canonical link for it is here.
Posted to alexandria-dev@jakarta.apache.org by ru...@apache.org on 2001/10/07 17:54:47 UTC

cvs commit: jakarta-alexandria/proposal/gump/perl cvslogin.pl

rubys       01/10/07 08:54:47

  Modified:    proposal/gump gen.bat gen.sh
  Added:       proposal/gump/perl cvslogin.pl
  Log:
  Automatic login to each :pserver: repository.  Not sure where the original
  source of the encoding algorithm came from, I got it from Jon Stevens.
  
  Revision  Changes    Path
  1.10      +3 -0      jakarta-alexandria/proposal/gump/gen.bat
  
  Index: gen.bat
  ===================================================================
  RCS file: /home/cvs/jakarta-alexandria/proposal/gump/gen.bat,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- gen.bat	2001/09/30 14:46:58	1.9
  +++ gen.bat	2001/10/07 15:54:47	1.10
  @@ -97,6 +97,9 @@
   puball %SOURCE%
   cd ..
   
  +REM Automatic login to each :pserver: cvsroot
  +perl perl\cvslogin.pl work\merge.xml
  +
   goto eof
   :fail
   echo *** FAILED ***
  
  
  
  1.14      +5 -0      jakarta-alexandria/proposal/gump/gen.sh
  
  Index: gen.sh
  ===================================================================
  RCS file: /home/cvs/jakarta-alexandria/proposal/gump/gen.sh,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- gen.sh	2001/09/30 14:46:58	1.13
  +++ gen.sh	2001/10/07 15:54:47	1.14
  @@ -120,7 +120,12 @@
     cd work
     chmod +x *.sh
     sh puball.sh $SOURCE
  +  cd ..
   fi
  +
  +# Automatic login to each :pserver: cvsroot
  +test -n "$FAIL" || \
  +perl perl/cvslogin.pl work/merge.xml
   
   test -z "$FAIL" || echo "*** FAILED ***"
   
  
  
  
  1.1                  jakarta-alexandria/proposal/gump/perl/cvslogin.pl
  
  Index: cvslogin.pl
  ===================================================================
  #!/user/bin/perl
  use strict;
  use XML::Parser;
  
  #
  # input arguments, with defaults
  #
  my $input = (shift or "work/merge.xml");
  my $cvspass = (shift or "$ENV{HOME}/.cvspass");
  
  #
  # encoding algorithm used for cvs passwords
  #
  sub scramble($) {
    my @shifts = (0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15,
                 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
                114,120, 53, 79, 96,109, 72,108, 70, 64, 76, 67,116, 74, 68, 87,
                111, 52, 75,119, 49, 34, 82, 81, 95, 65,112, 86,118,110,122,105,
                 41, 57, 83, 43, 46,102, 40, 89, 38,103, 45, 50, 42,123, 91, 35,
                125, 55, 54, 66,124,126, 59, 47, 92, 71,115, 78, 88,107,106, 56,
                 36,121,117,104,101,100, 69, 73, 99, 63, 94, 93, 39, 37, 61, 48,
                 58,113, 32, 90, 44, 98, 60, 51, 33, 97, 62, 77, 84, 80, 85,223,
                225,216,187,166,229,189,222,188,141,249,148,200,184,136,248,190,
                199,170,181,204,138,232,218,183,255,234,220,247,213,203,226,193,
                174,172,228,252,217,201,131,230,197,211,145,238,161,179,160,212,
                207,221,254,173,202,146,224,151,140,196,205,130,135,133,143,246,
                192,159,244,239,185,168,215,144,139,165,180,157,147,186,214,176,
                227,231,219,169,175,156,206,198,129,164,150,210,154,177,134,127,
                182,128,158,208,162,132,167,209,149,241,153,251,237,236,171,195,
                243,233,253,240,194,250,191,155,142,137,245,235,163,242,178,152);
  
    return 'A' . pack('C*', map {$shifts[$_]} unpack('C*', shift));
  }
  
  #
  # Read the current ~/.cvspass file.
  #
  my %password;
  open CVSPASS,"<$cvspass" or die "Couldn't open $cvspass:\n$!";
  while (<CVSPASS>) {
    $password{$1} = $2 if /(.*?) (.*)\n/;
  }
  close CVSPASS;
  
  #
  # Parse the file specified by the first argument, looking for cvs elements.
  #
  my $updated = 0;
  my $parser = new XML::Parser(Style => 'Subs');
  $parser->parsefile($input);
  
  #
  # for each cvs element that is of type :pserver:, and does not already have
  # an entry in the %password hashtable, scramble the password and add it.
  #
  sub cvs {
    my $expat = shift;
    my $tag = shift;
    my %attr = @_;
    my $cvsroot = $attr{cvsroot};
    return unless $cvsroot =~ /^:pserver:/;
    return if $password{$cvsroot};
    $password{$cvsroot} = scramble($attr{password});
    print "login $cvsroot\n";
    $updated = 1;
  }
  
  #
  # if any updates occurred, output the updated .cvsrc file
  #
  if ($updated) {
    rename $cvspass, "$cvspass.bak";
    open CVSPASS,">$cvspass" or die $!;
    foreach my $cvsroot (sort keys %password) {
      print CVSPASS "$cvsroot $password{$cvsroot}\n"; 
    }
    close CVSPASS;
  }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: alexandria-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: alexandria-dev-help@jakarta.apache.org


Re: cvs commit: jakarta-alexandria/proposal/gump/perl cvslogin.pl

Posted by Jon Stevens <jo...@latchkey.com>.
on 10/7/01 8:54 AM, "rubys@apache.org" <ru...@apache.org> wrote:

> Automatic login to each :pserver: repository.  Not sure where the original
> source of the encoding algorithm came from, I got it from Jon Stevens.
> 

Karl fogel gave it to me.

-jon


---------------------------------------------------------------------
To unsubscribe, e-mail: alexandria-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: alexandria-dev-help@jakarta.apache.org