diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..87174b6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/public/ diff --git a/public/assets/fonts/11872ca.woff2 b/public/assets/fonts/11872ca.woff2 deleted file mode 100644 index 12e1bde..0000000 Binary files a/public/assets/fonts/11872ca.woff2 and /dev/null differ diff --git a/public/assets/fonts/1506293e.woff b/public/assets/fonts/1506293e.woff deleted file mode 100644 index 3db105e..0000000 Binary files a/public/assets/fonts/1506293e.woff and /dev/null differ diff --git a/public/assets/fonts/16724bf5.eot b/public/assets/fonts/16724bf5.eot deleted file mode 100644 index b08fe4a..0000000 Binary files a/public/assets/fonts/16724bf5.eot and /dev/null differ diff --git a/public/assets/fonts/18e4d875.ttf b/public/assets/fonts/18e4d875.ttf deleted file mode 100644 index cfd4547..0000000 Binary files a/public/assets/fonts/18e4d875.ttf and /dev/null differ diff --git a/public/assets/fonts/19c7bb00.woff b/public/assets/fonts/19c7bb00.woff deleted file mode 100644 index a3ec72a..0000000 Binary files a/public/assets/fonts/19c7bb00.woff and /dev/null differ diff --git a/public/assets/fonts/1a9c073a.woff b/public/assets/fonts/1a9c073a.woff deleted file mode 100644 index b64f2cf..0000000 Binary files a/public/assets/fonts/1a9c073a.woff and /dev/null differ diff --git a/public/assets/fonts/1be9508c.otf b/public/assets/fonts/1be9508c.otf deleted file mode 100644 index 1810d90..0000000 Binary files a/public/assets/fonts/1be9508c.otf and /dev/null differ diff --git a/public/assets/fonts/1c033743.woff b/public/assets/fonts/1c033743.woff deleted file mode 100644 index 1b39094..0000000 Binary files a/public/assets/fonts/1c033743.woff and /dev/null differ diff --git a/public/assets/fonts/1d5c96ee.eot b/public/assets/fonts/1d5c96ee.eot deleted file mode 100644 index b887a66..0000000 Binary files a/public/assets/fonts/1d5c96ee.eot and /dev/null differ diff --git a/public/assets/fonts/1e58d13e.eot b/public/assets/fonts/1e58d13e.eot deleted file mode 100644 index 8c185be..0000000 Binary files a/public/assets/fonts/1e58d13e.eot and /dev/null differ diff --git a/public/assets/fonts/1f1ec68.woff2 b/public/assets/fonts/1f1ec68.woff2 deleted file mode 100644 index 12dca42..0000000 Binary files a/public/assets/fonts/1f1ec68.woff2 and /dev/null differ diff --git a/public/assets/fonts/1f7308ea.ttf b/public/assets/fonts/1f7308ea.ttf deleted file mode 100644 index 8662fad..0000000 Binary files a/public/assets/fonts/1f7308ea.ttf and /dev/null differ diff --git a/public/assets/fonts/208a6dc2.ttf b/public/assets/fonts/208a6dc2.ttf deleted file mode 100644 index 6294ac7..0000000 Binary files a/public/assets/fonts/208a6dc2.ttf and /dev/null differ diff --git a/public/assets/fonts/20e12988.ttf b/public/assets/fonts/20e12988.ttf deleted file mode 100644 index 5a5be2f..0000000 Binary files a/public/assets/fonts/20e12988.ttf and /dev/null differ diff --git a/public/assets/fonts/224595b8.woff b/public/assets/fonts/224595b8.woff deleted file mode 100644 index 94659ae..0000000 Binary files a/public/assets/fonts/224595b8.woff and /dev/null differ diff --git a/public/assets/fonts/2355e29f.otf b/public/assets/fonts/2355e29f.otf deleted file mode 100644 index d29a3dd..0000000 Binary files a/public/assets/fonts/2355e29f.otf and /dev/null differ diff --git a/public/assets/fonts/2369640e.woff b/public/assets/fonts/2369640e.woff deleted file mode 100644 index 9a07259..0000000 Binary files a/public/assets/fonts/2369640e.woff and /dev/null differ diff --git a/public/assets/fonts/26154e4a.otf b/public/assets/fonts/26154e4a.otf deleted file mode 100644 index f419ab9..0000000 Binary files a/public/assets/fonts/26154e4a.otf and /dev/null differ diff --git a/public/assets/fonts/272db417.woff2 b/public/assets/fonts/272db417.woff2 deleted file mode 100644 index df1d211..0000000 Binary files a/public/assets/fonts/272db417.woff2 and /dev/null differ diff --git a/public/assets/fonts/28df7238.eot b/public/assets/fonts/28df7238.eot deleted file mode 100644 index 8aa922a..0000000 Binary files a/public/assets/fonts/28df7238.eot and /dev/null differ diff --git a/public/assets/fonts/29b6ca2d.otf b/public/assets/fonts/29b6ca2d.otf deleted file mode 100644 index 2d06c4a..0000000 Binary files a/public/assets/fonts/29b6ca2d.otf and /dev/null differ diff --git a/public/assets/fonts/2a4f2187.eot b/public/assets/fonts/2a4f2187.eot deleted file mode 100644 index dc0087b..0000000 Binary files a/public/assets/fonts/2a4f2187.eot and /dev/null differ diff --git a/public/assets/fonts/2b30c1aa.woff2 b/public/assets/fonts/2b30c1aa.woff2 deleted file mode 100644 index 954950a..0000000 Binary files a/public/assets/fonts/2b30c1aa.woff2 and /dev/null differ diff --git a/public/assets/fonts/2de289d0.otf b/public/assets/fonts/2de289d0.otf deleted file mode 100644 index a5c4eb8..0000000 Binary files a/public/assets/fonts/2de289d0.otf and /dev/null differ diff --git a/public/assets/fonts/2f38d79a.otf b/public/assets/fonts/2f38d79a.otf deleted file mode 100644 index 10ad048..0000000 Binary files a/public/assets/fonts/2f38d79a.otf and /dev/null differ diff --git a/public/assets/fonts/30429081.ttf b/public/assets/fonts/30429081.ttf deleted file mode 100644 index 75297dd..0000000 Binary files a/public/assets/fonts/30429081.ttf and /dev/null differ diff --git a/public/assets/fonts/338344a.woff b/public/assets/fonts/338344a.woff deleted file mode 100644 index cf29a49..0000000 Binary files a/public/assets/fonts/338344a.woff and /dev/null differ diff --git a/public/assets/fonts/35456d3f.eot b/public/assets/fonts/35456d3f.eot deleted file mode 100644 index 95af9b6..0000000 Binary files a/public/assets/fonts/35456d3f.eot and /dev/null differ diff --git a/public/assets/fonts/35ad2a1e.woff2 b/public/assets/fonts/35ad2a1e.woff2 deleted file mode 100644 index 2299dab..0000000 Binary files a/public/assets/fonts/35ad2a1e.woff2 and /dev/null differ diff --git a/public/assets/fonts/35d9c639.ttf b/public/assets/fonts/35d9c639.ttf deleted file mode 100644 index dcd98c6..0000000 Binary files a/public/assets/fonts/35d9c639.ttf and /dev/null differ diff --git a/public/assets/fonts/37a36aac.woff b/public/assets/fonts/37a36aac.woff deleted file mode 100644 index 0a5e1c6..0000000 Binary files a/public/assets/fonts/37a36aac.woff and /dev/null differ diff --git a/public/assets/fonts/39d280e0.woff2 b/public/assets/fonts/39d280e0.woff2 deleted file mode 100644 index dcbdaf1..0000000 Binary files a/public/assets/fonts/39d280e0.woff2 and /dev/null differ diff --git a/public/assets/fonts/3a4491b0.woff2 b/public/assets/fonts/3a4491b0.woff2 deleted file mode 100644 index 2dab24a..0000000 Binary files a/public/assets/fonts/3a4491b0.woff2 and /dev/null differ diff --git a/public/assets/fonts/3a51cfed.eot b/public/assets/fonts/3a51cfed.eot deleted file mode 100644 index ebaf5f3..0000000 Binary files a/public/assets/fonts/3a51cfed.eot and /dev/null differ diff --git a/public/assets/fonts/3eb036e2.ttf b/public/assets/fonts/3eb036e2.ttf deleted file mode 100644 index faaeeb6..0000000 Binary files a/public/assets/fonts/3eb036e2.ttf and /dev/null differ diff --git a/public/assets/fonts/40b7c0ef.woff b/public/assets/fonts/40b7c0ef.woff deleted file mode 100644 index 6571866..0000000 Binary files a/public/assets/fonts/40b7c0ef.woff and /dev/null differ diff --git a/public/assets/fonts/415ac89e.woff b/public/assets/fonts/415ac89e.woff deleted file mode 100644 index 69a466d..0000000 Binary files a/public/assets/fonts/415ac89e.woff and /dev/null differ diff --git a/public/assets/fonts/44012eb8.woff b/public/assets/fonts/44012eb8.woff deleted file mode 100644 index bcbe756..0000000 Binary files a/public/assets/fonts/44012eb8.woff and /dev/null differ diff --git a/public/assets/fonts/44a0319a.woff b/public/assets/fonts/44a0319a.woff deleted file mode 100644 index 2e37b09..0000000 Binary files a/public/assets/fonts/44a0319a.woff and /dev/null differ diff --git a/public/assets/fonts/45df7d88.ttf b/public/assets/fonts/45df7d88.ttf deleted file mode 100644 index a8eae16..0000000 Binary files a/public/assets/fonts/45df7d88.ttf and /dev/null differ diff --git a/public/assets/fonts/4bfad23a.eot b/public/assets/fonts/4bfad23a.eot deleted file mode 100644 index e21ee09..0000000 Binary files a/public/assets/fonts/4bfad23a.eot and /dev/null differ diff --git a/public/assets/fonts/4c8eefa.ttf b/public/assets/fonts/4c8eefa.ttf deleted file mode 100644 index f55e601..0000000 Binary files a/public/assets/fonts/4c8eefa.ttf and /dev/null differ diff --git a/public/assets/fonts/4d55e374.woff b/public/assets/fonts/4d55e374.woff deleted file mode 100644 index 9f63553..0000000 Binary files a/public/assets/fonts/4d55e374.woff and /dev/null differ diff --git a/public/assets/fonts/4e7d9104.otf b/public/assets/fonts/4e7d9104.otf deleted file mode 100644 index 99a389b..0000000 Binary files a/public/assets/fonts/4e7d9104.otf and /dev/null differ diff --git a/public/assets/fonts/4f1cf470.otf b/public/assets/fonts/4f1cf470.otf deleted file mode 100644 index f2d4c15..0000000 Binary files a/public/assets/fonts/4f1cf470.otf and /dev/null differ diff --git a/public/assets/fonts/4f37a027.woff b/public/assets/fonts/4f37a027.woff deleted file mode 100644 index 68c98f1..0000000 Binary files a/public/assets/fonts/4f37a027.woff and /dev/null differ diff --git a/public/assets/fonts/502923e2.woff2 b/public/assets/fonts/502923e2.woff2 deleted file mode 100644 index 5dc3d4c..0000000 Binary files a/public/assets/fonts/502923e2.woff2 and /dev/null differ diff --git a/public/assets/fonts/508b3447.ttf b/public/assets/fonts/508b3447.ttf deleted file mode 100644 index c583003..0000000 Binary files a/public/assets/fonts/508b3447.ttf and /dev/null differ diff --git a/public/assets/fonts/519d195f.otf b/public/assets/fonts/519d195f.otf deleted file mode 100644 index 19cc982..0000000 Binary files a/public/assets/fonts/519d195f.otf and /dev/null differ diff --git a/public/assets/fonts/52021c91.ttf b/public/assets/fonts/52021c91.ttf deleted file mode 100644 index 191506b..0000000 Binary files a/public/assets/fonts/52021c91.ttf and /dev/null differ diff --git a/public/assets/fonts/52369635.woff b/public/assets/fonts/52369635.woff deleted file mode 100644 index 6ff71db..0000000 Binary files a/public/assets/fonts/52369635.woff and /dev/null differ diff --git a/public/assets/fonts/528b8c3e.otf b/public/assets/fonts/528b8c3e.otf deleted file mode 100644 index 133134f..0000000 Binary files a/public/assets/fonts/528b8c3e.otf and /dev/null differ diff --git a/public/assets/fonts/56673d10.woff b/public/assets/fonts/56673d10.woff deleted file mode 100644 index 84b4fb4..0000000 Binary files a/public/assets/fonts/56673d10.woff and /dev/null differ diff --git a/public/assets/fonts/5880738e.otf b/public/assets/fonts/5880738e.otf deleted file mode 100644 index 0b273d9..0000000 Binary files a/public/assets/fonts/5880738e.otf and /dev/null differ diff --git a/public/assets/fonts/5a7d9f89.woff b/public/assets/fonts/5a7d9f89.woff deleted file mode 100644 index 54256c8..0000000 Binary files a/public/assets/fonts/5a7d9f89.woff and /dev/null differ diff --git a/public/assets/fonts/5cb814ad.woff b/public/assets/fonts/5cb814ad.woff deleted file mode 100644 index 8d99039..0000000 Binary files a/public/assets/fonts/5cb814ad.woff and /dev/null differ diff --git a/public/assets/fonts/5da1ae59.woff2 b/public/assets/fonts/5da1ae59.woff2 deleted file mode 100644 index d97cd54..0000000 Binary files a/public/assets/fonts/5da1ae59.woff2 and /dev/null differ diff --git a/public/assets/fonts/5da50a5d.otf b/public/assets/fonts/5da50a5d.otf deleted file mode 100644 index 7ff6a9f..0000000 Binary files a/public/assets/fonts/5da50a5d.otf and /dev/null differ diff --git a/public/assets/fonts/5de67d54.ttf b/public/assets/fonts/5de67d54.ttf deleted file mode 100644 index 0bcfec6..0000000 Binary files a/public/assets/fonts/5de67d54.ttf and /dev/null differ diff --git a/public/assets/fonts/5df19531.woff2 b/public/assets/fonts/5df19531.woff2 deleted file mode 100644 index 214910b..0000000 Binary files a/public/assets/fonts/5df19531.woff2 and /dev/null differ diff --git a/public/assets/fonts/611e0bd2.ttf b/public/assets/fonts/611e0bd2.ttf deleted file mode 100644 index f95a8c4..0000000 Binary files a/public/assets/fonts/611e0bd2.ttf and /dev/null differ diff --git a/public/assets/fonts/61e2c985.ttf b/public/assets/fonts/61e2c985.ttf deleted file mode 100644 index 4d80fce..0000000 Binary files a/public/assets/fonts/61e2c985.ttf and /dev/null differ diff --git a/public/assets/fonts/6202b36d.ttf b/public/assets/fonts/6202b36d.ttf deleted file mode 100644 index b7c0fce..0000000 Binary files a/public/assets/fonts/6202b36d.ttf and /dev/null differ diff --git a/public/assets/fonts/62b4900e.eot b/public/assets/fonts/62b4900e.eot deleted file mode 100644 index 783b4f5..0000000 Binary files a/public/assets/fonts/62b4900e.eot and /dev/null differ diff --git a/public/assets/fonts/6506a95f.woff b/public/assets/fonts/6506a95f.woff deleted file mode 100644 index a8b8cea..0000000 Binary files a/public/assets/fonts/6506a95f.woff and /dev/null differ diff --git a/public/assets/fonts/69b18017.otf b/public/assets/fonts/69b18017.otf deleted file mode 100644 index c90e7a3..0000000 Binary files a/public/assets/fonts/69b18017.otf and /dev/null differ diff --git a/public/assets/fonts/6b80a96a.otf b/public/assets/fonts/6b80a96a.otf deleted file mode 100644 index 1522c9b..0000000 Binary files a/public/assets/fonts/6b80a96a.otf and /dev/null differ diff --git a/public/assets/fonts/6be51347.woff2 b/public/assets/fonts/6be51347.woff2 deleted file mode 100644 index bcc4efc..0000000 Binary files a/public/assets/fonts/6be51347.woff2 and /dev/null differ diff --git a/public/assets/fonts/6db96df5.otf b/public/assets/fonts/6db96df5.otf deleted file mode 100644 index 554d958..0000000 Binary files a/public/assets/fonts/6db96df5.otf and /dev/null differ diff --git a/public/assets/fonts/7146d820.ttf b/public/assets/fonts/7146d820.ttf deleted file mode 100644 index 611b2b4..0000000 Binary files a/public/assets/fonts/7146d820.ttf and /dev/null differ diff --git a/public/assets/fonts/72ed2339.woff b/public/assets/fonts/72ed2339.woff deleted file mode 100644 index bd82cf4..0000000 Binary files a/public/assets/fonts/72ed2339.woff and /dev/null differ diff --git a/public/assets/fonts/74a7b3fb.eot b/public/assets/fonts/74a7b3fb.eot deleted file mode 100644 index f4aa7ae..0000000 Binary files a/public/assets/fonts/74a7b3fb.eot and /dev/null differ diff --git a/public/assets/fonts/7537acd4.eot b/public/assets/fonts/7537acd4.eot deleted file mode 100644 index 39a275e..0000000 Binary files a/public/assets/fonts/7537acd4.eot and /dev/null differ diff --git a/public/assets/fonts/77461762.woff b/public/assets/fonts/77461762.woff deleted file mode 100644 index 7cf96ef..0000000 Binary files a/public/assets/fonts/77461762.woff and /dev/null differ diff --git a/public/assets/fonts/7860512d.otf b/public/assets/fonts/7860512d.otf deleted file mode 100644 index 2acc974..0000000 Binary files a/public/assets/fonts/7860512d.otf and /dev/null differ diff --git a/public/assets/fonts/7996dbed.woff2 b/public/assets/fonts/7996dbed.woff2 deleted file mode 100644 index 843d388..0000000 Binary files a/public/assets/fonts/7996dbed.woff2 and /dev/null differ diff --git a/public/assets/fonts/7a38babb.woff b/public/assets/fonts/7a38babb.woff deleted file mode 100644 index a6f5d55..0000000 Binary files a/public/assets/fonts/7a38babb.woff and /dev/null differ diff --git a/public/assets/fonts/7c8c34b6.ttf b/public/assets/fonts/7c8c34b6.ttf deleted file mode 100644 index 36d8bae..0000000 Binary files a/public/assets/fonts/7c8c34b6.ttf and /dev/null differ diff --git a/public/assets/fonts/7d41548a.woff b/public/assets/fonts/7d41548a.woff deleted file mode 100644 index be45282..0000000 Binary files a/public/assets/fonts/7d41548a.woff and /dev/null differ diff --git a/public/assets/fonts/7d4f8abf.eot b/public/assets/fonts/7d4f8abf.eot deleted file mode 100644 index 8bbf4b1..0000000 Binary files a/public/assets/fonts/7d4f8abf.eot and /dev/null differ diff --git a/public/assets/fonts/7facc488.woff b/public/assets/fonts/7facc488.woff deleted file mode 100644 index fceb975..0000000 Binary files a/public/assets/fonts/7facc488.woff and /dev/null differ diff --git a/public/assets/fonts/81343ec3.woff2 b/public/assets/fonts/81343ec3.woff2 deleted file mode 100644 index c4134ee..0000000 Binary files a/public/assets/fonts/81343ec3.woff2 and /dev/null differ diff --git a/public/assets/fonts/83bbfd3c.otf b/public/assets/fonts/83bbfd3c.otf deleted file mode 100644 index 4ff8933..0000000 Binary files a/public/assets/fonts/83bbfd3c.otf and /dev/null differ diff --git a/public/assets/fonts/84acb292.woff2 b/public/assets/fonts/84acb292.woff2 deleted file mode 100644 index 7d9d94f..0000000 Binary files a/public/assets/fonts/84acb292.woff2 and /dev/null differ diff --git a/public/assets/fonts/84e76146.ttf b/public/assets/fonts/84e76146.ttf deleted file mode 100644 index deb1d71..0000000 Binary files a/public/assets/fonts/84e76146.ttf and /dev/null differ diff --git a/public/assets/fonts/85a6f18c.woff2 b/public/assets/fonts/85a6f18c.woff2 deleted file mode 100644 index 238cb26..0000000 Binary files a/public/assets/fonts/85a6f18c.woff2 and /dev/null differ diff --git a/public/assets/fonts/86b0a1fe.woff b/public/assets/fonts/86b0a1fe.woff deleted file mode 100644 index 3822bc2..0000000 Binary files a/public/assets/fonts/86b0a1fe.woff and /dev/null differ diff --git a/public/assets/fonts/87a2c090.woff b/public/assets/fonts/87a2c090.woff deleted file mode 100644 index 5e02fa9..0000000 Binary files a/public/assets/fonts/87a2c090.woff and /dev/null differ diff --git a/public/assets/fonts/8d0fecd1.woff2 b/public/assets/fonts/8d0fecd1.woff2 deleted file mode 100644 index 25c08c6..0000000 Binary files a/public/assets/fonts/8d0fecd1.woff2 and /dev/null differ diff --git a/public/assets/fonts/8e790707.woff2 b/public/assets/fonts/8e790707.woff2 deleted file mode 100644 index b6ff74b..0000000 Binary files a/public/assets/fonts/8e790707.woff2 and /dev/null differ diff --git a/public/assets/fonts/8f68ba1f.otf b/public/assets/fonts/8f68ba1f.otf deleted file mode 100644 index 8d20739..0000000 Binary files a/public/assets/fonts/8f68ba1f.otf and /dev/null differ diff --git a/public/assets/fonts/8f69a4c1.woff2 b/public/assets/fonts/8f69a4c1.woff2 deleted file mode 100644 index c6d7434..0000000 Binary files a/public/assets/fonts/8f69a4c1.woff2 and /dev/null differ diff --git a/public/assets/fonts/927bc06f.ttf b/public/assets/fonts/927bc06f.ttf deleted file mode 100644 index 5bc0262..0000000 Binary files a/public/assets/fonts/927bc06f.ttf and /dev/null differ diff --git a/public/assets/fonts/94ff4038.ttf b/public/assets/fonts/94ff4038.ttf deleted file mode 100644 index 065630e..0000000 Binary files a/public/assets/fonts/94ff4038.ttf and /dev/null differ diff --git a/public/assets/fonts/95352a16.woff2 b/public/assets/fonts/95352a16.woff2 deleted file mode 100644 index ed564da..0000000 Binary files a/public/assets/fonts/95352a16.woff2 and /dev/null differ diff --git a/public/assets/fonts/9590f7c4.ttf b/public/assets/fonts/9590f7c4.ttf deleted file mode 100644 index 23ff52c..0000000 Binary files a/public/assets/fonts/9590f7c4.ttf and /dev/null differ diff --git a/public/assets/fonts/9c45dd63.woff b/public/assets/fonts/9c45dd63.woff deleted file mode 100644 index 691dccf..0000000 Binary files a/public/assets/fonts/9c45dd63.woff and /dev/null differ diff --git a/public/assets/fonts/9eea1ee9.otf b/public/assets/fonts/9eea1ee9.otf deleted file mode 100644 index d0f1790..0000000 Binary files a/public/assets/fonts/9eea1ee9.otf and /dev/null differ diff --git a/public/assets/fonts/9f9b1bd.woff b/public/assets/fonts/9f9b1bd.woff deleted file mode 100644 index 72f2261..0000000 Binary files a/public/assets/fonts/9f9b1bd.woff and /dev/null differ diff --git a/public/assets/fonts/9fb24680.woff2 b/public/assets/fonts/9fb24680.woff2 deleted file mode 100644 index 443d16f..0000000 Binary files a/public/assets/fonts/9fb24680.woff2 and /dev/null differ diff --git a/public/assets/fonts/a378d768.woff b/public/assets/fonts/a378d768.woff deleted file mode 100644 index 7bb7663..0000000 Binary files a/public/assets/fonts/a378d768.woff and /dev/null differ diff --git a/public/assets/fonts/a5ddad82.otf b/public/assets/fonts/a5ddad82.otf deleted file mode 100644 index a61686c..0000000 Binary files a/public/assets/fonts/a5ddad82.otf and /dev/null differ diff --git a/public/assets/fonts/a963219f.woff2 b/public/assets/fonts/a963219f.woff2 deleted file mode 100644 index 19ac8d9..0000000 Binary files a/public/assets/fonts/a963219f.woff2 and /dev/null differ diff --git a/public/assets/fonts/aca92c72.otf b/public/assets/fonts/aca92c72.otf deleted file mode 100644 index 4ace629..0000000 Binary files a/public/assets/fonts/aca92c72.otf and /dev/null differ diff --git a/public/assets/fonts/af414206.ttf b/public/assets/fonts/af414206.ttf deleted file mode 100644 index bfcf347..0000000 Binary files a/public/assets/fonts/af414206.ttf and /dev/null differ diff --git a/public/assets/fonts/b21637c2.woff2 b/public/assets/fonts/b21637c2.woff2 deleted file mode 100644 index 0fc83ed..0000000 Binary files a/public/assets/fonts/b21637c2.woff2 and /dev/null differ diff --git a/public/assets/fonts/b2bcbb77.woff2 b/public/assets/fonts/b2bcbb77.woff2 deleted file mode 100644 index fba3625..0000000 Binary files a/public/assets/fonts/b2bcbb77.woff2 and /dev/null differ diff --git a/public/assets/fonts/b31c1d6e.woff b/public/assets/fonts/b31c1d6e.woff deleted file mode 100644 index 1a0ad59..0000000 Binary files a/public/assets/fonts/b31c1d6e.woff and /dev/null differ diff --git a/public/assets/fonts/b497fc2f.ttf b/public/assets/fonts/b497fc2f.ttf deleted file mode 100644 index c343504..0000000 Binary files a/public/assets/fonts/b497fc2f.ttf and /dev/null differ diff --git a/public/assets/fonts/b4c667f3.otf b/public/assets/fonts/b4c667f3.otf deleted file mode 100644 index cec364e..0000000 Binary files a/public/assets/fonts/b4c667f3.otf and /dev/null differ diff --git a/public/assets/fonts/b4e8d8d6.otf b/public/assets/fonts/b4e8d8d6.otf deleted file mode 100644 index 1b42738..0000000 Binary files a/public/assets/fonts/b4e8d8d6.otf and /dev/null differ diff --git a/public/assets/fonts/b6e66f87.otf b/public/assets/fonts/b6e66f87.otf deleted file mode 100644 index fc8dad5..0000000 Binary files a/public/assets/fonts/b6e66f87.otf and /dev/null differ diff --git a/public/assets/fonts/b6fd5fb.woff2 b/public/assets/fonts/b6fd5fb.woff2 deleted file mode 100644 index 6614e54..0000000 Binary files a/public/assets/fonts/b6fd5fb.woff2 and /dev/null differ diff --git a/public/assets/fonts/b70d2819.ttf b/public/assets/fonts/b70d2819.ttf deleted file mode 100644 index 3101340..0000000 Binary files a/public/assets/fonts/b70d2819.ttf and /dev/null differ diff --git a/public/assets/fonts/b7e499de.ttf b/public/assets/fonts/b7e499de.ttf deleted file mode 100644 index c14dcb3..0000000 Binary files a/public/assets/fonts/b7e499de.ttf and /dev/null differ diff --git a/public/assets/fonts/ba9e750d.woff b/public/assets/fonts/ba9e750d.woff deleted file mode 100644 index 41accc2..0000000 Binary files a/public/assets/fonts/ba9e750d.woff and /dev/null differ diff --git a/public/assets/fonts/bae6a1f.woff b/public/assets/fonts/bae6a1f.woff deleted file mode 100644 index b29440d..0000000 Binary files a/public/assets/fonts/bae6a1f.woff and /dev/null differ diff --git a/public/assets/fonts/bb9e5171.woff2 b/public/assets/fonts/bb9e5171.woff2 deleted file mode 100644 index 467cca3..0000000 Binary files a/public/assets/fonts/bb9e5171.woff2 and /dev/null differ diff --git a/public/assets/fonts/bbe55bf4.otf b/public/assets/fonts/bbe55bf4.otf deleted file mode 100644 index 419cdbf..0000000 Binary files a/public/assets/fonts/bbe55bf4.otf and /dev/null differ diff --git a/public/assets/fonts/bc8c8203.otf b/public/assets/fonts/bc8c8203.otf deleted file mode 100644 index 3d27d6e..0000000 Binary files a/public/assets/fonts/bc8c8203.otf and /dev/null differ diff --git a/public/assets/fonts/c0f65625.otf b/public/assets/fonts/c0f65625.otf deleted file mode 100644 index 3806792..0000000 Binary files a/public/assets/fonts/c0f65625.otf and /dev/null differ diff --git a/public/assets/fonts/c1d483eb.otf b/public/assets/fonts/c1d483eb.otf deleted file mode 100644 index 7019e3d..0000000 Binary files a/public/assets/fonts/c1d483eb.otf and /dev/null differ diff --git a/public/assets/fonts/c3a25c0a.woff2 b/public/assets/fonts/c3a25c0a.woff2 deleted file mode 100644 index c871235..0000000 Binary files a/public/assets/fonts/c3a25c0a.woff2 and /dev/null differ diff --git a/public/assets/fonts/c4dda1d6.woff2 b/public/assets/fonts/c4dda1d6.woff2 deleted file mode 100644 index 8025dc3..0000000 Binary files a/public/assets/fonts/c4dda1d6.woff2 and /dev/null differ diff --git a/public/assets/fonts/c7d5ecc9.otf b/public/assets/fonts/c7d5ecc9.otf deleted file mode 100644 index f9b94c5..0000000 Binary files a/public/assets/fonts/c7d5ecc9.otf and /dev/null differ diff --git a/public/assets/fonts/cd13f393.ttf b/public/assets/fonts/cd13f393.ttf deleted file mode 100644 index 0ad479d..0000000 Binary files a/public/assets/fonts/cd13f393.ttf and /dev/null differ diff --git a/public/assets/fonts/d00dac26.otf b/public/assets/fonts/d00dac26.otf deleted file mode 100644 index 38959dc..0000000 Binary files a/public/assets/fonts/d00dac26.otf and /dev/null differ diff --git a/public/assets/fonts/d175fc37.ttf b/public/assets/fonts/d175fc37.ttf deleted file mode 100644 index 5d1579c..0000000 Binary files a/public/assets/fonts/d175fc37.ttf and /dev/null differ diff --git a/public/assets/fonts/d1ae7201.otf b/public/assets/fonts/d1ae7201.otf deleted file mode 100644 index 60f26c9..0000000 Binary files a/public/assets/fonts/d1ae7201.otf and /dev/null differ diff --git a/public/assets/fonts/d427ebac.otf b/public/assets/fonts/d427ebac.otf deleted file mode 100644 index d45318f..0000000 Binary files a/public/assets/fonts/d427ebac.otf and /dev/null differ diff --git a/public/assets/fonts/d793b680.otf b/public/assets/fonts/d793b680.otf deleted file mode 100644 index 0e41391..0000000 Binary files a/public/assets/fonts/d793b680.otf and /dev/null differ diff --git a/public/assets/fonts/d79b87a3.eot b/public/assets/fonts/d79b87a3.eot deleted file mode 100644 index 7d404e0..0000000 Binary files a/public/assets/fonts/d79b87a3.eot and /dev/null differ diff --git a/public/assets/fonts/d7b71531.woff2 b/public/assets/fonts/d7b71531.woff2 deleted file mode 100644 index 1331a0a..0000000 Binary files a/public/assets/fonts/d7b71531.woff2 and /dev/null differ diff --git a/public/assets/fonts/d9480.otf b/public/assets/fonts/d9480.otf deleted file mode 100644 index 7da8ec1..0000000 Binary files a/public/assets/fonts/d9480.otf and /dev/null differ diff --git a/public/assets/fonts/dab1c30c.ttf b/public/assets/fonts/dab1c30c.ttf deleted file mode 100644 index f57d68c..0000000 Binary files a/public/assets/fonts/dab1c30c.ttf and /dev/null differ diff --git a/public/assets/fonts/dde2ebd0.woff2 b/public/assets/fonts/dde2ebd0.woff2 deleted file mode 100644 index 2b94dc5..0000000 Binary files a/public/assets/fonts/dde2ebd0.woff2 and /dev/null differ diff --git a/public/assets/fonts/dee9fdc2.ttf b/public/assets/fonts/dee9fdc2.ttf deleted file mode 100644 index 437cbe1..0000000 Binary files a/public/assets/fonts/dee9fdc2.ttf and /dev/null differ diff --git a/public/assets/fonts/e0be5a14.woff b/public/assets/fonts/e0be5a14.woff deleted file mode 100644 index e294135..0000000 Binary files a/public/assets/fonts/e0be5a14.woff and /dev/null differ diff --git a/public/assets/fonts/e3686b20.otf b/public/assets/fonts/e3686b20.otf deleted file mode 100644 index bb640dc..0000000 Binary files a/public/assets/fonts/e3686b20.otf and /dev/null differ diff --git a/public/assets/fonts/e3c25633.ttf b/public/assets/fonts/e3c25633.ttf deleted file mode 100644 index 2d28e6a..0000000 Binary files a/public/assets/fonts/e3c25633.ttf and /dev/null differ diff --git a/public/assets/fonts/e4390b4a.ttf b/public/assets/fonts/e4390b4a.ttf deleted file mode 100644 index 1666f47..0000000 Binary files a/public/assets/fonts/e4390b4a.ttf and /dev/null differ diff --git a/public/assets/fonts/e537a0b8.woff2 b/public/assets/fonts/e537a0b8.woff2 deleted file mode 100644 index bd5c1cb..0000000 Binary files a/public/assets/fonts/e537a0b8.woff2 and /dev/null differ diff --git a/public/assets/fonts/e5a2d94a.ttf b/public/assets/fonts/e5a2d94a.ttf deleted file mode 100644 index a6614a4..0000000 Binary files a/public/assets/fonts/e5a2d94a.ttf and /dev/null differ diff --git a/public/assets/fonts/e6dce3ac.eot b/public/assets/fonts/e6dce3ac.eot deleted file mode 100644 index 121176c..0000000 Binary files a/public/assets/fonts/e6dce3ac.eot and /dev/null differ diff --git a/public/assets/fonts/e6de2cf9.ttf b/public/assets/fonts/e6de2cf9.ttf deleted file mode 100644 index 8dc9fa9..0000000 Binary files a/public/assets/fonts/e6de2cf9.ttf and /dev/null differ diff --git a/public/assets/fonts/e7a9d94f.woff b/public/assets/fonts/e7a9d94f.woff deleted file mode 100644 index 001240c..0000000 Binary files a/public/assets/fonts/e7a9d94f.woff and /dev/null differ diff --git a/public/assets/fonts/e9bb178a.woff2 b/public/assets/fonts/e9bb178a.woff2 deleted file mode 100644 index d167638..0000000 Binary files a/public/assets/fonts/e9bb178a.woff2 and /dev/null differ diff --git a/public/assets/fonts/ea3d5a28.woff2 b/public/assets/fonts/ea3d5a28.woff2 deleted file mode 100644 index 8b0348a..0000000 Binary files a/public/assets/fonts/ea3d5a28.woff2 and /dev/null differ diff --git a/public/assets/fonts/eae7051b.woff2 b/public/assets/fonts/eae7051b.woff2 deleted file mode 100644 index 1759259..0000000 Binary files a/public/assets/fonts/eae7051b.woff2 and /dev/null differ diff --git a/public/assets/fonts/ec00689c.ttf b/public/assets/fonts/ec00689c.ttf deleted file mode 100644 index bf5dae9..0000000 Binary files a/public/assets/fonts/ec00689c.ttf and /dev/null differ diff --git a/public/assets/fonts/eebbddc3.woff b/public/assets/fonts/eebbddc3.woff deleted file mode 100644 index 0a086ef..0000000 Binary files a/public/assets/fonts/eebbddc3.woff and /dev/null differ diff --git a/public/assets/fonts/ef092533.woff2 b/public/assets/fonts/ef092533.woff2 deleted file mode 100644 index 0042fb4..0000000 Binary files a/public/assets/fonts/ef092533.woff2 and /dev/null differ diff --git a/public/assets/fonts/f19d5d1a.woff2 b/public/assets/fonts/f19d5d1a.woff2 deleted file mode 100644 index fe7644b..0000000 Binary files a/public/assets/fonts/f19d5d1a.woff2 and /dev/null differ diff --git a/public/assets/fonts/f82ab49e.ttf b/public/assets/fonts/f82ab49e.ttf deleted file mode 100644 index 6c7eb45..0000000 Binary files a/public/assets/fonts/f82ab49e.ttf and /dev/null differ diff --git a/public/assets/fonts/f8bf498d.woff b/public/assets/fonts/f8bf498d.woff deleted file mode 100644 index 1e520e0..0000000 Binary files a/public/assets/fonts/f8bf498d.woff and /dev/null differ diff --git a/public/assets/fonts/f986f7d5.otf b/public/assets/fonts/f986f7d5.otf deleted file mode 100644 index 8665855..0000000 Binary files a/public/assets/fonts/f986f7d5.otf and /dev/null differ diff --git a/public/assets/fonts/f997d798.woff2 b/public/assets/fonts/f997d798.woff2 deleted file mode 100644 index 30e01df..0000000 Binary files a/public/assets/fonts/f997d798.woff2 and /dev/null differ diff --git a/public/assets/fonts/f9ad7799.woff b/public/assets/fonts/f9ad7799.woff deleted file mode 100644 index 9cf8c3c..0000000 Binary files a/public/assets/fonts/f9ad7799.woff and /dev/null differ diff --git a/public/assets/fonts/f9fa92a4.ttf b/public/assets/fonts/f9fa92a4.ttf deleted file mode 100644 index ce99756..0000000 Binary files a/public/assets/fonts/f9fa92a4.ttf and /dev/null differ diff --git a/public/assets/fonts/fa308c4b.otf b/public/assets/fonts/fa308c4b.otf deleted file mode 100644 index 730e097..0000000 Binary files a/public/assets/fonts/fa308c4b.otf and /dev/null differ diff --git a/public/assets/fonts/fb72169d.otf b/public/assets/fonts/fb72169d.otf deleted file mode 100644 index 1bae002..0000000 Binary files a/public/assets/fonts/fb72169d.otf and /dev/null differ diff --git a/public/assets/fonts/fbbcc7b5.ttf b/public/assets/fonts/fbbcc7b5.ttf deleted file mode 100644 index 0b6d212..0000000 Binary files a/public/assets/fonts/fbbcc7b5.ttf and /dev/null differ diff --git a/public/assets/fonts/fcdef252.woff b/public/assets/fonts/fcdef252.woff deleted file mode 100644 index 1e5fd3e..0000000 Binary files a/public/assets/fonts/fcdef252.woff and /dev/null differ diff --git a/public/assets/fonts/fe2f5b7a.woff2 b/public/assets/fonts/fe2f5b7a.woff2 deleted file mode 100644 index b658207..0000000 Binary files a/public/assets/fonts/fe2f5b7a.woff2 and /dev/null differ diff --git a/public/assets/fonts/ff3caca1.ttf b/public/assets/fonts/ff3caca1.ttf deleted file mode 100644 index 9e6b1b5..0000000 Binary files a/public/assets/fonts/ff3caca1.ttf and /dev/null differ diff --git a/public/assets/fonts/ffd8dd5b.woff2 b/public/assets/fonts/ffd8dd5b.woff2 deleted file mode 100644 index 92ebea1..0000000 Binary files a/public/assets/fonts/ffd8dd5b.woff2 and /dev/null differ diff --git a/public/assets/license-purecss.md b/public/assets/license-purecss.md deleted file mode 100644 index aae45d8..0000000 --- a/public/assets/license-purecss.md +++ /dev/null @@ -1,29 +0,0 @@ -Software License Agreement (BSD License) -======================================== - -Copyright 2013 Yahoo! Inc. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - * Neither the name of the Yahoo! Inc. nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL YAHOO! INC. BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/public/assets/license-source-code-pro.txt b/public/assets/license-source-code-pro.txt deleted file mode 100755 index d154618..0000000 --- a/public/assets/license-source-code-pro.txt +++ /dev/null @@ -1,93 +0,0 @@ -Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. - -This Font Software is licensed under the SIL Open Font License, Version 1.1. - -This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/public/assets/license-source-sans-pro.txt b/public/assets/license-source-sans-pro.txt deleted file mode 100644 index 9eeeb0d..0000000 --- a/public/assets/license-source-sans-pro.txt +++ /dev/null @@ -1,93 +0,0 @@ -Copyright 2010-2018 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries. - -This Font Software is licensed under the SIL Open Font License, Version 1.1. - -This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/public/assets/license-source-serif-pro.md b/public/assets/license-source-serif-pro.md deleted file mode 100644 index 09be3f6..0000000 --- a/public/assets/license-source-serif-pro.md +++ /dev/null @@ -1,93 +0,0 @@ -Copyright 2014-2018 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries. - -This Font Software is licensed under the SIL Open Font License, Version 1.1. - -This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/public/assets/style-compat.css b/public/assets/style-compat.css deleted file mode 100644 index 2b27256..0000000 --- a/public/assets/style-compat.css +++ /dev/null @@ -1 +0,0 @@ -html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{max-width:100ch;margin:auto}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#e2e0de}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.hidden,[hidden]{display:none!important}.pure-img{max-width:100%;height:auto;display:block}.pure-g{letter-spacing:-.31em;*letter-spacing:normal;*word-spacing:-.43em;text-rendering:optimizespeed;font-family:FreeSans,Arimo,Droid Sans,Helvetica,Arial,sans-serif;display:flex;flex-flow:row wrap;align-content:flex-start}@media (-ms-high-contrast:active),(-ms-high-contrast:none){table .pure-g{display:block}}.opera-only :-o-prefocus,.pure-g{word-spacing:-.43em}.pure-u{display:inline-block;*display:inline;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-g [class*=pure-u]{font-family:sans-serif}.pure-u-sm-1,.pure-u-sm-1-1,.pure-u-sm-1-2,.pure-u-sm-1-3,.pure-u-sm-1-4,.pure-u-sm-1-5,.pure-u-sm-1-6,.pure-u-sm-1-8,.pure-u-sm-1-12,.pure-u-sm-1-24,.pure-u-sm-2-3,.pure-u-sm-2-5,.pure-u-sm-2-24,.pure-u-sm-3-4,.pure-u-sm-3-5,.pure-u-sm-3-8,.pure-u-sm-3-24,.pure-u-sm-4-5,.pure-u-sm-4-24,.pure-u-sm-5-5,.pure-u-sm-5-6,.pure-u-sm-5-8,.pure-u-sm-5-12,.pure-u-sm-5-24,.pure-u-sm-6-24,.pure-u-sm-7-8,.pure-u-sm-7-12,.pure-u-sm-7-24,.pure-u-sm-8-24,.pure-u-sm-9-24,.pure-u-sm-10-24,.pure-u-sm-11-12,.pure-u-sm-11-24,.pure-u-sm-12-24,.pure-u-sm-13-24,.pure-u-sm-14-24,.pure-u-sm-15-24,.pure-u-sm-16-24,.pure-u-sm-17-24,.pure-u-sm-18-24,.pure-u-sm-19-24,.pure-u-sm-20-24,.pure-u-sm-21-24,.pure-u-sm-22-24,.pure-u-sm-23-24,.pure-u-sm-24-24{display:inline-block;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-sm-1-24{width:4.1667%}.pure-u-sm-1-12,.pure-u-sm-2-24{width:8.3333%}.pure-u-sm-1-8,.pure-u-sm-3-24{width:12.5%}.pure-u-sm-1-6,.pure-u-sm-4-24{width:16.6667%}.pure-u-sm-1-5{width:20%}.pure-u-sm-5-24{width:20.8333%}.pure-u-sm-1-4,.pure-u-sm-6-24{width:25%}.pure-u-sm-7-24{width:29.1667%}.pure-u-sm-1-3,.pure-u-sm-8-24{width:33.3333%}.pure-u-sm-3-8,.pure-u-sm-9-24{width:37.5%}.pure-u-sm-2-5{width:40%}.pure-u-sm-5-12,.pure-u-sm-10-24{width:41.6667%}.pure-u-sm-11-24{width:45.8333%}.pure-u-sm-1-2,.pure-u-sm-12-24{width:50%}.pure-u-sm-13-24{width:54.1667%}.pure-u-sm-7-12,.pure-u-sm-14-24{width:58.3333%}.pure-u-sm-3-5{width:60%}.pure-u-sm-5-8,.pure-u-sm-15-24{width:62.5%}.pure-u-sm-2-3,.pure-u-sm-16-24{width:66.6667%}.pure-u-sm-17-24{width:70.8333%}.pure-u-sm-3-4,.pure-u-sm-18-24{width:75%}.pure-u-sm-19-24{width:79.1667%}.pure-u-sm-4-5{width:80%}.pure-u-sm-5-6,.pure-u-sm-20-24{width:83.3333%}.pure-u-sm-7-8,.pure-u-sm-21-24{width:87.5%}.pure-u-sm-11-12,.pure-u-sm-22-24{width:91.6667%}.pure-u-sm-23-24{width:95.8333%}.pure-u-sm-1,.pure-u-sm-1-1,.pure-u-sm-5-5,.pure-u-sm-24-24{width:100%}.pure-u-md-1,.pure-u-md-1-1,.pure-u-md-1-2,.pure-u-md-1-3,.pure-u-md-1-4,.pure-u-md-1-5,.pure-u-md-1-6,.pure-u-md-1-8,.pure-u-md-1-12,.pure-u-md-1-24,.pure-u-md-2-3,.pure-u-md-2-5,.pure-u-md-2-24,.pure-u-md-3-4,.pure-u-md-3-5,.pure-u-md-3-8,.pure-u-md-3-24,.pure-u-md-4-5,.pure-u-md-4-24,.pure-u-md-5-5,.pure-u-md-5-6,.pure-u-md-5-8,.pure-u-md-5-12,.pure-u-md-5-24,.pure-u-md-6-24,.pure-u-md-7-8,.pure-u-md-7-12,.pure-u-md-7-24,.pure-u-md-8-24,.pure-u-md-9-24,.pure-u-md-10-24,.pure-u-md-11-12,.pure-u-md-11-24,.pure-u-md-12-24,.pure-u-md-13-24,.pure-u-md-14-24,.pure-u-md-15-24,.pure-u-md-16-24,.pure-u-md-17-24,.pure-u-md-18-24,.pure-u-md-19-24,.pure-u-md-20-24,.pure-u-md-21-24,.pure-u-md-22-24,.pure-u-md-23-24,.pure-u-md-24-24{display:inline-block;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-md-1-24{width:4.1667%}.pure-u-md-1-12,.pure-u-md-2-24{width:8.3333%}.pure-u-md-1-8,.pure-u-md-3-24{width:12.5%}.pure-u-md-1-6,.pure-u-md-4-24{width:16.6667%}.pure-u-md-1-5{width:20%}.pure-u-md-5-24{width:20.8333%}.pure-u-md-1-4,.pure-u-md-6-24{width:25%}.pure-u-md-7-24{width:29.1667%}.pure-u-md-1-3,.pure-u-md-8-24{width:33.3333%}.pure-u-md-3-8,.pure-u-md-9-24{width:37.5%}.pure-u-md-2-5{width:40%}.pure-u-md-5-12,.pure-u-md-10-24{width:41.6667%}.pure-u-md-11-24{width:45.8333%}.pure-u-md-1-2,.pure-u-md-12-24{width:50%}.pure-u-md-13-24{width:54.1667%}.pure-u-md-7-12,.pure-u-md-14-24{width:58.3333%}.pure-u-md-3-5{width:60%}.pure-u-md-5-8,.pure-u-md-15-24{width:62.5%}.pure-u-md-2-3,.pure-u-md-16-24{width:66.6667%}.pure-u-md-17-24{width:70.8333%}.pure-u-md-3-4,.pure-u-md-18-24{width:75%}.pure-u-md-19-24{width:79.1667%}.pure-u-md-4-5{width:80%}.pure-u-md-5-6,.pure-u-md-20-24{width:83.3333%}.pure-u-md-7-8,.pure-u-md-21-24{width:87.5%}.pure-u-md-11-12,.pure-u-md-22-24{width:91.6667%}.pure-u-md-23-24{width:95.8333%}.pure-u-md-1,.pure-u-md-1-1,.pure-u-md-5-5,.pure-u-md-24-24{width:100%}.pure-u-lg-1,.pure-u-lg-1-1,.pure-u-lg-1-2,.pure-u-lg-1-3,.pure-u-lg-1-4,.pure-u-lg-1-5,.pure-u-lg-1-6,.pure-u-lg-1-8,.pure-u-lg-1-12,.pure-u-lg-1-24,.pure-u-lg-2-3,.pure-u-lg-2-5,.pure-u-lg-2-24,.pure-u-lg-3-4,.pure-u-lg-3-5,.pure-u-lg-3-8,.pure-u-lg-3-24,.pure-u-lg-4-5,.pure-u-lg-4-24,.pure-u-lg-5-5,.pure-u-lg-5-6,.pure-u-lg-5-8,.pure-u-lg-5-12,.pure-u-lg-5-24,.pure-u-lg-6-24,.pure-u-lg-7-8,.pure-u-lg-7-12,.pure-u-lg-7-24,.pure-u-lg-8-24,.pure-u-lg-9-24,.pure-u-lg-10-24,.pure-u-lg-11-12,.pure-u-lg-11-24,.pure-u-lg-12-24,.pure-u-lg-13-24,.pure-u-lg-14-24,.pure-u-lg-15-24,.pure-u-lg-16-24,.pure-u-lg-17-24,.pure-u-lg-18-24,.pure-u-lg-19-24,.pure-u-lg-20-24,.pure-u-lg-21-24,.pure-u-lg-22-24,.pure-u-lg-23-24,.pure-u-lg-24-24{display:inline-block;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-lg-1-24{width:4.1667%}.pure-u-lg-1-12,.pure-u-lg-2-24{width:8.3333%}.pure-u-lg-1-8,.pure-u-lg-3-24{width:12.5%}.pure-u-lg-1-6,.pure-u-lg-4-24{width:16.6667%}.pure-u-lg-1-5{width:20%}.pure-u-lg-5-24{width:20.8333%}.pure-u-lg-1-4,.pure-u-lg-6-24{width:25%}.pure-u-lg-7-24{width:29.1667%}.pure-u-lg-1-3,.pure-u-lg-8-24{width:33.3333%}.pure-u-lg-3-8,.pure-u-lg-9-24{width:37.5%}.pure-u-lg-2-5{width:40%}.pure-u-lg-5-12,.pure-u-lg-10-24{width:41.6667%}.pure-u-lg-11-24{width:45.8333%}.pure-u-lg-1-2,.pure-u-lg-12-24{width:50%}.pure-u-lg-13-24{width:54.1667%}.pure-u-lg-7-12,.pure-u-lg-14-24{width:58.3333%}.pure-u-lg-3-5{width:60%}.pure-u-lg-5-8,.pure-u-lg-15-24{width:62.5%}.pure-u-lg-2-3,.pure-u-lg-16-24{width:66.6667%}.pure-u-lg-17-24{width:70.8333%}.pure-u-lg-3-4,.pure-u-lg-18-24{width:75%}.pure-u-lg-19-24{width:79.1667%}.pure-u-lg-4-5{width:80%}.pure-u-lg-5-6,.pure-u-lg-20-24{width:83.3333%}.pure-u-lg-7-8,.pure-u-lg-21-24{width:87.5%}.pure-u-lg-11-12,.pure-u-lg-22-24{width:91.6667%}.pure-u-lg-23-24{width:95.8333%}.pure-u-lg-1,.pure-u-lg-1-1,.pure-u-lg-5-5,.pure-u-lg-24-24{width:100%}.pure-u-1,.pure-u-1-1,.pure-u-1-2,.pure-u-1-3,.pure-u-1-4,.pure-u-1-5,.pure-u-1-6,.pure-u-1-8,.pure-u-1-12,.pure-u-1-24,.pure-u-2-3,.pure-u-2-5,.pure-u-2-24,.pure-u-3-4,.pure-u-3-5,.pure-u-3-8,.pure-u-3-24,.pure-u-4-5,.pure-u-4-24,.pure-u-5-5,.pure-u-5-6,.pure-u-5-8,.pure-u-5-12,.pure-u-5-24,.pure-u-6-24,.pure-u-7-8,.pure-u-7-12,.pure-u-7-24,.pure-u-8-24,.pure-u-9-24,.pure-u-10-24,.pure-u-11-12,.pure-u-11-24,.pure-u-12-24,.pure-u-13-24,.pure-u-14-24,.pure-u-15-24,.pure-u-16-24,.pure-u-17-24,.pure-u-18-24,.pure-u-19-24,.pure-u-20-24,.pure-u-21-24,.pure-u-22-24,.pure-u-23-24,.pure-u-24-24{display:inline-block;*display:inline;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-1-24{width:4.1667%;*width:4.1357%}.pure-u-1-12,.pure-u-2-24{width:8.3333%;*width:8.3023%}.pure-u-1-8,.pure-u-3-24{width:12.5%;*width:12.469%}.pure-u-1-6,.pure-u-4-24{width:16.6667%;*width:16.6357%}.pure-u-1-5{width:20%;*width:19.969%}.pure-u-5-24{width:20.8333%;*width:20.8023%}.pure-u-1-4,.pure-u-6-24{width:25%;*width:24.969%}.pure-u-7-24{width:29.1667%;*width:29.1357%}.pure-u-1-3,.pure-u-8-24{width:33.3333%;*width:33.3023%}.pure-u-3-8,.pure-u-9-24{width:37.5%;*width:37.469%}.pure-u-2-5{width:40%;*width:39.969%}.pure-u-5-12,.pure-u-10-24{width:41.6667%;*width:41.6357%}.pure-u-11-24{width:45.8333%;*width:45.8023%}.pure-u-1-2,.pure-u-12-24{width:50%;*width:49.969%}.pure-u-13-24{width:54.1667%;*width:54.1357%}.pure-u-7-12,.pure-u-14-24{width:58.3333%;*width:58.3023%}.pure-u-3-5{width:60%;*width:59.969%}.pure-u-5-8,.pure-u-15-24{width:62.5%;*width:62.469%}.pure-u-2-3,.pure-u-16-24{width:66.6667%;*width:66.6357%}.pure-u-17-24{width:70.8333%;*width:70.8023%}.pure-u-3-4,.pure-u-18-24{width:75%;*width:74.969%}.pure-u-19-24{width:79.1667%;*width:79.1357%}.pure-u-4-5{width:80%;*width:79.969%}.pure-u-5-6,.pure-u-20-24{width:83.3333%;*width:83.3023%}.pure-u-7-8,.pure-u-21-24{width:87.5%;*width:87.469%}.pure-u-11-12,.pure-u-22-24{width:91.6667%;*width:91.6357%}.pure-u-23-24{width:95.8333%;*width:95.8023%}.pure-u-1,.pure-u-1-1,.pure-u-5-5,.pure-u-24-24{width:100%}.pure-menu{box-sizing:border-box}.pure-menu-fixed{position:fixed;left:0;top:0;z-index:1}.pure-menu-item,.pure-menu-list{position:relative}.pure-menu-list{list-style:none;margin:0;padding:0}.pure-menu-item{padding:0;margin:0;height:100%}.pure-menu-heading,.pure-menu-link{display:block;text-decoration:none;white-space:nowrap}.pure-menu-horizontal{width:100%;white-space:nowrap}.pure-menu-horizontal .pure-menu-list{display:inline-block}.pure-menu-horizontal .pure-menu-heading,.pure-menu-horizontal .pure-menu-item,.pure-menu-horizontal .pure-menu-separator{display:inline-block;*display:inline;zoom:1;vertical-align:middle}.pure-menu-horizontal .pure-menu-children .pure-menu-separator,.pure-menu-separator{background-color:#ccc;height:1px;margin:.3em 0}.pure-menu-horizontal .pure-menu-separator{width:1px;height:1.3em;margin:0 .3em}.pure-menu-horizontal .pure-menu-children .pure-menu-separator{display:block;width:auto}.pure-menu-heading{text-transform:uppercase;color:#565d64}.pure-menu-link{color:#777}.pure-menu-children{background-color:#1d1f21}.pure-menu-disabled,.pure-menu-heading,.pure-menu-link{padding:.5em 1em}.pure-menu-disabled{opacity:.5}.pure-menu-disabled .pure-menu-link:hover{background-color:transparent}.pure-menu-active>.pure-menu-link,.pure-menu-link:focus,.pure-menu-link:hover{background-color:#282a2e}.pure-menu-selected .pure-menu-link,.pure-menu-selected .pure-menu-link:visited{color:#e2e0de}.pure-table{border-collapse:collapse;border-spacing:0;empty-cells:show;border:1px solid #cbcbcb}.pure-table caption{color:#e2e0de;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.pure-table td,.pure-table th{border-left:1px solid #cbcbcb;border-width:0 0 0 1px;font-size:inherit;margin:0;overflow:visible;padding:.5em 1em}.pure-table td:first-child,.pure-table th:first-child{border-left-width:0}.pure-table thead{background-color:#e0e0e0;color:#e2e0de;text-align:left;vertical-align:bottom}.pure-table td{background-color:transparent}.pure-table-odd td,.pure-table-striped tr:nth-child(2n-1) td{background-color:#f2f2f2}.pure-table-bordered td{border-bottom:1px solid #cbcbcb}.pure-table-bordered tbody>tr:last-child>td{border-bottom-width:0}.pure-table-horizontal td,.pure-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #cbcbcb}.pure-table-horizontal tbody>tr:last-child>td{border-bottom-width:0}.highlight .hll{background-color:#373b41}.highlight{background:#101112;color:#c5c8c6}.highlight .c{color:#969896}.highlight .err{color:#c66}.highlight .k{color:#b294bb}.highlight .l{color:#de935f}.highlight .n{color:#c5c8c6}.highlight .o{color:#8abeb7}.highlight .p{color:#c5c8c6}.highlight .c1,.highlight .cm,.highlight .cp,.highlight .cs{color:#969896}.highlight .gd{color:#c66}.highlight .ge{font-style:italic}.highlight .gh{color:#c5c8c6;font-weight:700}.highlight .gi{color:#b5bd68}.highlight .gp{color:#969896}.highlight .gp,.highlight .gs,.highlight .gu{font-weight:700}.highlight .gu{color:#8abeb7}.highlight .kc,.highlight .kd{color:#b294bb}.highlight .kn{color:#8abeb7}.highlight .kp,.highlight .kr{color:#b294bb}.highlight .kt{color:#f0c674}.highlight .ld{color:#b5bd68}.highlight .m{color:#de935f}.highlight .s{color:#b5bd68}.highlight .na{color:#81a2be}.highlight .nb{color:#c5c8c6}.highlight .nc{color:#f0c674}.highlight .no{color:#c66}.highlight .nd{color:#8abeb7}.highlight .ni{color:#c5c8c6}.highlight .ne{color:#c66}.highlight .nf{color:#81a2be}.highlight .nl{color:#c5c8c6}.highlight .nn{color:#f0c674}.highlight .nx{color:#81a2be}.highlight .py{color:#c5c8c6}.highlight .nt{color:#8abeb7}.highlight .nv{color:#c66}.highlight .ow{color:#8abeb7}.highlight .w{color:#c5c8c6}.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#de935f}.highlight .sb{color:#b5bd68}.highlight .sc{color:#c5c8c6}.highlight .sd{color:#969896}.highlight .s2{color:#b5bd68}.highlight .se{color:#de935f}.highlight .sh{color:#b5bd68}.highlight .si{color:#de935f}.highlight .s1,.highlight .sr,.highlight .ss,.highlight .sx{color:#b5bd68}.highlight .bp{color:#c5c8c6}.highlight .vc,.highlight .vg,.highlight .vi{color:#c66}.highlight .il{color:#de935f}body{background-color:#1d1f21;color:#c5c8c6;font-display:swap;font-family:Source Sans Pro,sans-serif;font-size:18px;font-style:normal;font-weight:400}abbr,cite,q{font-family:Source Serif Pro,serif}cite,em,q{font-style:italic}b,bold,dt,strong{font-weight:700}code,kbd,pre,samp{font-family:Source Code Pro,monospace}kbd,samp{background-color:#282a2e}.highlight,code,kbd,pre,samp{border:0;border-radius:.25em;padding:0 .125em}mark{background-color:#f0c674}blockquote{border-left:.5em solid #969896;border-radius:.25em;margin-left:0;padding-left:2em}a{color:#81a2be}a:hover,a:hover:visited{color:#8abeb7}a:visited{color:#b294bb}hr{border:0;border-top:1px dashed #c5c8c6}::-moz-selection{background-color:#373b41}::selection{background-color:#373b41}.pure-g [class*=pure-u],button,html,input,select,textarea{color:#c5c8c6;font-family:Source Sans Pro,sans-serif;font-weight:400}.pure-table{border:1px solid #969896;color:#c5c8c6;background-color:#1d1f21}.pure-table td,.pure-table th{border-left:1px solid #969896}.pure-table thead{color:#c5c8c6;background-color:#282a2e}.pure-menu a,.pure-menu a:hover,.pure-menu a:hover:visited,.pure-menu a:visited{color:#c5c8c6}.pure-menu-header:hover,.pure-menu-item:hover{background-color:#282a2e}.pure-menu-disabled:hover{background-color:transparent}.footer-content{border-top:1px solid #c5c8c6}.navigation-content{border-bottom:1px solid #c5c8c6}.navigation-header{font-size:1.25em}.navigation-header a{color:#c5c8c6}.navigation-header-subtitle{font-family:Source Serif Pro,serif}.footer-content,.navigation-content,.pagination-content{display:table;margin:0 auto;text-align:center;width:100%}figure{text-align:center}figure img{margin:0 auto}.post-title{font-family:Source Serif Pro,serif;font-weight:700;margin-bottom:0}.post-meta{font-size:.9em;margin:0 0 .5em}.post-meta a{text-decoration:none}.post-meta a:hover{text-decoration:underline}.post-divider{border-top:1px solid #c5c8c6}.pull-end{float:right}.pull-start,[dir=rtl] .pull-end{float:left}[dir=rtl] pull-start{float:right}.fixup{position:relative;top:-.05em} \ No newline at end of file diff --git a/public/assets/style.css b/public/assets/style.css deleted file mode 100644 index 56b3743..0000000 --- a/public/assets/style.css +++ /dev/null @@ -1 +0,0 @@ -html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{max-width:100ch;margin:auto}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#e2e0de}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.hidden,[hidden]{display:none!important}.pure-img{max-width:100%;height:auto;display:block}.pure-g{letter-spacing:-.31em;*letter-spacing:normal;*word-spacing:-.43em;text-rendering:optimizespeed;font-family:FreeSans,Arimo,Droid Sans,Helvetica,Arial,sans-serif;display:flex;flex-flow:row wrap;align-content:flex-start}@media (-ms-high-contrast:active),(-ms-high-contrast:none){table .pure-g{display:block}}.opera-only :-o-prefocus,.pure-g{word-spacing:-.43em}.pure-u{display:inline-block;*display:inline;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-g [class*=pure-u]{font-family:sans-serif}@media screen and (min-width:35.5em){.pure-u-sm-1,.pure-u-sm-1-1,.pure-u-sm-1-2,.pure-u-sm-1-3,.pure-u-sm-1-4,.pure-u-sm-1-5,.pure-u-sm-1-6,.pure-u-sm-1-8,.pure-u-sm-1-12,.pure-u-sm-1-24,.pure-u-sm-2-3,.pure-u-sm-2-5,.pure-u-sm-2-24,.pure-u-sm-3-4,.pure-u-sm-3-5,.pure-u-sm-3-8,.pure-u-sm-3-24,.pure-u-sm-4-5,.pure-u-sm-4-24,.pure-u-sm-5-5,.pure-u-sm-5-6,.pure-u-sm-5-8,.pure-u-sm-5-12,.pure-u-sm-5-24,.pure-u-sm-6-24,.pure-u-sm-7-8,.pure-u-sm-7-12,.pure-u-sm-7-24,.pure-u-sm-8-24,.pure-u-sm-9-24,.pure-u-sm-10-24,.pure-u-sm-11-12,.pure-u-sm-11-24,.pure-u-sm-12-24,.pure-u-sm-13-24,.pure-u-sm-14-24,.pure-u-sm-15-24,.pure-u-sm-16-24,.pure-u-sm-17-24,.pure-u-sm-18-24,.pure-u-sm-19-24,.pure-u-sm-20-24,.pure-u-sm-21-24,.pure-u-sm-22-24,.pure-u-sm-23-24,.pure-u-sm-24-24{display:inline-block;*display:inline;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-sm-1-24{width:4.1667%;*width:4.1357%}.pure-u-sm-1-12,.pure-u-sm-2-24{width:8.3333%;*width:8.3023%}.pure-u-sm-1-8,.pure-u-sm-3-24{width:12.5%;*width:12.469%}.pure-u-sm-1-6,.pure-u-sm-4-24{width:16.6667%;*width:16.6357%}.pure-u-sm-1-5{width:20%;*width:19.969%}.pure-u-sm-5-24{width:20.8333%;*width:20.8023%}.pure-u-sm-1-4,.pure-u-sm-6-24{width:25%;*width:24.969%}.pure-u-sm-7-24{width:29.1667%;*width:29.1357%}.pure-u-sm-1-3,.pure-u-sm-8-24{width:33.3333%;*width:33.3023%}.pure-u-sm-3-8,.pure-u-sm-9-24{width:37.5%;*width:37.469%}.pure-u-sm-2-5{width:40%;*width:39.969%}.pure-u-sm-5-12,.pure-u-sm-10-24{width:41.6667%;*width:41.6357%}.pure-u-sm-11-24{width:45.8333%;*width:45.8023%}.pure-u-sm-1-2,.pure-u-sm-12-24{width:50%;*width:49.969%}.pure-u-sm-13-24{width:54.1667%;*width:54.1357%}.pure-u-sm-7-12,.pure-u-sm-14-24{width:58.3333%;*width:58.3023%}.pure-u-sm-3-5{width:60%;*width:59.969%}.pure-u-sm-5-8,.pure-u-sm-15-24{width:62.5%;*width:62.469%}.pure-u-sm-2-3,.pure-u-sm-16-24{width:66.6667%;*width:66.6357%}.pure-u-sm-17-24{width:70.8333%;*width:70.8023%}.pure-u-sm-3-4,.pure-u-sm-18-24{width:75%;*width:74.969%}.pure-u-sm-19-24{width:79.1667%;*width:79.1357%}.pure-u-sm-4-5{width:80%;*width:79.969%}.pure-u-sm-5-6,.pure-u-sm-20-24{width:83.3333%;*width:83.3023%}.pure-u-sm-7-8,.pure-u-sm-21-24{width:87.5%;*width:87.469%}.pure-u-sm-11-12,.pure-u-sm-22-24{width:91.6667%;*width:91.6357%}.pure-u-sm-23-24{width:95.8333%;*width:95.8023%}.pure-u-sm-1,.pure-u-sm-1-1,.pure-u-sm-5-5,.pure-u-sm-24-24{width:100%}}@media screen and (min-width:48em){.pure-u-md-1,.pure-u-md-1-1,.pure-u-md-1-2,.pure-u-md-1-3,.pure-u-md-1-4,.pure-u-md-1-5,.pure-u-md-1-6,.pure-u-md-1-8,.pure-u-md-1-12,.pure-u-md-1-24,.pure-u-md-2-3,.pure-u-md-2-5,.pure-u-md-2-24,.pure-u-md-3-4,.pure-u-md-3-5,.pure-u-md-3-8,.pure-u-md-3-24,.pure-u-md-4-5,.pure-u-md-4-24,.pure-u-md-5-5,.pure-u-md-5-6,.pure-u-md-5-8,.pure-u-md-5-12,.pure-u-md-5-24,.pure-u-md-6-24,.pure-u-md-7-8,.pure-u-md-7-12,.pure-u-md-7-24,.pure-u-md-8-24,.pure-u-md-9-24,.pure-u-md-10-24,.pure-u-md-11-12,.pure-u-md-11-24,.pure-u-md-12-24,.pure-u-md-13-24,.pure-u-md-14-24,.pure-u-md-15-24,.pure-u-md-16-24,.pure-u-md-17-24,.pure-u-md-18-24,.pure-u-md-19-24,.pure-u-md-20-24,.pure-u-md-21-24,.pure-u-md-22-24,.pure-u-md-23-24,.pure-u-md-24-24{display:inline-block;*display:inline;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-md-1-24{width:4.1667%;*width:4.1357%}.pure-u-md-1-12,.pure-u-md-2-24{width:8.3333%;*width:8.3023%}.pure-u-md-1-8,.pure-u-md-3-24{width:12.5%;*width:12.469%}.pure-u-md-1-6,.pure-u-md-4-24{width:16.6667%;*width:16.6357%}.pure-u-md-1-5{width:20%;*width:19.969%}.pure-u-md-5-24{width:20.8333%;*width:20.8023%}.pure-u-md-1-4,.pure-u-md-6-24{width:25%;*width:24.969%}.pure-u-md-7-24{width:29.1667%;*width:29.1357%}.pure-u-md-1-3,.pure-u-md-8-24{width:33.3333%;*width:33.3023%}.pure-u-md-3-8,.pure-u-md-9-24{width:37.5%;*width:37.469%}.pure-u-md-2-5{width:40%;*width:39.969%}.pure-u-md-5-12,.pure-u-md-10-24{width:41.6667%;*width:41.6357%}.pure-u-md-11-24{width:45.8333%;*width:45.8023%}.pure-u-md-1-2,.pure-u-md-12-24{width:50%;*width:49.969%}.pure-u-md-13-24{width:54.1667%;*width:54.1357%}.pure-u-md-7-12,.pure-u-md-14-24{width:58.3333%;*width:58.3023%}.pure-u-md-3-5{width:60%;*width:59.969%}.pure-u-md-5-8,.pure-u-md-15-24{width:62.5%;*width:62.469%}.pure-u-md-2-3,.pure-u-md-16-24{width:66.6667%;*width:66.6357%}.pure-u-md-17-24{width:70.8333%;*width:70.8023%}.pure-u-md-3-4,.pure-u-md-18-24{width:75%;*width:74.969%}.pure-u-md-19-24{width:79.1667%;*width:79.1357%}.pure-u-md-4-5{width:80%;*width:79.969%}.pure-u-md-5-6,.pure-u-md-20-24{width:83.3333%;*width:83.3023%}.pure-u-md-7-8,.pure-u-md-21-24{width:87.5%;*width:87.469%}.pure-u-md-11-12,.pure-u-md-22-24{width:91.6667%;*width:91.6357%}.pure-u-md-23-24{width:95.8333%;*width:95.8023%}.pure-u-md-1,.pure-u-md-1-1,.pure-u-md-5-5,.pure-u-md-24-24{width:100%}}@media screen and (min-width:64em){.pure-u-lg-1,.pure-u-lg-1-1,.pure-u-lg-1-2,.pure-u-lg-1-3,.pure-u-lg-1-4,.pure-u-lg-1-5,.pure-u-lg-1-6,.pure-u-lg-1-8,.pure-u-lg-1-12,.pure-u-lg-1-24,.pure-u-lg-2-3,.pure-u-lg-2-5,.pure-u-lg-2-24,.pure-u-lg-3-4,.pure-u-lg-3-5,.pure-u-lg-3-8,.pure-u-lg-3-24,.pure-u-lg-4-5,.pure-u-lg-4-24,.pure-u-lg-5-5,.pure-u-lg-5-6,.pure-u-lg-5-8,.pure-u-lg-5-12,.pure-u-lg-5-24,.pure-u-lg-6-24,.pure-u-lg-7-8,.pure-u-lg-7-12,.pure-u-lg-7-24,.pure-u-lg-8-24,.pure-u-lg-9-24,.pure-u-lg-10-24,.pure-u-lg-11-12,.pure-u-lg-11-24,.pure-u-lg-12-24,.pure-u-lg-13-24,.pure-u-lg-14-24,.pure-u-lg-15-24,.pure-u-lg-16-24,.pure-u-lg-17-24,.pure-u-lg-18-24,.pure-u-lg-19-24,.pure-u-lg-20-24,.pure-u-lg-21-24,.pure-u-lg-22-24,.pure-u-lg-23-24,.pure-u-lg-24-24{display:inline-block;*display:inline;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-lg-1-24{width:4.1667%;*width:4.1357%}.pure-u-lg-1-12,.pure-u-lg-2-24{width:8.3333%;*width:8.3023%}.pure-u-lg-1-8,.pure-u-lg-3-24{width:12.5%;*width:12.469%}.pure-u-lg-1-6,.pure-u-lg-4-24{width:16.6667%;*width:16.6357%}.pure-u-lg-1-5{width:20%;*width:19.969%}.pure-u-lg-5-24{width:20.8333%;*width:20.8023%}.pure-u-lg-1-4,.pure-u-lg-6-24{width:25%;*width:24.969%}.pure-u-lg-7-24{width:29.1667%;*width:29.1357%}.pure-u-lg-1-3,.pure-u-lg-8-24{width:33.3333%;*width:33.3023%}.pure-u-lg-3-8,.pure-u-lg-9-24{width:37.5%;*width:37.469%}.pure-u-lg-2-5{width:40%;*width:39.969%}.pure-u-lg-5-12,.pure-u-lg-10-24{width:41.6667%;*width:41.6357%}.pure-u-lg-11-24{width:45.8333%;*width:45.8023%}.pure-u-lg-1-2,.pure-u-lg-12-24{width:50%;*width:49.969%}.pure-u-lg-13-24{width:54.1667%;*width:54.1357%}.pure-u-lg-7-12,.pure-u-lg-14-24{width:58.3333%;*width:58.3023%}.pure-u-lg-3-5{width:60%;*width:59.969%}.pure-u-lg-5-8,.pure-u-lg-15-24{width:62.5%;*width:62.469%}.pure-u-lg-2-3,.pure-u-lg-16-24{width:66.6667%;*width:66.6357%}.pure-u-lg-17-24{width:70.8333%;*width:70.8023%}.pure-u-lg-3-4,.pure-u-lg-18-24{width:75%;*width:74.969%}.pure-u-lg-19-24{width:79.1667%;*width:79.1357%}.pure-u-lg-4-5{width:80%;*width:79.969%}.pure-u-lg-5-6,.pure-u-lg-20-24{width:83.3333%;*width:83.3023%}.pure-u-lg-7-8,.pure-u-lg-21-24{width:87.5%;*width:87.469%}.pure-u-lg-11-12,.pure-u-lg-22-24{width:91.6667%;*width:91.6357%}.pure-u-lg-23-24{width:95.8333%;*width:95.8023%}.pure-u-lg-1,.pure-u-lg-1-1,.pure-u-lg-5-5,.pure-u-lg-24-24{width:100%}}@media screen and (min-width:80em){.pure-u-xl-1,.pure-u-xl-1-1,.pure-u-xl-1-2,.pure-u-xl-1-3,.pure-u-xl-1-4,.pure-u-xl-1-5,.pure-u-xl-1-6,.pure-u-xl-1-8,.pure-u-xl-1-12,.pure-u-xl-1-24,.pure-u-xl-2-3,.pure-u-xl-2-5,.pure-u-xl-2-24,.pure-u-xl-3-4,.pure-u-xl-3-5,.pure-u-xl-3-8,.pure-u-xl-3-24,.pure-u-xl-4-5,.pure-u-xl-4-24,.pure-u-xl-5-5,.pure-u-xl-5-6,.pure-u-xl-5-8,.pure-u-xl-5-12,.pure-u-xl-5-24,.pure-u-xl-6-24,.pure-u-xl-7-8,.pure-u-xl-7-12,.pure-u-xl-7-24,.pure-u-xl-8-24,.pure-u-xl-9-24,.pure-u-xl-10-24,.pure-u-xl-11-12,.pure-u-xl-11-24,.pure-u-xl-12-24,.pure-u-xl-13-24,.pure-u-xl-14-24,.pure-u-xl-15-24,.pure-u-xl-16-24,.pure-u-xl-17-24,.pure-u-xl-18-24,.pure-u-xl-19-24,.pure-u-xl-20-24,.pure-u-xl-21-24,.pure-u-xl-22-24,.pure-u-xl-23-24,.pure-u-xl-24-24{display:inline-block;*display:inline;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-xl-1-24{width:4.1667%;*width:4.1357%}.pure-u-xl-1-12,.pure-u-xl-2-24{width:8.3333%;*width:8.3023%}.pure-u-xl-1-8,.pure-u-xl-3-24{width:12.5%;*width:12.469%}.pure-u-xl-1-6,.pure-u-xl-4-24{width:16.6667%;*width:16.6357%}.pure-u-xl-1-5{width:20%;*width:19.969%}.pure-u-xl-5-24{width:20.8333%;*width:20.8023%}.pure-u-xl-1-4,.pure-u-xl-6-24{width:25%;*width:24.969%}.pure-u-xl-7-24{width:29.1667%;*width:29.1357%}.pure-u-xl-1-3,.pure-u-xl-8-24{width:33.3333%;*width:33.3023%}.pure-u-xl-3-8,.pure-u-xl-9-24{width:37.5%;*width:37.469%}.pure-u-xl-2-5{width:40%;*width:39.969%}.pure-u-xl-5-12,.pure-u-xl-10-24{width:41.6667%;*width:41.6357%}.pure-u-xl-11-24{width:45.8333%;*width:45.8023%}.pure-u-xl-1-2,.pure-u-xl-12-24{width:50%;*width:49.969%}.pure-u-xl-13-24{width:54.1667%;*width:54.1357%}.pure-u-xl-7-12,.pure-u-xl-14-24{width:58.3333%;*width:58.3023%}.pure-u-xl-3-5{width:60%;*width:59.969%}.pure-u-xl-5-8,.pure-u-xl-15-24{width:62.5%;*width:62.469%}.pure-u-xl-2-3,.pure-u-xl-16-24{width:66.6667%;*width:66.6357%}.pure-u-xl-17-24{width:70.8333%;*width:70.8023%}.pure-u-xl-3-4,.pure-u-xl-18-24{width:75%;*width:74.969%}.pure-u-xl-19-24{width:79.1667%;*width:79.1357%}.pure-u-xl-4-5{width:80%;*width:79.969%}.pure-u-xl-5-6,.pure-u-xl-20-24{width:83.3333%;*width:83.3023%}.pure-u-xl-7-8,.pure-u-xl-21-24{width:87.5%;*width:87.469%}.pure-u-xl-11-12,.pure-u-xl-22-24{width:91.6667%;*width:91.6357%}.pure-u-xl-23-24{width:95.8333%;*width:95.8023%}.pure-u-xl-1,.pure-u-xl-1-1,.pure-u-xl-5-5,.pure-u-xl-24-24{width:100%}}.pure-u-1,.pure-u-1-1,.pure-u-1-2,.pure-u-1-3,.pure-u-1-4,.pure-u-1-5,.pure-u-1-6,.pure-u-1-8,.pure-u-1-12,.pure-u-1-24,.pure-u-2-3,.pure-u-2-5,.pure-u-2-24,.pure-u-3-4,.pure-u-3-5,.pure-u-3-8,.pure-u-3-24,.pure-u-4-5,.pure-u-4-24,.pure-u-5-5,.pure-u-5-6,.pure-u-5-8,.pure-u-5-12,.pure-u-5-24,.pure-u-6-24,.pure-u-7-8,.pure-u-7-12,.pure-u-7-24,.pure-u-8-24,.pure-u-9-24,.pure-u-10-24,.pure-u-11-12,.pure-u-11-24,.pure-u-12-24,.pure-u-13-24,.pure-u-14-24,.pure-u-15-24,.pure-u-16-24,.pure-u-17-24,.pure-u-18-24,.pure-u-19-24,.pure-u-20-24,.pure-u-21-24,.pure-u-22-24,.pure-u-23-24,.pure-u-24-24{display:inline-block;*display:inline;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-1-24{width:4.1667%;*width:4.1357%}.pure-u-1-12,.pure-u-2-24{width:8.3333%;*width:8.3023%}.pure-u-1-8,.pure-u-3-24{width:12.5%;*width:12.469%}.pure-u-1-6,.pure-u-4-24{width:16.6667%;*width:16.6357%}.pure-u-1-5{width:20%;*width:19.969%}.pure-u-5-24{width:20.8333%;*width:20.8023%}.pure-u-1-4,.pure-u-6-24{width:25%;*width:24.969%}.pure-u-7-24{width:29.1667%;*width:29.1357%}.pure-u-1-3,.pure-u-8-24{width:33.3333%;*width:33.3023%}.pure-u-3-8,.pure-u-9-24{width:37.5%;*width:37.469%}.pure-u-2-5{width:40%;*width:39.969%}.pure-u-5-12,.pure-u-10-24{width:41.6667%;*width:41.6357%}.pure-u-11-24{width:45.8333%;*width:45.8023%}.pure-u-1-2,.pure-u-12-24{width:50%;*width:49.969%}.pure-u-13-24{width:54.1667%;*width:54.1357%}.pure-u-7-12,.pure-u-14-24{width:58.3333%;*width:58.3023%}.pure-u-3-5{width:60%;*width:59.969%}.pure-u-5-8,.pure-u-15-24{width:62.5%;*width:62.469%}.pure-u-2-3,.pure-u-16-24{width:66.6667%;*width:66.6357%}.pure-u-17-24{width:70.8333%;*width:70.8023%}.pure-u-3-4,.pure-u-18-24{width:75%;*width:74.969%}.pure-u-19-24{width:79.1667%;*width:79.1357%}.pure-u-4-5{width:80%;*width:79.969%}.pure-u-5-6,.pure-u-20-24{width:83.3333%;*width:83.3023%}.pure-u-7-8,.pure-u-21-24{width:87.5%;*width:87.469%}.pure-u-11-12,.pure-u-22-24{width:91.6667%;*width:91.6357%}.pure-u-23-24{width:95.8333%;*width:95.8023%}.pure-u-1,.pure-u-1-1,.pure-u-5-5,.pure-u-24-24{width:100%}.pure-menu{box-sizing:border-box}.pure-menu-fixed{position:fixed;left:0;top:0;z-index:1}.pure-menu-item,.pure-menu-list{position:relative}.pure-menu-list{list-style:none;margin:0;padding:0}.pure-menu-item{padding:0;margin:0;height:100%}.pure-menu-heading,.pure-menu-link{display:block;text-decoration:none;white-space:nowrap}.pure-menu-horizontal{width:100%;white-space:nowrap}.pure-menu-horizontal .pure-menu-list{display:inline-block}.pure-menu-horizontal .pure-menu-heading,.pure-menu-horizontal .pure-menu-item,.pure-menu-horizontal .pure-menu-separator{display:inline-block;*display:inline;zoom:1;vertical-align:middle}.pure-menu-horizontal .pure-menu-children .pure-menu-separator,.pure-menu-separator{background-color:#ccc;height:1px;margin:.3em 0}.pure-menu-horizontal .pure-menu-separator{width:1px;height:1.3em;margin:0 .3em}.pure-menu-horizontal .pure-menu-children .pure-menu-separator{display:block;width:auto}.pure-menu-heading{text-transform:uppercase;color:#565d64}.pure-menu-link{color:#777}.pure-menu-children{background-color:#1d1f21}.pure-menu-disabled,.pure-menu-heading,.pure-menu-link{padding:.5em 1em}.pure-menu-disabled{opacity:.5}.pure-menu-disabled .pure-menu-link:hover{background-color:transparent}.pure-menu-active>.pure-menu-link,.pure-menu-link:focus,.pure-menu-link:hover{background-color:#282a2e}.pure-menu-selected .pure-menu-link,.pure-menu-selected .pure-menu-link:visited{color:#e2e0de}.pure-table{border-collapse:collapse;border-spacing:0;empty-cells:show;border:1px solid #cbcbcb}.pure-table caption{color:#e2e0de;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.pure-table td,.pure-table th{border-left:1px solid #cbcbcb;border-width:0 0 0 1px;font-size:inherit;margin:0;overflow:visible;padding:.5em 1em}.pure-table td:first-child,.pure-table th:first-child{border-left-width:0}.pure-table thead{background-color:#e0e0e0;color:#e2e0de;text-align:left;vertical-align:bottom}.pure-table td{background-color:transparent}.pure-table-odd td,.pure-table-striped tr:nth-child(2n-1) td{background-color:#f2f2f2}.pure-table-bordered td{border-bottom:1px solid #cbcbcb}.pure-table-bordered tbody>tr:last-child>td{border-bottom-width:0}.pure-table-horizontal td,.pure-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #cbcbcb}.pure-table-horizontal tbody>tr:last-child>td{border-bottom-width:0}.highlight .hll{background-color:#373b41}.highlight{background:#101112;color:#c5c8c6}.highlight .c{color:#969896}.highlight .err{color:#c66}.highlight .k{color:#b294bb}.highlight .l{color:#de935f}.highlight .n{color:#c5c8c6}.highlight .o{color:#8abeb7}.highlight .p{color:#c5c8c6}.highlight .c1,.highlight .cm,.highlight .cp,.highlight .cs{color:#969896}.highlight .gd{color:#c66}.highlight .ge{font-style:italic}.highlight .gh{color:#c5c8c6;font-weight:700}.highlight .gi{color:#b5bd68}.highlight .gp{color:#969896}.highlight .gp,.highlight .gs,.highlight .gu{font-weight:700}.highlight .gu{color:#8abeb7}.highlight .kc,.highlight .kd{color:#b294bb}.highlight .kn{color:#8abeb7}.highlight .kp,.highlight .kr{color:#b294bb}.highlight .kt{color:#f0c674}.highlight .ld{color:#b5bd68}.highlight .m{color:#de935f}.highlight .s{color:#b5bd68}.highlight .na{color:#81a2be}.highlight .nb{color:#c5c8c6}.highlight .nc{color:#f0c674}.highlight .no{color:#c66}.highlight .nd{color:#8abeb7}.highlight .ni{color:#c5c8c6}.highlight .ne{color:#c66}.highlight .nf{color:#81a2be}.highlight .nl{color:#c5c8c6}.highlight .nn{color:#f0c674}.highlight .nx{color:#81a2be}.highlight .py{color:#c5c8c6}.highlight .nt{color:#8abeb7}.highlight .nv{color:#c66}.highlight .ow{color:#8abeb7}.highlight .w{color:#c5c8c6}.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#de935f}.highlight .sb{color:#b5bd68}.highlight .sc{color:#c5c8c6}.highlight .sd{color:#969896}.highlight .s2{color:#b5bd68}.highlight .se{color:#de935f}.highlight .sh{color:#b5bd68}.highlight .si{color:#de935f}.highlight .s1,.highlight .sr,.highlight .ss,.highlight .sx{color:#b5bd68}.highlight .bp{color:#c5c8c6}.highlight .vc,.highlight .vg,.highlight .vi{color:#c66}.highlight .il{color:#de935f}body{background-color:#1d1f21;color:#c5c8c6;font-display:swap;font-family:Source Sans Pro,sans-serif;font-size:18px;font-style:normal;font-weight:400}abbr,cite,q{font-family:Source Serif Pro,serif}cite,em,q{font-style:italic}b,bold,dt,strong{font-weight:700}code,kbd,pre,samp{font-family:Source Code Pro,monospace}kbd,samp{background-color:#282a2e}.highlight,code,kbd,pre,samp{border:0;border-radius:.25em;padding:0 .125em}mark{background-color:#f0c674}blockquote{border-left:.5em solid #969896;border-radius:.25em;margin-left:0;padding-left:2em}a{color:#81a2be}a:hover,a:hover:visited{color:#8abeb7}a:visited{color:#b294bb}hr{border:0;border-top:1px dashed #c5c8c6}::-moz-selection{background-color:#373b41}::selection{background-color:#373b41}.pure-g [class*=pure-u],button,html,input,select,textarea{color:#c5c8c6;font-family:Source Sans Pro,sans-serif;font-weight:400}.pure-table{border:1px solid #969896;color:#c5c8c6;background-color:#1d1f21}.pure-table td,.pure-table th{border-left:1px solid #969896}.pure-table thead{color:#c5c8c6;background-color:#282a2e}.pure-menu a,.pure-menu a:hover,.pure-menu a:hover:visited,.pure-menu a:visited{color:#c5c8c6}.pure-menu-header:hover,.pure-menu-item:hover{background-color:#282a2e}.pure-menu-disabled:hover{background-color:transparent}.footer-content{border-top:1px solid #c5c8c6}.navigation-content{border-bottom:1px solid #c5c8c6}.navigation-header{font-size:1.25em}.navigation-header a{color:#c5c8c6}.navigation-header-subtitle{font-family:Source Serif Pro,serif}.footer-content,.navigation-content,.pagination-content{display:table;margin:0 auto;text-align:center;width:100%}figure{text-align:center}figure img{margin:0 auto}.post-title{font-family:Source Serif Pro,serif;font-weight:700;margin-bottom:0}.post-meta{font-size:.9em;margin:0 0 .5em}.post-meta a{text-decoration:none}.post-meta a:hover{text-decoration:underline}.post-divider{border-top:1px solid #c5c8c6}.pull-end{float:right}.pull-start,[dir=rtl] .pull-end{float:left}[dir=rtl] pull-start{float:right}.fixup{position:relative;top:-.05em} \ No newline at end of file diff --git a/public/img/favicon.png b/public/img/favicon.png deleted file mode 100644 index 91df25f..0000000 Binary files a/public/img/favicon.png and /dev/null differ diff --git a/public/index.html b/public/index.html deleted file mode 100644 index 9293789..0000000 --- a/public/index.html +++ /dev/null @@ -1,480 +0,0 @@ - - - - - tastyteablog - - - - - - - - - - - - - - - - - - - -
-
-
- - - - - -

-

-

- - WireGuard VPN with 2 or more subnets -

- - -
-
-
-

I wanted to create a WireGuard VPN with -2 subnets in different physical places, each with their own server. I couldn’t -find an example how to do that, so I wrote this one.

-
-
-

Introduction

-
-
-

I’m going to use the IP range fd69::/48 for the VPN, fd69:0:0:1::/64 for -subnet 1 and fd69:0:0:2::/64 for subnet 2. I’m going to call the server of -subnet 1 server1, its first client client1a, the second one client1b and -so on.

-
-
-

All clients in subnet 1 will connect to server1 and all clients in subnet 2 -will connect to server2. server1 and server2 will be connected. If -client1a wants to connect to client2a, the route will be: -client1a → server1 → server2 → client2a.

-
-
-
-
-

Preparations

-
-
-

Install WireGuard, create /etc/wireguard -and generate a key-pair on each participating peer.

-
-
-
-
mkdir /etc/wireguard
-cd /etc/wireguard
-umask 077
-wg genkey | tee privatekey | wg pubkey > publickey
-
-
-
-
-
-

Configure servers

-
-
-
server1:/etc/wireguard/wg0.conf:
-
-
# This peer
-[Interface]
-Address = fd69:0:0:1::1/48
-PrivateKey = <PRIVATE KEY OF server1>
-ListenPort = 51820
-
-# Server of subnet 2
-[Peer]
-PublicKey = <PUBLIC KEY OF server2>
-Endpoint = server2:51820
-AllowedIPs = fd69:0:0:2::/64
-
-# Clients of subnet 1
-[Peer]
-PublicKey = <PUBLIC KEY OF client1a>
-AllowedIPs = fd69:0:0:1::a/128
-
-[Peer]
-PublicKey = <PUBLIC KEY OF client1b>
-AllowedIPs = fd69:0:0:1::b/128
-
-
-
-
server2:/etc/wireguard/wg0.conf:
-
-
# This peer
-[Interface]
-Address = fd69:0:0:2::1/48
-PrivateKey = <PRIVATE KEY OF server2>
-ListenPort = 51820
-
-# Server of subnet 1
-[Peer]
-PublicKey = <PUBLIC KEY OF server1>
-Endpoint = server1:51820
-AllowedIPs = fd69:0:0:1::/64
-
-# Clients of subnet 2
-[Peer]
-PublicKey = <PUBLIC KEY OF client2a>
-AllowedIPs = fd69:0:0:2::a/128
-
-
-
-
-
-

