feat: add new query param silent

This commit is contained in:
2025-06-22 21:24:08 -07:00
parent f32504e76b
commit 60fd32e4d5
2 changed files with 53 additions and 11 deletions

View File

@@ -188,6 +188,28 @@ getos( ( e, json ) =>
return serverOs; return serverOs;
}); });
/*
helper > str2bool
*/
function str2bool( str )
{
if ( typeof str === 'string' )
{
const lower = str.toLowerCase();
if ([
'1', 'true', 'yes', 'y', 't'
].includes( lower ) )
str = true;
if ([
'0', 'false', 'no', 'n', 'f'
].includes( lower ) )
str = false;
return str;
}
else return Boolean( str );
}
/* /*
Define > Logs Define > Logs
@@ -1479,13 +1501,14 @@ async function serveHealthCheck( req, res )
try try
{ {
const paramUrl = new URL( req.url, `http://${ req.headers.host }` ).searchParams.get( 'api' ); const paramUrl = new URL( req.url, `http://${ req.headers.host }` ).searchParams.get( 'api' );
const paramQuery = new URL( req.url, `http://${ req.headers.host }` ).searchParams.get( 'query' ); const paramSilent = new URL( req.url, `http://${ req.headers.host }` ).searchParams.get( 'silent' );
if ( !paramUrl ) if ( !paramUrl )
{ {
if ( paramQuery !== 'uptime' ) if ( str2bool( paramSilent ) !== true )
{ {
Log.debug( `/api`, chalk.yellow( `[health]` ), chalk.white( `⚙️` ), Log.debug( `/api`, chalk.yellow( `[health]` ), chalk.white( `⚙️` ),
chalk.blueBright( `<msg>` ), chalk.gray( `No API key passed to health check` ) ); chalk.blueBright( `<msg>` ), chalk.gray( `No api-key passed to health check` ) );
} }
} }
@@ -1509,7 +1532,7 @@ async function serveHealthCheck( req, res )
'Content-Type': 'application/json' 'Content-Type': 'application/json'
}); });
if ( paramQuery !== 'uptime' ) if ( str2bool( paramSilent ) !== true )
{ {
Log.ok( `/api`, chalk.yellow( `[health]` ), chalk.white( `` ), Log.ok( `/api`, chalk.yellow( `[health]` ), chalk.white( `` ),
chalk.greenBright( `<msg>` ), chalk.gray( `Response` ), chalk.greenBright( `<msg>` ), chalk.gray( `Response` ),
@@ -2062,8 +2085,8 @@ const server = http.createServer( ( req, resp ) =>
loadFile channel?url=https%3A%2F%2Ftvpass.org%2Fchannel%2Fabc-wabc-new-york-ny%2F loadFile channel?url=https%3A%2F%2Ftvpass.org%2Fchannel%2Fabc-wabc-new-york-ny%2F
*/ */
const paramQuery = new URL( req.url, `http://${ req.headers.host }` ).searchParams.get( 'query' ); const paramSilent = new URL( req.url, `http://${ req.headers.host }` ).searchParams.get( 'silent' );
if ( paramQuery !== 'uptime' ) if ( str2bool( paramSilent ) !== true )
{ {
Log.debug( `http`, chalk.yellow( `[requests]` ), chalk.white( `⚙️` ), Log.debug( `http`, chalk.yellow( `[requests]` ), chalk.white( `⚙️` ),
chalk.blueBright( `<msg>` ), chalk.gray( `Request started` ), chalk.blueBright( `<msg>` ), chalk.gray( `Request started` ),
@@ -2251,11 +2274,27 @@ const server = http.createServer( ( req, resp ) =>
return; return;
} }
/*
Endpoint > Health Check
paramQuery specifies what type of query is triggered
options:
uptime
healthcheck
sync
paramSilent specifies if logs should be silenced. useful for docker-compose.yml healthcheck so that console
is not spammed every 30 seconds.
*/
if ( subdomainHealth.some( ( urlKeyword ) => loadFile.startsWith( urlKeyword ) ) && method === 'GET' ) if ( subdomainHealth.some( ( urlKeyword ) => loadFile.startsWith( urlKeyword ) ) && method === 'GET' )
{ {
const paramQuery = new URL( req.url, `http://${ req.headers.host }` ).searchParams.get( 'query' ); const paramSilent = new URL( req.url, `http://${ req.headers.host }` ).searchParams.get( 'silent' );
if ( paramQuery !== 'uptime' ) // do not show log if query is `uptime`, since uptime runs every 1 second.
// do not show logs if query has striggered `silent?=true` in url
if ( str2bool( paramSilent ) !== true )
{ {
Log.info( `http`, chalk.yellow( `[requests]` ), chalk.white( `` ), Log.info( `http`, chalk.yellow( `[requests]` ), chalk.white( `` ),
chalk.blueBright( `<msg>` ), chalk.gray( `Requesting to access health api` ), chalk.blueBright( `<msg>` ), chalk.gray( `Requesting to access health api` ),

View File

@@ -345,7 +345,8 @@
url: 'api/health', url: 'api/health',
type: 'GET', type: 'GET',
data: { data: {
query: 'healthcheck' query: 'healthcheck',
silent: false
}, },
beforeSend: function( data ) beforeSend: function( data )
{ {
@@ -403,7 +404,8 @@
url: 'api/health', url: 'api/health',
type: 'GET', type: 'GET',
data: { data: {
query: 'uptime' query: 'uptime',
silent: true
}, },
success: function( data ) success: function( data )
{ {
@@ -449,7 +451,8 @@
url: 'api/restart', url: 'api/restart',
type: 'GET', type: 'GET',
data: { data: {
query: 'sync' query: 'sync',
silent: false
}, },
beforeSend: function( data ) beforeSend: function( data )
{ {