Esempio n. 1
0
    def ssh_key_broadcast(self, event):
        from pgherd.daemon import daemon

        self.logger.info("Receive ssh key store request with auth_key: {}".format(daemon.config.daemon.auth_key))

        if event.get_message().get("auth_key") != daemon.config.daemon.auth_key:
            self.logger.warning("Unauthorized auth_key store request")
            return

        authorized_keys = "{}/.ssh/authorized_keys".format(os.path.expanduser('~/'))

        try:

            if not os.path.isdir(os.path.dirname(authorized_keys)):
                os.mkdir(os.path.dirname(authorized_keys))

            f = open(authorized_keys, 'a+')

            for line in f:
                if line.strip() == event.get_message().get("key").strip():
                    f.close()
                    self.logger.debug("SSH key already stored.")
                    return

            f.write("{}\n".format(event.get_message().get("key")))
            f.close()

            msg = DiscovererMessage('ssh_key.store', {'host': daemon.config.node_fqdn})
            event.get_message().reply(msg)
        except:
            self.logger.exception("Failed storing ssh key into authorized_keys: {}".format(authorized_keys))
Esempio n. 2
0
    def start_negotiation(self, event):
        msg = event.get_message()
        address = msg.get_src()[0]

        from pgherd.daemon import daemon
        if address in daemon.config.discoverer.local_ips:
            return

        if address in ['127.0.0.1', '0.0.0.0']:
            address = msg.get_src()[0]

        port = msg.get('port')

        self.logger.debug("Creating NegotiatorConnection to node: '{}' at: {}:{}".format(msg.get('node'), address, port))
        connection = NegotiatorConnection(msg.get('node'), address, port)
        connection.start()
        self._connections[msg.get('node')] = connection
Esempio n. 3
0
    def start_negotiation(self, event):
        msg = event.get_message()
        address = msg.get_src()[0]

        from pgherd.daemon import daemon
        if address in daemon.config.discoverer.local_ips:
            return

        if address in ['127.0.0.1', '0.0.0.0']:
            address = msg.get_src()[0]

        port = msg.get('port')

        self.logger.debug(
            "Creating NegotiatorConnection to node: '{}' at: {}:{}".format(
                msg.get('node'), address, port))
        connection = NegotiatorConnection(msg.get('node'), address, port)
        connection.start()
        self._connections[msg.get('node')] = connection
Esempio n. 4
0
 def cluster_status(self, event):
     from pgherd.daemon import daemon
     if daemon.node.is_master:
         msg = DiscovererMessage('cluster.status', daemon.node.as_dict())
         event.get_message().reply(msg)
     self.logger.debug("Cluster status request received")
Esempio n. 5
0
 def master_lookup(self, event):
     from pgherd.daemon import daemon
     if daemon.node.is_master:
         msg = DiscovererMessage('master.info', daemon.node.as_dict())
         event.get_message().reply(msg)
     self.logger.debug("Master lookup request received")