@@ -366,16 +366,19 @@ ${thirdPartyHTML}
366366 }
367367 res . setEncoding ( 'utf8' ) ;
368368 res . on ( 'data' , function ( chunk ) {
369- var jsonTargetArray = JSON . parse ( chunk ) ;
370- let controllerVersion = jsonTargetArray . data . version . replace ( 'v' , '' ) ;
371- logger . info ( { message : 'attached controller version' , controllerVersion : controllerVersion } ) ;
372- let compatibleControllerVersion = `${ pjson . compatibleControllerVersion } ` ;
373- if ( controllerVersion !== '0.0.0' ) {
374- if ( ! satisfies ( controllerVersion , compatibleControllerVersion ) ) {
375- logger . error ( { message : 'incompatible controller version' , controllerVersion : controllerVersion , compatibleControllerVersion : compatibleControllerVersion } ) ;
376- process . exit ( - 1 ) ;
369+ try {
370+ var jsonTargetArray = JSON . parse ( chunk ) ;
371+ let controllerVersion = jsonTargetArray . data . version . replace ( 'v' , '' ) ;
372+ logger . info ( { message : 'attached controller version' , controllerVersion : controllerVersion } ) ;
373+ let compatibleControllerVersion = `${ pjson . compatibleControllerVersion } ` ;
374+ if ( controllerVersion !== '0.0.0' ) {
375+ if ( ! satisfies ( controllerVersion , compatibleControllerVersion ) ) {
376+ logger . error ( { message : 'incompatible controller version' , controllerVersion : controllerVersion , compatibleControllerVersion : compatibleControllerVersion } ) ;
377+ process . exit ( - 1 ) ;
378+ }
377379 }
378380 }
381+ catch ( e ) { }
379382 } ) ;
380383 } ) . end ( ) ;
381384 request . on ( 'timeout' , ( ) => {
@@ -642,6 +645,73 @@ ${thirdPartyHTML}
642645 return ;
643646 } ) ;
644647
648+ /**
649+ *
650+ */
651+ app . use ( express . json ( ) ) ;
652+ app . post ( '/controller-oidc-proxy' , async ( req , res ) => {
653+
654+ let {
655+ urlWithParams,
656+ method,
657+ headers,
658+ postData
659+ } = req . body ; // Extract the proxy variables from POST body
660+
661+ if ( ! urlWithParams ) {
662+ return res . status ( 400 ) . json ( { error : 'Missing urlWithParams parameter' } ) ;
663+ }
664+
665+ const url = new URL ( urlWithParams ) ;
666+
667+ const options = {
668+ hostname : url . hostname ,
669+ port : url . port || 443 ,
670+ path : url . pathname + url . search ,
671+ method : method ,
672+ headers : headers ,
673+ redirect : 'manual'
674+ } ;
675+
676+ if ( isEqual ( method , 'POST' ) ) {
677+
678+ postData = JSON . stringify ( postData ) ;
679+ options . headers [ 'Content-Length' ] = Buffer . byteLength ( postData ) ;
680+
681+ const req = https . request ( options , ( response ) => {
682+ let data = '' ;
683+ response . on ( 'data' , ( chunk ) => {
684+ data += chunk ;
685+ } ) ;
686+
687+ response . on ( 'end' , ( ) => {
688+ if ( response . statusCode >= 300 && response . statusCode < 400 ) {
689+ res . json ( { redirectUrl : response . headers . location } ) ;
690+ } else {
691+ res . status ( 400 ) . json ( { error : 'expected redirect did not occur' } ) ;
692+ }
693+ res . end ( ) ;
694+ } ) ;
695+ } ) ;
696+
697+ req . write ( postData ) ;
698+ req . end ( ) ;
699+
700+ } else {
701+
702+ https . request ( options , async function ( response ) {
703+
704+ if ( response . statusCode >= 300 && response . statusCode < 400 ) {
705+ res . json ( { redirectUrl : response . headers . location } ) ;
706+ } else {
707+ res . status ( 400 ) . json ( { error : 'expected redirect did not occur' } ) ;
708+ }
709+ res . end ( ) ;
710+
711+ } ) . end ( ) ;
712+ }
713+ } ) ;
714+
645715 var proxy = httpProxy . createProxyServer ( options ) ;
646716
647717 app . use ( require ( './lib/inject' ) ( options , [ ] , selects ) ) ;
@@ -711,7 +781,9 @@ ${thirdPartyHTML}
711781 filter : function ( data , req , res ) {
712782 if ( data . error && data . error . browzer_error_data ) {
713783
714- let footer = `<a href="https://openziti.io/docs/learn/quickstarts/browzer/"><strong>powered by OpenZiti BrowZer v${ pjson . version } </strong><img src="https://ziti-logo.s3.amazonaws.com/ziti-browzer-logo.svg" style="width: 2%;position: fixed;bottom: 15px;margin-left: 10px;"></a>` ;
784+ let whitelabel = JSON . parse ( env ( 'ZITI_BROWZER_WHITELABEL' ) ) ;
785+
786+ let footer = `<a href="https://openziti.io/docs/learn/quickstarts/browzer/"><strong>powered by ${ whitelabel . branding . browZerName } v${ pjson . version } </strong><img src="${ whitelabel . branding . browZerButtonIconSvgUrl } " style="width: 2%;position: fixed;bottom: 15px;margin-left: 10px;"></a>` ;
715787
716788 if ( isUndefined ( data . error . browzer_error_data . myvar ) ) {
717789 data . error . browzer_error_data . myvar = { type : 'zbr' }
@@ -723,6 +795,7 @@ ${thirdPartyHTML}
723795 code : data . error . browzer_error_data . code ,
724796 title : data . error . browzer_error_data . title ,
725797 message : data . error . browzer_error_data . message ,
798+ browzer_name : whitelabel . branding . browZerName ,
726799 footer : footer ,
727800 } ) ;
728801 data . body = he . decode ( data . body ) ;
@@ -742,6 +815,7 @@ ${thirdPartyHTML}
742815 code : data . error . browzer_error_data . code ,
743816 title : data . error . browzer_error_data . title ,
744817 message : data . error . browzer_error_data . message ,
818+ browzer_name : whitelabel . branding . browZerName ,
745819 footer : footer ,
746820 } ) ;
747821 data . body = he . decode ( data . body ) ;
@@ -859,7 +933,7 @@ Hello, from OpenZiti BrowZer v${pjson.version} !
859933 } ) ;
860934
861935 server . listen ( browzer_bootstrapper_listen_port , ( ) => {
862- console . log ( `Server listening on port ${ browzer_bootstrapper_listen_port } ` ) ;
936+ logger . info ( { message : ' listening' , port : browzer_bootstrapper_listen_port , scheme : browzer_bootstrapper_scheme } ) ;
863937 } ) ;
864938
865939 }
0 commit comments