Skip to content
This repository was archived by the owner on Jul 4, 2025. It is now read-only.

Commit f354af6

Browse files
authored
Merge pull request #1659 from janhq/j/set-default-cors
fix: update default cors to localhost
2 parents 3cec0e0 + 3a15db1 commit f354af6

File tree

8 files changed

+55
-49
lines changed

8 files changed

+55
-49
lines changed

docs/static/openapi/cortex.json

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3133,31 +3133,19 @@
31333133
"type": "string",
31343134
"description": "The identifier or URL of the model to use. It can be a model ID on Cortexso (https://huggingface.co/cortexso) or a HuggingFace URL pointing to the model file. For example: 'gpt2' or 'https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.1-GGUF/blob/main/mistral-7b-instruct-v0.1.Q2_K.gguf'",
31353135
"examples": [
3136-
{
3137-
"value": "tinyllama:gguf"
3138-
},
3139-
{
3140-
"value": "https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.1-GGUF/blob/main/mistral-7b-instruct-v0.1.Q2_K.gguf"
3141-
}
3136+
"tinyllama:gguf",
3137+
"https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.1-GGUF/blob/main/mistral-7b-instruct-v0.1.Q2_K.gguf"
31423138
]
31433139
},
31443140
"id": {
31453141
"type": "string",
31463142
"description": "The id which will be used to register the model.",
3147-
"examples": [
3148-
{
3149-
"value": "my-custom-model-id"
3150-
}
3151-
]
3143+
"examples": "my-custom-model-id"
31523144
},
31533145
"name": {
31543146
"type": "string",
31553147
"description": "The name which will be used to overwrite the model name.",
3156-
"examples": [
3157-
{
3158-
"value": "my-custom-model-name"
3159-
}
3160-
]
3148+
"examples": "my-custom-model-name"
31613149
}
31623150
}
31633151
},

engine/controllers/configs.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ class Configs : public drogon::HttpController<Configs, false> {
1111
METHOD_LIST_BEGIN
1212

1313
METHOD_ADD(Configs::GetConfigurations, "", Get);
14-
METHOD_ADD(Configs::UpdateConfigurations, "", Patch);
14+
METHOD_ADD(Configs::UpdateConfigurations, "", Options, Patch);
1515

1616
ADD_METHOD_TO(Configs::GetConfigurations, "/v1/configs", Get);
17-
ADD_METHOD_TO(Configs::UpdateConfigurations, "/v1/configs", Patch);
17+
ADD_METHOD_TO(Configs::UpdateConfigurations, "/v1/configs", Options, Patch);
1818

1919
METHOD_LIST_END
2020

engine/controllers/engines.h

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,17 @@ class Engines : public drogon::HttpController<Engines, false> {
1313
METHOD_LIST_BEGIN
1414

1515
METHOD_ADD(Engines::GetInstalledEngineVariants, "/{1}", Get);
16-
METHOD_ADD(Engines::InstallEngine, "/{1}?version={2}&variant={3}", Post);
16+
METHOD_ADD(Engines::InstallEngine, "/{1}?version={2}&variant={3}", Options,
17+
Post);
1718
METHOD_ADD(Engines::UninstallEngine, "/{1}?version={2}&variant={3}", Options,
1819
Delete);
1920
METHOD_ADD(Engines::SetDefaultEngineVariant,
20-
"/{1}/default?version={2}&variant={3}", Post);
21+
"/{1}/default?version={2}&variant={3}", Options, Post);
2122
METHOD_ADD(Engines::GetDefaultEngineVariant, "/{1}/default", Get);
2223

23-
METHOD_ADD(Engines::LoadEngine, "/{1}/load", Post);
24+
METHOD_ADD(Engines::LoadEngine, "/{1}/load", Options, Post);
2425
METHOD_ADD(Engines::UnloadEngine, "/{1}/load", Options, Delete);
25-
METHOD_ADD(Engines::UpdateEngine, "/{1}/update", Post);
26+
METHOD_ADD(Engines::UpdateEngine, "/{1}/update", Options, Post);
2627
METHOD_ADD(Engines::ListEngine, "", Get);
2728

2829
METHOD_ADD(Engines::GetEngineVersions, "/{1}/versions", Get);
@@ -31,17 +32,18 @@ class Engines : public drogon::HttpController<Engines, false> {
3132

3233
ADD_METHOD_TO(Engines::GetInstalledEngineVariants, "/v1/engines/{1}", Get);
3334
ADD_METHOD_TO(Engines::InstallEngine,
34-
"/v1/engines/{1}?version={2}&variant={3}", Post);
35+
"/v1/engines/{1}?version={2}&variant={3}", Options, Post);
3536
ADD_METHOD_TO(Engines::UninstallEngine,
3637
"/v1/engines/{1}?version={2}&variant={3}", Options, Delete);
3738
ADD_METHOD_TO(Engines::SetDefaultEngineVariant,
38-
"/v1/engines/{1}/default?version={2}&variant={3}", Post);
39+
"/v1/engines/{1}/default?version={2}&variant={3}", Options,
40+
Post);
3941
ADD_METHOD_TO(Engines::GetDefaultEngineVariant, "/v1/engines/{1}/default",
4042
Get);
4143

42-
ADD_METHOD_TO(Engines::LoadEngine, "/v1/engines/{1}/load", Post);
43-
ADD_METHOD_TO(Engines::UnloadEngine, "/v1/engines/{1}/load", Post);
44-
ADD_METHOD_TO(Engines::UpdateEngine, "/v1/engines/{1}/update", Post);
44+
ADD_METHOD_TO(Engines::LoadEngine, "/v1/engines/{1}/load", Options, Post);
45+
ADD_METHOD_TO(Engines::UnloadEngine, "/v1/engines/{1}/load", Options, Post);
46+
ADD_METHOD_TO(Engines::UpdateEngine, "/v1/engines/{1}/update", Options, Post);
4547
ADD_METHOD_TO(Engines::GetEngineVersions, "/v1/engines/{1}/versions", Get);
4648
ADD_METHOD_TO(Engines::GetEngineVariants, "/v1/engines/{1}/versions/{2}",
4749
Get);

engine/controllers/models.h

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,27 +10,27 @@ using namespace drogon;
1010
class Models : public drogon::HttpController<Models, false> {
1111
public:
1212
METHOD_LIST_BEGIN
13-
METHOD_ADD(Models::PullModel, "/pull", Post);
14-
METHOD_ADD(Models::GetModelPullInfo, "/pull/info", Post);
13+
METHOD_ADD(Models::PullModel, "/pull", Options, Post);
14+
METHOD_ADD(Models::GetModelPullInfo, "/pull/info", Options, Post);
1515
METHOD_ADD(Models::AbortPullModel, "/pull", Options, Delete);
1616
METHOD_ADD(Models::ListModel, "", Get);
1717
METHOD_ADD(Models::GetModel, "/{1}", Get);
18-
METHOD_ADD(Models::UpdateModel, "/{1}", Patch);
19-
METHOD_ADD(Models::ImportModel, "/import", Post);
18+
METHOD_ADD(Models::UpdateModel, "/{1}", Options, Patch);
19+
METHOD_ADD(Models::ImportModel, "/import", Options, Post);
2020
METHOD_ADD(Models::DeleteModel, "/{1}", Options, Delete);
21-
METHOD_ADD(Models::StartModel, "/start", Post);
22-
METHOD_ADD(Models::StopModel, "/stop", Post);
21+
METHOD_ADD(Models::StartModel, "/start", Options, Post);
22+
METHOD_ADD(Models::StopModel, "/stop", Options, Post);
2323
METHOD_ADD(Models::GetModelStatus, "/status/{1}", Get);
2424

25-
ADD_METHOD_TO(Models::PullModel, "/v1/models/pull", Post);
25+
ADD_METHOD_TO(Models::PullModel, "/v1/models/pull", Options, Post);
2626
ADD_METHOD_TO(Models::AbortPullModel, "/v1/models/pull", Options, Delete);
2727
ADD_METHOD_TO(Models::ListModel, "/v1/models", Get);
2828
ADD_METHOD_TO(Models::GetModel, "/v1/models/{1}", Get);
29-
ADD_METHOD_TO(Models::UpdateModel, "/v1/models/{1}", Patch);
30-
ADD_METHOD_TO(Models::ImportModel, "/v1/models/import", Post);
29+
ADD_METHOD_TO(Models::UpdateModel, "/v1/models/{1}", Options, Patch);
30+
ADD_METHOD_TO(Models::ImportModel, "/v1/models/import", Options, Post);
3131
ADD_METHOD_TO(Models::DeleteModel, "/v1/models/{1}", Options, Delete);
32-
ADD_METHOD_TO(Models::StartModel, "/v1/models/start", Post);
33-
ADD_METHOD_TO(Models::StopModel, "/v1/models/stop", Post);
32+
ADD_METHOD_TO(Models::StartModel, "/v1/models/start", Options, Post);
33+
ADD_METHOD_TO(Models::StopModel, "/v1/models/stop", Options, Post);
3434
ADD_METHOD_TO(Models::GetModelStatus, "/v1/models/status/{1}", Get);
3535
METHOD_LIST_END
3636

engine/controllers/server.h

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,20 +37,20 @@ class server : public drogon::HttpController<server, false>,
3737
~server();
3838
METHOD_LIST_BEGIN
3939
// list path definitions here;
40-
METHOD_ADD(server::ChatCompletion, "chat_completion", Post);
41-
METHOD_ADD(server::Embedding, "embedding", Post);
42-
METHOD_ADD(server::LoadModel, "loadmodel", Post);
43-
METHOD_ADD(server::UnloadModel, "unloadmodel", Post);
44-
METHOD_ADD(server::ModelStatus, "modelstatus", Post);
40+
METHOD_ADD(server::ChatCompletion, "chat_completion", Options, Post);
41+
METHOD_ADD(server::Embedding, "embedding", Options, Post);
42+
METHOD_ADD(server::LoadModel, "loadmodel", Options, Post);
43+
METHOD_ADD(server::UnloadModel, "unloadmodel", Options, Post);
44+
METHOD_ADD(server::ModelStatus, "modelstatus", Options, Post);
4545
METHOD_ADD(server::GetModels, "models", Get);
4646

4747
// cortex.python API
48-
METHOD_ADD(server::FineTuning, "finetuning", Post);
48+
METHOD_ADD(server::FineTuning, "finetuning", Options, Post);
4949

5050
// Openai compatible path
51-
ADD_METHOD_TO(server::ChatCompletion, "/v1/chat/completions", Post);
52-
ADD_METHOD_TO(server::FineTuning, "/v1/fine_tuning/job", Post);
53-
ADD_METHOD_TO(server::Embedding, "/v1/embeddings", Post);
51+
ADD_METHOD_TO(server::ChatCompletion, "/v1/chat/completions", Options, Post);
52+
ADD_METHOD_TO(server::FineTuning, "/v1/fine_tuning/job", Options, Post);
53+
ADD_METHOD_TO(server::Embedding, "/v1/embeddings", Options, Post);
5454

5555
METHOD_LIST_END
5656
void ChatCompletion(

engine/main.cc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,14 @@ void RunServer(std::optional<int> port) {
146146
auto allowed_origins =
147147
config_service->GetApiServerConfiguration()->allowed_origins;
148148

149+
auto is_contains_asterisk =
150+
std::find(allowed_origins.begin(), allowed_origins.end(), "*");
151+
if (is_contains_asterisk != allowed_origins.end()) {
152+
resp->addHeader("Access-Control-Allow-Origin", "*");
153+
resp->addHeader("Access-Control-Allow-Methods", "*");
154+
return;
155+
}
156+
149157
// Check if the origin is in our allowed list
150158
auto it =
151159
std::find(allowed_origins.begin(), allowed_origins.end(), origin);
@@ -154,6 +162,7 @@ void RunServer(std::optional<int> port) {
154162
} else if (allowed_origins.empty()) {
155163
resp->addHeader("Access-Control-Allow-Origin", "*");
156164
}
165+
resp->addHeader("Access-Control-Allow-Methods", "*");
157166
});
158167

159168
drogon::app().run();

engine/utils/config_yaml_utils.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ constexpr const uint64_t kDefaultCheckedForLlamacppUpdateAt = 0u;
4444
constexpr const auto kDefaultLatestRelease = "default_version";
4545
constexpr const auto kDefaultLatestLlamacppRelease = "";
4646
constexpr const auto kDefaultCorsEnabled = true;
47-
const std::vector<std::string> kDefaultEnabledOrigins{};
47+
const std::vector<std::string> kDefaultEnabledOrigins{
48+
"http://localhost:39281", "http://127.0.0.1:39281", "http://0.0.0.0:39281"};
4849

4950
inline cpp::result<void, std::string> DumpYamlConfig(const CortexConfig& config,
5051
const std::string& path) {

engine/utils/file_manager_utils.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,13 @@ inline cpp::result<void, std::string> CreateConfigFileIfNotExist() {
176176
.maxLogLines = config_yaml_utils::kDefaultMaxLines,
177177
.apiServerHost = config_yaml_utils::kDefaultHost,
178178
.apiServerPort = config_yaml_utils::kDefaultPort,
179-
};
179+
.checkedForUpdateAt = config_yaml_utils::kDefaultCheckedForUpdateAt,
180+
.checkedForLlamacppUpdateAt =
181+
config_yaml_utils::kDefaultCheckedForLlamacppUpdateAt,
182+
.latestRelease = config_yaml_utils::kDefaultLatestRelease,
183+
.latestLlamacppRelease = config_yaml_utils::kDefaultLatestLlamacppRelease,
184+
.enableCors = config_yaml_utils::kDefaultCorsEnabled,
185+
.allowedOrigins = config_yaml_utils::kDefaultEnabledOrigins};
180186
return DumpYamlConfig(config, config_path.string());
181187
}
182188

0 commit comments

Comments
 (0)