Latest commit

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

mod_proxy_content is a fork of mod_proxy_html intended for use with modern
web applications. It is based on mod_proxy_html 3.0.1, plus bug fixes made
through version 3.1.2. Development was funded by the Council of Better
Business Bureaus. It has been in production use at BBB since early 2009.
The main drawback of mod_proxy_html for modern web applications is that it
does not try to parse anything except HTML, though it is not unusual to
reference URLs within the application in both Javascript and CSS files.
While it is possible to force mod_proxy_html to parse these files and
write regular expressions that safely remap the URLs, it is tedious and
error-prone. mod_proxy_content solves this problem by doing the hard work
for you.
Configuration is the same as for mod_proxy_html, though mod_proxy_content
will process Javascript and CSS files without using PROXY_HTML_FORCE. It
uses the same mappings from ProxyHTMLURLMap directives, supplemented with
regular expressions that match only relevant parts of each type of content.
Here is a simple configuration, added to the sample proxy_html.conf, that
serves the content from two private servers through a single public server.
# foo.example.com -> www.example.com/foo/
ProxyPass /foo/ http://foo.example.com/
ProxyPassReverse /foo/ http://foo.example.com/
ProxyHTMLURLMap http://foo.example.com /foo
# bar.example.com -> www.example.com/bar/
ProxyPass /bar/ http://bar.example.com/
ProxyPassReverse /bar/ http://bar.example.com/
ProxyHTMLURLMap http://bar.example.com /bar
<LocationMatch (?i)^/foo/>
ProxyPassReverse /
SetOutputFilter proxy-content
RequestHeader unset Accept-Encoding
ProxyHTMLURLMap / /foo/
</LocationMatch>
<LocationMatch (?i)^/bar/>
ProxyPassReverse /
SetOutputFilter proxy-content
RequestHeader unset Accept-Encoding
ProxyHTMLURLMap / /bar/
</LocationMatch>
Sometimes, certain Javascript files will generate false hits and remapping
these files will break your web application. You can exclude certain files
from URL remapping:
<Location ~ /frame.js$>
ProxyHTMLFixups reset
</Location>
The rest of this file is the original README that shipped with
mod_proxy_html 3.1. WebThing DOES NOT support mod_proxy_content, though
the original documentation is a useful resource to understanding reverse
proxies and how to configure them.
DOCUMENTATION for this module is at
http://apache.webthing.com/mod_proxy_html/
UPGRADING: IMPORTANT NOTE
If you are upgrading from mod_proxy_html 2.x (or 1.x), you will need
some new configuration. You can Include proxy_html.conf from this
bundle in your httpd.conf (or apache.conf) to use Version 3 as a
drop-in replacement for Version 2.
WINDOWS USERS:
You may need to install some prerequisite libraries before you can
load mod_proxy_html into apache. If you don't already have them,
see the README at
http://apache.webthing.com/mod_proxy_html/windows/

About

A URL remapping filter Apache module for reverse proxies.

Resources

Stars

3 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

