
    d                     |    d dl Z d dlmc mZ d dlmc mc mZ d dlmc mc mZ d dl	m
Z
 d dlmZ  G d de      Zy)    N)OSUtilError)FreeBSDOSUtilc                        e Zd ZdZ fdZd Zd Zd ZddZd Z	ddZ
dd	Z fd
Zd Zd Zd Zd ZddZddZd ZddZd Zd ZddZddZddZ xZS ) NSBSDOSUtilNc                    t         t        |           | j                  	 dd l}|j                  j                         | _        g }d}t        j                  |      \  }}|j                  d      D ]K  }|dk(  r nD|d d }dj                  |      dz   }t        j                  |      \  }}|j                  |       M || j                  _        |j                  j                  | j                         y y # t
        $ r t        d      w xY w)	Nr   z2Python DNS resolver not available. Cannot proceed!z:getconf /usr/Firewall/ConfigFiles/dns Servers | tail -n +2
 zgrep '{}' /etc/hostsz | awk '{print $1}')superr   __init__resolverdns.resolverImportErrorr   Resolver	shellutilrun_get_outputsplitformatappendnameserversoverride_system_resolver)	selfdnsserverscmdretoutputserverip	__class__s	           E/usr/lib/python3/dist-packages/azurelinuxagent/common/osutil/nsbsd.pyr   zNSBSDOSUtil.__init__   s   k4)+== X#  LL113DMGNC#2237KC ,,t, #R<,33F;>SS#2237Rr"# )0DMM%LL11$--@) !
  X!"VWWXs   C7 7Dc                     | j                  ddd|g       | j                  dg       | j                  ddg       | j                  ddg       | j                  dd	g       y )
Nz/usr/Firewall/sbin/setconfz/usr/Firewall/System/global
SystemNamez/usr/Firewall/sbin/enlogz/usr/Firewall/sbin/enproxyz-uz/usr/Firewall/sbin/enslz/usr/Firewall/sbin/ennetworkz-f)_run_command_without_raisingr   hostnames     r!   set_hostnamezNSBSDOSUtil.set_hostname6   sm    )))+H,X`a	c))+E*FG))+G*NO))+Dd*KL))+I4*PQ    c                 0    t        j                  dd      S )Nz/usr/Firewall/sbin/enserviceFchk_errr   runr   s    r!   restart_ssh_servicezNSBSDOSUtil.restart_ssh_service>   s    }};UKKr(   c                    |rdnd}t        j                  dd       t        j                  dj                  |      d       t        j                  dd       t        j                  dj                  |rd	             y d
             y )N01z4setconf /usr/Firewall/ConfigFiles/system SSH State 1Fr*   z8setconf /usr/Firewall/ConfigFiles/system SSH Password {}	enservicez.{0} SSH password-based authentication methods.DisabledEnabled)r   r-   r   loggerinfo)r   disable_passwordoptions      r!   	conf_sshdzNSBSDOSUtil.conf_sshdA   sr    (cL#	%PWWX^_#	%k51DV*:JJ	L@IJ	Lr(   c                 .    t        j                  d       y)z5
        Create user account with 'username'
        zUser creation disabledNr6   warn)r   username
expirationcomments       r!   useraddzNSBSDOSUtil.useraddM   s     	,-r(   c                 .    t        j                  d       y )NzUser deletion disabledr<   )r   r>   s     r!   del_accountzNSBSDOSUtil.del_accountS   s    ,-r(   c                 .    t        j                  d       y )NzSudo is not enabledr<   )r   r>   nopasswdremoves       r!   conf_sudoerzNSBSDOSUtil.conf_sudoerV   s    )*r(   c                 f    | j                  dd|gd       g ddgg}| j                  |dd       y )	Nz/usr/Firewall/sbin/fwpasswdz-pz Failed to set password for admin)err_msg)setconfz"/usr/Firewall/ConfigFiles/webadminACLanyenslF)	log_errorcontinue_on_error) _run_command_raising_OSUtilError&_run_multiple_commands_without_raising)r   r>   passwordcrypt_idsalt_lencommandss         r!   chpasswdzNSBSDOSUtil.chpasswdY   sK    --/LdT\.]6X 	. 	Z TV\U]^33Haf3gr(   c                 @    |\  }}}t         t        |   dd||g       y)z'
        Deploy authorized_key
        adminz"/usr/Firewall/.ssh/authorized_keysN)r   r   deploy_ssh_pubkey)r   r>   pubkeypath
thumbprintvaluer    s         r!   rY   zNSBSDOSUtil.deploy_ssh_pubkeya   s1     #)j% 	k4274XZdfk3l	nr(   c                 .    t        j                  d       y )NzRoot password deletion disabledr<   r.   s    r!   del_root_passwordzNSBSDOSUtil.del_root_passwordk   s    56r(   c                 2    t        j                  dd       y )Nz"/usr/Firewall/sbin/nstart dhclientFr*   r,   r.   s    r!   start_dhcp_servicezNSBSDOSUtil.start_dhcp_servicen   s    :EJr(   c                 2    t        j                  dd       y )Nz!/usr/Firewall/sbin/nstop dhclientFr*   r,   r.   s    r!   stop_dhcp_servicezNSBSDOSUtil.stop_dhcp_serviceq   s    95Ir(   c                     d}d}t         j                  j                  |      rt        j                  |d      }| j                  |      S )Nr	   z/var/run/dhclient.pidascii)encoding)osr[   isfilefileutil	read_file_text_to_pid_list)r   r   pidfiles      r!   get_dhcp_pidzNSBSDOSUtil.get_dhcp_pidt   s?    )77>>'"$$Ww?C%%c**r(   c                      y N )r   r+   s     r!   	eject_dvdzNSBSDOSUtil.eject_dvd|   s    r(   c                 2    t        j                  dd       y )N	ennetworkFr*   r,   )r   ifnameretrieswaits       r!   
restart_ifzNSBSDOSUtil.restart_if   s    k51r(   c                      y ro   rp   r%   s     r!   set_dhcp_hostnamezNSBSDOSUtil.set_dhcp_hostname   s    r(   c                      y)Nr   rp   )r   dst_ips     r!   get_firewall_dropped_packetsz(NSBSDOSUtil.get_firewall_dropped_packets   s    r(   c                      yNr	   rp   r.   s    r!   get_firewall_will_waitz"NSBSDOSUtil.get_firewall_will_wait       r(   c                      y ro   rp   )r   rules     r!   _delete_rulezNSBSDOSUtil._delete_rule   s    r(   c                      y)NTrp   )r   r{   uidrv   s       r!   remove_firewallzNSBSDOSUtil.remove_firewall   s    r(   c                      y)N)TTrp   )r   r{   r   s      r!   enable_firewallzNSBSDOSUtil.enable_firewall   s    r(   c                      yr~   rp   )r   rv   s     r!   get_firewall_listzNSBSDOSUtil.get_firewall_list   r   r(   )NN)FF)   
   )T)NNNro   )NNr	   )r	   )__name__
__module____qualname__r   r   r'   r/   r:   rA   rC   rG   rV   rY   r_   ra   rc   rm   rq   rw   ry   r|   r   r   r   r   r   __classcell__)r    s   @r!   r   r      s~    HA2RL
L..+hn7KJ+2r(   r   )rg   azurelinuxagent.common.loggercommonr6   %azurelinuxagent.common.utils.fileutilutilsri   &azurelinuxagent.common.utils.shellutilr    azurelinuxagent.common.exceptionr   %azurelinuxagent.common.osutil.freebsdr   r   rp   r(   r!   <module>r      s0   " 
 . . 8 8 : : 8 ?C- Cr(   