aboutsummaryrefslogtreecommitdiffstats
path: root/kubernetes/namespaces/default/hastebin/init-configmap.yaml
blob: 906060fae7736a316f1450707c30db19bd9f696e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
apiVersion: v1
kind: ConfigMap
metadata:
  name: hastebin-init
data:
  monkeypatch_extensions.sh: |
    #!/bin/bash

    ORIGINAL="file += '\.' + _this.lookupExtensionByType(ret\.language);"
    PATCHED="\/\/file += '\.' + _this.lookupExtensionByType(ret\.language);"
    FILENAME="static/application.js"

    touch changed
    sed -i "s/$ORIGINAL/$PATCHED/w changed" "$FILENAME"
  init.sh: |
    #!/bin/bash

    # Clone the repo
    git clone https://github.com/toptal/haste-server.git
    cd haste-server

    # Monkey patch - don't add extensions to the URLs.
    #
    # This is a pretty messy monkey patch, and it may break if the hastebin
    # JS code changes significantly. It makes the URL display as "file"
    # instead of "file.py" when you save a file, which makes it possible
    # to share the URL without triggering Discord's suspicious URL filter.
    cp /init/monkeypatch_extensions.sh ./monkeypatch_extensions.sh
    chmod +x monkeypatch_extensions.sh
    ./monkeypatch_extensions.sh

    # Check if monkeypatch succeeded. Otherwise, fail hard.
    if [ -s changed ]; then
      echo "Monkey patch executed: Hastebin will no longer add extensions to URLs."
    else
      echo "Monkey patch for not adding extension could not be performed. Maybe the hastebin code has changed?"
      exit 69
    fi

    # Install and start
    npm install

    set -e

    # Generate the config file from the environment
    node docker-entrypoint.js > config.js

    # Start Hastebin
    npm start