@ -1,5 +1,5 @@
from pathlib import Path
from pathlib import Path
from flask import send_file , abort , Blueprint , render_template , session , redirect , url_for , flash
from flask import session , se nd_file , abort , Blueprint , render_template , redirect , url_for , flash
import hmac , hashlib , time , urllib . parse , os
import hmac , hashlib , time , urllib . parse , os
OTB_PORTAL_SHARED_SECRET = os . getenv ( " OTB_PORTAL_SHARED_SECRET " , " !2Eas678 " )
OTB_PORTAL_SHARED_SECRET = os . getenv ( " OTB_PORTAL_SHARED_SECRET " , " !2Eas678 " )
@ -57,7 +57,7 @@ def portal_services_home():
{
{
" key " : " otb_cloud " ,
" key " : " otb_cloud " ,
" name " : " OTB Cloud Backup & Storage " ,
" name " : " OTB Cloud Backup & Storage " ,
" summary " : " Secure backup and storage for documents, photos, videos, and device uploads. " ,
" summary " : " Secure backup and storage for documents, photos, videos, and device uploads. Daily free-tier limits and usage are shown in the OTB Cloud Health tab. " ,
" status " : " beta " ,
" status " : " beta " ,
" enabled " : True ,
" enabled " : True ,
" href " : " /portal/services/otb-cloud-launch " ,
" href " : " /portal/services/otb-cloud-launch " ,
@ -120,9 +120,8 @@ def portal_launch_otb_cloud():
@portal_services_bp . route ( " /portal/downloads/apps/<app_slug>/latest " )
@portal_services_bp . route ( " /portal/downloads/apps/<app_slug>/latest " )
def portal_download_latest_app ( app_slug ) :
def portal_download_latest_app ( app_slug ) :
client = get_portal_client ( )
if not session . get ( " portal_client_id " ) :
if not client :
return redirect ( " /portal/login " )
return redirect ( " /portal " )
allowed_apps = {
allowed_apps = {
" otb-cloud " : {
" otb-cloud " : {