Merge pull request #2332 from jrozner/http-database

Allow HTTP connections to fetch database
This commit is contained in:
Andrew Eisenberg
2023-04-17 17:16:16 -07:00
committed by GitHub
4 changed files with 22 additions and 3 deletions

View File

@@ -2,6 +2,8 @@
## [UNRELEASED] ## [UNRELEASED]
- Add new configuration option to allow downloading databases from http, non-secure servers. [#2332](https://github.com/github/vscode-codeql/pull/2332)
## 1.8.2 - 12 April 2023 ## 1.8.2 - 12 April 2023
- Fix bug where users could end up with the managed CodeQL CLI getting uninstalled during upgrades and not reinstalled. [#2294](https://github.com/github/vscode-codeql/pull/2294) - Fix bug where users could end up with the managed CodeQL CLI getting uninstalled during upgrades and not reinstalled. [#2294](https://github.com/github/vscode-codeql/pull/2294)

View File

@@ -293,6 +293,11 @@
"scope": "window", "scope": "window",
"minimum": 0, "minimum": 0,
"description": "Report a warning for any join order whose metric exceeds this value." "description": "Report a warning for any join order whose metric exceeds this value."
},
"codeQL.databaseDownload.allowHttp": {
"type": "boolean",
"default": false,
"description": "Allow database to be downloaded via HTTP. Warning: enabling this option will allow downloading from insecure servers."
} }
} }
}, },

View File

@@ -608,3 +608,14 @@ export const CODESPACES_TEMPLATE = new Setting(
export function isCodespacesTemplate() { export function isCodespacesTemplate() {
return !!CODESPACES_TEMPLATE.getValue<boolean>(); return !!CODESPACES_TEMPLATE.getValue<boolean>();
} }
const DATABASE_DOWNLOAD_SETTING = new Setting("databaseDownload", ROOT_SETTING);
export const ALLOW_HTTP_SETTING = new Setting(
"allowHttp",
DATABASE_DOWNLOAD_SETTING,
);
export function allowHttp(): boolean {
return ALLOW_HTTP_SETTING.getValue<boolean>() || false;
}

View File

@@ -27,6 +27,7 @@ import {
} from "./common/github-url-identifier-helper"; } from "./common/github-url-identifier-helper";
import { Credentials } from "./common/authentication"; import { Credentials } from "./common/authentication";
import { AppCommandManager } from "./common/commands"; import { AppCommandManager } from "./common/commands";
import { ALLOW_HTTP_SETTING } from "./config";
/** /**
* Prompts a user to fetch a database from a remote location. Database is assumed to be an archive file. * Prompts a user to fetch a database from a remote location. Database is assumed to be an archive file.
@@ -49,7 +50,7 @@ export async function promptImportInternetDatabase(
return; return;
} }
validateHttpsUrl(databaseUrl); validateUrl(databaseUrl);
const item = await databaseArchiveFetcher( const item = await databaseArchiveFetcher(
databaseUrl, databaseUrl,
@@ -356,7 +357,7 @@ async function getStorageFolder(storagePath: string, urlStr: string) {
return folderName; return folderName;
} }
function validateHttpsUrl(databaseUrl: string) { function validateUrl(databaseUrl: string) {
let uri; let uri;
try { try {
uri = Uri.parse(databaseUrl, true); uri = Uri.parse(databaseUrl, true);
@@ -364,7 +365,7 @@ function validateHttpsUrl(databaseUrl: string) {
throw new Error(`Invalid url: ${databaseUrl}`); throw new Error(`Invalid url: ${databaseUrl}`);
} }
if (uri.scheme !== "https") { if (!ALLOW_HTTP_SETTING.getValue() && uri.scheme !== "https") {
throw new Error("Must use https for downloading a database."); throw new Error("Must use https for downloading a database.");
} }
} }