
    Hf%                     v    d dl Z d dlZd dlZd dl dZdZdZdZdZdZ	dZ
d	ZdZd
Z G d d      Z G d d      Zy)    N)*z
ipp-client631udpipptcpmdns5353zsamba-clientc                   L    e Zd Zd Zd ZddZddZd Zd Zd Z	d	 Z
d
 Zd Zy)	FirewallDc                    	 ddl m}  |       | _        | j                  j                  s!t	        d       d | _        d | _        d| _        y | j                         }|r/| j                  j                         j                  |      | _        nd | _        d| _        t	        d       y # t        t        j                  j                  f$ r d | _        d | _        d| _        Y y w xY w)Nr   )FirewallClientz/FirewallD seems to be installed but not runningFTz#Using /org/fedoraproject/FirewallD1)firewall.clientr   _fw	connected
debugprint_zonerunning_get_active_zoneconfiggetZoneByNameImportErrordbus
exceptionsDBusException)selfr   	zone_names      4/usr/share/system-config-printer/firewallsettings.py__init__zFirewallD.__init__*   s    	!6%(DH88%%MN!
$--0I!XX__.<<iH
!
DL=>T__::; 	!DHDJ DL	!s   AB& AB& &8C! C!c                     t        | j                  j                         j                               }|st	        d       y t        |      dk(  r|d   S t	        d       |d   S )NzFirewallD: no changeable zone   r   z/FirewallD returned more zones, taking first one)listr   getActiveZoneskeysr   len)r   zoness     r   r   zFirewallD._get_active_zone@   sZ    TXX,,.335678%[A8O IJ8O    Nc                 *   	 t        | dt        | j                  j                                      | j                  rt        d       |r || j                         | j                  S # t        $ r 	 | j
                  j                         | _        t        d       |r || j                         nQ# t        j                  j                  t        t        f$ r&}d | _        t        d       |r ||       Y d }~nd }~ww xY wY | j                  S w xY w)N in _get_fw_data: _fw_data is Using cached firewall dataFirewall data obtainedException examining firewall)r   repr_fw_datagetServicesAttributeErrorr   getSettingsr   r   r   
ValueError)r   reply_handlererror_handleres       r   _get_fw_datazFirewallD._get_fw_dataP   s    	&tDMM$=$=$?@B C}}89 !4==1 }}  
	&	& $

 6 6 945 !4==1OO11>:N & $:; !1%	& }}
	&s<   AA* *	D4>B32D3(DC<7D<DDDc                 N    |r| j                  ||       y | j                          y N)r5   r   r2   r3   s      r   readzFirewallD.readf   s&    },.  r&   c                     	 | j                   r%| j                   j                  | j                         | j                  j	                          y # t
        j                  j                  $ r t                Y y w xY wr7   )	r   updater-   r   reloadr   r   r   nonfatalExceptionr   s    r   writezFirewallD.writem   sQ    	!zz

!!4==1HHOO,, 	! 	!s   AA 'A87A8c                    | j                         sy ddlm} dd l}	 | j                  j	                  |       y # |$ rJ}|j
                  |j                  j                  u rn ||j
                  |j                        Y d }~y d }~ww xY w)Nr   )FirewallError)	r5   firewall.errorsrA   r-   
addServicecodeerrorsALREADY_ENABLEDmsg)r   servicerA   firewallr4   s        r   add_servicezFirewallD.add_serviceu   sq      #1	4MM$$g. 	4vv888#QVVQUU33 	4s   9 BA BBc                     | j                         syt        | j                  j                         v xs& t        t
        g| j                  j                         v S NT)r5   IPP_CLIENT_SERVICEr-   r.   IPP_CLIENT_PORTIPP_CLIENT_PROTOCOLgetPortsr>   s    r   check_ipp_client_allowedz"FirewallD.check_ipp_client_allowed   M      #"dmm&?&?&BB S!459O9O9RR	Tr&   c                     | j                         syt        | j                  j                         v xs& t        t
        g| j                  j                         v S rL   )r5   IPP_SERVER_SERVICEr-   r.   IPP_SERVER_PORTIPP_SERVER_PROTOCOLrP   r>   s    r   check_ipp_server_allowedz"FirewallD.check_ipp_server_allowed   rR   r&   c                 d    | j                         syt        | j                  j                         v S rL   )r5   SAMBA_CLIENT_SERVICEr-   r.   r>   s    r   check_samba_client_allowedz$FirewallD.check_samba_client_allowed   s)      #$(A(A(DDEr&   c                     | j                         syt        | j                  j                         v xs& t        t
        g| j                  j                         v S rL   )r5   MDNS_SERVICEr-   r.   	MDNS_PORTMDNS_PROTOCOLrP   r>   s    r   check_mdns_allowedzFirewallD.check_mdns_allowed   sL      # 9 9 << G=)T]]-C-C-FF	Hr&   NN)__name__
