<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Anim Mouse</title>
    <description>The latest articles on DEV Community by Anim Mouse (@animmouse).</description>
    <link>https://dev.to/animmouse</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F761427%2F4cf5ba1f-5a42-42c0-bf19-639408c2c197.png</url>
      <title>DEV Community: Anim Mouse</title>
      <link>https://dev.to/animmouse</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/animmouse"/>
    <language>en</language>
    <item>
      <title>Expose your web server on GitHub Actions to the internet using Cloudflare Tunnel</title>
      <dc:creator>Anim Mouse</dc:creator>
      <pubDate>Thu, 09 Dec 2021 04:45:06 +0000</pubDate>
      <link>https://dev.to/animmouse/expose-your-web-server-on-github-actions-to-the-internet-using-cloudflare-tunnel-ego</link>
      <guid>https://dev.to/animmouse/expose-your-web-server-on-github-actions-to-the-internet-using-cloudflare-tunnel-ego</guid>
      <description>&lt;h3&gt;
  
  
  My Workflow
&lt;/h3&gt;

&lt;p&gt;GitHub Actions runners are firewalled from the internet, so you can't test your web server outside of the runners. What if you need to test your web server on GitHub Actions interactively?&lt;/p&gt;

&lt;p&gt;This GitHub Action installs the &lt;code&gt;cloudflared&lt;/code&gt; Cloudflare Tunnel client and allows you to tunnel connections so that you can now access your server inside the GitHub Actions runners to the internet.&lt;/p&gt;

&lt;p&gt;This is an example workflow that tunnels the Python Simple HTTP server so that it is accessible over the internet.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name: Test setup-cloudflared
on:
  push:
    paths:
      - .github/workflows/test.yml

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Setup cloudflared using setup-cloudflared
        uses: AnimMouse/setup-cloudflared@v1
        with:
          cloudflare_tunnel_certificate: ${{ secrets.CLOUDFLARE_TUNNEL_CERTIFICATE }}
          cloudflare_tunnel_credential: ${{ secrets.CLOUDFLARE_TUNNEL_CREDENTIAL }}
          cloudflare_tunnel_configuration: ${{ secrets.CLOUDFLARE_TUNNEL_CONFIGURATION }}
          cloudflare_tunnel_id: ${{ secrets.CLOUDFLARE_TUNNEL_ID }}

      - name: Test cloudflared installed by setup-cloudflared using Python HTTP server for 5 minutes
        run: timeout 5m python -m http.server 8000 || true

      - name: Shutdown cloudflared using setup-cloudflared/shutdown
        if: always()
        uses: AnimMouse/setup-cloudflared/shutdown@v1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Maintainer Must-Haves&lt;/p&gt;
&lt;h3&gt;
  
  
  Yaml File or Link to Code
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name: Setup cloudflared
description: Setup/Install Cloudflare Tunnel client for GitHub Actions
branding:
  icon: cloud
  color: orange
inputs:
  cloudflare_tunnel_certificate:
    description: Cloudflare Tunnel Certificate (cert.pem)
    required: true
  cloudflare_tunnel_credential:
    description: Cloudflare Tunnel Credential encoded in base64 (deadbeef-1234-4321-abcd-123456789ab.json)
    required: true
  cloudflare_tunnel_configuration:
    description: Cloudflare Tunnel Configuration encoded in base64 (config.yml)
    required: true
  cloudflare_tunnel_id:
    description: Cloudflare Tunnel ID (deadbeef-1234-4321-abcd-123456789ab)
    required: true
  autostart:
    description: Autostart Cloudflare Tunnel
    required: false
    default: true

runs:
  using: composite
  steps:
    - name: Download cloudflared for Linux
      shell: bash
      working-directory: ${{ runner.temp }}
      run: aria2c -x 16 "https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64"

    - name: Install cloudflared
      shell: bash
      working-directory: ${{ runner.temp }}
      run: |
        chmod +x cloudflared-linux-amd64
        mv cloudflared-linux-amd64 /usr/local/bin/cloudflared

    - name: Login to Cloudflare Tunnel client
      shell: bash
      env:
        cloudflare_tunnel_certificate: ${{ inputs.cloudflare_tunnel_certificate }}
        cloudflare_tunnel_credential: ${{ inputs.cloudflare_tunnel_credential }}
        cloudflare_tunnel_configuration: ${{ inputs.cloudflare_tunnel_configuration }}
        cloudflare_tunnel_id: ${{ inputs.cloudflare_tunnel_id }}
      run: |
        mkdir ~/.cloudflared/
        echo $cloudflare_tunnel_certificate &amp;gt; ~/.cloudflared/cert.pem
        echo $cloudflare_tunnel_credential | base64 -d &amp;gt; ~/.cloudflared/${cloudflare_tunnel_id}.json
        echo $cloudflare_tunnel_configuration | base64 -d &amp;gt; ~/.cloudflared/config.yml

    - name: Run Cloudflare Tunnel
      if: inputs.autostart == 'true'
      shell: bash
      env:
        cloudflare_tunnel_id: ${{ inputs.cloudflare_tunnel_id }}
      run: |
        nohup cloudflared tunnel run &amp;gt; ${RUNNER_TEMP}/cloudflared.log 2&amp;gt;&amp;amp;1 &amp;amp;
        echo $! &amp;gt; ${RUNNER_TEMP}/cloudflared.pid
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/AnimMouse" rel="noopener noreferrer"&gt;
        AnimMouse
      &lt;/a&gt; / &lt;a href="https://github.com/AnimMouse/setup-cloudflared" rel="noopener noreferrer"&gt;
        setup-cloudflared
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Setup/Install Cloudflare Tunnel client for GitHub Actions 
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Setup cloudflared for GitHub Actions&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;Setup &lt;a href="https://github.com/cloudflare/cloudflared" rel="noopener noreferrer"&gt;Cloudflare Tunnel client&lt;/a&gt; for GitHub Actions.&lt;/p&gt;

