Updates
This commit is contained in:
parent
1fda54786a
commit
1de4172a6f
59 changed files with 963 additions and 992 deletions
|
@ -25,29 +25,28 @@
|
|||
</ol>
|
||||
<p>Here is the script:</p>
|
||||
<p><code>process-audio.sh</code></p>
|
||||
<pre class="language-bash"><code class="language-bash"><span class="token shebang important">#!/bin/bash</span>
|
||||
<span class="token keyword">if</span> <span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$#</span>"</span> <span class="token operator">==</span> <span class="token string">"0"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">then</span>
|
||||
<span class="token builtin class-name">echo</span> <span class="token string">"Error: no arguments provided."</span>
|
||||
<span class="token builtin class-name">echo</span> <span class="token string">"Usage: <span class="token variable">$0</span> file1 file2 file3 ..."</span>
|
||||
<span class="token builtin class-name">echo</span> <span class="token string">"or <span class="token variable">$0</span> *.ext"</span>
|
||||
<span class="token builtin class-name">exit</span> <span class="token number">1</span>
|
||||
<span class="token keyword">fi</span>
|
||||
|
||||
<span class="token builtin class-name">trap</span> <span class="token string">"exit"</span> INT
|
||||
|
||||
<span class="token keyword">while</span> <span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$#</span>"</span> <span class="token operator">!=</span> <span class="token string">"0"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">do</span>
|
||||
<span class="token assign-left variable">path</span><span class="token operator">=</span><span class="token string">"<span class="token variable">${1<span class="token operator">%</span><span class="token operator">/</span>*}</span>"</span>
|
||||
<span class="token assign-left variable">file</span><span class="token operator">=</span><span class="token string">"<span class="token variable">${1<span class="token operator">##</span>*<span class="token operator">/</span>}</span>"</span>
|
||||
<span class="token assign-left variable">outfile</span><span class="token operator">=</span><span class="token string">"./normalized--<span class="token variable">$file</span>"</span>
|
||||
<span class="token keyword">if</span> <span class="token punctuation">[</span> <span class="token operator">!</span> <span class="token parameter variable">-f</span> <span class="token string">"<span class="token variable">$outfile</span>"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">then</span>
|
||||
<span class="token builtin class-name">echo</span> <span class="token string">"Processing <span class="token variable">$1</span>"</span>
|
||||
ffmpeg <span class="token parameter variable">-i</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token parameter variable">-v</span> warning <span class="token parameter variable">-ac</span> <span class="token number">1</span> <span class="token parameter variable">-af</span> <span class="token string">"compand=attacks=0.3:decays=0.3:delay=0.15:points=-80/-300|-45/-25|-27/-15|0/-12|20/-12,anlmdn=s=10,highpass=f=500"</span> <span class="token parameter variable">-threads</span> <span class="token number">4</span> <span class="token string">"<span class="token variable">$outfile</span>"</span>
|
||||
<span class="token keyword">else</span>
|
||||
<span class="token builtin class-name">echo</span> <span class="token string">"Skipping <span class="token variable">$1</span>, already processed."</span>
|
||||
<span class="token keyword">fi</span>
|
||||
<span class="token builtin class-name">shift</span>
|
||||
<span class="token keyword">done</span>
|
||||
</code></pre>
|
||||
<pre class="language-bash"><code class="language-bash"><span class="highlight-line"><span class="token shebang important">#!/bin/bash</span></span>
|
||||
<span class="highlight-line"><span class="token keyword">if</span> <span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$#</span>"</span> <span class="token operator">==</span> <span class="token string">"0"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">then</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">echo</span> <span class="token string">"Error: no arguments provided."</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">echo</span> <span class="token string">"Usage: <span class="token variable">$0</span> file1 file2 file3 ..."</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">echo</span> <span class="token string">"or <span class="token variable">$0</span> *.ext"</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">exit</span> <span class="token number">1</span></span>
|
||||
<span class="highlight-line"><span class="token keyword">fi</span></span>
|
||||
<span class="highlight-line"></span>
|
||||
<span class="highlight-line"><span class="token builtin class-name">trap</span> <span class="token string">"exit"</span> INT</span>
|
||||
<span class="highlight-line"></span>
|
||||
<span class="highlight-line"><span class="token keyword">while</span> <span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$#</span>"</span> <span class="token operator">!=</span> <span class="token string">"0"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">do</span></span>
|
||||
<span class="highlight-line"> <span class="token assign-left variable">path</span><span class="token operator">=</span><span class="token string">"<span class="token variable">${1<span class="token operator">%</span><span class="token operator">/</span>*}</span>"</span></span>
|
||||
<span class="highlight-line"> <span class="token assign-left variable">file</span><span class="token operator">=</span><span class="token string">"<span class="token variable">${1<span class="token operator">##</span>*<span class="token operator">/</span>}</span>"</span></span>
|
||||
<span class="highlight-line"> <span class="token assign-left variable">outfile</span><span class="token operator">=</span><span class="token string">"./normalized--<span class="token variable">$file</span>"</span></span>
|
||||
<span class="highlight-line"> <span class="token keyword">if</span> <span class="token punctuation">[</span> <span class="token operator">!</span> <span class="token parameter variable">-f</span> <span class="token string">"<span class="token variable">$outfile</span>"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">then</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">echo</span> <span class="token string">"Processing <span class="token variable">$1</span>"</span></span>
|
||||
<span class="highlight-line"> ffmpeg <span class="token parameter variable">-i</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token parameter variable">-v</span> warning <span class="token parameter variable">-ac</span> <span class="token number">1</span> <span class="token parameter variable">-af</span> <span class="token string">"compand=attacks=0.3:decays=0.3:delay=0.15:points=-80/-300|-45/-25|-27/-15|0/-12|20/-12,anlmdn=s=10,highpass=f=500"</span> <span class="token parameter variable">-threads</span> <span class="token number">4</span> <span class="token string">"<span class="token variable">$outfile</span>"</span></span>
|
||||
<span class="highlight-line"> <span class="token keyword">else</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">echo</span> <span class="token string">"Skipping <span class="token variable">$1</span>, already processed."</span></span>
|
||||
<span class="highlight-line"> <span class="token keyword">fi</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">shift</span></span>
|
||||
<span class="highlight-line"><span class="token keyword">done</span></span></code></pre>
|
||||
<p>If this is useful to you please leave a comment or send an email, I would love to hear about it.</p>
|
||||
</content>
|
||||
</entry>
|
||||
|
|
274
feeds/how-to.xml
274
feeds/how-to.xml
|
@ -34,154 +34,150 @@
|
|||
<p>I usually use nginx, but I wanted to give Caddy a shot, and it has been a great experience. I installed Caddy using the <a href="https://caddyserver.com/docs/install" target="_blank" rel="noopener">official instructions</a>.<br>
|
||||
Here is the Caddyfile I made—you will need to change the domain names and the email. Email could be removed, but it is there so that SSL certificate issuers can contact you if there is a problem with your certificates.</p>
|
||||
<p><code>/etc/caddy/Caddyfile</code></p>
|
||||
<pre class="language-caddy"><code class="language-caddy"># Global options block
|
||||
{
|
||||
email you@example.com # &lt;&lt;&lt;&lt; CHANGE THIS &lt;&lt;&lt;&lt;
|
||||
on_demand_tls {
|
||||
ask http://localhost/check
|
||||
}
|
||||
}
|
||||
|
||||
# Webhooks
|
||||
https://webhooks.subdomain.here.tld { &lt;&lt;&lt;&lt; CHANGE THIS &lt;&lt;&lt;&lt;
|
||||
reverse_proxy localhost:9000
|
||||
}
|
||||
|
||||
# Filter for which SSL certs we will create. Prevents abuse.
|
||||
http://localhost {
|
||||
handle /check {
|
||||
root * /var/www
|
||||
@deny not file /{query.domain}/
|
||||
respond @deny 404
|
||||
}
|
||||
}
|
||||
|
||||
# This automatically handles upgrading http:// requests with a redirect
|
||||
https:// {
|
||||
tls {
|
||||
on_demand
|
||||
}
|
||||
root /var/www
|
||||
rewrite /{host}{uri}
|
||||
@forbidden {
|
||||
path /.*
|
||||
}
|
||||
respond @forbidden 404
|
||||
file_server
|
||||
}
|
||||
|
||||
# Refer to the Caddy docs for more information:
|
||||
# https://caddyserver.com/docs/caddyfile
|
||||
|
||||
# This config based on information at
|
||||
# https://caddy.community/t/on-demand-tls-with-dynamic-content-paths/18140
|
||||
# checked and corrected with `caddy validate`
|
||||
</code></pre>
|
||||
<pre class="language-caddy"><code class="language-caddy"><span class="highlight-line"># Global options block</span>
|
||||
<span class="highlight-line">{</span>
|
||||
<span class="highlight-line"> email you@example.com #### CHANGE THIS ####</span>
|
||||
<span class="highlight-line"> on_demand_tls {</span>
|
||||
<span class="highlight-line"> ask http://localhost/check</span>
|
||||
<span class="highlight-line"> }</span>
|
||||
<span class="highlight-line">}</span>
|
||||
<span class="highlight-line"></span>
|
||||
<span class="highlight-line"># Webhooks</span>
|
||||
<span class="highlight-line">https://webhooks.subdomain.here.tld { #### CHANGE THIS ####</span>
|
||||
<span class="highlight-line"> reverse_proxy localhost:9000</span>
|
||||
<span class="highlight-line">}</span>
|
||||
<span class="highlight-line"></span>
|
||||
<span class="highlight-line"># Filter for which SSL certs we will create. Prevents abuse.</span>
|
||||
<span class="highlight-line">http://localhost {</span>
|
||||
<span class="highlight-line"> handle /check {</span>
|
||||
<span class="highlight-line"> root * /var/www</span>
|
||||
<span class="highlight-line"> @deny not file /{query.domain}/</span>
|
||||
<span class="highlight-line"> respond @deny 404</span>
|
||||
<span class="highlight-line"> }</span>
|
||||
<span class="highlight-line">}</span>
|
||||
<span class="highlight-line"></span>
|
||||
<span class="highlight-line"># This automatically handles upgrading http:// requests with a redirect</span>
|
||||
<span class="highlight-line">https:// {</span>
|
||||
<span class="highlight-line"> tls {</span>
|
||||
<span class="highlight-line"> on_demand</span>
|
||||
<span class="highlight-line"> }</span>
|
||||
<span class="highlight-line"> root /var/www</span>
|
||||
<span class="highlight-line"> rewrite /{host}{uri}</span>
|
||||
<span class="highlight-line"> @forbidden {</span>
|
||||
<span class="highlight-line"> path /.*</span>
|
||||
<span class="highlight-line"> }</span>
|
||||
<span class="highlight-line"> respond @forbidden 404</span>
|
||||
<span class="highlight-line"> file_server</span>
|
||||
<span class="highlight-line">}</span>
|
||||
<span class="highlight-line"></span>
|
||||
<span class="highlight-line"># Refer to the Caddy docs for more information:</span>
|
||||
<span class="highlight-line"># https://caddyserver.com/docs/caddyfile</span>
|
||||
<span class="highlight-line"></span>
|
||||
<span class="highlight-line"># This config based on information at</span>
|
||||
<span class="highlight-line"># https://caddy.community/t/on-demand-tls-with-dynamic-content-paths/18140</span>
|
||||
<span class="highlight-line"># checked and corrected with `caddy validate`</span></code></pre>
|
||||
<p>I also took ownership of <code>/var/www</code> with <code>chown -R joshua:joshua /var/www</code> since the webhooks will run as my login account.</p>
|
||||
<h3 id="webhooks" tabindex="-1"><a class="header-anchor" href="https://joshua.seigler.net/posts/my-very-own-github-pages/#webhooks" aria-hidden="true"></a> Webhooks</h3>
|
||||
<p>In my home directory I defined two hook scripts:</p>
|
||||
<p><code>~/webhooks/update-pages.sh</code></p>
|
||||
<pre class="language-bash"><code class="language-bash"><span class="token shebang important">#!/bin/bash</span>
|
||||
<span class="token comment"># parameter 1 is repo name, parameter 2 is clone url</span>
|
||||
<span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"/"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">".."</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"*"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token keyword">if</span> <span class="token punctuation">[</span> <span class="token parameter variable">-d</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">then</span>
|
||||
<span class="token builtin class-name">cd</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span><span class="token punctuation">;</span>
|
||||
<span class="token function">git</span> fetch origin gh-pages<span class="token punctuation">;</span>
|
||||
<span class="token function">git</span> reset <span class="token parameter variable">--hard</span> origin/gh-pages<span class="token punctuation">;</span>
|
||||
<span class="token builtin class-name">exit</span><span class="token punctuation">;</span>
|
||||
<span class="token keyword">fi</span><span class="token punctuation">;</span>
|
||||
<span class="token function">git</span> clone <span class="token parameter variable">-b</span> gh-pages --single-branch <span class="token string">"<span class="token variable">$2</span>"</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">||</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
</code></pre>
|
||||
<pre class="language-bash"><code class="language-bash"><span class="highlight-line"><span class="token shebang important">#!/bin/bash</span></span>
|
||||
<span class="highlight-line"><span class="token comment"># parameter 1 is repo name, parameter 2 is clone url</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"/"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">".."</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"*"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token keyword">if</span> <span class="token punctuation">[</span> <span class="token parameter variable">-d</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">then</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">cd</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"> <span class="token function">git</span> fetch origin gh-pages<span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"> <span class="token function">git</span> reset <span class="token parameter variable">--hard</span> origin/gh-pages<span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">exit</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token keyword">fi</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token function">git</span> clone <span class="token parameter variable">-b</span> gh-pages --single-branch <span class="token string">"<span class="token variable">$2</span>"</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">||</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span></code></pre>
|
||||
<p><code>~/webhooks/remove-pages.sh</code></p>
|
||||
<pre class="language-bash"><code class="language-bash"><span class="token shebang important">#!/bin/bash</span>
|
||||
<span class="token comment"># parameter 1 is repo name</span>
|
||||
<span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"/"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">".."</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"*"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token punctuation">[</span> <span class="token parameter variable">-d</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span> <span class="token punctuation">]</span> <span class="token operator">||</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token builtin class-name">cd</span> <span class="token string">"/var/www"</span><span class="token punctuation">;</span>
|
||||
<span class="token function">rm</span> <span class="token parameter variable">-rf</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span><span class="token punctuation">;</span>
|
||||
</code></pre>
|
||||
<pre class="language-bash"><code class="language-bash"><span class="highlight-line"><span class="token shebang important">#!/bin/bash</span></span>
|
||||
<span class="highlight-line"><span class="token comment"># parameter 1 is repo name</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"/"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">".."</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"*"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span> <span class="token parameter variable">-d</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span> <span class="token punctuation">]</span> <span class="token operator">||</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token builtin class-name">cd</span> <span class="token string">"/var/www"</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token function">rm</span> <span class="token parameter variable">-rf</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span><span class="token punctuation">;</span></span></code></pre>
|
||||
<p>To trigger these hooks I am using <code>webhook</code> which is in the default Debian repository.</p>
|
||||
<p>Here are the hook definitions: one for creating/updating a site, and one for deleting. You will need to generate one or two secret values that the server can use to know that the webhook is authorized to run. I used linux command <code>uuidgen -r</code> to create mine. Save these values so you can enter them in Forgejo later.</p>
|
||||
<p>Also make sure to replace your execute-command lines with ones referencing your username and script paths.</p>
|
||||
<p><code>/etc/webhook.conf</code></p>
|
||||
<pre class="language-json"><code class="language-json"><span class="token punctuation">[</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"id"</span><span class="token operator">:</span> <span class="token string">"update-pages"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"execute-command"</span><span class="token operator">:</span> <span class="token string">"/usr/bin/sudo"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"pass-arguments-to-command"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">[</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"-u"</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"joshua"</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"/home/joshua/webhooks/update-pages.sh"</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"repository.name"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"repository.clone_url"</span> <span class="token punctuation">}</span>
|
||||
<span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"trigger-rule"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"and"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">[</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"match"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"payload-hmac-sha256"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"secret"</span><span class="token operator">:</span> <span class="token string">"(omitted)"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"parameter"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"header"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"X-Forgejo-Signature"</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"match"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"value"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"value"</span><span class="token operator">:</span> <span class="token string">"refs/heads/gh-pages"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"parameter"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"ref"</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">]</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"id"</span><span class="token operator">:</span> <span class="token string">"remove-pages"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"execute-command"</span><span class="token operator">:</span> <span class="token string">"/usr/bin/sudo"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"pass-arguments-to-command"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">[</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"-u"</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"joshua"</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"/home/joshua/webhooks/remove-pages.sh"</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"repository.name"</span> <span class="token punctuation">}</span>
|
||||
<span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"trigger-rule"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"and"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">[</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"match"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"payload-hmac-sha256"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"secret"</span><span class="token operator">:</span> <span class="token string">"(omitted)"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"parameter"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"header"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"X-Forgejo-Signature"</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">]</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">]</span>
|
||||
</code></pre>
|
||||
<pre class="language-json"><code class="language-json"><span class="highlight-line"><span class="token punctuation">[</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"id"</span><span class="token operator">:</span> <span class="token string">"update-pages"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"execute-command"</span><span class="token operator">:</span> <span class="token string">"/usr/bin/sudo"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"pass-arguments-to-command"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">[</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"-u"</span><span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"joshua"</span><span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"/home/joshua/webhooks/update-pages.sh"</span><span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"repository.name"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"repository.clone_url"</span> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">]</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"trigger-rule"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"and"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">[</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"match"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"payload-hmac-sha256"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"secret"</span><span class="token operator">:</span> <span class="token string">"(omitted)"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"parameter"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"header"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"X-Forgejo-Signature"</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"match"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"value"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"value"</span><span class="token operator">:</span> <span class="token string">"refs/heads/gh-pages"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"parameter"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"ref"</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">]</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"id"</span><span class="token operator">:</span> <span class="token string">"remove-pages"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"execute-command"</span><span class="token operator">:</span> <span class="token string">"/usr/bin/sudo"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"pass-arguments-to-command"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">[</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"-u"</span><span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"joshua"</span><span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"/home/joshua/webhooks/remove-pages.sh"</span><span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"repository.name"</span> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">]</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"trigger-rule"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"and"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">[</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"match"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"payload-hmac-sha256"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"secret"</span><span class="token operator">:</span> <span class="token string">"(omitted)"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"parameter"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"header"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"X-Forgejo-Signature"</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">]</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">]</span></span></code></pre>
|
||||
<h3 id="forgejo" tabindex="-1"><a class="header-anchor" href="https://joshua.seigler.net/posts/my-very-own-github-pages/#forgejo" aria-hidden="true"></a> Forgejo</h3>
|
||||
<p>Forgejo supports running webhooks conditionally triggered by certain conditions.<br>
|
||||
Under my main user settings I set up each webhook:</p>
|
||||
|
|
319
feeds/posts.xml
319
feeds/posts.xml
|
@ -41,29 +41,28 @@
|
|||
</ol>
|
||||
<p>Here is the script:</p>
|
||||
<p><code>process-audio.sh</code></p>
|
||||
<pre class="language-bash"><code class="language-bash"><span class="token shebang important">#!/bin/bash</span>
|
||||
<span class="token keyword">if</span> <span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$#</span>"</span> <span class="token operator">==</span> <span class="token string">"0"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">then</span>
|
||||
<span class="token builtin class-name">echo</span> <span class="token string">"Error: no arguments provided."</span>
|
||||
<span class="token builtin class-name">echo</span> <span class="token string">"Usage: <span class="token variable">$0</span> file1 file2 file3 ..."</span>
|
||||
<span class="token builtin class-name">echo</span> <span class="token string">"or <span class="token variable">$0</span> *.ext"</span>
|
||||
<span class="token builtin class-name">exit</span> <span class="token number">1</span>
|
||||
<span class="token keyword">fi</span>
|
||||
|
||||
<span class="token builtin class-name">trap</span> <span class="token string">"exit"</span> INT
|
||||
|
||||
<span class="token keyword">while</span> <span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$#</span>"</span> <span class="token operator">!=</span> <span class="token string">"0"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">do</span>
|
||||
<span class="token assign-left variable">path</span><span class="token operator">=</span><span class="token string">"<span class="token variable">${1<span class="token operator">%</span><span class="token operator">/</span>*}</span>"</span>
|
||||
<span class="token assign-left variable">file</span><span class="token operator">=</span><span class="token string">"<span class="token variable">${1<span class="token operator">##</span>*<span class="token operator">/</span>}</span>"</span>
|
||||
<span class="token assign-left variable">outfile</span><span class="token operator">=</span><span class="token string">"./normalized--<span class="token variable">$file</span>"</span>
|
||||
<span class="token keyword">if</span> <span class="token punctuation">[</span> <span class="token operator">!</span> <span class="token parameter variable">-f</span> <span class="token string">"<span class="token variable">$outfile</span>"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">then</span>
|
||||
<span class="token builtin class-name">echo</span> <span class="token string">"Processing <span class="token variable">$1</span>"</span>
|
||||
ffmpeg <span class="token parameter variable">-i</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token parameter variable">-v</span> warning <span class="token parameter variable">-ac</span> <span class="token number">1</span> <span class="token parameter variable">-af</span> <span class="token string">"compand=attacks=0.3:decays=0.3:delay=0.15:points=-80/-300|-45/-25|-27/-15|0/-12|20/-12,anlmdn=s=10,highpass=f=500"</span> <span class="token parameter variable">-threads</span> <span class="token number">4</span> <span class="token string">"<span class="token variable">$outfile</span>"</span>
|
||||
<span class="token keyword">else</span>
|
||||
<span class="token builtin class-name">echo</span> <span class="token string">"Skipping <span class="token variable">$1</span>, already processed."</span>
|
||||
<span class="token keyword">fi</span>
|
||||
<span class="token builtin class-name">shift</span>
|
||||
<span class="token keyword">done</span>
|
||||
</code></pre>
|
||||
<pre class="language-bash"><code class="language-bash"><span class="highlight-line"><span class="token shebang important">#!/bin/bash</span></span>
|
||||
<span class="highlight-line"><span class="token keyword">if</span> <span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$#</span>"</span> <span class="token operator">==</span> <span class="token string">"0"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">then</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">echo</span> <span class="token string">"Error: no arguments provided."</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">echo</span> <span class="token string">"Usage: <span class="token variable">$0</span> file1 file2 file3 ..."</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">echo</span> <span class="token string">"or <span class="token variable">$0</span> *.ext"</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">exit</span> <span class="token number">1</span></span>
|
||||
<span class="highlight-line"><span class="token keyword">fi</span></span>
|
||||
<span class="highlight-line"></span>
|
||||
<span class="highlight-line"><span class="token builtin class-name">trap</span> <span class="token string">"exit"</span> INT</span>
|
||||
<span class="highlight-line"></span>
|
||||
<span class="highlight-line"><span class="token keyword">while</span> <span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$#</span>"</span> <span class="token operator">!=</span> <span class="token string">"0"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">do</span></span>
|
||||
<span class="highlight-line"> <span class="token assign-left variable">path</span><span class="token operator">=</span><span class="token string">"<span class="token variable">${1<span class="token operator">%</span><span class="token operator">/</span>*}</span>"</span></span>
|
||||
<span class="highlight-line"> <span class="token assign-left variable">file</span><span class="token operator">=</span><span class="token string">"<span class="token variable">${1<span class="token operator">##</span>*<span class="token operator">/</span>}</span>"</span></span>
|
||||
<span class="highlight-line"> <span class="token assign-left variable">outfile</span><span class="token operator">=</span><span class="token string">"./normalized--<span class="token variable">$file</span>"</span></span>
|
||||
<span class="highlight-line"> <span class="token keyword">if</span> <span class="token punctuation">[</span> <span class="token operator">!</span> <span class="token parameter variable">-f</span> <span class="token string">"<span class="token variable">$outfile</span>"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">then</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">echo</span> <span class="token string">"Processing <span class="token variable">$1</span>"</span></span>
|
||||
<span class="highlight-line"> ffmpeg <span class="token parameter variable">-i</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token parameter variable">-v</span> warning <span class="token parameter variable">-ac</span> <span class="token number">1</span> <span class="token parameter variable">-af</span> <span class="token string">"compand=attacks=0.3:decays=0.3:delay=0.15:points=-80/-300|-45/-25|-27/-15|0/-12|20/-12,anlmdn=s=10,highpass=f=500"</span> <span class="token parameter variable">-threads</span> <span class="token number">4</span> <span class="token string">"<span class="token variable">$outfile</span>"</span></span>
|
||||
<span class="highlight-line"> <span class="token keyword">else</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">echo</span> <span class="token string">"Skipping <span class="token variable">$1</span>, already processed."</span></span>
|
||||
<span class="highlight-line"> <span class="token keyword">fi</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">shift</span></span>
|
||||
<span class="highlight-line"><span class="token keyword">done</span></span></code></pre>
|
||||
<p>If this is useful to you please leave a comment or send an email, I would love to hear about it.</p>
|
||||
</content>
|
||||
</entry>
|
||||
|
@ -114,154 +113,150 @@
|
|||
<p>I usually use nginx, but I wanted to give Caddy a shot, and it has been a great experience. I installed Caddy using the <a href="https://caddyserver.com/docs/install" target="_blank" rel="noopener">official instructions</a>.<br>
|
||||
Here is the Caddyfile I made—you will need to change the domain names and the email. Email could be removed, but it is there so that SSL certificate issuers can contact you if there is a problem with your certificates.</p>
|
||||
<p><code>/etc/caddy/Caddyfile</code></p>
|
||||
<pre class="language-caddy"><code class="language-caddy"># Global options block
|
||||
{
|
||||
email you@example.com # &lt;&lt;&lt;&lt; CHANGE THIS &lt;&lt;&lt;&lt;
|
||||
on_demand_tls {
|
||||
ask http://localhost/check
|
||||
}
|
||||
}
|
||||
|
||||
# Webhooks
|
||||
https://webhooks.subdomain.here.tld { &lt;&lt;&lt;&lt; CHANGE THIS &lt;&lt;&lt;&lt;
|
||||
reverse_proxy localhost:9000
|
||||
}
|
||||
|
||||
# Filter for which SSL certs we will create. Prevents abuse.
|
||||
http://localhost {
|
||||
handle /check {
|
||||
root * /var/www
|
||||
@deny not file /{query.domain}/
|
||||
respond @deny 404
|
||||
}
|
||||
}
|
||||
|
||||
# This automatically handles upgrading http:// requests with a redirect
|
||||
https:// {
|
||||
tls {
|
||||
on_demand
|
||||
}
|
||||
root /var/www
|
||||
rewrite /{host}{uri}
|
||||
@forbidden {
|
||||
path /.*
|
||||
}
|
||||
respond @forbidden 404
|
||||
file_server
|
||||
}
|
||||
|
||||
# Refer to the Caddy docs for more information:
|
||||
# https://caddyserver.com/docs/caddyfile
|
||||
|
||||
# This config based on information at
|
||||
# https://caddy.community/t/on-demand-tls-with-dynamic-content-paths/18140
|
||||
# checked and corrected with `caddy validate`
|
||||
</code></pre>
|
||||
<pre class="language-caddy"><code class="language-caddy"><span class="highlight-line"># Global options block</span>
|
||||
<span class="highlight-line">{</span>
|
||||
<span class="highlight-line"> email you@example.com #### CHANGE THIS ####</span>
|
||||
<span class="highlight-line"> on_demand_tls {</span>
|
||||
<span class="highlight-line"> ask http://localhost/check</span>
|
||||
<span class="highlight-line"> }</span>
|
||||
<span class="highlight-line">}</span>
|
||||
<span class="highlight-line"></span>
|
||||
<span class="highlight-line"># Webhooks</span>
|
||||
<span class="highlight-line">https://webhooks.subdomain.here.tld { #### CHANGE THIS ####</span>
|
||||
<span class="highlight-line"> reverse_proxy localhost:9000</span>
|
||||
<span class="highlight-line">}</span>
|
||||
<span class="highlight-line"></span>
|
||||
<span class="highlight-line"># Filter for which SSL certs we will create. Prevents abuse.</span>
|
||||
<span class="highlight-line">http://localhost {</span>
|
||||
<span class="highlight-line"> handle /check {</span>
|
||||
<span class="highlight-line"> root * /var/www</span>
|
||||
<span class="highlight-line"> @deny not file /{query.domain}/</span>
|
||||
<span class="highlight-line"> respond @deny 404</span>
|
||||
<span class="highlight-line"> }</span>
|
||||
<span class="highlight-line">}</span>
|
||||
<span class="highlight-line"></span>
|
||||
<span class="highlight-line"># This automatically handles upgrading http:// requests with a redirect</span>
|
||||
<span class="highlight-line">https:// {</span>
|
||||
<span class="highlight-line"> tls {</span>
|
||||
<span class="highlight-line"> on_demand</span>
|
||||
<span class="highlight-line"> }</span>
|
||||
<span class="highlight-line"> root /var/www</span>
|
||||
<span class="highlight-line"> rewrite /{host}{uri}</span>
|
||||
<span class="highlight-line"> @forbidden {</span>
|
||||
<span class="highlight-line"> path /.*</span>
|
||||
<span class="highlight-line"> }</span>
|
||||
<span class="highlight-line"> respond @forbidden 404</span>
|
||||
<span class="highlight-line"> file_server</span>
|
||||
<span class="highlight-line">}</span>
|
||||
<span class="highlight-line"></span>
|
||||
<span class="highlight-line"># Refer to the Caddy docs for more information:</span>
|
||||
<span class="highlight-line"># https://caddyserver.com/docs/caddyfile</span>
|
||||
<span class="highlight-line"></span>
|
||||
<span class="highlight-line"># This config based on information at</span>
|
||||
<span class="highlight-line"># https://caddy.community/t/on-demand-tls-with-dynamic-content-paths/18140</span>
|
||||
<span class="highlight-line"># checked and corrected with `caddy validate`</span></code></pre>
|
||||
<p>I also took ownership of <code>/var/www</code> with <code>chown -R joshua:joshua /var/www</code> since the webhooks will run as my login account.</p>
|
||||
<h3 id="webhooks" tabindex="-1"><a class="header-anchor" href="https://joshua.seigler.net/posts/my-very-own-github-pages/#webhooks" aria-hidden="true"></a> Webhooks</h3>
|
||||
<p>In my home directory I defined two hook scripts:</p>
|
||||
<p><code>~/webhooks/update-pages.sh</code></p>
|
||||
<pre class="language-bash"><code class="language-bash"><span class="token shebang important">#!/bin/bash</span>
|
||||
<span class="token comment"># parameter 1 is repo name, parameter 2 is clone url</span>
|
||||
<span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"/"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">".."</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"*"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token keyword">if</span> <span class="token punctuation">[</span> <span class="token parameter variable">-d</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">then</span>
|
||||
<span class="token builtin class-name">cd</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span><span class="token punctuation">;</span>
|
||||
<span class="token function">git</span> fetch origin gh-pages<span class="token punctuation">;</span>
|
||||
<span class="token function">git</span> reset <span class="token parameter variable">--hard</span> origin/gh-pages<span class="token punctuation">;</span>
|
||||
<span class="token builtin class-name">exit</span><span class="token punctuation">;</span>
|
||||
<span class="token keyword">fi</span><span class="token punctuation">;</span>
|
||||
<span class="token function">git</span> clone <span class="token parameter variable">-b</span> gh-pages --single-branch <span class="token string">"<span class="token variable">$2</span>"</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">||</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
</code></pre>
|
||||
<pre class="language-bash"><code class="language-bash"><span class="highlight-line"><span class="token shebang important">#!/bin/bash</span></span>
|
||||
<span class="highlight-line"><span class="token comment"># parameter 1 is repo name, parameter 2 is clone url</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"/"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">".."</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"*"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token keyword">if</span> <span class="token punctuation">[</span> <span class="token parameter variable">-d</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">then</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">cd</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"> <span class="token function">git</span> fetch origin gh-pages<span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"> <span class="token function">git</span> reset <span class="token parameter variable">--hard</span> origin/gh-pages<span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">exit</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token keyword">fi</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token function">git</span> clone <span class="token parameter variable">-b</span> gh-pages --single-branch <span class="token string">"<span class="token variable">$2</span>"</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">||</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span></code></pre>
|
||||
<p><code>~/webhooks/remove-pages.sh</code></p>
|
||||
<pre class="language-bash"><code class="language-bash"><span class="token shebang important">#!/bin/bash</span>
|
||||
<span class="token comment"># parameter 1 is repo name</span>
|
||||
<span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"/"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">".."</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"*"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token punctuation">[</span> <span class="token parameter variable">-d</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span> <span class="token punctuation">]</span> <span class="token operator">||</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token builtin class-name">cd</span> <span class="token string">"/var/www"</span><span class="token punctuation">;</span>
|
||||
<span class="token function">rm</span> <span class="token parameter variable">-rf</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span><span class="token punctuation">;</span>
|
||||
</code></pre>
|
||||
<pre class="language-bash"><code class="language-bash"><span class="highlight-line"><span class="token shebang important">#!/bin/bash</span></span>
|
||||
<span class="highlight-line"><span class="token comment"># parameter 1 is repo name</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"/"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">".."</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"*"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span> <span class="token parameter variable">-d</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span> <span class="token punctuation">]</span> <span class="token operator">||</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token builtin class-name">cd</span> <span class="token string">"/var/www"</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token function">rm</span> <span class="token parameter variable">-rf</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span><span class="token punctuation">;</span></span></code></pre>
|
||||
<p>To trigger these hooks I am using <code>webhook</code> which is in the default Debian repository.</p>
|
||||
<p>Here are the hook definitions: one for creating/updating a site, and one for deleting. You will need to generate one or two secret values that the server can use to know that the webhook is authorized to run. I used linux command <code>uuidgen -r</code> to create mine. Save these values so you can enter them in Forgejo later.</p>
|
||||
<p>Also make sure to replace your execute-command lines with ones referencing your username and script paths.</p>
|
||||
<p><code>/etc/webhook.conf</code></p>
|
||||
<pre class="language-json"><code class="language-json"><span class="token punctuation">[</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"id"</span><span class="token operator">:</span> <span class="token string">"update-pages"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"execute-command"</span><span class="token operator">:</span> <span class="token string">"/usr/bin/sudo"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"pass-arguments-to-command"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">[</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"-u"</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"joshua"</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"/home/joshua/webhooks/update-pages.sh"</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"repository.name"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"repository.clone_url"</span> <span class="token punctuation">}</span>
|
||||
<span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"trigger-rule"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"and"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">[</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"match"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"payload-hmac-sha256"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"secret"</span><span class="token operator">:</span> <span class="token string">"(omitted)"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"parameter"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"header"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"X-Forgejo-Signature"</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"match"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"value"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"value"</span><span class="token operator">:</span> <span class="token string">"refs/heads/gh-pages"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"parameter"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"ref"</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">]</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"id"</span><span class="token operator">:</span> <span class="token string">"remove-pages"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"execute-command"</span><span class="token operator">:</span> <span class="token string">"/usr/bin/sudo"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"pass-arguments-to-command"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">[</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"-u"</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"joshua"</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"/home/joshua/webhooks/remove-pages.sh"</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"repository.name"</span> <span class="token punctuation">}</span>
|
||||
<span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"trigger-rule"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"and"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">[</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"match"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"payload-hmac-sha256"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"secret"</span><span class="token operator">:</span> <span class="token string">"(omitted)"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"parameter"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"header"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"X-Forgejo-Signature"</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">]</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">]</span>
|
||||
</code></pre>
|
||||
<pre class="language-json"><code class="language-json"><span class="highlight-line"><span class="token punctuation">[</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"id"</span><span class="token operator">:</span> <span class="token string">"update-pages"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"execute-command"</span><span class="token operator">:</span> <span class="token string">"/usr/bin/sudo"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"pass-arguments-to-command"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">[</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"-u"</span><span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"joshua"</span><span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"/home/joshua/webhooks/update-pages.sh"</span><span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"repository.name"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"repository.clone_url"</span> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">]</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"trigger-rule"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"and"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">[</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"match"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"payload-hmac-sha256"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"secret"</span><span class="token operator">:</span> <span class="token string">"(omitted)"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"parameter"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"header"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"X-Forgejo-Signature"</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"match"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"value"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"value"</span><span class="token operator">:</span> <span class="token string">"refs/heads/gh-pages"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"parameter"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"ref"</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">]</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"id"</span><span class="token operator">:</span> <span class="token string">"remove-pages"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"execute-command"</span><span class="token operator">:</span> <span class="token string">"/usr/bin/sudo"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"pass-arguments-to-command"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">[</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"-u"</span><span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"joshua"</span><span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"/home/joshua/webhooks/remove-pages.sh"</span><span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"repository.name"</span> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">]</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"trigger-rule"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"and"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">[</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"match"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"payload-hmac-sha256"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"secret"</span><span class="token operator">:</span> <span class="token string">"(omitted)"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"parameter"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"header"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"X-Forgejo-Signature"</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">]</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">]</span></span></code></pre>
|
||||
<h3 id="forgejo" tabindex="-1"><a class="header-anchor" href="https://joshua.seigler.net/posts/my-very-own-github-pages/#forgejo" aria-hidden="true"></a> Forgejo</h3>
|
||||
<p>Forgejo supports running webhooks conditionally triggered by certain conditions.<br>
|
||||
Under my main user settings I set up each webhook:</p>
|
||||
|
|
|
@ -34,154 +34,150 @@
|
|||
<p>I usually use nginx, but I wanted to give Caddy a shot, and it has been a great experience. I installed Caddy using the <a href="https://caddyserver.com/docs/install" target="_blank" rel="noopener">official instructions</a>.<br>
|
||||
Here is the Caddyfile I made—you will need to change the domain names and the email. Email could be removed, but it is there so that SSL certificate issuers can contact you if there is a problem with your certificates.</p>
|
||||
<p><code>/etc/caddy/Caddyfile</code></p>
|
||||
<pre class="language-caddy"><code class="language-caddy"># Global options block
|
||||
{
|
||||
email you@example.com # &lt;&lt;&lt;&lt; CHANGE THIS &lt;&lt;&lt;&lt;
|
||||
on_demand_tls {
|
||||
ask http://localhost/check
|
||||
}
|
||||
}
|
||||
|
||||
# Webhooks
|
||||
https://webhooks.subdomain.here.tld { &lt;&lt;&lt;&lt; CHANGE THIS &lt;&lt;&lt;&lt;
|
||||
reverse_proxy localhost:9000
|
||||
}
|
||||
|
||||
# Filter for which SSL certs we will create. Prevents abuse.
|
||||
http://localhost {
|
||||
handle /check {
|
||||
root * /var/www
|
||||
@deny not file /{query.domain}/
|
||||
respond @deny 404
|
||||
}
|
||||
}
|
||||
|
||||
# This automatically handles upgrading http:// requests with a redirect
|
||||
https:// {
|
||||
tls {
|
||||
on_demand
|
||||
}
|
||||
root /var/www
|
||||
rewrite /{host}{uri}
|
||||
@forbidden {
|
||||
path /.*
|
||||
}
|
||||
respond @forbidden 404
|
||||
file_server
|
||||
}
|
||||
|
||||
# Refer to the Caddy docs for more information:
|
||||
# https://caddyserver.com/docs/caddyfile
|
||||
|
||||
# This config based on information at
|
||||
# https://caddy.community/t/on-demand-tls-with-dynamic-content-paths/18140
|
||||
# checked and corrected with `caddy validate`
|
||||
</code></pre>
|
||||
<pre class="language-caddy"><code class="language-caddy"><span class="highlight-line"># Global options block</span>
|
||||
<span class="highlight-line">{</span>
|
||||
<span class="highlight-line"> email you@example.com #### CHANGE THIS ####</span>
|
||||
<span class="highlight-line"> on_demand_tls {</span>
|
||||
<span class="highlight-line"> ask http://localhost/check</span>
|
||||
<span class="highlight-line"> }</span>
|
||||
<span class="highlight-line">}</span>
|
||||
<span class="highlight-line"></span>
|
||||
<span class="highlight-line"># Webhooks</span>
|
||||
<span class="highlight-line">https://webhooks.subdomain.here.tld { #### CHANGE THIS ####</span>
|
||||
<span class="highlight-line"> reverse_proxy localhost:9000</span>
|
||||
<span class="highlight-line">}</span>
|
||||
<span class="highlight-line"></span>
|
||||
<span class="highlight-line"># Filter for which SSL certs we will create. Prevents abuse.</span>
|
||||
<span class="highlight-line">http://localhost {</span>
|
||||
<span class="highlight-line"> handle /check {</span>
|
||||
<span class="highlight-line"> root * /var/www</span>
|
||||
<span class="highlight-line"> @deny not file /{query.domain}/</span>
|
||||
<span class="highlight-line"> respond @deny 404</span>
|
||||
<span class="highlight-line"> }</span>
|
||||
<span class="highlight-line">}</span>
|
||||
<span class="highlight-line"></span>
|
||||
<span class="highlight-line"># This automatically handles upgrading http:// requests with a redirect</span>
|
||||
<span class="highlight-line">https:// {</span>
|
||||
<span class="highlight-line"> tls {</span>
|
||||
<span class="highlight-line"> on_demand</span>
|
||||
<span class="highlight-line"> }</span>
|
||||
<span class="highlight-line"> root /var/www</span>
|
||||
<span class="highlight-line"> rewrite /{host}{uri}</span>
|
||||
<span class="highlight-line"> @forbidden {</span>
|
||||
<span class="highlight-line"> path /.*</span>
|
||||
<span class="highlight-line"> }</span>
|
||||
<span class="highlight-line"> respond @forbidden 404</span>
|
||||
<span class="highlight-line"> file_server</span>
|
||||
<span class="highlight-line">}</span>
|
||||
<span class="highlight-line"></span>
|
||||
<span class="highlight-line"># Refer to the Caddy docs for more information:</span>
|
||||
<span class="highlight-line"># https://caddyserver.com/docs/caddyfile</span>
|
||||
<span class="highlight-line"></span>
|
||||
<span class="highlight-line"># This config based on information at</span>
|
||||
<span class="highlight-line"># https://caddy.community/t/on-demand-tls-with-dynamic-content-paths/18140</span>
|
||||
<span class="highlight-line"># checked and corrected with `caddy validate`</span></code></pre>
|
||||
<p>I also took ownership of <code>/var/www</code> with <code>chown -R joshua:joshua /var/www</code> since the webhooks will run as my login account.</p>
|
||||
<h3 id="webhooks" tabindex="-1"><a class="header-anchor" href="https://joshua.seigler.net/posts/my-very-own-github-pages/#webhooks" aria-hidden="true"></a> Webhooks</h3>
|
||||
<p>In my home directory I defined two hook scripts:</p>
|
||||
<p><code>~/webhooks/update-pages.sh</code></p>
|
||||
<pre class="language-bash"><code class="language-bash"><span class="token shebang important">#!/bin/bash</span>
|
||||
<span class="token comment"># parameter 1 is repo name, parameter 2 is clone url</span>
|
||||
<span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"/"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">".."</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"*"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token keyword">if</span> <span class="token punctuation">[</span> <span class="token parameter variable">-d</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">then</span>
|
||||
<span class="token builtin class-name">cd</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span><span class="token punctuation">;</span>
|
||||
<span class="token function">git</span> fetch origin gh-pages<span class="token punctuation">;</span>
|
||||
<span class="token function">git</span> reset <span class="token parameter variable">--hard</span> origin/gh-pages<span class="token punctuation">;</span>
|
||||
<span class="token builtin class-name">exit</span><span class="token punctuation">;</span>
|
||||
<span class="token keyword">fi</span><span class="token punctuation">;</span>
|
||||
<span class="token function">git</span> clone <span class="token parameter variable">-b</span> gh-pages --single-branch <span class="token string">"<span class="token variable">$2</span>"</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">||</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
</code></pre>
|
||||
<pre class="language-bash"><code class="language-bash"><span class="highlight-line"><span class="token shebang important">#!/bin/bash</span></span>
|
||||
<span class="highlight-line"><span class="token comment"># parameter 1 is repo name, parameter 2 is clone url</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"/"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">".."</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"*"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token keyword">if</span> <span class="token punctuation">[</span> <span class="token parameter variable">-d</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">then</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">cd</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"> <span class="token function">git</span> fetch origin gh-pages<span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"> <span class="token function">git</span> reset <span class="token parameter variable">--hard</span> origin/gh-pages<span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">exit</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token keyword">fi</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token function">git</span> clone <span class="token parameter variable">-b</span> gh-pages --single-branch <span class="token string">"<span class="token variable">$2</span>"</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">||</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span></code></pre>
|
||||
<p><code>~/webhooks/remove-pages.sh</code></p>
|
||||
<pre class="language-bash"><code class="language-bash"><span class="token shebang important">#!/bin/bash</span>
|
||||
<span class="token comment"># parameter 1 is repo name</span>
|
||||
<span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"/"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">".."</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"*"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token punctuation">[</span> <span class="token parameter variable">-d</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span> <span class="token punctuation">]</span> <span class="token operator">||</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token builtin class-name">cd</span> <span class="token string">"/var/www"</span><span class="token punctuation">;</span>
|
||||
<span class="token function">rm</span> <span class="token parameter variable">-rf</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span><span class="token punctuation">;</span>
|
||||
</code></pre>
|
||||
<pre class="language-bash"><code class="language-bash"><span class="highlight-line"><span class="token shebang important">#!/bin/bash</span></span>
|
||||
<span class="highlight-line"><span class="token comment"># parameter 1 is repo name</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"/"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">".."</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"*"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span> <span class="token parameter variable">-d</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span> <span class="token punctuation">]</span> <span class="token operator">||</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token builtin class-name">cd</span> <span class="token string">"/var/www"</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token function">rm</span> <span class="token parameter variable">-rf</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span><span class="token punctuation">;</span></span></code></pre>
|
||||
<p>To trigger these hooks I am using <code>webhook</code> which is in the default Debian repository.</p>
|
||||
<p>Here are the hook definitions: one for creating/updating a site, and one for deleting. You will need to generate one or two secret values that the server can use to know that the webhook is authorized to run. I used linux command <code>uuidgen -r</code> to create mine. Save these values so you can enter them in Forgejo later.</p>
|
||||
<p>Also make sure to replace your execute-command lines with ones referencing your username and script paths.</p>
|
||||
<p><code>/etc/webhook.conf</code></p>
|
||||
<pre class="language-json"><code class="language-json"><span class="token punctuation">[</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"id"</span><span class="token operator">:</span> <span class="token string">"update-pages"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"execute-command"</span><span class="token operator">:</span> <span class="token string">"/usr/bin/sudo"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"pass-arguments-to-command"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">[</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"-u"</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"joshua"</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"/home/joshua/webhooks/update-pages.sh"</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"repository.name"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"repository.clone_url"</span> <span class="token punctuation">}</span>
|
||||
<span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"trigger-rule"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"and"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">[</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"match"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"payload-hmac-sha256"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"secret"</span><span class="token operator">:</span> <span class="token string">"(omitted)"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"parameter"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"header"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"X-Forgejo-Signature"</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"match"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"value"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"value"</span><span class="token operator">:</span> <span class="token string">"refs/heads/gh-pages"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"parameter"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"ref"</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">]</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"id"</span><span class="token operator">:</span> <span class="token string">"remove-pages"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"execute-command"</span><span class="token operator">:</span> <span class="token string">"/usr/bin/sudo"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"pass-arguments-to-command"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">[</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"-u"</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"joshua"</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"/home/joshua/webhooks/remove-pages.sh"</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"repository.name"</span> <span class="token punctuation">}</span>
|
||||
<span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"trigger-rule"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"and"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">[</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"match"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"payload-hmac-sha256"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"secret"</span><span class="token operator">:</span> <span class="token string">"(omitted)"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"parameter"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"header"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"X-Forgejo-Signature"</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">]</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">]</span>
|
||||
</code></pre>
|
||||
<pre class="language-json"><code class="language-json"><span class="highlight-line"><span class="token punctuation">[</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"id"</span><span class="token operator">:</span> <span class="token string">"update-pages"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"execute-command"</span><span class="token operator">:</span> <span class="token string">"/usr/bin/sudo"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"pass-arguments-to-command"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">[</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"-u"</span><span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"joshua"</span><span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"/home/joshua/webhooks/update-pages.sh"</span><span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"repository.name"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"repository.clone_url"</span> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">]</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"trigger-rule"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"and"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">[</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"match"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"payload-hmac-sha256"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"secret"</span><span class="token operator">:</span> <span class="token string">"(omitted)"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"parameter"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"header"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"X-Forgejo-Signature"</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"match"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"value"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"value"</span><span class="token operator">:</span> <span class="token string">"refs/heads/gh-pages"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"parameter"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"ref"</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">]</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"id"</span><span class="token operator">:</span> <span class="token string">"remove-pages"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"execute-command"</span><span class="token operator">:</span> <span class="token string">"/usr/bin/sudo"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"pass-arguments-to-command"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">[</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"-u"</span><span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"joshua"</span><span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"/home/joshua/webhooks/remove-pages.sh"</span><span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"repository.name"</span> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">]</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"trigger-rule"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"and"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">[</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"match"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"payload-hmac-sha256"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"secret"</span><span class="token operator">:</span> <span class="token string">"(omitted)"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"parameter"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"header"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"X-Forgejo-Signature"</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">]</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">]</span></span></code></pre>
|
||||
<h3 id="forgejo" tabindex="-1"><a class="header-anchor" href="https://joshua.seigler.net/posts/my-very-own-github-pages/#forgejo" aria-hidden="true"></a> Forgejo</h3>
|
||||
<p>Forgejo supports running webhooks conditionally triggered by certain conditions.<br>
|
||||
Under my main user settings I set up each webhook:</p>
|
||||
|
|
|
@ -25,29 +25,28 @@
|
|||
</ol>
|
||||
<p>Here is the script:</p>
|
||||
<p><code>process-audio.sh</code></p>
|
||||
<pre class="language-bash"><code class="language-bash"><span class="token shebang important">#!/bin/bash</span>
|
||||
<span class="token keyword">if</span> <span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$#</span>"</span> <span class="token operator">==</span> <span class="token string">"0"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">then</span>
|
||||
<span class="token builtin class-name">echo</span> <span class="token string">"Error: no arguments provided."</span>
|
||||
<span class="token builtin class-name">echo</span> <span class="token string">"Usage: <span class="token variable">$0</span> file1 file2 file3 ..."</span>
|
||||
<span class="token builtin class-name">echo</span> <span class="token string">"or <span class="token variable">$0</span> *.ext"</span>
|
||||
<span class="token builtin class-name">exit</span> <span class="token number">1</span>
|
||||
<span class="token keyword">fi</span>
|
||||
|
||||
<span class="token builtin class-name">trap</span> <span class="token string">"exit"</span> INT
|
||||
|
||||
<span class="token keyword">while</span> <span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$#</span>"</span> <span class="token operator">!=</span> <span class="token string">"0"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">do</span>
|
||||
<span class="token assign-left variable">path</span><span class="token operator">=</span><span class="token string">"<span class="token variable">${1<span class="token operator">%</span><span class="token operator">/</span>*}</span>"</span>
|
||||
<span class="token assign-left variable">file</span><span class="token operator">=</span><span class="token string">"<span class="token variable">${1<span class="token operator">##</span>*<span class="token operator">/</span>}</span>"</span>
|
||||
<span class="token assign-left variable">outfile</span><span class="token operator">=</span><span class="token string">"./normalized--<span class="token variable">$file</span>"</span>
|
||||
<span class="token keyword">if</span> <span class="token punctuation">[</span> <span class="token operator">!</span> <span class="token parameter variable">-f</span> <span class="token string">"<span class="token variable">$outfile</span>"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">then</span>
|
||||
<span class="token builtin class-name">echo</span> <span class="token string">"Processing <span class="token variable">$1</span>"</span>
|
||||
ffmpeg <span class="token parameter variable">-i</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token parameter variable">-v</span> warning <span class="token parameter variable">-ac</span> <span class="token number">1</span> <span class="token parameter variable">-af</span> <span class="token string">"compand=attacks=0.3:decays=0.3:delay=0.15:points=-80/-300|-45/-25|-27/-15|0/-12|20/-12,anlmdn=s=10,highpass=f=500"</span> <span class="token parameter variable">-threads</span> <span class="token number">4</span> <span class="token string">"<span class="token variable">$outfile</span>"</span>
|
||||
<span class="token keyword">else</span>
|
||||
<span class="token builtin class-name">echo</span> <span class="token string">"Skipping <span class="token variable">$1</span>, already processed."</span>
|
||||
<span class="token keyword">fi</span>
|
||||
<span class="token builtin class-name">shift</span>
|
||||
<span class="token keyword">done</span>
|
||||
</code></pre>
|
||||
<pre class="language-bash"><code class="language-bash"><span class="highlight-line"><span class="token shebang important">#!/bin/bash</span></span>
|
||||
<span class="highlight-line"><span class="token keyword">if</span> <span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$#</span>"</span> <span class="token operator">==</span> <span class="token string">"0"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">then</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">echo</span> <span class="token string">"Error: no arguments provided."</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">echo</span> <span class="token string">"Usage: <span class="token variable">$0</span> file1 file2 file3 ..."</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">echo</span> <span class="token string">"or <span class="token variable">$0</span> *.ext"</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">exit</span> <span class="token number">1</span></span>
|
||||
<span class="highlight-line"><span class="token keyword">fi</span></span>
|
||||
<span class="highlight-line"></span>
|
||||
<span class="highlight-line"><span class="token builtin class-name">trap</span> <span class="token string">"exit"</span> INT</span>
|
||||
<span class="highlight-line"></span>
|
||||
<span class="highlight-line"><span class="token keyword">while</span> <span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$#</span>"</span> <span class="token operator">!=</span> <span class="token string">"0"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">do</span></span>
|
||||
<span class="highlight-line"> <span class="token assign-left variable">path</span><span class="token operator">=</span><span class="token string">"<span class="token variable">${1<span class="token operator">%</span><span class="token operator">/</span>*}</span>"</span></span>
|
||||
<span class="highlight-line"> <span class="token assign-left variable">file</span><span class="token operator">=</span><span class="token string">"<span class="token variable">${1<span class="token operator">##</span>*<span class="token operator">/</span>}</span>"</span></span>
|
||||
<span class="highlight-line"> <span class="token assign-left variable">outfile</span><span class="token operator">=</span><span class="token string">"./normalized--<span class="token variable">$file</span>"</span></span>
|
||||
<span class="highlight-line"> <span class="token keyword">if</span> <span class="token punctuation">[</span> <span class="token operator">!</span> <span class="token parameter variable">-f</span> <span class="token string">"<span class="token variable">$outfile</span>"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">then</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">echo</span> <span class="token string">"Processing <span class="token variable">$1</span>"</span></span>
|
||||
<span class="highlight-line"> ffmpeg <span class="token parameter variable">-i</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token parameter variable">-v</span> warning <span class="token parameter variable">-ac</span> <span class="token number">1</span> <span class="token parameter variable">-af</span> <span class="token string">"compand=attacks=0.3:decays=0.3:delay=0.15:points=-80/-300|-45/-25|-27/-15|0/-12|20/-12,anlmdn=s=10,highpass=f=500"</span> <span class="token parameter variable">-threads</span> <span class="token number">4</span> <span class="token string">"<span class="token variable">$outfile</span>"</span></span>
|
||||
<span class="highlight-line"> <span class="token keyword">else</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">echo</span> <span class="token string">"Skipping <span class="token variable">$1</span>, already processed."</span></span>
|
||||
<span class="highlight-line"> <span class="token keyword">fi</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">shift</span></span>
|
||||
<span class="highlight-line"><span class="token keyword">done</span></span></code></pre>
|
||||
<p>If this is useful to you please leave a comment or send an email, I would love to hear about it.</p>
|
||||
</content>
|
||||
</entry>
|
||||
|
@ -75,154 +74,150 @@
|
|||
<p>I usually use nginx, but I wanted to give Caddy a shot, and it has been a great experience. I installed Caddy using the <a href="https://caddyserver.com/docs/install" target="_blank" rel="noopener">official instructions</a>.<br>
|
||||
Here is the Caddyfile I made—you will need to change the domain names and the email. Email could be removed, but it is there so that SSL certificate issuers can contact you if there is a problem with your certificates.</p>
|
||||
<p><code>/etc/caddy/Caddyfile</code></p>
|
||||
<pre class="language-caddy"><code class="language-caddy"># Global options block
|
||||
{
|
||||
email you@example.com # &lt;&lt;&lt;&lt; CHANGE THIS &lt;&lt;&lt;&lt;
|
||||
on_demand_tls {
|
||||
ask http://localhost/check
|
||||
}
|
||||
}
|
||||
|
||||
# Webhooks
|
||||
https://webhooks.subdomain.here.tld { &lt;&lt;&lt;&lt; CHANGE THIS &lt;&lt;&lt;&lt;
|
||||
reverse_proxy localhost:9000
|
||||
}
|
||||
|
||||
# Filter for which SSL certs we will create. Prevents abuse.
|
||||
http://localhost {
|
||||
handle /check {
|
||||
root * /var/www
|
||||
@deny not file /{query.domain}/
|
||||
respond @deny 404
|
||||
}
|
||||
}
|
||||
|
||||
# This automatically handles upgrading http:// requests with a redirect
|
||||
https:// {
|
||||
tls {
|
||||
on_demand
|
||||
}
|
||||
root /var/www
|
||||
rewrite /{host}{uri}
|
||||
@forbidden {
|
||||
path /.*
|
||||
}
|
||||
respond @forbidden 404
|
||||
file_server
|
||||
}
|
||||
|
||||
# Refer to the Caddy docs for more information:
|
||||
# https://caddyserver.com/docs/caddyfile
|
||||
|
||||
# This config based on information at
|
||||
# https://caddy.community/t/on-demand-tls-with-dynamic-content-paths/18140
|
||||
# checked and corrected with `caddy validate`
|
||||
</code></pre>
|
||||
<pre class="language-caddy"><code class="language-caddy"><span class="highlight-line"># Global options block</span>
|
||||
<span class="highlight-line">{</span>
|
||||
<span class="highlight-line"> email you@example.com #### CHANGE THIS ####</span>
|
||||
<span class="highlight-line"> on_demand_tls {</span>
|
||||
<span class="highlight-line"> ask http://localhost/check</span>
|
||||
<span class="highlight-line"> }</span>
|
||||
<span class="highlight-line">}</span>
|
||||
<span class="highlight-line"></span>
|
||||
<span class="highlight-line"># Webhooks</span>
|
||||
<span class="highlight-line">https://webhooks.subdomain.here.tld { #### CHANGE THIS ####</span>
|
||||
<span class="highlight-line"> reverse_proxy localhost:9000</span>
|
||||
<span class="highlight-line">}</span>
|
||||
<span class="highlight-line"></span>
|
||||
<span class="highlight-line"># Filter for which SSL certs we will create. Prevents abuse.</span>
|
||||
<span class="highlight-line">http://localhost {</span>
|
||||
<span class="highlight-line"> handle /check {</span>
|
||||
<span class="highlight-line"> root * /var/www</span>
|
||||
<span class="highlight-line"> @deny not file /{query.domain}/</span>
|
||||
<span class="highlight-line"> respond @deny 404</span>
|
||||
<span class="highlight-line"> }</span>
|
||||
<span class="highlight-line">}</span>
|
||||
<span class="highlight-line"></span>
|
||||
<span class="highlight-line"># This automatically handles upgrading http:// requests with a redirect</span>
|
||||
<span class="highlight-line">https:// {</span>
|
||||
<span class="highlight-line"> tls {</span>
|
||||
<span class="highlight-line"> on_demand</span>
|
||||
<span class="highlight-line"> }</span>
|
||||
<span class="highlight-line"> root /var/www</span>
|
||||
<span class="highlight-line"> rewrite /{host}{uri}</span>
|
||||
<span class="highlight-line"> @forbidden {</span>
|
||||
<span class="highlight-line"> path /.*</span>
|
||||
<span class="highlight-line"> }</span>
|
||||
<span class="highlight-line"> respond @forbidden 404</span>
|
||||
<span class="highlight-line"> file_server</span>
|
||||
<span class="highlight-line">}</span>
|
||||
<span class="highlight-line"></span>
|
||||
<span class="highlight-line"># Refer to the Caddy docs for more information:</span>
|
||||
<span class="highlight-line"># https://caddyserver.com/docs/caddyfile</span>
|
||||
<span class="highlight-line"></span>
|
||||
<span class="highlight-line"># This config based on information at</span>
|
||||
<span class="highlight-line"># https://caddy.community/t/on-demand-tls-with-dynamic-content-paths/18140</span>
|
||||
<span class="highlight-line"># checked and corrected with `caddy validate`</span></code></pre>
|
||||
<p>I also took ownership of <code>/var/www</code> with <code>chown -R joshua:joshua /var/www</code> since the webhooks will run as my login account.</p>
|
||||
<h3 id="webhooks" tabindex="-1"><a class="header-anchor" href="https://joshua.seigler.net/posts/my-very-own-github-pages/#webhooks" aria-hidden="true"></a> Webhooks</h3>
|
||||
<p>In my home directory I defined two hook scripts:</p>
|
||||
<p><code>~/webhooks/update-pages.sh</code></p>
|
||||
<pre class="language-bash"><code class="language-bash"><span class="token shebang important">#!/bin/bash</span>
|
||||
<span class="token comment"># parameter 1 is repo name, parameter 2 is clone url</span>
|
||||
<span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"/"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">".."</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"*"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token keyword">if</span> <span class="token punctuation">[</span> <span class="token parameter variable">-d</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">then</span>
|
||||
<span class="token builtin class-name">cd</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span><span class="token punctuation">;</span>
|
||||
<span class="token function">git</span> fetch origin gh-pages<span class="token punctuation">;</span>
|
||||
<span class="token function">git</span> reset <span class="token parameter variable">--hard</span> origin/gh-pages<span class="token punctuation">;</span>
|
||||
<span class="token builtin class-name">exit</span><span class="token punctuation">;</span>
|
||||
<span class="token keyword">fi</span><span class="token punctuation">;</span>
|
||||
<span class="token function">git</span> clone <span class="token parameter variable">-b</span> gh-pages --single-branch <span class="token string">"<span class="token variable">$2</span>"</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">||</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
</code></pre>
|
||||
<pre class="language-bash"><code class="language-bash"><span class="highlight-line"><span class="token shebang important">#!/bin/bash</span></span>
|
||||
<span class="highlight-line"><span class="token comment"># parameter 1 is repo name, parameter 2 is clone url</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"/"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">".."</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"*"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token keyword">if</span> <span class="token punctuation">[</span> <span class="token parameter variable">-d</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span> <span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token keyword">then</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">cd</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"> <span class="token function">git</span> fetch origin gh-pages<span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"> <span class="token function">git</span> reset <span class="token parameter variable">--hard</span> origin/gh-pages<span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"> <span class="token builtin class-name">exit</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token keyword">fi</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token function">git</span> clone <span class="token parameter variable">-b</span> gh-pages --single-branch <span class="token string">"<span class="token variable">$2</span>"</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">||</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span></code></pre>
|
||||
<p><code>~/webhooks/remove-pages.sh</code></p>
|
||||
<pre class="language-bash"><code class="language-bash"><span class="token shebang important">#!/bin/bash</span>
|
||||
<span class="token comment"># parameter 1 is repo name</span>
|
||||
<span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"/"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">".."</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"*"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token punctuation">[</span> <span class="token parameter variable">-d</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span> <span class="token punctuation">]</span> <span class="token operator">||</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span>
|
||||
<span class="token builtin class-name">cd</span> <span class="token string">"/var/www"</span><span class="token punctuation">;</span>
|
||||
<span class="token function">rm</span> <span class="token parameter variable">-rf</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span><span class="token punctuation">;</span>
|
||||
</code></pre>
|
||||
<pre class="language-bash"><code class="language-bash"><span class="highlight-line"><span class="token shebang important">#!/bin/bash</span></span>
|
||||
<span class="highlight-line"><span class="token comment"># parameter 1 is repo name</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"/"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">".."</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span><span class="token punctuation">[</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token operator">==</span> *<span class="token string">"*"</span>* <span class="token punctuation">]</span><span class="token punctuation">]</span> <span class="token operator">&amp;&amp;</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">[</span> <span class="token parameter variable">-d</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span> <span class="token punctuation">]</span> <span class="token operator">||</span> <span class="token builtin class-name">exit</span> <span class="token number">1</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token builtin class-name">cd</span> <span class="token string">"/var/www"</span><span class="token punctuation">;</span></span>
|
||||
<span class="highlight-line"><span class="token function">rm</span> <span class="token parameter variable">-rf</span> <span class="token string">"/var/www/<span class="token variable">$1</span>"</span><span class="token punctuation">;</span></span></code></pre>
|
||||
<p>To trigger these hooks I am using <code>webhook</code> which is in the default Debian repository.</p>
|
||||
<p>Here are the hook definitions: one for creating/updating a site, and one for deleting. You will need to generate one or two secret values that the server can use to know that the webhook is authorized to run. I used linux command <code>uuidgen -r</code> to create mine. Save these values so you can enter them in Forgejo later.</p>
|
||||
<p>Also make sure to replace your execute-command lines with ones referencing your username and script paths.</p>
|
||||
<p><code>/etc/webhook.conf</code></p>
|
||||
<pre class="language-json"><code class="language-json"><span class="token punctuation">[</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"id"</span><span class="token operator">:</span> <span class="token string">"update-pages"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"execute-command"</span><span class="token operator">:</span> <span class="token string">"/usr/bin/sudo"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"pass-arguments-to-command"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">[</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"-u"</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"joshua"</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"/home/joshua/webhooks/update-pages.sh"</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"repository.name"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"repository.clone_url"</span> <span class="token punctuation">}</span>
|
||||
<span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"trigger-rule"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"and"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">[</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"match"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"payload-hmac-sha256"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"secret"</span><span class="token operator">:</span> <span class="token string">"(omitted)"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"parameter"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"header"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"X-Forgejo-Signature"</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"match"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"value"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"value"</span><span class="token operator">:</span> <span class="token string">"refs/heads/gh-pages"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"parameter"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"ref"</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">]</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"id"</span><span class="token operator">:</span> <span class="token string">"remove-pages"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"execute-command"</span><span class="token operator">:</span> <span class="token string">"/usr/bin/sudo"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"pass-arguments-to-command"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">[</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"-u"</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"joshua"</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"/home/joshua/webhooks/remove-pages.sh"</span><span class="token punctuation">}</span><span class="token punctuation">,</span>
|
||||
<span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"repository.name"</span> <span class="token punctuation">}</span>
|
||||
<span class="token punctuation">]</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"trigger-rule"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"and"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">[</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"match"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"payload-hmac-sha256"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"secret"</span><span class="token operator">:</span> <span class="token string">"(omitted)"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"parameter"</span><span class="token operator">:</span>
|
||||
<span class="token punctuation">{</span>
|
||||
<span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"header"</span><span class="token punctuation">,</span>
|
||||
<span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"X-Forgejo-Signature"</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">]</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">}</span>
|
||||
<span class="token punctuation">]</span>
|
||||
</code></pre>
|
||||
<pre class="language-json"><code class="language-json"><span class="highlight-line"><span class="token punctuation">[</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"id"</span><span class="token operator">:</span> <span class="token string">"update-pages"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"execute-command"</span><span class="token operator">:</span> <span class="token string">"/usr/bin/sudo"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"pass-arguments-to-command"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">[</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"-u"</span><span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"joshua"</span><span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"/home/joshua/webhooks/update-pages.sh"</span><span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"repository.name"</span> <span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"repository.clone_url"</span> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">]</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"trigger-rule"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"and"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">[</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"match"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"payload-hmac-sha256"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"secret"</span><span class="token operator">:</span> <span class="token string">"(omitted)"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"parameter"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"header"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"X-Forgejo-Signature"</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"match"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"value"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"value"</span><span class="token operator">:</span> <span class="token string">"refs/heads/gh-pages"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"parameter"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"ref"</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">]</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"id"</span><span class="token operator">:</span> <span class="token string">"remove-pages"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"execute-command"</span><span class="token operator">:</span> <span class="token string">"/usr/bin/sudo"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"pass-arguments-to-command"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">[</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"-u"</span><span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"joshua"</span><span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"string"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"/home/joshua/webhooks/remove-pages.sh"</span><span class="token punctuation">}</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"payload"</span><span class="token punctuation">,</span> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"repository.name"</span> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">]</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"trigger-rule"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"and"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">[</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"match"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"type"</span><span class="token operator">:</span> <span class="token string">"payload-hmac-sha256"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"secret"</span><span class="token operator">:</span> <span class="token string">"(omitted)"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"parameter"</span><span class="token operator">:</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">{</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"source"</span><span class="token operator">:</span> <span class="token string">"header"</span><span class="token punctuation">,</span></span>
|
||||
<span class="highlight-line"> <span class="token property">"name"</span><span class="token operator">:</span> <span class="token string">"X-Forgejo-Signature"</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">]</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"> <span class="token punctuation">}</span></span>
|
||||
<span class="highlight-line"><span class="token punctuation">]</span></span></code></pre>
|
||||
<h3 id="forgejo" tabindex="-1"><a class="header-anchor" href="https://joshua.seigler.net/posts/my-very-own-github-pages/#forgejo" aria-hidden="true"></a> Forgejo</h3>
|
||||
<p>Forgejo supports running webhooks conditionally triggered by certain conditions.<br>
|
||||
Under my main user settings I set up each webhook:</p>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue