Browse Source

Fix command line interface.

Adam Ierymenko 11 years ago
parent
commit
d9b91758e0
3 changed files with 13 additions and 9 deletions
  1. 6 4
      main.cpp
  2. 4 2
      node/Node.cpp
  3. 3 3
      node/NodeConfig.cpp

+ 6 - 4
main.cpp

@@ -116,9 +116,11 @@ static void printHelp(FILE *out,const char *cn)
 
 static void _CBresultHandler(void *arg,const char *line)
 {
-	if ((line)&&(line[0])) {
-		fprintf(stdout,"%s"ZT_EOL_S,line);
-	} else *((bool *)arg) = true;
+	if (line) {
+		if ((line[0] == '.')&&(line[1] == (char)0))
+			*((bool *)arg) = true;
+		else fprintf(stdout,"%s"ZT_EOL_S,line);
+	}
 }
 
 #ifdef __WINDOWS__
@@ -160,7 +162,7 @@ static int main(int argc,char **argv)
 		}
 		client.send(query.c_str());
 		while (!done)
-			Thread::sleep(250); // ghetto
+			Thread::sleep(100); // ghetto
 	} catch ( ... ) {
 		fprintf(stderr,"%s: fatal error: unable to connect (is ZeroTier One running?)"ZT_EOL_S,argv[0]);
 		return 1;

+ 4 - 2
node/Node.cpp

@@ -90,8 +90,10 @@ struct _NodeControlClientImpl
 
 static void _CBipcResultHandler(void *arg,IpcConnection *ipcc,IpcConnection::EventType event,const char *result)
 {
-	if ((event == IpcConnection::IPC_EVENT_COMMAND)&&(result))
-		((_NodeControlClientImpl *)arg)->resultHandler(((_NodeControlClientImpl *)arg)->arg,result);
+	if ((event == IpcConnection::IPC_EVENT_COMMAND)&&(result)) {
+		if (strcmp(result,"200 auth OK"))
+			((_NodeControlClientImpl *)arg)->resultHandler(((_NodeControlClientImpl *)arg)->arg,result);
+	}
 }
 
 Node::NodeControlClient::NodeControlClient(const char *hp,void (*resultHandler)(void *,const char *),void *arg,const char *authToken)

+ 3 - 3
node/NodeConfig.cpp

@@ -195,12 +195,12 @@ void NodeConfig::_doCommand(IpcConnection *ipcc,const char *commandLine)
 			Mutex::Lock _l(_connections_m);
 			_connections[ipcc] = true;
 			ipcc->printf("200 auth OK"ZT_EOL_S);
-		} else ipcc->printf("403 auth FAILED"ZT_EOL_S);
+		} else ipcc->printf("403 auth failed"ZT_EOL_S);
 	} else {
 		{
 			Mutex::Lock _l(_connections_m);
 			if (!_connections[ipcc]) {
-				ipcc->printf("403 not authorized"ZT_EOL_S""ZT_EOL_S);
+				ipcc->printf("403 %s unauthorized"ZT_EOL_S"."ZT_EOL_S,cmd[0].c_str());
 				return;
 			}
 		}
@@ -307,7 +307,7 @@ void NodeConfig::_doCommand(IpcConnection *ipcc,const char *commandLine)
 		}
 	}
 
-	ipcc->printf(ZT_EOL_S); // blank line ends response
+	ipcc->printf("."ZT_EOL_S); // blank line ends response
 }
 
 void NodeConfig::_readLocalConfig()