From 86c1e6f35a2fd5b4c19c98ae60a54a8d0bd74cbe Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Sat, 10 Sep 2016 19:53:17 +0100 Subject: [PATCH 01/25] Update GPG key --- public/assets/jonnybarnes-public-key-ecc.asc | 32 +++++------- public/assets/jonnybarnes-public-key.asc | 52 -------------------- 2 files changed, 13 insertions(+), 71 deletions(-) delete mode 100644 public/assets/jonnybarnes-public-key.asc diff --git a/public/assets/jonnybarnes-public-key-ecc.asc b/public/assets/jonnybarnes-public-key-ecc.asc index 29458716..8b978b3b 100644 --- a/public/assets/jonnybarnes-public-key-ecc.asc +++ b/public/assets/jonnybarnes-public-key-ecc.asc @@ -1,22 +1,16 @@ -----BEGIN PGP PUBLIC KEY BLOCK----- -mHMEVLAKNRMJKyQDAwIIAQELAwMEXwZt3GCBMfYdy4E6SYBlhI5OWB5KLWDJIszb -rHVk1lFzuCh8v9vO3TMJipved89lKdsqc8xa1rtUhDUSyk3DN6G9EA8CaZzPAI0W -3rIIjKr/6XdsrCbr4uBm8pfxojlrtCNKb25ueSBCYXJuZXMgPGpvbm55QGpvbm55 -YmFybmVzLnVrPoifBBMTCgAnAhsDBQsJCAcDBRUKCQgLBRYDAgEAAh4BAheABQJW -jWw8BQkDvpWHAAoJEE6N3A7eXSOmEV0Bf1mwzjzKSZvn5l/VhQTrMbM47K82w/wj -JYF9ZTy1jmXTWTMB3grnjB+VhkF0fJEO7QF+N6EULNZu9xpUX00LfasRvjhDQEoZ -GWLJWuES3pIheS2wUKScnVxv/3Ntxl9DZyBRuHcEVLAKNRIJKyQDAwIIAQELAwME -MyNUNRiVoPuUZHkZmoR2fP0j2d6ukPxSyIwE1i0SOokPgh2ho9az2i1JuEJnAJdC -Jk7anTWqVIVDqY24BPdCAq3Tevvw6ZxYTX5syhQ06rP5fmA9qRvaJMj96bUk2I7U -AwEJCYiHBBgTCgAPAhsMBQJWjWxuBQkDvpW5AAoJEE6N3A7eXSOmEE4Bfj2IlY+w -66UuDaZubytEJ7RqZjxroSTygbFzmrrPcyeJo34spa97on2RJa3I1SUEqAF/ZXkY -dwnMIGjsQFhmp0v0SeQqRKzQ0UsP4X/fCMhXcq1qvSZvp0xGd88OIawGL5YauDME -VLBHDxYJKwYBBAHaRw8BAQdAN3zPDRahp3XZ2Q6SJcE4s36GziDIEOLq+jYZVTjG -mQ6I5wQYEwoADwIbAgUCVo1sjAUJA75Y/QBqXyAEGRYKAAYFAlSwRw8ACgkQzehE -GPNsf3t+2wEA4ZD2Fpw9oZuDVLKUfY2/7WvG9MFTJmhO7j6N2C8rdYgBAIm15ezk -A2DUCxDKmufsYrkp73nyB/5jq0++qdFXI2oMCRBOjdwO3l0jpm9FAX49J1fL41ZU -7QpJFEd8gJbYwjCu93YuIP6xpgSfNzE7y4Yl3fYEihmo21aEpeuxIY4BfiNY6r/z -e5MEKgkw5EYZZK295zhyzZUh0k+0Aezlj1G9faAWgasI+Hp4ATIicNunng== -=uwJN +mG8EV0W04xMFK4EEACIDAwSZOjA8NdI6UvbI/Sqw8LfpckfDXMuiowrVgcANjhDr +vQtvr0bYm7RnNlbiuwTQHQ064H3pwjJJYC12I5B6q1Is7h4PYzU4/ahtisb03U/Q +ThDDuWxDKQq2hcyfrNI02KO0I0pvbm55IEJhcm5lcyA8am9ubnlAam9ubnliYXJu +ZXMudWs+iJ8EExMKACcFAldFtOMCGwMFCQHhM4AFCwkIBwMFFQoJCAsFFgMCAQAC +HgECF4AACgkQGyx2r7FshZvSrAF+KMkuQT9BQfuIABIsO0PelQazXdNTKevOXafw +106fCYlMN0Hp4VPn5fECCa7D6jbzAX4wwSrN/4QuqMTKT8NlpncqD1wlACbfJtzT +AUrL+SpDYdhNoXAQbd0DJ8UN12S5oMS4cwRXRbTjEgUrgQQAIgMDBHSZG2tOrrTg +IWIDw51BHvsBVzyVGs3EU/Cju4lawgQ8E1VMdqwLg4JcC8aCb1s+CBBQ2g5Dh9QI +2YCCxV4alhD9vrubTJ2qNysel3R8hFsrmTJZi9g9GxnqZOCIqiytkgMBCQmIhwQY +EwoADwUCV0W04wIbDAUJAeEzgAAKCRAbLHavsWyFm5pnAYDDGoSt9oVjs8MrPNZj +POjI5i6+rP2D7t+ceSnhYfJ6m1pn85qb4kOOsiOtf3sB4IABgIRdK3p4ir1x6ikh +3RM9aDM/2ZzrI4t1TpPDWtkqXf9RdpGy7qG7IM9TNq1PY1EOrQ== +=zu6v -----END PGP PUBLIC KEY BLOCK----- diff --git a/public/assets/jonnybarnes-public-key.asc b/public/assets/jonnybarnes-public-key.asc deleted file mode 100644 index 25e990db..00000000 --- a/public/assets/jonnybarnes-public-key.asc +++ /dev/null @@ -1,52 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- -Version: GnuPG v2 - -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 -igdpfiESmrELanSGdSsSBtieo+imJ3G3xmj2vrs= -=dnNH ------END PGP PUBLIC KEY BLOCK----- From 90cecd7a9d29ca73f7be60f47763c1b765ceec64 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Mon, 12 Sep 2016 13:42:58 +0100 Subject: [PATCH 02/25] Update changelog to mention new gpg key --- changelog.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/changelog.md b/changelog.md index f6a4b5b3..7c0cf328 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,8 @@ # Changelog +## Version {next} + - update linked GPG key + ## Version 0.0.10 (2016-09-10) - Add an artisan command for sensiolab’s security check - Remove `filp/whoops`, just use Laravel’s error reporting From 009be0250c96ddb0c3748e492514026194469962 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Wed, 14 Sep 2016 17:56:15 +0100 Subject: [PATCH 03/25] Add integrity values to external assets --- resources/views/admin/newnote.blade.php | 4 ++-- resources/views/admin/newplace.blade.php | 4 ++-- resources/views/allnotes.blade.php | 4 ++-- resources/views/master.blade.php | 2 +- resources/views/micropubnewnotepage.blade.php | 4 ++-- resources/views/singlenote.blade.php | 4 ++-- resources/views/singleplace.blade.php | 4 ++-- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/resources/views/admin/newnote.blade.php b/resources/views/admin/newnote.blade.php index d1b727ea..6cb7e0f0 100644 --- a/resources/views/admin/newnote.blade.php +++ b/resources/views/admin/newnote.blade.php @@ -22,8 +22,8 @@ New Note « Admin CP @stop @section('scripts') - - + + diff --git a/resources/views/admin/newplace.blade.php b/resources/views/admin/newplace.blade.php index 046a1dd8..cdbd01fa 100644 --- a/resources/views/admin/newplace.blade.php +++ b/resources/views/admin/newplace.blade.php @@ -19,8 +19,8 @@ New Place « Admin CP @stop @section('scripts') - - + + @stop diff --git a/resources/views/allnotes.blade.php b/resources/views/allnotes.blade.php index 92d790b6..0a5ce0f4 100644 --- a/resources/views/allnotes.blade.php +++ b/resources/views/allnotes.blade.php @@ -19,8 +19,8 @@ Notes « Jonny Barnes @stop @section('scripts') - - + + diff --git a/resources/views/master.blade.php b/resources/views/master.blade.php index e03fe4f8..46b7e0b4 100644 --- a/resources/views/master.blade.php +++ b/resources/views/master.blade.php @@ -30,7 +30,7 @@
@yield('content')
- + @section('scripts') diff --git a/resources/views/micropubnewnotepage.blade.php b/resources/views/micropubnewnotepage.blade.php index db39670c..8127aef2 100644 --- a/resources/views/micropubnewnotepage.blade.php +++ b/resources/views/micropubnewnotepage.blade.php @@ -32,8 +32,8 @@ New Note « Jonny Barnes @stop @section('scripts') - - + + diff --git a/resources/views/singlenote.blade.php b/resources/views/singlenote.blade.php index 9c5f6525..210965c9 100644 --- a/resources/views/singlenote.blade.php +++ b/resources/views/singlenote.blade.php @@ -31,8 +31,8 @@ @stop @section('scripts') - - + + diff --git a/resources/views/singleplace.blade.php b/resources/views/singleplace.blade.php index 3c58a2e3..0511736c 100644 --- a/resources/views/singleplace.blade.php +++ b/resources/views/singleplace.blade.php @@ -14,8 +14,8 @@ @stop @section('scripts') - - + + @stop From 7f68b7a57e789b2845e66d1a95935a03be305aa6 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Wed, 14 Sep 2016 17:57:08 +0100 Subject: [PATCH 04/25] Update changelog --- changelog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.md b/changelog.md index 7c0cf328..3d66b8ca 100644 --- a/changelog.md +++ b/changelog.md @@ -2,6 +2,7 @@ ## Version {next} - update linked GPG key + - Added `integrity` values to external assets ## Version 0.0.10 (2016-09-10) - Add an artisan command for sensiolab’s security check From 6c3067305643b6b8db1fb98d414fa473557bf148 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Wed, 14 Sep 2016 18:31:57 +0100 Subject: [PATCH 05/25] Move mapbox links into its own sub-view --- resources/views/admin/newnote.blade.php | 3 +-- resources/views/admin/newplace.blade.php | 3 +-- resources/views/allnotes.blade.php | 3 +-- resources/views/micropubnewnotepage.blade.php | 3 +-- resources/views/singlenote.blade.php | 3 +-- resources/views/singleplace.blade.php | 3 +-- resources/views/templates/mapbox-links.blade.php | 2 ++ 7 files changed, 8 insertions(+), 12 deletions(-) create mode 100644 resources/views/templates/mapbox-links.blade.php diff --git a/resources/views/admin/newnote.blade.php b/resources/views/admin/newnote.blade.php index 6cb7e0f0..4a0e39ca 100644 --- a/resources/views/admin/newnote.blade.php +++ b/resources/views/admin/newnote.blade.php @@ -22,8 +22,7 @@ New Note « Admin CP @stop @section('scripts') - - +@include('templates.mapbox-links') diff --git a/resources/views/admin/newplace.blade.php b/resources/views/admin/newplace.blade.php index cdbd01fa..17e49327 100644 --- a/resources/views/admin/newplace.blade.php +++ b/resources/views/admin/newplace.blade.php @@ -19,8 +19,7 @@ New Place « Admin CP @stop @section('scripts') - - +@include('templates.mapbox-links') @stop diff --git a/resources/views/allnotes.blade.php b/resources/views/allnotes.blade.php index 0a5ce0f4..9e89f395 100644 --- a/resources/views/allnotes.blade.php +++ b/resources/views/allnotes.blade.php @@ -19,8 +19,7 @@ Notes « Jonny Barnes @stop @section('scripts') - - +@include('templates.mapbox-links') diff --git a/resources/views/micropubnewnotepage.blade.php b/resources/views/micropubnewnotepage.blade.php index 8127aef2..4a823358 100644 --- a/resources/views/micropubnewnotepage.blade.php +++ b/resources/views/micropubnewnotepage.blade.php @@ -32,8 +32,7 @@ New Note « Jonny Barnes @stop @section('scripts') - - +@include('templates.mapbox-links') diff --git a/resources/views/singlenote.blade.php b/resources/views/singlenote.blade.php index 210965c9..822fb8f1 100644 --- a/resources/views/singlenote.blade.php +++ b/resources/views/singlenote.blade.php @@ -31,8 +31,7 @@ @stop @section('scripts') - - +@include('templates.mapbox-links') diff --git a/resources/views/singleplace.blade.php b/resources/views/singleplace.blade.php index 0511736c..55530c70 100644 --- a/resources/views/singleplace.blade.php +++ b/resources/views/singleplace.blade.php @@ -14,8 +14,7 @@ @stop @section('scripts') - - +@include('templates.mapbox-links') @stop diff --git a/resources/views/templates/mapbox-links.blade.php b/resources/views/templates/mapbox-links.blade.php new file mode 100644 index 00000000..28178354 --- /dev/null +++ b/resources/views/templates/mapbox-links.blade.php @@ -0,0 +1,2 @@ + + From 06ee35bef718a45dcafb3430eb1d24f535a4c5a5 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Wed, 14 Sep 2016 18:34:12 +0100 Subject: [PATCH 06/25] Update changelog --- changelog.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/changelog.md b/changelog.md index 3d66b8ca..694bdb15 100644 --- a/changelog.md +++ b/changelog.md @@ -1,8 +1,9 @@ # Changelog ## Version {next} - - update linked GPG key - - Added `integrity` values to external assets + - update linked GPG key (issue#7) + - Added `integrity` values to external assets (issue#10) + - Move mapbox links into own sub-view (issue#11) ## Version 0.0.10 (2016-09-10) - Add an artisan command for sensiolab’s security check From c2bc033c42399d6dd1689a79b9f086c2b9272773 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Wed, 14 Sep 2016 19:28:54 +0100 Subject: [PATCH 07/25] Update mapbox version --- resources/views/templates/mapbox-links.blade.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/templates/mapbox-links.blade.php b/resources/views/templates/mapbox-links.blade.php index 28178354..81fe41a2 100644 --- a/resources/views/templates/mapbox-links.blade.php +++ b/resources/views/templates/mapbox-links.blade.php @@ -1,2 +1,2 @@ - - + + From 9aef3c63340ab8d0674524289470fba766440f7c Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Wed, 14 Sep 2016 19:30:46 +0100 Subject: [PATCH 08/25] Update changelog --- changelog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.md b/changelog.md index 694bdb15..ebaf048c 100644 --- a/changelog.md +++ b/changelog.md @@ -4,6 +4,7 @@ - update linked GPG key (issue#7) - Added `integrity` values to external assets (issue#10) - Move mapbox links into own sub-view (issue#11) + - Updated mapbox version (issue#12) ## Version 0.0.10 (2016-09-10) - Add an artisan command for sensiolab’s security check From bd6af021701590614e53a7e2843f00244f2cc3ca Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Thu, 15 Sep 2016 15:41:54 +0100 Subject: [PATCH 09/25] =?UTF-8?q?Artisan=20command=20to=20initiaite=20redo?= =?UTF-8?q?wnload=20of=20webmention=E2=80=99s=20HTML?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Console/Commands/DownloadWebMentions.php | 47 ++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 app/Console/Commands/DownloadWebMentions.php diff --git a/app/Console/Commands/DownloadWebMentions.php b/app/Console/Commands/DownloadWebMentions.php new file mode 100644 index 00000000..4b9a8701 --- /dev/null +++ b/app/Console/Commands/DownloadWebMentions.php @@ -0,0 +1,47 @@ +dispatch(new DownloadWebMention($webmention->source)); + } + } +} From b340d5a07637f40b77acd30d54f7ac97f5eedf95 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Thu, 15 Sep 2016 15:54:57 +0100 Subject: [PATCH 10/25] Add job that downloads and saves the HTML of a webmention --- app/Jobs/DownloadWebMention.php | 65 +++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 app/Jobs/DownloadWebMention.php diff --git a/app/Jobs/DownloadWebMention.php b/app/Jobs/DownloadWebMention.php new file mode 100644 index 00000000..ac7779df --- /dev/null +++ b/app/Jobs/DownloadWebMention.php @@ -0,0 +1,65 @@ +source = $source; + } + + /** + * Execute the job. + * + * @return void + */ + public function handle(Client $guzzle) + { + $response = $guzzle->request('GET', $source); + if ($response->getStatusCode() == '200') { + $filesystem = \Illuminate\FileSystem\FileSystem(); + $filesystem->put( + $this->createFilenameFromURL($source), + (string) $response->getBody()) + } + } + } + + /** + * Create a file path from a URL. This is used when caching the HTML + * response. + * + * @param string The URL + * @return string The path name + */ + private function createFilenameFromURL($url) + { + $url = str_replace(['https://', 'http://'], ['', ''], $url); + if (substr($url, -1) == '/') { + $url = $url . 'index.html'; + } + + return $url; + } +} From 7abf8383de0e72f4951ee7785b2e81afee2f7631 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Fri, 16 Sep 2016 16:33:05 +0100 Subject: [PATCH 11/25] leave http/https in folder names so we know which sheme to use --- app/Jobs/DownloadWebMention.php | 2 +- app/Jobs/ProcessWebMention.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Jobs/DownloadWebMention.php b/app/Jobs/DownloadWebMention.php index ac7779df..0b73384f 100644 --- a/app/Jobs/DownloadWebMention.php +++ b/app/Jobs/DownloadWebMention.php @@ -55,7 +55,7 @@ class DownloadWebMention implements ShouldQueue */ private function createFilenameFromURL($url) { - $url = str_replace(['https://', 'http://'], ['', ''], $url); + $url = str_replace(['https://', 'http://'], ['https/', 'http/'], $url); if (substr($url, -1) == '/') { $url = $url . 'index.html'; } diff --git a/app/Jobs/ProcessWebMention.php b/app/Jobs/ProcessWebMention.php index fadd8399..24c03d53 100644 --- a/app/Jobs/ProcessWebMention.php +++ b/app/Jobs/ProcessWebMention.php @@ -139,7 +139,7 @@ class ProcessWebMention extends Job implements ShouldQueue */ private function createFilenameFromURL($url) { - $url = str_replace(['https://', 'http://'], ['', ''], $url); + $url = str_replace(['https://', 'http://'], ['https/', 'http/'], $url); if (substr($url, -1) == '/') { $url = $url . 'index.html'; } From 7cfcc0f899ca393412c2831f71d54efd0436f9c1 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Sat, 17 Sep 2016 18:18:53 +0100 Subject: [PATCH 12/25] We should be parsing the saved HTML now --- .../Commands/ParseCachedWebMentions.php | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 app/Console/Commands/ParseCachedWebMentions.php diff --git a/app/Console/Commands/ParseCachedWebMentions.php b/app/Console/Commands/ParseCachedWebMentions.php new file mode 100644 index 00000000..262e26eb --- /dev/null +++ b/app/Console/Commands/ParseCachedWebMentions.php @@ -0,0 +1,70 @@ +allFiles(storage_path() . '/HTML'); + foreach($HTMLfiles as $file) { + $filepath = $file->getPathname(); + $html = $filesystem->get($filepath); + $url = $this->URLFromFilename($filepath); + $microformats = \Mf2\parse($html, $url); + $webmention = WebMention::where('source' $url)->firstOrFail(); + $webmention->mf2 = json_encode($microformats); + $webmention->save(); + } + } + + /** + * Determine the source URL from a filename. + * + * @param string + * @return string + */ + private function URLFromFilename($filepath) + { + $dir = mb_substr($filepath, mb_strlen(storage_path() . '/HTML/')); + $url = str_replace(['http/', 'https/'], ['http://', 'https://'], $dir); + if (mb_substr($url, -1) == 'index.html') { + $url = mb_substr($url, 0, mb_strlen($url) - 10); + } + + return $url; + } +} From 23d7d97ed06b1086701b6e07d93a4af0d5024156 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Sat, 17 Sep 2016 18:19:54 +0100 Subject: [PATCH 13/25] Regsiter an observer for the webmention model --- app/Providers/AppServiceProvider.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 3c5c8377..a83013ab 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -5,6 +5,8 @@ namespace App\Providers; use App\Tag; use App\Note; use Validator; +use App\WebMention; +use App\Observers\WebMentionObserver; use Illuminate\Support\ServiceProvider; class AppServiceProvider extends ServiceProvider @@ -45,6 +47,9 @@ class AppServiceProvider extends ServiceProvider $note->tags()->attach($tagsToAdd); } }); + + //observer the webmention model + WebMention::observe(WebMentionObserver::class); } /** From a3d6767ccb540b1f3addbc57e81704fc43243a8f Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Sat, 17 Sep 2016 19:58:00 +0100 Subject: [PATCH 14/25] Move HTML filtering into an observer --- app/Jobs/ProcessWebMention.php | 36 ---------------------------------- 1 file changed, 36 deletions(-) diff --git a/app/Jobs/ProcessWebMention.php b/app/Jobs/ProcessWebMention.php index 24c03d53..5dd51a3e 100644 --- a/app/Jobs/ProcessWebMention.php +++ b/app/Jobs/ProcessWebMention.php @@ -4,10 +4,8 @@ namespace App\Jobs; use Mf2; use App\Note; -use HTMLPurifier; use App\WebMention; use GuzzleHttp\Client; -use HTMLPurifier_Config; use Illuminate\Queue\SerializesModels; use Illuminate\Queue\InteractsWithQueue; use Jonnybarnes\WebmentionsParser\Parser; @@ -65,7 +63,6 @@ class ProcessWebMention extends Job implements ShouldQueue return; } //webmenion is still a reply, so update content - $microformats = $this->filterHTML($microformats); $this->dispatch(new SaveProfileImage($microformats)); $webmention->mf2 = json_encode($microformats); $webmention->save(); @@ -94,7 +91,6 @@ class ProcessWebMention extends Job implements ShouldQueue $webmention = new WebMention(); $type = $parser->getMentionType($microformats); //throw error here? $this->dispatch(new SaveProfileImage($microformats)); - $microformats = $this->filterHTML($microformats); $webmention->source = $this->source; $webmention->target = $this->note->longurl; $webmention->commentable_id = $this->note->id; @@ -146,36 +142,4 @@ class ProcessWebMention extends Job implements ShouldQueue return $url; } - - /** - * Filter the HTML in a reply webmention. - * - * @param array The unfiltered microformats - * @return array The filtered microformats - */ - private function filterHTML($microformats) - { - if (isset($microformats['items'][0]['properties']['content'][0]['html'])) { - $microformats['items'][0]['properties']['content'][0]['html_purified'] = $this->useHTMLPurifier( - $microformats['items'][0]['properties']['content'][0]['html'] - ); - } - - return $microformats; - } - - /** - * Set up and use HTMLPurifer on some HTML. - * - * @param string The HTML to be processed - * @return string The processed HTML - */ - private function useHTMLPurifier($html) - { - $config = HTMLPurifier_Config::createDefault(); - $config->set('Cache.SerializerPath', storage_path() . '/HTMLPurifier'); - $purifier = new HTMLPurifier($config); - - return $purifier->purify($html); - } } From 2d1565f6a163ed73a64a998d92d272ddf955d718 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Sat, 17 Sep 2016 19:58:59 +0100 Subject: [PATCH 15/25] An observer that generates the filtered HTML on model creation/updating --- app/Observers/WebMentionObserver.php | 65 ++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 app/Observers/WebMentionObserver.php diff --git a/app/Observers/WebMentionObserver.php b/app/Observers/WebMentionObserver.php new file mode 100644 index 00000000..b15c3b3e --- /dev/null +++ b/app/Observers/WebMentionObserver.php @@ -0,0 +1,65 @@ +addFilteredHTML($webmention); + } + + /** + * Listen for the updated event. + * + * @param WebMention $webmention + * @return void + */ + public function updated(WebMention $webmention) + { + $this->addFilteredHTML($webmention); + } + + /** + * Filter the HTML in a reply webmention. + * + * @param WebMention The WebMention model + * @return void + */ + private function addFilteredHTML(WebMention $webmention) + { + $mf2 = json_decode($webmention->mf2); + if (isset($mf2['items'][0]['properties']['content'][0]['html'])) { + $mf2['items'][0]['properties']['content'][0]['html_purified'] = $this->useHTMLPurifier( + $mf2['items'][0]['properties']['content'][0]['html'] + ); + } + $webmention->mf2 = json_encode($mf2); + $webmetion->save(); + } + + /** + * Set up and use HTMLPurifer on some HTML. + * + * @param string The HTML to be processed + * @return string The processed HTML + */ + private function useHTMLPurifier($html) + { + $config = HTMLPurifier_Config::createDefault(); + $config->set('Cache.SerializerPath', storage_path() . '/HTMLPurifier'); + $purifier = new HTMLPurifier($config); + + return $purifier->purify($html); + } +} From 6e04296e2d96a328a4eaa35fde927933a67e2300 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Sat, 17 Sep 2016 20:12:16 +0100 Subject: [PATCH 16/25] =?UTF-8?q?Pass=20full=20URL=20into=20php-mf2?= =?UTF-8?q?=E2=80=99s=20`parse`=20method?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Jobs/ProcessWebMention.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/Jobs/ProcessWebMention.php b/app/Jobs/ProcessWebMention.php index 5dd51a3e..81bd5043 100644 --- a/app/Jobs/ProcessWebMention.php +++ b/app/Jobs/ProcessWebMention.php @@ -44,13 +44,11 @@ class ProcessWebMention extends Job implements ShouldQueue */ public function handle(Parser $parser) { - $sourceURL = parse_url($this->source); - $baseURL = $sourceURL['scheme'] . '://' . $sourceURL['host']; $remoteContent = $this->getRemoteContent($this->source); if ($remoteContent === null) { throw new RemoteContentNotFoundException; } - $microformats = Mf2\parse($remoteContent, $baseURL); + $microformats = Mf2\parse($remoteContent, $this->source); $webmentions = WebMention::where('source', $this->source)->get(); foreach ($webmentions as $webmention) { //check webmention still references target From 769d2aabd46141f81227deb1fd600f26899f439b Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Sat, 17 Sep 2016 20:50:22 +0100 Subject: [PATCH 17/25] Register the new commands --- app/Console/Kernel.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index ad10b8f8..affc9de7 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -14,6 +14,8 @@ class Kernel extends ConsoleKernel */ protected $commands = [ Commands\SecurityCheck::class, + Commands\ParseCachedWebMentions::class, + Commands\DownloadWebMentions::class, ]; /** From fb81b37f4d64bc6b8ec1ae20fb55dc067d49af5f Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Sat, 17 Sep 2016 20:50:56 +0100 Subject: [PATCH 18/25] More refactoring of the initial webmention processing job --- app/Jobs/ProcessWebMention.php | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/app/Jobs/ProcessWebMention.php b/app/Jobs/ProcessWebMention.php index 81bd5043..3b28b337 100644 --- a/app/Jobs/ProcessWebMention.php +++ b/app/Jobs/ProcessWebMention.php @@ -20,7 +20,6 @@ class ProcessWebMention extends Job implements ShouldQueue protected $note; protected $source; - protected $guzzle; /** * Create a new job instance. @@ -29,22 +28,22 @@ class ProcessWebMention extends Job implements ShouldQueue * @param string $source * @return void */ - public function __construct(Note $note, $source, Client $guzzle = null) + public function __construct(Note $note, $source) { $this->note = $note; $this->source = $source; - $this->guzzle = $guzzle ?? new Client(); } /** * Execute the job. * - * @param \Jonnybarnes\WebmentionsParser\Parser $parser + * @param \Jonnybarnes\WebmentionsParser\Parser $parser + * @param \GuzzleHttp\Client $guzzle * @return void */ - public function handle(Parser $parser) + public function handle(Parser $parser, Client $guzzle) { - $remoteContent = $this->getRemoteContent($this->source); + $remoteContent = $this->getRemoteContent($this->source, $guzzle); if ($remoteContent === null) { throw new RemoteContentNotFoundException; } @@ -101,13 +100,14 @@ class ProcessWebMention extends Job implements ShouldQueue /** * Retreive the remote content from a URL, and caches the result. * - * @param string The URL to retreive content from - * @return string|null The HTML from the URL (or null if error) + * @param string $url + * @param GuzzleHttp\client $guzzle + * @return string|null */ - private function getRemoteContent($url) + private function getRemoteContent($url, Client $guzzle) { try { - $response = $this->guzzle->request('GET', $url); + $response = $guzzle->request('GET', $url); } catch (RequestException $e) { return; } From 756f40fb551f28042154e51a34b3f57aadf75469 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Sat, 17 Sep 2016 20:56:57 +0100 Subject: [PATCH 19/25] Tweak command description --- app/Console/Commands/ParseCachedWebMentions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Console/Commands/ParseCachedWebMentions.php b/app/Console/Commands/ParseCachedWebMentions.php index 262e26eb..1d219035 100644 --- a/app/Console/Commands/ParseCachedWebMentions.php +++ b/app/Console/Commands/ParseCachedWebMentions.php @@ -20,7 +20,7 @@ class ParseCachedWebMentions extends Command * * @var string */ - protected $description = 'Re-parse the cached webmention’s HTML'; + protected $description = 'Re-parse the webmention’s cached HTML'; /** * Create a new command instance. From c5e0b621a69c5cbe1efb41343f4b6e3616584d73 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Sat, 17 Sep 2016 20:58:47 +0100 Subject: [PATCH 20/25] Add missing comma --- app/Console/Commands/ParseCachedWebMentions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Console/Commands/ParseCachedWebMentions.php b/app/Console/Commands/ParseCachedWebMentions.php index 1d219035..c4541c44 100644 --- a/app/Console/Commands/ParseCachedWebMentions.php +++ b/app/Console/Commands/ParseCachedWebMentions.php @@ -45,7 +45,7 @@ class ParseCachedWebMentions extends Command $html = $filesystem->get($filepath); $url = $this->URLFromFilename($filepath); $microformats = \Mf2\parse($html, $url); - $webmention = WebMention::where('source' $url)->firstOrFail(); + $webmention = WebMention::where('source', $url)->firstOrFail(); $webmention->mf2 = json_encode($microformats); $webmention->save(); } From f9fc24dd0426de1601e4ba80010403b902145b02 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Sat, 17 Sep 2016 21:01:23 +0100 Subject: [PATCH 21/25] Give the redownload command a better name --- .../{DownloadWebMentions.php => ReDownloadWebMentions.php} | 4 ++-- app/Console/Kernel.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename app/Console/Commands/{DownloadWebMentions.php => ReDownloadWebMentions.php} (89%) diff --git a/app/Console/Commands/DownloadWebMentions.php b/app/Console/Commands/ReDownloadWebMentions.php similarity index 89% rename from app/Console/Commands/DownloadWebMentions.php rename to app/Console/Commands/ReDownloadWebMentions.php index 4b9a8701..12622fa3 100644 --- a/app/Console/Commands/DownloadWebMentions.php +++ b/app/Console/Commands/ReDownloadWebMentions.php @@ -6,14 +6,14 @@ use App\WebMention; use Illuminate\Console\Command; use App\Jobs\DownloadWebMention; -class DownloadWebMentions extends Command +class ReDownloadWebMentions extends Command { /** * The name and signature of the console command. * * @var string */ - protected $signature = 'webmentions:download'; + protected $signature = 'webmentions:redownload'; /** * The console command description. diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index affc9de7..51ec553b 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -15,7 +15,7 @@ class Kernel extends ConsoleKernel protected $commands = [ Commands\SecurityCheck::class, Commands\ParseCachedWebMentions::class, - Commands\DownloadWebMentions::class, + Commands\ReDownloadWebMentions::class, ]; /** From 99a6f665b0f1884920c3ab2e0604258b65153fa3 Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Sat, 17 Sep 2016 21:03:53 +0100 Subject: [PATCH 22/25] Add explanetory comment --- app/Jobs/DownloadWebMention.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/Jobs/DownloadWebMention.php b/app/Jobs/DownloadWebMention.php index 0b73384f..3ff505bc 100644 --- a/app/Jobs/DownloadWebMention.php +++ b/app/Jobs/DownloadWebMention.php @@ -37,6 +37,8 @@ class DownloadWebMention implements ShouldQueue public function handle(Client $guzzle) { $response = $guzzle->request('GET', $source); + //4XX and 5XX responses should get Guzzle to throw an exception, + //Laravel should catch and retry these automatically. if ($response->getStatusCode() == '200') { $filesystem = \Illuminate\FileSystem\FileSystem(); $filesystem->put( From 17edd7000317e3d1981314b861daf682216f204a Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Sat, 17 Sep 2016 21:14:10 +0100 Subject: [PATCH 23/25] Summarize webmention changes --- changelog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.md b/changelog.md index ebaf048c..d6ddaedb 100644 --- a/changelog.md +++ b/changelog.md @@ -5,6 +5,7 @@ - Added `integrity` values to external assets (issue#10) - Move mapbox links into own sub-view (issue#11) - Updated mapbox version (issue#12) + - Massive refactor of webmention code, allowing for re-parse command (issue#8) ## Version 0.0.10 (2016-09-10) - Add an artisan command for sensiolab’s security check From 9f0c622a0984a835c06ffa11640f4ad91ef89f1d Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Sat, 17 Sep 2016 21:20:57 +0100 Subject: [PATCH 24/25] Add a license file --- changelog.md | 1 + license.md | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 license.md diff --git a/changelog.md b/changelog.md index d6ddaedb..f14e8fe8 100644 --- a/changelog.md +++ b/changelog.md @@ -6,6 +6,7 @@ - Move mapbox links into own sub-view (issue#11) - Updated mapbox version (issue#12) - Massive refactor of webmention code, allowing for re-parse command (issue#8) + - Add license file (issue#13) ## Version 0.0.10 (2016-09-10) - Add an artisan command for sensiolab’s security check diff --git a/license.md b/license.md new file mode 100644 index 00000000..28dd5639 --- /dev/null +++ b/license.md @@ -0,0 +1,26 @@ +The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); + iii. publicity and privacy rights pertaining to a person's image or likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and + vii. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work. + d. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work. From 396ab168323e05d5ca6a4b69f2e5efb9b3a6505a Mon Sep 17 00:00:00 2001 From: Jonny Barnes Date: Sat, 17 Sep 2016 21:22:42 +0100 Subject: [PATCH 25/25] Bump version --- changelog.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changelog.md b/changelog.md index f14e8fe8..1be00e63 100644 --- a/changelog.md +++ b/changelog.md @@ -1,6 +1,6 @@ # Changelog -## Version {next} +## Version 0.0.11 (2016-09-17) - update linked GPG key (issue#7) - Added `integrity` values to external assets (issue#10) - Move mapbox links into own sub-view (issue#11)