view docs/parse-netrc.pl @ 219:b9584a877daf

2003-7-9 Brian Masney <masneyb@gftp.org> * lib/sshv2.c - if we are logging in to the server, and the message size is too big from the server, assume that an error message follows and log the ASCII text to the log window * src/gtk/options_dialog.c - make sure the value is set properly for the textcomboedt option types (the FTP proxy server type uses this) * lib/rfc2068.c - HTTP proxy bug fixes. Also, moved rfc2068_connect() call to rfc2068_send_command() and removed it from the now unneeded places. Also, fix in call to HEAD command * src/text/gftp-text.c - fixed NULL pointer deference in changing directory * docs/sample.gftp/gftprc - enable require SSH user/pass by default
author masneyb
date Wed, 09 Jul 2003 23:25:57 +0000
parents 8b1883341c6f
children
line wrap: on
line source

#!/usr/bin/perl -w

# Brian Masney <masneyb@gftp.org>

my ($host, $user, $pass, $account, $descr, %bmhash);
use strict;

open NRC, "<.netrc" or die "Can't open .netrc: $!\n";
open BM, "+>>.gftp/bookmarks" or die "Can't open .gftp/bookmarks: $!\nTry running gFTP once to create a default bookmarks file\n";
seek (BM, 0, 0);
while (<BM>)
  {
    ($descr) = /\[(.*?)\]/;
    next if !defined ($descr);
    $bmhash{$descr} = 1;
  }

seek (BM, 0, 2);

while (<NRC>)
  {
    if (/machine /)
      {
        print_bookmark ();
        ($host) = /machine (.*?)\s+/;
      }

    if (/login /)
      {
        ($user) = /login (.*?)\s+/;
      }

    if (/password /)
      {
        ($pass) = /password (.*?)\s+/;
      }

    if (/account /)
      {
        ($account) = /account (.*?)\s+/;
      }
  }

print_bookmark ();

close NRC;
close BM;

print "The contents of your .netrc file should now be stored in .gftp/bookmarks\n";


sub print_bookmark
{
  my $i;

  return if !defined ($host);
 
  if (!defined ($bmhash{$host}))
    { $descr = $host; }
  else
    {
      for ($i=0; ; $i++)
        {
          $descr = "$host ($i)";
          last if !defined ($bmhash{$descr});
        }
    }
  

  print BM "[$descr]\n";
  print BM "hostname=$host\n";
  print BM "port=21\n";
  print BM "protocol=FTP\n";
  print BM "remote directory=\n";
  print BM "local directory=\n";
  if (!defined ($user))
    { $user = "anonymous"; }
  print BM "username=$user\n";
  if ($user eq "anonymous" || !defined ($pass))
    { $pass = "\@EMAIL\@"; }
  print BM "password=$pass\n";
  if (!defined ($account))
    { $account = ""; }
  print BM "account=$account\n\n";

  print "Added $descr = $user\@$host\n";

  undef ($host);
  undef ($user);
  undef ($pass);
  undef ($account);
}