
    |~g'                         d dl m Z d dlmZ d dlZd dlZd dlmZmZm	Z	m
Z
mZ d dlmZmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlZ ej2                  dd       d dlmZmZmZ erd dlmZ  G d de      Z y)    )gettext)randintN)ListTuplecastUnionTYPE_CHECKING)haveget_local_interfaces)Builder)ServicePlugin)	Mechanism)AppletService)ErrorDialogGtkz3.0)Gior   GObject)Literalc                   V    e Zd Z ed       dfZd
dZd
dZd
dZdee	df   fdZ
d
d	Zy)Networkznetwork-workgroupreturnNc           
      j   t        d      | _        | j                  j                  dt        j                        | _        g | _        t               }|D ]  }|dk7  s	|dk7  st        j                  |       t        j                  dj                  t        t        t        t        f   ||                     }| j                  j!                  ||f        | j#                          	 | j%                          y # t&        t        j(                  f$ r}t        j*                  |       Y d }~y d }~ww xY w)Nzservices-network.uinetworklopan1/)r   _builder
get_widgetr   Gridwidget
interfacesr   logginginfo	ipaddressip_interfacejoinr   r   strappendsetup_networkip_check
ValueErrorAddressValueError	exception)selfnetifsifaceipifacees        B/usr/lib/python3/dist-packages/blueman/plugins/services/Network.pyon_loadzNetwork.on_load   s     56mm..y#((Ceg%' 	9E}&U##00$uS#XPVW\P]:^1_`&&w'78		9 		!MMOI778 	!a  	!s   )C: :D2D--D2c                 T   | j                         rt        j                  d       t               }| j                  j                  dt        j                        }|j                  j                  r| j                  j                  dt        j                        j                  j                  rd}n| j                  j                  dt        j                        j                  j                  rd}n@| j                  j                  dt        j                        j                  j                  rd}| j                  j                  d	t        j                        }	 |j                  j                  | j                  d
   k7  }|j                  d|j                  j                  d|       | j                  d   sd| j                  d<   |j                  j                  | j                  d
<   || j                  d<   nd| j                  d<   |j/                          | j1                          y y # t        $ rn}| j                   j#                         }t%        |t        j&                        sJ t)        d||      }|j+                          |j-                          Y d }~y d }~ww xY w)Nznetwork apply
nap-enabler_dhcpdDhcpdHandler	r_dnsmasqDnsMasqHandlerr_udhcpdUdhcpdHandlernet_ipip4-addressz(sssb)255.255.255.0Tdhcp-handlerz'<b>Failed to apply network settings</b>)excpparentF)on_query_apply_stater"   r#   r   r   r   r   CheckButtonpropsactiveRadioButtonEntrytextConfigEnableNetwork	Exceptionr    get_toplevel
isinstance	Containerr   rundestroyDisableNetworkclear_options)	r.   m
nap_enablestyper=   changedr2   rB   ds	            r3   on_applyzNetwork.on_apply,   s   $$&LL)A11,PJ&&==++IsGMMTT*E]]--k3??KQQXX,E]]--j#//JPPWW+E11(CIIF$ll//4;;}3MMGOOHfll.?.?RWY`a;;|448L1171B1BDKK.27DKK/ -2L)  " I '0 ! ![[557F%fcmm<<<#$MTU^deAEEGIIKs   BH0 0	J'9A$J""J'c           
      "   | j                   j                  dt        j                        }	 t	        j
                  dj                  |j                  j                  df            }| j                  D ]  \  }}|j                  |j                  k(  r=t        d|z        }|}d|j                  _        ||j                  _        t        |      |j                   |j                   k(  svt        d|d|j                  d|j"                  d	      }d
|j                  _        ||j                  _         y  d |j                  _        y # t        t        j                  f$ r- d|j                  _        t        d      |j                  _         w xY w)Nr=   r   r?   zdialog-errorzInvalid IP addresszAIP address conflicts with interface %s which has the same addressz-IP address overlaps with subnet of interface z), which has the following configuration  z*
This may cause incorrect network behaviorzdialog-warning)r   r   r   rH   r$   r%   r&   rE   rI   r+   r,   secondary_icon_name_secondary_icon_tooltip_textr!   ipr   netmask)r.   entrynap_ipifacer0   r1   error_messagetooltip_texts          r3   r*   zNetwork.ip_checkT   sI   ((399=	#005;;;K;K_:]1^_K #oo 	NE7~~+ !"ehm"m n,2@/:F7 //$$7 CH'**V]VeVeg h 3C/:F7	  +/'+ I778 	.<EKK+678L6MEKK3	s   :E AFzLiteral[-1]c                     | j                         }|syd|v r	 | j                          yy# t        t        j                  f$ r}t        j                  |       Y d }~yd }~ww xY w)NFr^   T)get_optionsr*   r+   r$   r,   r"   r-   )r.   optsr2   s      r3   rC   zNetwork.on_query_apply_stateo   s^    !4<
 	 	 ; ;< !!!$s   + A#AA#c                 (    t        j                  d       _         j                  j	                  dt
        j                        } j                  j	                  dt
        j                        } j                  j	                  dt
        j                        } j                  j	                  dt
        j                        } j                  j	                  dt
        j                        } j                  j	                  dt
        j                        } j                  j	                  d	t
        j                        } j                  j	                  d
t
        j                        } j                  j	                  dt
        j                        }	 j                  j	                  dt
        j                        }
 j                  j	                  dt
        j                        } j                  d   sd|
