
    KcRW                     T   d dl Z d dlZ ej        e j        e j                   d dlZd dlZd dlmZ d dlm	Z	 d dl
Z
d dlZd dlZd dlZd dlZd dlT d dlT d dlZd dlmZ 	 ej        Zn# e$ r dZY nw xY w G d d	e	j                  Z G d
 de          Zedk    rde
j        d<    ej                    Zd Zd Z e d            e            Z!e!"                    de           e!"                    de           e!"                    de           e#                                 dS dS )    N)domain	localedir)GObject)Gtk)*)GtkGUI_remote_anyc                       e Zd Zd ZdS )_UnobtrusiveButtonc                 ,   t          j        j        | fi | |                     t           j        j                   |                                 }|                                }|                    d           |	                    dd|z  z              d S )NTz&<span size="small" underline="single" zcolor="#0000ee">%s</span>)
r   Button__init__
set_reliefReliefStyleNONE	get_childget_textset_use_markup
set_markup)selfargslabeltexts       2/usr/share/system-config-printer/serversettings.pyr   z_UnobtrusiveButton.__init__1   s    
T**T***-...!!~~  d### 05<= 	> 	> 	> 	> 	>    N)__name__
__module____qualname__r    r   r   r   r   0   s#        > > > > >r   r   c                       e Zd Zej        j        ddfej        j        ddfej        j        ddfdZdZddZd 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 )ServerSettingsNr   )settings-applieddialog-canceledproblems-clicked/admin/conf/cupsd.confc                    t           j                             |            t          j        ||          | _        || _        || _        |                     dg dit          j	                   t          t          d                    }| j                            |ddd           |                    d	| j                   |                                 | j                            d
| j                   i | _        | j        | _        | j        | _        | j        | _        | j        | _        | j                                        }|                    t:          j        j                   |                      |d| j!                   | j        "                                D ]}| j        #                    |           t;          j$        dt;          j%                    d          }| j        &                    |           | '                                 | (                                 |r| j        )                    |           | *                                 | j                                         d S )N)host
encryptionServerSettingsDialog)r)   chkServerBrowsechkServerSharechkServerShareAnychkServerRemoteAdminchkServerAllowCancelAllchkServerLogDebughboxServerBrowserbPreserveJobFilesrbPreserveJobHistoryrbPreserveJobNonetvBrowseServersframeBrowseServersbtAdvServerAddbtAdvServerRemove)r   z	Problems?)r   Fr   clickedresponsechanged )r   )+r   r   authconn
Connectioncupsconn_host_parent
getWidgetsconfigPACKAGEr   _r0   pack_endconnectproblems_clickedshowr)   on_responsehandler_idsdialogr4   browse_treeviewr6   addr7   removeget_selectionset_moder   SelectionModeMULTIPLE_connecton_treeview_selection_changedget_columnsremove_columnTreeViewColumnCellRendererTextappend_column_fillAdvanced
_fillBasicset_transient_forconnect_signals)r   r'   r(   parentproblems	selectioncolumncols           r   r   zServerSettings.__init__E   sE     $''' +$:NNN
/3 3 34"  &~# 	 	/ 	/ 	/& &Q{^^<<<&&%BBB)T%:;;;!)):t7GHHH /#3&,(6699	C-6777y)T-OPPP*6688 	7 	7F ..v6666 "c&:&=&=AFFF**C000 	3K))6222r   c                     | j         S N)rK   )r   s    r   
get_dialogzServerSettings.get_dialog~   s
    {r   c                 0    |                      d           d S )Nr$   )emit)r   buttons     r   rG   zServerSettings.problems_clicked   s    		%&&&&&r   c                    t          j                    }	 | j                            | j        |           n6# t
          j        $ r$}|j        \  }t          || j	                    d }~ww xY wd }d}d}d}g | _
        |                    d           |D ]}|                    d          }|                                                                }	|	                    d          r	  ||	          }`#  Y dxY w|	                    d          r	  ||	          }#  Y xY w|	                    d          r	  ||	          }#  Y xY w|	                    d	          rA| j
                            |t#          d	          d                                                     | j                            |           |r| j                            d           n7|r| j                            d           n| j                            d           || _        || _        t5          j        t8                    }
| j                            |
           | j
        D ]}|
                    |g
           d S )Nfilec                     |                      d          d                                         }|dv rdS |dv rdS 	 t          |          dk    rdS n#  Y nxY wt          )N    )trueonenabledyesT)falseoffdisabledno0Fr   )splitstripintRuntimeError)linearg1s     r   parse_yesnoz1ServerSettings._fillAdvanced.<locals>.parse_yesno   sx    ::s##A&,,//D777t>>>u::??4 #s   A ATr   UTF-8preservejobhistory preservejobfiles 	browsing browsepoll row)tempfileTemporaryFiler>   getFileRESOURCEcups	HTTPErrorr   show_HTTP_Errorr@   browse_pollseekdecodelowerry   
startswithappendlenr5   set_sensitiver1   
set_activer2   r3   preserve_job_historypreserve_job_filesr   	ListStorestrrL   	set_model)r   fesr~   r   r   browsingr|   lmodelservers               r   rZ   zServerSettings._fillAdvanced   s   "%%	M!!4=q!9999~ 	 	 	6DQQ---	
	 	 	  $!	


 	N 	ND;;((D

##&&A||233 N+6;??((D233 N)4a&&D{++ N*{AHHD}-- N ''c=.A.A.B.B)C)I)I)L)LMMM--x888 	5#..5555! 	5%00$7777"--t444$8!"4s##&&...& 	( 	(FLLvhL''''	( 	(s9   !7 A*A%%A*(C44C8DD!:EE
c                    t                      | _        | j                            t	          d                     	 | j                                        | _        nQ# t          j        $ r?}|j	        \  }}t          ||| j                   | j                                          d }~ww xY w| j                                         | j        t          j        f| j        t          j        f| j        t$          f| j        t          j        f| j        t          j        f| j        t          j        ffD ]\  }}||_        || j        v rW|                    t7          | j        |                              |                    d           |                                 l|                    d           |                    d           |                                 t          j        | j        v r| j                                         n| j                                         	 t          j        }t7          | j        |                   }|| _         n# tB          $ r Y nw xY w| "                    | j                   d S )Nzfetching server settingsTF)#setr:   r>   _begin_operationrD   adminGetServerSettingsserver_settingsr   IPPErrorr   show_IPP_Errorr@   _end_operationr*   CUPS_SERVER_REMOTE_PRINTERSr+   CUPS_SERVER_SHARE_PRINTERSr,   try_CUPS_SERVER_REMOTE_ANYr-   CUPS_SERVER_REMOTE_ADMINr.   CUPS_SERVER_USER_CANCEL_ANYr/   CUPS_SERVER_DEBUG_LOGGINGsettingr   rz   r   rH   hider5   server_is_publishingAttributeErroron_server_changed)r   r   mwidgetr   flag
publishings          r   r[   zServerSettings._fillBasic   s`   uu&&*D(E(EFFF	#'=#G#G#I#ID  } 	 	 	VFQ1a...M((+++		 	$$''' !4#CD $"AB#%?@&(EF)4+KL#T%CD G 	 	OFG %FN$...!!#d&:7&C"D"DEEE$$T***!!%((($$U++++t/CCC#((****#((***	2Dd24899J(2D%% 	 	 	D	 	 344444s)   A B)*:B$$B) -I 
IIc                    t          d|z             |j        }|| j        v rrt          t	          |                                                    | j        |         k    r| j                            |           n| j                            |           | j	                                        }| j
                            |ot          | j        v            d S )Nzon_server_changed: %s)
