(r *http.Request, allowedOrigins []*regexp.Regexp)
| 181 | } |
| 182 | |
| 183 | func isAllowedOrigin(r *http.Request, allowedOrigins []*regexp.Regexp) bool { |
| 184 | origin := r.Header.Get("origin") |
| 185 | if origin == "" { |
| 186 | return true |
| 187 | } |
| 188 | |
| 189 | u, err := url.Parse(origin) |
| 190 | if err != nil { |
| 191 | return false |
| 192 | } |
| 193 | |
| 194 | if strings.EqualFold(u.Host, r.Host) { |
| 195 | return true |
| 196 | } |
| 197 | |
| 198 | for _, allowedOrigin := range allowedOrigins { |
| 199 | if allowedOrigin.MatchString(strings.ToLower(u.Hostname())) { |
| 200 | return true |
| 201 | } |
| 202 | } |
| 203 | |
| 204 | return false |
| 205 | } |
| 206 | |
| 207 | func newUpgrader(allowedWebSocketOrigins []string) *websocket.Upgrader { |
| 208 | compiledAllowedOrigins := compileAllowedWebSocketOrigins(allowedWebSocketOrigins) |
no outgoing calls
searching dependent graphs…