Configure clients

-
-
-
client1a:/etc/wireguard/wg0.conf:
-
-
[Interface]
-Address = fd69:0:0:1::a/48
-PrivateKey = <PRIVATE KEY OF client1a>
-
-[Peer]
-PublicKey = <PUBLIC KEY OF server1>
-Endpoint = server1:51820
-AllowedIPs = fd69::/48
-PersistentKeepalive = 25
-
-
-
-
client1b:/etc/wireguard/wg0.conf:
-
-
[Interface]
-Address = fd69:0:0:1::b/48
-PrivateKey = <PRIVATE KEY OF client1b>
-
-[Peer]
-PublicKey = <PUBLIC KEY OF server1>
-Endpoint = server1:51820
-AllowedIPs = fd69::/48
-PersistentKeepalive = 25
-
-
-
-
client2a:/etc/wireguard/wg0.conf:
-
-
[Interface]
-Address = fd69:0:0:2::a/48
-PrivateKey = <PRIVATE KEY OF client2a>
-
-[Peer]
-PublicKey = <PUBLIC KEY OF server2>
-Endpoint = server1:51820
-AllowedIPs = fd69::/48
-PersistentKeepalive = 25
-
-
-
-

The AllowedIPs setting acts as a routing table. When a peer tries to send a -packet to an IP, it will check AllowedIPs, and if the IP appears in the list, -it will send it through the WireGuard interface.