j                  _         j                  d   0 j                  d   |j                  _        d|j                  _        n.dt        dd      ddt        dd      dd|j                  _         j                  d   Bd|
j                  _        d|j                  _        d|j                  _        d j                  d<   t!        d      xs t!        d      }t!        d      }t!        d      } j                  d   dk(  r|rd|j                  _        n] j                  d   dk(  r|rd|j                  _        n7 j                  d   dk(  r|rd|j                  _        nd|j                  _        |sW|sU|sSd|
j                  _        d|j                  _        d|j                  _        d|j                  _        d j                  d<   |s"d|j                  _        d|j                  _        |s"d|j                  _        d|j                  _        |s"d|j                  _        d|j                  _        |j%                  d fd        |j%                  d fd!       |j%                  d fd"       |j%                  d# fd$       |j%                  d fd%        j                  j'                  d|d&t         j(                  j*                         |j-                  d&|
d't.        j0                  j2                         t5               j7                         }j9                         }d(t
        j                  d)t:        d*d ffd+}d(t
        j                  d)t:        d*d ffd,}d-|v rd|	j                  _        d.|v rd|j                  _        n+d|j                  _        t=        d/      |j                  _        d0|v rd|j                  _        d1|v rd|j                  _        n+d|j                  _        t=        d/      |j                  _        d1|v rd|j                  _        d.|v rd|j                  _        |j%                  d|d2       |j%                  d|d3       |j%                  d|d2       |	j%                  d|d3       y )4Nzorg.blueman.network)	schema_idr6   r9   r7   r;   r=   rb_nm
rb_blueman	rb_dun_nmrb_dun_blueman	nap_framewarningFr>   Tz10.r      rX   .z.1r@   dhcpd3dhcpddnsmasqudhcpdr:   r8   r<   toggledc                 &    j                  d      S )Nrt   option_changed_notifyxr.   s    r3   <lambda>z'Network.setup_network.<locals>.<lambda>   s    t/I/I)/T     c                 &    j                  d      S )Nrs   rx   rz   s    r3   r|   z'Network.setup_network.<locals>.<lambda>   s    T-G-G-P r}   c                 &    j                  d      S )Nru   rx   rz   s    r3   r|   z'Network.setup_network.<locals>.<lambda>   s    d.H.H.R r}   rW   c                 (    j                  dd      S )Nr^   Frx   rz   s    r3   r|   z'Network.setup_network.<locals>.<lambda>   s    D,F,FtU,S r}   c                 &    j                  d      S )NrU   rx   rz   s    r3   r|   z'Network.setup_network.<locals>.<lambda>   s    0J0J<0X r}   rF   	sensitiverbr{   r   c                    | j                   j                  r,|dk(  r'j                  ddd       j                  ddd       y | j                   j                  r-|dk(  r'j                  ddd       j                  ddd       y y y )Nnm(sb)
PPPSupportFNMDUNSupportTbluemanrE   rF   SetPluginConfigr   r{   applets     r3   dun_support_toggledz2Network.setup_network.<locals>.dun_support_toggled   st    xx19&&v|UC&&v~tDQ)^&&v~uE&&v|TB &4r}   c                    | j                   j                  r,|dk(  r'j                  ddd       j                  ddd       y | j                   j                  r-|dk(  r'j                  ddd       j                  ddd       y y y )Nr   r   
DhcpClientFNMPANSupportTr   r   r   s     r3   pan_support_toggledz2Network.setup_network.<locals>.pan_support_toggled   st    xx19&&v|UC&&v~tDQ)^&&v~uE&&v|TB &4r}   r   r   z'Not currently supported with this setupr   r   r   r   ) r   SettingsrJ   r   r   r   rD   rG   rH   FrameBoxrE   r   rI   rF   r   r
   visibleconnectbindSettingsBindFlagsGETbind_propertyr   BindingFlagsDEFAULTr   QueryAvailablePluginsQueryPluginsr'   r\   rc   )r.   rU   r9   r7   r;   r=   rj   rk   rl   rm   rn   ro   
have_dhcpdhave_dnsmasqhave_udhcpdavail_pluginsactive_pluginsr   r   r   s   `                  @r3   r)   zNetwork.setup_network}   s   ll-BC]]--lCOOL
MM,,[#//J	--**9cooF==++JH))(CII>((#//B]]--lCOOL
MM,,[#//J	112BCOOTMM,,[#))D	--**9cgg>{{<((-IOO%;;}%1 $M :FLL&*J#"%gaoa%8'!S/!9LB OFLL;;~&.(-IOO%&+J#%)IOO"(-DKK%(^4tG}
I8n;;~&*::|%)IOO"[[(N:z#'GMM [[(O;$(HNN!%)IOO"J{(-IOO%$(GMM!&*GMM#).J&(-DKK%(-IOO%%*IOO"&+GMM##(GMM ',HNN$$)HNN!)%TU	#PQ$RSy"ST9&XYz8S=R=R=V=VW  9k7CWCWC_C_`446,,.	CCOO 	C 	C 	C	CCOO 	C 	C 	C >)*.N  ']*(,IOO%(-IOO%+,-V+WIOO(>)&*J#]*$(EKK!$)EKK!'()R'SEKK$^+!%EKK^+%)IOO"i!4d;9&99E)%8$?y*=yIr}   )r   N)__name__
__module____qualname__r\   __plugin_info__r4   rY   r*   r   boolrC   r)    r}   r3   r   r      s>    |%89O!&&!P/6eD-,?&@ |Jr}   r   )!r   r\   randomr   r"   r$   typingr   r   r   r   r	   blueman.Functionsr
   r   blueman.main.Builderr   blueman.plugins.ServicePluginr   blueman.main.DBusProxiesr   r   blueman.gui.CommonUir   girequire_versiongi.repositoryr   r   r   typing_extensionsr   r   r   r}   r3   <module>r      sZ         : : 8 ( 7 . 2 , 	   5%   + +)cJm cJr}   