From 63cea7d337a55fed8333a3aaf3d1d5bb50a03018 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Tue, 19 May 2015 16:02:26 -0700 Subject: [PATCH] Try to automatically enable access to http://127.0.0.1 in web wrapper if IE is in enhanced security mode. --- ext/bin/win-ui-wrapper/ZeroTier One.exe | Bin 761304 -> 763352 bytes windows/WebUIWrapper/Program.cs | 70 ++++++++++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/ext/bin/win-ui-wrapper/ZeroTier One.exe b/ext/bin/win-ui-wrapper/ZeroTier One.exe index 50eec7d6bf0ea90fc869e19356e11b5243d26688..622b5b361b363de37bfcd2c14a77514b4d6ea8d8 100644 GIT binary patch delta 5721 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 delta 3787 zcmaJ@3s_ZE7GC?@v(LR8@DBHa2mXexILO)IM0VW9Hg96EP%x|bqQ)o;{GczBfku(23D1FT|b3XRJ*ZSAmYp=cb zI_FY^(piNj zm$cY*)#*v~!H_=oBriT2*G@~h1S^Bv*{FqLku6LF3W&7VgZiBV#kdX`hC9OH zBpEbRS&bnd6!d9S5K%2>0Fu@bd{!rbDrH4tS|m1nW!HSgiFDr1q3RQ9Ori>n&u(K0s{R2XZ!cW?Emtwx+Bl3e`Ri zKAN7GUQb&;!Ag%51X8m4L(v8Z#!nlFDQ2RUgvn1E1k6JAiiQSLV>(FMP%)$05;>5t z=yl6tfb6T`HBh^R+9zY9GwAY`3$P`N2*UxY;uLfi@Q@MDsn6{f<9(51QnT>( zD%wbRXM>QOI*Uz5fx(sFsoTNnbnOon$SK#QEO#jkL&7j%$fYiYZ!YS84eKHn6OB`d zW||V9tc@>z=!p`^L5XfO%jKde|v} z@TLh7WfiZrKE!tdnG+HdW-_>s?&VRAS16rSdV})FOgm^Tv{5dQ6{?iekz6fMrSD-ilNWygYaADz{d7zM znrRvr$5_mTe-Y41wY-cgbWxXY@w75-rH+cAVie(&0^CGPa1B=43tpvaMFedED%1?C znI;&Mj4EFILL|D%DAGM_Op?rW+V~Z$S9LU)*18?VJlNr6-V{q=y60qF%c0M)A)^~%!ghib z7Jyy6!iAPYW?Yx-pywlmT0nhSI2ypFYq@$Dnda-7%e0Zj!dCiND`pAMDjsV`S#N07 zy7rE#fsI76-{@LPGMqlswF3WUW4L}qMt9MD5;X%Ij2>ZPWRjApl2U1`juUiD*D*uK zxjHV;F-OOI9SeW~v_Y3Q>$p?LVqh9o0n@1lsG_C<&(Z{WIyKN7`6X(iJcn$jA8ETh zAGl9m1j7+ImmbjH<>gp#0Zr3Djq+RM!G4lmWMLwNh57OIKwil;}q_L1ML%zbV(S*nR zUH$_YuA~CZijdo(&C+4LM;RcWE)t2~81=1H*>K}&(1=?!2m-31N?IF;yzE1|=7VsrN!EC2E z970Biar8dnV})M@s$qkH-?Om}^q~<3iA-={xHk@21t&XOK9cZz{B+0XMtmZlJPfTR zp5Jl{e}~KaFRqr##M`caYOyU*Fuv+%@KYe?0mh`tDJ_#b8Mpmo#pseOmfolCtqrFlAo0yQYc{b+fDG_gUl^*m2eL7Z&6P2wno@D$fEYhj!8HJvvT*|Px)9s z=S8E))#|(`!z;KY@D;aT4WGfCO;%@dMetvZFwgGdS%NCyMaK7Ubi+RNBUoLy$P@zxa!eQUtd#YcN zVc+zmj5)_PX8j|=qf=6Kg@5N8i%KpfY&(|yH-{89W!t^W>)%^+ZE!{Nsri|oM>Td% zFWEFPv2Eb!yWN77x%KHr$EX2mZ;e{rv}X2|=vjXA)*tXM8aa5(7sapc{_CJu=HI)& zxriEGKm78J9kRLK&BkLNtns4s%7H(6-#jvXx7WGrdvn(2{dwp50fm!>m}XtR(QjaW zl@{72s*YVBn;)H6Uj5IjOQUwLT%9IA<9O6>`A?0}?HYPaDQ;}{;+C4TU8m-zhV6Q7 z`1J+ukGFW9cf|MT)wAcsxQNyQdC2j8vhV46NBT{@l>cn^(!Q^ze0coLHxI@&{Z17_ zre7%Anp(B`UhyBi4?dK}UGhEd7?E9ZZS9^*sV{AE`NX<|mIp34xIZO_V(v%QtV;T& z|Nc$ULswp?m{WK8lj{)!9Y@;q{^nG4@7o!JM@AQ}oiHfwK~h~kpL?Ohceig_!%8L< z#}A2^cx$KU_Pc7polZry4JEtS-9t6qoEf(>60W>ErhL}r;i-1XexUHXL+iqmD;fqj zFWus5%8&8rz28|<^e?$;*Y1mZJq}mJogbNR3{H!#z1q>)RQN^t#6#zfRd)E}HCOim zBQuBh+&FAfl2>Vc+^n~*e>&#c$rDRGwcOB106>Yb^5GXpC{ta<`S*QR2 diff --git a/windows/WebUIWrapper/Program.cs b/windows/WebUIWrapper/Program.cs index 3dfdb94f9..bfcdb8312 100644 --- a/windows/WebUIWrapper/Program.cs +++ b/windows/WebUIWrapper/Program.cs @@ -3,17 +3,87 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; +using System.Runtime.InteropServices; +using System.ComponentModel; namespace WebUIWrapper { + [ComImport, GuidAttribute("79EAC9EE-BAF9-11CE-8C82-00AA004BA90B"), + InterfaceTypeAttribute(ComInterfaceType.InterfaceIsIUnknown)] + public interface IInternetSecurityManager + { + [return: MarshalAs(UnmanagedType.I4)] + [PreserveSig] + int SetSecuritySite([In] IntPtr pSite); + + [return: MarshalAs(UnmanagedType.I4)] + [PreserveSig] + int GetSecuritySite([Out] IntPtr pSite); + + [return: MarshalAs(UnmanagedType.I4)] + [PreserveSig] + int MapUrlToZone([In, MarshalAs(UnmanagedType.LPWStr)] string pwszUrl, out UInt32 pdwZone, UInt32 dwFlags); + + [return: MarshalAs(UnmanagedType.I4)] + [PreserveSig] + int GetSecurityId([MarshalAs(UnmanagedType.LPWStr)] string pwszUrl, [MarshalAs(UnmanagedType.LPArray)] byte[] pbSecurityId, ref UInt32 pcbSecurityId, uint dwReserved); + + [return: MarshalAs(UnmanagedType.I4)] + [PreserveSig] + int ProcessUrlAction([In, MarshalAs(UnmanagedType.LPWStr)] string pwszUrl, UInt32 dwAction, out byte pPolicy, UInt32 cbPolicy, byte pContext, UInt32 cbContext, UInt32 dwFlags, UInt32 dwReserved); + + [return: MarshalAs(UnmanagedType.I4)] + [PreserveSig] + int QueryCustomPolicy([In, MarshalAs(UnmanagedType.LPWStr)] string pwszUrl, ref Guid guidKey, ref byte ppPolicy, ref UInt32 pcbPolicy, ref byte pContext, UInt32 cbContext, UInt32 dwReserved); + + [return: MarshalAs(UnmanagedType.I4)] + [PreserveSig] + int SetZoneMapping(UInt32 dwZone, [In, MarshalAs(UnmanagedType.LPWStr)] string lpszPattern, UInt32 dwFlags); + + [return: MarshalAs(UnmanagedType.I4)] + [PreserveSig] + int GetZoneMappings(UInt32 dwZone, out UCOMIEnumString ppenumString, UInt32 dwFlags); + } + static class Program { + // constants from urlmon.h + public const UInt32 URLZONE_LOCAL_MACHINE = 0; + public const UInt32 URLZONE_INTRANET = URLZONE_LOCAL_MACHINE + 1; + public const UInt32 URLZONE_TRUSTED = URLZONE_INTRANET + 1; + public const UInt32 URLZONE_INTERNET = URLZONE_TRUSTED + 1; + public const UInt32 URLZONE_UNTRUSTED = URLZONE_INTERNET + 1; + public const UInt32 URLZONE_ESC_FLAG = 0x100; + public const UInt32 SZM_CREATE = 0; + public const UInt32 SZM_DELETE = 0x1; + + public static Guid CLSID_InternetSecurityManager = new Guid("7b8a2d94-0ac9-11d1-896c-00c04fb6bfc4"); + public static Guid IID_IInternetSecurityManager = new Guid("79eac9ee-baf9-11ce-8c82-00aa004ba90b"); + /// /// The main entry point for the application. /// [STAThread] static void Main() { + try + { + Type t = Type.GetTypeFromCLSID(CLSID_InternetSecurityManager); + object securityManager = Activator.CreateInstance(t); + if (securityManager != null) + { + IInternetSecurityManager ism = (IInternetSecurityManager)securityManager; + ism.SetZoneMapping(URLZONE_TRUSTED, "http://127.0.0.1", SZM_CREATE); + ism.SetZoneMapping(URLZONE_INTRANET, "http://127.0.0.1", SZM_CREATE); + ism.SetZoneMapping(URLZONE_ESC_FLAG | URLZONE_TRUSTED, "http://127.0.0.1", SZM_CREATE); + ism.SetZoneMapping(URLZONE_ESC_FLAG | URLZONE_INTRANET, "http://127.0.0.1", SZM_CREATE); + } + } + catch + { + // Okay to continue if adding URL to trusted zone doesn't work... + } + Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1());