Changeset 705 in code for trunk/config/config.go


Ignore:
Timestamp:
Nov 17, 2021, 2:07:58 PM (4 years ago)
Author:
contact
Message:

Add per-user IP addresses

The new upstream-user-ip directive allows bouncer operators to
assign one IP address per user.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/config/config.go

    r694 r705  
    5353        MaxUserNetworks int
    5454        MultiUpstream   bool
     55        UpstreamUserIPs []*net.IPNet
    5556}
    5657
     
    151152                        }
    152153                        srv.MultiUpstream = v
     154                case "upstream-user-ip":
     155                        if len(srv.UpstreamUserIPs) > 0 {
     156                                return nil, fmt.Errorf("directive %q: can only be specified once", d.Name)
     157                        }
     158                        var hasIPv4, hasIPv6 bool
     159                        for _, s := range d.Params {
     160                                _, n, err := net.ParseCIDR(s)
     161                                if err != nil {
     162                                        return nil, fmt.Errorf("directive %q: failed to parse CIDR: %v", d.Name, err)
     163                                }
     164                                if n.IP.To4() == nil {
     165                                        if hasIPv6 {
     166                                                return nil, fmt.Errorf("directive %q: found two IPv6 CIDRs", d.Name)
     167                                        }
     168                                        hasIPv6 = true
     169                                } else {
     170                                        if hasIPv4 {
     171                                                return nil, fmt.Errorf("directive %q: found two IPv4 CIDRs", d.Name)
     172                                        }
     173                                        hasIPv4 = true
     174                                }
     175                                srv.UpstreamUserIPs = append(srv.UpstreamUserIPs, n)
     176                        }
    153177                default:
    154178                        return nil, fmt.Errorf("unknown directive %q", d.Name)
Note: See TracChangeset for help on using the changeset viewer.