Exemplo n.º 1
0
    def _PlainVolumeAction(self, *unused_args):
        try:
            credentials = self._Authenticate(self._EncryptAuth)
        except glue.Error:
            return
        try:
            username, password = credentials[0:2]
            # In case username is actually an email:
            username = username.split('@', 1)[0]
        except TypeError:
            return

        self._PrepTop()
        Tkinter.Label(self.top_frame,
                      text='Applying encryption...').pack(fill=Tkinter.BOTH,
                                                          expand=True)
        self.root.update()

        try:
            volume_uuid, recovery_token = glue.ApplyEncryption(
                self.fvclient, username, password)
        except glue.Error:
            return self.ShowFatalError(glue.ENCRYPTION_FAILED_MESSAGE)

        try:
            self.fvclient.UploadPassphrase(volume_uuid, recovery_token)
        except base_client.Error:
            return self.ShowFatalError(glue.ESCROW_FAILED_MESSAGE)

        self._PrepTop()
        # 8 is a magic number ...
        Tkinter.Label(self.top_frame,
                      text=glue.ENCRYPTION_SUCCESS_MESSAGE).pack(
                          fill=Tkinter.Y, expand=True)

        cmd = ['ps', 'auwx']
        process_list, unused_err, ret = RunProcess(cmd)
        finder = '/System/Library/CoreServices/Finder.app/Contents/MacOS/Finder\n'
        if (ret == 0 and process_list and finder in process_list) or ret != 0:
            btn = Tkinter.Button(self.top_frame,
                                 text='Restart now',
                                 command=self._RestartNow)
            btn.pack()
            countdown = Countdown(label=btn,
                                  termination_callback=self._RestartNow)
            countdown.start()
        else:
            btn = Tkinter.Button(self.top_frame,
                                 text='OK',
                                 command=self.root.quit,
                                 default=Tkinter.ACTIVE)
            btn.bind('<Return>', lambda _: self.root.quit())
            btn.pack()
            btn.focus()
            countdown = Countdown(label=btn,
                                  termination_callback=self.root.quit)
            countdown.start()
Exemplo n.º 2
0
    def testOk(self, _):
        pl = plistlib.readPlistFromString(self.OUTPUT)
        util.GetPlistFromExec.return_value = pl

        self.mock_fvclient.SetOwner(self.mock_user)

        result = glue.ApplyEncryption(self.mock_fvclient, self.mock_user,
                                      self.mock_pass)
        self.assertEqual(('217CEC95-018C-4CA5-964F-4E7235CA2937',
                          'DLEV-ZYT9-ODLA-PVML-66DV-HZ8R'), result)

        self._CommonAsserts()
Exemplo n.º 3
0
    def testOk(self):
        pl = plistlib.readPlistFromString(self.OUTPUT)
        glue.util.GetPlistFromExec(mox.IsA(tuple),
                                   stdin=mox.StrContains(
                                       self.mock_pass)).AndReturn(pl)

        self.mock_fvclient.SetOwner(self.mock_user)

        self.mox.ReplayAll()
        result = glue.ApplyEncryption(self.mock_fvclient, self.mock_user,
                                      self.mock_pass)
        self.assertEquals(('217CEC95-018C-4CA5-964F-4E7235CA2937',
                           'DLEV-ZYT9-ODLA-PVML-66DV-HZ8R'), result)
        self.mox.VerifyAll()
Exemplo n.º 4
0
    def _PlainVolumeAction(self, *unused_args):
        """Action to encrypt an unencrypted volume."""
        user, passwd = self.input_user.get(), self.input_pass.get()

        try:
            client_ = self._Authenticate(self._EncryptAuth)
            if not client_: return
        except glue.Error:
            return

        self._PrepTop('Applying encryption...')

        try:
            volume_uuid, recovery_token = glue.ApplyEncryption(
                client_, user, passwd)
        except glue.Error:
            return self.ShowFatalError(glue.ENCRYPTION_FAILED_MESSAGE)

        try:
            client_.UploadPassphrase(volume_uuid, recovery_token)

        except base_client.Error:
            return self.ShowFatalError(glue.ESCROW_FAILED_MESSAGE)

        self._PrepTop(glue.ENCRYPTION_SUCCESS_MESSAGE)

        cmd = ['ps', 'auwx']
        process_list, unused_err, ret = RunProcess(cmd)
        finder = '/System/Library/CoreServices/Finder.app/Contents/MacOS/Finder\n'
        if (ret == 0 and process_list and finder in process_list) or ret != 0:
            btn = Tkinter.Button(self.top_frame,
                                 text='Restart now',
                                 command=self._RestartNow)
            btn.pack()
            countdown = Countdown(label=btn,
                                  termination_callback=self._RestartNow)
            countdown.start()
        else:
            btn = Tkinter.Button(self.top_frame,
                                 text='OK',
                                 command=self.root.quit,
                                 default=Tkinter.ACTIVE)
            btn.bind('<Return>', lambda _: self.root.quit())
            btn.pack()
            btn.focus()
            countdown = Countdown(label=btn,
                                  termination_callback=self.root.quit)
            countdown.start()