summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrant Limberg <grant.limberg@zerotier.com>2018-09-28 10:55:39 -0700
committerGrant Limberg <grant.limberg@zerotier.com>2018-09-28 10:55:39 -0700
commit417aa9547b4f3abb9009a3dbb66ecf93d3d686f7 (patch)
tree78e86f1a63027323ef4eaa4c67cd2a4c449b4919
parent0510f85a8fe6cba7e6258d534fa49d47f9f8e2a2 (diff)
downloadinfinitytier-417aa9547b4f3abb9009a3dbb66ecf93d3d686f7.tar.gz
infinitytier-417aa9547b4f3abb9009a3dbb66ecf93d3d686f7.zip
Working controller & docker container for GKE
-rw-r--r--controller/PostgreSQL.cpp13
-rw-r--r--docker/Dockerfile15
-rw-r--r--docker/main.sh44
-rw-r--r--make-linux.mk6
4 files changed, 75 insertions, 3 deletions
diff --git a/controller/PostgreSQL.cpp b/controller/PostgreSQL.cpp
index 4a33e4b6..412bca6b 100644
--- a/controller/PostgreSQL.cpp
+++ b/controller/PostgreSQL.cpp
@@ -23,6 +23,7 @@
#include "../version.h"
#include <libpq-fe.h>
+#include <sstream>
using json = nlohmann::json;
namespace {
@@ -200,6 +201,10 @@ void PostgreSQL::initializeNetworks(PGconn *conn)
json empty;
json config;
+ const char *nwidparam[1] = {
+ PQgetvalue(res, i, 0)
+ };
+
config["id"] = PQgetvalue(res, i, 0);
config["nwid"] = PQgetvalue(res, i, 0);
config["creationTime"] = std::stoull(PQgetvalue(res, i, 1));
@@ -225,7 +230,7 @@ void PostgreSQL::initializeNetworks(PGconn *conn)
"SELECT host(ip_range_start), host(ip_range_end) FROM ztc_network_assignment_pool WHERE network_id = $1",
1,
NULL,
- params,
+ nwidparam,
NULL,
NULL,
0);
@@ -252,7 +257,7 @@ void PostgreSQL::initializeNetworks(PGconn *conn)
"SELECT host(address), bits, host(via) FROM ztc_network_route WHERE network_id = $1",
1,
NULL,
- params,
+ nwidparam,
NULL,
NULL,
0);
@@ -284,6 +289,8 @@ void PostgreSQL::initializeNetworks(PGconn *conn)
PQclear(r2);
_networkChanged(empty, config, false);
+
+ fprintf(stderr, "%s", OSUtils::jsonDump(config, 2).c_str());
}
PQclear(res);
@@ -1234,4 +1241,4 @@ void PostgreSQL::onlineNotificationThread()
}
PQfinish(conn);
}
-#endif //ZT_CONTROLLER_USE_LIBPQ \ No newline at end of file
+#endif //ZT_CONTROLLER_USE_LIBPQ
diff --git a/docker/Dockerfile b/docker/Dockerfile
new file mode 100644
index 00000000..3b01b2ad
--- /dev/null
+++ b/docker/Dockerfile
@@ -0,0 +1,15 @@
+# Dockerfile for ZeroTier Central Controllers
+FROM centos:7
+MAINTAINER Adam Ierymekno <adam.ierymenko@zerotier.com>, Grant Limberg <grant.limberg@zerotier.com>
+
+RUN yum update -y
+RUN yum install -y https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm
+RUN yum install -y postgresql10
+
+ADD zerotier-one /usr/local/bin/zerotier-one
+RUN chmod a+x /usr/local/bin/zerotier-one
+
+ADD docker/main.sh /
+RUN chmod a+x /main.sh
+
+ENTRYPOINT /main.sh
diff --git a/docker/main.sh b/docker/main.sh
new file mode 100644
index 00000000..f0054a94
--- /dev/null
+++ b/docker/main.sh
@@ -0,0 +1,44 @@
+#!/usr/bin/env bash
+
+if [ -z "$ZT_IDENTITY_PATH" ]; then
+ echo '*** FAILED: ZT_IDENTITY_PATH environment variable is not defined'
+ exit 1
+fi
+if [ -z "$ZT_DB_HOST" ]; then
+ echo '*** FAILED: ZT_DB_HOST environment variable not defined'
+ exit 1
+fi
+if [ -z "$ZT_DB_PORT" ]; then
+ echo '*** FAILED: ZT_DB_PORT environment variable not defined'
+ exit 1
+fi
+if [ -z "$ZT_DB_USER" ]; then
+ echo '*** FAILED: ZT_DB_USER environment variable not defined'
+ exit 1
+fi
+if [ -z "$ZT_DB_PASSWORD" ]; then
+ echo '*** FAILED: ZT_DB_PASSWORD environment variable not defined'
+ exit 1
+fi
+
+mkdir -p /var/lib/zerotier-one
+
+pushd /var/lib/zerotier-one
+ln -s $ZT_IDENTITY_PATH/identity.public identity.public
+ln -s $ZT_IDENTITY_PATH/identity.secret identity.secret
+popd
+
+echo "{
+ \"settings\": {
+ \"portMappingEnabled\": true,
+ \"softwareUpdate\": \"disable\",
+ \"interfadePrefixBlacklist\": [
+ \"inot\",
+ \"nat64\"
+ ],
+ \"controllerDbPath\": \"postgres:host=${ZT_DB_HOST} port=${ZT_DB_PORT} dbname=ztc user=${ZT_DB_USER} password=${ZT_DB_PASSWORD}\"
+ }
+}
+" > /var/lib/zerotier-one/local.conf
+
+exec /usr/local/bin/zerotier-one /var/lib/zerotier-one
diff --git a/make-linux.mk b/make-linux.mk
index 9b128f1d..78ea98de 100644
--- a/make-linux.mk
+++ b/make-linux.mk
@@ -22,6 +22,9 @@ ONE_OBJS+=osdep/LinuxNetLink.o
NLTEST_OBJS+=osdep/LinuxNetLink.o node/InetAddress.o node/Utils.o node/Salsa20.o
NLTEST_OBJS+=nltest.o
+# for central controller builds
+TIMESTAMP=$(shell date +"%Y%m%d%H%M")
+
# Auto-detect miniupnpc and nat-pmp as well and use system libs if present,
# otherwise build into binary as done on Mac and Windows.
ONE_OBJS+=osdep/PortMapper.o
@@ -318,6 +321,9 @@ official: FORCE
central-controller: FORCE
make -j4 LDLIBS="-L/usr/pgsql-10/lib/ -lpq" CXXFLAGS="-I/usr/pgsql-10/include -fPIC" DEFS="-DZT_CONTROLLER_USE_LIBPQ" ZT_OFFICIAL=1 ZT_USE_X64_ASM_ED25519=1 one
+central-controller-docker: central-controller
+ docker build -t gcr.io/zerotier-central/ztcentral-controller:${TIMESTAMP} -f docker/Dockerfile .
+
debug: FORCE
make ZT_DEBUG=1 one
make ZT_DEBUG=1 selftest