
    kj                         d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlmZ de	e
   dz  fdZde	e
   dz  fdZ G d d	      Zy)
    N)command)ctx)ALERTreturnc                  F    | D ]  }t        j                  |      s|gc S  y N)shutilwhichsearch_pathsbrowsers     a/home/ubuntu/.cache/pipx/cdb5059130eadca/lib/python3.12/site-packages/mitmproxy/addons/browser.pyfind_executable_cmdr      s*     << 9     c                      t        j                  d      rS| D ]N  }t        j                  dd|gt        j                  t        j                        j
                  dk(  sHddd|gc S  y )Nflatpakinfostdoutstderrr   runz-p)r	   r
   
subprocessr   DEVNULL
returncoder   s     r   find_flatpak_cmdr      sj    ||I# 		9G0%--%-- * "5$88		9 r   c                       e Zd ZU g Zeej                     ed<   g Zee	j                     ed<    ej                  d      d
deddfd       ZddZddZd	 Zy)Browserr   tdirzbrowser.startr   Nc                     t        | j                        dkD  rt        j                  t        d       |dv r| j                          y |dk(  r| j                          y t        j                  t        d       y )Nr   zStarting additional browser)chromechromiumfirefoxzInvalid browser name.)lenr   logginglogr   launch_chromelaunch_firefox)selfr   s     r   startzBrowser.start'   sZ    t||q KK<=,, 	!!KK67r   c                 X   t        ddddddddd		      xs t        d
ddd      }|st        j                  t        d       yt        j                         }| j                  j                  |       | j                  j                  t        j                  g |dt        |j                        z  dj                  t        j                   j"                  xs dt        j                   j$                  xs d      dddddt        j&                  t        j&                               y)zj
        Start an isolated instance of Chrome that points to the currently
        running proxy.
        z</Applications/Google Chrome.app/Contents/MacOS/Google Chromez;C:\Program Files (x86)\Google\Chrome\Application\chrome.exez4C:\Program Files (x86)\Google\Application\chrome.exezgoogle-chromezgoogle-chrome-stabler    r!   zchromium-browserzgoogle-chrome-unstablezcom.google.Chromezorg.chromium.Chromiumz$com.github.Eloston.UngoogledChromiumzcom.google.ChromeDev;Your platform is not supported yet - please submit a patch.Nz--user-data-dir=%sz--proxy-server={}:{}	127.0.0.18080z--disable-frez--no-default-browser-checkz--no-first-runz--disable-extensionsabout:blankr   )r   r   r$   r%   r   tempfileTemporaryDirectoryr   appendr   r   Popenstrnameformatr   optionslisten_hostlisten_portr   )r(   cmdr   s      r   r&   zBrowser.launch_chrome3   sD   
 "JJC"$
 
 #2"	
 	& KKT **,		(3tyy>9 +11//>;//96 $ 1 % + " "))!))	
r   c                    t        ddddd      xs t        d      }|st        j                  t        d       yt
        j                  j                  xs d	}t
        j                  j                  xs d
}g d}dD ]  }|d| d| dd| d| dgz  } t        j                         }t        |j                  dz   d      5 }|j                  |       ddd       | j                  j                  |       | j                   j                  t#        j$                  g |dt'        |j                        ddt"        j(                  t"        j(                               y# 1 sw Y   xY w)zk
        Start an isolated instance of Firefox that points to the currently
        running proxy.
        z0/Applications/Firefox.app/Contents/MacOS/firefoxz,C:\Program Files\Mozilla Firefox\firefox.exer"   zmozilla-firefoxmozillazorg.mozilla.firefoxr+   Nr,   i  )z2user_pref("datareporting.policy.firstRunURL", "");z#user_pref("network.proxy.type", 1);z6user_pref("network.proxy.share_proxy_settings", true);z=user_pref("datareporting.healthreport.uploadEnabled", false);z)user_pref("app.normandy.enabled", false);z$user_pref("app.update.auto", false);z'user_pref("app.update.enabled", false);z2user_pref("app.update.autoInstallEnabled", false);zfuser_pref("app.shield.optoutstudies.enabled", false);user_pref("extensions.blocklist.enabled", false);zBuser_pref("browser.safebrowsing.downloads.remote.enabled", false);z,user_pref("browser.region.network.url", "");z2user_pref("browser.region.update.enabled", false);z3user_pref("browser.region.local-geocoding", false);z.user_pref("extensions.pocket.enabled", false);z;user_pref("network.captive-portal-service.enabled", false);z9user_pref("network.connectivity-service.enabled", false);z*user_pref("toolkit.telemetry.server", "");z$user_pref("dom.push.serverURL", "");z.user_pref("services.settings.enabled", false);z+user_pref("browser.newtab.preload", false);zAuser_pref("browser.safebrowsing.provider.google4.updateURL", "");zAuser_pref("browser.safebrowsing.provider.mozilla.updateURL", "");zFuser_pref("browser.newtabpage.activity-stream.feeds.topsites", false);zBuser_pref("browser.newtabpage.activity-stream.default.sites", "");zMuser_pref("browser.newtabpage.activity-stream.showSponsoredTopSites", false);z@user_pref("browser.bookmarks.restore_default_bookmarks", false);z(user_pref("browser.bookmarks.file", "");)httpsslzuser_pref("network.proxy.z", "z");z_port", z);z	/prefs.jswz	--profilez--new-windowr.   r   )r   r   r$   r%   r   r   r6   r7   r8   r/   r0   openr4   
writelinesr   r1   r   r   r2   r3   r   )r(   r9   hostportprefsservicer   files           r   r'   zBrowser.launch_firefoxg   s   
 ">;
 5 34 	 KKT {{&&5+{{&&.$
< ' 	G+G9DcB+G9HTF"E E	 **,$))k)3/ 	#4OOE"	# 			 		N #	
 " "))!))
	
		# 	#s   E##E,c                     | j                   D ]  }|j                           | j                  D ]  }|j                           g | _         g | _        y r   )r   killr   cleanup)r(   r   r   s      r   donezBrowser.done   sH    || 	GLLN	II 	DLLN		r   )r    )r   N)__name__
__module____qualname__r   listr   r2   __annotations__r   r/   r0   r   r3   r)   r&   r'   rI    r   r   r   r   #   si    &(GT*""#(.0D$x**
+0W___%	8S 	8 	8 &	82
hK
Zr   r   )r$   r	   r   r/   	mitmproxyr   r   mitmproxy.logr   rM   r3   r   r   r   rO   r   r   <module>rR      sP          $s)d*: tCy4'7  W Wr   