12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- package rewrite
- import (
- "strconv"
- "imuslab.com/zoraxy/mod/dynamicproxy/permissionpolicy"
- )
- func SplitUpDownStreamHeaders(rewriteOptions *HeaderRewriteOptions) ([][]string, [][]string) {
- if len(rewriteOptions.UserDefinedHeaders) == 0 && rewriteOptions.HSTSMaxAge == 0 && !rewriteOptions.EnablePermissionPolicyHeader {
-
- return [][]string{}, [][]string{}
- }
-
-
- upstreamHeaders := make([][]string, len(rewriteOptions.UserDefinedHeaders))
- downstreamHeaders := make([][]string, len(rewriteOptions.UserDefinedHeaders)+2)
- upstreamHeaderCounter := 0
- downstreamHeaderCounter := 0
-
- for _, customHeader := range rewriteOptions.UserDefinedHeaders {
- thisHeaderSet := make([]string, 2)
- thisHeaderSet[0] = customHeader.Key
- thisHeaderSet[1] = customHeader.Value
- if customHeader.IsRemove {
-
- thisHeaderSet[1] = ""
- }
-
- if customHeader.Direction == HeaderDirection_ZoraxyToUpstream {
- upstreamHeaders[upstreamHeaderCounter] = thisHeaderSet
- upstreamHeaderCounter++
- } else if customHeader.Direction == HeaderDirection_ZoraxyToDownstream {
- downstreamHeaders[downstreamHeaderCounter] = thisHeaderSet
- downstreamHeaderCounter++
- }
- }
-
- if rewriteOptions.HSTSMaxAge > 0 {
- if rewriteOptions.HSTSIncludeSubdomains {
-
- downstreamHeaders[downstreamHeaderCounter] = []string{"Strict-Transport-Security", "max-age=" + strconv.Itoa(int(rewriteOptions.HSTSMaxAge)) + "; includeSubdomains"}
- } else {
- downstreamHeaders[downstreamHeaderCounter] = []string{"Strict-Transport-Security", "max-age=" + strconv.Itoa(int(rewriteOptions.HSTSMaxAge))}
- }
- downstreamHeaderCounter++
- }
-
- if rewriteOptions.EnablePermissionPolicyHeader {
- var usingPermissionPolicy *permissionpolicy.PermissionsPolicy
- if rewriteOptions.PermissionPolicy != nil {
-
- usingPermissionPolicy = rewriteOptions.PermissionPolicy
- } else {
-
- usingPermissionPolicy = permissionpolicy.GetDefaultPermissionPolicy()
- }
- downstreamHeaders[downstreamHeaderCounter] = usingPermissionPolicy.ToKeyValueHeader()
- downstreamHeaderCounter++
- }
- return upstreamHeaders, downstreamHeaders
- }
|