From c3b06261e16d3f1c312bcc96d1e473d26716eadb Mon Sep 17 00:00:00 2001 From: DecafDev <40307803+decaf-dev@users.noreply.github.com> Date: Tue, 30 Jul 2024 02:30:56 -0600 Subject: [PATCH] Update license system (#275) * feat: simplify key logic * docs: update network section of README * refactor: rename to "Premium features are enabled" * docs: fix grammar * feat: clean up old values * feat: implement digital signature validation * refactor: add clean up message --- README.md | 8 +- bun.lockb | Bin 191985 -> 192325 bytes manifest.json | 2 +- package.json | 3 +- src/event/types.ts | 2 +- src/main.ts | 24 +- src/svelte/app/components/feed-view.svelte | 12 +- .../components/content-filter.svelte | 12 +- .../components/filter-rule.svelte | 10 +- src/svelte/license-key-app/index.svelte | 90 +++--- src/svelte/shared/services/device-id-utils.ts | 35 --- src/svelte/shared/services/license.ts | 295 ++++++------------ src/svelte/shared/services/random.ts | 15 +- .../plugins/vault-explorer/data.json | 18 +- versions.json | 3 +- 15 files changed, 184 insertions(+), 345 deletions(-) delete mode 100644 src/svelte/shared/services/device-id-utils.ts diff --git a/README.md b/README.md index 685e88bc..9de4e68e 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,8 @@ Click the compass button on the left-hand sidebar to open the vault explorer vie Premium features are available to users who purchase a [Vault Explorer license](https://vaultexplorer.com/docs/premium/). +Please do not share your license key with anyone. Shared license keys will be deactivated. + ## Features | Name | Categories | Documented | @@ -159,11 +161,11 @@ Premium features are available to users who purchase a [Vault Explorer license]( ## Network use -For general usage of the plugin, Vault Explorer does not make any network requests. +Vault Explorer is a privacy friendly plugin. -If you purchase a Vault Explorer license, the plugin will communicate with the Vault Explorer API. These requests will only send the license key you enter and a device ID generated by the plugin. +When you access the grid view, Vault Explorer will make requests to the URL's that you specify to display cover images. You may disable this behavior in the settings. -When you access the grid view and have configured an image URL property in the settings, Vault Explorer will request the specified URLs to display cover images on corresponding grid cards. +Besides cover image fetching, Vault Explorer does not make any network requests. Vault Explorer does not include any client-side telemetry. diff --git a/bun.lockb b/bun.lockb index 5306e1cab3f42b2739131fb97d793bac287678e8..939b3dfd78bccd045832d6382421d6f79e63d2c8 100755 GIT binary patch delta 34280 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 R+Yx2WIGcYQ<}R`Le*vm?KYjoJ delta 33803 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�r%! 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 new VaultExplorerView(leaf, this) @@ -54,9 +56,6 @@ export default class VaultExplorerPlugin extends Plugin { this.app.workspace.onLayoutReady(() => { this.layoutReady = true; }); - - await loadDeviceId(); - await License.getInstance().verifyLicense(); } private registerEvents() { @@ -174,6 +173,21 @@ export default class VaultExplorerPlugin extends Plugin { if (loadedVersion !== null) { const newData = preformMigrations(loadedVersion, loadedData); currentData = newData; + if (isVersionLessThan(loadedVersion, "1.36.0")) { + console.log("Cleaning up old data"); + const LOCAL_STORAGE_DEVICE_REGISTERED = + "vault-explorer-device-registration"; + localStorage.removeItem(LOCAL_STORAGE_DEVICE_REGISTERED); + + //Clean up the old device id from the versioning system + const LOCAL_STORAGE_ID = "vault-explorer-id"; + localStorage.removeItem(LOCAL_STORAGE_ID); + + //Clean up the old device id from the versioning system + const LOCAL_STORAGE_LICENSE_KEY = + "vault-explorer-license-key"; + localStorage.removeItem(LOCAL_STORAGE_LICENSE_KEY); + } } } diff --git a/src/svelte/app/components/feed-view.svelte b/src/svelte/app/components/feed-view.svelte index a6bb75ba..7c01b14f 100644 --- a/src/svelte/app/components/feed-view.svelte +++ b/src/svelte/app/components/feed-view.svelte @@ -5,7 +5,7 @@ import License from "src/svelte/shared/services/license"; import FeedCard from "./feed-card.svelte"; - export let isDeviceRegistered = false; + export let hasValidLicenseKey = false; export let data: FileRenderData[] = []; export let startIndex; export let pageLength; @@ -13,9 +13,9 @@ let filteredItems: FileRenderData[] = []; License.getInstance() - .getIsDeviceRegisteredStore() - .subscribe((isRegistered) => { - isDeviceRegistered = isRegistered; + .getHasValidKeyStore() + .subscribe((hasValidKey) => { + hasValidLicenseKey = hasValidKey; }); $: { @@ -31,13 +31,13 @@
- {#if !isDeviceRegistered} + {#if !hasValidLicenseKey}
{/if} - {#if isDeviceRegistered} + {#if hasValidLicenseKey} {#each filteredItems as fileRenderData (fileRenderData.id)} { - isDeviceRegistered = isRegistered; + .getHasValidKeyStore() + .subscribe((hasValidKey) => { + hasValidLicenseKey = hasValidKey; }); function handleValueChange(e: Event) { @@ -54,7 +54,7 @@ {#if condition !== ContentFilterCondition.IS_EMPTY && condition !== ContentFilterCondition.IS_NOT_EMPTY} - {#if type === FilterRuleType.CONTENT && !isDeviceRegistered} + {#if type === FilterRuleType.CONTENT && !hasValidLicenseKey}
diff --git a/src/svelte/custom-filter-app/components/filter-rule.svelte b/src/svelte/custom-filter-app/components/filter-rule.svelte index 832613f5..74b30413 100644 --- a/src/svelte/custom-filter-app/components/filter-rule.svelte +++ b/src/svelte/custom-filter-app/components/filter-rule.svelte @@ -33,14 +33,14 @@ export let condition: FilterCondition; export let isEnabled: boolean; - let isDeviceRegistered = false; + let hasValidLicenseKey = false; const dispatch = createEventDispatcher(); License.getInstance() - .getIsDeviceRegisteredStore() - .subscribe((isRegistered) => { - isDeviceRegistered = isRegistered; + .getHasValidKeyStore() + .subscribe((hasValidKey) => { + hasValidLicenseKey = hasValidKey; }); function handleActionsClick(e: CustomEvent) { @@ -142,7 +142,7 @@