/* * Copyright 2016 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package com.google.gwt.dev.util.arg; import com.google.gwt.util.tools.ArgHandlerString; import java.net.InetAddress; import java.net.UnknownHostException; /** * Handles the -bindAddress command line flag. */ public class ArgHandlerBindAddress extends ArgHandlerString { private static final String BIND_ADDRESS_TAG = "-bindAddress"; public static final String DEFAULT_BIND_ADDRESS = "127.0.0.1"; private final OptionBindAddress options; public ArgHandlerBindAddress(OptionBindAddress options) { this.options = options; } @Override public String[] getDefaultArgs() { return new String[]{BIND_ADDRESS_TAG, DEFAULT_BIND_ADDRESS}; } @Override public String getPurpose() { return "Specifies the bind address for the code server and web server " + "(defaults to " + DEFAULT_BIND_ADDRESS + ")"; } @Override public String getTag() { return BIND_ADDRESS_TAG; } @Override public String[] getTagArgs() { return new String[]{"host-name-or-address"}; } @Override public boolean setString(String value) { try { InetAddress address = InetAddress.getByName(value); options.setBindAddress(value); if (address.isAnyLocalAddress()) { // replace a wildcard address with our machine's local address // this isn't fully accurate, as there is no guarantee we will get // the right one on a multihomed host options.setConnectAddress(InetAddress.getLocalHost().getHostAddress()); } else { options.setConnectAddress(value); } return true; } catch (UnknownHostException e) { System.err.println("-bindAddress host \"" + value + "\" unknown"); return false; } } }