Exemplo n.º 1
0
    def _create_new_identity(self):
        """
        Generate new Private key and new identity file.
        Reads some extra info from config files.
        """
        login = strng.to_bin(bpio.ReadTextFile(settings.UserNameFilename()))
        externalIP = strng.to_bin(misc.readExternalIP()) or b'127.0.0.1'
        if self.free_idurls[0].count(b'127.0.0.1'):
            externalIP = b'127.0.0.1'
        lg.out(
            4,
            'id_registrator._create_new_identity %s %s ' % (login, externalIP))

        my_id.forgetLocalIdentity()
        my_id.eraseLocalIdentity(do_backup=True)
        key.ForgetMyKey(erase_file=True, do_backup=True)
        key.InitMyKey()
        if not key.isMyKeyReady():
            key.GenerateNewKey()
        lg.out(4, '    my key is ready')
        ident = my_id.buildDefaultIdentity(name=login,
                                           ip=externalIP,
                                           idurls=self.free_idurls)
        my_identity_xmlsrc = ident.serialize(as_text=True)
        newfilename = settings.LocalIdentityFilename() + '.new'
        bpio.WriteTextFile(newfilename, my_identity_xmlsrc)
        try:
            id_url.identity_cached(ident)
        except:
            lg.exc()
        self.new_identity = ident
        lg.out(
            4, '    wrote %d bytes to %s' %
            (len(my_identity_xmlsrc), newfilename))
Exemplo n.º 2
0
 def _create_new_identity(self):
     """
     Generate new Private key and new identity file.
     Reads some extra info from config files.
     """
     login = strng.to_bin(bpio.ReadTextFile(settings.UserNameFilename()))
     externalIP = strng.to_bin(misc.readExternalIP()) or b'127.0.0.1'
     if self.free_idurls[0].count(b'127.0.0.1'):
         externalIP = b'127.0.0.1'
     lg.out(
         4,
         'id_registrator._create_new_identity %s %s ' % (login, externalIP))
     key.InitMyKey()
     if not key.isMyKeyReady():
         key.GenerateNewKey()
     lg.out(4, '    my key is ready')
     ident = my_id.buildDefaultIdentity(name=login,
                                        ip=externalIP,
                                        idurls=self.free_idurls)
     # my_id.rebuildLocalIdentity(
     #     identity_object=ident, revision_up=True, save_identity=False)
     # localIP = bpio.ReadTextFile(settings.LocalIPFilename())
     my_identity_xmlsrc = ident.serialize(as_text=True)
     newfilename = settings.LocalIdentityFilename() + '.new'
     bpio.WriteTextFile(newfilename, my_identity_xmlsrc)
     self.new_identity = ident
     lg.out(
         4, '    wrote %d bytes to %s' %
         (len(my_identity_xmlsrc), newfilename))
Exemplo n.º 3
0
 def doSaveMyName(self, arg):
     """
     Action method.
     """
     try:
         login = arg['username']
     except:
         login = arg[0]
         if len(arg) > 1:
             self.preferred_servers = map(lambda s: s.strip(), arg[1].split(','))
     if not self.known_servers:
         self.known_servers = known_servers.by_host()
     if not self.preferred_servers:
         try:
             from main import config
             for srv in str(config.conf().getData('services/identity-propagate/preferred-servers')).split(','):
                 if srv.strip():
                     self.preferred_servers.append(srv.strip())
         except:
             pass
     self.min_servers = max(
         settings.MinimumIdentitySources(),
         config.conf().getInt('services/identity-propagate/min-servers') or settings.MinimumIdentitySources())
     self.max_servers = min(
         settings.MaximumIdentitySources(),
         config.conf().getInt('services/identity-propagate/max-servers') or settings.MaximumIdentitySources())
     lg.out(4, 'id_registrator.doSaveMyName [%s]' % login)
     lg.out(4, '    known_servers=%s' % self.known_servers)
     lg.out(4, '    preferred_servers=%s' % self.preferred_servers)
     lg.out(4, '    min_servers=%s' % self.min_servers)
     lg.out(4, '    max_servers=%s' % self.max_servers)
     bpio.WriteFile(settings.UserNameFilename(), login)
Exemplo n.º 4
0
 def doSaveMyName(self, *args, **kwargs):
     """
     Action method.
     """
     login = kwargs['username']
     self.preferred_servers = [
         s.strip() for s in kwargs.get('preferred_servers', [])
     ]
     if not self.known_servers:
         self.known_servers = known_servers.by_host()
     if not self.preferred_servers:
         try:
             for srv in str(config.conf().getData(
                     'services/identity-propagate/preferred-servers')
                            ).split(','):
                 if srv.strip():
                     self.preferred_servers.append(srv.strip())
         except:
             pass
     self.min_servers = max(
         settings.MinimumIdentitySources(),
         config.conf().getInt('services/identity-propagate/min-servers')
         or settings.MinimumIdentitySources())
     self.max_servers = min(
         settings.MaximumIdentitySources(),
         config.conf().getInt('services/identity-propagate/max-servers')
         or settings.MaximumIdentitySources())
     lg.out(4, 'id_registrator.doSaveMyName [%s]' % login)
     lg.out(4, '    known_servers=%s' % self.known_servers)
     lg.out(4, '    preferred_servers=%s' % self.preferred_servers)
     lg.out(4, '    min_servers=%s' % self.min_servers)
     lg.out(4, '    max_servers=%s' % self.max_servers)
     bpio.WriteTextFile(settings.UserNameFilename(), login)
