summaryrefslogtreecommitdiffstats
path: root/glances/password_list.py
diff options
context:
space:
mode:
Diffstat (limited to 'glances/password_list.py')
-rw-r--r--glances/password_list.py77
1 files changed, 77 insertions, 0 deletions
diff --git a/glances/password_list.py b/glances/password_list.py
new file mode 100644
index 00000000..dbfc7ddd
--- /dev/null
+++ b/glances/password_list.py
@@ -0,0 +1,77 @@
+# -*- coding: utf-8 -*-
+#
+# This file is part of Glances.
+#
+# Copyright (C) 2015 Nicolargo <nicolas@nicolargo.com>
+#
+# Glances is free software; you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Glances is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+"""Manage the Glances passwords list."""
+
+from glances.logger import logger
+from glances.password import GlancesPassword
+
+
+class GlancesPasswordList(GlancesPassword):
+
+ """Manage the Glances passwords list for the client|browser/server."""
+
+ _section = "passwords"
+
+ def __init__(self, config=None, args=None):
+ super(GlancesPasswordList, self).__init__()
+ # password_dict is a dict (JSON compliant)
+ # {'host': 'password', ... }
+ # Load the configuration file
+ self._password_dict = self.load(config)
+
+ def load(self, config):
+ """Load the password from the configuration file."""
+ password_dict = []
+
+ if config is None:
+ logger.warning("No configuration file available. Cannot load password list.")
+ elif not config.has_section(self._section):
+ logger.warning("No [%s] section in the configuration file. Cannot load password list." % self._section)
+ else:
+ logger.info("Start reading the [%s] section in the configuration file" % self._section)
+
+ password_dict = dict(config.items(self._section))
+
+ # Password list loaded
+ logger.info("%s password(s) loaded from the configuration file" % len(password_dict))
+ logger.debug("Password dictionary: %s" % password_dict)
+
+ return password_dict
+
+ def get_password(self, host=None):
+ """
+ If host=None, return the current server list (dict).
+ Else, return the host's password (or the default one if defined or None)
+ """
+ if host is None:
+ return self._password_dict
+ else:
+ try:
+ return self._password_dict[host]
+ except (KeyError, TypeError):
+ try:
+ return self._password_dict['default']
+ except (KeyError, TypeError):
+ return None
+ return None
+
+ def set_password(self, host, password):
+ """Set a password for a specific host."""
+ self._password_dict[host] = password