wireguardCreate.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #!/usr/bin/env python
  2. import os
  3. # TODO: récupérer email et id depuis STDIN.
  4. keyDir = "/etc/wireguard/keys"
  5. configDir = "/etc/wireguard"
  6. # IO:
  7. # (mail)
  8. # (dossier clés)
  9. # (dossier config)
  10. # 1- Créer clé pv pb
  11. pvKeyDest = "/etc/wireguard/keys/ohian.key"
  12. pubKeyDest = "/etc/wireguard/keys/ohian.public"
  13. genKeyCommand = "wg genkey | tee {0} | wg pubkey > {1}".format(pvKeyDest, pubKeyDest)
  14. genKeyCommand = "wg genkey | tee /etc/wireguard/keys/ohian.key | wg pubkey > /etc/wireguard/keys/ohian.public"
  15. os.system(genKeyCommand)
  16. # 2- Créer fichier interface
  17. ifaceName = "wg10"
  18. ifaceAddrv4 = "10.0.0.10"
  19. ifaceFileName = configDir + "/" + ifaceName + ".conf"
  20. ifaceConfig = '''
  21. auto {0}
  22. iface {1} inet static
  23. address {2}
  24. netmask 255.255.255.0
  25. pre-up ip link add $IFACE type wireguard
  26. pre-up wg setconf $IFACE /etc/wireguard/$IFACE.conf
  27. post-down ip link del $IFACE
  28. '''.format(ifaceName, ifaceName, ifaceAddrv4)
  29. ifaceFile = os.open(ifaceFileName, "w")
  30. ifaceFile.write(ifaceStr)
  31. ifaceFile.close()
  32. # 3- Créer config wg
  33. #
  34. wgFileName = ""
  35. wgPeerPubKey = ""
  36. wgPrivKey = ""
  37. wgConfig = '''
  38. [Interface]
  39. PrivateKey = {0}
  40. ListenPort = 51820
  41. [Peer]
  42. PublicKey = {1}
  43. AllowedIPs = 0.0.0.0/24
  44. '''.format(wgPrivPubKey, wgPeerPubKey)
  45. wgFile = os.open(wgFileName, "w")
  46. wgFile.write(wgConfig)
  47. wgFile.close()
  48. # 4- Envoyer mail/afficher instructions