mod_proxy_content is a fork of mod_proxy_html intended for use with modern
web applications. It is based on mod_proxy_html 3.0.1, plus bug fixes made
through version 3.1.2. Development was funded by the Council of Better
Business Bureaus. It has been in production use at BBB since early 2009.
The main drawback of mod_proxy_html for modern web applications is that it
does not try to parse anything except HTML, though it is not unusual to
reference URLs within the application in both Javascript and CSS files.
While it is possible to force mod_proxy_html to parse these files and
write regular expressions that safely remap the URLs, it is tedious and
error-prone. mod_proxy_content solves this problem by doing the hard work
for you.
Configuration is the same as for mod_proxy_html, though mod_proxy_content
will process Javascript and CSS files without using PROXY_HTML_FORCE. It
uses the same mappings from ProxyHTMLURLMap directives, supplemented with
regular expressions that match only relevant parts of each type of content.
Here is a simple configuration, added to the sample proxy_html.conf, that
serves the content from two private servers through a single public server.
# foo.example.com -> www.example.com/foo/
ProxyPass /foo/ http://foo.example.com/
ProxyPassReverse /foo/ http://foo.example.com/
ProxyHTMLURLMap http://foo.example.com /foo
# bar.example.com -> www.example.com/bar/
ProxyPass /bar/ http://bar.example.com/
ProxyPassReverse /bar/ http://bar.example.com/
ProxyHTMLURLMap http://bar.example.com /bar
<LocationMatch (?i)^/foo/>
ProxyPassReverse /
SetOutputFilter proxy-content
RequestHeader unset Accept-Encoding
ProxyHTMLURLMap / /foo/
</LocationMatch>
<LocationMatch (?i)^/bar/>
ProxyPassReverse /
SetOutputFilter proxy-content
RequestHeader unset Accept-Encoding
ProxyHTMLURLMap / /bar/
</LocationMatch>
Sometimes, certain Javascript files will generate false hits and remapping
these files will break your web application. You can exclude certain files
from URL remapping:
<Location ~ /frame.js$>
ProxyHTMLFixups reset
</Location>
The rest of this file is the original README that shipped with
mod_proxy_html 3.1. WebThing DOES NOT support mod_proxy_content, though
the original documentation is a useful resource to understanding reverse
proxies and how to configure them.
DOCUMENTATION for this module is at
http://apache.webthing.com/mod_proxy_html/
UPGRADING: IMPORTANT NOTE
If you are upgrading from mod_proxy_html 2.x (or 1.x), you will need
some new configuration. You can Include proxy_html.conf from this
bundle in your httpd.conf (or apache.conf) to use Version 3 as a
drop-in replacement for Version 2.
WINDOWS USERS:
You may need to install some prerequisite libraries before you can
load mod_proxy_html into apache. If you don't already have them,
see the README at
http://apache.webthing.com/mod_proxy_html/windows/

About

A URL remapping filter Apache module for reverse proxies.

Resources

Stars

3 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

mod_proxy_content is a fork of mod_proxy_html intended for use with modern
web applications. It is based on mod_proxy_html 3.0.1, plus bug fixes made
through version 3.1.2. Development was funded by the Council of Better
Business Bureaus. It has been in production use at BBB since early 2009.
The main drawback of mod_proxy_html for modern web applications is that it
does not try to parse anything except HTML, though it is not unusual to
reference URLs within the application in both Javascript and CSS files.
While it is possible to force mod_proxy_html to parse these files and
write regular expressions that safely remap the URLs, it is tedious and
error-prone. mod_proxy_content solves this problem by doing the hard work
for you.
Configuration is the same as for mod_proxy_html, though mod_proxy_content
will process Javascript and CSS files without using PROXY_HTML_FORCE. It
uses the same mappings from ProxyHTMLURLMap directives, supplemented with
regular expressions that match only relevant parts of each type of content.
Here is a simple configuration, added to the sample proxy_html.conf, that
serves the content from two private servers through a single public server.
# foo.example.com -> www.example.com/foo/
ProxyPass /foo/ http://foo.example.com/
ProxyPassReverse /foo/ http://foo.example.com/
ProxyHTMLURLMap http://foo.example.com /foo
# bar.example.com -> www.example.com/bar/
ProxyPass /bar/ http://bar.example.com/
ProxyPassReverse /bar/ http://bar.example.com/
ProxyHTMLURLMap http://bar.example.com /bar
<LocationMatch (?i)^/foo/>
ProxyPassReverse /
SetOutputFilter proxy-content
RequestHeader unset Accept-Encoding
ProxyHTMLURLMap / /foo/
</LocationMatch>
<LocationMatch (?i)^/bar/>
ProxyPassReverse /
SetOutputFilter proxy-content
RequestHeader unset Accept-Encoding
ProxyHTMLURLMap / /bar/
</LocationMatch>
Sometimes, certain Javascript files will generate false hits and remapping
these files will break your web application. You can exclude certain files
from URL remapping:
<Location ~ /frame.js$>
ProxyHTMLFixups reset
</Location>
The rest of this file is the original README that shipped with
mod_proxy_html 3.1. WebThing DOES NOT support mod_proxy_content, though
the original documentation is a useful resource to understanding reverse
proxies and how to configure them.
DOCUMENTATION for this module is at
http://apache.webthing.com/mod_proxy_html/
UPGRADING: IMPORTANT NOTE
If you are upgrading from mod_proxy_html 2.x (or 1.x), you will need
some new configuration. You can Include proxy_html.conf from this
bundle in your httpd.conf (or apache.conf) to use Version 3 as a
drop-in replacement for Version 2.
WINDOWS USERS:
You may need to install some prerequisite libraries before you can
load mod_proxy_html into apache. If you don't already have them,
see the README at
http://apache.webthing.com/mod_proxy_html/windows/

