CrealityPrint: default Device-tab WebView URL to Mainsail on :4408

K-series printers (K2, K2 Plus, K2 Pro) ship with Mainsail on port
4408. Port 80 hosts only the Creality control/upload API, which
returns 404 for unknown paths and renders as a blank/404 page in
Orca Device tab.

Override CrealityPrint::get_print_host_webui() to default to
http://<host>:4408/ when the user has not explicitly set
print_host_webui, giving K-series owners a complete printer
dashboard in the Device tab out of the box.
This commit is contained in:
grant0013
2026-05-19 09:30:37 +00:00
parent a4ea6c6fde
commit 7514cf4012
3 changed files with 38 additions and 0 deletions

View File

@@ -294,6 +294,36 @@ std::string CrealityPrint::query_boxes_info() const
}
}
std::string CrealityPrint::get_print_host_webui(DynamicPrintConfig* config)
{
// K-series printers (K2 / K2 Plus / K2 Pro) ship with Mainsail on port 4408.
// Port 80 hosts only the Creality control / upload API, which returns 404
// for unknown paths and therefore renders as a blank/404 page in Orca's
// Device WebView. Default to the Mainsail URL when the user hasn't
// explicitly set print_host_webui.
if (config == nullptr)
return {};
std::string explicit_url = config->opt_string("print_host_webui");
if (!explicit_url.empty())
return explicit_url;
std::string host = config->opt_string("print_host");
if (host.empty())
return {};
if (boost::algorithm::istarts_with(host, "http://"))
host = host.substr(7);
else if (boost::algorithm::istarts_with(host, "https://"))
host = host.substr(8);
if (auto slash = host.find('/'); slash != std::string::npos)
host = host.substr(0, slash);
if (auto colon = host.find(':'); colon != std::string::npos)
host = host.substr(0, colon);
return "http://" + host + ":4408/";
}
bool CrealityPrint::start_print(wxString &msg, const std::string &filename, const std::map<std::string, std::string>& extended_info) const
{
try {