From fcb4221f97a7545ac741b184c53c10c3ac2c06b3 Mon Sep 17 00:00:00 2001 From: Grant Limberg Date: Tue, 5 Mar 2019 15:11:50 -0800 Subject: [PATCH] rabbitMQ implementation --- controller/EmbeddedNetworkController.cpp | 7 +- controller/EmbeddedNetworkController.hpp | 6 +- controller/PostgreSQL.cpp | 57 +++++++++++- controller/PostgreSQL.hpp | 12 +-- controller/RabbitMQ.cpp | 91 +++++++++++++++++++ controller/RabbitMQ.hpp | 75 +++++++++++++++ ext/librabbitmq/centos_x64/lib/librabbitmq.a | Bin 134844 -> 137332 bytes objects.mk | 1 + service/OneService.cpp | 17 +++- 9 files changed, 249 insertions(+), 17 deletions(-) create mode 100644 controller/RabbitMQ.cpp create mode 100644 controller/RabbitMQ.hpp diff --git a/controller/EmbeddedNetworkController.cpp b/controller/EmbeddedNetworkController.cpp index 8b3f1517f..5ddcaa4b4 100644 --- a/controller/EmbeddedNetworkController.cpp +++ b/controller/EmbeddedNetworkController.cpp @@ -464,12 +464,13 @@ static bool _parseRule(json &r,ZT_VirtualNetworkRule &rule) } // anonymous namespace -EmbeddedNetworkController::EmbeddedNetworkController(Node *node,const char *dbPath, int listenPort) : +EmbeddedNetworkController::EmbeddedNetworkController(Node *node,const char *dbPath, int listenPort, MQConfig *mqc) : _startTime(OSUtils::now()), _listenPort(listenPort), _node(node), _path(dbPath), - _sender((NetworkController::Sender *)0) + _sender((NetworkController::Sender *)0), + _mqc(mqc) { } @@ -489,7 +490,7 @@ void EmbeddedNetworkController::init(const Identity &signingId,Sender *sender) _signingIdAddressString = signingId.address().toString(tmp); #ifdef ZT_CONTROLLER_USE_LIBPQ if ((_path.length() > 9)&&(_path.substr(0,9) == "postgres:")) - _db.reset(new PostgreSQL(this,_signingId,_path.substr(9).c_str(), _listenPort)); + _db.reset(new PostgreSQL(this,_signingId,_path.substr(9).c_str(), _listenPort, _mqc)); else // else use FileDB after endif #endif _db.reset(new FileDB(this,_signingId,_path.c_str())); diff --git a/controller/EmbeddedNetworkController.hpp b/controller/EmbeddedNetworkController.hpp index 718c97ffd..269442a87 100644 --- a/controller/EmbeddedNetworkController.hpp +++ b/controller/EmbeddedNetworkController.hpp @@ -60,6 +60,8 @@ namespace ZeroTier { class Node; +struct MQConfig; + class EmbeddedNetworkController : public NetworkController { public: @@ -67,7 +69,7 @@ public: * @param node Parent node * @param dbPath Database path (file path or database credentials) */ - EmbeddedNetworkController(Node *node,const char *dbPath, int listenPort); + EmbeddedNetworkController(Node *node,const char *dbPath, int listenPort, MQConfig *mqc = NULL); virtual ~EmbeddedNetworkController(); virtual void init(const Identity &signingId,Sender *sender); @@ -164,6 +166,8 @@ private: std::unordered_map< _MemberStatusKey,_MemberStatus,_MemberStatusHash > _memberStatus; std::mutex _memberStatus_l; + + MQConfig *_mqc; }; } // namespace ZeroTier diff --git a/controller/PostgreSQL.cpp b/controller/PostgreSQL.cpp index 8dc56c9cc..5192dad5d 100644 --- a/controller/PostgreSQL.cpp +++ b/controller/PostgreSQL.cpp @@ -28,6 +28,7 @@ #include "PostgreSQL.hpp" #include "EmbeddedNetworkController.hpp" +#include "RabbitMQ.hpp" #include "../version.h" #include @@ -74,7 +75,7 @@ std::string join(const std::vector &elements, const char * const se using namespace ZeroTier; -PostgreSQL::PostgreSQL(EmbeddedNetworkController *const nc, const Identity &myId, const char *path, int listenPort, mq_config *mqc) +PostgreSQL::PostgreSQL(EmbeddedNetworkController *const nc, const Identity &myId, const char *path, int listenPort, MQConfig *mqc) : DB(nc, myId, path) , _ready(0) , _connected(1) @@ -646,7 +647,32 @@ void PostgreSQL::_membersWatcher_Postgres(PGconn *conn) { } void PostgreSQL::_membersWatcher_RabbitMQ() { - + char buf[11] = {0}; + std::string qname = "member_"+ std::string(_myAddress.toString(buf)); + RabbitMQ rmq(_mqc, qname.c_str()); + try { + rmq.init(); + } catch (std::runtime_error &e) { + fprintf(stderr, "RABBITMQ ERROR: %s\n", e.what()); + exit(11); + } + while (_run == 1) { + try { + std::string msg = rmq.consume(); + json tmp(json::parse(msg)); + json &ov = tmp["old_val"]; + json &nv = tmp["new_val"]; + json oldConfig, newConfig; + if (ov.is_object()) oldConfig = ov; + if (nv.is_object()) newConfig = nv; + if (oldConfig.is_object() || newConfig.is_object()) { + _memberChanged(oldConfig,newConfig,(this->_ready>=2)); + } + } catch (std::runtime_error &e) { + fprintf(stderr, "RABBITMQ ERROR: %s\n", e.what()); + break; + } catch(...) {} + } } void PostgreSQL::networksDbWatcher() @@ -714,7 +740,32 @@ void PostgreSQL::_networksWatcher_Postgres(PGconn *conn) { } void PostgreSQL::_networksWatcher_RabbitMQ() { - + char buf[11] = {0}; + std::string qname = "network_"+ std::string(_myAddress.toString(buf)); + RabbitMQ rmq(_mqc, qname.c_str()); + try { + rmq.init(); + } catch (std::runtime_error &e) { + fprintf(stderr, "RABBITMQ ERROR: %s\n", e.what()); + exit(11); + } + while (_run == 1) { + try { + std::string msg = rmq.consume(); + json tmp(json::parse(msg)); + json &ov = tmp["old_val"]; + json &nv = tmp["new_val"]; + json oldConfig, newConfig; + if (ov.is_object()) oldConfig = ov; + if (nv.is_object()) newConfig = nv; + if (oldConfig.is_object()||newConfig.is_object()) { + _networkChanged(oldConfig,newConfig,(this->_ready >= 2)); + } + } catch (std::runtime_error &e) { + fprintf(stderr, "RABBITMQ ERROR: %s\n", e.what()); + break; + } catch(...) {} + } } void PostgreSQL::commitThread() diff --git a/controller/PostgreSQL.hpp b/controller/PostgreSQL.hpp index e0dcdf06f..779d47bd5 100644 --- a/controller/PostgreSQL.hpp +++ b/controller/PostgreSQL.hpp @@ -40,13 +40,7 @@ extern "C" { namespace ZeroTier { -struct mq_config -{ - const char *host; - int port; - const char *username; - const char *password; -}; +struct MQConfig; /** * A controller database driver that talks to PostgreSQL @@ -57,7 +51,7 @@ struct mq_config class PostgreSQL : public DB { public: - PostgreSQL(EmbeddedNetworkController *const nc, const Identity &myId, const char *path, int listenPort, mq_config *mqc = NULL); + PostgreSQL(EmbeddedNetworkController *const nc, const Identity &myId, const char *path, int listenPort, MQConfig *mqc = NULL); virtual ~PostgreSQL(); virtual bool waitForReady(); @@ -115,7 +109,7 @@ private: int _listenPort; - mq_config *_mqc; + MQConfig *_mqc; }; } diff --git a/controller/RabbitMQ.cpp b/controller/RabbitMQ.cpp new file mode 100644 index 000000000..34efcde40 --- /dev/null +++ b/controller/RabbitMQ.cpp @@ -0,0 +1,91 @@ +#include "RabbitMQ.hpp" + +#include +#include +#include +#include + +namespace ZeroTier +{ + +RabbitMQ::RabbitMQ(MQConfig *cfg, const char *queueName) + : _mqc(cfg) + , _qName(queueName) + , _socket(NULL) + , _status(0) +{ +} + +RabbitMQ::~RabbitMQ() +{ + amqp_channel_close(_conn, _channel, AMQP_REPLY_SUCCESS); + amqp_connection_close(_conn, AMQP_REPLY_SUCCESS); + amqp_destroy_connection(_conn); +} + +void RabbitMQ::init() +{ + struct timeval tval; + memset(&tval, 0, sizeof(struct timeval)); + tval.tv_sec = 5; + + fprintf(stderr, "Initializing RabbitMQ %s\n", _qName); + _conn = amqp_new_connection(); + _socket = amqp_tcp_socket_new(_conn); + if (!_socket) { + throw std::runtime_error("Can't create socket for RabbitMQ"); + } + + _status = amqp_socket_open_noblock(_socket, _mqc->host, _mqc->port, &tval); + if (_status) { + throw std::runtime_error("Can't connect to RabbitMQ"); + } + + amqp_rpc_reply_t r = amqp_login(_conn, "/", 0, 131072, 0, AMQP_SASL_METHOD_PLAIN, + _mqc->username, _mqc->password); + if (r.reply_type != AMQP_RESPONSE_NORMAL) { + throw std::runtime_error("RabbitMQ Login Error"); + } + + static int chan = 0; + amqp_channel_open(_conn, ++chan); + r = amqp_get_rpc_reply(_conn); + if(r.reply_type != AMQP_RESPONSE_NORMAL) { + throw std::runtime_error("Error opening communication channel"); + } + _channel = chan; + + _q = amqp_queue_declare(_conn, _channel, amqp_cstring_bytes(_qName), 0, 0, 0, 0, amqp_empty_table); + r = amqp_get_rpc_reply(_conn); + if (r.reply_type != AMQP_RESPONSE_NORMAL) { + throw std::runtime_error("Error declaring queue"); + } + + amqp_basic_consume(_conn, _channel, amqp_cstring_bytes(_qName), amqp_empty_bytes, 0, 1, 0, amqp_empty_table); + r = amqp_get_rpc_reply(_conn); + if (r.reply_type != AMQP_RESPONSE_NORMAL) { + throw std::runtime_error("Error conuming"); + } + fprintf(stderr, "RabbitMQ Init OK %s\n", _qName); +} + +std::string RabbitMQ::consume() +{ + amqp_rpc_reply_t res; + amqp_envelope_t envelope; + amqp_maybe_release_buffers(_conn); + + res = amqp_consume_message(_conn, &envelope, NULL, 0); + if (res.reply_type != AMQP_RESPONSE_NORMAL) { + throw std::runtime_error("Error getting message"); + } + + std::string msg( + (const char*)envelope.message.body.bytes, + envelope.message.body.len + ); + amqp_destroy_envelope(&envelope); + return msg; +} + +} \ No newline at end of file diff --git a/controller/RabbitMQ.hpp b/controller/RabbitMQ.hpp new file mode 100644 index 000000000..74023b124 --- /dev/null +++ b/controller/RabbitMQ.hpp @@ -0,0 +1,75 @@ +/* + * ZeroTier One - Network Virtualization Everywhere + * Copyright (C) 2011-2019 ZeroTier, Inc. https://www.zerotier.com/ + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * -- + * + * You can be released from the requirements of the license by purchasing + * a commercial license. Buying such a license is mandatory as soon as you + * develop commercial closed-source software that incorporates or links + * directly against ZeroTier software without disclosing the source code + * of your own application. + */ +#ifndef ZT_CONTROLLER_RABBITMQ_HPP +#define ZT_CONTROLLER_RABBITMQ_HPP + +namespace ZeroTier +{ +struct MQConfig { + const char *host; + int port; + const char *username; + const char *password; +}; +} + + +#ifdef ZT_CONTROLLER_USE_LIBPQ + +#include +#include +#include + +namespace ZeroTier +{ + +class RabbitMQ { +public: + RabbitMQ(MQConfig *cfg, const char *queueName); + ~RabbitMQ(); + + void init(); + + std::string consume(); + +private: + MQConfig *_mqc; + const char *_qName; + + amqp_socket_t *_socket; + amqp_connection_state_t _conn; + amqp_queue_declare_ok_t *_q; + int _status; + + int _channel; +}; + +} + +#endif // ZT_CONTROLLER_USE_LIBPQ + +#endif // ZT_CONTROLLER_RABBITMQ_HPP + diff --git a/ext/librabbitmq/centos_x64/lib/librabbitmq.a b/ext/librabbitmq/centos_x64/lib/librabbitmq.a index 8fc39d06b33e0639e84b1a89e789a952da66ae35..9495fa7b8c3cf0d2c934519bbc536e31048cc028 100644 GIT binary patch literal 137332 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
    !Y4muwj6rPo6;-J%)LFpD!j>1Bjfnf&J90xS@ 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�PCKAES0O}VZ34rbpXMpUvhKa)R8fYyH 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 D1Jn%# literal 134844 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 diff --git a/objects.mk b/objects.mk index c15fe299d..eb348dca2 100644 --- a/objects.mk +++ b/objects.mk @@ -31,6 +31,7 @@ ONE_OBJS=\ controller/DB.o \ controller/FileDB.o \ controller/PostgreSQL.o \ + controller/RabbitMQ.o \ osdep/ManagedRoute.o \ osdep/Http.o \ osdep/OSUtils.o \ diff --git a/service/OneService.cpp b/service/OneService.cpp index b66731982..0fd31c640 100644 --- a/service/OneService.cpp +++ b/service/OneService.cpp @@ -99,6 +99,7 @@ extern "C" { using json = nlohmann::json; #include "../controller/EmbeddedNetworkController.hpp" +#include "../controller/RabbitMQ.hpp" #ifdef ZT_USE_TEST_TAP @@ -569,6 +570,8 @@ public: volatile bool _run; Mutex _run_m; + MQConfig *_mqc; + // end member variables ---------------------------------------------------- OneServiceImpl(const char *hp,unsigned int port) : @@ -604,6 +607,7 @@ public: ,_vaultPath("cubbyhole/zerotier") #endif ,_run(true) + ,_mqc(NULL) { _ports[0] = 0; _ports[1] = 0; @@ -678,6 +682,7 @@ public: delete _portMapper; #endif delete _controller; + delete _mqc; } virtual ReasonForTermination run() @@ -809,7 +814,7 @@ public: OSUtils::rmDashRf((_homePath + ZT_PATH_SEPARATOR_S "iddb.d").c_str()); // Network controller is now enabled by default for desktop and server - _controller = new EmbeddedNetworkController(_node,_controllerDbPath.c_str(),_ports[0]); + _controller = new EmbeddedNetworkController(_node,_controllerDbPath.c_str(),_ports[0], _mqc); _node->setNetconfMaster((void *)_controller); // Join existing networks in networks.d @@ -1073,6 +1078,16 @@ public: if (cdbp.length() > 0) _controllerDbPath = cdbp; + json &rmq = settings["rabbitmq"]; + if (rmq.is_object() && _mqc == NULL) { + fprintf(stderr, "Reading RabbitMQ Config\n"); + _mqc = new MQConfig; + _mqc->port = rmq["port"]; + _mqc->host = OSUtils::jsonString(rmq["host"], "").c_str(); + _mqc->username = OSUtils::jsonString(rmq["username"], "").c_str(); + _mqc->password = OSUtils::jsonString(rmq["password"], "").c_str(); + } + // Bind to wildcard instead of to specific interfaces (disables full tunnel capability) json &bind = settings["bind"]; if (bind.is_array()) {