About

A URL remapping filter Apache module for reverse proxies.

Resources

Stars

3 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

mod_proxy_content is a fork of mod_proxy_html intended for use with modern
web applications. It is based on mod_proxy_html 3.0.1, plus bug fixes made
through version 3.1.2. Development was funded by the Council of Better
Business Bureaus. It has been in production use at BBB since early 2009.
The main drawback of mod_proxy_html for modern web applications is that it
does not try to parse anything except HTML, though it is not unusual to
reference URLs within the application in both Javascript and CSS files.
While it is possible to force mod_proxy_html to parse these files and
write regular expressions that safely remap the URLs, it is tedious and
error-prone. mod_proxy_content solves this problem by doing the hard work
for you.
Configuration is the same as for mod_proxy_html, though mod_proxy_content
will process Javascript and CSS files without using PROXY_HTML_FORCE. It
uses the same mappings from ProxyHTMLURLMap directives, supplemented with
regular expressions that match only relevant parts of each type of content.
Here is a simple configuration, added to the sample proxy_html.conf, that
serves the content from two private servers through a single public server.
# foo.example.com -> www.example.com/foo/
ProxyPass /foo/ http://foo.example.com/
ProxyPassReverse /foo/ http://foo.example.com/
ProxyHTMLURLMap http://foo.example.com /foo
# bar.example.com -> www.example.com/bar/
ProxyPass /bar/ http://bar.example.com/
ProxyPassReverse /bar/ http://bar.example.com/
ProxyHTMLURLMap http://bar.example.com /bar
<LocationMatch (?i)^/foo/>
ProxyPassReverse /
SetOutputFilter proxy-content
RequestHeader unset Accept-Encoding
ProxyHTMLURLMap / /foo/
</LocationMatch>
<LocationMatch (?i)^/bar/>
ProxyPassReverse /
SetOutputFilter proxy-content
RequestHeader unset Accept-Encoding
ProxyHTMLURLMap / /bar/
</LocationMatch>
Sometimes, certain Javascript files will generate false hits and remapping
these files will break your web application. You can exclude certain files
from URL remapping:
<Location ~ /frame.js$>
ProxyHTMLFixups reset
</Location>
The rest of this file is the original README that shipped with
mod_proxy_html 3.1. WebThing DOES NOT support mod_proxy_content, though
the original documentation is a useful resource to understanding reverse
proxies and how to configure them.
DOCUMENTATION for this module is at
http://apache.webthing.com/mod_proxy_html/
UPGRADING: IMPORTANT NOTE
If you are upgrading from mod_proxy_html 2.x (or 1.x), you will need
some new configuration. You can Include proxy_html.conf from this
bundle in your httpd.conf (or apache.conf) to use Version 3 as a
drop-in replacement for Version 2.
WINDOWS USERS:
You may need to install some prerequisite libraries before you can
load mod_proxy_html into apache. If you don't already have them,
see the README at
http://apache.webthing.com/mod_proxy_html/windows/

About

A URL remapping filter Apache module for reverse proxies.

Resources

Stars

