Erik Grinaker is sharing code with you

Bitbucket is a code hosting site. Unlimited public and private repositories. Free for small teams.

Don't show this again

erikg / Revelation

Revelation is a password manager for the GNOME desktop, released under the GNU GPL license. It stores all your accounts and passwords in a single, secure place, and gives you access to it through a user-friendly graphical interface.

Clone this repository (size: 2.1 MB): HTTPS / SSH
hg clone https://bitbucket.org/erikg/revelation
hg clone ssh://hg@bitbucket.org/erikg/revelation

Revelation / src / lib / datahandler / __init__.py

#
# Revelation - a password manager for GNOME 2
# http://oss.codepoet.no/revelation/
# $Id$
#
# Module for data handlers
#
#
# Copyright (c) 2003-2006 Erik Grinaker
#
# 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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
#

from base import Error, DataError, FormatError, PasswordError, VersionError

from fpm import FPM
from gpass import GPass04, GPass05
from netrc import NetRC
from pwsafe import PasswordSafe1, PasswordSafe2, MyPasswordSafe, MyPasswordSafeOld, PasswordGorilla
from rvl import RevelationXML, Revelation, RevelationLUKS
from splashid import SplashIDCSV
from text import PlainText
from xhtml import XHTML

HANDLERS = [
        FPM,
        GPass04,
        GPass05,
        MyPasswordSafe,
        MyPasswordSafeOld,
        NetRC,
        PasswordGorilla,
        PasswordSafe1,
        PasswordSafe2,
        PlainText,
        Revelation,
        RevelationLUKS,
        SplashIDCSV,
        XHTML,
        RevelationXML
]


class DetectError(Error):
        "Exception for autodetection error"
        pass


def detect_handler(input):
        "Detects which handler may process a data stream"

        for handler in get_import_handlers():
                if handler().detect(input) == True:
                        return handler

        else:
                raise DetectError


def get_export_handlers():
        "Returns a list of handlers which can export"

        handlers = []

        for handler in HANDLERS:
                if handler.exporter:
                        handlers.append(handler)

        return handlers


def get_import_handlers():
        "Returns a list of handlers which can import"

        handlers = []

        for handler in HANDLERS:
                if handler.importer:
                        handlers.append(handler)

        return handlers