package Ġpl . al leg ro . tech . service mesh . envoy control . snapshot . resource . listeners Ċ Ċ import Ġcom . google . protobuf . BoolValue Ċ import Ġcom . google . protobuf . Duration Ċ import Ġcom . google . protobuf . Struct Ċ import Ġcom . google . protobuf . Value Ċ import Ġcom . google . protobuf . util . Dur ations Ċ import Ġio . envoy proxy . envoy . config . access log . v 3 . Access Log Ċ import Ġio . envoy proxy . envoy . config . access log . v 3 . Access Log Filter Ċ import Ġio . envoy proxy . envoy . config . access log . v 3 . Comparison Filter Ċ import Ġio . envoy proxy . envoy . config . access log . v 3 . StatusCode Filter Ċ import Ġio . envoy proxy . envoy . config . core . v 3 . Address Ċ import Ġio . envoy proxy . envoy . config . core . v 3 . Ag gregated Config Source Ċ import Ġio . envoy proxy . envoy . config . core . v 3 . Api Config Source Ċ import Ġio . envoy proxy . envoy . config . core . v 3 . ApiVersion Ċ import Ġio . envoy proxy . envoy . config . core . v 3 . Config Source Ċ import Ġio . envoy proxy . envoy . config . core . v 3 . Grpc Service Ċ import Ġio . envoy proxy . envoy . config . core . v 3 . Http 1 Protocol Options Ċ import Ġio . envoy proxy . envoy . config . core . v 3 . Http Protocol Options Ċ import Ġio . envoy proxy . envoy . config . core . v 3 . Runtime UInt 3 2 Ċ import Ġio . envoy proxy . envoy . config . core . v 3 . SocketAddress Ċ import Ġio . envoy proxy . envoy . config . core . v 3 . Transport Socket Ċ import Ġio . envoy proxy . envoy . config . listener . v 3 . Filter Ċ import Ġio . envoy proxy . envoy . config . listener . v 3 . FilterChain Ċ import Ġio . envoy proxy . envoy . config . listener . v 3 . FilterChain Match Ċ import Ġio . envoy proxy . envoy . config . listener . v 3 . Listener Ċ import Ġio . envoy proxy . envoy . config . listener . v 3 . Listener Filter Ċ import Ġio . envoy proxy . envoy . extensions . access _ log gers . file . v 3 . File Access Log Ċ import Ġio . envoy proxy . envoy . extensions . filters . network . http _ connection _ manager . v 3 . Http ConnectionManager Ċ import Ġio . envoy proxy . envoy . extensions . filters . network . http _ connection _ manager . v 3 . Http Filter Ċ import Ġio . envoy proxy . envoy . extensions . filters . network . http _ connection _ manager . v 3 . Rds Ċ import Ġio . envoy proxy . envoy . extensions . transport _ sockets . tls . v 3 . Common Tls Context Ċ import Ġio . envoy proxy . envoy . extensions . transport _ sockets . tls . v 3 . Down stream Tls Context Ċ import Ġio . envoy proxy . envoy . extensions . transport _ sockets . tls . v 3 . S ds Secret Config Ċ import Ġio . envoy proxy . envoy . extensions . transport _ sockets . tls . v 3 . Tls Parameters Ċ import Ġpl . al leg ro . tech . service mesh . envoy control . groups . Access Log Filter Settings Ċ import Ġpl . al leg ro . tech . service mesh . envoy control . groups . Communication Mode Ċ import Ġpl . al leg ro . tech . service mesh . envoy control . groups . Communication Mode . ADS Ċ import Ġpl . al leg ro . tech . service mesh . envoy control . groups . Communication Mode . X DS Ċ import Ġpl . al leg ro . tech . service mesh . envoy control . groups . Group Ċ import Ġpl . al leg ro . tech . service mesh . envoy control . groups . Listeners Config Ċ import Ġpl . al leg ro . tech . service mesh . envoy control . groups . Resource Version Ċ import Ġpl . al leg ro . tech . service mesh . envoy control . snapshot . Global Snapshot Ċ import Ġpl . al leg ro . tech . service mesh . envoy control . snapshot . Snapshot Properties Ċ import Ġpl . al leg ro . tech . service mesh . envoy control . snapshot . resource . listeners . filters . En voy Http Filters Ċ import Ġcom . google . protobuf . Any Ġas ĠProtobuf Any Ċ Ċ type alias ĠHttp Filter Factory Ġ= Ġ( node : ĠGroup , Ġsnapshot : ĠGlobal Snapshot ) Ġ-> ĠHttp Filter ? Ċ Ċ @ Suppress (" Magic Number ") Ċ class ĠEn voy Listeners Factory ( ĊĠĠĠ Ġsnapshot Properties : ĠSnapshot Properties , ĊĠĠĠ Ġenvoy Http Filters : ĠEn voy Http Filters Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġingress Filters : ĠList < Http Filter Factory > Ġ= Ġenvoy Http Filters . ingress Filters ĊĠĠĠ Ġprivate Ġval Ġe gress Filters : ĠList < Http Filter Factory > Ġ= Ġenvoy Http Filters . e gress Filters ĊĠĠĠ Ġprivate Ġval Ġlisteners Factory Properties Ġ= Ġsnapshot Properties . dynamic Listeners ĊĠĠĠ Ġprivate Ġval Ġlocal Service Properties Ġ= Ġsnapshot Properties . local Service ĊĠĠĠ Ġprivate Ġval Ġaccess Log Time Format Ġ= Ġstring Value ( listeners Factory Properties . http Filters . access Log . time Format ) ĊĠĠĠ Ġprivate Ġval Ġaccess Log Message Format Ġ= Ġstring Value ( listeners Factory Properties . http Filters . access Log . message Format ) ĊĠĠĠ Ġprivate Ġval Ġaccess LogLevel Ġ= Ġstring Value ( listeners Factory Properties . http Filters . access Log . level ) ĊĠĠĠ Ġprivate Ġval Ġaccess Log Logger Ġ= Ġstring Value ( listeners Factory Properties . http Filters . access Log . logger ) ĊĠĠĠ Ġprivate Ġval Ġe gress Rds Initial Fetch Timeout : ĠDuration Ġ= Ġduration InSeconds ( 2 0 ) ĊĠĠĠ Ġprivate Ġval Ġingress Rds Initial Fetch Timeout : ĠDuration Ġ= Ġduration InSeconds ( 3 0 ) ĊĊĠĠĠ Ġprivate Ġval Ġtls Properties Ġ= Ġsnapshot Properties . incoming Permissions . tls Authentication ĊĠĠĠ Ġprivate Ġval Ġrequire Client Certificate Ġ= ĠBool Value . of ( tls Properties . require Client Certificate ) ĊĊĠĠĠ Ġprivate Ġval Ġdownstream Tls Context Ġ= ĠDown stream Tls Context . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Require Client Certificate ( require Client Certificate ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Common Tls Context ( Common Tls Context . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Tls Params ( Tls Parameters . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Tls Minimum Protocol Version ( tls Properties . protocol . minimum Version ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Tls Maximum Protocol Version ( tls Properties . protocol . maximum Version ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addAll Cipher Su ites ( tls Properties . protocol . cipher Su ites ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Tls Certificate S ds Secret Configs ( S ds Secret Config . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setName ( tls Properties . tls Certificate Secret Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Validation Context S ds Secret Config ( S ds Secret Config . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setName ( tls Properties . validation Context Secret Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġval Ġdownstream Tls Transport Socket Ġ= ĠTransport Socket . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setName (" envoy . transport _ sockets . tls ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Typed Config ( Protobuf Any . pack ( down stream Tls Context . build ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġprivate Ġval Ġtls Inspector Filter Ġ= ĠListener Filter . newBuilder (). setName (" envoy . filters . listener . tls _ inspector "). build () ĊĊĠĠĠ Ġprivate Ġenum Ġclass ĠTransport Protocol ( ĊĠĠĠĠĠĠĠ Ġvalue : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġfilter Chain Match : ĠFilter Chain Match Ġ= ĠFilter Chain Match . newBuilder (). set Transport Protocol ( value ). build () ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠRAW _ BUFFER (" raw _ buffer "), ĊĠĠĠĠĠĠĠ ĠTLS (" tls ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġdefault Api Config Source V 2 : ĠApi Config Source Ġ= Ġapi Config Source ( ApiVersion . V 2 ) ĊĠĠĠ Ġval Ġdefault Api Config Source V 3 : ĠApi Config Source Ġ= Ġapi Config Source ( ApiVersion . V 3 ) ĊĊĠĠĠ Ġfun Ġapi Config Source ( apiVersion : ĠApi Version ): ĠApi Config Source Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠApi Config Source . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Api Type ( Api Config Source . Api Type . GRPC ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Transport ApiVersion ( apiVersion ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Grpc Services ( Grpc Service . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set En voy Grpc ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGr pc Service . En voy Grpc . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cluster Name (" envoy - control - xd s ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Listeners ( group : ĠGroup , Ġglobal Snapshot : ĠGlobal Snapshot ): ĠList < Listener > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( group . listeners Config Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠlistOf () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġlisteners Config : ĠList eners Config Ġ= Ġgroup . listeners Config !! ĊĠĠĠĠĠĠĠ Ġval Ġingress Listener Ġ= Ġcreate Ingress Listener ( group , Ġlisteners Config , Ġglobal Snapshot ) ĊĠĠĠĠĠĠĠ Ġval Ġe gress Listener Ġ= Ġcreate E gress Listener ( group , Ġlisteners Config , Ġglobal Snapshot ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( ingress Listener , Ġe gress Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate E gress Listener ( ĊĠĠĠĠĠĠĠ Ġgroup : ĠGroup , ĊĠĠĠĠĠĠĠ Ġlisteners Config : ĠList eners Config , ĊĠĠĠĠĠĠĠ Ġglobal Snapshot : ĠGlobal Snapshot ĊĠĠĠ Ġ): ĠListener Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠListener . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setName (" e gress _ listener ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Address ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAddress . newBuilder (). set SocketAddress ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSocket Address . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Port Value ( listeners Config . e gress Port ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Address ( listeners Config . e gress Host ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Filter Ch ains ( create E gress FilterChain ( group , Ġlisteners Config , Ġglobal Snapshot )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Ingress Listener ( ĊĠĠĠĠĠĠĠ Ġgroup : ĠGroup , ĊĠĠĠĠĠĠĠ Ġlisteners Config : ĠList eners Config , ĊĠĠĠĠĠĠĠ Ġglobal Snapshot : ĠGlobal Snapshot ĊĠĠĠ Ġ): ĠListener Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġin secure Ingress Chain Ġ= Ġcreate Ingress FilterChain ( group , Ġlisteners Config , Ġglobal Snapshot ) ĊĠĠĠĠĠĠĠ Ġval Ġsec ured Ingress Chain Ġ= Ġif Ġ( listeners Config . has Static Secrets Defined ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Sec ured Ingress FilterChain ( group , Ġlisteners Config , Ġglobal Snapshot ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= ĠListener . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setName (" ingress _ listener ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Address ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAddress . newBuilder (). set SocketAddress ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSocket Address . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Port Value ( listeners Config . ingress Port ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Address ( listeners Config . ingress Host ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( sec ured Ingress Chain Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . addListener Filters ( tls Inspector Filter ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠlistOf NotNull ( sec ured Ingress Chain , Ġin secure Ingress Chain ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlistener . add Filter Ch ains ( it . build ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġlistener . build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Ingress FilterChain ( ĊĠĠĠĠĠĠĠ Ġgroup : ĠGroup , ĊĠĠĠĠĠĠĠ Ġlisteners Config : ĠList eners Config , ĊĠĠĠĠĠĠĠ Ġglobal Snapshot : ĠGlobal Snapshot , ĊĠĠĠĠĠĠĠ Ġtransport Protocol : ĠTransport Protocol Ġ= ĠTransport Protocol . RAW _ BUFFER ĊĠĠĠ Ġ): ĠFilter Chain . Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstat Prefix Ġ= Ġwhen Ġ( transport Protocol ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransport Protocol . RAW _ BUFFER Ġ-> Ġ" ingress _ http " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransport Protocol . TLS Ġ-> Ġ" ingress _ https " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠFilter Chain . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set FilterChain Match ( transport Protocol . filter Chain Match ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Filters ( create Ingress Filter ( group , Ġlisteners Config , Ġglobal Snapshot , Ġstat Prefix )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Sec ured Ingress FilterChain ( ĊĠĠĠĠĠĠĠ Ġgroup : ĠGroup , ĊĠĠĠĠĠĠĠ Ġlisteners Config : ĠList eners Config , ĊĠĠĠĠĠĠĠ Ġglobal Snapshot : ĠGlobal Snapshot ĊĠĠĠ Ġ): ĠFilter Chain . Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfilter Chain Ġ= Ġcreate Ingress FilterChain ( group , Ġlisteners Config , Ġglobal Snapshot , ĠTransport Protocol . TLS ) ĊĠĠĠĠĠĠĠ Ġfilter Chain . set Transport Socket ( down stream Tls Transport Socket ) ĊĠĠĠĠĠĠĠ Ġreturn Ġfilter Chain ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate E gress FilterChain ( ĊĠĠĠĠĠĠĠ Ġgroup : ĠGroup , ĊĠĠĠĠĠĠĠ Ġlisteners Config : ĠList eners Config , ĊĠĠĠĠĠĠĠ Ġglobal Snapshot : ĠGlobal Snapshot ĊĠĠĠ Ġ): ĠFilter Chain Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFilter Chain . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Filters ( create E gress Filter ( group , Ġlisteners Config , Ġglobal Snapshot )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate E gress Filter ( ĊĠĠĠĠĠĠĠ Ġgroup : ĠGroup , ĊĠĠĠĠĠĠĠ Ġlisteners Config : ĠList eners Config , ĊĠĠĠĠĠĠĠ Ġglobal Snapshot : ĠGlobal Snapshot ĊĠĠĠ Ġ): ĠFilter Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconnection Manager Builder Ġ= ĠHttp ConnectionManager . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Stat Prefix (" e gress _ http ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Rds ( e gress Rds ( group . communication Mode , Ġgroup . version )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Http Protocol Options ( e gress Http 1 Protocol Options ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Preserve External RequestId ( listeners Config . preserve External RequestId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Generate RequestId ( bool Value ( listeners Config . generate RequestId )) ĊĊĠĠĠĠĠĠĠ Ġadd Http Filters ( connection Manager Builder , Ġe gress Filters , Ġgroup , Ġglobal Snapshot ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Filter ( connection Manager Builder , Ġ" e gress ", Ġlisteners Config ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Http Filters ( ĊĠĠĠĠĠĠĠ Ġconnection Manager Builder : ĠHttp ConnectionManager . Builder , ĊĠĠĠĠĠĠĠ Ġfilter Factories : ĠList < Http Filter Factory >, ĊĠĠĠĠĠĠĠ Ġgroup : ĠGroup , ĊĠĠĠĠĠĠĠ Ġglobal Snapshot : ĠGlobal Snapshot ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfilter Factories . forEach Ġ{ Ġfilter Factory Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= Ġfilter Factory ( group , Ġglobal Snapshot ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( filter Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection Manager Builder . add Http Filters ( filter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Filter ( ĊĠĠĠĠĠĠĠ Ġconnection Manager Builder : ĠHttp ConnectionManager . Builder , ĊĠĠĠĠĠĠĠ Ġaccess Log Type : ĠString , ĊĠĠĠĠĠĠĠ Ġlisteners Config : ĠList eners Config ĊĠĠĠ Ġ): ĠFilter Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( listeners Config . access Log Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnection Manager Builder . add Access Log ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccess Log ( listeners Config . access Log Path , Ġaccess Log Type , Ġlisteners Config . access Log Filter Settings ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠFilter . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setName (" envoy . filters . network . http _ connection _ manager ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Typed Config ( Protobuf Any . pack ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection Manager Builder . build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġe gress Http 1 Protocol Options (): ĠHttp 1 Protocol Options ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠHttp 1 Protocol Options . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Allow Absolute Url ( bool Value ( true )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġe gress Rds ( communication Mode : ĠCommunication Mode , Ġversion : ĠResource Version ): ĠR ds Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfig Source Ġ= ĠConfig Source . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setInitial Fetch Timeout ( e gress Rds Initial Fetch Timeout ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( version Ġ== ĠResource Version . V 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Source . set Resource ApiVersion ( ApiVersion . V 3 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( communication Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠA DS Ġ-> Ġconfig Source . set Ads ( Ag gregated Config Source . getDefaultInstance ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠX DS Ġ-> Ġset X ds Config Source Version ( version , Ġconfig Source ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠR ds . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Route Config Name (" default _ routes ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Config Source ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Source . build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Ingress Filter ( ĊĠĠĠĠĠĠĠ Ġgroup : ĠGroup , ĊĠĠĠĠĠĠĠ Ġlisteners Config : ĠList eners Config , ĊĠĠĠĠĠĠĠ Ġglobal Snapshot : ĠGlobal Snapshot , ĊĠĠĠĠĠĠĠ Ġstat Prefix : ĠString ĊĠĠĠ Ġ): ĠFilter Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconnection Idle Timeout Ġ= Ġgroup . proxy Settings . incoming . timeout Policy . connection Idle Timeout ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠDur ations . from Millis ( local Service Properties . connection Idle Timeout . to Millis ()) ĊĠĠĠĠĠĠĠ Ġval Ġhttp Protocol Options Ġ= ĠHttp Protocol Options . newBuilder (). set Idle Timeout ( connection Idle Timeout ). build () ĊĠĠĠĠĠĠĠ Ġval Ġconnection Manager Builder Ġ= ĠHttp ConnectionManager . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Stat Prefix ( stat Prefix ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Use Remote Address ( bool Value ( listeners Config . use Remote Address )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Generate RequestId ( bool Value ( listeners Config . generate RequestId )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Preserve External RequestId ( listeners Config . preserve External RequestId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Delayed Close Timeout ( duration InSeconds ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Common Http Protocol Options ( http Protocol Options ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Codec Type ( Http ConnectionManager . Codec Type . AUTO ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Rds ( ingress Rds ( group . communication Mode , Ġgroup . version )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Http Protocol Options ( ingress Http 1 Protocol Options ( group . serviceName )) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( listeners Config . use Remote Address ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnection Manager Builder . set X ff Num Trusted H ops ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlisteners Factory Properties . http Filters . ingress X ff Num Trusted H ops ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadd Http Filters ( connection Manager Builder , Ġingress Filters , Ġgroup , Ġglobal Snapshot ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Filter ( connection Manager Builder , Ġ" ingress ", Ġlisteners Config ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġingress Http 1 Protocol Options ( serviceName : ĠString ): ĠHttp 1 Protocol Options ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠHttp 1 Protocol Options . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Accept Http 1 0 ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setDefault Host For Http 1 0 ( serviceName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġingress Rds ( communication Mode : ĠCommunication Mode , Ġversion : ĠResource Version ): ĠR ds Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfig Source Ġ= ĠConfig Source . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setInitial Fetch Timeout ( ingress Rds Initial Fetch Timeout ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( version Ġ== ĠResource Version . V 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Source . set Resource ApiVersion ( ApiVersion . V 3 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( communication Mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠA DS Ġ-> Ġconfig Source . set Ads ( Ag gregated Config Source . getDefaultInstance ()) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠX DS Ġ-> Ġset X ds Config Source Version ( version , Ġconfig Source ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠR ds . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Route Config Name (" ingress _ sec ured _ routes ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Config Source ( config Source . build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset X ds Config Source Version ( version : ĠResource Version , Ġconfig Source : ĠConfig Source . Builder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( version Ġ== ĠResource Version . V 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Source . api Config Source Ġ= Ġdefault Api Config Source V 3 ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Source . api Config Source Ġ= Ġdefault Api Config Source V 2 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠAccess Log . Builder . build From Settings ( settings : ĠAccess Log Filter Settings . StatusCode Filter Settings ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . set Filter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAccess Log Filter . newBuilder (). set StatusCode Filter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStatusCode Filter . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Comparison ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠComparison Filter . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Op ( settings . comparison Operator ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setValue ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRuntime UInt 3 2 . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set DefaultValue ( settings . comparison Code ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Runtime Key (" access _ log _ filter _ http _ code ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġaccess Log ( ĊĠĠĠĠĠĠĠ Ġaccess Log Path : ĠString , ĊĠĠĠĠĠĠĠ Ġaccess Log Type : ĠString , ĊĠĠĠĠĠĠĠ Ġaccess Log Filter Settings : ĠAccess Log Filter Settings ? ĊĠĠĠ Ġ): ĠAccess Log Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAccess Log . newBuilder (). setName (" envoy . file _ access _ log ") ĊĊĠĠĠĠĠĠĠ Ġaccess Log Filter Settings ?. let Ġ{ Ġsettings Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsettings . statusCode Filter Settings ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . build From Settings ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder . set Typed Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProtobuf Any . pack ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile Access Log . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Path ( access Log Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Json Format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠStruct . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Fields (" time ", Ġaccess Log Time Format ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Fields (" message ", Ġaccess Log Message Format ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Fields (" level ", Ġaccess LogLevel ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Fields (" logger ", Ġaccess Log Logger ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Fields (" access _ log _ type ", Ġstring Value ( access Log Type )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Fields (" request _ protocol ", Ġstring Value ("% PROTOCOL % ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Fields (" request _ method ", Ġstring Value ("% REQ (: METHOD )% ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Fields (" request _ authority ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstring Value ("% REQ (: authority )% ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Fields (" request _ path ", Ġstring Value ("% REQ (: PATH )% ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Fields (" response _ code ", Ġstring Value ("% RESPONSE _ CODE % ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Fields (" response _ flags ", Ġstring Value ("% RESPONSE _ FLAGS % ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Fields (" bytes _ received ", Ġstring Value ("% BYTES _ RECE IVED % ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Fields (" bytes _ sent ", Ġstring Value ("% BYTES _ SENT % ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Fields (" duration _ ms ", Ġstring Value ("% DURATION % ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Fields (" down stream _ remote _ address ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstring Value ("% DOWN STREAM _ REMOTE _ ADDRESS % ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Fields (" upstream _ host ", Ġstring Value ("% UP STREAM _ HOST % ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put Fields (" user _ agent ", Ġstring Value ("% REQ ( USER - AGENT )% ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbool Value ( value : ĠBoolean ) Ġ= ĠBool Value . newBuilder (). setValue ( value ). build () ĊĊĠĠĠ Ġprivate Ġfun Ġduration InSeconds ( value : ĠLong ) Ġ= ĠDuration . newBuilder (). set Seconds ( value ). build () ĊĊĠĠĠ Ġprivate Ġfun Ġstring Value ( value : ĠString ) Ġ= ĠValue . newBuilder (). set StringValue ( value ). build () Ċ } Ċ