From 17ca9adc79af388170a052fc7e82d993a9cc20f6 Mon Sep 17 00:00:00 2001 From: Zack Spear Date: Mon, 5 Jun 2023 19:11:01 -0700 Subject: [PATCH] refactor: callback progress --- _data/serverState.ts | 8 +- _webGui/callbackTest.page | 108 ++++++++++++++++--- app.vue | 6 -- components/CallbackHandler.ce.vue | 5 +- components/UserProfile.ce.vue | 28 +++-- components/UserProfile/CallbackFeedback.vue | 46 ++++++++ components/UserProfile/DropdownError.vue | 8 +- components/UserProfile/DropdownTrigger.vue | 8 +- components/UserProfile/Promo.vue | 2 +- components/UserProfile/ServerStateBuy.vue | 2 +- nuxt.config.ts | 4 - store/account.ts | 66 ++++++++++++ store/callback.ts | 46 ++++++-- store/purchase.ts | 58 ++++++++++ store/server.ts | 111 ++++++++++++++------ store/trial.ts | 37 +++++++ types/callback.ts | 9 ++ types/server.ts | 24 ++++- 18 files changed, 476 insertions(+), 100 deletions(-) create mode 100644 components/UserProfile/CallbackFeedback.vue create mode 100644 store/account.ts create mode 100644 store/purchase.ts create mode 100644 store/trial.ts create mode 100644 types/callback.ts diff --git a/_data/serverState.ts b/_data/serverState.ts index 8e8e324b6..dee84c613 100644 --- a/_data/serverState.ts +++ b/_data/serverState.ts @@ -8,9 +8,9 @@ function makeid(length: number) { return result; } -const registeredGuid = `1111-1111-${makeid(4)}-123412341234`; // this guid is registered in key server +const randomGuid = `1111-1111-${makeid(4)}-123412341234`; // this guid is registered in key server const newGuid = `1234-1234-${makeid(4)}-123412341234`; // this is a new USB, not registered -const regWizTime = `1616711990500_${registeredGuid}`; +const regWizTime = `1616711990500_${randomGuid}`; const blacklistedGuid = '154B-00EE-0700-9B50CF819816'; // ENOKEYFILE @@ -41,12 +41,12 @@ const serverState = { avatar: 'https://source.unsplash.com/300x300/?portrait', name: 'DevServer9000', description: 'Fully automated media server', - guid: '9292-1111-BITE-444444444444', + guid: randomGuid, deviceCount: 8, expireTime, lanIp: '192.168.0.1', locale: 'en', - pluginInstalled: false, + pluginInstalled: true, registered: true, site: 'http://localhost:4321', state, diff --git a/_webGui/callbackTest.page b/_webGui/callbackTest.page index 132c018ac..0f21a0810 100644 --- a/_webGui/callbackTest.page +++ b/_webGui/callbackTest.page @@ -16,48 +16,124 @@ $localSource = '/plugins/dynamix.my.servers/webComponents/' . $webComponentFile; // add the web component source to the DOM echo ''; +/** + * Build vars for user profile prop + */ +// add 'ipaddr' function for 6.9 backwards compatibility +if (!function_exists('ipaddr')) { + function ipaddr($ethX='eth0', $prot=4) { + global $$ethX; + switch ($$ethX['PROTOCOL:0']) { + case 'ipv4': + return $$ethX['IPADDR:0']; + case 'ipv6': + return $$ethX['IPADDR6:0']; + case 'ipv4+ipv6': + switch ($prot) { + case 4: return $$ethX['IPADDR:0']; + case 6: return $$ethX['IPADDR6:0']; + default:return [$$ethX['IPADDR:0'],$$ethX['IPADDR6:0']];} + default: + return $$ethX['IPADDR:0']; + } + } +} +$configErrorEnum = [ // used to map $var['configValid'] value to mimic unraid-api's `configError` ENUM + "error" => 'UNKNOWN_ERROR', + "invalid" => 'INVALID', + "nokeyserver" => 'NO_KEY_SERVER', + "withdrawn" => 'WITHDRAWN', +]; +// read flashbackup ini file +$flashbackup_ini = '/var/local/emhttp/flashbackup.ini'; +$flashbackup_status = (file_exists($flashbackup_ini)) ? @parse_ini_file($flashbackup_ini) : []; + +$nginx = parse_ini_file('/var/local/emhttp/nginx.ini'); + +$pluginInstalled = ''; +if (!file_exists('/var/lib/pkgtools/packages/dynamix.unraid.net') && !file_exists('/var/lib/pkgtools/packages/dynamix.unraid.net.staging')) { + $pluginInstalled = ''; // base OS only, plugin not installed • show ad for plugin +} else { + // plugin is installed but if the unraid-api file doesn't fully install it's a failed install + if (file_exists('/var/lib/pkgtools/packages/dynamix.unraid.net')) $pluginInstalled = 'dynamix.unraid.net.plg'; + if (file_exists('/var/lib/pkgtools/packages/dynamix.unraid.net.staging')) $pluginInstalled = 'dynamix.unraid.net.staging.plg'; + // plugin install failed • append failure detected so we can show warning about failed install via UPC + if (!file_exists('/usr/local/sbin/unraid-api')) $pluginInstalled = $pluginInstalled . '_installFailed'; +} + $serverData = [ - "avatar" => (!empty($myservers['remote']['avatar']) && $plgInstalled) ? $myservers['remote']['avatar'] : '', + "apiKey" => $myservers['upc']['apikey'] ?? '', + "apiVersion" => $myservers['api']['version'] ?? '', + "avatar" => (!empty($myservers['remote']['avatar']) && $pluginInstalled) ? $myservers['remote']['avatar'] : '', + "banner" => $display['banner'] ?? '', + "bannerGradient" => $display['showBannerGradient'] ?? 'yes', + "bgColor" => ($backgnd) ? '#'.$backgnd : '', "config" => [ 'valid' => $var['configValid'] === 'yes', 'error' => $var['configValid'] !== 'yes' ? (array_key_exists($var['configValid'], $configErrorEnum) ? $configErrorEnum[$var['configValid']] : 'UNKNOWN_ERROR') : null, ], + "csrf" => $var['csrf_token'], + "description" => $var['COMMENT'], + "descriptionShow" => ($display['headerdescription']??''!='no') ? 'true' : '', "deviceCount" => $var['deviceCount'], "email" => $myservers['remote']['email'] ?? '', + "expireTime" => 1000*($var['regTy']=='Trial'||strstr($var['regTy'],'expired')?$var['regTm2']:0), "extraOrigins" => explode(',', $myservers['api']['extraOrigins']??''), - "flashproduct" => $var['flashProduct'], - "flashvendor" => $var['flashVendor'], + "flashProduct" => $var['flashProduct'], + "flashVendor" => $var['flashVendor'], "flashBackupActivated" => empty($flashbackup_status['activated']) ? '' : 'true', "guid" => $var['flashGUID'], "hasRemoteApikey" => !empty($myservers['remote']['apikey']), - "internalip" => ipaddr(), - "internalport" => $_SERVER['SERVER_PORT'], + "internalIp" => ipaddr(), + "internalPort" => $_SERVER['SERVER_PORT'], "keyfile" => empty($var['regFILE'])? "" : str_replace(['+','/','='], ['-','_',''], trim(base64_encode(@file_get_contents($var['regFILE'])))), - "locale" => 'en', + "locale" => ($_SESSION['locale']) ? $_SESSION['locale'] : 'en_US', + "metaColor" => ($display['headermetacolor']??'') ? '#'.$display['headermetacolor'] : '', + "model" => $var['SYS_MODEL'], + "name" => $var['NAME'], "osVersion" => $var['version'], "plgVersion" => $plgversion = file_exists('/var/log/plugins/dynamix.unraid.net.plg') ? trim(@exec('/usr/local/sbin/plugin version /var/log/plugins/dynamix.unraid.net.plg 2>/dev/null')) : ( file_exists('/var/log/plugins/dynamix.unraid.net.staging.plg') ? trim(@exec('/usr/local/sbin/plugin version /var/log/plugins/dynamix.unraid.net.staging.plg 2>/dev/null')) : 'base-'.$var['version'] ), - "plgInstalled" => $plgInstalled, + "pluginInstalled" => $pluginInstalled, "protocol" => $_SERVER['REQUEST_SCHEME'], - "reggen" => (int)$var['regGen'], + "regGen" => (int)$var['regGen'], "regGuid" => $var['regGUID'], - "registered" => (!empty($myservers['remote']['username']) && $plgInstalled), - "name" => $var['NAME'], + "registered" => (!empty($myservers['remote']['username']) && $pluginInstalled), + "registeredTime" => $myservers['remote']['regWizTime'] ?? '', "site" => $_SERVER['REQUEST_SCHEME']."://".$_SERVER['HTTP_HOST'], "state" => strtoupper(empty($var['regCheck']) ? $var['regTy'] : $var['regCheck']), + "textColor" => ($header) ? '#'.$header : '', + "theme" => $display['theme'], "ts" => time(), - "username" => (!empty($myservers['remote']['username']) && $plgInstalled) ? $myservers['remote']['username'] : '', + "uptime" => 1000*(time() - round(strtok(exec("cat /proc/uptime"),' '))), + "username" => (!empty($myservers['remote']['username']) && $pluginInstalled) ? $myservers['remote']['username'] : '', "wanFQDN" => $nginx['NGINX_WANFQDN'] ?? '', ]; -echo ""; +$themeBg = '#111'; +if ($display['theme'] === 'black' || $display['theme'] === 'azure') { + $themeBg = '#fff'; +} ?> - - - - + +
+ "?> +
+
+ +
+
+ +
+
+ +
diff --git a/app.vue b/app.vue index c4016a264..0d07d7915 100644 --- a/app.vue +++ b/app.vue @@ -26,9 +26,6 @@ onBeforeMount(() => {

WanIpCheckCe

-
-

CallbackHandlerCe

-

Web Components

@@ -46,9 +43,6 @@ onBeforeMount(() => {

WanIpCheckCe

-
-

CallbackHandlerCe

-
diff --git a/components/CallbackHandler.ce.vue b/components/CallbackHandler.ce.vue index 42edfd5e1..02ac28ff0 100644 --- a/components/CallbackHandler.ce.vue +++ b/components/CallbackHandler.ce.vue @@ -1,8 +1,9 @@