コード例 #1
0
        public static void Mock()
        {
            BHttpContext.SetCurrent();

            MHttpRequest          request  = new MHttpRequest();
            MHttpResponse         response = new MHttpResponse();
            MHttpCookieCollection cookies  = new MHttpCookieCollection();

            response.CookiesGet            = () => cookies;
            response.OnCookieAddHttpCookie = (cookie) => Nothing();
            response.RequestGet            = () => request;
            cookies.GetString = (key) => null;

            Dictionary <object, object> items    = new Dictionary <object, object>();
            Dictionary <string, string> reqItems = new Dictionary <string, string>();

            request.ItemGetString = (key) => reqItems.ContainsKey(key) ? reqItems[key] : null;


            new MHttpContext(BHttpContext.Current)
            {
                ItemsGet    = () => items,
                RequestGet  = () => request,
                ResponseGet = () => response
            };


            MHttpUtility.ParseQueryStringString = ParseQueryString;
            MHttpUtility.UrlEncodeString        = (url) => Uri.EscapeDataString(url).Replace("%20", "+");
        }
コード例 #2
0
        async Task MainBodyAsync(MHttpStream localStream)
        {
            try
            {
                while (true)
                {
                    MHttpRequest request = await MHttpRequest.ReadAsync(localStream, m_info.MaxContentSize).ConfigureAwait(false);

                    var sendFunc = CreateSendFunc(request);

                    if (request.Path.IndexOf("view_video.php?viewkey") != -1)
                    {
                        await GetSeleteHtmlAsync(sendFunc, localStream).ConfigureAwait(false);
                    }
                    else
                    {
                        await GetOneHtmlAsync(sendFunc, localStream).ConfigureAwait(false);
                    }
                }
            }
            finally
            {
                localStream?.Close();
            }
        }
コード例 #3
0
        static Func <MHttpStream, Task> CreateSendFunc(MHttpRequest request)
        {
            request.Headers.RemoveHopByHopHeaders();

            request.Headers.SetMyStandardRequestHeaders();


            request.Headers.Set("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36");

            return(request.CreateSendAsync());
        }
コード例 #4
0
        static void ReadConnectRequest(Socket socket, Func <string, TunnelPackAction> func)
        {
            Task.Run(async() =>
            {
                Stream stream = new NetworkStream(socket, true);

                MHttpStream httpStream = new MHttpStream(socket, stream, 1024);


                MHttpRequest request = await MHttpRequest.ReadAsync(httpStream, 1024 * 1024).ConfigureAwait(false);

                MHttpResponse response = MHttpResponse.Create(200);


                await response.SendAsync(httpStream).ConfigureAwait(false);

                Uri uri = new Uri($"http://{request.Path}/");

                func(uri.Host)(uri, new TunnelPack(socket, stream));
            });
        }