
    HfRW                     R   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 d dl d dlZd dlmZ 	 ej(                  Z G d d	e	j.                        Z G d
 de      Zedk(  r|de
j6                  d<    ej8                         Zd Zd Z e d        e       Z!e!jE                  de       e!jE                  de       e!jE                  de       ejG                          yy# e$ r dZY w xY w)    N)domain	localedir)GObject)Gtk)*)GtkGUI_remote_anyc                       e Zd Zd Zy)_UnobtrusiveButtonc                 &   t        j                  j                  | fi | | j                  t         j                  j
                         | j                         }|j                         }|j                  d       |j                  dd|z  z          y )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   su    

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y)ServerSettingsNr   )settings-applieddialog-canceledproblems-clicked/admin/conf/cupsd.confc                    t         j                   j                  |        t        j                  ||      | _        || _        || _        | j                  dg dit        j                         t        t        d            }| j                  j                  |ddd       |j                  d	| j                         |j!                          | j"                  j                  d
| j$                         i | _        | j"                  | _        | j*                  | _        | j.                  | _        | j2                  | _        | j,                  j7                         }|j9                  t:        j<                  j>                         | jA                  |d| jB                         | j,                  jE                         D ]  }| j,                  jG                  |        t;        jH                  dt;        jJ                         d      }| j,                  jM                  |       | jO                          | jQ                          |r| j(                  jS                  |       | jU                          | j(                  j!                          y )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   s     $' ++$:N
/34"  &~~# 	 	/& &Q{^<&&%B)T%:%:;!!)):t7G7GH //#33&&,,((669	C--667y)T-O-OP**668 	7F  ..v6	7  "c&:&:&=AF**C0KK))62r   c                     | j                   S N)rK   )r   s    r   
get_dialogzServerSettings.get_dialog~   s    {{r   c                 &    | j                  d       y )Nr$   )emit)r   buttons     r   rG   zServerSettings.problems_clicked   s    		%&r   c                    t        j                         }	 | j                  j                  | j                  |       d }d}d}d}g | _
        |j                  d       |D ]  }|j                  d      }|j                         j                         }	|	j                  d      r
	  ||	      }M|	j                  d      r
	  ||	      }h|	j                  d      r
	  ||	      }|	j                  d	      s| j                  j!                  |t#        d	      d  j                                 | j$                  j'                  |       |r| j(                  j+                  d       n9|r| j,                  j+                  d       n| j.                  j+                  d       || _        || _        t5        j6                  t8              }
| j:                  j=                  |
       | j                  D ]  }|
j!                  |g
        y # t
        j                  $ r*}|j                  \  }t        || j                          d }~ww xY w#  Y xY w#  Y xY w#  Y xY w)Nfilec                     | j                  d      d   j                         }|dv ry|dv ry	 t        |      dk7  ry	 t        #  Y t        xY w)N    )trueonenabledyesT)falseoffdisabledno0Fr   )splitstripintRuntimeError)linearg1s     r   parse_yesnoz1ServerSettings._fillAdvanced.<locals>.parse_yesno   sf    ::s#A&,,/D77>>:? # 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   ""%	MM!!4==q!9	  $!	
 	ND;;(D

##&A||23+6?( 23)4a& {+*AH }-  ''c=.A.B)C)I)I)LM'	N* 	--x8##..5!%%00$7""--t4$8!"4s#&&.&& 	(FLLvhL'	(u ~~ 	66DQQ-	:s;   'H $I?III%H==II
IIc                 P   t               | _        | j                  j                  t	        d             	 | j                  j                         | _        | j                  j                          | j                  t        j                  f| j                  t        j                   f| j"                  t$        f| j&                  t        j(                  f| j*                  t        j,                  f| j.                  t        j0                  ffD ]  \  }}||_        || j                  v rI|j5                  t7        | j                  |                |j9                  d       |j;                          d|j5                  d       |j9                  d       |j=                           t        j                  | j                  v r| j>                  j;                          n| j>                  j=                          	 t        j                   }t7        | j                  |         }|| _         | jE                  | j                         y # t        j                  $ rF}|j                  \  }}t        ||| j                         | j                  j                           d }~ww xY w# tB        $ r Y w xY w)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#   u&&*D(EF	#'==#G#G#ID  	$$' !!4#C#CD  $"A"AB##%?@&&(E(EF))4+K+KL##T%C%CD G 	OFG %FN$...!!#d&:&:7&C"DE$$T*!!%($$U+	" ++t/C/CC##((*##((*	22Dd22489J(2D%
 	 3 34M }} 	VVFQ1a.MM((+		D  		s*   H= 2/J =JAJJ	J%$J%c                    t        d|z         |j                  }|| j                  v rit        t	        |j                                     | j                  |   k(  r| j                  j                  |       n| j                  j                  |       | j                  j                         }| j                  j                  |xr t        | j                  v        y )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..d***3v((*+,0D0DW0MM$$V,  (%%003,,J2d6J6JJ	Lr   c                     |j                  ||      }|| j                  vrg | j                  |<   | j                  |   j                  ||f       y rd   )rF   rJ   r   )r   r   signalhandlerreasonids         r   rS   zServerSettings._connect   sM    ^^VW-)))')DV$ ''&"6r   c                     || j                   v r6| j                   |   D ]  \  }}|j                  |        | j                   |= y y rd   )rJ   
