apps/cmm: update HTTPS proxy (#439)

- new proxy address
- fix proxy usage for `dl`
- fix buffers overflow
- optimize memory usage
- explicit notify error for `dl` when URL is HTTPS and proxy is not found
- cleanup some dead code to fit app in the same sectors size

Reviewed-on: #439
Reviewed-by: Ivan B <1+dunkaist@noreply.localhost>
This commit was merged in pull request #439.
This commit is contained in:
2026-05-17 11:53:45 +00:00
parent fac0425ac0
commit ca99b669f2
4 changed files with 45 additions and 33 deletions
+1 -1
View File
@@ -23,7 +23,7 @@ path=/usbhd0/1/kolibri.img
autoclose=0
[WebView]
proxy_address=http://proxy.kolibrios.org:82/?site=
proxy_address=http://proxy.kolibrios.org/?site=
search_engine=http://wiby.me/?q=
;search_engine=http://bing.com/search?q=
;search_engine=https://html.duckduckgo.com/html/?q=
+17 -17
View File
@@ -72,8 +72,8 @@ progress_bar prbar;
proc_info Form;
char settings_file[256];
char proxy_address[768];
char search_engine[768];
char proxy_address[256];
char search_engine[256];
#include "settings.h"
#include "tabs.h"
@@ -307,14 +307,14 @@ void ProcessButtonClick(dword id__)
case SANDWICH_BUTTON: EventShowMainMenu(); return;
case VIEW_SOURCE: EventViewSource(); return;
case EDIT_SOURCE: EventEditSource(); return;
case VIEW_HISTORY: OpenPage(URL_SERVICE_HISTORY); return;
case DOWNLOAD_MANAGER: EventOpenDownloader(""); return;
case UPDATE_BROWSER: EventUpdateBrowser(); return;
case OPEN_SETTINGS: RunProgram("/sys/@open", #settings_file); return;
case CLEAR_CACHE: EventClearCache(); return;
case IN_NEW_TAB: EventClickLink(TARGET_NEW_TAB); return;
case IN_NEW_WINDOW: EventClickLink(TARGET_NEW_WINDOW); return;
case COPY_LINK_URL: EventCopyLinkToClipboard(); return;
case VIEW_HISTORY: OpenPage(URL_SERVICE_HISTORY); return;
case DOWNLOAD_MANAGER: EventOpenDownloader(""); return;
case UPDATE_BROWSER: EventUpdateBrowser(); return;
case OPEN_SETTINGS: RunProgram("/sys/@open", #settings_file); return;
case CLEAR_CACHE: EventClearCache(); return;
case IN_NEW_TAB: EventClickLink(TARGET_NEW_TAB); return;
case IN_NEW_WINDOW: EventClickLink(TARGET_NEW_WINDOW); return;
case COPY_LINK_URL: EventCopyLinkToClipboard(); return;
case DOWNLOAD_LINK_CT: EventOpenDownloader( GetAbsoluteActiveURL() ); return;
case OPEN_FILE: EventOpenDialog(); return;
}
@@ -331,10 +331,10 @@ void ProcessKeyEvent()
if (key_modifier&KEY_LCTRL) || (key_modifier&KEY_RCTRL) switch(key_scancode)
{
case SCAN_CODE_KEY_O: EventOpenDialog(); return;
case SCAN_CODE_KEY_H: ProcessButtonClick(VIEW_HISTORY); return;
case SCAN_CODE_KEY_E: ProcessButtonClick(OPEN_SETTINGS); return;
case SCAN_CODE_KEY_U: EventViewSource(); return;
case SCAN_CODE_KEY_T: EventOpenNewTab(URL_SERVICE_HOMEPAGE); return;
case SCAN_CODE_KEY_H: ProcessButtonClick(VIEW_HISTORY); return;
case SCAN_CODE_KEY_E: ProcessButtonClick(OPEN_SETTINGS); return;
case SCAN_CODE_KEY_U: EventViewSource(); return;
case SCAN_CODE_KEY_T: EventOpenNewTab(URL_SERVICE_HOMEPAGE); return;
case SCAN_CODE_KEY_N: RunProgram(#program_path, NULL); return;
case SCAN_CODE_KEY_J: ProcessButtonClick(DOWNLOAD_MANAGER); return;
case SCAN_CODE_KEY_R: ProcessButtonClick(REFRESH_BUTTON); return;
@@ -533,12 +533,12 @@ bool GetLocalFileData(dword _path)
bool GetUrl(dword _http_url)
{
char new_url_full[URL_SIZE+1];
char new_url_full[URL_SIZE + sizeof(proxy_address) + 1];
if (!strncmp(_http_url,"http://",7)) {
http.get(_http_url);
return true;
} else if (!strncmp(_http_url,"https://",8)) {
if (#proxy_address) {
if (proxy_address[0]) {
strcpy(#new_url_full, #proxy_address);
strncat(#new_url_full, _http_url, URL_SIZE);
http.get(#new_url_full);
@@ -840,7 +840,7 @@ void ProcessMenuClick()
void EventSearchWeb()
{
char new_url[URL_SIZE+1];
char new_url[URL_SIZE + sizeof(search_engine) + 1];
// replace the spaces with '+' for the search query
replace_char(#editURL, ' ', '+', URL_SIZE);
strcpy(#new_url, #search_engine);
+26 -14
View File
@@ -27,7 +27,7 @@ char filepath[4096];
char save_dir[4096];
char settings_file[256];
char proxy_address[768];
char proxy_address[256];
#include "settings.h"
@@ -41,7 +41,7 @@ progress_bar pb = {0, GAPX, 52, WIN_W - GAPX - GAPX, 17, 0, NULL, NULL,
void main()
{
dword shared_url;
// dword shared_url; // only used by the disabled -mem branch (long URL via SHM)
load_dll(libini, #lib_init,1);
load_dll(boxlib, #box_lib_init,0);
@@ -66,12 +66,15 @@ void main()
param += 4;
}
if (!strncmp(#param, "-mem", 5)) {
//shared_url = memopen(#dl_shared, URL_SIZE+1, SHM_OPEN + SHM_WRITE);
strcpy(#uEdit, shared_url);
} else {
strcpy(#uEdit, #param);
}
// Disabled long-URL-via-SHM ("DL") channel. memopen was never
// finished (read from uninitialised ptr). Reimplement properly
// if passing long URLs from WebView is ever needed.
// if (!strncmp(#param, "-mem", 5)) {
// shared_url = memopen(#dl_shared, URL_SIZE+1, SHM_OPEN + SHM_WRITE);
// strcpy(#uEdit, shared_url);
// } else {
strcpy(#uEdit, #param);
// }
if (streq(#param, "-test")) {
strcpy(#uEdit, URL_SPEED_TEST);
@@ -157,7 +160,7 @@ void DrawWindow()
} else if (http.transfer) {
DrawDlButton(WIN_W-BUT_W/2, BTN_STOP, T_CANCEL);
DrawDownloadingProgress();
} else if (!http.transfer) && (filepath) {
} else {
autoclose.disabled = true;
DrawDlButton(GAPX, BTN_RUN, T_RUN);
DrawDlButton(WIN_W-BUT_W/2, BTN_DIR, T_OPEN_DIR);
@@ -177,14 +180,24 @@ void DrawWindow()
void StartDownloading()
{
char get_url[URL_SIZE+33];
char get_url[URL_SIZE + sizeof(proxy_address) + 1];
if (http.transfer > 0) return;
ResetDownloadSpeed();
pb.back_color = 0xFFFfff;
if (!strncmp(#uEdit,"https://",8)) {
miniprintf(#get_url, "%s%s", #proxy_address, #uEdit);
if (!proxy_address[0]) {
pb.progress_color = PB_COL_ERROR;
notify("'HTTPS URLs require proxy_address in app.ini' -E");
StopDownloading();
EditBox_UpdateText(#ed, ed_focus + ed_always_focus);
DrawWindow();
return;
}
strcpy(#get_url, #proxy_address);
strncat(#get_url, #uEdit, URL_SIZE);
} else {
strcpy(#get_url, #uEdit);
}
strcpy(#get_url, #uEdit);
if (http.get(#get_url)) {
pb.value = 0;
@@ -288,7 +301,7 @@ void CompleteDownload()
void SaveFile(int attempt)
{
int i, fi=0;
int i;
char notify_message[4296];
char file_name[URL_SIZE+96];
@@ -349,7 +362,6 @@ void SaveFile(int attempt)
void Unarchive(dword _arc)
{
char folder_name[4096];
strcpy(#folder_name, #save_dir);
strcpy(#folder_name, #filepath+strrchr(#filepath, '/'));
folder_name[strlen(#folder_name)-4] = '\0';
CreateDir(#folder_name);
+1 -1
View File
@@ -5,5 +5,5 @@ void LoadIniConfig()
ini.path = GetIni(#settings_file, "app.ini");
ini.section = "WebView";
ini.GetString("proxy", #proxy_address, sizeof(proxy_address), NULL);
ini.GetString("proxy_address", #proxy_address, sizeof(proxy_address), NULL);
}