@@ -173,6 +173,8 @@ typedef struct _webui_window_t {
173173 webui_event_inf_t * events [WEBUI_MAX_IDS ];
174174 size_t events_count ;
175175 bool is_public ;
176+ bool proxy_set ;
177+ char * proxy_server ;
176178}
177179_webui_window_t ;
178180
@@ -1818,6 +1820,46 @@ void webui_set_profile(size_t window, const char* name, const char* path) {
18181820 win -> default_profile = false;
18191821}
18201822
1823+
1824+ void webui_set_proxy (size_t window , const char * proxy_server ) {
1825+
1826+ #ifdef WEBUI_LOG
1827+ printf ("[User] webui_set_proxy([%s])...\n" , proxy_server );
1828+ #endif
1829+
1830+ // Initialization
1831+ _webui_init ();
1832+
1833+ // Dereference
1834+ if (_webui_mtx_is_exit_now (WEBUI_MUTEX_NONE ) || _webui_core .wins [window ] == NULL )
1835+ return ;
1836+ _webui_window_t * win = _webui_core .wins [window ];
1837+
1838+ // Some wrappers do not guarantee pointers stay valid,
1839+ // so, let's make our copy.
1840+
1841+ char * proxy_server_cpy = NULL ;
1842+ size_t len = _webui_strlen (proxy_server );
1843+ if (len > 0 ) {
1844+ proxy_server_cpy = (char * )_webui_malloc (len );
1845+ memcpy ((char * )proxy_server_cpy , proxy_server , len );
1846+ }
1847+
1848+
1849+ // Free
1850+ if (win -> proxy_server != NULL )
1851+ _webui_free_mem ((void * ) win -> proxy_server );
1852+
1853+
1854+ // Save
1855+ win -> proxy_server = proxy_server_cpy ;
1856+
1857+ if (proxy_server_cpy == NULL )
1858+ win -> proxy_set = false;
1859+ else
1860+ win -> proxy_set = true;
1861+ }
1862+
18211863const char * webui_get_url (size_t window ) {
18221864
18231865 #ifdef WEBUI_LOG
@@ -4829,7 +4871,7 @@ static int _webui_get_browser_args(_webui_window_t * win, size_t browser, char*
48294871
48304872 const char * chromium_options [] = {
48314873 "--no-first-run" ,
4832- "--no-proxy-server" ,
4874+ // "--no-proxy-server",
48334875 "--safe-mode" ,
48344876 "--disable-extensions" ,
48354877 "--disable-background-mode" ,
@@ -4872,6 +4914,10 @@ static int _webui_get_browser_args(_webui_window_t * win, size_t browser, char*
48724914 // Window Position
48734915 if (win -> position_set )
48744916 c += sprintf (buffer + c , " --window-position=%u,%u" , win -> x , win -> y );
4917+ if (win -> proxy_set )
4918+ c += sprintf (buffer + c , " --proxy-server=%s" , win -> proxy_server );
4919+ else
4920+ c += sprintf (buffer + c , " %s" , "--no-proxy-server" );
48754921
48764922 // URL (END)
48774923 c += sprintf (buffer + c , " %s" , "--app=" );
0 commit comments