Coder Social home page Coder Social logo

slickproxy / dev Goto Github PK

View Code? Open in Web Editor NEW
5.0 2.0 0.0 149 KB

Simple and sweet Reverse Proxy written as OWIN Middleware

License: MIT License

C# 99.61% HTML 0.25% Batchfile 0.14%
proxy reverse-proxy owin owin-middleware microservice rewrite url-rewrite url-redirect url-redirection

dev's Introduction

NuGet version

Build status

For .NETFramework 4.5 and higher

var settings = new SlickProxySettings { CaseSensitive = false, RouteSameServerRewritesOverNetwork = false };

        app.UseSlickProxy(handle =>
            {
                handle.When(request => request.Path.EndsWith("/boo"), request => request.UseReferer($"{request.BaseAddressWithScheme}", request.ExtensionlessWithExtension("html")));
                handle.When(request => request.Path.EndsWith("/boo"), request => request.UseRequestHeaders(headers => headers["Referer"] = $"{request.BaseAddressWithScheme}", request.ExtensionlessWithExtension("html")));
                handle.When(request => request.Path.EndsWith("/index"), request => request.ExtensionlessWithExtension("html"));
                handle.When(request => request.Path.EndsWith("/indexString"), request => request.RespondWithString("what's up men!"));
                handle.When(request => request.Path.EndsWith("/indexObject"), request => request.RespondWithObjectAsJson(DateTime.UtcNow));
                handle.When("/cdn2/(.*)", request => request.ForwardToDomain("https://code.jquery.com"));
                handle.When("/cdn/(.*)", "/cdn/(.*)", request => $"{request.Scheme}://code.jquery.com/{request.Part(1)}");

                handle.When(request => request.QueryStringValueByName("link") == "hello", req => req.Deny());
                handle.When("(.*)", req => req.Allow());
                //the matches below will never be reached coz of the allow above
                handle.DenyAny(HttpStatusCode.BadRequest);
                handle.When("(.*)", req => req.DenyWith(HttpStatusCode.OK, null));

                handle.When(request => request.QueryStringContainsName("bad"), req => req.Deny());
                handle.When("/deny(.*)", request => request.HasNoQueryString(), req => req.Deny());

                var list = new List<string>
                    { "" };
                handle.When("/scene(.*)", req => list.Contains(req.QueryStringValueByName("link")), req => $"{req.BaseAddressWithScheme}");
            },settings);

dev's People

Contributors

contactsamie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.