diff options
author | Adam Ierymenko <adam.ierymenko@zerotier.com> | 2014-01-20 16:16:01 -0800 |
---|---|---|
committer | Adam Ierymenko <adam.ierymenko@zerotier.com> | 2014-01-20 16:16:01 -0800 |
commit | 6bc5a84a2d6caa90aa131a705b93c88586b2a95f (patch) | |
tree | 0145fa8b9fe2d5b980bfef85d4869f895ae31d26 /node | |
parent | 3375363d934dcd7e43bc4e3b3cefe92318123dc9 (diff) | |
download | infinitytier-6bc5a84a2d6caa90aa131a705b93c88586b2a95f.tar.gz infinitytier-6bc5a84a2d6caa90aa131a705b93c88586b2a95f.zip |
Windows build fixes and installer work...
Diffstat (limited to 'node')
-rw-r--r-- | node/Defaults.cpp | 20 | ||||
-rw-r--r-- | node/Node.cpp | 25 |
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 |