Emulator uses http_proxy for launching Emulator Control Panel.
It's used for displaying map on network tab.
Change-Id: I19418910bce04eb5d12bdeb694d8d449262b257d
Signed-off-by: Munkyu Im <munkyu.im@samsung.com>
return _emul_info.vm_name;
}
+/* emualtor http proxy */
+void set_emul_http_proxy_addr(char *addr)
+{
+ strncpy(_emul_info.http_proxy_addr, addr, sizeof(_emul_info.http_proxy_addr));
+}
+
+char* get_emul_http_proxy_addr(void)
+{
+ if (strlen(_emul_info.http_proxy_addr) > 0) {
+ return _emul_info.http_proxy_addr;
+ } else {
+ return NULL;
+ }
+}
+
+void set_emul_http_proxy_port(char *port)
+{
+ strncpy(_emul_info.http_proxy_port, port, sizeof(_emul_info.http_proxy_port));
+}
+
+char* get_emul_http_proxy_port(void)
+{
+ if (strlen(_emul_info.http_proxy_port) > 0) {
+ return _emul_info.http_proxy_port;
+ } else {
+ return NULL;
+ }
+}
+
void set_emul_hds_attached(bool attached)
{
_emul_state.hds_attached = attached;
#include "display/maru_finger.h"
#define SUPPORT_LEGACY_ARGS
+#define MAX_ADDR_LEN 256
+#define MAX_PORT_LEN 256
#define MAX_HDS_PATH 256
#define MAX_PROFILE 256
int vm_base_port;
int device_serial_number;
int ecs_port;
+ char http_proxy_addr[MAX_ADDR_LEN];
+ char http_proxy_port[MAX_PORT_LEN];
+
bool tap_enable;
char guest_ip[16];
void set_emul_caps_lock_state(int state);
void set_emul_num_lock_state(int state);
void set_emul_tap_enable(bool enable);
+void set_emul_http_proxy_addr(char *addr);
+void set_emul_http_proxy_port(char *port);
void set_emul_hds_attached(bool attached);
void set_emul_hds_path(const char *path);
void set_emul_hds_guest_path(const char *path);
int get_emul_num_lock_state(void);
char* get_emul_guest_ip(void);
bool is_emul_tap_enable(void);
+char* get_emul_http_proxy_addr(void);
+char* get_emul_http_proxy_port(void);
bool get_emul_hds_attached(void);
char* get_emul_hds_path(void);
fprintf(stdout, "\n====================================================\n");
}
+static void http_proxy_setup(void)
+{
+ char *buf = get_variable("network_proxy");
+ gchar** proxy;
+ if (buf) {
+ char http_proxy[MAXLEN] = {0,};
+ int len = strlen(HTTP_PROXY_PREFIX);
+ int i, j;
+ int max_len = strlen(buf);
+ for(i = len, j = 0; i < max_len; i++) {
+ if (buf[i] == ' ')
+ break;
+ http_proxy[j++] = buf[i];
+ }
+
+ http_proxy[j] = '\0';
+ proxy = g_strsplit(http_proxy, ":", -1);
+ if (g_strv_length(proxy) > 1) {
+ if (proxy[0] != NULL && proxy[1] != NULL) {
+ LOG_INFO("http_proxy information= addr: %s, port: %s\n", proxy[0], proxy[1]);
+ set_emul_http_proxy_addr(proxy[0]);
+ set_emul_http_proxy_port(proxy[1]);
+ }
+ } else {
+ LOG_INFO("http proxy is NULL\n");
+ }
+
+ if (proxy != NULL) {
+ g_strfreev(proxy);
+ }
+ }
+}
+
#define PROXY_BUFFER_LEN 128
static void prepare_basic_features(gchar * const kernel_cmdline)
{
tmp_str = g_strdup_printf(" sdb_port=%d,"
" vm_resolution=%dx%d", get_emul_vm_base_port(),
get_emul_resolution_width(), get_emul_resolution_height());
+ http_proxy_setup();
g_strlcat(kernel_cmdline, tmp_str, LEN_MARU_KERNEL_CMDLINE);
#endif
#define JAVA_MAX_COMMAND_LENGTH 1024
+#define MAXLEN 512
+#define HTTP_PROXY_PREFIX "http_proxy="
+
#define JAR_SKINFILE "emulator-skin.jar"
#define JAVA_LIBRARY_PATH "-Djava.library.path"
return;
}
- String emulName = SkinUtil.getVmName(config);
- int portSdb = config.getArgInt(ArgsConstants.VM_BASE_PORT);
+ String emulName = SkinUtil.getVmName(config);
+ int basePort = config.getArgInt(ArgsConstants.VM_BASE_PORT);
+ String proxyAddr = config.getArg(ArgsConstants.PROXY_ADDR);
+ String proxyPort = config.getArg(ArgsConstants.PROXY_PORT);
ProcessBuilder procEcp = new ProcessBuilder();
// FIXME: appropriate running binary setting is necessary.
if (SwtUtil.isWindowsPlatform()) {
- procEcp.command("java.exe", "-jar", ecpPath, "vmname="
- + emulName, "base.port=" + portSdb);
+ if (proxyAddr != null && proxyPort != null) {
+ procEcp.command("java.exe", "-Dhttp.proxyHost="
+ + proxyAddr, "-Dhttp.proxyPort=" + proxyPort,
+ "-jar", ecpPath, "vmname=" + emulName,
+ "base.port=" + basePort);
+ } else {
+ procEcp.command("java.exe", "-jar", ecpPath, "vmname="
+ + emulName, "base.port=" + basePort);
+ }
} else if (SwtUtil.isMacPlatform()) {
- procEcp.command("java", "-jar", "-XstartOnFirstThread",
- ecpPath, "vmname=" + emulName, "base.port="
- + portSdb);
+ if (proxyAddr != null && proxyPort != null) {
+ procEcp.command("java",
+ "-Dhttp.proxyHost=" + proxyAddr,
+ "-Dhttp.proxyPort=" + proxyPort, "-jar",
+ "-XstartOnFirstThread", ecpPath, "vmname="
+ + emulName, "base.port=" + basePort);
+ } else {
+ procEcp.command("java", "-jar", "-XstartOnFirstThread",
+ ecpPath, "vmname=" + emulName, "base.port="
+ + basePort);
+ }
} else { /* Linux */
- procEcp.command("java", "-jar", ecpPath, "vmname="
- + emulName, "base.port=" + portSdb);
+ if (proxyAddr != null && proxyPort != null) {
+ procEcp.command("java",
+ "-Dhttp.proxyHost=" + proxyAddr,
+ "-Dhttp.proxyPort=" + proxyPort, "-jar",
+ ecpPath, "vmname=" + emulName, "base.port="
+ + basePort);
+ } else {
+ procEcp.command("java", "-jar", ecpPath, "vmname="
+ + emulName, "base.port=" + basePort);
+ }
}
logger.info(procEcp.command().toString());
public static final String INPUT_MOUSE = "input.mouse";
public static final String INPUT_TOUCHSCREEN = "input.touch";
public static final String INPUT_TOUCH_MAXPOINT = "input.touch.maxpoint";
+ public static final String PROXY_ADDR = "proxy.addr";
+ public static final String PROXY_PORT = "proxy.port";
}
public interface SkinPropertiesConstants {
#define OPT_INPUT_MOUSE "input.mouse"
#define OPT_INPUT_TOUCH "input.touch"
#define OPT_MAX_TOUCHPOINT "input.touch.maxpoint"
+#define OPT_PROXY_ADDR "proxy.addr"
+#define OPT_PROXY_PORT "proxy.port"
#define OPT_BOOLEAN_TRUE "true"
#define OPT_BOOLEAN_FALSE "false"
int skin_server_port = get_skin_server_port();
int vm_base_port = get_emul_vm_base_port();
- char buf_skin_server_port[16];
- char buf_uid[16];
- char buf_vm_base_port[16];
+ char buf_skin_server_port[16] = { 0, };
+ char buf_uid[16] = { 0, };
+ char buf_vm_base_port[16] = { 0, };
sprintf(buf_skin_server_port, "%d", skin_server_port);
sprintf(buf_uid, "%d", uid);
sprintf(buf_vm_base_port, "%d", vm_base_port);
/* input */
char buf_input[12] = { 0, };
- if (is_emul_input_mouse_enable() == true)
+ if (is_emul_input_mouse_enable() == true) {
strcpy(buf_input, OPT_INPUT_MOUSE);
- else
+ } else {
strcpy(buf_input, OPT_INPUT_TOUCH);
+ }
+
+ /* network */
+ char buf_proxy_addr[MAX_ADDR_LEN] = { 0, };
+ char buf_proxy_port[MAX_PORT_LEN] = { 0, };
+ sprintf(buf_proxy_addr, "%s", get_emul_http_proxy_addr());
+ sprintf(buf_proxy_port, "%s", get_emul_http_proxy_port());
#ifdef CONFIG_WIN32
/* find java path in 64bit windows */
strlen(buf_input) + EQUAL_LEN +
strlen(OPT_BOOLEAN_TRUE) + SPACE_LEN +
strlen(OPT_MAX_TOUCHPOINT) + EQUAL_LEN +
- len_maxtouchpoint + SPACE_LEN + 1 +
+ len_maxtouchpoint + SPACE_LEN +
+ strlen(OPT_PROXY_ADDR) + EQUAL_LEN +
+ strlen(buf_proxy_addr) + SPACE_LEN +
+ strlen(OPT_PROXY_PORT) + EQUAL_LEN +
+ strlen(buf_proxy_port) + SPACE_LEN + 1 +
strlen(argv);
INFO("skin command length : %d\n", cmd_len);
%s=%s \
%s=%s \
%s=%d \
+%s=%s \
+%s=%s \
%s",
JAVA_EXEFILE_PATH, JAVA_EXEOPTION, JAVA_LIBRARY_PATH,
#ifdef CONFIG_WIN32
OPT_DISPLAY_SHM, buf_display_shm,
buf_input, OPT_BOOLEAN_TRUE,
OPT_MAX_TOUCHPOINT, maxtouchpoint,
+ OPT_PROXY_ADDR, buf_proxy_addr,
+ OPT_PROXY_PORT, buf_proxy_port,
argv);
INFO("command for swt : %s\n", cmd);
/* SWT Display must be created on main thread due to Cocoa restrictions */
arguments << "-XstartOnFirstThread";
#endif
+ QString httpProxyAddr;
+ QString httpProxyPort;
+ if (get_emul_http_proxy_addr()) {
+ httpProxyAddr = "-Dhttp.proxyHost=" + QString(get_emul_http_proxy_addr());
+ httpProxyPort = "-Dhttp.proxyPort=" + QString(get_emul_http_proxy_port());
+ }
+
+ if (httpProxyAddr != NULL && httpProxyPort != NULL) {
+ arguments << httpProxyAddr << httpProxyPort;
+ }
+
arguments << "-jar" << ecpPath << vmNameOpt << basePortOpt;
qDebug() << command << arguments;