diff --git a/src/lib/ecore_con/efl_net_dialer.eo b/src/lib/ecore_con/efl_net_dialer.eo index a2feaa1783..d2766f5f0f 100644 --- a/src/lib/ecore_con/efl_net_dialer.eo +++ b/src/lib/ecore_con/efl_net_dialer.eo @@ -59,6 +59,26 @@ interface Efl.Net.Dialer (Efl.Net.Socket) { } } + @property proxy { + [[Controls/retrieve if the dialer should use a proxy. + + The proxy is an URL in the form such as: + - http://username:password\@proxyserver:port + - http://username\@proxyserver:port + - http://proxyserver:port + - http://proxyserver (default port) + - socks5://username:password\@proxyserver:port + - socks5://username\@proxyserver:port + - socks5://proxyserver:port + - socks5://proxyserver (default port) + ]] + get { } + set { } + values { + proxy_url: string; [[may be empty or NULL to unset]] + } + } + @property timeout_dial { [[The timeout in seconds to use for dialing/connecting. diff --git a/src/lib/ecore_con/efl_net_dialer_tcp.c b/src/lib/ecore_con/efl_net_dialer_tcp.c index 97504c5e32..b835d93f02 100644 --- a/src/lib/ecore_con/efl_net_dialer_tcp.c +++ b/src/lib/ecore_con/efl_net_dialer_tcp.c @@ -32,6 +32,7 @@ typedef struct _Efl_Net_Dialer_Tcp_Data { Eina_Stringshare *address_dial; + Eina_Stringshare *proxy; Eina_Bool connected; double timeout_dial; } Efl_Net_Dialer_Tcp_Data; @@ -42,6 +43,7 @@ _efl_net_dialer_tcp_efl_object_destructor(Eo *o, Efl_Net_Dialer_Tcp_Data *pd) efl_destructor(efl_super(o, MY_CLASS)); eina_stringshare_replace(&pd->address_dial, NULL); + eina_stringshare_replace(&pd->proxy, NULL); } EOLIAN static Eina_Error @@ -157,10 +159,23 @@ _efl_net_dialer_tcp_efl_net_dialer_address_dial_get(Eo *o EINA_UNUSED, Efl_Net_D return pd->address_dial; } +EOLIAN static void +_efl_net_dialer_tcp_efl_net_dialer_proxy_set(Eo *o EINA_UNUSED, Efl_Net_Dialer_Tcp_Data *pd, const char *proxy_url) +{ + // TODO: apply proxy + eina_stringshare_replace(&pd->proxy, proxy_url); +} + +EOLIAN static const char * +_efl_net_dialer_tcp_efl_net_dialer_proxy_get(Eo *o EINA_UNUSED, Efl_Net_Dialer_Tcp_Data *pd) +{ + return pd->proxy; +} + EOLIAN static void _efl_net_dialer_tcp_efl_net_dialer_timeout_dial_set(Eo *o EINA_UNUSED, Efl_Net_Dialer_Tcp_Data *pd, double seconds) { - ERR("TODO: when using ecore_con_info/threads, set timeout"); + // TODO: when using ecore_con_info/threads, set timeout pd->timeout_dial = seconds; } diff --git a/src/lib/ecore_con/efl_net_dialer_tcp.eo b/src/lib/ecore_con/efl_net_dialer_tcp.eo index 5b02c68c6d..ba2497d10f 100644 --- a/src/lib/ecore_con/efl_net_dialer_tcp.eo +++ b/src/lib/ecore_con/efl_net_dialer_tcp.eo @@ -9,6 +9,7 @@ class Efl.Net.Dialer.Tcp (Efl.Net.Socket.Tcp, Efl.Net.Dialer) { Efl.Net.Dialer.dial; Efl.Net.Dialer.address_dial; Efl.Net.Dialer.connected; + Efl.Net.Dialer.proxy; Efl.Net.Dialer.timeout_dial; Efl.Io.Closer.close; }