From eb99cd26862f5d1e27bb645fc0c3b60f5474903e Mon Sep 17 00:00:00 2001 From: Alexis Tyler Date: Thu, 22 Apr 2021 09:29:48 +0930 Subject: [PATCH] feat: add regState --- app/core/modules/info/get-license.ts | 2 +- app/core/states/var.ts | 41 +++++++++++++++++---- app/core/types/states/var.ts | 1 + app/core/watchers/key-file.ts | 1 + app/graphql/resolvers/query/registration.ts | 1 + app/graphql/schema/types/vars/vars.graphql | 25 +++++++++++++ 6 files changed, 63 insertions(+), 8 deletions(-) diff --git a/app/core/modules/info/get-license.ts b/app/core/modules/info/get-license.ts index fe5f58674..0181ca67e 100644 --- a/app/core/modules/info/get-license.ts +++ b/app/core/modules/info/get-license.ts @@ -27,7 +27,7 @@ export const getLicense = async function (context: CoreContext): Promise }; /** - * Unraid registration check + * Unraid registation check */ -type RegistrationCheck = +type RegistationCheck = /** Key file is missing. */ 'ENOKEYFILE2' | /** Everything is fine. */ ''; /** - * Unraid registration type + * Unraid registation type * * Check the {@link https://unraid.net/pricing | pricing page} for up to date info. */ -type RegistrationType = +type RegistationType = /** Missing key file. */ '- missing key file' | /** Up to 6 attached storage devices. */ @@ -62,6 +62,31 @@ type RegistrationType = /** Unlimited attached storage devices. */ 'Pro'; +type RegistrationState = + 'TRIAL' | + 'BASIC' | + 'PLUS' | + 'PRO' | + 'EEXPIRED' | + 'EGUID' | + 'EGUID1' | + 'ETRIAL' | + 'ENOKEYFILE2' | + 'ENOKEYFILE1' | + 'ENOFLASH1' | + 'ENOFLASH2' | + 'ENOFLASH3' | + 'ENOFLASH4' | + 'ENOFLASH5' | + 'ENOFLASH6' | + 'ENOFLASH7' | + 'EBLACKLISTED' | + 'EBLACKLISTED1' | + 'EBLACKLISTED2' | + 'ENOCONN' | + /** Everything is fine. */ + ''; + interface VarIni { bindMgt: IniStringBooleanOrAuto; cacheNumDevices: string; @@ -139,14 +164,15 @@ interface VarIni { portssl: string; porttelnet: string; queueDepth: string; - regCheck: RegistrationCheck; + regCheck: RegistationCheck; regFile: string; regGen: string; regGuid: string; regTm: string; regTm2: string; regTo: string; - regTy: RegistrationType; + regTy: RegistationType; + regState: RegistrationState; safeMode: string; sbClean: string; sbEvents: string; @@ -204,7 +230,7 @@ const parse = (state: VarIni): Var => { bindMgt: iniBooleanOrAutoToJsBoolean(state.bindMgt), cacheNumDevices: toNumber(state.cacheNumDevices), cacheSbNumDisks: toNumber(state.cacheSbNumDisks), - configValid: ['error', 'invalid'].includes(state.configValid) ? false : iniBooleanToJsBoolean(state.configValid), + configValid: state.configValid === 'error' ? false : iniBooleanToJsBoolean(state.configValid), deviceCount: toNumber(state.deviceCount), fsCopyPrcnt: toNumber(state.fsCopyPrcnt), fsNumMounted: toNumber(state.fsNumMounted), @@ -237,6 +263,7 @@ const parse = (state: VarIni): Var => { porttelnet: toNumber(state.porttelnet), regCheck: state.regCheck === '' ? 'Valid' : 'Error', regTy: ['Basic', 'Plus', 'Pro'].includes(state.regTy) ? state.regTy : 'Invalid', + regState: state.regCheck, safeMode: iniBooleanToJsBoolean(state.safeMode), sbClean: iniBooleanToJsBoolean(state.sbClean), sbEvents: toNumber(state.sbEvents), diff --git a/app/core/types/states/var.ts b/app/core/types/states/var.ts index 267b710cf..0c5a9672e 100644 --- a/app/core/types/states/var.ts +++ b/app/core/types/states/var.ts @@ -114,6 +114,7 @@ export interface Var { porttelnet: number; queueDepth: string; regCheck: string; + regState: string; /** Where the registeration key is stored. (e.g. "/boot/config/Pro.key") */ regFile: string; regGen: string; diff --git a/app/core/watchers/key-file.ts b/app/core/watchers/key-file.ts index 8414417a0..56e51f5ce 100644 --- a/app/core/watchers/key-file.ts +++ b/app/core/watchers/key-file.ts @@ -54,6 +54,7 @@ export const keyFile = () => { registration: { guid: varState.data.regGuid, type: varState.data.regTy, + state: varState.data.regState, keyFile: { location: fullPath, contents: parsedFile diff --git a/app/graphql/resolvers/query/registration.ts b/app/graphql/resolvers/query/registration.ts index 3f1537365..30c9a05e3 100644 --- a/app/graphql/resolvers/query/registration.ts +++ b/app/graphql/resolvers/query/registration.ts @@ -23,6 +23,7 @@ export default async (_: unknown, __: unknown, context: Context) => { return { guid: varState.data.regGuid, type: varState.data.regTy, + state: varState.data.regState, keyFile: { location: varState.data.regFile, contents: parsedFile diff --git a/app/graphql/schema/types/vars/vars.graphql b/app/graphql/schema/types/vars/vars.graphql index 154d67511..46c36260e 100644 --- a/app/graphql/schema/types/vars/vars.graphql +++ b/app/graphql/schema/types/vars/vars.graphql @@ -113,6 +113,7 @@ type Vars { regGuid: String """Registration type""" regTy: registrationType + regState: registrationState """Registration owner""" regTo: String regTm: String @@ -178,4 +179,28 @@ enum registrationType { Plus Pro Invalid +} + +enum registrationState { + TRIAL + BASIC + PLUS + PRO + EEXPIRED + EGUID + EGUID1 + ETRIAL + ENOKEYFILE2 + ENOKEYFILE1 + ENOFLASH1 + ENOFLASH2 + ENOFLASH3 + ENOFLASH4 + ENOFLASH5 + ENOFLASH6 + ENOFLASH7 + EBLACKLISTED + EBLACKLISTED1 + EBLACKLISTED2 + ENOCONN } \ No newline at end of file