Merge branch 'main' into Cesura-gunicorn

pull/23/head
Steve Hay 2 years ago committed by GitHub
commit 4a25c538d9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -2,9 +2,11 @@ FROM tensorflow/tensorflow:2.9.1
ENV PASTEY_WORKERS=2 ENV PASTEY_WORKERS=2
ENV PASTEY_THREADS=4 ENV PASTEY_THREADS=4
ENV PASTEY_LISTEN_PORT=5000 ENV PASTEY_LISTEN_PORT=5000
RUN mkdir -p /app/data
COPY requirements.txt /app/ COPY requirements.txt /app/
RUN pip install -U pip setuptools wheel
RUN pip install -r /app/requirements.txt RUN pip install -r /app/requirements.txt
RUN pip install gunicorn
COPY . /app/ COPY . /app/
WORKDIR /app WORKDIR /app
RUN pip install gunicorn ENTRYPOINT ["sh", "-c", "gunicorn -w $PASTEY_WORKERS -t $PASTEY_THREADS -b :$PASTEY_LISTEN_PORT --worker-class=gthread app:app"]
ENTRYPOINT ["sh", "-c", "gunicorn -w $PASTEY_WORKERS -t $PASTEY_THREADS -b :$PASTEY_LISTEN_PORT app:app"]

@ -1,10 +1,26 @@
services: services:
pastey: pastey:
image: cesura/pastey:latest image: cesura/pastey:latest
environment:
PASTEY_WORKERS: 2
PASTEY_THREADS: 4
PASTEY_LISTEN_PORT: 7778
PASTEY_DEFAULT_THEME: Dark
PASTEY_BEHIND_PROXY: "true"
PASTEY_FORCE_SHOW_RECENT: "true"
PASTEY_RESTRICT_PASTING: "true"
PASTEY_WHITELIST_CIDR: "127.0.0.1/32,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16"
PASTEY_RECENT_PASTES: 20
volumes: volumes:
- "pastey-data:/app/data" - "pastey-data:/app/data"
ports: ports:
- "5000:5000" - "5000:5000"
restart: unless-stopped
networks:
- pastey-network
volumes: volumes:
pastey-data: pastey-data:
networks:
pastey-network: {}

@ -4,16 +4,20 @@ else:
from app import guess, app from app import guess, app
from . import config, common from . import config, common
from os import path, remove from os import path, remove, listdir
from pathlib import Path from pathlib import Path
from datetime import datetime, timedelta from datetime import datetime, timedelta
from cryptography.fernet import Fernet from cryptography.fernet import Fernet
import time import time
import uuid import secrets
import math
import json import json
from os import environ
########## Paste functions ########## ########## Paste functions ##########
config.recent_pastes = int(environ["PASTEY_RECENT_PASTES"]) if "PASTEY_RECENT_PASTES" in environ else config.recent_pastes
# Get recent n pastes, defined in config by recent_pastes # Get recent n pastes, defined in config by recent_pastes
def get_recent(limit=config.recent_pastes): def get_recent(limit=config.recent_pastes):
paths = sorted(Path(config.data_directory).iterdir(), key=path.getmtime, reverse=True) paths = sorted(Path(config.data_directory).iterdir(), key=path.getmtime, reverse=True)
@ -83,12 +87,13 @@ def delete_paste(unique_id):
# Create new paste # Create new paste
def new_paste(title, content, source_ip, expires=0, single=False, encrypt=False, language="AUTO"): def new_paste(title, content, source_ip, expires=0, single=False, encrypt=False, language="AUTO"):
unique_id = str(uuid.uuid4()) # this calculates the number of digits of a base64 number needed to be unlikely to have collisions
id_len = int(math.ceil( 3*math.log(len(listdir(config.data_directory))+1)/math.log(256) + 1.5 )) unique_id = secrets.token_urlsafe(id_len)
output_file = config.data_directory + "/" + unique_id output_file = config.data_directory + "/" + unique_id
# Check for existing paste id (unlikely) # Check for existing paste id (unlikely)
while path.exists(output_file) or path.exists(output_file + ".expires"): while path.exists(output_file) or path.exists(output_file + ".expires"):
unique_id = str(uuid.uuid4()) unique_id = secrets.token_urlsafe(id_len)
output_file = config.data_directory + "/" + unique_id output_file = config.data_directory + "/" + unique_id
# Attempt to guess programming language # Attempt to guess programming language

@ -0,0 +1,11 @@
pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
Theme: GitHub Dark
Description: Dark theme as seen on github.com
Author: github.com
Maintainer: @Hirse
Updated: 2021-05-15
Outdated base version: https://github.com/primer/github-syntax-dark
Current colors taken from GitHub's CSS
*/.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#79c0ff}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-code,.hljs-comment,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}

