Fixes for absolute links
This commit is contained in:
parent
f4fc947c62
commit
35c26d9387
@ -73,7 +73,7 @@
|
|||||||
var iframeWnd = $($("iframe")[0].contentWindow);
|
var iframeWnd = $($("iframe")[0].contentWindow);
|
||||||
|
|
||||||
// disable a links
|
// disable a links
|
||||||
$("iframe").contents().find("a").attr("href", "#");
|
//$("iframe").contents().find("a").attr("href", "#");
|
||||||
|
|
||||||
iframeWnd.on('click', function(event) {
|
iframeWnd.on('click', function(event) {
|
||||||
selectedElement = $(event.target).getPath();
|
selectedElement = $(event.target).getPath();
|
||||||
|
@ -40,6 +40,9 @@
|
|||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="{% url 'feeds' %}">Feeds</a>
|
<a class="nav-link" href="{% url 'feeds' %}">Feeds</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link" href="https://hipstercat.fr/gogs/hipstercat/hrss">Source code</a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
42
web/views.py
42
web/views.py
@ -3,15 +3,53 @@ from django.http import HttpResponse
|
|||||||
from .utils import *
|
from .utils import *
|
||||||
from .models import Feed
|
from .models import Feed
|
||||||
from django.db.models import ObjectDoesNotExist
|
from django.db.models import ObjectDoesNotExist
|
||||||
|
from bs4 import BeautifulSoup
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
|
|
||||||
|
|
||||||
def iframe(request, url):
|
def iframe(request, url):
|
||||||
|
content_type = False
|
||||||
try:
|
try:
|
||||||
html = requests.get(url).text
|
req = requests.get(url)
|
||||||
|
html = req.content
|
||||||
|
bs = False
|
||||||
|
|
||||||
|
content_type = req.headers["Content-Type"] if "Content-Type" in req.headers else False
|
||||||
|
|
||||||
|
if not content_type or content_type.startswith("text/html"):
|
||||||
|
bs = BeautifulSoup(html, 'html.parser')
|
||||||
|
base_scheme = url.split("://")[0]
|
||||||
|
base_url = url.split("//")[-1].split("/")[0].split('?')[0]
|
||||||
|
|
||||||
|
# fixes
|
||||||
|
# fix click links
|
||||||
|
all_a = bs.find_all("a")
|
||||||
|
for a in all_a:
|
||||||
|
a["href"] = "javascript:void(0)"
|
||||||
|
|
||||||
|
# fix absolute CSS
|
||||||
|
all_links = bs.find_all("link", {"href": True})
|
||||||
|
for link in all_links:
|
||||||
|
if link["href"].startswith("/"):
|
||||||
|
link["href"] = "/iframe/" + base_scheme + "://" + base_url + link["href"]
|
||||||
|
|
||||||
|
# fix absolute javascript
|
||||||
|
all_scripts = bs.find_all("script", {"src": True})
|
||||||
|
for script in all_scripts:
|
||||||
|
if script.get("src").startswith("/"):
|
||||||
|
script["src"] = "/iframe/" + base_scheme + "://" + base_url + script["src"]
|
||||||
|
|
||||||
|
# fix absolute images
|
||||||
|
all_imgs = bs.find_all("img", {"src": True})
|
||||||
|
for img in all_imgs:
|
||||||
|
if img.get("src").startswith("/"):
|
||||||
|
img["src"] = "/iframe/" + base_scheme + "://" + base_url + img["src"]
|
||||||
|
final_html = str(bs) if bs else html
|
||||||
|
html = final_html
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
html = str(e)
|
html = str(e)
|
||||||
return HttpResponse(html)
|
return HttpResponse(html, content_type=content_type)
|
||||||
|
|
||||||
def dummy(request):
|
def dummy(request):
|
||||||
return HttpResponse("toto")
|
return HttpResponse("toto")
|
||||||
|
Loading…
Reference in New Issue
Block a user