feat: add support for tls_skip_verify_insecure (#15)

This commit is contained in:
Luc Georges 2023-09-15 15:42:35 +02:00 committed by GitHub
parent 9508485fec
commit c869f96060
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -107,6 +107,7 @@ struct Backend {
client: Client, client: Client,
document_map: Arc<RwLock<HashMap<String, Document>>>, document_map: Arc<RwLock<HashMap<String, Document>>>,
http_client: reqwest::Client, http_client: reqwest::Client,
unsafe_http_client: reqwest::Client,
workspace_folders: Arc<RwLock<Option<Vec<WorkspaceFolder>>>>, workspace_folders: Arc<RwLock<Option<Vec<WorkspaceFolder>>>>,
tokenizer_map: Arc<RwLock<HashMap<String, Arc<Tokenizer>>>>, tokenizer_map: Arc<RwLock<HashMap<String, Arc<Tokenizer>>>>,
} }
@ -127,6 +128,7 @@ struct CompletionParams {
model_eos: String, model_eos: String,
tokenizer_path: Option<String>, tokenizer_path: Option<String>,
context_window: usize, context_window: usize,
tls_skip_verify_insecure: bool,
} }
fn internal_error<E: Display>(err: E) -> Error { fn internal_error<E: Display>(err: E) -> Error {
@ -362,8 +364,15 @@ impl Backend {
tokenizer, tokenizer,
params.context_window, params.context_window,
)?; )?;
let http_client = if params.tls_skip_verify_insecure {
info!("tls verification is disabled");
&self.unsafe_http_client
} else {
&self.http_client
};
let result = request_completion( let result = request_completion(
&self.http_client, http_client,
&params.model, &params.model,
params.request_params, params.request_params,
params.api_token.as_ref(), params.api_token.as_ref(),
@ -483,12 +492,17 @@ async fn main() {
.init(); .init();
let http_client = reqwest::Client::new(); let http_client = reqwest::Client::new();
let unsafe_http_client = reqwest::Client::builder()
.danger_accept_invalid_certs(true)
.build()
.expect("failed to build reqwest unsafe client");
let (service, socket) = LspService::build(|client| Backend { let (service, socket) = LspService::build(|client| Backend {
cache_dir, cache_dir,
client, client,
document_map: Arc::new(RwLock::new(HashMap::new())), document_map: Arc::new(RwLock::new(HashMap::new())),
http_client, http_client,
unsafe_http_client,
workspace_folders: Arc::new(RwLock::new(None)), workspace_folders: Arc::new(RwLock::new(None)),
tokenizer_map: Arc::new(RwLock::new(HashMap::new())), tokenizer_map: Arc::new(RwLock::new(HashMap::new())),
}) })