3 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

mod_proxy_content is a fork of mod_proxy_html intended for use with modern
web applications. It is based on mod_proxy_html 3.0.1, plus bug fixes made
through version 3.1.2. Development was funded by the Council of Better
Business Bureaus. It has been in production use at BBB since early 2009.
The main drawback of mod_proxy_html for modern web applications is that it
does not try to parse anything except HTML, though it is not unusual to
reference URLs within the application in both Javascript and CSS files.
While it is possible to force mod_proxy_html to parse these files and
write regular expressions that safely remap the URLs, it is tedious and
error-prone. mod_proxy_content solves this problem by doing the hard work
for you.
Configuration is the same as for mod_proxy_html, though mod_proxy_content
will process Javascript and CSS files without using PROXY_HTML_FORCE. It
uses the same mappings from ProxyHTMLURLMap directives, supplemented with
regular expressions that match only relevant parts of each type of content.
Here is a simple configuration, added to the sample proxy_html.conf, that
serves the content from two private servers through a single public server.
# foo.example.com -> www.example.com/foo/
ProxyPass /foo/ http://foo.example.com/
ProxyPassReverse /foo/ http://foo.example.com/
ProxyHTMLURLMap http://foo.example.com /foo
# bar.example.com -> www.example.com/bar/
ProxyPass /bar/ http://bar.example.com/
ProxyPassReverse /bar/ http://bar.example.com/
ProxyHTMLURLMap http://bar.example.com /bar
<LocationMatch (?i)^/foo/>
ProxyPassReverse /
SetOutputFilter proxy-content
RequestHeader unset Accept-Encoding
ProxyHTMLURLMap / /foo/
</LocationMatch>
<LocationMatch (?i)^/bar/>
ProxyPassReverse /
SetOutputFilter proxy-content
RequestHeader unset Accept-Encoding
ProxyHTMLURLMap / /bar/
</LocationMatch>
Sometimes, certain Javascript files will generate false hits and remapping
these files will break your web application. You can exclude certain files
from URL remapping:
<Location ~ /frame.js$>
ProxyHTMLFixups reset
</Location>
The rest of this file is the original README that shipped with
mod_proxy_html 3.1. WebThing DOES NOT support mod_proxy_content, though
the original documentation is a useful resource to understanding reverse
proxies and how to configure them.
DOCUMENTATION for this module is at
http://apache.webthing.com/mod_proxy_html/
UPGRADING: IMPORTANT NOTE
If you are upgrading from mod_proxy_html 2.x (or 1.x), you will need
some new configuration. You can Include proxy_html.conf from this
bundle in your httpd.conf (or apache.conf) to use Version 3 as a
drop-in replacement for Version 2.
WINDOWS USERS:
You may need to install some prerequisite libraries before you can
load mod_proxy_html into apache. If you don't already have them,
see the README at
http://apache.webthing.com/mod_proxy_html/windows/

About

A URL remapping filter Apache module for reverse proxies.

Resources

Stars

3 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