-
-
-

The PersistentKeepalive setting ensures that the connection is maintained and -that the peer continues to be reachable, even behind a NAT.

-
-
-
-
-

Start VPN

-
-
-

Run wg-quick up wg0 on each peer.

-
-
-
-
-

Further reading

-
-
-

The article How to easily configure WireGuard -by Stavros Korokithakis helped me a great deal in understanding WireGuard.

-
-
-
- -
-

-

-

-

- - Using AsciiDoc(tor) with Gitea -

- - -
-
-
-

In this blogpost I describe what I did to get AsciiDoc support into -Gitea. If you want more than syntax highlighting and basic -formatting, Gitea has to be patched unfortunately(this -issue has already been reported). -But I think most people will only need to edit 1 configuration file and are -done.

-
-
-

Asciidoctor or AsciiDoc?

-
-
-

Asciidoctor has inbuilt support for -highlight.js, the solution Gitea -uses and is therefore the best choice in most scenarios. If you can’t or don’t -want to use it you can use AsciiDoc.

-
-
-

Add the following section to conf/app.ini in your Gitea path. The change -causes .adoc files to be rendered with asciidoctor.

-
-
-
-
[markup.asciidoc]
-ENABLED = true
-; List of file extensions that should be rendered by an external command
-FILE_EXTENSIONS = .adoc,.asciidoc
-; External command to render all matching extensions
-RENDER_COMMAND = "asciidoctor --backend=html5 --no-header-footer --attribute source-highlighter=highlightjs --out-file=- -"
-; Don't pass the file on STDIN, pass the filename as argument instead.
-IS_INPUT_FILE = false
-
-
-
-

