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 {

View File

@@ -34,6 +34,10 @@ public:
std::string query_boxes_info() const;
std::string model_name() const;
// Mainsail on K-series printers listens on port 4408. Use that as the
// default Device-tab WebView URL when the user has not set print_host_webui.
static std::string get_print_host_webui(DynamicPrintConfig *config);
protected:
virtual void set_auth(Http& http) const;
private:

View File

@@ -88,6 +88,10 @@ std::string PrintHost::get_print_host_webui(DynamicPrintConfig* config)
webui_url = ElegooLink::get_print_host_webui(config);
break;
}
case htCrealityPrint: {
webui_url = CrealityPrint::get_print_host_webui(config);
break;
}
default: break;
}