
    >Tf`                         d dl mZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlT dZ G d d	e
          Z G d
 de
          Z G d de
          Z G d de
          Z G d de
          ZdS )    )ValidationError)models)reverse)gettext_lazy)PrimaryModel)*)	IKEPolicyIKEProposalIPSecPolicyIPSecProfileIPSecProposalc                      e Zd Z ej         ed          dd          Z ej        de          Z ej         ed          e	          Z
 ej         ed          ed	          Z ej         ed
          e ed                    Z ej         ed          dd ed                    ZdZ G d d          Zd Zd ZdS )r
   named   Tverbose_name
max_lengthuniquezauthentication methodr   choiceszencryption algorithmzauthentication algorithmr   r   blankgroupzDiffie-Hellman group ID)r   r   	help_textzSA lifetimez*Security association lifetime (in seconds)r   r   nullr   )authentication_methodencryption_algorithmauthentication_algorithmr   sa_lifetimec                   >    e Zd ZdZ ed          Z ed          ZdS )IKEProposal.Metar   zIKE proposalzIKE proposalsN__name__
__module____qualname__ordering_r   verbose_name_plural     6/var/www/html/netbox-4.1.3/netbox/vpn/models/crypto.pyMetar"   9   s4        q((a00r,   r.   c                     | j         S Nr#   selfs    r-   __str__zIKEProposal.__str__>   
    yr,   c                 0    t          d| j        g          S )Nzvpn:ikeproposalargsr   pkr1   s    r-   get_absolute_urlzIKEProposal.get_absolute_urlA       (y9999r,   N)r%   r&   r'   r   	CharFieldr)   r   AuthenticationMethodChoicesr   EncryptionAlgorithmChoicesr   AuthenticationAlgorithmChoicesr   PositiveSmallIntegerFieldDHGroupChoicesr   PositiveIntegerFieldr    clone_fieldsr.   r3   r:   r+   r,   r-   r
   r
      s}       6QvYY  D
 -F,-+   ,6+Q-..*    0v/Q122.     
 -F,QwZZ!-..  E
 .&-Q}%%!@AA	  KL1 1 1 1 1 1 1 1
  : : : : :r,   r
   c                   l    e Zd Z ej         ed          dd          Z ej         ed          eej	                  Z
 ej         ed          ed          Z ej        d	d
 ed                    Z ej         ed          d          ZdZdZ G d d          Zd Zd Z fdZ xZS )r	   r   r   Tr   version)r   r   defaultmoder   vpn.IKEProposalike_policies	proposalstorelated_namer   zpre-shared key)r   r   )rE   rG   rJ   )rH   c                   >    e Zd ZdZ ed          Z ed          ZdS )IKEPolicy.Metar#   z
IKE policyzIKE policiesNr$   r+   r,   r-   r.   rO   f   s2        qa//r,   r.   c                     | j         S r0   r#   r1   s    r-   r3   zIKEPolicy.__str__k   r4   r,   c                 0    t          d| j        g          S )Nzvpn:ikepolicyr6   r8   r1   s    r-   r:   zIKEPolicy.get_absolute_urln   s    dgY7777r,   c                 ,   t                                                       | j        t          j        k    r#| j        st          t          d                    | j        t          j        k    r#| j        rt          t          d                    d S d S )Nz)Mode is required for selected IKE versionz,Mode cannot be used for selected IKE version)	supercleanrE   IKEVersionChoices	VERSION_1rG   r   r)   	VERSION_2r2   	__class__s    r-   rT   zIKEPolicy.cleanq   s     <,666ty6!!$O"P"PQQQ <,666496!!$R"S"STTT 7666r,   )r%   r&   r'   r   r<   r)   r   r@   rU   rW   rE   IKEModeChoicesrG   ManyToManyFieldrJ   	TextFieldpreshared_keyrC   prerequisite_modelsr.   r3   r:   rT   __classcell__rY   s   @r-   r	   r	   E   ss       6QvYY  D
 /f.Qy\\!!+  G
 6QvYY  D
 '&#Q{^^  I
 %F$Q'((  M
L0 0 0 0 0 0 0 0
  8 8 8	U 	U 	U 	U 	U 	U 	U 	U 	Ur,   r	   c                       e Zd Z ej         ed          dd          Z ej         ed          ed          Z ej         ed          e	d          Z
 ej         ed          dd ed	          
          Z ej         ed          dd ed          
          ZdZ G d d          Zd Zd Z fdZ xZS )r   r   r   Tr   
encryptionr   authenticationzSA lifetime (seconds)z'Security association lifetime (seconds)r   zSA lifetime (KB)z,Security association lifetime (in kilobytes))r   r   sa_lifetime_secondssa_lifetime_datac                   >    e Zd ZdZ ed          Z ed          ZdS )IPSecProposal.Metar#   zIPSec proposalzIPSec proposalsNr$   r+   r,   r-   r.   rg      s6        q)**a 122r,   r.   c                     | j         S r0   r#   r1   s    r-   r3   zIPSecProposal.__str__   r4   r,   c                 0    t          d| j        g          S )Nzvpn:ipsecproposalr6   r8   r1   s    r-   r:   zIPSecProposal.get_absolute_url   s    *$';;;;r,   c                     t                                                       | j        s#| j        st	          t          d                    d S d S )Nz:Encryption and/or authentication algorithm must be defined)rS   rT   r   r   r   r)   rX   s    r-   rT   zIPSecProposal.clean   s\     ( 	c1N 	c!!$`"a"abbb	c 	c 	c 	cr,   )r%   r&   r'   r   r<   r)   r   r>   r   r?   r   rB   rd   re   rC   r.   r3   r:   rT   r_   r`   s   @r-   r   r      s       6QvYY  D
 ,6+Q|__*  
  0v/Q'((.     
 6&5Q.//!=>>	   3v2Q)**!BCC	  L3 3 3 3 3 3 3 3
  < < <c c c c c c c c cr,   r   c            	           e Zd Z ej         ed          dd          Z ej        dd ed                    Z ej	         ed	          e
