summaryrefslogtreecommitdiff
path: root/node
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@zerotier.com>2014-01-20 16:16:01 -0800
committerAdam Ierymenko <adam.ierymenko@zerotier.com>2014-01-20 16:16:01 -0800
commit6bc5a84a2d6caa90aa131a705b93c88586b2a95f (patch)
tree0145fa8b9fe2d5b980bfef85d4869f895ae31d26 /node
parent3375363d934dcd7e43bc4e3b3cefe92318123dc9 (diff)
downloadinfinitytier-6bc5a84a2d6caa90aa131a705b93c88586b2a95f.tar.gz
infinitytier-6bc5a84a2d6caa90aa131a705b93c88586b2a95f.zip
Windows build fixes and installer work...
Diffstat (limited to 'node')
-rw-r--r--node/Defaults.cpp20
-rw-r--r--node/Node.cpp25
2 files changed, 25 insertions, 20 deletions
diff --git a/node/Defaults.cpp b/node/Defaults.cpp
index 3a8defba..e2b91d98 100644
--- a/node/Defaults.cpp
+++ b/node/Defaults.cpp
@@ -36,6 +36,7 @@
#ifdef __WINDOWS__
#include <WinSock2.h>
#include <Windows.h>
+#include <ShlObj.h>
#endif
namespace ZeroTier {
@@ -78,24 +79,25 @@ static inline std::map< Identity,std::vector<InetAddress> > _mkSupernodeMap()
static inline std::string _mkDefaultHomePath()
{
#ifdef __UNIX_LIKE__
+
#ifdef __APPLE__
return std::string("/Library/Application Support/ZeroTier/One");
#else
return std::string("/var/lib/zerotier-one");
#endif
-#else
+
+#else // not __UNIX_LIKE__
+
#ifdef __WINDOWS__
- OSVERSIONINFO vi;
- memset (&vi,0,sizeof(vi));
- vi.dwOSVersionInfoSize = sizeof(vi);
- GetVersionEx(&vi);
- if (vi.dwMajorVersion < 6)
- return std::string("C:\\Documents and Settings\\All Users\\Application Data\\ZeroTier\\One");
- return std::string("C:\\ProgramData\\ZeroTier\\One");
+ char buf[16384];
+ if (SUCCEEDED(SHGetFolderPathA(NULL,CSIDL_COMMON_APPDATA,NULL,0,buf)))
+ return (std::string(buf) + "\\ZeroTier\\One");
+ else return std::string("C:\\ZeroTier\\One");
#else
// unknown platform
#endif
-#endif
+
+#endif // __UNIX_LIKE__ or not...
}
static inline std::map< Address,Identity > _mkUpdateAuth()
diff --git a/node/Node.cpp b/node/Node.cpp
index 627042b3..9bfa7ad6 100644
--- a/node/Node.cpp
+++ b/node/Node.cpp
@@ -44,6 +44,7 @@
#ifdef __WINDOWS__
#include <WinSock2.h>
#include <Windows.h>
+#include <ShlObj.h>
#endif
#include "Condition.hpp"
@@ -190,6 +191,15 @@ std::vector<std::string> Node::LocalClient::splitLine(const char *line)
std::string Node::LocalClient::authTokenDefaultUserPath()
{
+#ifdef __WINDOWS__
+
+ char buf[16384];
+ if (SUCCEEDED(SHGetFolderPathA(NULL,CSIDL_APPDATA,NULL,0,buf)))
+ return (std::string(buf) + "\\ZeroTier\\One\\authtoken.secret");
+ else return std::string();
+
+#else // not __WINDOWS__
+
const char *home = getenv("HOME");
if (home) {
#ifdef __APPLE__
@@ -197,21 +207,14 @@ std::string Node::LocalClient::authTokenDefaultUserPath()
#else
return (std::string(home) + "/.zeroTierOneAuthToken");
#endif
- }
- return std::string();
+ } else return std::string();
+
+#endif // __WINDOWS__ or not __WINDOWS__
}
std::string Node::LocalClient::authTokenDefaultSystemPath()
{
-#ifdef __WINDOWS__
- // TODO
-#else
-#ifdef __APPLE__
- return "/Library/Application Support/ZeroTier/One/authtoken.secret";
-#else
- return "/var/lib/zerotier-one/authtoken.secret";
-#endif
-#endif
+ return (ZT_DEFAULTS.defaultHomePath + ZT_PATH_SEPARATOR_S"authtoken.secret");
}
struct _NodeImpl