summaryrefslogtreecommitdiff
path: root/skel/multistrap-hooks/completion_80_rootscript_net.sh
blob: 06abf36f9fe8e3b1277e1433819eaa9a500667f4 (plain)
  1. #!/bin/sh
  2. #
  3. # completion_80_rootscript_net.sh
  4. # Copyright 2016 Jonas Smedegaard <dr@jones.dk>
  5. # License: GNU Public License version 3 or newer
  6. #
  7. # multistrap completion hook adding root script to setup network
  8. #
  9. # Enhances: multistrap
  10. set -eu
  11. fs="$1"
  12. # FIXME: do this far more flexible!
  13. cat <<'EOF' > "$fs/root/init-network-settings"
  14. #!/bin/sh
  15. set -eu
  16. set -x
  17. address=${1:-}
  18. apn=${2:-}
  19. # Setup main ethernet connection as internal
  20. if [ -n "$address" ]; then
  21.     nmcli connection add type ethernet con-name eth0-static ifname eth0 ip4 $address ipv4.method manual autoconnect on connection.zone internal
  22. else
  23.     nmcli connection add type ethernet con-name eth0-dhcp ifname eth0 autoconnect on connection.zone internal
  24. fi
  25. # Setup any other ethernet connection as external
  26. nmcli connection add type ethernet con-name dhcp ifname '*' autoconnect on connection.zone external
  27. # Setup WWAN connection
  28. # Known working APN values:
  29. # * data.tre.dk
  30. # * internet
  31. # See /usr/share/mobile-broadband-provider-info/serviceproviders.xml
  32. if [ -n "$apn" ]; then
  33.     nmcli connection add ifname '' autoconnect yes type gsm apn $apn connection.id gsm-$apn-noauth connection.zone external gsm.password-flags 1
  34. fi
  35. # Done with non-firewall setup
  36. if [ ! -x /usr/sbin/firewalld ]; then
  37.     echo 'Network settings applied succesfully!'
  38.     exit 0
  39. fi
  40. # Permit mosh from anywhere:
  41. firewall-cmd --permanent --zone external --add-service mosh
  42. firewall-cmd --permanent --zone internal --add-service mosh
  43. firewall-cmd --reload
  44. # setup dynamic-IP subnet
  45. incfile="/etc/dhcp/dhcpd.d/80-shared-network-10-10-0.conf"
  46. cfgfile="/etc/dhcp/dhcpd.conf"
  47. line="#include \"$incfile\";"
  48. mkdir -p "/etc/dhcp/dhcpd.d"
  49. cat <<'EOf' > "$incfile"
  50. # Dynamic-IP subnet in private class A net
  51. shared-network 10-10-0 {
  52.     option domain-search "internal.localnet";
  53.     option domain-name-servers 10.10.0.1;
  54.     subnet 10.10.0.0 netmask 255.255.255.0 {
  55.         option routers 10.10.0.1;
  56.         range 10.10.0.100 10.10.0.254;
  57.     }
  58. }
  59. EOf
  60. grep -q "$line" "$cfgfile" || echo "$line" >> "$cfgfile"
  61. echo 'Network settings applied succesfully!'
  62. EOF
  63. chmod a+"$fs/root/init-network-settings"