crypto.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. from netbox.api.fields import ChoiceField, SerializedPKRelatedField
  2. from netbox.api.serializers import PrimaryModelSerializer
  3. from vpn.choices import *
  4. from vpn.models import IKEPolicy, IKEProposal, IPSecPolicy, IPSecProfile, IPSecProposal
  5. __all__ = (
  6. 'IKEPolicySerializer',
  7. 'IKEProposalSerializer',
  8. 'IPSecPolicySerializer',
  9. 'IPSecProfileSerializer',
  10. 'IPSecProposalSerializer',
  11. )
  12. class IKEProposalSerializer(PrimaryModelSerializer):
  13. authentication_method = ChoiceField(
  14. choices=AuthenticationMethodChoices
  15. )
  16. encryption_algorithm = ChoiceField(
  17. choices=EncryptionAlgorithmChoices
  18. )
  19. authentication_algorithm = ChoiceField(
  20. choices=AuthenticationAlgorithmChoices,
  21. required=False
  22. )
  23. group = ChoiceField(
  24. choices=DHGroupChoices
  25. )
  26. class Meta:
  27. model = IKEProposal
  28. fields = (
  29. 'id', 'url', 'display_url', 'display', 'name', 'description', 'authentication_method',
  30. 'encryption_algorithm', 'authentication_algorithm', 'group', 'sa_lifetime', 'owner', 'comments', 'tags',
  31. 'custom_fields', 'created', 'last_updated',
  32. )
  33. brief_fields = ('id', 'url', 'display', 'name', 'description')
  34. class IKEPolicySerializer(PrimaryModelSerializer):
  35. version = ChoiceField(
  36. choices=IKEVersionChoices
  37. )
  38. mode = ChoiceField(
  39. choices=IKEModeChoices,
  40. required=False
  41. )
  42. proposals = SerializedPKRelatedField(
  43. queryset=IKEProposal.objects.all(),
  44. serializer=IKEProposalSerializer,
  45. nested=True,
  46. required=False,
  47. many=True
  48. )
  49. class Meta:
  50. model = IKEPolicy
  51. fields = (
  52. 'id', 'url', 'display_url', 'display', 'name', 'description', 'version', 'mode', 'proposals',
  53. 'preshared_key', 'owner', 'comments', 'tags', 'custom_fields', 'created', 'last_updated',
  54. )
  55. brief_fields = ('id', 'url', 'display', 'name', 'description')
  56. class IPSecProposalSerializer(PrimaryModelSerializer):
  57. encryption_algorithm = ChoiceField(
  58. choices=EncryptionAlgorithmChoices,
  59. required=False
  60. )
  61. authentication_algorithm = ChoiceField(
  62. choices=AuthenticationAlgorithmChoices,
  63. required=False
  64. )
  65. class Meta:
  66. model = IPSecProposal
  67. fields = (
  68. 'id', 'url', 'display_url', 'display', 'name', 'description', 'encryption_algorithm',
  69. 'authentication_algorithm', 'sa_lifetime_seconds', 'sa_lifetime_data', 'owner', 'comments', 'tags',
  70. 'custom_fields', 'created', 'last_updated',
  71. )
  72. brief_fields = ('id', 'url', 'display', 'name', 'description')
  73. class IPSecPolicySerializer(PrimaryModelSerializer):
  74. proposals = SerializedPKRelatedField(
  75. queryset=IPSecProposal.objects.all(),
  76. serializer=IPSecProposalSerializer,
  77. nested=True,
  78. required=False,
  79. many=True
  80. )
  81. pfs_group = ChoiceField(
  82. choices=DHGroupChoices,
  83. required=False
  84. )
  85. class Meta:
  86. model = IPSecPolicy
  87. fields = (
  88. 'id', 'url', 'display_url', 'display', 'name', 'description', 'proposals', 'pfs_group', 'owner', 'comments',
  89. 'tags', 'custom_fields', 'created', 'last_updated',
  90. )
  91. brief_fields = ('id', 'url', 'display', 'name', 'description')
  92. class IPSecProfileSerializer(PrimaryModelSerializer):
  93. mode = ChoiceField(
  94. choices=IPSecModeChoices
  95. )
  96. ike_policy = IKEPolicySerializer(
  97. nested=True
  98. )
  99. ipsec_policy = IPSecPolicySerializer(
  100. nested=True
  101. )
  102. class Meta:
  103. model = IPSecProfile
  104. fields = (
  105. 'id', 'url', 'display_url', 'display', 'name', 'description', 'mode', 'ike_policy', 'ipsec_policy', 'owner',
  106. 'comments', 'tags', 'custom_fields', 'created', 'last_updated',
  107. )
  108. brief_fields = ('id', 'url', 'display', 'name', 'description')