If you want to use asciidoc instead the command would be: -asciidoc --backend=xhtml11 --no-header-footer --attribute -source-highlighter=highlight --out-file=- -. I would choose the xhtml11 -backend because it is the only one that encloses code snippets with <code> -tags. Instead of -highlight you can -use source-highlight or -Pygments.

-
-
-

If you use asciidoctor and don’t need tables or other fancy stuff you’re now -done! If you use asciidoc, you’ll have to patch Gitea to get syntax -highlighting.

-
-
-
-
-

Patching Gitea

-
-
-

The sanitizer strips almost all attributes from HTML-tags, as a security -precaution. I’ve added exceptions for:

-
-
-
    -
  • -

    class attributes on all the tags Asciidoctor introduces,

    -
  • -
  • -

    Numerous attributes on table tags,

    -
  • -
  • -

    align and valign on td tags,

    -
  • -
  • -

    style attributes on span tags, but only if they contain nothing more than -color and font definitions.

    -
  • -
-
-
-

If you use Asciidoctor with highlight.js output, you don’t need to allow style -attributes, if you don’t use tables you can omit the lines that deal with them -and the class exception is only useful if you add custom CSS to use them.

-
-
-

Apply the patch with patch -p1 < gitea_relax-sanitizer.patch.

-
-
-
-
diff -ur a/modules/markup/sanitizer.go b/modules/markup/sanitizer.go
---- a/modules/markup/sanitizer.go   2019-01-26 16:04:56.014108339 +0100
-+++ b/modules/markup/sanitizer.go   2019-01-26 16:03:21.776401012 +0100
-@@ -38,6 +38,16 @@
- 
-        // Custom URL-Schemes
-        sanitizer.policy.AllowURLSchemes(setting.Markdown.CustomURLSchemes...)
-+       // Allow style on span tags
-+       sanitizer.policy.AllowAttrs("style").Matching(regexp.MustCompile(`^(background-)?color:[^;]+(; ?font[^;]+)?;?$`)).OnElements("span")
-+
-+       // Allow class attribute
-+       sanitizer.policy.AllowAttrs("class").OnElements("code", "pre", "span", "div", "p", "table", "td")
-+
-+       // Allow table attributes
-+       sanitizer.policy.AllowAttrs("width", "frame", "rules", "cellspacing", "cellpadding").OnElements("table")
-+       sanitizer.policy.AllowAttrs("width").OnElements("col")
-+       sanitizer.policy.AllowAttrs("align", "valign").OnElements("td")
-    })
- }
-
-
-
-
-
-
-

Tables without borders

-
-
-

I used tables without borders in a manpage I wrote for the list of options. -Gitea insist on drawing borders around them, so I had to create a custom CSS -snippet.

-
-
-

In your Gitea directory, create custom/templates/custom/header.tmpl.

-
-
-
-
<style>
-    /* Additions for asciidoc */
-    .markdown:not(code) table.frame-none
-    {
-        border: 0 !important;
-    }
-    .markdown:not(code) table.grid-none *
-    {
-        border: 0 !important;
-    }
-</style>
-
-
-
-
- -
-

- - -
-
- -
-
- - - - -
-
-
- - diff --git a/public/index.xml b/public/index.xml deleted file mode 100644 index e353e9c..0000000 --- a/public/index.xml +++ /dev/null @@ -1,330 +0,0 @@ - - - - tastyteablog - https://blog.tastytea.de/ - Recent content on tastyteablog - Hugo 0.54.0 -- gohugo.io - en - tastytea@tastytea.de (tastytea) - tastytea@tastytea.de (tastytea) - CC BY-NC 4.0 - Thu, 14 Feb 2019 21:38:28 +0100 - - - WireGuard VPN with 2 or more subnets - https://blog.tastytea.de/posts/wireguard-vpn-with-2-or-more-subnets/ - Thu, 14 Feb 2019 21:38:28 +0100 - tastytea@tastytea.de (tastytea) - https://blog.tastytea.de/posts/wireguard-vpn-with-2-or-more-subnets/ - <div class="paragraph"> -<p>I wanted to create a <a href="https://en.wikipedia.org/wiki/WireGuard">WireGuard</a> VPN with -2 subnets in different physical places, each with their own server. I couldn&#8217;t -find an example how to do that, so I wrote this one.</p> -</div> -<div class="sect1"> -<h2 id="_introduction">Introduction</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p>I&#8217;m going to use the IP range <code>fd69::/48</code> for the VPN, <code>fd69:0:0:1::/64</code> for -subnet 1 and <code>fd69:0:0:2::/64</code> for subnet 2. I&#8217;m going to call the server of -subnet 1 <code>server1</code>, its first client <code>client1a</code>, the second one <code>client1b</code> and -so on.</p> -</div> -<div class="paragraph"> -<p>All clients in subnet 1 will connect to <code>server1</code> and all clients in subnet 2 -will connect to <code>server2</code>. <code>server1</code> and <code>server2</code> will be connected. If -<code>client1a</code> wants to connect to <code>client2a</code>, the route will be: -<code>client1a → server1 → server2 → client2a</code>.</p> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_preparations">Preparations</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p><a href="https://www.wireguard.com/install/">Install WireGuard</a>, create <code>/etc/wireguard</code> -and generate a key-pair on each participating peer.</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-sh" data-lang="sh">mkdir /etc/wireguard -<span class="nb">cd</span> /etc/wireguard -<span class="nb">umask</span> <span class="m">077</span> -wg genkey <span class="p">|</span> tee privatekey <span class="p">|</span> wg pubkey &gt; publickey</code></pre></div></pre> -</div> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_configure_servers">Configure servers</h2> -<div class="sectionbody"> -<div class="listingblock"> -<div class="title"><code>server1:/etc/wireguard/wg0.conf</code>:</div> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-cfg" data-lang="cfg"><span class="c1"># This peer</span> -<span class="k">[Interface]</span> -<span class="na">Address</span> <span class="o">=</span> <span class="s">fd69:0:0:1::1/48</span> -<span class="na">PrivateKey</span> <span class="o">=</span> <span class="s">&lt;PRIVATE KEY OF server1&gt;</span> -<span class="na">ListenPort</span> <span class="o">=</span> <span class="s">51820</span> - -<span class="c1"># Server of subnet 2</span> -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF server2&gt;</span> -<span class="na">Endpoint</span> <span class="o">=</span> <span class="s">server2:51820</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69:0:0:2::/64</span> - -<span class="c1"># Clients of subnet 1</span> -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF client1a&gt;</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69:0:0:1::a/128</span> - -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF client1b&gt;</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69:0:0:1::b/128</span></code></pre></div></pre> -</div> -</div> -<div class="listingblock"> -<div class="title"><code>server2:/etc/wireguard/wg0.conf</code>:</div> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-cfg" data-lang="cfg"><span class="c1"># This peer</span> -<span class="k">[Interface]</span> -<span class="na">Address</span> <span class="o">=</span> <span class="s">fd69:0:0:2::1/48</span> -<span class="na">PrivateKey</span> <span class="o">=</span> <span class="s">&lt;PRIVATE KEY OF server2&gt;</span> -<span class="na">ListenPort</span> <span class="o">=</span> <span class="s">51820</span> - -<span class="c1"># Server of subnet 1</span> -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF server1&gt;</span> -<span class="na">Endpoint</span> <span class="o">=</span> <span class="s">server1:51820</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69:0:0:1::/64</span> - -<span class="c1"># Clients of subnet 2</span> -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF client2a&gt;</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69:0:0:2::a/128</span></code></pre></div></pre> -</div> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_configure_clients">Configure clients</h2> -<div class="sectionbody"> -<div class="listingblock"> -<div class="title"><code>client1a:/etc/wireguard/wg0.conf</code>:</div> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-cfg" data-lang="cfg"><span class="k">[Interface]</span> -<span class="na">Address</span> <span class="o">=</span> <span class="s">fd69:0:0:1::a/48</span> -<span class="na">PrivateKey</span> <span class="o">=</span> <span class="s">&lt;PRIVATE KEY OF client1a&gt;</span> - -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF server1&gt;</span> -<span class="na">Endpoint</span> <span class="o">=</span> <span class="s">server1:51820</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69::/48</span> -<span class="na">PersistentKeepalive</span> <span class="o">=</span> <span class="s">25</span></code></pre></div></pre> -</div> -</div> -<div class="listingblock"> -<div class="title"><code>client1b:/etc/wireguard/wg0.conf</code>:</div> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-cfg" data-lang="cfg"><span class="k">[Interface]</span> -<span class="na">Address</span> <span class="o">=</span> <span class="s">fd69:0:0:1::b/48</span> -<span class="na">PrivateKey</span> <span class="o">=</span> <span class="s">&lt;PRIVATE KEY OF client1b&gt;</span> - -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF server1&gt;</span> -<span class="na">Endpoint</span> <span class="o">=</span> <span class="s">server1:51820</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69::/48</span> -<span class="na">PersistentKeepalive</span> <span class="o">=</span> <span class="s">25</span></code></pre></div></pre> -</div> -</div> -<div class="listingblock"> -<div class="title"><code>client2a:/etc/wireguard/wg0.conf</code>:</div> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-cfg" data-lang="cfg"><span class="k">[Interface]</span> -<span class="na">Address</span> <span class="o">=</span> <span class="s">fd69:0:0:2::a/48</span> -<span class="na">PrivateKey</span> <span class="o">=</span> <span class="s">&lt;PRIVATE KEY OF client2a&gt;</span> - -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF server2&gt;</span> -<span class="na">Endpoint</span> <span class="o">=</span> <span class="s">server1:51820</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69::/48</span> -<span class="na">PersistentKeepalive</span> <span class="o">=</span> <span class="s">25</span></code></pre></div></pre> -</div> -</div> -<div class="paragraph"> -<p>The <code>AllowedIPs</code> setting acts as a routing table. When a peer tries to send a -packet to an IP, it will check <code>AllowedIPs</code>, and if the IP appears in the list, -it will send it through the WireGuard interface.</p> -</div> -<div class="paragraph"> -<p>The <code>PersistentKeepalive</code> setting ensures that the connection is maintained and -that the peer continues to be reachable, even behind a NAT.</p> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_start_vpn">Start VPN</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p>Run <code>wg-quick up wg0</code> on each peer.</p> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_further_reading">Further reading</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p>The article <a href="https://www.stavros.io/posts/how-to-configure-wireguard/">How to easily configure WireGuard</a> -by Stavros Korokithakis helped me a great deal in understanding WireGuard.</p> -</div> -</div> -</div> - - - - Using AsciiDoc(tor) with Gitea - https://blog.tastytea.de/posts/using-asciidoc-with-gitea/ - Sat, 26 Jan 2019 13:03:36 +0100 - tastytea@tastytea.de (tastytea) - https://blog.tastytea.de/posts/using-asciidoc-with-gitea/ - <div class="paragraph"> -<p>In this blogpost I describe what I did to get AsciiDoc support into -<a href="https://gitea.io/">Gitea</a>. If you want more than syntax highlighting and basic -formatting, Gitea has to be patched unfortunately(this -<a href="https://github.com/go-gitea/gitea/issues/4935">issue</a> has already been reported). -But I think most people will only need to edit 1 configuration file and are -done.</p> -</div> -<div class="sect1"> -<h2 id="_asciidoctor_or_asciidoc">Asciidoctor or AsciiDoc?</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p><a href="https://asciidoctor.org/">Asciidoctor</a> has inbuilt support for -<a href="https://highlightjs.org/">highlight.js</a>, the solution Gitea -uses and is therefore the best choice in most scenarios. If you can&#8217;t or don&#8217;t -want to use it you can use <a href="http://asciidoc.org/">AsciiDoc</a>.</p> -</div> -<div class="paragraph"> -<p>Add the following section to <code>conf/app.ini</code> in your Gitea path. The change -causes <code>.adoc</code> files to be rendered with asciidoctor.</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-ini" data-lang="ini"><span class="k">[markup.asciidoc]</span> -<span class="na">ENABLED</span> <span class="o">=</span> <span class="s">true</span> -<span class="c1">; List of file extensions that should be rendered by an external command</span> -<span class="na">FILE_EXTENSIONS</span> <span class="o">=</span> <span class="s">.adoc,.asciidoc</span> -<span class="c1">; External command to render all matching extensions</span> -<span class="na">RENDER_COMMAND</span> <span class="o">=</span> <span class="s">&#34;asciidoctor --backend=html5 --no-header-footer --attribute source-highlighter=highlightjs --out-file=- -&#34;</span> -<span class="c1">; Don&#39;t pass the file on STDIN, pass the filename as argument instead.</span> -<span class="na">IS_INPUT_FILE</span> <span class="o">=</span> <span class="s">false</span></code></pre></div></pre> -</div> -</div> -<div class="paragraph"> -<p>If you want to use asciidoc instead the command would be: -<code>asciidoc --backend=xhtml11 --no-header-footer --attribute -source-highlighter=highlight --out-file=- -</code>. I would choose the <code>xhtml11</code> -backend because it is the only one that encloses code snippets with <code>&lt;code&gt;</code> -tags. Instead of -<a href="http://www.andre-simon.de/doku/highlight/en/highlight.html">highlight</a> you can -use <a href="http://www.gnu.org/software/src-highlite/">source-highlight</a> or -<a href="http://pygments.org/">Pygments</a>.</p> -</div> -<div class="paragraph"> -<p>If you use asciidoctor and don&#8217;t need tables or other fancy stuff you&#8217;re now -done! If you use asciidoc, you&#8217;ll have to patch Gitea to get syntax -highlighting.</p> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_patching_gitea">Patching Gitea</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p>The sanitizer strips almost all attributes from HTML-tags, as a security -precaution. I&#8217;ve added exceptions for:</p> -</div> -<div class="ulist"> -<ul> -<li> -<p><code>class</code> attributes on all the tags Asciidoctor introduces,</p> -</li> -<li> -<p>Numerous attributes on <code>table</code> tags,</p> -</li> -<li> -<p><code>align</code> and <code>valign</code> on <code>td</code> tags,</p> -</li> -<li> -<p><code>style</code> attributes on <code>span</code> tags, but only if they contain nothing more than -color and font definitions.</p> -</li> -</ul> -</div> -<div class="paragraph"> -<p>If you use Asciidoctor with highlight.js output, you don&#8217;t need to allow <code>style</code> -attributes, if you don&#8217;t use tables you can omit the lines that deal with them -and the <code>class</code> exception is only useful if you add custom CSS to use them.</p> -</div> -<div class="paragraph"> -<p>Apply the patch with <code>patch -p1 &lt; gitea_relax-sanitizer.patch</code>.</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-diff" data-lang="diff"><span class="gh">diff -ur a/modules/markup/sanitizer.go b/modules/markup/sanitizer.go -</span><span class="gh"></span><span class="gd">--- a/modules/markup/sanitizer.go 2019-01-26 16:04:56.014108339 +0100 -</span><span class="gd"></span><span class="gi">+++ b/modules/markup/sanitizer.go 2019-01-26 16:03:21.776401012 +0100 -</span><span class="gi"></span><span class="gu">@@ -38,6 +38,16 @@ -</span><span class="gu"></span> - // Custom URL-Schemes - sanitizer.policy.AllowURLSchemes(setting.Markdown.CustomURLSchemes...) -<span class="gi">+ // Allow style on span tags -</span><span class="gi">+ sanitizer.policy.AllowAttrs(&#34;style&#34;).Matching(regexp.MustCompile(`^(background-)?color:[^;]+(; ?font[^;]+)?;?$`)).OnElements(&#34;span&#34;) -</span><span class="gi">+ -</span><span class="gi">+ // Allow class attribute -</span><span class="gi">+ sanitizer.policy.AllowAttrs(&#34;class&#34;).OnElements(&#34;code&#34;, &#34;pre&#34;, &#34;span&#34;, &#34;div&#34;, &#34;p&#34;, &#34;table&#34;, &#34;td&#34;) -</span><span class="gi">+ -</span><span class="gi">+ // Allow table attributes -</span><span class="gi">+ sanitizer.policy.AllowAttrs(&#34;width&#34;, &#34;frame&#34;, &#34;rules&#34;, &#34;cellspacing&#34;, &#34;cellpadding&#34;).OnElements(&#34;table&#34;) -</span><span class="gi">+ sanitizer.policy.AllowAttrs(&#34;width&#34;).OnElements(&#34;col&#34;) -</span><span class="gi">+ sanitizer.policy.AllowAttrs(&#34;align&#34;, &#34;valign&#34;).OnElements(&#34;td&#34;) -</span><span class="gi"></span> }) - } -</code></pre></div></pre> -</div> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_tables_without_borders">Tables without borders</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p>I used tables without borders in a manpage I wrote for the list of options. -Gitea insist on drawing borders around them, so I had to create a custom CSS -snippet.</p> -</div> -<div class="paragraph"> -<p>In your Gitea directory, create <code>custom/templates/custom/header.tmpl</code>.</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-css" data-lang="css"><span class="o">&lt;</span><span class="nt">style</span><span class="o">&gt;</span> - <span class="c">/* Additions for asciidoc */</span> - <span class="p">.</span><span class="nc">markdown</span><span class="p">:</span><span class="nd">not</span><span class="o">(</span><span class="nt">code</span><span class="o">)</span> <span class="nt">table</span><span class="p">.</span><span class="nc">frame-none</span> - <span class="p">{</span> - <span class="k">border</span><span class="p">:</span> <span class="mi">0</span> <span class="cp">!important</span><span class="p">;</span> - <span class="p">}</span> - <span class="p">.</span><span class="nc">markdown</span><span class="p">:</span><span class="nd">not</span><span class="o">(</span><span class="nt">code</span><span class="o">)</span> <span class="nt">table</span><span class="p">.</span><span class="nc">grid-none</span> <span class="o">*</span> - <span class="p">{</span> - <span class="k">border</span><span class="p">:</span> <span class="mi">0</span> <span class="cp">!important</span><span class="p">;</span> - <span class="p">}</span> -<span class="o">&lt;/</span><span class="nt">style</span><span class="o">&gt;</span></code></pre></div></pre> -</div> -</div> -</div> -</div> - - - - diff --git a/public/page/1/index.html b/public/page/1/index.html deleted file mode 100644 index 31a7179..0000000 --- a/public/page/1/index.html +++ /dev/null @@ -1 +0,0 @@ -https://blog.tastytea.de/ \ No newline at end of file diff --git a/public/posts/index.html b/public/posts/index.html deleted file mode 100644 index 98b0990..0000000 --- a/public/posts/index.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - Posts | tastyteablog - - - - - - - - - - - - - - - - - - - -
-
-
- - - - -
-