mod_proxy_content is a fork of mod_proxy_html intended for use with modern
web applications. It is based on mod_proxy_html 3.0.1, plus bug fixes made
through version 3.1.2. Development was funded by the Council of Better
Business Bureaus. It has been in production use at BBB since early 2009.
The main drawback of mod_proxy_html for modern web applications is that it
does not try to parse anything except HTML, though it is not unusual to
reference URLs within the application in both Javascript and CSS files.
While it is possible to force mod_proxy_html to parse these files and
write regular expressions that safely remap the URLs, it is tedious and
error-prone. mod_proxy_content solves this problem by doing the hard work
for you.
Configuration is the same as for mod_proxy_html, though mod_proxy_content
will process Javascript and CSS files without using PROXY_HTML_FORCE. It
uses the same mappings from ProxyHTMLURLMap directives, supplemented with
regular expressions that match only relevant parts of each type of content.
Here is a simple configuration, added to the sample proxy_html.conf, that
serves the content from two private servers through a single public server.
# foo.example.com -> www.example.com/foo/
ProxyPass /foo/ http://foo.example.com/
ProxyPassReverse /foo/ http://foo.example.com/
ProxyHTMLURLMap http://foo.example.com /foo
# bar.example.com -> www.example.com/bar/
ProxyPass /bar/ http://bar.example.com/
ProxyPassReverse /bar/ http://bar.example.com/
ProxyHTMLURLMap http://bar.example.com /bar
<LocationMatch (?i)^/foo/>
ProxyPassReverse /
SetOutputFilter proxy-content
RequestHeader unset Accept-Encoding
ProxyHTMLURLMap / /foo/
</LocationMatch>
<LocationMatch (?i)^/bar/>
ProxyPassReverse /
SetOutputFilter proxy-content
RequestHeader unset Accept-Encoding
ProxyHTMLURLMap / /bar/
</LocationMatch>
Sometimes, certain Javascript files will generate false hits and remapping
these files will break your web application. You can exclude certain files
from URL remapping:
<Location ~ /frame.js$>
ProxyHTMLFixups reset
</Location>
The rest of this file is the original README that shipped with
mod_proxy_html 3.1. WebThing DOES NOT support mod_proxy_content, though
the original documentation is a useful resource to understanding reverse
proxies and how to configure them.
DOCUMENTATION for this module is at
http://apache.webthing.com/mod_proxy_html/
UPGRADING: IMPORTANT NOTE
If you are upgrading from mod_proxy_html 2.x (or 1.x), you will need
some new configuration. You can Include proxy_html.conf from this
bundle in your httpd.conf (or apache.conf) to use Version 3 as a
drop-in replacement for Version 2.
WINDOWS USERS:
You may need to install some prerequisite libraries before you can
load mod_proxy_html into apache. If you don't already have them,
see the README at
http://apache.webthing.com/mod_proxy_html/windows/

About

A URL remapping filter Apache module for reverse proxies.

Resources

Stars

3 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

mod_proxy_content is a fork of mod_proxy_html intended for use with modern
web applications. It is based on mod_proxy_html 3.0.1, plus bug fixes made
through version 3.1.2. Development was funded by the Council of Better
Business Bureaus. It has been in production use at BBB since early 2009.
The main drawback of mod_proxy_html for modern web applications is that it
does not try to parse anything except HTML, though it is not unusual to
reference URLs within the application in both Javascript and CSS files.
While it is possible to force mod_proxy_html to parse these files and
write regular expressions that safely remap the URLs, it is tedious and
error-prone. mod_proxy_content solves this problem by doing the hard work
for you.
Configuration is the same as for mod_proxy_html, though mod_proxy_content
will process Javascript and CSS files without using PROXY_HTML_FORCE. It
uses the same mappings from ProxyHTMLURLMap directives, supplemented with
regular expressions that match only relevant parts of each type of content.
Here is a simple configuration, added to the sample proxy_html.conf, that
serves the content from two private servers through a single public server.
# foo.example.com -> www.example.com/foo/
ProxyPass /foo/ http://foo.example.com/
ProxyPassReverse /foo/ http://foo.example.com/
ProxyHTMLURLMap http://foo.example.com /foo
# bar.example.com -> www.example.com/bar/
ProxyPass /bar/ http://bar.example.com/
ProxyPassReverse /bar/ http://bar.example.com/
ProxyHTMLURLMap http://bar.example.com /bar
<LocationMatch (?i)^/foo/>
ProxyPassReverse /
SetOutputFilter proxy-content
RequestHeader unset Accept-Encoding
ProxyHTMLURLMap / /foo/
</LocationMatch>
<LocationMatch (?i)^/bar/>
ProxyPassReverse /
SetOutputFilter proxy-content
RequestHeader unset Accept-Encoding
ProxyHTMLURLMap / /bar/
</LocationMatch>
Sometimes, certain Javascript files will generate false hits and remapping
these files will break your web application. You can exclude certain files
from URL remapping:
<Location ~ /frame.js$>
ProxyHTMLFixups reset
</Location>
The rest of this file is the original README that shipped with
mod_proxy_html 3.1. WebThing DOES NOT support mod_proxy_content, though
the original documentation is a useful resource to understanding reverse
proxies and how to configure them.
DOCUMENTATION for this module is at
http://apache.webthing.com/mod_proxy_html/
UPGRADING: IMPORTANT NOTE
If you are upgrading from mod_proxy_html 2.x (or 1.x), you will need
some new configuration. You can Include proxy_html.conf from this
bundle in your httpd.conf (or apache.conf) to use Version 3 as a
drop-in replacement for Version 2.
WINDOWS USERS:
You may need to install some prerequisite libraries before you can
load mod_proxy_html into apache. If you don't already have them,
see the README at
http://apache.webthing.com/mod_proxy_html/windows/

