Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions homeassistant/components/http/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,7 @@
from .ban import setup_bans
from .cors import setup_cors
from .real_ip import setup_real_ip
from .static import (
CachingFileResponse, CachingStaticResource, staticresource_middleware)
from .static import CachingFileResponse, CachingStaticResource

# Import as alias
from .const import KEY_AUTHENTICATED, KEY_REAL_IP # noqa
Expand Down Expand Up @@ -192,8 +191,7 @@ def __init__(self, hass, api_password,
use_x_forwarded_for, trusted_proxies, trusted_networks,
login_threshold, is_ban_enabled, ssl_profile):
"""Initialize the HTTP Home Assistant server."""
app = self.app = web.Application(
middlewares=[staticresource_middleware])
app = self.app = web.Application(middlewares=[])

# This order matters
setup_real_ip(app, use_x_forwarded_for, trusted_proxies)
Expand Down
23 changes: 1 addition & 22 deletions homeassistant/components/http/static.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,10 @@
"""Static file handling for HTTP component."""

import re

from aiohttp import hdrs
from aiohttp.web import FileResponse, middleware
from aiohttp.web import FileResponse
from aiohttp.web_exceptions import HTTPNotFound
from aiohttp.web_urldispatcher import StaticResource
from yarl import URL

_FINGERPRINT = re.compile(r'^(.+)-[a-z0-9]{32}\.(\w+)$', re.IGNORECASE)


class CachingStaticResource(StaticResource):
"""Static Resource handler that will add cache headers."""
Expand Down Expand Up @@ -56,19 +51,3 @@ async def sendfile(request, fobj, count):

# Overwriting like this because __init__ can change implementation.
self._sendfile = sendfile


@middleware
async def staticresource_middleware(request, handler):
"""Middleware to strip out fingerprint from fingerprinted assets."""
path = request.path
if not path.startswith('/static/') and not path.startswith('/frontend'):
return await handler(request)

fingerprinted = _FINGERPRINT.match(request.match_info['filename'])

if fingerprinted:
request.match_info['filename'] = \
'{}.{}'.format(*fingerprinted.groups())

return await handler(request)