disconnect)r   r   r   r   s       r   _disconnectzServerSettings._disconnect  sO    T%%% $ 0 0 8 '!!2&'  ( &r   c                 \    | j                   j                  |j                         dk7         y )Nr   )rN   r   count_selected_rows)r   r`   s     r   rT   z,ServerSettings.on_treeview_selection_changed  s"    !!9#@#@#Cq#HIr   c                    | j                   j                         }|j                  dt        d      g      }|j	                  d       | j                   j                         d   }|j                         d   }|j                  dd       | j                   j                  t        j                         |d       | j                  |d| j                  d       | j                  |d	| j                  d       y )
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||QQ'7%8$9|:e$""..1!4}}":t,''dCtXt'A'A6Jt/66	@r   c                    | j                   j                         }|j                  |      }|j                  |d|       |j	                  d       |j                  dd       | j                  j                  d       | j                  d       d}	 t        j                  |dt        j                  ddt        j                         |rwd}|j%                         }|rb|j'                  |d      |k(  r8|d	z  }|d
k(  r.d}| j                   j)                         }|j+                  |       y |j-                  |      }|ray y |j/                  |       y # t        j                  $ r |j                  d      }d}|D ]i  }	|	d   dk(  s|	j                  d      rd} nL|	D ]A  }
|s|
j!                         rd}|
j!                         r(|
j#                         r9|
dk(  r?d} n |ri n |r|sd}Y (w xY w)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~~t$q(+5!:u-%&!	#v/?/?A & 5 578 E$$'A??Aq)X5QJEz %$($8$8$F$F$I	!--q1OOQ'  LL$O  	^^S)FJ !HONNC(!E! 	D%<<?)-J LLO LLO CK %	 #& Z1	s+   6E A1G0G0G0G0#	G0/G0c                 t   |j                  d       |j                  dd       | j                  j                         }|j	                  t        j                               }|j                  |       | j                  j                  d       | j                  j                  d       | j                  d       y )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~~s||~.d%!!5)&!r   c                 h   | j                   j                         }| j                   j                         }|j                         }|d   D cg c]"  }t        j
                  j                  ||      $ }}|D ]4  }|j                         }|j                  |      }|j                  |       6 y c c}w )Nrn   )
rL   r   rO   get_selected_rowsr   TreeRowReferencenewget_pathr   rN   )	r   rh   r   r`   rowsr   refsrefr   s	            r   on_remove_clickedz ServerSettings.on_remove_clicked]  s    $$..1((669	**-CG7K4$$((%6KK 	 C<<?D>>4(DLL$	  Ls   'B/c                 2   |t         j                  j                  k(  s|t         j                  j                  k7  r=| j	                          | j
                  j                          | j                  d       ~ y | j                          | j                          y )Nr#   )
r   ResponseTypeCANCELOKr   rK   r   rg   	saveBasicsaveAdvanced)r   rK   r9   s      r   rI   zServerSettings.on_responseg  so    ((///((+++KKII()r   c                     	 d}|dk  r	 | j                   j                          y y y # t        $ r t        j                  d       |dz  }Y nw xY w|dk  rM2# t
        $ r Y y w xY w)Nrn      )r>   rS   r{   timesleepr   )r   attempts     r   
_reconnectzServerSettings._reconnects  su    	GQ,!MM**-  $ !JJNqLG!	 Q,  	 	s,   A ' #A
A AA 	A#"A#c                 
   | j                   j                         }|xs | j                  j                         }| j                  j	                         }g }|j                         }|r5|j                  |j                  |d             |j                  |      }|r5t        |      t        | j                        k(  r[|| j                  k(  rL|| j                  k(  r=| j                          | j                  j                          | j!                  d       ~ y t#        j$                         }	 | j&                  j)                  | j*                  |       dx}	x}
}|sd}	|sd}
|D ]
  }|d|z  z  } |j5                  d       t#        j$                         }dx}}d}d}|D ]F  }|j7                  d	      }|j9                         j;                         }|j=                  d
      sDd} n |j5                  d       |D ]  }|j7                  d	      }|j9                         j;                         }|j=                  d      r|rG|	}d}n|j=                  d      r|r`|
}d}n|r7|j=                  d
      r&|r{|j?                  |jA                  d	             d}|sV|j=                  d      rE|sC|j?                  |jA                  d	             |j?                  |jA                  d	             d}|j?                  |jA                  d	              |s |j?                  |	jA                  d	             |s |j?                  |
jA                  d	             |s |j?                  |jA                  d	             |jC                          |jE                         }tG        jH                  |dtF        jJ                         	 | j&                  jM                  d|       tS        jT                  d       | jW                          | j                          | j!                  d       | j                  j                          ~ y # t,        j.                  $ r.}|j0                  \  }t3        || j                         Y d }~y d }~ww xY w# t,        jN                  $ r0}|j0                  \  }}tQ        ||| j                         Y d }~y d }~wt,        j.                  $ r.}|j0                  \  }t3        || j                         Y d }~y d }~ww xY w)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4??B 2 !H $ 9 9 D D G 	$$..1##&q 9:??D)D  d&6&6!77$"9"99 D$=$==KKII)* ""%	MM!!4==q!9 @BAA>,< $8 "4N! 	;F 1F ::	; 	

%%(8==!5  	D;;w'D

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

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

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

[[^
"a%		MM!!#;!C 	

A		%&K ~~ 	66DQQ,	h }} 	VVFQAq$++.~~ 	66DQQ,	s<   -'Q  R  R$Q<<RT&ST$TTc           
      x   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 ]9  \  }}|| j                  vrt        t!        |j#                                     ||<   ; | j$                  j'                  t)        d             	 | j$                  j+                  |       | j$                  j5                          t9               | _        | j                  j=                  t        j
                  d      }|j=                  t        j
                  d      }|dk(  r|dk7  r	 | j>                  dk(  s| j>                  d   dk(  rEtA        jB                         }	|	jD                  stA        jF                         }	|	jI                         }
nd}
|
s?tK        jL                  | jN                  ddtJ        jP                  jR                  tJ        jT                  jV                  t)        d            }|jY                  t)        d	             |j[                  tJ        j\                  tJ        j^                  j`                  t)        d      tJ        j^                  jb                         |je                         }|jg                          |tJ        j^                  jb                  k(  r/	ji                  t@        jj                         |	jm                          tw        jx                  d
       | j{                          y # t        j,                  $ rJ}|j.                  \  }}t1        ||| j2                         | j$                  j5                          Y d }~yd }~wt6        $ r;}t1        d || j2                         | j$                  j5                          Y d }~yd }~ww xY w# tn        jp                  tr        f$ r tu                Y w xY w)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  sE   v!!4#C#CD  $"A"AB##%?@&&(E(EF))4+K+KL##T%C%CD G 	BOFG d222H$'F,=,=,?(@$AL!	B 	&&*E(FG
	MM00> 	$$'u**..0O0O035"&&(G(GM3;##5%JJ+-JJqMS((225A99,AAD88;G #G ..t7P7P6:PT=@__=U=U8;8L8L567H5I	KF
 00! 5C 3D E &&(8(8#:J:J:M:M()*;(<c>N>N>R>RT%zz}HNN%3#3#3#7#77'7'J'JK
 	

1 	m }} 	VVFQ1a-MM((+ 	4DKK0MM((+	V &&	2 %!$%s8   M1 !F*P 1PA O		P1PP#P98P9)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0994D#//88$C$00994D
L &H7r'@(D+5ZL7)J
@6 p" 
"~@Dr   r!   __main__uiSYSTEM_CONFIG_PRINTER_UIc                  ,    t         j                          y rd   )loopquit)r   s    r   rF  rF  N  s    		r   c                      t        d| z         y )Nz%s: problems)print)objs    r   r_   r_   Q  s    ns"#r   Tr#   r"   r$   )$rB   gettextinstallrC   r   r   r6  gi.repositoryr   r   r  r   r   r  r<   debugerrordialogsr$  guir   CUPS_SERVER_REMOTE_ANYr   r   r   r   r!   r   environMainLooprE  rF  r_   set_debuggingr   rF   r2  r   r   r   <module>rT     s  .   v~~1A1A B   !  	        /!%!<!<	> 	>MV M^ z-1BJJ)*7D$ 4AII $'II!4(II!8,HHK   /!./s   .D D&%D&