
    Kc%                         d dl Z d dlZd dlZd dlT 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dS )    N)*z
ipp-client631udpipptcpmdns5353zsamba-clientc                   N    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dS )	FirewallDc                    	 ddl m}  |            | _        | j        j        s&t	          d           d | _        d | _        d| _        d S |                                 }|r2| j                                        	                    |          | _        nd | _        d| _        t	          d           d S # t          t          j        j        f$ r d | _        d | _        d| _        Y d S 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66666%~((DH8% MNNN!
$--00I "!X__..<<iHH

!
DL=>>>>>T_:; 	! 	! 	!DHDJ DLLLL	!s   AB0 	A%B0 00C$#C$c                     t          | j                                                                                  }|st	          d           d S 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@   sy    TX,,..335566 	78884%[[A8O IJJJ8O    Nc                    	 t          | dt          | j                                                             | j        r!t          d           |r || j                   n# t          $ r 	 | 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 nw xY w| j        S )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   sA   	&tDM$=$=$?$?@@@B C C C} 28999  2!M4=111 
	& 
	& 
	&	& $
 6 6 9 94555  2!M4=111O1>:N & & & $:;;;  &!M1%%%	&
	& }s<   A A# #
D.?B.-D.!C<#C72D7C<<DDc                 b    |r|                      ||           d S |                                   d S N)r5   r   r2   r3   s      r   readzFirewallD.readf   sK     	!},. . . . .      r&   c                     	 | j         r| j                             | j                   | j                                         d S # t
          j        j        $ r t                       Y d S w xY wr7   )	r   updater-   r   reloadr   r   r   nonfatalExceptionr   s    r   writezFirewallD.writem   sv    	!z 2
!!4=111HOO, 	! 	! 	!      	!s   ?A "A)(A)c                     |                                  sd S ddlm} dd l}	 | j                            |           d S # |$ r5}|j        |j        j        u rn ||j        |j                  Y d }~d S 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   s      ## 	F111111	4M$$g..... 	4 	4 	4v888#mQVQU333 	4s   > A8*A33A8c                     |                                  sdS t          | j                                        v p&t          t
          g| 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   Y      ## 	4"dm&?&?&B&BB S!459O9O9R9RR	Tr&   c                     |                                  sdS t          | j                                        v p&t          t
          g| 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                 n    |                                  sdS t          | j                                        v S rL   )r5   SAMBA_CLIENT_SERVICEr-   r.   r>   s    r   check_samba_client_allowedz$FirewallD.check_samba_client_allowed   s4      ## 	4$(A(A(D(DDEr&   c                     |                                  sdS t          | j                                        v p&t          t
          g| j                                        v S rL   )r5   MDNS_SERVICEr-   r.   	MDNS_PORTMDNS_PROTOCOLrP   r>   s    r   check_mdns_allowedzFirewallD.check_mdns_allowed   sX      ## 	4 9 9 < << G=)T]-C-C-F-FF	Hr&   NN)__name__
__module____qualname__r   r   r5   r9   r?   rJ   rQ   rW   rZ   r_    r&   r   r   r   )   s        ! ! !,      ,! ! ! !! ! !4 4 4T T TT T TF F FH H H H Hr&   r   c                   b    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dS )SystemConfigFirewallz!org.fedoraproject.Config.Firewallz"/org/fedoraproject/Config/Firewallc                 :   	 t          j                    }|                    | j        | j                  }t          j        || j                  | _        t          d           d S # t           j        j	        $ r! t          d           d | _        d| _
        Y d S 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..$"5t~FFC~sD,?@@DH677777, 	) 	) 	)'''DH(DMMMM	)s   A!A% %1BBNc                 R   	 t          | dt          | j                             | j        r2t          d           || j        S |                     | j                   n# t          $ r 	 |r| j                            ||           Y d S | j                                        }t          j        |          | _        n[# t          j
        j        t          t          f$ r7}d| _        |r$t          d           |                     |           Y d }~nd }~ww xY wY nw xY w| j        S )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   sV   	3tDM2224 5 5 5} ;8999 (=(**DM::: 	3 	3 	33  HMM1> " @ @ @FFHMM$$ $
AO1>:N 3 3 3 ,  3 >???..222	3	3 }sH   AA" A" "
D-C2C D!D"-DDDDDc                     |r1|| _         || _        |                     | j        | j                   d S |                                  d S )Nrp   )rq   rt   r5   r2   r3   r8   s      r   r9   zSystemConfigFirewall.read   sk     	!)6D&)6D&T-?-1-?  A A A A A      r&   c                     	 t          j        |          | _        n-# t          $ r }|                     |           Y d }~d S d }~ww xY wt          d           |                     | j                   d S )Nr*   )rr   rs   r-   r1   r3   r   rq   )r   resultr4   s      r   r2   z"SystemConfigFirewall.reply_handler   s    	 J//DMM 	 	 	"""FFFFF	 	,---""DM22222s    
AAAc                     t          d           | j        r|                     |           d S t          d|z             d S )Nz Exception fetching firewall datazException: %r)r   rt   )r   excs     r   r3   z"SystemConfigFirewall.error_handler   sO    6777% 	/&&,,,,,#-.....r&   c                     	 | j                             t          j        | j        d                              d S #  Y d S xY w)Nr   )r   r?   rr   dumpsr-   r>   s    r   r?   zSystemConfigFirewall.write   sB    	HNNDJa(899:::::	DDs	   7; A c                     |                                  \  }}|dS t          |                              t          |                    }t          |          dk    S )NTr   )r5   setintersectionr$   )r   searchargsfilenameisects        r   _check_any_allowedz'SystemConfigFirewall._check_any_allowed   sR    ,,//xDDV))3::66E{{ar&   c                     	 | j         \  }}n'# t          $ r |                                 \  }}Y nw xY w|d S |                    d|z              ||f| _         d S N
--service=)r-   r/   r5   append)r   rH   r   r   s       r   rJ   z SystemConfigFirewall.add_service   s{    	4#}T88 	4 	4 	4#0033T888	4VV\G+,,,x(s   
 !11c                 z    |                      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   O    &&)8:M:M.O-9<N-N-P )Q )Q R R 	Rr&   c                 z    |                      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                 X    |                      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(RSSSr&   c                 z    |                      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	  sL    &&5>YY.O-9L-H-J )K )K L 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      s        8N4I	) 	) 	)   6! ! ! !3 3 3/ / /       ) ) )R R R
R R R
T T TL L L L Lr&   rf   )r   r   rr   debugrM   rN   rO   rT   rU   rV   r\   r]   r^   rY   r   rf   rd   r&   r   <module>r      s   0       #    	% sH sH sH sH sH sH sH sHpkL kL kL kL kL kL kL kL kL kLr&   