Exemplo n.º 5
0
    def _create_new_identity(self):
        """
        Generate new Private key and new identity file.

        Reads some extra info from config files.
        """
        login = bpio.ReadTextFile(settings.UserNameFilename())
        externalIP = misc.readExternalIP(
        )  # bpio.ReadTextFile(settings.ExternalIPFilename())

        lg.out(
            4,
            'id_registrator._create_new_identity %s %s ' % (login, externalIP))

        key.InitMyKey()

        lg.out(4, '    my key is ready')

        ident = my_id.buildDefaultIdentity(name=login,
                                           ip=externalIP,
                                           idurls=self.free_idurls)
        # localIP = bpio.ReadTextFile(settings.LocalIPFilename())
        my_identity_xmlsrc = ident.serialize()
        newfilename = settings.LocalIdentityFilename() + '.new'
        bpio.WriteFile(newfilename, my_identity_xmlsrc)
        self.new_identity = ident
        lg.out(
            4, '    wrote %d bytes to %s' %
            (len(my_identity_xmlsrc), newfilename))
Exemplo n.º 6
0
 def msg(self, msgid, arg=None):
     msg = self.MESSAGES.get(msgid, ['', 'black'])
     text = msg[0] % {
         'login': bpio.ReadTextFile(settings.UserNameFilename()),
         'externalip': misc.readExternalIP(),  # bpio.ReadTextFile(settings.ExternalIPFilename()),
         'localip': bpio.ReadTextFile(settings.LocalIPFilename()), }
     color = 'black'
     if len(msg) == 2:
         color = msg[1]
     return text, color
Exemplo n.º 7
0
 def msg(self, msgid, *args, **kwargs):
     msg = self.MESSAGES.get(msgid, ['', 'black'])
     text = msg[0] % {
         'login': strng.to_bin(
             bpio.ReadTextFile(settings.UserNameFilename())),
         'externalip': strng.to_bin(misc.readExternalIP()),
         'localip': strng.to_bin(
             bpio.ReadTextFile(settings.LocalIPFilename())),
     }
     color = 'black'
     if len(msg) == 2:
         color = msg[1]
     return text, color
Exemplo n.º 8
0
    def doRequestServers(self, *args, **kwargs):
        """
        Action method.
        """
        login = bpio.ReadTextFile(settings.UserNameFilename())

        def _cb(xmlsrc, idurl, host):
            if not xmlsrc:
                if self.preferred_servers and host in self.preferred_servers:
                    if self.preferred_servers[0] == host:
                        self.free_idurls.insert(0, idurl)
                    else:
                        self.free_idurls.insert(1, idurl)
                else:
                    self.free_idurls.append(idurl)
                self.registrations.remove(idurl)
                self.automat('id-not-exist', idurl)
            else:
                lg.out(4, '                EXIST: %s' % idurl)
                self.registrations.remove(idurl)
                self.automat('id-exist', idurl)

        def _eb(err, idurl, host):
            lg.out(4, '            NOT EXIST: %s' % idurl)
            if self.preferred_servers and host in self.preferred_servers:
                if self.preferred_servers[0] == host:
                    self.free_idurls.insert(0, idurl)
                else:
                    self.free_idurls.insert(1, idurl)
            else:
                self.free_idurls.append(idurl)
            self.registrations.remove(idurl)
            self.automat('id-not-exist', idurl)

        for host in self.good_servers:
            webport, tcpport = known_servers.by_host().get(
                host,
                (settings.IdentityWebPort(), settings.IdentityServerPort()))
            if webport == 80:
                webport = ''
            idurl = nameurl.UrlMake('http', strng.to_text(host), webport,
                                    login + '.xml')
            lg.out(4, '    %s' % idurl)
            d = net_misc.getPageTwisted(idurl, timeout=7)
            d.addCallback(_cb, idurl, host)
            d.addErrback(_eb, idurl, host)
            self.registrations.append(idurl)
        lg.out(
            4, 'id_registrator.doRequestServers login=%s registrations=%d' %
            (login, len(self.registrations)))