Posts:

- -
- - -
-
- -
-
- - - - -
-
-
- - diff --git a/public/posts/index.xml b/public/posts/index.xml deleted file mode 100644 index bc5340e..0000000 --- a/public/posts/index.xml +++ /dev/null @@ -1,330 +0,0 @@ - - - - Posts on tastyteablog - https://blog.tastytea.de/posts/ - Recent content in Posts on tastyteablog - Hugo 0.54.0 -- gohugo.io - en - tastytea@tastytea.de (tastytea) - tastytea@tastytea.de (tastytea) - CC BY-NC 4.0 - Thu, 14 Feb 2019 21:38:28 +0100 - - - WireGuard VPN with 2 or more subnets - https://blog.tastytea.de/posts/wireguard-vpn-with-2-or-more-subnets/ - Thu, 14 Feb 2019 21:38:28 +0100 - tastytea@tastytea.de (tastytea) - https://blog.tastytea.de/posts/wireguard-vpn-with-2-or-more-subnets/ - <div class="paragraph"> -<p>I wanted to create a <a href="https://en.wikipedia.org/wiki/WireGuard">WireGuard</a> VPN with -2 subnets in different physical places, each with their own server. I couldn&#8217;t -find an example how to do that, so I wrote this one.</p> -</div> -<div class="sect1"> -<h2 id="_introduction">Introduction</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p>I&#8217;m going to use the IP range <code>fd69::/48</code> for the VPN, <code>fd69:0:0:1::/64</code> for -subnet 1 and <code>fd69:0:0:2::/64</code> for subnet 2. I&#8217;m going to call the server of -subnet 1 <code>server1</code>, its first client <code>client1a</code>, the second one <code>client1b</code> and -so on.</p> -</div> -<div class="paragraph"> -<p>All clients in subnet 1 will connect to <code>server1</code> and all clients in subnet 2 -will connect to <code>server2</code>. <code>server1</code> and <code>server2</code> will be connected. If -<code>client1a</code> wants to connect to <code>client2a</code>, the route will be: -<code>client1a → server1 → server2 → client2a</code>.</p> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_preparations">Preparations</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p><a href="https://www.wireguard.com/install/">Install WireGuard</a>, create <code>/etc/wireguard</code> -and generate a key-pair on each participating peer.</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-sh" data-lang="sh">mkdir /etc/wireguard -<span class="nb">cd</span> /etc/wireguard -<span class="nb">umask</span> <span class="m">077</span> -wg genkey <span class="p">|</span> tee privatekey <span class="p">|</span> wg pubkey &gt; publickey</code></pre></div></pre> -</div> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_configure_servers">Configure servers</h2> -<div class="sectionbody"> -<div class="listingblock"> -<div class="title"><code>server1:/etc/wireguard/wg0.conf</code>:</div> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-cfg" data-lang="cfg"><span class="c1"># This peer</span> -<span class="k">[Interface]</span> -<span class="na">Address</span> <span class="o">=</span> <span class="s">fd69:0:0:1::1/48</span> -<span class="na">PrivateKey</span> <span class="o">=</span> <span class="s">&lt;PRIVATE KEY OF server1&gt;</span> -<span class="na">ListenPort</span> <span class="o">=</span> <span class="s">51820</span> - -<span class="c1"># Server of subnet 2</span> -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF server2&gt;</span> -<span class="na">Endpoint</span> <span class="o">=</span> <span class="s">server2:51820</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69:0:0:2::/64</span> - -<span class="c1"># Clients of subnet 1</span> -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF client1a&gt;</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69:0:0:1::a/128</span> - -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF client1b&gt;</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69:0:0:1::b/128</span></code></pre></div></pre> -</div> -</div> -<div class="listingblock"> -<div class="title"><code>server2:/etc/wireguard/wg0.conf</code>:</div> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-cfg" data-lang="cfg"><span class="c1"># This peer</span> -<span class="k">[Interface]</span> -<span class="na">Address</span> <span class="o">=</span> <span class="s">fd69:0:0:2::1/48</span> -<span class="na">PrivateKey</span> <span class="o">=</span> <span class="s">&lt;PRIVATE KEY OF server2&gt;</span> -<span class="na">ListenPort</span> <span class="o">=</span> <span class="s">51820</span> - -<span class="c1"># Server of subnet 1</span> -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF server1&gt;</span> -<span class="na">Endpoint</span> <span class="o">=</span> <span class="s">server1:51820</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69:0:0:1::/64</span> - -<span class="c1"># Clients of subnet 2</span> -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF client2a&gt;</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69:0:0:2::a/128</span></code></pre></div></pre> -</div> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_configure_clients">Configure clients</h2> -<div class="sectionbody"> -<div class="listingblock"> -<div class="title"><code>client1a:/etc/wireguard/wg0.conf</code>:</div> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-cfg" data-lang="cfg"><span class="k">[Interface]</span> -<span class="na">Address</span> <span class="o">=</span> <span class="s">fd69:0:0:1::a/48</span> -<span class="na">PrivateKey</span> <span class="o">=</span> <span class="s">&lt;PRIVATE KEY OF client1a&gt;</span> - -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF server1&gt;</span> -<span class="na">Endpoint</span> <span class="o">=</span> <span class="s">server1:51820</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69::/48</span> -<span class="na">PersistentKeepalive</span> <span class="o">=</span> <span class="s">25</span></code></pre></div></pre> -</div> -</div> -<div class="listingblock"> -<div class="title"><code>client1b:/etc/wireguard/wg0.conf</code>:</div> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-cfg" data-lang="cfg"><span class="k">[Interface]</span> -<span class="na">Address</span> <span class="o">=</span> <span class="s">fd69:0:0:1::b/48</span> -<span class="na">PrivateKey</span> <span class="o">=</span> <span class="s">&lt;PRIVATE KEY OF client1b&gt;</span> - -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF server1&gt;</span> -<span class="na">Endpoint</span> <span class="o">=</span> <span class="s">server1:51820</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69::/48</span> -<span class="na">PersistentKeepalive</span> <span class="o">=</span> <span class="s">25</span></code></pre></div></pre> -</div> -</div> -<div class="listingblock"> -<div class="title"><code>client2a:/etc/wireguard/wg0.conf</code>:</div> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-cfg" data-lang="cfg"><span class="k">[Interface]</span> -<span class="na">Address</span> <span class="o">=</span> <span class="s">fd69:0:0:2::a/48</span> -<span class="na">PrivateKey</span> <span class="o">=</span> <span class="s">&lt;PRIVATE KEY OF client2a&gt;</span> - -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF server2&gt;</span> -<span class="na">Endpoint</span> <span class="o">=</span> <span class="s">server1:51820</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69::/48</span> -<span class="na">PersistentKeepalive</span> <span class="o">=</span> <span class="s">25</span></code></pre></div></pre> -</div> -</div> -<div class="paragraph"> -<p>The <code>AllowedIPs</code> setting acts as a routing table. When a peer tries to send a -packet to an IP, it will check <code>AllowedIPs</code>, and if the IP appears in the list, -it will send it through the WireGuard interface.</p> -</div> -<div class="paragraph"> -<p>The <code>PersistentKeepalive</code> setting ensures that the connection is maintained and -that the peer continues to be reachable, even behind a NAT.</p> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_start_vpn">Start VPN</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p>Run <code>wg-quick up wg0</code> on each peer.</p> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_further_reading">Further reading</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p>The article <a href="https://www.stavros.io/posts/how-to-configure-wireguard/">How to easily configure WireGuard</a> -by Stavros Korokithakis helped me a great deal in understanding WireGuard.</p> -</div> -</div> -</div> - - - - Using AsciiDoc(tor) with Gitea - https://blog.tastytea.de/posts/using-asciidoc-with-gitea/ - Sat, 26 Jan 2019 13:03:36 +0100 - tastytea@tastytea.de (tastytea) - https://blog.tastytea.de/posts/using-asciidoc-with-gitea/ - <div class="paragraph"> -<p>In this blogpost I describe what I did to get AsciiDoc support into -<a href="https://gitea.io/">Gitea</a>. If you want more than syntax highlighting and basic -formatting, Gitea has to be patched unfortunately(this -<a href="https://github.com/go-gitea/gitea/issues/4935">issue</a> has already been reported). -But I think most people will only need to edit 1 configuration file and are -done.</p> -</div> -<div class="sect1"> -<h2 id="_asciidoctor_or_asciidoc">Asciidoctor or AsciiDoc?</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p><a href="https://asciidoctor.org/">Asciidoctor</a> has inbuilt support for -<a href="https://highlightjs.org/">highlight.js</a>, the solution Gitea -uses and is therefore the best choice in most scenarios. If you can&#8217;t or don&#8217;t -want to use it you can use <a href="http://asciidoc.org/">AsciiDoc</a>.</p> -</div> -<div class="paragraph"> -<p>Add the following section to <code>conf/app.ini</code> in your Gitea path. The change -causes <code>.adoc</code> files to be rendered with asciidoctor.</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-ini" data-lang="ini"><span class="k">[markup.asciidoc]</span> -<span class="na">ENABLED</span> <span class="o">=</span> <span class="s">true</span> -<span class="c1">; List of file extensions that should be rendered by an external command</span> -<span class="na">FILE_EXTENSIONS</span> <span class="o">=</span> <span class="s">.adoc,.asciidoc</span> -<span class="c1">; External command to render all matching extensions</span> -<span class="na">RENDER_COMMAND</span> <span class="o">=</span> <span class="s">&#34;asciidoctor --backend=html5 --no-header-footer --attribute source-highlighter=highlightjs --out-file=- -&#34;</span> -<span class="c1">; Don&#39;t pass the file on STDIN, pass the filename as argument instead.</span> -<span class="na">IS_INPUT_FILE</span> <span class="o">=</span> <span class="s">false</span></code></pre></div></pre> -</div> -</div> -<div class="paragraph"> -<p>If you want to use asciidoc instead the command would be: -<code>asciidoc --backend=xhtml11 --no-header-footer --attribute -source-highlighter=highlight --out-file=- -</code>. I would choose the <code>xhtml11</code> -backend because it is the only one that encloses code snippets with <code>&lt;code&gt;</code> -tags. Instead of -<a href="http://www.andre-simon.de/doku/highlight/en/highlight.html">highlight</a> you can -use <a href="http://www.gnu.org/software/src-highlite/">source-highlight</a> or -<a href="http://pygments.org/">Pygments</a>.</p> -</div> -<div class="paragraph"> -<p>If you use asciidoctor and don&#8217;t need tables or other fancy stuff you&#8217;re now -done! If you use asciidoc, you&#8217;ll have to patch Gitea to get syntax -highlighting.</p> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_patching_gitea">Patching Gitea</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p>The sanitizer strips almost all attributes from HTML-tags, as a security -precaution. I&#8217;ve added exceptions for:</p> -</div> -<div class="ulist"> -<ul> -<li> -<p><code>class</code> attributes on all the tags Asciidoctor introduces,</p> -</li> -<li> -<p>Numerous attributes on <code>table</code> tags,</p> -</li> -<li> -<p><code>align</code> and <code>valign</code> on <code>td</code> tags,</p> -</li> -<li> -<p><code>style</code> attributes on <code>span</code> tags, but only if they contain nothing more than -color and font definitions.</p> -</li> -</ul> -</div> -<div class="paragraph"> -<p>If you use Asciidoctor with highlight.js output, you don&#8217;t need to allow <code>style</code> -attributes, if you don&#8217;t use tables you can omit the lines that deal with them -and the <code>class</code> exception is only useful if you add custom CSS to use them.</p> -</div> -<div class="paragraph"> -<p>Apply the patch with <code>patch -p1 &lt; gitea_relax-sanitizer.patch</code>.</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-diff" data-lang="diff"><span class="gh">diff -ur a/modules/markup/sanitizer.go b/modules/markup/sanitizer.go -</span><span class="gh"></span><span class="gd">--- a/modules/markup/sanitizer.go 2019-01-26 16:04:56.014108339 +0100 -</span><span class="gd"></span><span class="gi">+++ b/modules/markup/sanitizer.go 2019-01-26 16:03:21.776401012 +0100 -</span><span class="gi"></span><span class="gu">@@ -38,6 +38,16 @@ -</span><span class="gu"></span> - // Custom URL-Schemes - sanitizer.policy.AllowURLSchemes(setting.Markdown.CustomURLSchemes...) -<span class="gi">+ // Allow style on span tags -</span><span class="gi">+ sanitizer.policy.AllowAttrs(&#34;style&#34;).Matching(regexp.MustCompile(`^(background-)?color:[^;]+(; ?font[^;]+)?;?$`)).OnElements(&#34;span&#34;) -</span><span class="gi">+ -</span><span class="gi">+ // Allow class attribute -</span><span class="gi">+ sanitizer.policy.AllowAttrs(&#34;class&#34;).OnElements(&#34;code&#34;, &#34;pre&#34;, &#34;span&#34;, &#34;div&#34;, &#34;p&#34;, &#34;table&#34;, &#34;td&#34;) -</span><span class="gi">+ -</span><span class="gi">+ // Allow table attributes -</span><span class="gi">+ sanitizer.policy.AllowAttrs(&#34;width&#34;, &#34;frame&#34;, &#34;rules&#34;, &#34;cellspacing&#34;, &#34;cellpadding&#34;).OnElements(&#34;table&#34;) -</span><span class="gi">+ sanitizer.policy.AllowAttrs(&#34;width&#34;).OnElements(&#34;col&#34;) -</span><span class="gi">+ sanitizer.policy.AllowAttrs(&#34;align&#34;, &#34;valign&#34;).OnElements(&#34;td&#34;) -</span><span class="gi"></span> }) - } -</code></pre></div></pre> -</div> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_tables_without_borders">Tables without borders</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p>I used tables without borders in a manpage I wrote for the list of options. -Gitea insist on drawing borders around them, so I had to create a custom CSS -snippet.</p> -</div> -<div class="paragraph"> -<p>In your Gitea directory, create <code>custom/templates/custom/header.tmpl</code>.</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-css" data-lang="css"><span class="o">&lt;</span><span class="nt">style</span><span class="o">&gt;</span> - <span class="c">/* Additions for asciidoc */</span> - <span class="p">.</span><span class="nc">markdown</span><span class="p">:</span><span class="nd">not</span><span class="o">(</span><span class="nt">code</span><span class="o">)</span> <span class="nt">table</span><span class="p">.</span><span class="nc">frame-none</span> - <span class="p">{</span> - <span class="k">border</span><span class="p">:</span> <span class="mi">0</span> <span class="cp">!important</span><span class="p">;</span> - <span class="p">}</span> - <span class="p">.</span><span class="nc">markdown</span><span class="p">:</span><span class="nd">not</span><span class="o">(</span><span class="nt">code</span><span class="o">)</span> <span class="nt">table</span><span class="p">.</span><span class="nc">grid-none</span> <span class="o">*</span> - <span class="p">{</span> - <span class="k">border</span><span class="p">:</span> <span class="mi">0</span> <span class="cp">!important</span><span class="p">;</span> - <span class="p">}</span> -<span class="o">&lt;/</span><span class="nt">style</span><span class="o">&gt;</span></code></pre></div></pre> -</div> -</div> -</div> -</div> - - - - diff --git a/public/posts/page/1/index.html b/public/posts/page/1/index.html deleted file mode 100644 index f5cce0e..0000000 --- a/public/posts/page/1/index.html +++ /dev/null @@ -1 +0,0 @@ -https://blog.tastytea.de/posts/ \ No newline at end of file diff --git a/public/posts/using-asciidoc-with-gitea/index.html b/public/posts/using-asciidoc-with-gitea/index.html deleted file mode 100644 index 2b0f7f9..0000000 --- a/public/posts/using-asciidoc-with-gitea/index.html +++ /dev/null @@ -1,272 +0,0 @@ - - - - - Using AsciiDoc(tor) with Gitea | tastyteablog - - - - - - - - - - - - - - - - - - - -
-
-
- - - - -
-
-

Using AsciiDoc(tor) with Gitea

- - -
-
-

In this blogpost I describe what I did to get AsciiDoc support into -Gitea. If you want more than syntax highlighting and basic -formatting, Gitea has to be patched unfortunately(this -issue has already been reported). -But I think most people will only need to edit 1 configuration file and are -done.

-
-
-

Asciidoctor or AsciiDoc?

-
-
-

Asciidoctor has inbuilt support for -highlight.js, the solution Gitea -uses and is therefore the best choice in most scenarios. If you can’t or don’t -want to use it you can use AsciiDoc.

-
-
-

Add the following section to conf/app.ini in your Gitea path. The change -causes .adoc files to be rendered with asciidoctor.

-
-
-
-
[markup.asciidoc]
-ENABLED = true
-; List of file extensions that should be rendered by an external command
-FILE_EXTENSIONS = .adoc,.asciidoc
-; External command to render all matching extensions
-RENDER_COMMAND = "asciidoctor --backend=html5 --no-header-footer --attribute source-highlighter=highlightjs --out-file=- -"
-; Don't pass the file on STDIN, pass the filename as argument instead.
-IS_INPUT_FILE = false
-
-
-
-

If you want to use asciidoc instead the command would be: -asciidoc --backend=xhtml11 --no-header-footer --attribute -source-highlighter=highlight --out-file=- -. I would choose the xhtml11 -backend because it is the only one that encloses code snippets with <code> -tags. Instead of -highlight you can -use source-highlight or -Pygments.

-
-
-

If you use asciidoctor and don’t need tables or other fancy stuff you’re now -done! If you use asciidoc, you’ll have to patch Gitea to get syntax -highlighting.

-
-
-
-
-

Patching Gitea

-
-
-

The sanitizer strips almost all attributes from HTML-tags, as a security -precaution. I’ve added exceptions for:

-
-
-
    -
  • -

    class attributes on all the tags Asciidoctor introduces,

    -
  • -
  • -

    Numerous attributes on table tags,

    -
  • -
  • -

    align and valign on td tags,

    -
  • -
  • -

    style attributes on span tags, but only if they contain nothing more than -color and font definitions.

    -
  • -
-
-
-

If you use Asciidoctor with highlight.js output, you don’t need to allow style -attributes, if you don’t use tables you can omit the lines that deal with them -and the class exception is only useful if you add custom CSS to use them.

-
-
-

