Skip to content

Commit

Permalink
Added HTTP 1.1 support and various bug fixes. Added redirection suppo…
Browse files Browse the repository at this point in the history
…rt and suggest frogfind on https redirects
  • Loading branch information
jhhoward committed Jun 12, 2021
1 parent 0763f74 commit 72d0235
Show file tree
Hide file tree
Showing 10 changed files with 328 additions and 69 deletions.
61 changes: 53 additions & 8 deletions src/App.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,8 @@ void App::Run()
{
ResetPage();
requestedNewPage = false;
page.pageURL = loadTask.url;
page.pageURL = loadTask.GetURL();
ui.UpdateAddressBar(page.pageURL);
//renderer.DrawAddress(page.pageURL.url);
}

static char buffer[256];
Expand All @@ -84,6 +83,11 @@ void App::Run()
ShowErrorPage(loadTask.request->GetStatusString());
requestedNewPage = false;
}
else if (loadTask.request->GetStatus() == HTTPRequest::UnsupportedHTTPS)
{
ShowNoHTTPSPage();
requestedNewPage = false;
}
}
}
}
Expand All @@ -108,12 +112,10 @@ void LoadTask::Load(const char* targetURL)
type = LoadTask::LocalFile;
fs = fopen(url.url + 7, "rb");
}
/*else if (strstr(url.url, "https://") == url.url)
else if (strstr(url.url, "https://") == url.url)
{
strcpy(url.url, "http://");
strcpy(url.url + 7, targetURL + 8);
type = LoadTask::RemoteFile;
}*/
}
else if (strstr(url.url, "://"))
{
// Will be an unsupported protocol
Expand Down Expand Up @@ -168,6 +170,15 @@ void LoadTask::Stop()
}
}

const char* LoadTask::GetURL()
{
if (type == LoadTask::RemoteFile && request)
{
return request->GetURL();
}
return url.url;
}

bool LoadTask::HasContent()
{
if (type == LoadTask::LocalFile)
Expand Down Expand Up @@ -245,11 +256,45 @@ void App::ShowErrorPage(const char* message)
page.FinishSection();

page.SetTitle("Error");
page.pageURL = "about:error";
ui.UpdateAddressBar(page.pageURL);
//page.pageURL = "about:error";
//ui.UpdateAddressBar(page.pageURL);

//renderer.DrawAddress(page.pageURL.url);
}

static const char* frogFindURL = "http://frogfind.com/read.php?a=";
#define FROG_FIND_URL_LENGTH 31

void App::ShowNoHTTPSPage()
{
ResetPage();

page.BreakLine(2);
page.PushStyle(WidgetStyle(FontStyle::Bold, 2));
page.AppendText("HTTPS unsupported");
page.PopStyle();
page.BreakLine(2);
page.AppendText("Sorry this browser does not support HTTPS!");
page.BreakLine();
page.PushStyle(WidgetStyle(FontStyle::Underline));

page.pageURL = frogFindURL;
strncpy(page.pageURL.url + FROG_FIND_URL_LENGTH, loadTask.GetURL(), MAX_URL_LENGTH - FROG_FIND_URL_LENGTH);
page.SetWidgetURL(page.pageURL.url);


page.AppendText("Visit this site via FrogFind");
page.ClearWidgetURL();
page.PopStyle();
page.FinishSection();

page.SetTitle("HTTPS unsupported");
page.pageURL = loadTask.GetURL();
ui.UpdateAddressBar(page.pageURL);

loadTask.Stop();
}

void App::PreviousPage()
{
if (pageHistoryPos > 0)
Expand Down
3 changes: 3 additions & 0 deletions src/App.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ struct LoadTask
void Stop();
bool HasContent();
size_t GetContent(char* buffer, size_t count);
const char* GetURL();

enum Type
{
Expand Down Expand Up @@ -78,6 +79,8 @@ class App
void ResetPage();
void RequestNewPage(const char* url);

void ShowNoHTTPSPage();

bool requestedNewPage;
LoadTask loadTask;
bool running;
Expand Down
Loading

0 comments on commit 72d0235

Please sign in to comment.