&lt;p&gt;This action installs &lt;a href="https://github.com/cloudflare/cloudflared" rel="noopener noreferrer"&gt;cloudflared&lt;/a&gt; for use in actions by installing it on tool cache using &lt;a href="https://github.com/AnimMouse/tool-cache" rel="noopener noreferrer"&gt;AnimMouse/tool-cache&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This GitHub action participated in the &lt;a href="https://dev.to/animmouse/expose-your-web-server-on-github-actions-to-the-internet-using-cloudflare-tunnel-ego" rel="nofollow"&gt;GitHub Actions Hackathon 2021&lt;/a&gt;, but sadly, it lost.&lt;/p&gt;

&lt;p&gt;Test page for setup-cloudflared: &lt;a href="https://setup-cloudflared.44444444.xyz" rel="nofollow noopener noreferrer"&gt;https://setup-cloudflared.44444444.xyz&lt;/a&gt; (This will only work when the test action is running.)&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Usage&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;To use &lt;code&gt;cloudflared&lt;/code&gt;, run this action before &lt;code&gt;cloudflared&lt;/code&gt;.&lt;/p&gt;

&lt;div class="highlight highlight-source-yaml notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-ent"&gt;steps&lt;/span&gt;:
  - &lt;span class="pl-ent"&gt;name&lt;/span&gt;: &lt;span class="pl-s"&gt;Setup cloudflared&lt;/span&gt;
    &lt;span class="pl-ent"&gt;uses&lt;/span&gt;: &lt;span class="pl-s"&gt;AnimMouse/setup-cloudflared@v2&lt;/span&gt;
    
  - &lt;span class="pl-ent"&gt;name&lt;/span&gt;: &lt;span class="pl-s"&gt;Check cloudflared version&lt;/span&gt;
    &lt;span class="pl-ent"&gt;run&lt;/span&gt;: &lt;span class="pl-s"&gt;cloudflared -v&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Cloudflare Tunnel Usage&lt;/h3&gt;

&lt;/div&gt;

&lt;p&gt;Use Cloudflare Tunnel to expose servers running inside GitHub Actions to the Internet.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Encode the JSON credential in Base64 using this command &lt;code&gt;base64 -w 0 &amp;lt;cloudflare-tunnel-id&amp;gt;.json&lt;/code&gt; and paste it to &lt;code&gt;CLOUDFLARE_TUNNEL_CREDENTIAL&lt;/code&gt; secret.&lt;/li&gt;
&lt;li&gt;Inside the config.yaml, set &lt;code&gt;credentials-file:&lt;/code&gt; to
&lt;ol&gt;
&lt;li&gt;Ubuntu: &lt;code&gt;/home/runner/.cloudflared/&amp;lt;cloudflare-tunnel-id&amp;gt;.json&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Windows: &lt;code&gt;C:\Users\runneradmin\.cloudflared\&amp;lt;cloudflare-tunnel-id&amp;gt;.json&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;macOS: &lt;code&gt;/Users/runner/.cloudflared/&amp;lt;cloudflare-tunnel-id&amp;gt;.json&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;

&lt;li&gt;Encode the config.yaml in Base64 using this command &lt;code&gt;base64 -w 0 config.yaml&lt;/code&gt; and…&lt;/li&gt;

&lt;/ol&gt;
&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/AnimMouse/setup-cloudflared" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h3&gt;
  
  
  Additional Resources / Info
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/cloudflare" rel="noopener noreferrer"&gt;
        cloudflare
      &lt;/a&gt; / &lt;a href="https://github.com/cloudflare/cloudflared" rel="noopener noreferrer"&gt;
        cloudflared
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Cloudflare Tunnel client (formerly Argo Tunnel)
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Cloudflare Tunnel client&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Contains the command-line client for Cloudflare Tunnel, a tunneling daemon that proxies traffic from the Cloudflare network to your origins
This daemon sits between Cloudflare network and your origin (e.g. a webserver). Cloudflare attracts client requests and sends them to you
via this daemon, without requiring you to poke holes on your firewall --- your origin can remain as closed as possible
Extensive documentation can be found in the &lt;a href="https://developers.cloudflare.com/cloudflare-one/connections/connect-apps" rel="nofollow noopener noreferrer"&gt;Cloudflare Tunnel section&lt;/a&gt; of the Cloudflare Docs.
All usages related with proxying to your origins are available under &lt;code&gt;cloudflared tunnel help&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;You can also use &lt;code&gt;cloudflared&lt;/code&gt; to access Tunnel origins (that are protected with &lt;code&gt;cloudflared tunnel&lt;/code&gt;) for TCP traffic
at Layer 4 (i.e., not HTTP/websocket), which is relevant for use cases such as SSH, RDP, etc.
Such usages are available under &lt;code&gt;cloudflared access help&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;You can instead use &lt;a href="https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/configuration/private-networks" rel="nofollow noopener noreferrer"&gt;WARP client&lt;/a&gt;
to access private origins behind…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/cloudflare/cloudflared" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Used by:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/AnimMouse" rel="noopener noreferrer"&gt;
        AnimMouse
      &lt;/a&gt; / &lt;a href="https://github.com/AnimMouse/SOCKS5-proxy-actions" rel="noopener noreferrer"&gt;
        SOCKS5-proxy-actions
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      SOCKS5 proxy running on GitHub Actions using Chisel
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;SOCKS5 Proxy Actions&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;SOCKS5 Proxy hosted on GitHub Actions.&lt;/p&gt;
&lt;p&gt;Proof of concept Chisel's SOCKS5 Proxy running on GitHub Actions.&lt;/p&gt;
&lt;p&gt;As GitHub Actions runner does not have a public IP address, we use Cloudflare Tunnel to have a tunnel to GitHub Actions runner.&lt;/p&gt;
&lt;p&gt;This GitHub action participated on &lt;a href="https://dev.to/animmouse/hosting-a-socks5-proxy-on-github-actions-27mj" rel="nofollow"&gt;GitHub Actions Hackathon 2021&lt;/a&gt;, but sadly, it lost.&lt;/p&gt;
&lt;p&gt;Your Computer &amp;gt; Cloudflare &amp;gt; GitHub Actions runner &amp;gt; GitHub Actions' Internet&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Deprecation&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;This workflow is deprecated as this may potentially violate the &lt;a href="https://docs.github.com/en/site-policy/github-terms/github-terms-for-additional-products-and-features#actions" rel="noopener noreferrer"&gt;GitHub Actions Terms of Service&lt;/a&gt;, please use &lt;a href="https://github.com/AnimMouse/SOCKS5-Proxy-Codespaces" rel="noopener noreferrer"&gt;AnimMouse/SOCKS5-Proxy-Codespaces&lt;/a&gt; instead.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Actions should not be used for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;cryptomining;&lt;/li&gt;
&lt;li&gt;disrupting, gaining, or attempting to gain unauthorized access to, any service, device, data, account, or network (other than those authorized by the GitHub Bug Bounty program);&lt;/li&gt;
&lt;li&gt;the provision of a stand-alone or integrated application or service offering the Actions product or service, or any elements of the Actions product or service, for commercial purposes;&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/AnimMouse/SOCKS5-proxy-actions" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


</description>
      <category>actionshackathon21</category>
      <category>cloudflare</category>
      <category>webdev</category>
      <category>tunnel</category>
    </item>
    <item>
      <title>Hosting a SOCKS5 Proxy on GitHub Actions</title>
      <dc:creator>Anim Mouse</dc:creator>
      <pubDate>Sun, 05 Dec 2021 16:47:53 +0000</pubDate>
      <link>https://dev.to/animmouse/hosting-a-socks5-proxy-on-github-actions-27mj</link>
      <guid>https://dev.to/animmouse/hosting-a-socks5-proxy-on-github-actions-27mj</guid>
      <description>&lt;h3&gt;
  
  
  My Workflow
&lt;/h3&gt;

&lt;p&gt;Since GitHub Actions is an IaaS, and Actions Hackathon 2021 allows Wacky Wildcards, I wonder if I can use it as a proxy and view the internet from the perspective of GitHub's servers. So I created a proof of concept SOCKS5 proxy hosted on GitHub Actions.&lt;/p&gt;

&lt;p&gt;As GitHub Actions runners are firewalled from incoming connections, what I did is connect to it through Cloudflare Tunnel. And as Cloudflare Tunnel can't tunnel TCP connections (we can use Ngrok but that's for another story), we tunnel SOCKS5 through websockets using Chisel.&lt;/p&gt;

&lt;p&gt;Here you can see that I'm browsing the internet using Microsoft's IP address.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fycv3ftzsorlq3iicqqoo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fycv3ftzsorlq3iicqqoo.png" alt="IP address check 1"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb20zkk3b9xhbcrw2kzbv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb20zkk3b9xhbcrw2kzbv.png" alt="IP address check 2"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj3xo20p56h7kbla93u2f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj3xo20p56h7kbla93u2f.png" alt="IP address check 3"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here you can see a speed test from my 45 mbps internet connection.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffsqj0nim7udjsbge2cir.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffsqj0nim7udjsbge2cir.png" alt="Speed test"&gt;&lt;/a&gt;&lt;br&gt;
This action can also be used as a VPN.&lt;/p&gt;
&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Wacky Wildcards&lt;/p&gt;
&lt;h3&gt;
  
  
  Yaml File or Link to Code
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name: Host Chisel SOCKS5 Proxy
on:
  workflow_dispatch:
    inputs:
      time-duration:
        description: Time to run chisel
        required: true
        default: 10m

