| 307 | } |
| 308 | |
| 309 | func getLoginIPArea(ipValue string) string { |
| 310 | parsedIP := net.ParseIP(ipValue) |
| 311 | if parsedIP == nil { |
| 312 | return loginIPUnknownArea |
| 313 | } |
| 314 | if parsedIP.IsLoopback() { |
| 315 | return loginIPLocalArea |
| 316 | } |
| 317 | if parsedIP.IsPrivate() || parsedIP.IsLinkLocalUnicast() { |
| 318 | return loginIPPrivateArea |
| 319 | } |
| 320 | if parsedIP.To4() == nil { |
| 321 | return loginIPUnknownArea |
| 322 | } |
| 323 | |
| 324 | qqWry, err := ip.NewQQwry() |
| 325 | if err != nil { |
| 326 | server.Logger().Errorf("load qqwry data failed: %s", err) |
| 327 | return loginIPUnknownArea |
| 328 | } |
| 329 | if len(qqWry.Data) == 0 { |
| 330 | return loginIPUnknownArea |
| 331 | } |
| 332 | res := qqWry.Find(ipValue) |
| 333 | if strings.TrimSpace(res.Area) == "" { |
| 334 | return loginIPUnknownArea |
| 335 | } |
| 336 | return res.Area |
| 337 | } |
| 338 | |
| 339 | func (h *Handler) AggregateResourcePermissions(name string) (map[string][]string, error) { |
| 340 | userRoleBindings, err := h.rolebindingService.GetRoleBindingBySubject(v1Role.Subject{ |