FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
caddy/caddyhttp/httpserver/path.go at master · CUjamin/caddy · GitHub
CUjamin
/
caddy
Public
forked from
caddyserver/caddy
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
caddy
/
caddyhttp
/
httpserver
/
path.go
Copy path
More file actions
More file actions
Latest commit
History
History
History
67 lines (59 loc) · 1.95 KB
Breadcrumbs
caddy
/
caddyhttp
/
httpserver
/
path.go
Copy path
File metadata and controls
67 lines (59 loc) · 1.95 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// Copyright 2015 Light Code Labs, LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package
httpserver
import
(
"net/http"
"path"
"strings"
)
// Path represents a URI path. It should usually be
// set to the value of a request path.
type
Path
string
// Matches checks to see if base matches p. The correct
// usage of this method sets p as the request path, and
// base as a Caddyfile (user-defined) rule path.
//
// Path matching will probably not always be a direct
// comparison; this method assures that paths can be
// easily and consistently matched.
//
// Multiple slashes are collapsed/merged. See issue #1859.
func
(
p
Path
)
Matches
(
base
string
)
bool
{
if
base
==
"/"
||
base
==
""
{
return
true
}
// sanitize the paths for comparison, very important
// (slightly lossy if the base path requires multiple
// consecutive forward slashes, since those will be merged)
pHasTrailingSlash
:=
strings
.
HasSuffix
(
string
(
p
),
"/"
)
baseHasTrailingSlash
:=
strings
.
HasSuffix
(
base
,
"/"
)
p
=
Path
(
path
.
Clean
(
string
(
p
)))
base
=
path
.
Clean
(
base
)
if
pHasTrailingSlash
{
p
+=
"/"
}
if
baseHasTrailingSlash
{
base
+=
"/"
}
if
CaseSensitivePath
{
return
strings
.
HasPrefix
(
string
(
p
),
base
)
}
return
strings
.
HasPrefix
(
strings
.
ToLower
(
string
(
p
)),
strings
.
ToLower
(
base
))
}
// PathMatcher is a Path RequestMatcher.
type
PathMatcher
string
// Match satisfies RequestMatcher.
func
(
p
PathMatcher
)
Match
(
r
*
http.
Request
)
bool
{
return
Path
(
r
.
URL
.
Path
).
Matches
(
string
(
p
))
}
Back
|
FazBrowse Home
|
New Git URL