Пример #1
0
    def clone(self):
        """
        create a copy of db, peers, peer creds, and config
        save to compressed archive
        used to add new nodes to system
        """
        try:
            # save own credentials in clone's peer folder
            ownCert = "data/creds/local/server.crt"
            ownPubKey = "data/creds/local/server.pub"

            
            ID = get_ID(self.conf['p_wss'])  
            
            certCopy = "data/creds/peers/certs/{}.crt".format(ID)
            keyCopy = "data/creds/peers/keys/{}.pub".format(ID)

            shell("cp {} {}".format(ownCert, certCopy))
            shell("cp {} {}".format(ownPubKey, keyCopy))

            # save groups and db to backup_dir
            self.state.image_state() 
            self.cm.save_config()
            backupdir = "backup/"
            cfile = "config.ini"
            command = "cd data/ && tar czf clone.tar.gz {} {} creds/peers".format(cfile,backupdir)
            shell(command)
            log.info("clone of state successfully created")

        except Exception as e:
            log.info("clone of state failed")
Пример #2
0
 def add_peer(self, sock_str, creds):
     try:
         key,cert = creds.split('<>')
         #sock_str = "wss://"+str(ip)+":"+str(port)
         ID = get_ID(sock_str)
         if not sock_str in self.peers.keys():
             key = str(key)
             self.peers[sock_str] = RSA.importKey(key) 
             self.conf['log'].debug("add peer: key imported")
             # write key to file
             with open(self.conf['peer_keys']+ID+".pub", 'w') as fh:
                 fh.write(key)
             with open("{}{}.crt".format(self.conf['peer_certs'],ID), 'w') as fh:
                 fh.write(cert)
             self.num_peers += 1
             return True
     except Exception as e:
         self.conf['log'].debug(e)
     return False    
Пример #3
0
    def init_local_group(self):    
        self.keyspace = (0.0,1.0)

        # add self
        with open(self.conf['keyfile'], 'r') as fh:
            key = fh.read()
        with open(self.conf['certfile'], 'r') as fh:
            cert = fh.read()

        self.add_peer(self.conf['p_wss'], key + "<>" + cert)
        for wss in self.conf['peerlist']:
            fname = self.conf['peer_keys'] + get_ID(wss)+".pub"
            if os.path.isfile(fname):
                #read key and add pair to self.peers
                with open(fname, 'r') as fh:
                    self.peers[wss] = RSA.importKey(fh.read()) 
                    self.conf['log'].info("added {} to peers".format(wss))
            else:
                self.conf['log'].info("missing key file for {}".format(wss))
        
        self.num_peers = len(self.peers)