Переглянути джерело

Add warning to cli for allow default on FreeBSD

It doesn't work.
Not possible to fix with deficient network
stack and APIs.

ZeroTierOne-freebsd # zerotier-cli set 9bee8941b5xxxxxx allowDefault=1
400 set Allow Default does not work properly on FreeBSD. See #580
root@freebsd13-a:~/ZeroTierOne-freebsd # zerotier-cli get 9bee8941b5xxxxxx allowDefault
1
travis laduke 2 роки тому
батько
коміт
ee663d61cd
1 змінених файлів з 15 додано та 2 видалено
  1. 15 2
      service/OneService.cpp

+ 15 - 2
service/OneService.cpp

@@ -1793,6 +1793,8 @@ public:
 			_node->join(wantnw, (void*)0, (void*)0);
 			_node->join(wantnw, (void*)0, (void*)0);
 			auto out = json::object();
 			auto out = json::object();
 			Mutex::Lock l(_nets_m);
 			Mutex::Lock l(_nets_m);
+			bool allowDefault = false;
+
 			if (!_nets.empty()) {
 			if (!_nets.empty()) {
 				NetworkState &ns = _nets[wantnw];
 				NetworkState &ns = _nets[wantnw];
 				try {
 				try {
@@ -1806,8 +1808,9 @@ public:
 					if (allowGlobal.is_boolean()) {
 					if (allowGlobal.is_boolean()) {
 						ns.setAllowGlobal((bool)allowGlobal);
 						ns.setAllowGlobal((bool)allowGlobal);
 					}
 					}
-					json& allowDefault = j["allowDefault"];
-					if (allowDefault.is_boolean()) {
+					json& _allowDefault = j["allowDefault"];
+					if (_allowDefault.is_boolean()) {
+						allowDefault = _allowDefault;
 						ns.setAllowDefault((bool)allowDefault);
 						ns.setAllowDefault((bool)allowDefault);
 					}
 					}
 					json& allowDNS = j["allowDNS"];
 					json& allowDNS = j["allowDNS"];
@@ -1824,7 +1827,17 @@ public:
 
 
 				_networkToJson(out, ns);
 				_networkToJson(out, ns);
 			}
 			}
+#ifdef __FreeBSD__
+			if(!!allowDefault){
+				res.status = 400;
+				setContent(req, res, "Allow Default does not work properly on FreeBSD. See #580");
+			} else {
+				setContent(req, res, out.dump());
+
+			}
+#else
 			setContent(req, res, out.dump());
 			setContent(req, res, out.dump());
+#endif
 		};
 		};
 		_controlPlane.Post("/network/([0-9a-fA-F]{16})", networkPost);
 		_controlPlane.Post("/network/([0-9a-fA-F]{16})", networkPost);
 		_controlPlane.Put("/network/([0-9a-fA-F]){16}", networkPost);
 		_controlPlane.Put("/network/([0-9a-fA-F]){16}", networkPost);