-- This is an example site configuration for Gluon v2016.2+
--
-- Take a look at the documentation located at
-- http://gluon.readthedocs.org/ for details.
--
-- This configuration will not work as it. You're required to make
-- community specific changes to it!
{
  -- Used for generated hostnames, e.g. freifunk-abcdef123456. (optional)
  -- hostname_prefix = 'freifunk-',

  -- Name of the community.
  site_name = 'Freifunk Entenhausen',

  -- Shorthand of the community.
  site_code = 'ffxx',

  -- Prefixes used within the mesh.
  -- prefix6 is required, prefix4 can be omitted if next_node.ip4
  -- is not set.
  prefix4 = '10.xxx.0.0/20',
  prefix6 = 'fdxx:xxxx:xxxx::/64',

  -- Timezone of your community.
  -- See http://wiki.openwrt.org/doc/uci/system#time_zones
  timezone = 'CET-1CEST,M3.5.0,M10.5.0/3',

  -- List of NTP servers in your community.
  -- Must be reachable using IPv6!
  ntp_servers = {'1.ntp.services.ffxx'},

  -- Wireless regulatory domain of your community.
  regdom = 'DE',

  -- Wireless configuration for 2.4 GHz interfaces.
  wifi24 = {
    -- Wireless channel.
    channel = 1,

    -- List of supported wifi rates (optional)
    -- Example removes 802.11b compatibility for better performance
    supported_rates = {6000, 9000, 12000, 18000, 24000, 36000, 48000, 54000},

    -- List of basic wifi rates (optional, required if supported_rates is set)
    -- Example removes 802.11b compatibility for better performance
    basic_rate = {6000, 9000, 18000, 36000, 54000},

    -- ESSID used for client network.
    ap = {
      ssid = 'entenhausen.freifunk.net',
      -- disabled = true, (optional)
    },

    mesh = {
      -- Adjust these values!
      id = 'ffxx-mesh',
      mcast_rate = 12000,
      -- disabled = true, (optional)
    },
  },

  -- Wireless configuration for 5 GHz interfaces.
  -- This should be equal to the 2.4 GHz variant, except
  -- for channel.
  wifi5 = {
    channel = 44,
    ap = {
      ssid = 'entenhausen.freifunk.net',
    },
    mesh = {
      id = 'ffxx-mesh',
      mcast_rate = 12000,
    },
  },

  -- The next node feature allows clients to always reach the node it is
  -- connected to using a known IP address.
  next_node = {
    -- anycast IPs of all nodes
    ip4 = '10.xxx.0.xxx',
    ip6 = 'fdxx:xxxx:xxxx::xxxx',

    -- anycast MAC of all nodes
    mac = 'xe:xx:xx:xx:xx:xx',
  },

  -- Options specific to routing protocols (optional)
  -- mesh = {
    -- Options specific to the batman-adv routing protocol (optional)
    -- batman_adv = {
      -- Gateway selection class (optional)
      -- The default class 20 is based on the link quality (TQ) only,
      -- class 1 is calculated from both the TQ and the announced bandwidth
      -- gw_sel_class = 1,
    -- },
  -- },

  -- Refer to http://fastd.readthedocs.org/en/latest/ to better understand
  -- what these options do.
  fastd_mesh_vpn = {
    -- List of crypto-methods to use.
    methods = {'salsa2012+umac'},
    -- enabled = true,
    -- configurable = true,
    -- syslog_level = 'warn',

    mtu = 1280,
    groups = {
      backbone = {
        -- Limit number of connected peers to reduce bandwidth.
        limit = 1,

        -- List of peers.
        peers = {
          peer1 = {
            key = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',

            -- This is a list, so you might add multiple entries.
            remotes = {'ipv4 "xxx.somehost.invalid" port xxxxxx'},
          },
          peer2 = {
            key = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
            -- You can also omit the ipv4 to allow both connection via ipv4 and ipv6
            remotes = {'"xxx.somehost2.invalid" port xxxxx'},
          },
        },

        -- Optional: nested peer groups
        -- groups = {
        --   backbone_sub = {
        --     ...
        --   },
        --   ...
        -- },
      },
      -- Optional: additional peer groups, possibly with other limits
      -- backbone2 = {
      --   ...
      -- },
    },

    bandwidth_limit = {
      -- The bandwidth limit can be enabled by default here.
      enabled = false,

      -- Default upload limit (kbit/s).
      egress = 200,

      -- Default download limit (kbit/s).
      ingress = 3000,
    },
  },

  autoupdater = {
    -- Default branch. Don't forget to set GLUON_BRANCH when building!
    branch = 'stable',

    -- List of branches. You may define multiple branches.
    branches = {
      stable = {
        name = 'stable',

        -- List of mirrors to fetch images from. IPv6 required!
        mirrors = {'http://1.updates.services.ffhl/stable/sysupgrade'},

        -- Number of good signatures required.
        -- Have multiple maintainers sign your build and only
        -- accept it when a sufficient number of them have
        -- signed it.
        good_signatures = 2,

        -- List of public keys of maintainers.
        pubkeys = {
                'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', -- Alice
                'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', -- Bob
                'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', -- Mary
        },
      },
    },
  },

  -- Node roles
  -- roles = {
  --   default = 'node',
  --   list = {
  --     'node',
  --     'test',
  --     'backbone',
  --     'service',
  --   },
  -- },

  -- Skip setup mode (config mode) on first boot
  -- setup_mode = {
  --  skip = true,
  -- },

  -- config_mode = {
    -- Show/hide the altitude field
    -- geo_location = {
      -- show_altitude = false,
    -- },
    -- define if the contact field is obligatory (optional)
    -- owner = {
      -- obligatory = true
    -- },
  -- },

}