@ -0,0 +1,14 @@
pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
Theme: StackOverflow Light
Description: Light theme as used on stackoverflow.com
Author: stackoverflow.com
Maintainer: @Hirse
Website: https://github.com/StackExchange/Stacks
License: MIT
Updated: 2021-05-15
Updated for @stackoverflow/stacks v0.64.0
Code Blocks: /blob/v0.64.0/lib/css/components/_stacks-code-blocks.less
Colors: /blob/v0.64.0/lib/css/exports/_stacks-constants-colors.less
*/.hljs{color:#2f3337;background:#f6f6f6}.hljs-subst{color:#2f3337}.hljs-comment{color:#656e77}.hljs-attr,.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-section,.hljs-selector-tag{color:#015692}.hljs-attribute{color:#803378}.hljs-name,.hljs-number,.hljs-quote,.hljs-selector-id,.hljs-template-tag,.hljs-type{color:#b75501}.hljs-selector-class{color:#015692}.hljs-link,.hljs-regexp,.hljs-selector-attr,.hljs-string,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#54790d}.hljs-meta,.hljs-selector-pseudo{color:#015692}.hljs-built_in,.hljs-literal,.hljs-title{color:#b75501}.hljs-bullet,.hljs-code{color:#535a60}.hljs-meta .hljs-string{color:#54790d}.hljs-deletion{color:#c02d2e}.hljs-addition{color:#2f6f44}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}

@ -49,3 +49,8 @@
.pastey-title { .pastey-title {
word-wrap:break-word; word-wrap:break-word;
} }
.hljs-ln td {
padding-left: 1em !important;
}

@ -1,4 +1,4 @@
body, tr { body, table.table tr {
background-color: #262626 !important; background-color: #262626 !important;
color: rgba(255, 255, 255); color: rgba(255, 255, 255);
} }
@ -111,3 +111,5 @@ li.L0,li.L2,li.L4,li.L6,li.L8 {
.opn, .clo { .opn, .clo {
color: rgb(218, 218, 0); color: rgb(218, 218, 0);
} }

@ -8,10 +8,9 @@
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.11.2/css/all.css" /> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.11.2/css/all.css" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap" /> <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap" />
<link rel="stylesheet" href="/static/css/mdb.min.css" /> <link rel="stylesheet" href="/static/css/mdb.min.css" />
<link rel="stylesheet" href="/static/css/prettify.min.css" />
<link rel="stylesheet" href="/static/css/style.css" /> <link rel="stylesheet" href="/static/css/style.css" />
<link rel="stylesheet" href="/static/themes/{{ active_theme }}.css" /> <link rel="stylesheet" href="/static/themes/{{ active_theme }}.css" />
<link rel="stylesheet" href="/static/css/highlight-{{ active_theme }}.css" />
<link rel="icon" type="image/x-icon" href="/static/img/favicon.ico"/> <link rel="icon" type="image/x-icon" href="/static/img/favicon.ico"/>
</head> </head>
<body> <body>
@ -98,8 +97,7 @@
<div class="pastey-title"> <div class="pastey-title">
<h1 class="mb-3 h2" id="pastey-title">{{ paste.title }}</h1> <h1 class="mb-3 h2" id="pastey-title">{{ paste.title }}</h1>
</div> </div>
<span style="font-weight:bold;">Format: </span><span>{{ paste.language }}</span><br />
<span style="font-weight:bold;">Format: </span>{{ paste.language }}</span>
{% if not paste.encrypted %} {% if not paste.encrypted %}
<span>&nbsp;(<a href='{{ url }}/raw' target='_blank'><i class="fas fa-eye"></i>&nbsp;View Raw</a>)</span> <span>&nbsp;(<a href='{{ url }}/raw' target='_blank'><i class="fas fa-eye"></i>&nbsp;View Raw</a>)</span>
{% endif %}<br /> {% endif %}<br />
@ -144,15 +142,15 @@
<!--Main layout--> <!--Main layout-->
<main class="my-5"> <main class="my-5">
<div class="container"> <div class="container">
<div class="row"> <div class="row">
<div class="col-md-12 mb-4"> <div class="col-md-12 mb-4">
{% if paste.language == "Plaintext" %} {% if paste.language == "Plaintext" %}
<pre class="prettyprint nocode" id="pastey-content">{{ paste.content }}</pre> <pre><code class="plaintext" id="pastey-content">{{ paste.content }}</code></pre>
{% else %} {% else %}
<pre class="prettyprint linenums" id="pastey-content">{{ paste.content }}</pre> <pre><code id="pastey-content">{{ paste.content }}</code></pre>
{% endif %} {% endif %}
</div>
</div> </div>
</div>
<!-- QR Modal --> <!-- QR Modal -->
<div <div
@ -195,8 +193,8 @@
<script type="text/javascript" src="/static/js/common.js"></script> <script type="text/javascript" src="/static/js/common.js"></script>
<script type="text/javascript" src="/static/js/qrcode.min.js"></script> <script type="text/javascript" src="/static/js/qrcode.min.js"></script>
<script type="text/javascript" src="/static/js/mdb.min.js"></script> <script type="text/javascript" src="/static/js/mdb.min.js"></script>
<script type="text/javascript" src="/static/js/prettify.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/highlight.min.js"></script>
<script type="text/javascript" src="/static/js/run_prettify.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlightjs-line-numbers.js/2.8.0/highlightjs-line-numbers.min.js"></script>
<!-- Decrypt paste and generate QR code --> <!-- Decrypt paste and generate QR code -->
<script type="text/javascript"> <script type="text/javascript">
@ -215,5 +213,10 @@
}); });
}); });
</script> </script>
<script type="text/javascript">
hljs.highlightAll();
hljs.initLineNumbersOnLoad();
</script>
</body> </body>
</html> </html>
Loading…
Cancel
Save