jobs:
  socks5-proxy:
    runs-on: ubuntu-latest
    steps:
      - name: Install chisel
        working-directory: ${{ runner.temp }}
        env:
          version: 1.7.6
        run: |
          aria2c -x 16 "https://github.com/jpillora/chisel/releases/latest/download/chisel_${version}_linux_amd64.gz"
          gzip -d chisel_${version}_linux_amd64.gz
          mv chisel_${version}_linux_amd64 /usr/local/bin/chisel
          chmod +x /usr/local/bin/chisel

      - name: Setup Cloudflare Tunnel client
        uses: AnimMouse/setup-cloudflared@v1
        with:
          cloudflare_tunnel_certificate: ${{ secrets.CLOUDFLARE_TUNNEL_CERTIFICATE }}
          cloudflare_tunnel_credential: ${{ secrets.CLOUDFLARE_TUNNEL_CREDENTIAL }}
          cloudflare_tunnel_configuration: ${{ secrets.CLOUDFLARE_TUNNEL_CONFIGURATION }}
          cloudflare_tunnel_id: ${{ secrets.CLOUDFLARE_TUNNEL_ID }}

      - name: Run chisel
        run: timeout "${{ github.event.inputs.time-duration }}" chisel server --socks5 || true

      - name: Shutdown and view logs of Cloudflare Tunnel
        if: always()
        uses: AnimMouse/setup-cloudflared/shutdown@v1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/AnimMouse" rel="noopener noreferrer"&gt;
        AnimMouse
      &lt;/a&gt; / &lt;a href="https://github.com/AnimMouse/SOCKS5-proxy-actions" rel="noopener noreferrer"&gt;
        SOCKS5-proxy-actions
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      SOCKS5 proxy running on GitHub Actions using Chisel
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;SOCKS5 Proxy Actions&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;SOCKS5 Proxy hosted on GitHub Actions.&lt;/p&gt;
&lt;p&gt;Proof of concept Chisel's SOCKS5 Proxy running on GitHub Actions.&lt;/p&gt;
&lt;p&gt;As GitHub Actions runner does not have a public IP address, we use Cloudflare Tunnel to have a tunnel to GitHub Actions runner.&lt;/p&gt;
&lt;p&gt;This GitHub action participated on &lt;a href="https://dev.to/animmouse/hosting-a-socks5-proxy-on-github-actions-27mj" rel="nofollow"&gt;GitHub Actions Hackathon 2021&lt;/a&gt;, but sadly, it lost.&lt;/p&gt;
&lt;p&gt;Your Computer &amp;gt; Cloudflare &amp;gt; GitHub Actions runner &amp;gt; GitHub Actions' Internet&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Deprecation&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;This workflow is deprecated as this may potentially violate the &lt;a href="https://docs.github.com/en/site-policy/github-terms/github-terms-for-additional-products-and-features#actions" rel="noopener noreferrer"&gt;GitHub Actions Terms of Service&lt;/a&gt;, please use &lt;a href="https://github.com/AnimMouse/SOCKS5-Proxy-Codespaces" rel="noopener noreferrer"&gt;AnimMouse/SOCKS5-Proxy-Codespaces&lt;/a&gt; instead.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Actions should not be used for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;cryptomining;&lt;/li&gt;
&lt;li&gt;disrupting, gaining, or attempting to gain unauthorized access to, any service, device, data, account, or network (other than those authorized by the GitHub Bug Bounty program);&lt;/li&gt;
&lt;li&gt;the provision of a stand-alone or integrated application or service offering the Actions product or service, or any elements of the Actions product or service, for commercial purposes;&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/AnimMouse/SOCKS5-proxy-actions" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Additional Resources / Info
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/AnimMouse" rel="noopener noreferrer"&gt;
        AnimMouse
      &lt;/a&gt; / &lt;a href="https://github.com/AnimMouse/setup-cloudflared" rel="noopener noreferrer"&gt;
        setup-cloudflared
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Setup/Install Cloudflare Tunnel client for GitHub Actions 
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Setup cloudflared for GitHub Actions&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Setup &lt;a href="https://github.com/cloudflare/cloudflared" rel="noopener noreferrer"&gt;Cloudflare Tunnel client&lt;/a&gt; for GitHub Actions.&lt;/p&gt;
&lt;p&gt;This action installs &lt;a href="https://github.com/cloudflare/cloudflared" rel="noopener noreferrer"&gt;cloudflared&lt;/a&gt; for use in actions by installing it on tool cache using &lt;a href="https://github.com/AnimMouse/tool-cache" rel="noopener noreferrer"&gt;AnimMouse/tool-cache&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This GitHub action participated in the &lt;a href="https://dev.to/animmouse/expose-your-web-server-on-github-actions-to-the-internet-using-cloudflare-tunnel-ego" rel="nofollow"&gt;GitHub Actions Hackathon 2021&lt;/a&gt;, but sadly, it lost.&lt;/p&gt;
&lt;p&gt;Test page for setup-cloudflared: &lt;a href="https://setup-cloudflared.44444444.xyz" rel="nofollow noopener noreferrer"&gt;https://setup-cloudflared.44444444.xyz&lt;/a&gt; (This will only work when the test action is running.)&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Usage&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;To use &lt;code&gt;cloudflared&lt;/code&gt;, run this action before &lt;code&gt;cloudflared&lt;/code&gt;.&lt;/p&gt;
&lt;div class="highlight highlight-source-yaml notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-ent"&gt;steps&lt;/span&gt;:
  - &lt;span class="pl-ent"&gt;name&lt;/span&gt;: &lt;span class="pl-s"&gt;Setup cloudflared&lt;/span&gt;
    &lt;span class="pl-ent"&gt;uses&lt;/span&gt;: &lt;span class="pl-s"&gt;AnimMouse/setup-cloudflared@v2&lt;/span&gt;
    
  - &lt;span class="pl-ent"&gt;name&lt;/span&gt;: &lt;span class="pl-s"&gt;Check cloudflared version&lt;/span&gt;
    &lt;span class="pl-ent"&gt;run&lt;/span&gt;: &lt;span class="pl-s"&gt;cloudflared -v&lt;/span&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Cloudflare Tunnel Usage&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;Use Cloudflare Tunnel to expose servers running inside GitHub Actions to the Internet.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Encode the JSON credential in Base64 using this command &lt;code&gt;base64 -w 0 &amp;lt;cloudflare-tunnel-id&amp;gt;.json&lt;/code&gt; and paste it to &lt;code&gt;CLOUDFLARE_TUNNEL_CREDENTIAL&lt;/code&gt; secret.&lt;/li&gt;
