Ejemplo n.º 1
0
    def run(self):
        '''Parse the arguments and increment using `FileHandler.increment`.'''

        if self.parentFlags['file']:
            lf = Filehandler(settings, file_location=self.parentFlags['file'])
        else:
            lf = Filehandler(settings)

        if not len(self.args) == 1 or self.flags['help']:
            print(self.usage)
            return

        if not lf.file_found:
            # File not found? No possible label to increment.
            return 1

        labelname = self.args[0]

        if lf.increment(labelname):
            if not self.flags['silent']:
                print("Label '{name}' incremented".format(name=labelname))
        else:
            if not self.flags['silent']:
                print("Label '{name}' could not be incremented"
                      .format(name=labelname))

        if not self.flags['dry-run']:
            lf.save()
Ejemplo n.º 2
0
    def run(self):
        '''Parse the arguments and enable using `Filehandler.disable`.'''

        if self.parentFlags['file']:
            lf = Filehandler(settings, file_location=self.parentFlags['file'])
        else:
            lf = Filehandler(settings)

        if not len(self.args) == 1 or self.flags['help']:
            print self.usage
            return

        if not lf.file_found:
            # File not found? No possible label to enable.
            return 1

        labelname = self.args[0]

        if lf.disable(labelname, False):
            if not self.flags['silent']:
                print("Label '{name}' enabled".format(name=labelname))
        else:
            if not self.flags['silent']:
                print("Label '{name}' could not be enabled"
                      .format(name=labelname))

        if not self.flags['dry-run']:
            lf.save()
Ejemplo n.º 3
0
    def run(self):
        if self.parentFlags['file']:
            lf = Filehandler(settings, file_location=self.parentFlags['file'])
        else:
            lf = Filehandler(settings)

        if not lf.file_found:
            if not lf.promptForCreation(silent=self.flags['silent']):
                return 1

        if self.flags['interactive']:
            InteractiveEditor(settings, lf, interactive=False).remove()
            return 0

        if not self.args or self.flags['help']:
            print(self.usage)
            return 0

        for arg in set(self.args):
            if lf.remove(arg):
                if not self.flags['silent']:
                    print("Label '{name}' removed".format(name=arg))
            else:
                if not self.flags['silent']:
                    print("Label '{name}' doesn't exist in labelfile"
                          .format(name=arg))

        if not self.flags['dry-run']:
            lf.save()
Ejemplo n.º 4
0
    def run(self):
        '''Parse the arguments and update them using `FileHandler.update`.'''

        if self.parentFlags['file']:
            lf = Filehandler(settings, file_location=self.parentFlags['file'])
        else:
            lf = Filehandler(settings)

        if not len(self.args) == 2 or self.flags['help']:
            print self.usage
            return

        if not lf.file_found:
            if not lf.promptForCreation(silent=self.flags['silent']):
                return 1

        labelname = self.args[0]

        try:
            tmp_length, tmp_algo, tmp_seqno = self.args[1].split(':')
        except ValueError:
            print ('Invalid update specification: %s' % self.args[1])
            return 2

        try:
            length = int(tmp_length) if tmp_length else None
        except ValueError:
            length = None

        if tmp_algo and tmp_algo in algos.algorithms:
            algo = tmp_algo
        else:
            algo = None

        seqno = None
        if algo != 'dispass1':
            try:
                seqno = tmp_seqno if tmp_seqno else None
            except ValueError:
                pass

        if lf.update(labelname, length=length, algo=algo, seqno=seqno):
            if not self.flags['silent']:
                print("Label '{name}' updated".format(name=labelname))
        else:
            if not self.flags['silent']:
                print("Label '{name}' could not be updated"
                      .format(name=labelname))

        if not self.flags['dry-run']:
            lf.save()
Ejemplo n.º 5
0
    def run(inst, *args, **kwargs):
        if inst.parentFlags['file']:
            lf = Filehandler(settings, file_location=inst.parentFlags['file'])
        else:
            lf = Filehandler(settings)

        if not inst.flags['help']:
            if not lf.file_found:
                if not lf.promptForCreation(silent=inst.flags['silent']):
                    return 1

            if not lf.is_writeable():
                print('error: can\'t save to "{loc}", not writeable'
                      .format(loc=lf.file_location))
                return 1

        func(inst, lf, *args, **kwargs)

        if not inst.flags['dry-run']:
            lf.save()
Ejemplo n.º 6
0
    def run(self):
        '''Parse labels and add them using `FileHandler.add`.

        When the -i flag is passed, add them using `InteractiveEditor.add`
        '''

        newlabels = []
        '''A list of labelnames that have been added.'''

        if self.parentFlags['file']:
            lf = Filehandler(settings, file_location=self.parentFlags['file'])
        else:
            lf = Filehandler(settings)

        if not lf.file_found:
            if not lf.promptForCreation(silent=self.flags['silent']):
                return 1

        if self.flags['interactive']:
            intedit = InteractiveEditor(settings, lf, interactive=False)
            newlabels.append(intedit.add())
        else:
            if not self.args or self.flags['help']:
                print(self.usage)
                return

            for arg in set(self.args):
                labelspec = arg.split(':')
                params = len(labelspec)

                length = 0
                try:
                    length = params >= 2 and int(labelspec[1])
                except ValueError:
                    pass

                if not length:
                    length = settings.passphrase_length

                algo = params >= 3 and labelspec[2] or settings.algorithm
                if not algo in algos.algorithms:
                    algo = settings.algorithm

                seqno = 0
                if algo != 'dispass1':
                    try:
                        seqno = params >= 4 and int(labelspec[3])
                    except ValueError:
                        pass

                if not seqno:
                    seqno = settings.sequence_number

                if lf.add(labelname=labelspec[0], length=length, algo=algo,
                          seqno=seqno):
                    newlabels.append(labelspec[0])
                    if not self.flags['silent']:
                        print("Label '{name}' saved".format(name=labelspec[0]))
                else:
                    if not self.flags['silent']:
                        print("Label '{name}' already exists in labelfile"
                              .format(name=labelspec[0]))

            if not self.flags['dry-run']:
                lf.save()

        if self.flags['generate'] and newlabels:
            console = CLI(lf)
            console.verifyPassword = True
            password = console.passwordPrompt()

            for label in newlabels:
                console.generate(password, lf.labeltup(label))
            del password

            if not console.output():
                if not self.flags['silent']:
                    print('Error: could not generate passphrase')
                return 1
            else:
                return 0