Merge remote-tracking branch 'origin/pycurl' into planetlab-4_0-branch
[plcapi.git] / plcsh
diff --git a/plcsh b/plcsh
index c7b620e..54fc0b9 100755 (executable)
--- a/plcsh
+++ b/plcsh
@@ -5,12 +5,14 @@
 # Mark Huang <mlhuang@cs.princeton.edu>
 # Copyright (C) 2005 The Trustees of Princeton University
 #
-# $Id: plcsh,v 1.1 2007/01/08 18:23:14 mlhuang Exp $
+# $Id: plcsh,v 1.6 2007/02/08 21:49:41 mlhuang Exp $
 #
 
 import os
 import sys
+from socket import gethostname
 from optparse import OptionParser
+from getpass import getpass
 from traceback import print_exc
 
 sys.path.append(os.path.dirname(os.path.realpath(sys.argv[0])))
@@ -20,7 +22,9 @@ parser = OptionParser(add_help_option = False)
 parser.add_option("-f", "--config", help = "PLC configuration file")
 parser.add_option("-h", "--url", help = "API URL")
 parser.add_option("-c", "--cacert", help = "API SSL certificate")
+parser.add_option("-k", "--insecure", help = "Do not check SSL certificate")
 parser.add_option("-m", "--method", help = "API authentication method")
+parser.add_option("-s", "--session", help = "API session key")
 parser.add_option("-u", "--user", help = "API user name")
 parser.add_option("-p", "--password", help = "API password")
 parser.add_option("-r", "--role", help = "API role")
@@ -31,7 +35,7 @@ parser.add_option("--help", action = "help", help = "show this help message and
 # If user is specified but password is not
 if options.user is not None and options.password is None:
     try:
-        options.password = getpass.getpass()
+        options.password = getpass()
     except (EOFError, KeyboardInterrupt):
         print
         sys.exit(0)
@@ -43,11 +47,12 @@ try:
                   config = options.config,
                   url = options.url, xmlrpc = options.xmlrpc, cacert = options.cacert,
                   method = options.method, role = options.role,
-                  user = options.user, password = options.password)
+                  user = options.user, password = options.password,
+                  session = options.session)
     # Register a few more globals for backward compatibility
     auth = shell.auth
     api = shell.api
-    config = api.config
+    config = shell.config
 except Exception, err:
     print "Error:", err
     print
@@ -68,6 +73,11 @@ else:
     elif shell.auth['AuthMethod'] == "anonymous":
         prompt = "[anonymous]"
         print "Connected anonymously"
+    elif shell.auth['AuthMethod'] == "session":
+        # XXX No way to tell node and user sessions apart from the
+        # client point of view.
+        prompt = "[%s]" % gethostname()
+        print "%s connected using session authentication" % gethostname()
     else:
         prompt = "[%s]" % shell.auth['Username']
         print "%s connected using %s authentication" % \