Index: remoting/tools/me2me_virtual_host.py |
diff --git a/remoting/tools/me2me_virtual_host.py b/remoting/tools/me2me_virtual_host.py |
index 95ee7b7c7b18eaededb85ecdbb2a5cdfc051225d..73c34fdfed1c12db13a4bf3ede5644aad6ff035b 100755 |
--- a/remoting/tools/me2me_virtual_host.py |
+++ b/remoting/tools/me2me_virtual_host.py |
@@ -383,9 +383,11 @@ class Desktop: |
def launch_host(self, host): |
# Start remoting host |
args = [locate_executable(REMOTING_COMMAND), |
- "--host_config=%s" % (host.config_file), |
- "--auth_config=%s" % (host.auth.config_file)] |
+ "--host_config=%s" % (host.config_file)] |
+ if host.auth.config_file != host.config_file: |
+ args.append("--auth_config=%s" % (host.auth.config_file)) |
self.host_proc = subprocess.Popen(args, env=self.child_env) |
+ logging.info(args) |
if not self.host_proc.pid: |
raise Exception("Could not start remoting host") |
@@ -624,8 +626,9 @@ def main(): |
parser.add_option("", "--check-running", dest="check_running", default=False, |
action="store_true", |
help="return 0 if the daemon is running, or 1 otherwise") |
- parser.add_option("", "--explicit-config", dest="explicit_config", |
- help="explicitly specify content of the config") |
+ parser.add_option("", "--silent", dest="silent", default=False, |
+ action="store_true", |
+ help="Start the host without trying to configure it.") |
(options, args) = parser.parse_args() |
host_hash = hashlib.md5(socket.gethostname()).hexdigest() |
@@ -687,32 +690,41 @@ def main(): |
if not os.path.exists(CONFIG_DIR): |
os.makedirs(CONFIG_DIR, mode=0700) |
- if options.explicit_config: |
- for file_name in ["auth.json", "host#%s.json" % host_hash]: |
- settings_file = open(os.path.join(CONFIG_DIR, file_name), 'w') |
- settings_file.write(options.explicit_config) |
- settings_file.close() |
+ host_config_file = os.path.join(CONFIG_DIR, "host#%s.json" % host_hash) |
- # TODO(sergeyu): Move auth parameters to the host config. |
- auth = Authentication(os.path.join(CONFIG_DIR, "auth.json")) |
- need_auth_tokens = not auth.load_config() |
+ # --silent option is specified when we are started from WebApp UI. Don't use |
+ # separate auth file in that case. |
+ # TODO(sergeyu): Always use host config for auth parameters. |
+ if options.silent: |
+ auth_config_file = host_config_file |
+ else: |
+ auth_config_file = os.path.join(CONFIG_DIR, "auth.json") |
- host = Host(os.path.join(CONFIG_DIR, "host#%s.json" % host_hash), auth) |
- register_host = not host.load_config() |
+ auth = Authentication(auth_config_file) |
+ auth_config_loaded = auth.load_config() |
- # Outside the loop so user doesn't get asked twice. |
- if register_host: |
- host.ask_pin() |
- elif options.new_pin or not host.is_pin_set(): |
- host.ask_pin() |
- host.save_config() |
- running, pid = PidFile(pid_filename).check() |
- if running and pid != 0: |
- os.kill(pid, signal.SIGUSR1) |
- print "The running instance has been updated with the new PIN." |
- return 0 |
+ host = Host(host_config_file, auth) |
+ host_config_loaded = host.load_config() |
+ |
+ if options.silent: |
+ if not host_config_loaded or not auth_config_loaded: |
+ logging.error("Failed to load host configuration.") |
+ return 1 |
+ else: |
+ need_auth_tokens = not auth_config_loaded |
+ need_register_host = not host_config_loaded |
+ # Outside the loop so user doesn't get asked twice. |
+ if need_register_host: |
+ host.ask_pin() |
+ elif options.new_pin or not host.is_pin_set(): |
+ host.ask_pin() |
+ host.save_config() |
+ running, pid = PidFile(pid_filename).check() |
+ if running and pid != 0: |
+ os.kill(pid, signal.SIGUSR1) |
+ print "The running instance has been updated with the new PIN." |
+ return 0 |
- if not options.explicit_config: |
# The loop is to deal with the case of registering a new Host with |
# previously-saved auth tokens (from a previous run of this script), which |
# may require re-prompting for username & password. |
@@ -727,7 +739,7 @@ def main(): |
return 1 |
try: |
- if register_host: |
+ if need_register_host: |
host.register() |
host.save_config() |
except urllib2.HTTPError, err: |
@@ -842,16 +854,25 @@ def main(): |
# will be created and registered. |
if os.WEXITSTATUS(status) == 2: |
logging.info("Host configuration is invalid - exiting.") |
- os.remove(auth.config_file) |
- os.remove(host.config_file) |
+ try: |
+ os.remove(host.config_file) |
+ os.remove(auth.config_file) |
+ except: |
+ pass |
return 0 |
elif os.WEXITSTATUS(status) == 3: |
logging.info("Host ID has been deleted - exiting.") |
- os.remove(host.config_file) |
+ try: |
+ os.remove(host.config_file) |
+ except: |
+ pass |
return 0 |
elif os.WEXITSTATUS(status) == 4: |
logging.info("OAuth credentials are invalid - exiting.") |
- os.remove(auth.config_file) |
+ try: |
+ os.remove(auth.config_file) |
+ except: |
+ pass |
return 0 |
if __name__ == "__main__": |