diff --git a/gpt4all-chat/server.cpp b/gpt4all-chat/server.cpp index 9b5819a4..af11663a 100644 --- a/gpt4all-chat/server.cpp +++ b/gpt4all-chat/server.cpp @@ -147,6 +147,53 @@ void Server::start() } ); + // Respond with code 405 to wrong HTTP methods: + m_server->route("/v1/models", QHttpServerRequest::Method::Post, + [](const QHttpServerRequest &request) { + if (!MySettings::globalInstance()->serverChat()) + return QHttpServerResponse(QHttpServerResponder::StatusCode::Unauthorized); + return QHttpServerResponse( + QJsonDocument::fromJson("{\"error\": {\"message\": \"Not allowed to POST on /v1/models." + " (HINT: Perhaps you meant to use a different HTTP method?)\"," + " \"type\": \"invalid_request_error\", \"param\": null, \"code\": null}}").object(), + QHttpServerResponder::StatusCode::MethodNotAllowed); + } + ); + + m_server->route("/v1/models/", QHttpServerRequest::Method::Post, + [](const QString &model, const QHttpServerRequest &request) { + if (!MySettings::globalInstance()->serverChat()) + return QHttpServerResponse(QHttpServerResponder::StatusCode::Unauthorized); + return QHttpServerResponse( + QJsonDocument::fromJson("{\"error\": {\"message\": \"Not allowed to POST on /v1/models/*." + " (HINT: Perhaps you meant to use a different HTTP method?)\"," + " \"type\": \"invalid_request_error\", \"param\": null, \"code\": null}}").object(), + QHttpServerResponder::StatusCode::MethodNotAllowed); + } + ); + + m_server->route("/v1/completions", QHttpServerRequest::Method::Get, + [](const QHttpServerRequest &request) { + if (!MySettings::globalInstance()->serverChat()) + return QHttpServerResponse(QHttpServerResponder::StatusCode::Unauthorized); + return QHttpServerResponse( + QJsonDocument::fromJson("{\"error\": {\"message\": \"Only POST requests are accepted.\"," + " \"type\": \"invalid_request_error\", \"param\": null, \"code\": \"method_not_supported\"}}").object(), + QHttpServerResponder::StatusCode::MethodNotAllowed); + } + ); + + m_server->route("/v1/chat/completions", QHttpServerRequest::Method::Get, + [](const QHttpServerRequest &request) { + if (!MySettings::globalInstance()->serverChat()) + return QHttpServerResponse(QHttpServerResponder::StatusCode::Unauthorized); + return QHttpServerResponse( + QJsonDocument::fromJson("{\"error\": {\"message\": \"Only POST requests are accepted.\"," + " \"type\": \"invalid_request_error\", \"param\": null, \"code\": \"method_not_supported\"}}").object(), + QHttpServerResponder::StatusCode::MethodNotAllowed); + } + ); + m_server->afterRequest([] (QHttpServerResponse &&resp) { resp.addHeader("Access-Control-Allow-Origin", "*"); return std::move(resp);