@@ -56,14 +56,20 @@ public class QAVSWebViewClient : WebViewClient
5656 public override void OnPageFinished ( WebView view , string url )
5757 {
5858 CookieManager . Instance . Flush ( ) ;
59- if ( ! url . ToLower ( ) . Contains ( "localhost" ) && ! url . ToLower ( ) . Contains ( "http://127.0.0.1" ) )
59+ if ( ! url . ToLower ( ) . Contains ( "localhost" ) && ! url . ToLower ( ) . StartsWith ( "https://auth.meta.com" ) && ! url . ToLower ( ) . Contains ( "http://127.0.0.1" ) )
6060 {
6161 if ( injectedJs == "" )
6262 {
6363 // Load qavs_inject.js
6464 injectedJs = new StreamReader ( AndroidCore . assetManager . Open ( "html/qavs_inject.js" ) ) . ReadToEnd ( ) ;
6565 }
66- //view.EvaluateJavascript(injectedJs, null);
66+ view . EvaluateJavascript ( injectedJs . Replace ( "{0}" , CoreService . coreVars . serverPort . ToString ( ) ) , null ) ;
67+ }
68+
69+ if ( url . ToLower ( ) . StartsWith ( "https://auth.meta.com/settings/account/" ) )
70+ {
71+ // redirect to oculus page
72+ view . LoadUrl ( "https://oculus.com/experiences/quest" ) ;
6773 }
6874 }
6975
@@ -83,82 +89,6 @@ public override void OnPageFinished(WebView view, string url)
8389
8490 public override WebResourceResponse ShouldInterceptRequest ( WebView view , IWebResourceRequest request )
8591 {
86- string url = request . Url . ToString ( ) ;
87- if ( ( url . StartsWith ( "https://auth.meta.com/" ) || url . StartsWith ( "https://meta.com/" ) || url . StartsWith ( "https://facebook.com/" ) || url . StartsWith ( "https://oculus.com/" ) || url . StartsWith ( "https://auth.oculus.com/" ) ) )
88- {
89- if ( request . Method == "GET" )
90- {
91- // Handle response header injection by doing manual request with headers provided by request
92- // This is done because the webview doesn't allow you to modify response headers
93- HttpWebRequest req = ( HttpWebRequest ) WebRequest . Create ( url ) ;
94- req . Method = "GET" ;
95- req . UserAgent = CoreService . ua ;
96- foreach ( KeyValuePair < string , string > h in request . RequestHeaders )
97- {
98- Logger . Log ( h . Key + ": " + h . Value ) ;
99- if ( h . Key . ToLower ( ) == "user-agent" ) continue ;
100- else if ( h . Key . ToLower ( ) == "accept" ) req . Accept = h . Value ;
101- else if ( h . Key . ToLower ( ) == "referer" ) req . Referer = h . Value ;
102- else req . Headers [ h . Key ] = h . Value ;
103- }
104- Logger . Log ( "Getting response" ) ;
105- HttpWebResponse resp = ( HttpWebResponse ) req . GetResponse ( ) ;
106- Logger . Log ( "Getting response stream" ) ;
107- Stream s = resp . GetResponseStream ( ) ;
108- MemoryStream ms = new MemoryStream ( ) ;
109- s . CopyTo ( ms ) ;
110- byte [ ] data = ms . ToArray ( ) ;
111- ms . Close ( ) ;
112- s . Close ( ) ;
113- Logger . Log ( "Appending script tag" ) ;
114- //string html = Encoding.UTF8.GetString(data);
115- //html = html.Replace("</body>", "<script src=\"http://localhost:" + CoreService.coreVars.serverPort + "/inject.js\"></script></body>");
116- //data = Encoding.UTF8.GetBytes(html);
117- Logger . Log ( "Stream again" ) ;
118- ms = new MemoryStream ( data ) ;
119-
120- Logger . Log ( "Settings headers" ) ;
121- Dictionary < string , string > headers = new Dictionary < string , string > ( ) ;
122- string toRemove = "require-trusted-types-for 'script';" ;
123- Logger . Log ( resp . ContentType ) ;
124- Logger . Log ( resp . ContentEncoding ) ;
125- Logger . Log ( ( ( int ) resp . StatusCode ) . ToString ( ) ) ;
126- Logger . Log ( resp . StatusDescription ) ;
127- foreach ( string key in resp . Headers . Keys )
128- {
129- string headerValue = resp . Headers [ key ] ;
130- //headerValue = headerValue.Replace(toRemove, "");
131- if ( key . ToLower ( ) == "content-security-policy" )
132- {
133- //headerValue = resp.Headers[key].Replace("auth.meta.com", "auth.meta.com http://localhost:" + CoreService.coreVars.serverPort);
134- }
135- headers . Add ( key , headerValue ) ;
136- }
137- Logger . Log ( "Creating wrr" ) ;
138- string encoding = resp . ContentEncoding ;
139- if ( encoding == "" )
140- {
141- if ( resp . ContentType . Contains ( "charset" ) )
142- {
143- encoding = resp . ContentType . Split ( ';' ) . First ( x => x . Contains ( "charset" ) ) . Split ( '=' ) [ 1 ] . Replace ( "\" " , "" ) ;
144- }
145- else encoding = "utf-8" ;
146- }
147-
148- if ( resp . ContentType . Split ( ';' ) [ 0 ] != "text/html" )
149- {
150- // Handle request normally
151- return base . ShouldInterceptRequest ( view , request ) ;
152- }
153- Logger . Log ( "Doing manual request for " + url ) ;
154- WebResourceResponse wrr = new WebResourceResponse ( resp . ContentType . Split ( ';' ) [ 0 ] , encoding , ( int ) resp . StatusCode , resp . StatusDescription , headers , ms ) ;
155-
156-
157- return wrr ;
158- }
159- }
160-
161-
16292 return base . ShouldInterceptRequest ( view , request ) ;
16393
16494 foreach ( KeyValuePair < string , string > p in headers )
0 commit comments