Apply the patch with patch -p1 < gitea_relax-sanitizer.patch.

-
-
-
-
diff -ur a/modules/markup/sanitizer.go b/modules/markup/sanitizer.go
---- a/modules/markup/sanitizer.go   2019-01-26 16:04:56.014108339 +0100
-+++ b/modules/markup/sanitizer.go   2019-01-26 16:03:21.776401012 +0100
-@@ -38,6 +38,16 @@
- 
-        // Custom URL-Schemes
-        sanitizer.policy.AllowURLSchemes(setting.Markdown.CustomURLSchemes...)
-+       // Allow style on span tags
-+       sanitizer.policy.AllowAttrs("style").Matching(regexp.MustCompile(`^(background-)?color:[^;]+(; ?font[^;]+)?;?$`)).OnElements("span")
-+
-+       // Allow class attribute
-+       sanitizer.policy.AllowAttrs("class").OnElements("code", "pre", "span", "div", "p", "table", "td")
-+
-+       // Allow table attributes
-+       sanitizer.policy.AllowAttrs("width", "frame", "rules", "cellspacing", "cellpadding").OnElements("table")
-+       sanitizer.policy.AllowAttrs("width").OnElements("col")
-+       sanitizer.policy.AllowAttrs("align", "valign").OnElements("td")
-    })
- }
-
-
-
-
-
-
-

Tables without borders

-
-
-

I used tables without borders in a manpage I wrote for the list of options. -Gitea insist on drawing borders around them, so I had to create a custom CSS -snippet.

-
-
-

In your Gitea directory, create custom/templates/custom/header.tmpl.

-
-
-
-
<style>
-    /* Additions for asciidoc */
-    .markdown:not(code) table.frame-none
-    {
-        border: 0 !important;
-    }
-    .markdown:not(code) table.grid-none *
-    {
-        border: 0 !important;
-    }
-</style>
-
-
-
-
-
-
- - - -
-
-
- - diff --git a/public/posts/wireguard-vpn-with-2-or-more-subnets/index.html b/public/posts/wireguard-vpn-with-2-or-more-subnets/index.html deleted file mode 100644 index 675a3d9..0000000 --- a/public/posts/wireguard-vpn-with-2-or-more-subnets/index.html +++ /dev/null @@ -1,299 +0,0 @@ - - - - - WireGuard VPN with 2 or more subnets | tastyteablog - - - - - - - - - - - - - - - - - - - -
-
-
- - - - -
-
-

WireGuard VPN with 2 or more subnets

- - -
-
-

I wanted to create a WireGuard VPN with -2 subnets in different physical places, each with their own server. I couldn’t -find an example how to do that, so I wrote this one.

-
-
-

Introduction

-
-
-

I’m going to use the IP range fd69::/48 for the VPN, fd69:0:0:1::/64 for -subnet 1 and fd69:0:0:2::/64 for subnet 2. I’m going to call the server of -subnet 1 server1, its first client client1a, the second one client1b and -so on.

-
-
-

All clients in subnet 1 will connect to server1 and all clients in subnet 2 -will connect to server2. server1 and server2 will be connected. If -client1a wants to connect to client2a, the route will be: -client1a → server1 → server2 → client2a.

-
-
-
-
-

Preparations

-
-
-

Install WireGuard, create /etc/wireguard -and generate a key-pair on each participating peer.

-
-
-
-
mkdir /etc/wireguard
-cd /etc/wireguard
-umask 077
-wg genkey | tee privatekey | wg pubkey > publickey
-
-
-
-
-
-

Configure servers

-
-
-
server1:/etc/wireguard/wg0.conf:
-
-
# This peer
-[Interface]
-Address = fd69:0:0:1::1/48
-PrivateKey = <PRIVATE KEY OF server1>
-ListenPort = 51820
-
-# Server of subnet 2
-[Peer]
-PublicKey = <PUBLIC KEY OF server2>
-Endpoint = server2:51820
-AllowedIPs = fd69:0:0:2::/64
-
-# Clients of subnet 1
-[Peer]
-PublicKey = <PUBLIC KEY OF client1a>
-AllowedIPs = fd69:0:0:1::a/128
-
-[Peer]
-PublicKey = <PUBLIC KEY OF client1b>
-AllowedIPs = fd69:0:0:1::b/128
-
-
-
-
server2:/etc/wireguard/wg0.conf:
-
-
# This peer
-[Interface]
-Address = fd69:0:0:2::1/48
-PrivateKey = <PRIVATE KEY OF server2>
-ListenPort = 51820
-
-# Server of subnet 1
-[Peer]
-PublicKey = <PUBLIC KEY OF server1>
-Endpoint = server1:51820
-AllowedIPs = fd69:0:0:1::/64
-
-# Clients of subnet 2
-[Peer]
-PublicKey = <PUBLIC KEY OF client2a>
-AllowedIPs = fd69:0:0:2::a/128
-
-
-
-
-
-

Configure clients

-
-
-
client1a:/etc/wireguard/wg0.conf:
-
-
[Interface]
-Address = fd69:0:0:1::a/48
-PrivateKey = <PRIVATE KEY OF client1a>
-
-[Peer]
-PublicKey = <PUBLIC KEY OF server1>
-Endpoint = server1:51820
-AllowedIPs = fd69::/48
-PersistentKeepalive = 25
-
-
-
-
client1b:/etc/wireguard/wg0.conf:
-
-
[Interface]
-Address = fd69:0:0:1::b/48
-PrivateKey = <PRIVATE KEY OF client1b>
-
-[Peer]
-PublicKey = <PUBLIC KEY OF server1>
-Endpoint = server1:51820
-AllowedIPs = fd69::/48
-PersistentKeepalive = 25
-
-
-
-
client2a:/etc/wireguard/wg0.conf:
-
-
[Interface]
-Address = fd69:0:0:2::a/48
-PrivateKey = <PRIVATE KEY OF client2a>
-
-[Peer]
-PublicKey = <PUBLIC KEY OF server2>
-Endpoint = server1:51820
-AllowedIPs = fd69::/48
-PersistentKeepalive = 25
-
-
-
-

The AllowedIPs setting acts as a routing table. When a peer tries to send a -packet to an IP, it will check AllowedIPs, and if the IP appears in the list, -it will send it through the WireGuard interface.

-
-
-

The PersistentKeepalive setting ensures that the connection is maintained and -that the peer continues to be reachable, even behind a NAT.

-
-
-
-
-

Start VPN

-
-
-

Run wg-quick up wg0 on each peer.

-
-
-
-
-

Further reading

-
-
-

The article How to easily configure WireGuard -by Stavros Korokithakis helped me a great deal in understanding WireGuard.

-
-
-
-
-
- - - -
-
-
- - diff --git a/public/sitemap.xml b/public/sitemap.xml deleted file mode 100644 index f1878b1..0000000 --- a/public/sitemap.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - https://blog.tastytea.de/posts/wireguard-vpn-with-2-or-more-subnets/ - 2019-02-15T01:38:40+01:00 - - - - https://blog.tastytea.de/posts/using-asciidoc-with-gitea/ - 2019-02-15T01:40:30+01:00 - - - - https://blog.tastytea.de/tags/asciidoc/ - 2019-02-15T01:40:30+01:00 - 0 - - - - https://blog.tastytea.de/tags/gitea/ - 2019-02-15T01:40:30+01:00 - 0 - - - - https://blog.tastytea.de/posts/ - 2019-02-15T01:38:40+01:00 - 0 - - - - https://blog.tastytea.de/tags/ - 2019-02-15T01:40:30+01:00 - 0 - - - - https://blog.tastytea.de/tags/vpn/ - 2019-02-15T01:38:40+01:00 - 0 - - - - https://blog.tastytea.de/tags/wireguard/ - 2019-02-15T01:38:40+01:00 - 0 - - - - https://blog.tastytea.de/ - 2019-02-15T01:38:40+01:00 - 0 - - - \ No newline at end of file diff --git a/public/tags/asciidoc/index.html b/public/tags/asciidoc/index.html deleted file mode 100644 index 949865e..0000000 --- a/public/tags/asciidoc/index.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - Asciidoc | tastyteablog - - - - - - - - - - - - - - - - - - - -
-
-
- - - - -
-

Asciidoc:

- -
- - -
-
- -
-
- - - - -
-
-
- - diff --git a/public/tags/asciidoc/index.xml b/public/tags/asciidoc/index.xml deleted file mode 100644 index 7715d7d..0000000 --- a/public/tags/asciidoc/index.xml +++ /dev/null @@ -1,159 +0,0 @@ - - - - Asciidoc on tastyteablog - https://blog.tastytea.de/tags/asciidoc/ - Recent content in Asciidoc on tastyteablog - Hugo 0.54.0 -- gohugo.io - en - tastytea@tastytea.de (tastytea) - tastytea@tastytea.de (tastytea) - CC BY-NC 4.0 - Sat, 26 Jan 2019 13:03:36 +0100 - - - Using AsciiDoc(tor) with Gitea - https://blog.tastytea.de/posts/using-asciidoc-with-gitea/ - Sat, 26 Jan 2019 13:03:36 +0100 - tastytea@tastytea.de (tastytea) - https://blog.tastytea.de/posts/using-asciidoc-with-gitea/ - <div class="paragraph"> -<p>In this blogpost I describe what I did to get AsciiDoc support into -<a href="https://gitea.io/">Gitea</a>. If you want more than syntax highlighting and basic -formatting, Gitea has to be patched unfortunately(this -<a href="https://github.com/go-gitea/gitea/issues/4935">issue</a> has already been reported). -But I think most people will only need to edit 1 configuration file and are -done.</p> -</div> -<div class="sect1"> -<h2 id="_asciidoctor_or_asciidoc">Asciidoctor or AsciiDoc?</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p><a href="https://asciidoctor.org/">Asciidoctor</a> has inbuilt support for -<a href="https://highlightjs.org/">highlight.js</a>, the solution Gitea -uses and is therefore the best choice in most scenarios. If you can&#8217;t or don&#8217;t -want to use it you can use <a href="http://asciidoc.org/">AsciiDoc</a>.</p> -</div> -<div class="paragraph"> -<p>Add the following section to <code>conf/app.ini</code> in your Gitea path. The change -causes <code>.adoc</code> files to be rendered with asciidoctor.</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-ini" data-lang="ini"><span class="k">[markup.asciidoc]</span> -<span class="na">ENABLED</span> <span class="o">=</span> <span class="s">true</span> -<span class="c1">; List of file extensions that should be rendered by an external command</span> -<span class="na">FILE_EXTENSIONS</span> <span class="o">=</span> <span class="s">.adoc,.asciidoc</span> -<span class="c1">; External command to render all matching extensions</span> -<span class="na">RENDER_COMMAND</span> <span class="o">=</span> <span class="s">&#34;asciidoctor --backend=html5 --no-header-footer --attribute source-highlighter=highlightjs --out-file=- -&#34;</span> -<span class="c1">; Don&#39;t pass the file on STDIN, pass the filename as argument instead.</span> -<span class="na">IS_INPUT_FILE</span> <span class="o">=</span> <span class="s">false</span></code></pre></div></pre> -</div> -</div> -<div class="paragraph"> -<p>If you want to use asciidoc instead the command would be: -<code>asciidoc --backend=xhtml11 --no-header-footer --attribute -source-highlighter=highlight --out-file=- -</code>. I would choose the <code>xhtml11</code> -backend because it is the only one that encloses code snippets with <code>&lt;code&gt;</code> -tags. Instead of -<a href="http://www.andre-simon.de/doku/highlight/en/highlight.html">highlight</a> you can -use <a href="http://www.gnu.org/software/src-highlite/">source-highlight</a> or -<a href="http://pygments.org/">Pygments</a>.</p> -</div> -<div class="paragraph"> -<p>If you use asciidoctor and don&#8217;t need tables or other fancy stuff you&#8217;re now -done! If you use asciidoc, you&#8217;ll have to patch Gitea to get syntax -highlighting.</p> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_patching_gitea">Patching Gitea</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p>The sanitizer strips almost all attributes from HTML-tags, as a security -precaution. I&#8217;ve added exceptions for:</p> -</div> -<div class="ulist"> -<ul> -<li> -<p><code>class</code> attributes on all the tags Asciidoctor introduces,</p> -</li> -<li> -<p>Numerous attributes on <code>table</code> tags,</p> -</li> -<li> -<p><code>align</code> and <code>valign</code> on <code>td</code> tags,</p> -</li> -<li> -<p><code>style</code> attributes on <code>span</code> tags, but only if they contain nothing more than -color and font definitions.</p> -</li> -</ul> -</div> -<div class="paragraph"> -<p>If you use Asciidoctor with highlight.js output, you don&#8217;t need to allow <code>style</code> -attributes, if you don&#8217;t use tables you can omit the lines that deal with them -and the <code>class</code> exception is only useful if you add custom CSS to use them.</p> -</div> -<div class="paragraph"> -<p>Apply the patch with <code>patch -p1 &lt; gitea_relax-sanitizer.patch</code>.</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-diff" data-lang="diff"><span class="gh">diff -ur a/modules/markup/sanitizer.go b/modules/markup/sanitizer.go -</span><span class="gh"></span><span class="gd">--- a/modules/markup/sanitizer.go 2019-01-26 16:04:56.014108339 +0100 -</span><span class="gd"></span><span class="gi">+++ b/modules/markup/sanitizer.go 2019-01-26 16:03:21.776401012 +0100 -</span><span class="gi"></span><span class="gu">@@ -38,6 +38,16 @@ -</span><span class="gu"></span> - // Custom URL-Schemes - sanitizer.policy.AllowURLSchemes(setting.Markdown.CustomURLSchemes...) -<span class="gi">+ // Allow style on span tags -</span><span class="gi">+ sanitizer.policy.AllowAttrs(&#34;style&#34;).Matching(regexp.MustCompile(`^(background-)?color:[^;]+(; ?font[^;]+)?;?$`)).OnElements(&#34;span&#34;) -</span><span class="gi">+ -</span><span class="gi">+ // Allow class attribute -</span><span class="gi">+ sanitizer.policy.AllowAttrs(&#34;class&#34;).OnElements(&#34;code&#34;, &#34;pre&#34;, &#34;span&#34;, &#34;div&#34;, &#34;p&#34;, &#34;table&#34;, &#34;td&#34;) -</span><span class="gi">+ -</span><span class="gi">+ // Allow table attributes -</span><span class="gi">+ sanitizer.policy.AllowAttrs(&#34;width&#34;, &#34;frame&#34;, &#34;rules&#34;, &#34;cellspacing&#34;, &#34;cellpadding&#34;).OnElements(&#34;table&#34;) -</span><span class="gi">+ sanitizer.policy.AllowAttrs(&#34;width&#34;).OnElements(&#34;col&#34;) -</span><span class="gi">+ sanitizer.policy.AllowAttrs(&#34;align&#34;, &#34;valign&#34;).OnElements(&#34;td&#34;) -</span><span class="gi"></span> }) - } -</code></pre></div></pre> -</div> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_tables_without_borders">Tables without borders</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p>I used tables without borders in a manpage I wrote for the list of options. -Gitea insist on drawing borders around them, so I had to create a custom CSS -snippet.</p> -</div> -<div class="paragraph"> -<p>In your Gitea directory, create <code>custom/templates/custom/header.tmpl</code>.</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-css" data-lang="css"><span class="o">&lt;</span><span class="nt">style</span><span class="o">&gt;</span> - <span class="c">/* Additions for asciidoc */</span> - <span class="p">.</span><span class="nc">markdown</span><span class="p">:</span><span class="nd">not</span><span class="o">(</span><span class="nt">code</span><span class="o">)</span> <span class="nt">table</span><span class="p">.</span><span class="nc">frame-none</span> - <span class="p">{</span> - <span class="k">border</span><span class="p">:</span> <span class="mi">0</span> <span class="cp">!important</span><span class="p">;</span> - <span class="p">}</span> - <span class="p">.</span><span class="nc">markdown</span><span class="p">:</span><span class="nd">not</span><span class="o">(</span><span class="nt">code</span><span class="o">)</span> <span class="nt">table</span><span class="p">.</span><span class="nc">grid-none</span> <span class="o">*</span> - <span class="p">{</span> - <span class="k">border</span><span class="p">:</span> <span class="mi">0</span> <span class="cp">!important</span><span class="p">;</span> - <span class="p">}</span> -<span class="o">&lt;/</span><span class="nt">style</span><span class="o">&gt;</span></code></pre></div></pre> -</div> -</div> -</div> -</div> - - - - diff --git a/public/tags/asciidoc/page/1/index.html b/public/tags/asciidoc/page/1/index.html deleted file mode 100644 index ccf53db..0000000 --- a/public/tags/asciidoc/page/1/index.html +++ /dev/null @@ -1 +0,0 @@ -https://blog.tastytea.de/tags/asciidoc/ \ No newline at end of file diff --git a/public/tags/gitea/index.html b/public/tags/gitea/index.html deleted file mode 100644 index e89fecb..0000000 --- a/public/tags/gitea/index.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - Gitea | tastyteablog - - - - - - - - - - - - - - - - - - - -
-
-
- - - - -
-

Gitea:

- -
- - -
-
- -
-
- - - - -
-
-
- - diff --git a/public/tags/gitea/index.xml b/public/tags/gitea/index.xml deleted file mode 100644 index 0375c08..0000000 --- a/public/tags/gitea/index.xml +++ /dev/null @@ -1,159 +0,0 @@ - - - - Gitea on tastyteablog - https://blog.tastytea.de/tags/gitea/ - Recent content in Gitea on tastyteablog - Hugo 0.54.0 -- gohugo.io - en - tastytea@tastytea.de (tastytea) - tastytea@tastytea.de (tastytea) - CC BY-NC 4.0 - Sat, 26 Jan 2019 13:03:36 +0100 - - - Using AsciiDoc(tor) with Gitea - https://blog.tastytea.de/posts/using-asciidoc-with-gitea/ - Sat, 26 Jan 2019 13:03:36 +0100 - tastytea@tastytea.de (tastytea) - https://blog.tastytea.de/posts/using-asciidoc-with-gitea/ - <div class="paragraph"> -<p>In this blogpost I describe what I did to get AsciiDoc support into -<a href="https://gitea.io/">Gitea</a>. If you want more than syntax highlighting and basic -formatting, Gitea has to be patched unfortunately(this -<a href="https://github.com/go-gitea/gitea/issues/4935">issue</a> has already been reported). -But I think most people will only need to edit 1 configuration file and are -done.</p> -</div> -<div class="sect1"> -<h2 id="_asciidoctor_or_asciidoc">Asciidoctor or AsciiDoc?</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p><a href="https://asciidoctor.org/">Asciidoctor</a> has inbuilt support for -<a href="https://highlightjs.org/">highlight.js</a>, the solution Gitea -uses and is therefore the best choice in most scenarios. If you can&#8217;t or don&#8217;t -want to use it you can use <a href="http://asciidoc.org/">AsciiDoc</a>.</p> -</div> -<div class="paragraph"> -<p>Add the following section to <code>conf/app.ini</code> in your Gitea path. The change -causes <code>.adoc</code> files to be rendered with asciidoctor.</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-ini" data-lang="ini"><span class="k">[markup.asciidoc]</span> -<span class="na">ENABLED</span> <span class="o">=</span> <span class="s">true</span> -<span class="c1">; List of file extensions that should be rendered by an external command</span> -<span class="na">FILE_EXTENSIONS</span> <span class="o">=</span> <span class="s">.adoc,.asciidoc</span> -<span class="c1">; External command to render all matching extensions</span> -<span class="na">RENDER_COMMAND</span> <span class="o">=</span> <span class="s">&#34;asciidoctor --backend=html5 --no-header-footer --attribute source-highlighter=highlightjs --out-file=- -&#34;</span> -<span class="c1">; Don&#39;t pass the file on STDIN, pass the filename as argument instead.</span> -<span class="na">IS_INPUT_FILE</span> <span class="o">=</span> <span class="s">false</span></code></pre></div></pre> -</div> -</div> -<div class="paragraph"> -<p>If you want to use asciidoc instead the command would be: -<code>asciidoc --backend=xhtml11 --no-header-footer --attribute -source-highlighter=highlight --out-file=- -</code>. I would choose the <code>xhtml11</code> -backend because it is the only one that encloses code snippets with <code>&lt;code&gt;</code> -tags. Instead of -<a href="http://www.andre-simon.de/doku/highlight/en/highlight.html">highlight</a> you can -use <a href="http://www.gnu.org/software/src-highlite/">source-highlight</a> or -<a href="http://pygments.org/">Pygments</a>.</p> -</div> -<div class="paragraph"> -<p>If you use asciidoctor and don&#8217;t need tables or other fancy stuff you&#8217;re now -done! If you use asciidoc, you&#8217;ll have to patch Gitea to get syntax -highlighting.</p> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_patching_gitea">Patching Gitea</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p>The sanitizer strips almost all attributes from HTML-tags, as a security -precaution. I&#8217;ve added exceptions for:</p> -</div> -<div class="ulist"> -<ul> -<li> -<p><code>class</code> attributes on all the tags Asciidoctor introduces,</p> -</li> -<li> -<p>Numerous attributes on <code>table</code> tags,</p> -</li> -<li> -<p><code>align</code> and <code>valign</code> on <code>td</code> tags,</p> -</li> -<li> -<p><code>style</code> attributes on <code>span</code> tags, but only if they contain nothing more than -color and font definitions.</p> -</li> -</ul> -</div> -<div class="paragraph"> -<p>If you use Asciidoctor with highlight.js output, you don&#8217;t need to allow <code>style</code> -attributes, if you don&#8217;t use tables you can omit the lines that deal with them -and the <code>class</code> exception is only useful if you add custom CSS to use them.</p> -</div> -<div class="paragraph"> -<p>Apply the patch with <code>patch -p1 &lt; gitea_relax-sanitizer.patch</code>.</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-diff" data-lang="diff"><span class="gh">diff -ur a/modules/markup/sanitizer.go b/modules/markup/sanitizer.go -</span><span class="gh"></span><span class="gd">--- a/modules/markup/sanitizer.go 2019-01-26 16:04:56.014108339 +0100 -</span><span class="gd"></span><span class="gi">+++ b/modules/markup/sanitizer.go 2019-01-26 16:03:21.776401012 +0100 -</span><span class="gi"></span><span class="gu">@@ -38,6 +38,16 @@ -</span><span class="gu"></span> - // Custom URL-Schemes - sanitizer.policy.AllowURLSchemes(setting.Markdown.CustomURLSchemes...) -<span class="gi">+ // Allow style on span tags -</span><span class="gi">+ sanitizer.policy.AllowAttrs(&#34;style&#34;).Matching(regexp.MustCompile(`^(background-)?color:[^;]+(; ?font[^;]+)?;?$`)).OnElements(&#34;span&#34;) -</span><span class="gi">+ -</span><span class="gi">+ // Allow class attribute -</span><span class="gi">+ sanitizer.policy.AllowAttrs(&#34;class&#34;).OnElements(&#34;code&#34;, &#34;pre&#34;, &#34;span&#34;, &#34;div&#34;, &#34;p&#34;, &#34;table&#34;, &#34;td&#34;) -</span><span class="gi">+ -</span><span class="gi">+ // Allow table attributes -</span><span class="gi">+ sanitizer.policy.AllowAttrs(&#34;width&#34;, &#34;frame&#34;, &#34;rules&#34;, &#34;cellspacing&#34;, &#34;cellpadding&#34;).OnElements(&#34;table&#34;) -</span><span class="gi">+ sanitizer.policy.AllowAttrs(&#34;width&#34;).OnElements(&#34;col&#34;) -</span><span class="gi">+ sanitizer.policy.AllowAttrs(&#34;align&#34;, &#34;valign&#34;).OnElements(&#34;td&#34;) -</span><span class="gi"></span> }) - } -</code></pre></div></pre> -</div> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_tables_without_borders">Tables without borders</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p>I used tables without borders in a manpage I wrote for the list of options. -Gitea insist on drawing borders around them, so I had to create a custom CSS -snippet.</p> -</div> -<div class="paragraph"> -<p>In your Gitea directory, create <code>custom/templates/custom/header.tmpl</code>.</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-css" data-lang="css"><span class="o">&lt;</span><span class="nt">style</span><span class="o">&gt;</span> - <span class="c">/* Additions for asciidoc */</span> - <span class="p">.</span><span class="nc">markdown</span><span class="p">:</span><span class="nd">not</span><span class="o">(</span><span class="nt">code</span><span class="o">)</span> <span class="nt">table</span><span class="p">.</span><span class="nc">frame-none</span> - <span class="p">{</span> - <span class="k">border</span><span class="p">:</span> <span class="mi">0</span> <span class="cp">!important</span><span class="p">;</span> - <span class="p">}</span> - <span class="p">.</span><span class="nc">markdown</span><span class="p">:</span><span class="nd">not</span><span class="o">(</span><span class="nt">code</span><span class="o">)</span> <span class="nt">table</span><span class="p">.</span><span class="nc">grid-none</span> <span class="o">*</span> - <span class="p">{</span> - <span class="k">border</span><span class="p">:</span> <span class="mi">0</span> <span class="cp">!important</span><span class="p">;</span> - <span class="p">}</span> -<span class="o">&lt;/</span><span class="nt">style</span><span class="o">&gt;</span></code></pre></div></pre> -</div> -</div> -</div> -</div> - - - - diff --git a/public/tags/gitea/page/1/index.html b/public/tags/gitea/page/1/index.html deleted file mode 100644 index da447b5..0000000 --- a/public/tags/gitea/page/1/index.html +++ /dev/null @@ -1 +0,0 @@ -https://blog.tastytea.de/tags/gitea/ \ No newline at end of file diff --git a/public/tags/index.html b/public/tags/index.html deleted file mode 100644 index d00c797..0000000 --- a/public/tags/index.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - - Tags | tastyteablog - - - - - - - - - - - - - - - - - - - -
-
-
- - - - -
-