debugprintr   r   r   rz   
get_activer:   discardrM   r+   r,   r   r   )r   r   r   sharings       r   r   z ServerSettings.on_server_changed   s    +f4555.d***3v((**++,,0DW0MMM$$V,,,,  (((%0033,,J2d6JJ	L 	L 	L 	L 	Lr   c                     |                     ||          }|| j        vr
g | j        |<   | j        |                             ||f           d S rd   )rF   rJ   r   )r   r   signalhandlerreasonids         r   rS   zServerSettings._connect   sV    ^^VW--)))')DV$ ''&"66666r   c                 |    || j         v r2| j         |         D ]\  }}|                    |           | j         |= d S d S rd   )rJ   
disconnect)r   r   r   r   s       r   _disconnectzServerSettings._disconnect  s[    T%%% $ 0 8 ' '!!2&&&& ((( &%r   c                 f    | j                             |                                dk               d S )Nr   )rN   r   count_selected_rows)r   r`   s     r   rT   z,ServerSettings.on_treeview_selection_changed  s/    !!9#@#@#C#Cq#HIIIIIr   c                    | j                                         }|                    dt          d          g          }|                    d           | j                                         d         }|                                d         }|                    dd           | j                             t          j
                    |d           |                     |d| j        d           |                     |d	| j        d           d S )
Nr   zEnter hostnamer   FeditableTeditededitzediting-canceled)rL   	get_modelinsertrD   r   rU   	get_cellsset_property
set_cursorr   TreePathrS   on_browse_poll_editedon_browse_poll_edit_cancel)r   rh   r   iterrb   cells         r   on_add_clickedzServerSettings.on_add_clicked  s    $..11||QQ'7%8%8$9|::e$$$"..11!4}}":t,,,''dCCCtXt'A6JJJt/6	@ 	@ 	@ 	@ 	@r   c                 F   | j                                         }|                    |          }|                    |d|           |                    d           |                    dd           | j                            d           |                     d           d}	 t          j
        |dt          j        ddt          j                   n# t          j        $ r |                    d          }d}|D ]z}	|	d         dk    s|	                    d          rd} nT|	D ]L}
|s|
                                rd}|
                                s|
                                s
|
dk    sd} nM|s n{|r|sd}Y nw xY w|rd}|                                }|rp|                    |d          |k    r=|d	z  }|d
k    r2d}| j                                         }|                    |           d S |                    |          }|nd S d S |                    |           d S )Nr   Fr   Tr   rw   .-rn      )rL   r   get_iter	set_valuestop_editingr   rM   r   r   socketgetaddrinfo	AF_UNSPECAI_NUMERICHOSTgaierrorrx   endswithisalphaisdigitget_iter_first	get_valuerO   select_iter	iter_nextrN   )r   r   pathnewvaluer   r   validlabels
seen_alphar   charcountir`   s                 r   r   z$ServerSettings.on_browse_poll_edited  s   $..11~~t$$q(+++5!!!:u---%%%&!!!	#v/?A & 57 7 7 7 	 	 	^^S))FJ  !HOONNC(( $!EE! 	 	D% .<<?? .)-J LLOO  LLOO CKK % E  Z 1	4  	 E$$''A (??Aq))X55QJEzz %$($8$F$F$I$I	!--q111OOQ''  ( ( ( ( ( LL$s   #-C B)E=<E=c                    |                     d           |                    dd           | j                                        }|                    t          j                              }|                    |           | j        	                    d           | j        	                    d           | 
                    d           d S )NTr   Fr   )r   r   rL   r   r   r   r   rN   rM   r   r   )r   r   r   r   s       r   r   z)ServerSettings.on_browse_poll_edit_cancelS  s    4   :u---$..11~~s|~~..d%%%!!5)))&!!!!!r   c                 B   | j                                         | j                                         }|                                }fd|d         D             }|D ]@}|                                }                    |          }                    |           Ad S )Nc                 P    g | ]"}t           j                            |          #S r   )r   TreeRowReferencenew).0r   r   s     r   
