summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ZeroTierUI/ZeroTierUI.pro2
-rw-r--r--ZeroTierUI/mainwindow.cpp4
-rw-r--r--main.cpp25
-rw-r--r--node/Node.cpp26
-rw-r--r--node/Node.hpp10
5 files changed, 47 insertions, 20 deletions
diff --git a/ZeroTierUI/ZeroTierUI.pro b/ZeroTierUI/ZeroTierUI.pro
index 245982d3..082477ca 100644
--- a/ZeroTierUI/ZeroTierUI.pro
+++ b/ZeroTierUI/ZeroTierUI.pro
@@ -1,4 +1,4 @@
-QT += core gui widgets
+QT += core gui widgets network
TARGET = "ZeroTier One"
TEMPLATE = app
diff --git a/ZeroTierUI/mainwindow.cpp b/ZeroTierUI/mainwindow.cpp
index d935d045..4028b789 100644
--- a/ZeroTierUI/mainwindow.cpp
+++ b/ZeroTierUI/mainwindow.cpp
@@ -79,6 +79,10 @@ void MainWindow::timerEvent(QTimerEvent *event)
{
event->accept();
+#ifdef __APPLE__
+#else
+#endif
+
if (!zeroTierClient) {
std::string dotAuthFile((QDir::homePath() + QDir::separator() + ".zeroTierOneAuthToken").toStdString());
std::string authToken;
diff --git a/main.cpp b/main.cpp
index 0ba75814..dfb00fc5 100644
--- a/main.cpp
+++ b/main.cpp
@@ -161,6 +161,9 @@ static int main(int argc,char **argv)
return -2;
}
break;
+ case 'h':
+ printHelp(stdout,argv[0]);
+ return 0;
default:
return -1;
}
@@ -178,26 +181,10 @@ static int main(int argc,char **argv)
}
if (!authToken.length()) {
- const char *home = getenv("HOME");
- if (home) {
- std::string dotZeroTierAuthToken(home);
- dotZeroTierAuthToken.push_back(ZT_PATH_SEPARATOR);
- dotZeroTierAuthToken.append(".zerotierOneAuthToken");
- if (!Utils::readFile(dotZeroTierAuthToken.c_str(),authToken)) {
-#ifndef __WINDOWS__
-#ifdef __APPLE__
- const char *systemAuthTokenPath = "/Library/Application Support/ZeroTier/One/authtoken.secret";
-#else
- const char *systemAuthTokenPath = "/var/lib/zerotier-one/authtoken.secret";
-#endif
- if (!Utils::readFile(systemAuthTokenPath,authToken)) {
- fprintf(stdout,"FATAL ERROR: no token specified on command line and could not read '%s' or '%s'"ZT_EOL_S,dotZeroTierAuthToken.c_str(),systemAuthTokenPath);
- return -2;
- }
-#else // __WINDOWS__
- fprintf(stdout,"FATAL ERROR: no token specified on command line and could not read '%s'"ZT_EOL_S,dotZeroTierAuthToken.c_str());
+ if (!Utils::readFile(Node::LocalClient::authTokenDefaultUserPath().c_str(),authToken)) {
+ if (!Utils::readFile(Node::LocalClient::authTokenDefaultSystemPath().c_str(),authToken)) {
+ fprintf(stdout,"FATAL ERROR: no token specified on command line and could not read '%s' or '%s'"ZT_EOL_S,Node::LocalClient::authTokenDefaultSystemPath().c_str(),Node::LocalClient::authTokenDefaultUserPath().c_str());
return -2;
-#endif // __WINDOWS__
}
}
}
diff --git a/node/Node.cpp b/node/Node.cpp
index cd8cfb5e..cbea5694 100644
--- a/node/Node.cpp
+++ b/node/Node.cpp
@@ -188,6 +188,32 @@ std::vector<std::string> Node::LocalClient::splitLine(const char *line)
return Utils::split(line," ","\\","\"");
}
+std::string Node::LocalClient::authTokenDefaultUserPath()
+{
+ const char *home = getenv("HOME");
+ if (home) {
+#ifdef __APPLE__
+ return (std::string(home) + "/Library/Application Support/ZeroTier/One/authtoken.secret");
+#else
+ return (std::string(home) + "/.zeroTierOneAuthToken");
+#endif
+ }
+ return std::string();
+}
+
+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
+}
+
struct _NodeImpl
{
RuntimeEnvironment renv;
diff --git a/node/Node.hpp b/node/Node.hpp
index 2736713f..a6410992 100644
--- a/node/Node.hpp
+++ b/node/Node.hpp
@@ -84,6 +84,16 @@ public:
static std::vector<std::string> splitLine(const char *line);
static inline std::vector<std::string> splitLine(const std::string &line) { return splitLine(line.c_str()); }
+ /**
+ * @return Default path for user-local authorization token for the current user or empty string if cannot be determined
+ */
+ static std::string authTokenDefaultUserPath();
+
+ /**
+ * @return Default system path for auth token on this platform
+ */
+ static std::string authTokenDefaultSystemPath();
+
private:
// LocalClient is not copyable
LocalClient(const LocalClient&);