From 90303689db09daf310d24e937be8b7d7f513838f Mon Sep 17 00:00:00 2001 From: Zack Spear Date: Tue, 26 Sep 2023 14:05:22 -0700 Subject: [PATCH] refactor: WIP registration update expiration --- .../dynamix.my.servers/include/state.php | 8 +- web/_data/serverState.ts | 11 +- web/components/Brand/Button.vue | 4 +- web/components/KeyActions.vue | 2 +- web/components/Registration.ce.vue | 126 ++++++++---------- web/components/Registration/Item.vue | 29 +++- .../Registration/UpgradeExpiration.vue | 60 +++++++++ web/components/UpdateOs/Downgrade.vue | 16 +-- web/components/UpdateOs/Status.vue | 4 - web/components/UpdateOs/Update.vue | 4 +- web/locales/en_US.json | 22 ++- web/store/server.ts | 16 +++ web/types/server.ts | 5 +- 13 files changed, 205 insertions(+), 102 deletions(-) create mode 100644 web/components/Registration/UpgradeExpiration.vue diff --git a/plugin/source/dynamix.unraid.net/usr/local/emhttp/plugins/dynamix.my.servers/include/state.php b/plugin/source/dynamix.unraid.net/usr/local/emhttp/plugins/dynamix.my.servers/include/state.php index d0d6ec743..86ee32fc9 100644 --- a/plugin/source/dynamix.unraid.net/usr/local/emhttp/plugins/dynamix.my.servers/include/state.php +++ b/plugin/source/dynamix.unraid.net/usr/local/emhttp/plugins/dynamix.my.servers/include/state.php @@ -60,9 +60,11 @@ $serverState = [ "osVersion" => $var['version'], "protocol" => $_SERVER['REQUEST_SCHEME'], "regGen" => (int)$var['regGen'], - "regGuid" => $var['regGUID'], - "regTo" => $var['regTo'], - "regTm" => $var['regTm'] * 1000, // JS expects milliseconds + "regGuid" => @$var['regGUID'] ?? '', + "regTo" => @$var['regTo'] ?? '', + "regTm" => $var['regTm'] ? @$var['regTm'] * 1000 : '', // JS expects milliseconds + "regTy" => @$var['regTy'] ?? '', + "regUpdExpAt" => $var['regUpdExpAt'] ? @$var['regUpdExpAt'] * 1000 : '', // JS expects milliseconds "registered" => $registered, "registeredTime" => $myservers['remote']['regWizTime'] ?? '', "site" => $_SERVER['REQUEST_SCHEME'] . "://" . $_SERVER['HTTP_HOST'], diff --git a/web/_data/serverState.ts b/web/_data/serverState.ts index 4dff636e3..d8b6b8ec3 100644 --- a/web/_data/serverState.ts +++ b/web/_data/serverState.ts @@ -29,12 +29,14 @@ const randomGuid = `1111-1111-${makeid(4)}-123412341234`; // this guid is regist // EBLACKLISTED1 // EBLACKLISTED2 // ENOCONN -const state: ServerState = 'EEXPIRED'; +const state: ServerState = 'TRIAL'; +const regTy = 'Trial'; const uptime = Date.now() - 60 * 60 * 1000; // 1 hour ago +const oneHourFromNow = Date.now() + 60 * 60 * 1000; // 1 hour from now let expireTime = 0; -if (state === 'TRIAL') { expireTime = Date.now() + 60 * 60 * 1000; } // in 1 hour -if (state === 'EEXPIRED') { expireTime = uptime; } // 1 hour ago +if (state === 'TRIAL') { expireTime = oneHourFromNow; } // in 1 hour +else if (state === 'EEXPIRED') { expireTime = uptime; } // 1 hour ago export const serverState: Server = { apiKey: 'unupc_fab6ff6ffe51040595c6d9ffb63a353ba16cc2ad7d93f813a2e80a5810', @@ -63,6 +65,9 @@ export const serverState: Server = { regGen: 0, regTm: uptime, regTo: 'Zack Spear', + regTy, + // regUpdExpAt: oneHourFromNow, + regUpdExpAt: uptime, // "regGuid": "0781-5583-8355-81071A2B0211", site: 'http://localhost:4321', state, diff --git a/web/components/Brand/Button.vue b/web/components/Brand/Button.vue index 464f013ea..d81d472a4 100644 --- a/web/components/Brand/Button.vue +++ b/web/components/Brand/Button.vue @@ -51,8 +51,8 @@ const classes = computed(() => { :class="classes" @click="click ?? $emit('click')" > - + {{ text }} - + diff --git a/web/components/KeyActions.vue b/web/components/KeyActions.vue index 3a13864d9..208e4368c 100644 --- a/web/components/KeyActions.vue +++ b/web/components/KeyActions.vue @@ -14,7 +14,7 @@ const { keyActions } = storeToRefs(useServerStore());
  • { + switch(regTy.value) { + case 'Basic': + return 6; + case 'Plus': + return 12; + case 'Pro': + case 'Trial': + return 'unlimited'; + } +}); + const items = computed(() => { return [ - ...(regTo.value - ? [ - { - label: 'Registered to', - text: regTo.value, - }, - ] - : [] - ), - ...(regTo.value - ? [ - { - label: 'Registered on', - text: dayjs(regTm.value).format('YYYY-MM-DD HH:mm'), - }, - ] - : [] - ), + ...(regTy.value ? [{ label: t('License key type'), text: regTy.value }] : []), + ...(regTo.value ? [ { label: t('Registered to'), text: regTo.value }] : []), + ...(regTo.value ? [{ label: t('Registered on'), text: dayjs(regTm.value).format('YYYY-MM-DD HH:mm')}] : []), /** * @todo factor in grandfathered users and display a different message */ - ...(regTo.value - ? [ - { - label: 'Updates Expire', - text: dayjs(regTm.value).format('YYYY-MM-DD HH:mm'), - }, - ] - : [] - ), - ...(state.value === 'EGUID' - ? [ - { - label: 'Registered GUID', - text: regGuid.value, - }, - ] - : [] - ), - { - label: 'Flash GUID', - text: guid.value, - }, - { - label: 'Flash Vendor', - text: flashVendor.value, - }, - { - label: 'Flash Product', - text: flashProduct.value, - }, - { - label: 'Attached Storage Devices', - text: deviceCount.value, - }, + ...(regUpdExpAt.value + ? [{ + error: regUpdExpired.value, + label: t('OS Update Eligibility'), + component: RegistrationUpgradeExpiration, + componentProps: { t: t }, + }] + : []), + ...(state.value === 'EGUID' ? [{ label: t('Registered GUID'), text: regGuid.value }] : [] ), + { label: t('Flash GUID'), text: guid.value }, + { label: t('Flash Vendor'), text: flashVendor.value }, + { label: t('Flash Product'), text: flashProduct.value }, + { label: t('Attached Storage Devices'), text: t('{0} out of {1} devices', [deviceCount.value, devicesAvailable.value]) }, + ...(regUpdExpAt.value + ? [{ + label: t('License key actions'), + component: KeyActions, + componentProps: { t: t }, + }] + : []), ]; }); @@ -133,22 +124,21 @@ const items = computed(() => { v-html="stateData.message" class="prose text-16px leading-relaxed whitespace-normal opacity-75"> -
    -
    - -
    -
     
    -
    - -
    -
    -
    -
    +
    + + + +
    diff --git a/web/components/Registration/Item.vue b/web/components/Registration/Item.vue index 69ce3ed8e..ece6acca4 100644 --- a/web/components/Registration/Item.vue +++ b/web/components/Registration/Item.vue @@ -1,13 +1,15 @@