diff docs/parse-netrc.pl @ 1:8b1883341c6f

Initial revision
author masneyb
date Mon, 05 Aug 2002 19:46:57 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/parse-netrc.pl	Mon Aug 05 19:46:57 2002 +0000
@@ -0,0 +1,93 @@
+#!/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);
+}
+