From f181ae00c3306e94925d6c226cb5a4b47594de77 Mon Sep 17 00:00:00 2001 From: Martin Sivak Date: Fri, 29 Feb 2008 15:53:25 +0100 Subject: Plugin for password management, capable of reseting root password --- plugins/passwd.py | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 plugins/passwd.py (limited to 'plugins') diff --git a/plugins/passwd.py b/plugins/passwd.py new file mode 100644 index 0000000..7a0ca7b --- /dev/null +++ b/plugins/passwd.py @@ -0,0 +1,61 @@ +# First Aid Kit - diagnostic and repair tool for Linux +# Copyright (C) 2007 Martin Sivak +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program 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 General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +from pyfirstaidkit.plugins import Plugin,Flow +from pyfirstaidkit.returns import * +from pyfirstaidkit.utils import * +from pyfirstaidkit import Config +from random import Random + +rng = Random() + +class PasswdPlugin(Plugin): + """This plugin provides operations for convenient manipulation with the password system.""" + # + # Additional flow defprepareion. + # + # flows = Flow.init(Plugin) # we do not need the default fix and diagnose flows + flows = {} + flows["resetRoot"] = Flow({ + Plugin.initial: {Return: "resetRoot"}, + "resetRoot" : {ReturnSuccess: Plugin.final} + }, description="Reset root password to random value so the user can login and change it") + + name = "Password plugin" + version = "0.0.1" + author = "Martin Sivak" + + @classmethod + def getDeps(cls): + return set("root", "experimental", "filesystem") + + def __init__(self, *args, **kwargs): + Plugin.__init__(self, *args, **kwargs) + + def resetRoot(self): + charlist = "abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ.," + passlen = 10 + newpasswd = [] + while len(newpasswd)