@@ -506,7 +506,8 @@ private bool IsProxiedProcess(TunnelConnectSessionEventArgs e)
506
506
507
507
async Task OnRequest ( object sender , SessionEventArgs e )
508
508
{
509
- if ( IsProxiedHost ( e . HttpClient . Request . RequestUri . Host ) )
509
+ if ( IsProxiedHost ( e . HttpClient . Request . RequestUri . Host ) &&
510
+ IsIncludedByHeaders ( e . HttpClient . Request . Headers ) )
510
511
{
511
512
_pluginData . Add ( e . GetHashCode ( ) , [ ] ) ;
512
513
var responseState = new ResponseState ( ) ;
@@ -553,6 +554,43 @@ private async Task HandleRequest(SessionEventArgs e, ProxyRequestArgs proxyReque
553
554
554
555
private bool IsProxiedHost ( string hostName ) => _hostsToWatch . Any ( h => h . Url . IsMatch ( hostName ) ) ;
555
556
557
+ private bool IsIncludedByHeaders ( HeaderCollection requestHeaders )
558
+ {
559
+ if ( _config . FilterByHeaders is null )
560
+ {
561
+ return true ;
562
+ }
563
+
564
+ foreach ( var header in _config . FilterByHeaders )
565
+ {
566
+ _logger . LogDebug ( "Checking header {header} with value {value}..." ,
567
+ header . Name ,
568
+ string . IsNullOrEmpty ( header . Value ) ? "(any)" : header . Value
569
+ ) ;
570
+
571
+ if ( requestHeaders . HeaderExists ( header . Name ) )
572
+ {
573
+ if ( string . IsNullOrEmpty ( header . Value ) )
574
+ {
575
+ _logger . LogDebug ( "Request has header {header}" , header . Name ) ;
576
+ return true ;
577
+ }
578
+
579
+ if ( requestHeaders . GetHeaders ( header . Name ) ! . Any ( h => h . Value . Contains ( header . Value ) ) )
580
+ {
581
+ _logger . LogDebug ( "Request header {header} contains value {value}" , header . Name , header . Value ) ;
582
+ return true ;
583
+ }
584
+ }
585
+ else
586
+ {
587
+ _logger . LogDebug ( "Request doesn't have header {header}" , header . Name ) ;
588
+ }
589
+ }
590
+
591
+ _logger . LogDebug ( "Request doesn't match any header filter. Ignoring" ) ;
592
+ return false ;
593
+ }
556
594
557
595
// Modify response
558
596
async Task OnBeforeResponse ( object sender , SessionEventArgs e )
0 commit comments