static Command.ExitCode RunCommandLine(IList <string> argsAsList) { //first lookup the connection string bool badConnectionString = false; for (var I = 0; I < argsAsList.Count - 1; ++I) { var lowerarg = argsAsList[I].ToLower(); if (lowerarg == "-c" || lowerarg == "--connect") { var connectionString = argsAsList[I + 1]; var splits = connectionString.Split('@'); var userpass = splits[0].Split(':'); if (splits.Length != 2 || userpass.Length != 2) { badConnectionString = true; break; } var addrport = splits[1].Split(':'); if (addrport.Length != 2) { badConnectionString = true; break; } var username = userpass[0]; var password = userpass[1]; var address = addrport[0]; ushort port; try { port = Convert.ToUInt16(addrport[1]); } catch { badConnectionString = true; break; } if (String.IsNullOrWhiteSpace(username) || String.IsNullOrWhiteSpace(password) || String.IsNullOrWhiteSpace(address)) { badConnectionString = true; break; } argsAsList.RemoveAt(I); argsAsList.RemoveAt(I); ReplaceInterface(new ServerInterface(address, port, username, password)); break; } } if (badConnectionString) { Console.WriteLine("Remote connection usage: <-c/--connect> username:password@address:port"); return(Command.ExitCode.BadCommand); } var res = currentInterface.ConnectionStatus(out string error); if (!res.HasFlag(ConnectivityLevel.Connected)) { Console.WriteLine("Unable to connect to service: " + error); Console.WriteLine("Remote connection usage: <-c/--connect> username:password@address:port"); return(Command.ExitCode.ConnectionError); } if (!res.HasFlag(ConnectivityLevel.Authenticated)) { Console.WriteLine("Authentication error: Username/password/windows identity is not authorized!"); return(Command.ExitCode.ConnectionError); } if (!SentVMMWarning && currentInterface.VersionMismatch(out error)) { SentVMMWarning = true; Console.WriteLine(error); } else if (interactive && !saidSrvVersion) { Console.WriteLine("Connectd to service version: " + currentInterface.GetServiceComponent <ITGLanding>().Version()); saidSrvVersion = true; } try { return(new CLICommand(currentInterface).DoRun(argsAsList)); } catch (Exception e) { Console.WriteLine("Error: " + e.ToString()); return(Command.ExitCode.ConnectionError); }; }