package kubernetes import ( "github.com/coredns/coredns/middleware/pkg/dnsutil" "github.com/coredns/coredns/request" "github.com/miekg/dns" ) type recordRequest struct { // The named port from the kubernetes DNS spec, this is the service part (think _https) from a well formed // SRV record. port string // The protocol is usually _udp or _tcp (if set), and comes from the protocol part of a well formed // SRV record. protocol string endpoint string service string namespace string // A each name can be for a pod or a service, here we track what we've seen. This value is true for // pods and false for services. If we ever need to extend this well use a typed value. podOrSvc string zone string } // parseRequest parses the qname to find all the elements we need for querying k8s. func (k *Kubernetes) parseRequest(state request.Request) (r recordRequest, err error) { // 3 Possible cases: // o SRV Request: _port._protocol.service.namespace.type.zone // o A Request (endpoint): endpoint.service.namespace.type.zone // o A Request (service): service.namespace.type.zone // Federations are handled in the federation middleware. base, _ := dnsutil.TrimZone(state.Name(), state.Zone) segs := dns.SplitDomainName(base) r.zone = state.Zone offset := 0 if state.QType() == dns.TypeSRV { // The kubernetes peer-finder expects queries with empty port and service to resolve // If neither is specified, treat it as a wildcard if len(segs) == 3 { r.port = "*" r.service = "*" offset = 0 } else { if len(segs) != 5 { return r, errInvalidRequest } // This is a SRV style request, get first two elements as port and // protocol, stripping leading underscores if present. if segs[0][0] == '_' { r.port = segs[0][1:] } else { r.port = segs[0] if !wildcard(r.port) { return r, errInvalidRequest } } if segs[1][0] == '_' { r.protocol = segs[1][1:] if r.protocol != "tcp" && r.protocol != "udp" { return r, errInvalidRequest } } else { r.protocol = segs[1] if !wildcard(r.protocol) { return r, errInvalidRequest } } if r.port == "" || r.protocol == "" { return r, errInvalidRequest } offset = 2 } } if (state.QType() == dns.TypeA || state.QType() == dns.TypeAAAA) && len(segs) == 4 { // This is an endpoint A/AAAA record request. Get first element as endpoint. r.endpoint = segs[0] offset = 1 } if len(segs) == (offset + 3) { r.service = segs[offset] r.namespace = segs[offset+1] r.podOrSvc = segs[offset+2] return r, nil } return r, errInvalidRequest } // String return a string representation of r, it just returns all fields concatenated with dots. // This is mostly used in tests. func (r recordRequest) String() string { s := r.port s += "." + r.protocol s += "." + r.endpoint s += "." + r.service s += "." + r.namespace s += "." + r.podOrSvc s += "." + r.zone return s } lue='debugger-dev'>debugger-dev Unnamed repository; edit this file 'description' to name the repository.
aboutsummaryrefslogtreecommitdiff
path: root/integration/bunjs-only-snippets/solid-dom-fixtures (unfollow)
AgeCommit message (Collapse)AuthorFilesLines
2022-06-15wip direct streamsGravatar Jarred Sumner 24-398/+2276
2022-06-12ArrayBufferSink works and it's good.Gravatar Jarred Sumner 26-170/+2054
2022-06-12Fix build issueGravatar Jarred Sumner 2-0/+6
2022-06-12Delete broken submoduleGravatar Jarred Sumner 1-0/+0
2022-06-10Update Dockerfile.baseGravatar Jarred Sumner 1-1/+1
2022-06-10Update WebKitGravatar Jarred Sumner 1-0/+0
2022-06-10Update event_loop.zigGravatar Jarred Sumner 1-0/+1
2022-06-10Missing errno on linuxGravatar Jarred Sumner 1-3/+1
2022-06-10Update js_parser.zigGravatar Jarred Sumner 1-21/+200
2022-06-10Update MakefileGravatar Jarred Sumner 1-4/+4
2022-06-10wip fix linux buildGravatar Jarred Sumner 1-9/+11
2022-06-10Don't show generic crash info when given invalid bunfig.tomlGravatar Jarred Sumner 1-0/+4
2022-06-10Update logger.zigGravatar Jarred Sumner 1-0/+4
2022-06-10Show tracingGravatar Jarred Sumner 1-1/+1
2022-06-10Update bunfig.zigGravatar Jarred Sumner 1-0/+1
2022-06-10Update jest.zigGravatar Jarred Sumner 1-6/+9
2022-06-09Update bun.d.tsGravatar Jarred Sumner 1-2/+5
2022-06-09Add typesGravatar Jarred Sumner 1-2/+32
2022-06-09`new Response(stream).arrayBuffer()` + 3 moreGravatar Jarred Sumner 16-39/+478
- `new Response(stream).arrayBuffer()` - `new Response(stream).json()` - `new Response(stream).text()` - `new Response(stream).blob()`
2022-06-09fix some memory leaks with stringsGravatar Jarred Sumner 4-28/+45
2022-06-09Support console.log(myBigInt)Gravatar Jarred Sumner 1-1/+6
2022-06-09Fix defaultProps with JSX optimizationGravatar Jarred Sumner 6-34/+73
2022-06-09small perf improvements to encodingGravatar Jarred Sumner 1-43/+37
2022-06-07Update event_loop.zigGravatar Jarred Sumner 1-1/+2