Exemplo n.º 9
0
 def __init__(self):
     self.installer_state_to_page = {
         'AT_STARTUP': self.renderSelectPage,
         'WHAT_TO_DO?': self.renderSelectPage,
         'INPUT_NAME': self.renderInputNamePage,
         'REGISTER': self.renderRegisterNewUserPage,
         'AUTHORIZED': self.renderRegisterNewUserPage,
         'LOAD_KEY': self.renderLoadKeyPage,
         'RECOVER': self.renderRestorePage,
         'RESTORED': self.renderRestorePage,
         'WIZARD': self.renderWizardPage,
         'DONE': self.renderLastPage,
     }
     self.install_wizard_state_to_page = {
         'READY': self.renderWizardStartPage,
         'STORAGE': self.renderWizardStoragePage,
         'CONTACTS': self.renderWizardContactsPage,
         'LAST_PAGE': self.renderLastPage,
         'DONE': self.renderLastPage,
     }
     self.data = {
         'username': bpio.ReadTextFile(settings.UserNameFilename()).strip(),
         'pksize': settings.DefaultPrivateKeySize(),
         'needed': str(int(settings.DefaultNeededBytes() / (1024 * 1024))),
         'donated': str(int(settings.DefaultDonatedBytes() / (1024 * 1024))),
         'suppliers': str(settings.DefaultDesiredSuppliers()),
         'customersdir': unicode(settings.getCustomersFilesDir()),
         'localbackupsdir': unicode(settings.getLocalBackupsDir()),
         'restoredir': unicode(settings.getRestoreDir()),
         'idurl': '',
         'keysrc': '',
         'name': '',
         'surname': '',
         'nickname': '',
     }
     installer.A('init')
Exemplo n.º 10
0
 def doSaveName(self, arg):
     settings.setPrivateKeySize(arg['pksize'])
     bpio.WriteTextFile(settings.UserNameFilename(), arg['username'])
Exemplo n.º 11
0
    def doVerifyAndRestore(self, arg):
        global _WorkingKey
        lg.out(4, 'identity_restorer.doVerifyAndRestore')

        remote_identity_src = arg

        if os.path.isfile(settings.KeyFileName()):
            lg.out(
                4,
                'identity_restorer.doVerifyAndRestore will backup and remove '
                + settings.KeyFileName())
            bpio.backup_and_remove(settings.KeyFileName())

        if os.path.isfile(settings.LocalIdentityFilename()):
            lg.out(
                4,
                'identity_restorer.doVerifyAndRestore will backup and remove '
                + settings.LocalIdentityFilename())
            bpio.backup_and_remove(settings.LocalIdentityFilename())

        try:
            remote_ident = identity.identity(xmlsrc=remote_identity_src)
            local_ident = identity.identity(xmlsrc=remote_identity_src)
        except:
            # lg.exc()
            reactor.callLater(0.1, self.automat, 'restore-failed',
                              ('remote identity have incorrect format', 'red'))
            return

        lg.out(
            4, 'identity_restorer.doVerifyAndRestore checking remote identity')
        try:
            res = remote_ident.isCorrect()
        except:
            lg.exc()
            res = False
        if not res:
            lg.out(
                4,
                'identity_restorer.doVerifyAndRestore remote identity is not correct FAILED!!!!'
            )
            reactor.callLater(0.1, self.automat, 'restore-failed',
                              ('remote identity format is not correct', 'red'))
            return

        lg.out(
            4, 'identity_restorer.doVerifyAndRestore validate remote identity')
        try:
            res = remote_ident.Valid()
        except:
            lg.exc()
            res = False
        if not res:
            lg.out(
                4,
                'identity_restorer.doVerifyAndRestore validate remote identity FAILED!!!!'
            )
            reactor.callLater(0.1, self.automat, 'restore-failed',
                              ('remote identity is not valid', 'red'))
            return

        key.ForgetMyKey()
        bpio.WriteFile(settings.KeyFileName(), _WorkingKey)
        try:
            key.InitMyKey()
        except:
            key.ForgetMyKey()
            # lg.exc()
            try:
                os.remove(settings.KeyFileName())
            except:
                pass
            reactor.callLater(0.1, self.automat, 'restore-failed',
                              ('private key is not valid', 'red'))
            return

        try:
            local_ident.sign()
        except:
            # lg.exc()
            reactor.callLater(0.1, self.automat, 'restore-failed',
                              ('error while signing identity', 'red'))
            return

        if remote_ident.signature != local_ident.signature:
            reactor.callLater(
                0.1, self.automat, 'restore-failed',
                ('signature did not match, key verification failed!', 'red'))
            return

        my_id.setLocalIdentity(local_ident)
        my_id.saveLocalIdentity()

        bpio.WriteFile(settings.UserNameFilename(), my_id.getIDName())

        if os.path.isfile(settings.KeyFileName() + '.backup'):
            lg.out(
                4,
                'identity_restorer.doVerifyAndRestore will remove backup file for '
                + settings.KeyFileName())
            bpio.remove_backuped_file(settings.KeyFileName())

        if os.path.isfile(settings.LocalIdentityFilename() + '.backup'):
            lg.out(
                4,
                'identity_restorer.doVerifyAndRestore will remove backup file for '
                + settings.LocalIdentityFilename())
            bpio.remove_backuped_file(settings.LocalIdentityFilename())

        reactor.callLater(0.1, self.automat, 'restore-success')