dd ed
                    ZdZdZ G d d          Zd Zd ZdS )r   r   r   Tr   vpn.IPSecProposalipsec_policiesrJ   rK   z	PFS groupz0Diffie-Hellman group for Perfect Forward Secrecy)r   r   r   r   r   )rJ   	pfs_group)rl   c                   >    e Zd ZdZ ed          Z ed          ZdS )IPSecPolicy.Metar#   zIPSec policyzIPSec policiesNr$   r+   r,   r-   r.   rp      s5        q((a 011r,   r.   c                     | j         S r0   r#   r1   s    r-   r3   zIPSecPolicy.__str__   r4   r,   c                 0    t          d| j        g          S )Nzvpn:ipsecpolicyr6   r8   r1   s    r-   r:   zIPSecPolicy.get_absolute_url   r;   r,   N)r%   r&   r'   r   r<   r)   r   r[   rJ   r@   rA   rn   rC   r^   r.   r3   r:   r+   r,   r-   r   r      s        6QvYY  D
 '&%Q{^^  I
 10Q{^^!FGG  IL2 2 2 2 2 2 2 2
  : : : : :r,   r   c                   
   e Zd Z ej         ed          dd          Z ej         ed          e          Z ej	        dej
        d	          Z ej	        d
ej
        d	          ZdZdZ G d d          Zd Zd ZdS )r   r   r   Tr   rG   r   vpn.IKEPolicyipsec_profiles)rL   	on_deleterM   vpn.IPSecPolicy)rG   
ike_policyipsec_policy)rt   rw   c                   >    e Zd ZdZ ed          Z ed          ZdS )IPSecProfile.Metar#   zIPSec profilezIPSec profilesNr$   r+   r,   r-   r.   r{      s5        q))a 011r,   r.   c                     | j         S r0   r#   r1   s    r-   r3   zIPSecProfile.__str__   r4   r,   c                 0    t          d| j        g          S )Nzvpn:ipsecprofiler6   r8   r1   s    r-   r:   zIPSecProfile.get_absolute_url   s    )	::::r,   N)r%   r&   r'   r   r<   r)   r   IPSecModeChoicesrG   
ForeignKeyPROTECTrx   ry   rC   r^   r.   r3   r:   r+   r,   r-   r   r      s       6QvYY  D
 6QvYY   D #".%  J
 %6$.%  LL
2 2 2 2 2 2 2 2
  ; ; ; ; ;r,   r   N)django.core.exceptionsr   	django.dbr   django.urlsr   django.utils.translationr   r)   netbox.modelsr   vpn.choices__all__r
   r	   r   r   r   r+   r,   r-   <module>r      sb   2 2 2 2 2 2             6 6 6 6 6 6 & & & & & &    ,: ,: ,: ,: ,:, ,: ,: ,:^5U 5U 5U 5U 5U 5U 5U 5Ux1c 1c 1c 1c 1cL 1c 1c 1ch#: #: #: #: #:, #: #: #:L&; &; &; &; &;< &; &; &; &; &;r,   