[svn] commit: r2165 - /branches/trac220/src/bin/bindctl/bindcmd.py
BIND 10 source code commits
bind10-changes at lists.isc.org
Fri Jun 18 08:03:14 UTC 2010
Author: zhanglikun
Date: Fri Jun 18 08:03:14 2010
New Revision: 2165
Log:
Change code of bindctl according the review result: 1. Fix typo error. 2. Use getpwnam to get user home directory.
Modified:
branches/trac220/src/bin/bindctl/bindcmd.py
Modified: branches/trac220/src/bin/bindctl/bindcmd.py
==============================================================================
--- branches/trac220/src/bin/bindctl/bindcmd.py (original)
+++ branches/trac220/src/bin/bindctl/bindcmd.py Fri Jun 18 08:03:14 2010
@@ -36,6 +36,9 @@
from hashlib import sha1
import csv
import ast
+import pwd
+import getpass
+import traceback
try:
from collections import OrderedDict
@@ -49,12 +52,8 @@
except ImportError:
my_readline = sys.stdin.readline
-CSV_FILE_DIR = None
-if ('HOME' in os.environ):
- CSV_FILE_DIR = os.environ['HOME']
- CSV_FILE_DIR += os.sep + '.bind10' + os.sep
CSV_FILE_NAME = 'default_user.csv'
-FAIL_TO_CONNEC_WITH_CMDCTL = "Fail to connect with b10-cmdctl module, is it running?"
+FAIL_TO_CONNECT_WITH_CMDCTL = "Fail to connect with b10-cmdctl module, is it running?"
CONFIG_MODULE_NAME = 'config'
CONST_BINDCTL_HELP = """
usage: <module name> <command name> [param1 = value1 [, param2 = value2]]
@@ -110,7 +109,8 @@
self.cmdloop()
except FailToLogin as err:
print(err)
- print(FAIL_TO_CONNEC_WITH_CMDCTL)
+ print(FAIL_TO_CONNECT_WITH_CMDCTL)
+ traceback.print_exc()
except KeyboardInterrupt:
print('\nExit from bindctl')
@@ -119,35 +119,30 @@
file(path is "dir + file_name"), Return value is one list of elements
['name', 'password'], If get information failed, empty list will be
returned.'''
- csvfile = None
+ if (not dir) or (not os.path.exists(dir)):
+ return []
+
try:
- if (not dir) or (not os.path.exists(dir)):
- return []
-
+ csvfile = None
+ users = []
csvfile = open(dir + file_name)
users_info = csv.reader(csvfile)
- users = []
for row in users_info:
users.append([row[0], row[1]])
-
- return users
except (IOError, IndexError) as e:
pass
finally:
if csvfile:
csvfile.close()
- return []
+ return users
def _save_user_info(self, username, passwd, dir, file_name):
''' Save username and password in file "dir + file_name"
If it's saved properly, return True, or else return False. '''
try:
- if dir:
- if not os.path.exists(dir):
- os.mkdir(dir, 0o700)
- else:
- print("Cannot determine location of $HOME. Not storing default user")
- return False
+ if not os.path.exists(dir):
+ os.mkdir(dir, 0o700)
+
csvfilepath = dir + file_name
csvfile = open(csvfilepath, 'w')
os.chmod(csvfilepath, 0o600)
@@ -155,8 +150,7 @@
writer.writerow([username, passwd])
csvfile.close()
except Exception as e:
- # just not store it
- print(e, "\nCannot write ~/.bind10/default_user.csv; default user is not stored")
+ print(e, "\nCannot write %s%s; default user is not stored" % (dir, file_name))
return False
return True
@@ -168,13 +162,16 @@
time, username and password saved in 'default_user.csv' will be
used first.
'''
- users = self._get_saved_user_info(CSV_FILE_DIR, CSV_FILE_NAME)
+ csv_file_dir = pwd.getpwnam(getpass.getuser()).pw_dir
+ csv_file_dir += os.sep + '.bind10' + os.sep
+ users = self._get_saved_user_info(csv_file_dir, CSV_FILE_NAME)
for row in users:
param = {'username': row[0], 'password' : row[1]}
try:
response = self.send_POST('/login', param)
data = response.read().decode()
except socket.error:
+ traceback.print_exc()
raise FailToLogin()
if response.status == http.client.OK:
@@ -197,10 +194,11 @@
data = response.read().decode()
print(data)
except socket.error as e:
+ traceback.print_exc()
raise FailToLogin()
if response.status == http.client.OK:
- self._save_user_info(username, passwd, CSV_FILE_DIR, CSV_FILE_NAME)
+ self._save_user_info(username, passwd, csv_file_dir, CSV_FILE_NAME)
return True
def _update_commands(self):
@@ -470,7 +468,7 @@
self._handle_cmd(cmd)
except (IOError, http.client.HTTPException) as err:
print('Error!', err)
- print(FAIL_TO_CONNEC_WITH_CMDCTL)
+ print(FAIL_TO_CONNECT_WITH_CMDCTL)
except BindCtlException as err:
print("Error! ", err)
self._print_correct_usage(err)
More information about the bind10-changes
mailing list