<listcomp>z4ServerSettings.on_remove_clicked.<locals>.<listcomp>a  s,    KKK4$((%66KKKr   rn   )rL   r   rO   get_selected_rowsget_pathr   rN   )	r   rh   r`   rowsrefsrefr   r   r   s	           @r   on_remove_clickedz ServerSettings.on_remove_clicked]  s    $..11(6699	**--KKKK47KKK 	  	 C<<??D>>4((DLL$	  	 r   c                 4   |t           j        j        k    s|t           j        j        k    rE|                                  | j                                         |                     d           ~ d S |                                  | 	                                 d S )Nr#   )
r   ResponseTypeCANCELOKr   rK   r   rg   	saveBasicsaveAdvanced)r   rK   r9   s      r   rI   zServerSettings.on_responseg  s    (///(+++KII()))Fr   c                     	 d}|dk    rM	 | j                                          d S # t          $ r t          j        d           |dz  }Y nw xY w|dk    Kd S d S # t
          $ r Y d S w xY w)Nrn      )r>   rS   r{   timesleepr   )r   attempts     r   
_reconnectzServerSettings._reconnects  s    	GQ,,!M**---E# ! ! !JNNNqLGGG!	 Q,,,,,,  	 	 	 DD	s,   A & #A	A A	A 
A'&A'c                 
   | j                                         }|p| j                                        }| j                                        }g }|                                }|r@|                    |                    |d                     |                    |          }|@t          |          t          | j
                  k    r[|| j        k    rP|| j        k    rE|                                  | j                                         |                     d           ~ d S t#          j                    }	 | j                            | j        |           n;# t,          j        $ r)}|j        \  }t3          || j                   Y d }~d S d }~ww xY wdx}	x}
}|sd}	|sd}
|D ]
}|d|z  z  }|                    d           t#          j                    }dx}}d}d}|D ]V}|                    d	          }|                                                                }|                    d
          rd} nW|                    d           |D ]R}|                    d	          }|                                                                }|                    d          r|rV|	}d}n|                    d          r|rs|
}d}n|rC|                    d
          r.|r|                    |                     d	                     d}|sk|                    d          rV|sT|                    |                     d	                     |                    |                     d	                     d}*|                    |                     d	                     T|s(|                    |	                     d	                     |s(|                    |
                     d	                     |s(|                    |                     d	                     |!                                 |"                                }tG          j$        |dtF          j%                   	 | j        &                    d|           ns# t,          j'        $ r+}|j        \  }}tQ          ||| j                   Y d }~d S d }~wt,          j        $ r)}|j        \  }t3          || j                   Y d }~d S d }~ww xY wtS          j*        d           | +                                 |                                  |                     d           | j                                         ~ d S )Nr   r"   rj   r;   zPreserveJobHistory No
zPreserveJobFiles No
zBrowsePoll %s
Fr   r   Tr   r   r   r%   )fdrn   ),r1   r   r2   rL   r   r   r   r   r   r   r   r   r   r   rK   r   rg   r   r   r>   r   r   r   r   r   r   r   r   r   ry   r   writeencodeflushfilenooslseekSEEK_SETputFiler   r   r  r  r
  )r   r   r   r   r   r   r   r   r   job_history_linejob_files_linebrowsepoll_linesr   confwrote_preserve_historywrote_preserve_fileswrote_browsepollhas_browsepollr|   r   r  r   s                         r   r  zServerSettings.saveAdvanced  s   !4??BB 2 !H $ 9 D D G G 	$..11##&& 	*q 9 9:::??D))D  	* d&6!7!777$"999 D$===KII)***F "%%	M!!4=q!9999~ 	 	 	6DQQ,,,FFFFF	
 @BAA>,< $ 	98 " 	54N! 	; 	;F 1F ::	


%((8==!5  	 	D;;w''D

##&&A||]++ !%
 	
q			 %	. %	.D;;w''D

##&&A||233  ) ')-&&233 ' %'+$$  ,,..# 

,33G<<===#' $ ,,,,' JJG 4 4555JJ 0 7 7 @ @AAA'+$JJG,,----% 	:JJ(//88999# 	8JJ--g66777 	:JJ(//88999

[[^^
"a%%%		M!!#;!CCCC} 	 	 	VFQAq$+...FFFFF~ 	 	 	6DQQ,,,FFFFF	 	
A		%&&&DDs<   :!E F+FF-R
 
S: R??S:S55S:c           
         t                      }| j        t          j        f| j        t          j        f| j        t          f| j        t          j	        f| j
        t          j        f| j        t          j        ffD ]@\  }}|| j        vrt          t!          |                                                    ||<   A| j                            t)          d                     	 | j                            |           n# t          j        $ rD}|j        \  }}t1          ||| j                   | j                                         Y d }~dS d }~wt6          $ r:}t1          d || j                   | j                                         Y d }~dS d }~ww xY w| j                                         t9                      | _        | j                            t          j        d          }|                    t          j        d          }|dk    r|dk    r	 | j        dk    s| j        d         dk    rBtA          j!                    }	|	j"        stA          j#                    }	|	$                                }
nd}
|
s)tK          j&        | j'        ddtJ          j(        j)        tJ          j*        j+        t)          d                    }|,                    t)          d	                     |-                    tJ          j.        tJ          j/        j0        t)          d          tJ          j/        j1                   |2                                }|3                                 |tJ          j/        j1        k    r3|	4                    t@          j5                   |	6                                 n*# tn          j8        tr          f$ r tu                       Y nw xY wtw          j<        d
           | =                                 d S )Nzmodifying server settingsTrw   	localhostr   /zAdjust Firewall)r^   modaldestroy_with_parentmessage_typebuttonsr   z>Adjust the firewall now to allow all incoming IPP connections?rn   )>dictr*   r   r   r+   r   r,   r   r-   r   r.   r   r/   r   r   r   rz   r   r>   r   rD   adminSetServerSettingsr   r   r   rK   r   r{   r   r:   getr?   firewallsettings	FirewallDrunningSystemConfigFirewallcheck_ipp_server_allowedr   MessageDialogr)   MessageTypeQUESTIONButtonsTyper   format_secondary_textadd_buttonsSTOCK_CANCELr   NOYESrundestroyadd_serviceIPP_SERVER_SERVICEr  dbusDBusException	ExceptionnonfatalExceptionr  r  r
  )r   setting_dictr   r   r   r   r   old_settingnew_settingr   allowedrK   r9   s                r   r  zServerSettings.saveBasic  s   vv!4#CD $"AB#%?@&(EF)4+KL#T%CD G 	B 	BOFG d222H$'F,=,=,?,?(@(@$A$AL!!&&*E(F(FGGG
	M00>>>>} 	 	 	VFQ1a---M((+++44444 	 	 	4DK000M((+++44444	 	$$'''uu*..0O035 5"&&(GMM3;##5#5%J+--JqMS(((255A9 E,ADD88;;GG #G # .t7P6:PT=@_=U8;8L567H5I5I	K K KF
 00! 5C 3D 3D E E E &&(8#:J:M()*;(<(<c>N>RT T T%zz}}HNN%%%3#3#777'7'JKKK


&	2 % % %!$$$$$% 	
1 	s7   !C< <F9E

F/FFFN! !$OO)NNNrd   )r   r   r   r   SignalFlagsRUN_LAST__gsignals__r   r   re   rG   rZ   r[   r   rS   r   rT   r   r   r   r   rI   r
  r  r  r   r   r   r!   r!   ;   s        %094D#/8$C$094D
 
L &H7 7 7 7r  ' ' '@( @( @(D+5 +5 +5ZL L L7 7 7 7) ) ) )J J J
@ 
@ 
@6  6  6 p" " "     
 
 
  "~ ~ ~@D D D D Dr   r!   __main__uiSYSTEM_CONFIG_PRINTER_UIc                  8    t                                            d S rd   )loopquit)r   s    r   rI  rI  N  s    		r   c                 *    t          d| z             d S )Nz%s: problems)print)objs    r   r_   r_   Q  s    ns"#####r   Tr#   r"   r$   )$rB   gettextinstallrC   r   r   r9  gi.repositoryr   r   r  r   r   r  r<   debugerrordialogsr'  guir   CUPS_SERVER_REMOTE_ANYr   r   r   r   r!   r   environMainLooprH  rI  r_   set_debuggingr   rF   r5  r   r   r   <module>rW     s$  .   v~1A B B B B   ! ! ! ! ! !       				                      /!%!< / / /!./
	> 	> 	> 	> 	> 	> 	> 	>M M M M MV M M M^ z-1BJ)*7D  $ $ $ M4AII $'''II!4(((II!8,,,HHKKKKK s    A( (A21A2