"captive frame" content injection to display banner on every page loaded?

  • I've spent 2 days googling this question and I'm surprised it doesn't show up more often (unless I don't know the correct name for this feature – "captive frame"? or maybe "content injection"?).

    In airport or cafe wifi hotspots, there is often a persistent banner at the top of every web page you view.  This might just have the name of the cafe or information like time before your free session expires, etc.  Is it possible to do this in some graceful way with pfsense?  I have a captive portal set up and running fine and I would like to inject a javascript banner into every web page loaded.  Here is similar functionality using coova-chilli (but I already use and love pfsense):


    Granted it is possible to set up a squid server and modify all cached content before delivery, but this seems like overkill.  Any suggestions?  Am I just missing some obvious way to implement this?  Thanks!

  • Rebel Alliance Developer Netgate

    The only way I'm aware of is via squid and custom scripts that work with it. There are probably other ways, but nothing in the GUI would do that.

  • No pfSense does not do this.
    Because you have to proxy every connection going through port 80, 443 and add the banner.

  • i too would like to have something like this.

    Perhaps a small banner on top, maybe 12px in height, displaying Captive Portal session time and a Logout button.

    I am using Squid transparent for everybody (but they have to logon to CP first). Would you think this is possible using Squid?

  • I was looking exactly for this and found this recent post. Any clue on this? If it is about programming, any clue to begin?

  • Sounds cool. Especially for captive portal session time :)

  • This is a good idea

  • This is an awesome idea

    Someone should put in a bounty for it

  • What about instead of redirecting to 'original URL' when passed the portal, redirect to a framed page with banner in one frame, 'original URL' in the other?

Log in to reply