html_url,issue_url,id,node_id,user,user_label,created_at,updated_at,author_association,body,reactions,issue,issue_label,performed_via_github_app https://github.com/simonw/datasette/pull/554#issuecomment-510558696,https://api.github.com/repos/simonw/datasette/issues/554,510558696,MDEyOklzc3VlQ29tbWVudDUxMDU1ODY5Ng==,9599,simonw,2019-07-11T16:29:25Z,2019-07-11T16:29:25Z,OWNER,Released as 0.29.1: https://datasette.readthedocs.io/en/latest/changelog.html#v0-29-1,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",465728430,Fix static mounts using relative paths and prevent traversal exploits, https://github.com/simonw/datasette/pull/554#issuecomment-510542280,https://api.github.com/repos/simonw/datasette/issues/554,510542280,MDEyOklzc3VlQ29tbWVudDUxMDU0MjI4MA==,9599,simonw,2019-07-11T15:47:31Z,2019-07-11T15:47:31Z,OWNER,"Thanks for this! The tests are failing for Python 3.5 right now which is strange. https://travis-ci.org/simonw/datasette/jobs/556272017 One failure looks like this: ``` app_client = def test_static(app_client): response = app_client.get(""/-/static/app2.css"") > assert response.status == 404 E assert 500 == 404 E + where 500 = .status /home/travis/build/simonw/datasette/tests/test_html.py:56: AssertionError ----------------------------- Captured stderr call ----------------------------- Traceback (most recent call last): File ""/home/travis/build/simonw/datasette/datasette/utils/asgi.py"", line 100, in __call__ return await view(new_scope, receive, send) File ""/home/travis/build/simonw/datasette/datasette/utils/asgi.py"", line 303, in inner_static full_path = (Path(root_path) / path).resolve().absolute() File ""/opt/python/3.5.6/lib/python3.5/pathlib.py"", line 1109, in resolve s = self._flavour.resolve(self) File ""/opt/python/3.5.6/lib/python3.5/pathlib.py"", line 330, in resolve return _resolve(base, str(path)) or sep File ""/opt/python/3.5.6/lib/python3.5/pathlib.py"", line 315, in _resolve target = accessor.readlink(newpath) File ""/opt/python/3.5.6/lib/python3.5/pathlib.py"", line 422, in readlink return os.readlink(path) FileNotFoundError: [Errno 2] No such file or directory: '/home/travis/build/simonw/datasette/datasette/static/app2.css' ``` Maybe an exception was renamed between 3.5 and 3.6?","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",465728430,Fix static mounts using relative paths and prevent traversal exploits, https://github.com/simonw/datasette/pull/554#issuecomment-509629331,https://api.github.com/repos/simonw/datasette/issues/554,509629331,MDEyOklzc3VlQ29tbWVudDUwOTYyOTMzMQ==,3243482,abdusco,2019-07-09T12:51:35Z,2019-07-09T12:51:35Z,CONTRIBUTOR,"I wanted to add a test for it too, but I've realized it's impossible to test a server process as we cannot get its exit code. ```python # tests/test_cli.py def test_static_mounts_on_windows(): if sys.platform != ""win32"": return runner = CliRunner() result = runner.invoke( cli, [""serve"", ""--static"", r""s:C:\\""] ) assert result.exit_code == 0 ```","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",465728430,Fix static mounts using relative paths and prevent traversal exploits, https://github.com/simonw/datasette/pull/554#issuecomment-509618339,https://api.github.com/repos/simonw/datasette/issues/554,509618339,MDEyOklzc3VlQ29tbWVudDUwOTYxODMzOQ==,3243482,abdusco,2019-07-09T12:16:32Z,2019-07-09T12:16:32Z,CONTRIBUTOR,I've also added another fix for using static mounts with absolute paths on Windows. ,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",465728430,Fix static mounts using relative paths and prevent traversal exploits,