&lt;li&gt;Inside the config.yaml, set &lt;code&gt;credentials-file:&lt;/code&gt; to
&lt;ol&gt;
&lt;li&gt;Ubuntu: &lt;code&gt;/home/runner/.cloudflared/&amp;lt;cloudflare-tunnel-id&amp;gt;.json&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Windows: &lt;code&gt;C:\Users\runneradmin\.cloudflared\&amp;lt;cloudflare-tunnel-id&amp;gt;.json&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;macOS: &lt;code&gt;/Users/runner/.cloudflared/&amp;lt;cloudflare-tunnel-id&amp;gt;.json&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Encode the config.yaml in Base64 using this command &lt;code&gt;base64 -w 0 config.yaml&lt;/code&gt; and…&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/AnimMouse/setup-cloudflared" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/jpillora" rel="noopener noreferrer"&gt;
        jpillora
      &lt;/a&gt; / &lt;a href="https://github.com/jpillora/chisel" rel="noopener noreferrer"&gt;
        chisel
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A fast TCP/UDP tunnel over HTTP
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Chisel&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://godoc.org/github.com/jpillora/chisel" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/70e5f0240c4d27f1148ea92813e7f1a82c038fee1e647205c839078b53c68f3b/68747470733a2f2f676f646f632e6f72672f6769746875622e636f6d2f6a70696c6c6f72612f63686973656c3f7374617475732e737667" alt="GoDoc"&gt;&lt;/a&gt; &lt;a href="https://github.com/jpillora/chisel/actions?workflow=CI" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/jpillora/chisel/workflows/CI/badge.svg" alt="CI"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Chisel is a fast TCP/UDP tunnel, transported over HTTP, secured via SSH. Single executable including both client and server. Written in Go (golang). Chisel is mainly useful for passing through firewalls, though it can also be used to provide a secure endpoint into your network.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/d250e1da1498830bc77ba11dcff241c1cc4ac4fcba9882df3259579ba9b439f7/68747470733a2f2f646f63732e676f6f676c652e636f6d2f64726177696e67732f642f317035335657787a474e667938726a722d6d5738707669734a6d686b6f4c6c383276416763744f5f366631772f7075623f773d39363026683d373230"&gt;&lt;img src="https://camo.githubusercontent.com/d250e1da1498830bc77ba11dcff241c1cc4ac4fcba9882df3259579ba9b439f7/68747470733a2f2f646f63732e676f6f676c652e636f6d2f64726177696e67732f642f317035335657787a474e667938726a722d6d5738707669734a6d686b6f4c6c383276416763744f5f366631772f7075623f773d39363026683d373230" alt="overview"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Table of Contents&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/jpillora/chisel#features" rel="noopener noreferrer"&gt;Features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jpillora/chisel#install" rel="noopener noreferrer"&gt;Install&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jpillora/chisel#demo" rel="noopener noreferrer"&gt;Demo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jpillora/chisel#usage" rel="noopener noreferrer"&gt;Usage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jpillora/chisel#contributing" rel="noopener noreferrer"&gt;Contributing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jpillora/chisel#changelog" rel="noopener noreferrer"&gt;Changelog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jpillora/chisel#license" rel="noopener noreferrer"&gt;License&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Easy to use&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/jpillora/chisel./test/bench/perf.md" rel="noopener noreferrer"&gt;Performant&lt;/a&gt;*&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/jpillora/chisel#security" rel="noopener noreferrer"&gt;Encrypted connections&lt;/a&gt; using the SSH protocol (via &lt;code&gt;crypto/ssh&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/jpillora/chisel#authentication" rel="noopener noreferrer"&gt;Authenticated connections&lt;/a&gt;; authenticated client connections with a users config file, authenticated server connections with fingerprint matching.&lt;/li&gt;
&lt;li&gt;Client auto-reconnects with &lt;a href="https://github.com/jpillora/backoff" rel="noopener noreferrer"&gt;exponential backoff&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Clients can create multiple tunnel endpoints over one TCP connection&lt;/li&gt;
&lt;li&gt;Clients can optionally pass through SOCKS or HTTP CONNECT proxies&lt;/li&gt;
&lt;li&gt;Reverse port forwarding (Connections go through the server and out the client)&lt;/li&gt;
&lt;li&gt;Server optionally doubles as a &lt;a href="http://golang.org/pkg/net/http/httputil/#NewSingleHostReverseProxy" rel="nofollow noopener noreferrer"&gt;reverse proxy&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Server optionally allows &lt;a href="https://en.wikipedia.org/wiki/SOCKS" rel="nofollow noopener noreferrer"&gt;SOCKS5&lt;/a&gt; connections (See &lt;a href="https://github.com/jpillora/chisel#socks5-guide" rel="noopener noreferrer"&gt;guide below&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Clients optionally allow &lt;a href="https://en.wikipedia.org/wiki/SOCKS" rel="nofollow noopener noreferrer"&gt;SOCKS5&lt;/a&gt; connections from a reversed port…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/jpillora/chisel" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


</description>
      <category>actionshackathon21</category>
      <category>socks5</category>
      <category>proxy</category>
      <category>actions</category>
    </item>
    <item>
      <title>Convert direct download links into Torrent using GitHub Actions</title>
      <dc:creator>Anim Mouse</dc:creator>
      <pubDate>Sat, 04 Dec 2021 17:36:59 +0000</pubDate>
      <link>https://dev.to/animmouse/convert-direct-download-links-into-torrent-using-github-actions-4bng</link>
      <guid>https://dev.to/animmouse/convert-direct-download-links-into-torrent-using-github-actions-4bng</guid>
      <description>&lt;h3&gt;
  
  
  My Workflow
&lt;/h3&gt;

&lt;p&gt;Back in the day, we have BurnBit that allows us to leverage the P2P power of BitTorrent for our files hosted on our web servers. BurnBit downloads the file in their servers and creates a .torrent metadata of the file and adds your web server as an HTTP webseed for that torrent. This works flawlessly, your file is getting downloaded from your server and at the same time, with other peers already downloaded the file through seeding. This saves bandwidth on your web server, costing you less, and improves the download experience of your users if your web server can't handle the load.&lt;/p&gt;

&lt;p&gt;Fast-forward today, BurnBit got down, and there are no alternatives until URLHash, but URLHash has limits, and sometimes goes down.&lt;/p&gt;

&lt;p&gt;This GitHub Action workflow allows you to create .torrent file from a direct HTTP link of your web sever and uses that link for webseeding.&lt;/p&gt;

&lt;p&gt;This will download the file from your HTTP link and hash it using a torrent creator program using GitHub Actions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Wacky Wildcards&lt;/p&gt;

&lt;h3&gt;
  
  
  Yaml File or Link to Code
&lt;/h3&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

name: torrenttools
on:
  workflow_dispatch:
    inputs:
      name:
        description: Name of the torrent file
        required: true
        default: Firefox Setup 94.0.2
      comment:
        description: Comment
        required: true
        default: Firefox Setup 94.0.2 win64 en-US by torrent-webseed-creator
      url:
        description: URL of the file
        required: true
        default: 'https://download-installer.cdn.mozilla.net/pub/firefox/releases/94.0.2/win64/en-US/Firefox%20Setup%2094.0.2.exe'
      file_name:
        description: File name of the file in the torrent
        required: true
        default: Firefox Setup 94.0.2.exe
      piece_size:
        description: Piece Size. Use auto for automatic calculation, or use the recommended piece size on the README.md file
        required: true
        default: auto
      protocol_version:
        description: BitTorrent Protocol version 1, 2, or hybrid
        required: true
        default: '1'
      maximize_disk_space:
        description: Maximize disk space. Set to true if getting out of disk space error
        default: 'false'

jobs:
  create_torrent:
    runs-on: ubuntu-latest
    steps:
      - name: Maximize disk space
        if: ${{ github.event.inputs.maximize_disk_space == 'true' }}
        uses: easimon/maximize-build-space@v4
        with:
          remove-dotnet: 'true'
          remove-android: 'true'
          remove-haskell: 'true'

      - name: Install torrenttools
        run: |
          sudo add-apt-repository ppa:fbdtemme/torrenttools
          sudo apt-get update
          sudo apt-get install torrenttools

      - name: Download file
        run: aria2c -x 16 -o "${{ github.event.inputs.file_name }}" "${{ github.event.inputs.url }}"

      - name: Create torrent using torrenttools
        run: torrenttools create -v "${{ github.event.inputs.protocol_version }}" -o "${{ github.event.inputs.name }}.torrent" -w "${{ github.event.inputs.url }}" -c "${{ github.event.inputs.comment }}" -l "${{ github.event.inputs.piece_size }}" -s "torrent-webseed-creator" "${{ github.event.inputs.file_name }}"

      - name: Upload torrent file
        uses: actions/upload-artifact@v2
        with:
          name: ${{ github.event.inputs.name }}
          path: ${{ github.event.inputs.name }}.torrent


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/AnimMouse" rel="noopener noreferrer"&gt;
        AnimMouse
      &lt;/a&gt; / &lt;a href="https://github.com/AnimMouse/torrent-webseed-creator" rel="noopener noreferrer"&gt;
        torrent-webseed-creator
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Webseeded torrent creator using GitHub Actions
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Torrent Webseed Creator&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;Webseeded Torrent Creator using GitHub Actions.&lt;/p&gt;

&lt;p&gt;Inspired by &lt;a href="https://web.archive.org/web/20160304022643/http://burnbit.com/" rel="nofollow noopener noreferrer"&gt;BurnBit †&lt;/a&gt; and &lt;a href="http://www.urlhash.com" rel="nofollow noopener noreferrer"&gt;URLHash&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Powered by these programs to create a torrent file.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/fbdtemme/torrenttools" rel="noopener noreferrer"&gt;torrenttools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/pobrn/mktorrent" rel="noopener noreferrer"&gt;mktorrent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/rsnitsch/py3createtorrent" rel="noopener noreferrer"&gt;py3createtorrent&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/rndusr/torf-cli" rel="noopener noreferrer"&gt;torf-cli&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kz26/dottorrent-cli" rel="noopener noreferrer"&gt;dottorrent-cli&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An alternative to BurnBit and URLHash.&lt;/p&gt;

&lt;p&gt;Convert direct HTTP link to .torrent&lt;/p&gt;

&lt;p&gt;Your file is then burned into a torrent.&lt;/p&gt;

&lt;p&gt;Torrents created are trackerless, relying on Distributed Hash Table and Peer EXchange, to help reduce the burden of torrent trackers.&lt;/p&gt;

&lt;p&gt;For people that have unstable internet.&lt;br&gt;
Can be paused because it is a torrent.&lt;br&gt;
Utilizes the power of peer to peer downloads and the client-server downloads.&lt;br&gt;
Combines the best of both worlds (P2P and Direct HTTP Link).&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How to use&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Create a repository on GitHub using this template by clicking "Use this template" and then click "Create a new repository".&lt;/li&gt;
&lt;li&gt;Go to the Actions tab.&lt;/li&gt;
&lt;li&gt;Choose a program to use by clicking the name of the program under "All workflows"…&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/AnimMouse/torrent-webseed-creator" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Additional Resources / Info
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/fbdtemme" rel="noopener noreferrer"&gt;
        fbdtemme
      &lt;/a&gt; / &lt;a href="https://github.com/fbdtemme/torrenttools" rel="noopener noreferrer"&gt;
        torrenttools
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Commandline tool for inspecting, creating and editing BitTorrent metafiles.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/fbdtemme/torrenttoolsresources/images/torrenttools-banner.svg"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Ffbdtemme%2Ftorrenttoolsresources%2Fimages%2Ftorrenttools-banner.svg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/fbdtemme/torrenttools/workflows/build/badge.svg"&gt;&lt;img src="https://github.com/fbdtemme/torrenttools/workflows/build/badge.svg" alt="build"&gt;&lt;/a&gt;
&lt;a href="https://copr.fedorainfracloud.org/coprs/fbdtemme/torrenttools/package/torrenttools/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/bdcd389e0c1fb475799a3624f046fd90ca07af8e6e3c5423d84fbaabbd4b7ec0/68747470733a2f2f636f70722e6665646f7261696e667261636c6f75642e6f72672f636f7072732f66626474656d6d652f746f7272656e74746f6f6c732f7061636b6167652f746f7272656e74746f6f6c732f7374617475735f696d6167652f6c6173745f6275696c642e706e67" alt="Copr build status"&gt;&lt;/a&gt;
&lt;a href="https://github.com/fbdtemme/torrenttools/releases" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fed719f86876d052e19fee791d39631c92f9ef8917210ba3a2573cb8d5ce7312/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f66626474656d6d652f746f7272656e74746f6f6c73" alt="GitHub release (latest SemVer)"&gt;&lt;/a&gt;
&lt;a href="https://isocpp.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/5f2804c9fddf2f6d2dd02c4942e4bcb3759c401f952d9678f11e0b0c9efab53d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f432532422532422d32302d626c7565" alt="C++ standard"&gt;&lt;/a&gt;
&lt;a href="https://app.codacy.com/manual/floriandetemmerman/torrenttools?utm_source=github.com&amp;amp;utm_medium=referral&amp;amp;utm_content=fbdtemme/bencode&amp;amp;utm_campaign=Badge_Grade_Dashboard" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/19b3f7acf31de02e8cce9c4f82a81727d19158cb449a920fb0e5eb6543c64911/68747470733a2f2f6170692e636f646163792e636f6d2f70726f6a6563742f62616467652f47726164652f3563633365656339346438613438366461623632616665616235313330646566" alt="Codacy Badge"&gt;&lt;/a&gt;
&lt;a href="https://opensource.org/licenses/MIT" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/6cd0120cc4c5ac11d28b2c60f76033b52db98dac641de3b2644bb054b449d60c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667" alt="License: MIT"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A commandline tool for creating, inspecting and modifying bittorrent metafiles.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/fbdtemme/torrenttools#Status" rel="noopener noreferrer"&gt;&lt;strong&gt;Features&lt;/strong&gt;&lt;/a&gt; |
&lt;a href="https://github.com/fbdtemme/torrenttools#Documentation" rel="noopener noreferrer"&gt;&lt;strong&gt;Documentation&lt;/strong&gt;&lt;/a&gt; |
&lt;a href="https://github.com/fbdtemme/torrenttools#binary-releases" rel="noopener noreferrer"&gt;&lt;strong&gt;Binary releases&lt;/strong&gt;&lt;/a&gt; |
&lt;a href="https://github.com/fbdtemme/torrenttools#Building" rel="noopener noreferrer"&gt;&lt;strong&gt;Building&lt;/strong&gt;&lt;/a&gt; |
&lt;a href="https://github.com/fbdtemme/torrenttools#License" rel="noopener noreferrer"&gt;&lt;strong&gt;License&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Creating bittorrent metafiles.&lt;/li&gt;
&lt;li&gt;Inspecting bittorrent metafiles.&lt;/li&gt;
&lt;li&gt;Verifying bittorrent metafiles against local data.&lt;/li&gt;
&lt;li&gt;Editing existing bittorrent metafiles.&lt;/li&gt;
&lt;li&gt;Support for the new &lt;a href="https://blog.libtorrent.org/2020/09/bittorrent-v2/" rel="nofollow noopener noreferrer"&gt;v2 and hybrid protocols&lt;/a&gt; .&lt;/li&gt;
&lt;li&gt;Support for tracker abbreviations.&lt;/li&gt;
&lt;li&gt;Support for announce substitution parameters.&lt;/li&gt;
&lt;li&gt;Fast multi-buffer hashing with Intel ISA-L.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Example&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/fbdtemme/torrenttoolsresources/images/create-demo.gif"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Ffbdtemme%2Ftorrenttoolsresources%2Fimages%2Fcreate-demo.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Status&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;This project is under development.
The commandline interface can change at any release prior to 1.0.0.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Performance&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Following test were performed on a in in-memory filesystem with 1 MiB piece size
and as target a file filed with random data totalling 15.0 GiB:
The tested CPU is an Intel i7-7700HQ in a Dell XPS 15-9560 machine.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/fbdtemme/torrenttoolsbenchmark/benchmark.svg"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Ffbdtemme%2Ftorrenttoolsbenchmark%2Fbenchmark.svg" alt="Benchmark"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Documentation&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Documentation is hosted on &lt;a href="https://fbdtemme.github.io/torrenttools/" rel="nofollow noopener noreferrer"&gt;Github Pages&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Binary releases&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Contents&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/fbdtemme/torrenttools#Windows" rel="noopener noreferrer"&gt;Windows&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/fbdtemme/torrenttools#macOS" rel="noopener noreferrer"&gt;macOS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/fbdtemme/torrenttools#Linux" rel="noopener noreferrer"&gt;Linux&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/fbdtemme/torrenttools#Fedora" rel="noopener noreferrer"&gt;Fedora&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/fbdtemme/torrenttools#CentOS/RHEL" rel="noopener noreferrer"&gt;CentOS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/fbdtemme/torrenttools#Ubuntu" rel="noopener noreferrer"&gt;Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/fbdtemme/torrenttools#Debian" rel="noopener noreferrer"&gt;Debian&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/fbdtemme/torrenttools#Ubuntu" rel="noopener noreferrer"&gt;Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/fbdtemme/torrenttools#OpenSUSE" rel="noopener noreferrer"&gt;OpenSUSE&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/fbdtemme/torrenttools#SUSE-Linux-Enterprise-Server-15" rel="noopener noreferrer"&gt;SUSE Linux Enterprise Server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/fbdtemme/torrenttools#Arch" rel="noopener noreferrer"&gt;Arch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/fbdtemme/torrenttools#AppImage" rel="noopener noreferrer"&gt;AppImage&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/fbdtemme/torrenttools#inux" rel="noopener noreferrer"&gt;Docker&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Windows&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;An .msi installer…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/fbdtemme/torrenttools" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://lifehacker.com/burnbit-turns-any-web-hosted-file-into-a-torrent-5637855" rel="noopener noreferrer"&gt;Burnbit Turns Any Web-Hosted File into a Torrent Article&lt;/a&gt;&lt;br&gt;
&lt;a href="https://torrentfreak.com/burn-any-web-hosted-file-into-a-torrent-with-burnbit-100913/" rel="noopener noreferrer"&gt;Burn Any Web-Hosted File into a Torrent With Burnbit Article&lt;/a&gt;&lt;/p&gt;

</description>
      <category>actionshackathon21</category>
      <category>torrent</category>
      <category>actions</category>
      <category>bittorrent</category>
    </item>
    <item>
      <title>Test</title>
      <dc:creator>Anim Mouse</dc:creator>
      <pubDate>Wed, 01 Dec 2021 15:07:32 +0000</pubDate>
      <link>https://dev.to/animmouse/test-38kb</link>
      <guid>https://dev.to/animmouse/test-38kb</guid>
      <description>&lt;p&gt;Hello World&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
