From b31548a8beff1b76fcbcfc1750a1bd959c14d117 Mon Sep 17 00:00:00 2001 From: "Hahn Axel (hahn)" <axel.hahn@iml.unibe.ch> Date: Fri, 24 Jun 2022 23:41:44 +0200 Subject: [PATCH] add support for basic auth --- public_html/javascript/functions.js | 42 +++++++++++++++-------- public_html/javascript/inc_config.js.dist | 5 +++ 2 files changed, 33 insertions(+), 14 deletions(-) diff --git a/public_html/javascript/functions.js b/public_html/javascript/functions.js index a2a6068..f71324f 100644 --- a/public_html/javascript/functions.js +++ b/public_html/javascript/functions.js @@ -110,6 +110,7 @@ function _getTaglist(sData){ var sTags=''; let aData=JSON.parse(sData); + // sReturn+='<code>'+sData+'</code><br>'; sReturn+='<input id="'+ID_TAGINPUT+'" type="text" size="20" value="'+AM_TAGS+'"' +' onkeypress="getAppstatus()"' +' onkeydown="getAppstatus()"' @@ -132,11 +133,16 @@ function _getTaglist(sData){ * called from getAppstatus */ async function getTags(){ - let out = '<h2><span>🏷️</span> Tags</h2>'; AM_TAGURL=_getUrlForTags(); + let out = '<h2><span>🏷️</span> Tags</h2>'; + try{ - let response = await fetch(AM_TAGURL); + let response = await fetch(AM_TAGURL, { "headers": + AM_AUTH + } ); + + // let response = await fetch(AM_TAGURL); if (response.ok) { out+=_getTaglist(await response.text()); } else { @@ -146,8 +152,8 @@ function _getTaglist(sData){ +'</div>'; } } catch { - out+='<div class="app result3">' - +'ERROR: no response from ' + out+='<div class="app result1">' + +'UNKNOWN: no response from ' +AM_TAGURL +'</div>'; } @@ -168,7 +174,7 @@ function _getTaglist(sData){ function _getAllAppsStatus(sData){ var sReturn=""; var oDate=new Date; - + // sReturn+='<code>'+sData+'</code><br>'; sReturn+='' +'<h3>Tags: ' + tags + '</h3>' + '<p>' @@ -241,22 +247,23 @@ function _getSingleAppStatus(aData){ * fetch appmonitor api - status of apps */ async function getAppstatus(){ - if(!AM_TAGURL){ - getTags(); - } + var o=document.getElementById(ID_TAGINPUT); tags=o ? o.value : AM_TAGS; let out = '<h2><span>📦</span> Applications</h2>'; - // for (var i=0; i<AM_TAGS.length; i++){ - - // let apiurl=_getUrlWithTags(AM_TAGS[i]) let apiurl=_getUrlWithTags(tags) + // let myfunction="_getAllAppsStatus"; try{ - let response = await fetch(apiurl); + let response = await fetch(apiurl, { "headers": + AM_AUTH + } ); if (response.ok) { + out+=_getAllAppsStatus(await response.text()); + // out+=eval(myfunction+'(await '+response.text()+')'); + } else { out+='<div class="app result1">' +'ERROR '+response.status+': '+response.statusText + ' - ' @@ -265,8 +272,8 @@ async function getAppstatus(){ } } catch { - out+='<div class="app result3">' - +'ERROR: no response from ' + out+='<div class="app result1">' + +'UNKNOWN: no response from ' +apiurl +'</div>'; } @@ -281,6 +288,13 @@ async function getAppstatus(){ // MAIN // ---------------------------------------------------------------------- +// for auth header with basic auth +let AM_AUTH=(AM_USER) + ? { "Authorization": "Basic " + btoa(AM_USER + ":" + AM_PASSWORD) } + : {} +; + +getTags(); AM_TIMER=window.setTimeout("getAppstatus()", 500); diff --git a/public_html/javascript/inc_config.js.dist b/public_html/javascript/inc_config.js.dist index 1b65e7d..4fe9189 100644 --- a/public_html/javascript/inc_config.js.dist +++ b/public_html/javascript/inc_config.js.dist @@ -1,3 +1,8 @@ const AM_SERVER_URL='https://appmonitor.example.com/api'; const AM_TAGS='live,myapp'; + +// optional: BASIC AUTH +// const AM_USER='api'; +// const AM_PASSWORD='password-of-api-user'; + const REFRESHTIME=30; // in sec -- GitLab