Browse Source

Starting to port from old Node() -- identity generation.

Adam Ierymenko 10 years ago
parent
commit
9e55f882d3
3 changed files with 24 additions and 7 deletions
  1. 1 1
      include/ZeroTierOne.h
  2. 22 5
      node/Node.cpp
  3. 1 1
      node/Node.hpp

+ 1 - 1
include/ZeroTierOne.h

@@ -755,7 +755,7 @@ enum ZT1_ResultCode ZT1_Node_processVirtualNetworkFrame(
  * @param nextCallDeadline Result: set to deadline for next call to one of the three processXXX() methods
  * @param nextCallDeadline Result: set to deadline for next call to one of the three processXXX() methods
  * @return OK (0) or error code if a fatal error condition has occurred
  * @return OK (0) or error code if a fatal error condition has occurred
  */
  */
-enum ZT1_ResultCode ZT1_Node_processNothing(ZT1_Node *node,uint64_t now,uint64_t *nextCallDeadline);
+enum ZT1_ResultCode ZT1_Node_processBackgroundTasks(ZT1_Node *node,uint64_t now,uint64_t *nextCallDeadline);
 
 
 /**
 /**
  * Join a network
  * Join a network

+ 22 - 5
node/Node.cpp

@@ -72,6 +72,21 @@ Node::Node(
 	_newestVersionSeen[1] = ZEROTIER_ONE_VERSION_MINOR;
 	_newestVersionSeen[1] = ZEROTIER_ONE_VERSION_MINOR;
 	_newestVersionSeen[2] = ZEROTIER_ONE_VERSION_REVISION;
 	_newestVersionSeen[2] = ZEROTIER_ONE_VERSION_REVISION;
 
 
+	std::string idtmp(dataStoreGet("identity.secret"));
+	if ((!idtmp.length())||(!RR->identity.fromString(idtmp))||(!RR->identity.hasPrivate())) {
+		RR->identity.generate();
+		idtmp = RR->identity.toString(true);
+		if (!dataStorePut("identity.secret",idtmp,true)) {
+			delete RR;
+			throw std::runtime_error("unable to write identity.secret");
+		}
+		idtmp = RR->identity.toString(false);
+		if (!dataStorePut("identity.public",idtmp,false)) {
+			delete RR;
+			throw std::runtime_error("unable to write identity.public");
+		}
+	}
+
 	try {
 	try {
 		RR->prng = new CMWC4096();
 		RR->prng = new CMWC4096();
 		RR->sw = new Switch(RR);
 		RR->sw = new Switch(RR);
@@ -90,6 +105,8 @@ Node::Node(
 		delete RR;
 		delete RR;
 		throw;
 		throw;
 	}
 	}
+
+	postEvent(ZT1_EVENT_UP);
 }
 }
 
 
 Node::~Node()
 Node::~Node()
@@ -112,7 +129,7 @@ ZT1_ResultCode Node::processWirePacket(
 	unsigned int packetLength,
 	unsigned int packetLength,
 	uint64_t *nextCallDeadline)
 	uint64_t *nextCallDeadline)
 {
 {
-	_now = now;
+	processBackgroundTasks(now,nextCallDeadline);
 }
 }
 
 
 ZT1_ResultCode Node::processVirtualNetworkFrame(
 ZT1_ResultCode Node::processVirtualNetworkFrame(
@@ -126,10 +143,10 @@ ZT1_ResultCode Node::processVirtualNetworkFrame(
 	unsigned int frameLength,
 	unsigned int frameLength,
 	uint64_t *nextCallDeadline)
 	uint64_t *nextCallDeadline)
 {
 {
-	_now = now;
+	processBackgroundTasks(now,nextCallDeadline);
 }
 }
 
 
-ZT1_ResultCode Node::processNothing(uint64_t now,uint64_t *nextCallDeadline)
+ZT1_ResultCode Node::processBackgroundTasks(uint64_t now,uint64_t *nextCallDeadline)
 {
 {
 	_now = now;
 	_now = now;
 }
 }
@@ -309,10 +326,10 @@ enum ZT1_ResultCode ZT1_Node_processVirtualNetworkFrame(
 	}
 	}
 }
 }
 
 
-enum ZT1_ResultCode ZT1_Node_processNothing(ZT1_Node *node,uint64_t now,uint64_t *nextCallDeadline)
+enum ZT1_ResultCode ZT1_Node_processBackgroundTasks(ZT1_Node *node,uint64_t now,uint64_t *nextCallDeadline)
 {
 {
 	try {
 	try {
-		return reinterpret_cast<ZeroTier::Node *>(node)->processNothing(now,nextCallDeadline);
+		return reinterpret_cast<ZeroTier::Node *>(node)->processBackgroundTasks(now,nextCallDeadline);
 	} catch (std::bad_alloc &exc) {
 	} catch (std::bad_alloc &exc) {
 		return ZT1_RESULT_FATAL_ERROR_OUT_OF_MEMORY;
 		return ZT1_RESULT_FATAL_ERROR_OUT_OF_MEMORY;
 	} catch ( ... ) {
 	} catch ( ... ) {

+ 1 - 1
node/Node.hpp

@@ -85,7 +85,7 @@ public:
 		const void *frameData,
 		const void *frameData,
 		unsigned int frameLength,
 		unsigned int frameLength,
 		uint64_t *nextCallDeadline);
 		uint64_t *nextCallDeadline);
-	ZT1_ResultCode processNothing(uint64_t now,uint64_t *nextCallDeadline);
+	ZT1_ResultCode processBackgroundTasks(uint64_t now,uint64_t *nextCallDeadline);
 	ZT1_ResultCode join(uint64_t nwid);
 	ZT1_ResultCode join(uint64_t nwid);
 	ZT1_ResultCode leave(uint64_t nwid);
 	ZT1_ResultCode leave(uint64_t nwid);
 	ZT1_ResultCode multicastSubscribe(uint64_t nwid,uint64_t multicastGroup,unsigned long multicastAdi);
 	ZT1_ResultCode multicastSubscribe(uint64_t nwid,uint64_t multicastGroup,unsigned long multicastAdi);