__module____qualname__r   r   r5   r9   r?   rJ   rQ   rW   rZ   r_    r&   r   r   r   )   s8    !, ,!!4TTFHr&   r   c                   `    e Zd ZdZdZd ZddZddZd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zy)SystemConfigFirewallz!org.fedoraproject.Config.Firewallz"/org/fedoraproject/Config/Firewallc                 R   	 t        j                         }|j                  | j                  | j                        }t        j
                  || j                        | _        t        d       y # t         j                  j                  $ r t        d       d | _        d| _
        Y y w xY w)NzUsing system-config-firewallzNo firewall r`   )r   	SystemBus
get_objectDBUS_INTERFACE	DBUS_PATH	Interfacer   r   r   r   r-   )r   busobjs      r   r   zSystemConfigFirewall.__init__   s}    	)..#C..$"5"5t~~FC~~sD,?,?@DH67,, 	)'DH(DM	)s   A*A- -6B&%B&Nc                 x   	 t        | dt        | j                               | j                  r4t        d       || j                  S | j                  | j                         | j                  S # t        $ r 	 |r| j
                  j                  ||       Y y | j
                  j                         }t        j                  |      | _        nZ# t        j                  j                  t        t        f$ r/}d| _        |rt        d       | j                  |       Y d }~nd }~ww xY wY | j                  S w xY w)Nr(   r)   r2   r3   r`   r+   )r   r,   r-   _client_reply_handlerr/   r   r9   jsonloadsr   r   r   r1   _client_error_handler)r   r2   r3   pr4   s        r   r5   z!SystemConfigFirewall._get_fw_data   s   	3tDMM24 5}}89 (==(**DMM:  }}  	33 HHMM1> " @HHMM$ $

AOO11>:N 3 ,  >?..2	3 }}	3sH   AA1 
A1 1	D9;C4CD9(D(9%D#D9#D((D98D9c                     |r6|| _         || _        | j                  | j                  | j                         y | j                          y )Nrp   )rq   rt   r5   r2   r3   r8   s      r   r9   zSystemConfigFirewall.read   sH    )6D&)6D&T-?-?-1-?-?  A  r&   c                     	 t        j                  |      | _        t        d       | j                  | j                         y # t        $ r}| j	                  |       Y d }~y d }~ww xY w)Nr*   )rr   rs   r-   r1   r3   r   rq   )r   resultr4   s      r   r2   z"SystemConfigFirewall.reply_handler   sW    	 JJ/DM
 	,-""DMM2  	"	s   A 	A'A""A'c                 r    t        d       | j                  r| j                  |       y t        d|z         y )Nz Exception fetching firewall datazException: %r)r   rt   )r   excs     r   r3   z"SystemConfigFirewall.error_handler   s/    67%%&&,#-.r&   c                     	 | j                   j                  t        j                  | j                  d                y #  Y y xY w)Nr   )r   r?   rr   dumpsr-   r>   s    r   r?   zSystemConfigFirewall.write   s3    	HHNNDJJa(89:	s	   ;> Ac                     | j                         \  }}|yt        |      j                  t        |            }t        |      dk7  S )NTr   )r5   setintersectionr$   )r   searchargsfilenameisects        r   _check_any_allowedz'SystemConfigFirewall._check_any_allowed   sD    ,,/xDV))3:6E{ar&   c                     	 | j                   \  }}|y |j                  d|z          ||f| _         y # t        $ r | j                         \  }}Y ?w xY wN
--service=)r-   r/   r5   append)r   rH   r   r   s       r   rJ   z SystemConfigFirewall.add_service   s`    	4#}}T8 V\G+,x(  	4#003T8	4s   2 AAc                 d    | j                  t        dt        dt        dt        z   g            S Nz--port=:r   )r   r~   rN   rO   rM   r>   s    r   rQ   z-SystemConfigFirewall.check_ipp_client_allowed   :    &&)8:M.O-9<N-N-P )Q R 	Rr&   c                 d    | j                  t        dt        dt        dt        z   g            S r   )r   r~   rU   rV   rT   r>   s    r   rW   z-SystemConfigFirewall.check_ipp_server_allowed  r   r&   c                 F    | j                  t        dt        z   g            S r   )r   r~   rY   r>   s    r   rZ   z/SystemConfigFirewall.check_samba_client_allowed  s!    &&\<P-P,Q(RSSr&   c                 d    | j                  t        dt        dt        dt        z   g            S r   )r   r~   r]   r^   r\   r>   s    r   r_   z'SystemConfigFirewall.check_mdns_allowed	  s8    &&5>.O-9L-H-J )K L 	Lr&   r`   )ra   rb   rc   rj   rk   r   r5   r9   r2   r3   r?   r   rJ   rQ   rW   rZ   r_   rd   r&   r   rf   rf      sL    8N4I	)6!3/ )R
R
TLr&   rf   )r   r   rr   debugrM   rN   rO   rT   rU   rV   r\   r]   r^   rY   r   rf   rd   r&   r   <module>r      sg   0    #    	% sH sHpkL kLr&   