Tags:

- -
- - - -
-
-
- - diff --git a/public/tags/index.xml b/public/tags/index.xml deleted file mode 100644 index 9a4e098..0000000 --- a/public/tags/index.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - Tags on tastyteablog - https://blog.tastytea.de/tags/ - Recent content in Tags on tastyteablog - Hugo 0.54.0 -- gohugo.io - en - tastytea@tastytea.de (tastytea) - tastytea@tastytea.de (tastytea) - CC BY-NC 4.0 - Sat, 26 Jan 2019 13:03:36 +0100 - - - Asciidoc - https://blog.tastytea.de/tags/asciidoc/ - Sat, 26 Jan 2019 13:03:36 +0100 - tastytea@tastytea.de (tastytea) - https://blog.tastytea.de/tags/asciidoc/ - - - - Gitea - https://blog.tastytea.de/tags/gitea/ - Sat, 26 Jan 2019 13:03:36 +0100 - tastytea@tastytea.de (tastytea) - https://blog.tastytea.de/tags/gitea/ - - - - Vpn - https://blog.tastytea.de/tags/vpn/ - Thu, 14 Feb 2019 21:38:28 +0100 - tastytea@tastytea.de (tastytea) - https://blog.tastytea.de/tags/vpn/ - - - - Wireguard - https://blog.tastytea.de/tags/wireguard/ - Thu, 14 Feb 2019 21:38:28 +0100 - tastytea@tastytea.de (tastytea) - https://blog.tastytea.de/tags/wireguard/ - - - - diff --git a/public/tags/vpn/index.html b/public/tags/vpn/index.html deleted file mode 100644 index dc9efb5..0000000 --- a/public/tags/vpn/index.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - Vpn | tastyteablog - - - - - - - - - - - - - - - - - - - -
-
-
- - - - -
-

Vpn:

- -
- - -
-
- -
-
- - - - -
-
-
- - diff --git a/public/tags/vpn/index.xml b/public/tags/vpn/index.xml deleted file mode 100644 index 120de43..0000000 --- a/public/tags/vpn/index.xml +++ /dev/null @@ -1,186 +0,0 @@ - - - - Vpn on tastyteablog - https://blog.tastytea.de/tags/vpn/ - Recent content in Vpn on tastyteablog - Hugo 0.54.0 -- gohugo.io - en - tastytea@tastytea.de (tastytea) - tastytea@tastytea.de (tastytea) - CC BY-NC 4.0 - Thu, 14 Feb 2019 21:38:28 +0100 - - - WireGuard VPN with 2 or more subnets - https://blog.tastytea.de/posts/wireguard-vpn-with-2-or-more-subnets/ - Thu, 14 Feb 2019 21:38:28 +0100 - tastytea@tastytea.de (tastytea) - https://blog.tastytea.de/posts/wireguard-vpn-with-2-or-more-subnets/ - <div class="paragraph"> -<p>I wanted to create a <a href="https://en.wikipedia.org/wiki/WireGuard">WireGuard</a> VPN with -2 subnets in different physical places, each with their own server. I couldn&#8217;t -find an example how to do that, so I wrote this one.</p> -</div> -<div class="sect1"> -<h2 id="_introduction">Introduction</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p>I&#8217;m going to use the IP range <code>fd69::/48</code> for the VPN, <code>fd69:0:0:1::/64</code> for -subnet 1 and <code>fd69:0:0:2::/64</code> for subnet 2. I&#8217;m going to call the server of -subnet 1 <code>server1</code>, its first client <code>client1a</code>, the second one <code>client1b</code> and -so on.</p> -</div> -<div class="paragraph"> -<p>All clients in subnet 1 will connect to <code>server1</code> and all clients in subnet 2 -will connect to <code>server2</code>. <code>server1</code> and <code>server2</code> will be connected. If -<code>client1a</code> wants to connect to <code>client2a</code>, the route will be: -<code>client1a → server1 → server2 → client2a</code>.</p> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_preparations">Preparations</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p><a href="https://www.wireguard.com/install/">Install WireGuard</a>, create <code>/etc/wireguard</code> -and generate a key-pair on each participating peer.</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-sh" data-lang="sh">mkdir /etc/wireguard -<span class="nb">cd</span> /etc/wireguard -<span class="nb">umask</span> <span class="m">077</span> -wg genkey <span class="p">|</span> tee privatekey <span class="p">|</span> wg pubkey &gt; publickey</code></pre></div></pre> -</div> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_configure_servers">Configure servers</h2> -<div class="sectionbody"> -<div class="listingblock"> -<div class="title"><code>server1:/etc/wireguard/wg0.conf</code>:</div> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-cfg" data-lang="cfg"><span class="c1"># This peer</span> -<span class="k">[Interface]</span> -<span class="na">Address</span> <span class="o">=</span> <span class="s">fd69:0:0:1::1/48</span> -<span class="na">PrivateKey</span> <span class="o">=</span> <span class="s">&lt;PRIVATE KEY OF server1&gt;</span> -<span class="na">ListenPort</span> <span class="o">=</span> <span class="s">51820</span> - -<span class="c1"># Server of subnet 2</span> -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF server2&gt;</span> -<span class="na">Endpoint</span> <span class="o">=</span> <span class="s">server2:51820</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69:0:0:2::/64</span> - -<span class="c1"># Clients of subnet 1</span> -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF client1a&gt;</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69:0:0:1::a/128</span> - -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF client1b&gt;</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69:0:0:1::b/128</span></code></pre></div></pre> -</div> -</div> -<div class="listingblock"> -<div class="title"><code>server2:/etc/wireguard/wg0.conf</code>:</div> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-cfg" data-lang="cfg"><span class="c1"># This peer</span> -<span class="k">[Interface]</span> -<span class="na">Address</span> <span class="o">=</span> <span class="s">fd69:0:0:2::1/48</span> -<span class="na">PrivateKey</span> <span class="o">=</span> <span class="s">&lt;PRIVATE KEY OF server2&gt;</span> -<span class="na">ListenPort</span> <span class="o">=</span> <span class="s">51820</span> - -<span class="c1"># Server of subnet 1</span> -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF server1&gt;</span> -<span class="na">Endpoint</span> <span class="o">=</span> <span class="s">server1:51820</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69:0:0:1::/64</span> - -<span class="c1"># Clients of subnet 2</span> -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF client2a&gt;</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69:0:0:2::a/128</span></code></pre></div></pre> -</div> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_configure_clients">Configure clients</h2> -<div class="sectionbody"> -<div class="listingblock"> -<div class="title"><code>client1a:/etc/wireguard/wg0.conf</code>:</div> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-cfg" data-lang="cfg"><span class="k">[Interface]</span> -<span class="na">Address</span> <span class="o">=</span> <span class="s">fd69:0:0:1::a/48</span> -<span class="na">PrivateKey</span> <span class="o">=</span> <span class="s">&lt;PRIVATE KEY OF client1a&gt;</span> - -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF server1&gt;</span> -<span class="na">Endpoint</span> <span class="o">=</span> <span class="s">server1:51820</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69::/48</span> -<span class="na">PersistentKeepalive</span> <span class="o">=</span> <span class="s">25</span></code></pre></div></pre> -</div> -</div> -<div class="listingblock"> -<div class="title"><code>client1b:/etc/wireguard/wg0.conf</code>:</div> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-cfg" data-lang="cfg"><span class="k">[Interface]</span> -<span class="na">Address</span> <span class="o">=</span> <span class="s">fd69:0:0:1::b/48</span> -<span class="na">PrivateKey</span> <span class="o">=</span> <span class="s">&lt;PRIVATE KEY OF client1b&gt;</span> - -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF server1&gt;</span> -<span class="na">Endpoint</span> <span class="o">=</span> <span class="s">server1:51820</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69::/48</span> -<span class="na">PersistentKeepalive</span> <span class="o">=</span> <span class="s">25</span></code></pre></div></pre> -</div> -</div> -<div class="listingblock"> -<div class="title"><code>client2a:/etc/wireguard/wg0.conf</code>:</div> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-cfg" data-lang="cfg"><span class="k">[Interface]</span> -<span class="na">Address</span> <span class="o">=</span> <span class="s">fd69:0:0:2::a/48</span> -<span class="na">PrivateKey</span> <span class="o">=</span> <span class="s">&lt;PRIVATE KEY OF client2a&gt;</span> - -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF server2&gt;</span> -<span class="na">Endpoint</span> <span class="o">=</span> <span class="s">server1:51820</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69::/48</span> -<span class="na">PersistentKeepalive</span> <span class="o">=</span> <span class="s">25</span></code></pre></div></pre> -</div> -</div> -<div class="paragraph"> -<p>The <code>AllowedIPs</code> setting acts as a routing table. When a peer tries to send a -packet to an IP, it will check <code>AllowedIPs</code>, and if the IP appears in the list, -it will send it through the WireGuard interface.</p> -</div> -<div class="paragraph"> -<p>The <code>PersistentKeepalive</code> setting ensures that the connection is maintained and -that the peer continues to be reachable, even behind a NAT.</p> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_start_vpn">Start VPN</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p>Run <code>wg-quick up wg0</code> on each peer.</p> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_further_reading">Further reading</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p>The article <a href="https://www.stavros.io/posts/how-to-configure-wireguard/">How to easily configure WireGuard</a> -by Stavros Korokithakis helped me a great deal in understanding WireGuard.</p> -</div> -</div> -</div> - - - - diff --git a/public/tags/vpn/page/1/index.html b/public/tags/vpn/page/1/index.html deleted file mode 100644 index 3e5355c..0000000 --- a/public/tags/vpn/page/1/index.html +++ /dev/null @@ -1 +0,0 @@ -https://blog.tastytea.de/tags/vpn/ \ No newline at end of file diff --git a/public/tags/wireguard/index.html b/public/tags/wireguard/index.html deleted file mode 100644 index 4949e7d..0000000 --- a/public/tags/wireguard/index.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - - Wireguard | tastyteablog - - - - - - - - - - - - - - - - - - - -
-
-
- - - - -
-

Wireguard:

- -
- - -
-
- -
-
- - - - -
-
-
- - diff --git a/public/tags/wireguard/index.xml b/public/tags/wireguard/index.xml deleted file mode 100644 index c27ac90..0000000 --- a/public/tags/wireguard/index.xml +++ /dev/null @@ -1,186 +0,0 @@ - - - - Wireguard on tastyteablog - https://blog.tastytea.de/tags/wireguard/ - Recent content in Wireguard on tastyteablog - Hugo 0.54.0 -- gohugo.io - en - tastytea@tastytea.de (tastytea) - tastytea@tastytea.de (tastytea) - CC BY-NC 4.0 - Thu, 14 Feb 2019 21:38:28 +0100 - - - WireGuard VPN with 2 or more subnets - https://blog.tastytea.de/posts/wireguard-vpn-with-2-or-more-subnets/ - Thu, 14 Feb 2019 21:38:28 +0100 - tastytea@tastytea.de (tastytea) - https://blog.tastytea.de/posts/wireguard-vpn-with-2-or-more-subnets/ - <div class="paragraph"> -<p>I wanted to create a <a href="https://en.wikipedia.org/wiki/WireGuard">WireGuard</a> VPN with -2 subnets in different physical places, each with their own server. I couldn&#8217;t -find an example how to do that, so I wrote this one.</p> -</div> -<div class="sect1"> -<h2 id="_introduction">Introduction</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p>I&#8217;m going to use the IP range <code>fd69::/48</code> for the VPN, <code>fd69:0:0:1::/64</code> for -subnet 1 and <code>fd69:0:0:2::/64</code> for subnet 2. I&#8217;m going to call the server of -subnet 1 <code>server1</code>, its first client <code>client1a</code>, the second one <code>client1b</code> and -so on.</p> -</div> -<div class="paragraph"> -<p>All clients in subnet 1 will connect to <code>server1</code> and all clients in subnet 2 -will connect to <code>server2</code>. <code>server1</code> and <code>server2</code> will be connected. If -<code>client1a</code> wants to connect to <code>client2a</code>, the route will be: -<code>client1a → server1 → server2 → client2a</code>.</p> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_preparations">Preparations</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p><a href="https://www.wireguard.com/install/">Install WireGuard</a>, create <code>/etc/wireguard</code> -and generate a key-pair on each participating peer.</p> -</div> -<div class="listingblock"> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-sh" data-lang="sh">mkdir /etc/wireguard -<span class="nb">cd</span> /etc/wireguard -<span class="nb">umask</span> <span class="m">077</span> -wg genkey <span class="p">|</span> tee privatekey <span class="p">|</span> wg pubkey &gt; publickey</code></pre></div></pre> -</div> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_configure_servers">Configure servers</h2> -<div class="sectionbody"> -<div class="listingblock"> -<div class="title"><code>server1:/etc/wireguard/wg0.conf</code>:</div> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-cfg" data-lang="cfg"><span class="c1"># This peer</span> -<span class="k">[Interface]</span> -<span class="na">Address</span> <span class="o">=</span> <span class="s">fd69:0:0:1::1/48</span> -<span class="na">PrivateKey</span> <span class="o">=</span> <span class="s">&lt;PRIVATE KEY OF server1&gt;</span> -<span class="na">ListenPort</span> <span class="o">=</span> <span class="s">51820</span> - -<span class="c1"># Server of subnet 2</span> -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF server2&gt;</span> -<span class="na">Endpoint</span> <span class="o">=</span> <span class="s">server2:51820</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69:0:0:2::/64</span> - -<span class="c1"># Clients of subnet 1</span> -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF client1a&gt;</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69:0:0:1::a/128</span> - -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF client1b&gt;</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69:0:0:1::b/128</span></code></pre></div></pre> -</div> -</div> -<div class="listingblock"> -<div class="title"><code>server2:/etc/wireguard/wg0.conf</code>:</div> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-cfg" data-lang="cfg"><span class="c1"># This peer</span> -<span class="k">[Interface]</span> -<span class="na">Address</span> <span class="o">=</span> <span class="s">fd69:0:0:2::1/48</span> -<span class="na">PrivateKey</span> <span class="o">=</span> <span class="s">&lt;PRIVATE KEY OF server2&gt;</span> -<span class="na">ListenPort</span> <span class="o">=</span> <span class="s">51820</span> - -<span class="c1"># Server of subnet 1</span> -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF server1&gt;</span> -<span class="na">Endpoint</span> <span class="o">=</span> <span class="s">server1:51820</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69:0:0:1::/64</span> - -<span class="c1"># Clients of subnet 2</span> -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF client2a&gt;</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69:0:0:2::a/128</span></code></pre></div></pre> -</div> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_configure_clients">Configure clients</h2> -<div class="sectionbody"> -<div class="listingblock"> -<div class="title"><code>client1a:/etc/wireguard/wg0.conf</code>:</div> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-cfg" data-lang="cfg"><span class="k">[Interface]</span> -<span class="na">Address</span> <span class="o">=</span> <span class="s">fd69:0:0:1::a/48</span> -<span class="na">PrivateKey</span> <span class="o">=</span> <span class="s">&lt;PRIVATE KEY OF client1a&gt;</span> - -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF server1&gt;</span> -<span class="na">Endpoint</span> <span class="o">=</span> <span class="s">server1:51820</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69::/48</span> -<span class="na">PersistentKeepalive</span> <span class="o">=</span> <span class="s">25</span></code></pre></div></pre> -</div> -</div> -<div class="listingblock"> -<div class="title"><code>client1b:/etc/wireguard/wg0.conf</code>:</div> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-cfg" data-lang="cfg"><span class="k">[Interface]</span> -<span class="na">Address</span> <span class="o">=</span> <span class="s">fd69:0:0:1::b/48</span> -<span class="na">PrivateKey</span> <span class="o">=</span> <span class="s">&lt;PRIVATE KEY OF client1b&gt;</span> - -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF server1&gt;</span> -<span class="na">Endpoint</span> <span class="o">=</span> <span class="s">server1:51820</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69::/48</span> -<span class="na">PersistentKeepalive</span> <span class="o">=</span> <span class="s">25</span></code></pre></div></pre> -</div> -</div> -<div class="listingblock"> -<div class="title"><code>client2a:/etc/wireguard/wg0.conf</code>:</div> -<div class="content"> -<pre><div class="highlight"><pre class="chroma"><code class="language-cfg" data-lang="cfg"><span class="k">[Interface]</span> -<span class="na">Address</span> <span class="o">=</span> <span class="s">fd69:0:0:2::a/48</span> -<span class="na">PrivateKey</span> <span class="o">=</span> <span class="s">&lt;PRIVATE KEY OF client2a&gt;</span> - -<span class="k">[Peer]</span> -<span class="na">PublicKey</span> <span class="o">=</span> <span class="s">&lt;PUBLIC KEY OF server2&gt;</span> -<span class="na">Endpoint</span> <span class="o">=</span> <span class="s">server1:51820</span> -<span class="na">AllowedIPs</span> <span class="o">=</span> <span class="s">fd69::/48</span> -<span class="na">PersistentKeepalive</span> <span class="o">=</span> <span class="s">25</span></code></pre></div></pre> -</div> -</div> -<div class="paragraph"> -<p>The <code>AllowedIPs</code> setting acts as a routing table. When a peer tries to send a -packet to an IP, it will check <code>AllowedIPs</code>, and if the IP appears in the list, -it will send it through the WireGuard interface.</p> -</div> -<div class="paragraph"> -<p>The <code>PersistentKeepalive</code> setting ensures that the connection is maintained and -that the peer continues to be reachable, even behind a NAT.</p> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_start_vpn">Start VPN</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p>Run <code>wg-quick up wg0</code> on each peer.</p> -</div> -</div> -</div> -<div class="sect1"> -<h2 id="_further_reading">Further reading</h2> -<div class="sectionbody"> -<div class="paragraph"> -<p>The article <a href="https://www.stavros.io/posts/how-to-configure-wireguard/">How to easily configure WireGuard</a> -by Stavros Korokithakis helped me a great deal in understanding WireGuard.</p> -</div> -</div> -</div> - - - - diff --git a/public/tags/wireguard/page/1/index.html b/public/tags/wireguard/page/1/index.html deleted file mode 100644 index 0f8436d..0000000 --- a/public/tags/wireguard/page/1/index.html +++ /dev/null @@ -1 +0,0 @@ -https://blog.tastytea.de/tags/wireguard/ \ No newline at end of file