About

A URL remapping filter Apache module for reverse proxies.

Resources

Stars

3 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

mod_proxy_content is a fork of mod_proxy_html intended for use with modern
web applications. It is based on mod_proxy_html 3.0.1, plus bug fixes made
through version 3.1.2. Development was funded by the Council of Better
Business Bureaus. It has been in production use at BBB since early 2009.
The main drawback of mod_proxy_html for modern web applications is that it
does not try to parse anything except HTML, though it is not unusual to
reference URLs within the application in both Javascript and CSS files.
While it is possible to force mod_proxy_html to parse these files and
write regular expressions that safely remap the URLs, it is tedious and
error-prone. mod_proxy_content solves this problem by doing the hard work
for you.
Configuration is the same as for mod_proxy_html, though mod_proxy_content
will process Javascript and CSS files without using PROXY_HTML_FORCE. It
uses the same mappings from ProxyHTMLURLMap directives, supplemented with
regular expressions that match only relevant parts of each type of content.
Here is a simple configuration, added to the sample proxy_html.conf, that
serves the content from two private servers through a single public server.
# foo.example.com -> www.example.com/foo/
ProxyPass /foo/ http://foo.example.com/
ProxyPassReverse /foo/ http://foo.example.com/
ProxyHTMLURLMap http://foo.example.com /foo
# bar.example.com -> www.example.com/bar/
ProxyPass /bar/ http://bar.example.com/
ProxyPassReverse /bar/ http://bar.example.com/
ProxyHTMLURLMap http://bar.example.com /bar
<LocationMatch (?i)^/foo/>
ProxyPassReverse /
SetOutputFilter proxy-content
RequestHeader unset Accept-Encoding
ProxyHTMLURLMap / /foo/
</LocationMatch>
<LocationMatch (?i)^/bar/>
ProxyPassReverse /
SetOutputFilter proxy-content
RequestHeader unset Accept-Encoding
ProxyHTMLURLMap / /bar/
</LocationMatch>
Sometimes, certain Javascript files will generate false hits and remapping
these files will break your web application. You can exclude certain files
from URL remapping:
<Location ~ /frame.js$>
ProxyHTMLFixups reset
</Location>
The rest of this file is the original README that shipped with
mod_proxy_html 3.1. WebThing DOES NOT support mod_proxy_content, though
the original documentation is a useful resource to understanding reverse
proxies and how to configure them.
DOCUMENTATION for this module is at
http://apache.webthing.com/mod_proxy_html/
UPGRADING: IMPORTANT NOTE
If you are upgrading from mod_proxy_html 2.x (or 1.x), you will need
some new configuration. You can Include proxy_html.conf from this
bundle in your httpd.conf (or apache.conf) to use Version 3 as a
drop-in replacement for Version 2.
WINDOWS USERS:
You may need to install some prerequisite libraries before you can
load mod_proxy_html into apache. If you don't already have them,
see the README at
http://apache.webthing.com/mod_proxy_html/windows/

About

A URL remapping filter Apache module for reverse proxies.

Resources

Stars

3 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages