2025-06-13 22:06:54 +02:00
2025-06-11 18:35:07 +02:00
2025-06-02 23:34:10 +02:00
2025-06-03 18:19:25 +02:00
2025-06-08 15:44:54 +02:00
2025-06-07 01:06:19 +02:00
2025-06-13 22:06:54 +02:00
2025-05-29 22:40:58 +02:00
2025-05-29 22:40:58 +02:00
2025-05-29 22:40:58 +02:00
2025-05-29 22:40:58 +02:00
2025-05-29 22:40:58 +02:00
2025-05-29 22:40:58 +02:00
2025-05-29 22:40:58 +02:00
2025-05-29 22:40:58 +02:00
2025-05-29 22:40:58 +02:00

MyPastebin

MyPastebin is an application for creating and sharing text or file pastes with syntax highlighting. You can also access content in raw format and manage it through an API or a Bash client.

Features

  • Create text pastes or upload files with syntax highlighting.
  • Supports images, videos, and generic binary files.
  • View pastes in HTML or raw format.
  • User management: register new users and list existing users (admin only).
  • Interact with the application using curl or a Bash client.
  • List and delete pastes with authentication.
  • Deployable with Docker and Kubernetes.

Technologies Used

  • Python (Flask) for the backend.
  • SQLite or postgresql as a local database.
  • Pygments for syntax highlighting.
  • Docker and Kubernetes for deployments.

Installation and Usage

Using Docker

  1. Build the Docker image:

    docker build -t mypastebin .
    
    
  2. Start the container with Docker Compose::

    docker-compose up -d
    
  3. The application will be available at http://localhost:5000.

Using Kubernetes

  1. Apply the Kubernetes manifests:

    kubectl apply -f k8s/
    
  2. Access the service through the Ingress configured in your cluster.

Acceso a la Aplicación

the app will be available at : https://paste.priet.us.

Bash Client

The Bash client simplifies interaction with the service. Download it here:

Download Bash Client | GitLab Repository

Examples

  • Authentication:

    ./pastebin_client.sh login admin password123
    
  • Create a Paste (with expiration):

    echo "Hello World" | ./pastebin_client.sh create plaintext yes
    

    Creates a paste in plaintext format that expires in 1 day.

  • Upload a File (with expiration):

    ./pastebin_client.sh upload script.py python yes
    

    Uploads script.py as a Python paste that expires in 1 day.

  • View a Paste:

    ./pastebin_client.sh view 1
    
  • View Raw Content:

    ./pastebin_client.sh view_raw 1
    
  • List Pastes:

    ./pastebin_client.sh list
    
  • Delete a Paste:

    ./pastebin_client.sh delete 1
    
  • Search Paste Contents:

    ./pastebin_client.sh search "search term"
    
  • User Details:

    ./pastebin_client.sh details
    
  • Mark a Paste as Favorite:

    ./pastebin_client.sh favorite 1
    
  • Remove a Paste from Favorites:

    ./pastebin_client.sh unfavorite 1
    
  • Download a Paste:

    ./pastebin_client.sh download 1
    
  • List Favorites:

    ./pastebin_client.sh list_favorites
    
  • List Pastes Shared With Others:

    ./pastebin_client.sh shared_with_others
    
  • List Pastes Shared With Me:

    ./pastebin_client.sh shared_with_me
    
  • Share a Paste:

    ./pastebin_client.sh share 1 username true
    

    Shares paste with ID 1 with username, allowing edit if true is passed.

  • Unshare a Paste:

    ./pastebin_client.sh unshare 1 test
    
  • Edit a Paste (via Editor):

    ./pastebin_client.sh edit 1
    

    Opens paste with ID 1 in your default editor. Upon saving and exiting, the updated content is sent to the server.

Curl Examples

Interact directly with the service using curl.

  • Authentication:

    curl -X POST {{ request.host_url }}api/token \
                    -H "Content-Type: application/json" \
                    -d '{"username":"admin","password":"password123"}'
    
  • Create a Paste (with expiration):

    echo "Hello World" | curl -X POST {{ request.host_url }}paste \
                    -H "Authorization: Bearer <YOUR_TOKEN>" \
                    -F "c=@-" \
                    -F "lang=plaintext" \
                    -F "expire=yes"
    

    Creates a paste that expires in 1 day. Use expire=no for permanent pastes.

  • Upload a File (with expiration):

    curl -X POST {{ request.host_url }}paste \
                    -H "Authorization: Bearer <YOUR_TOKEN>" \
                    -F "c=@script.py" \
                    -F "lang=python" \
                    -F "expire=yes"
    

    Uploads script.py as a Python paste that expires in 1 day.

  • View a Paste:

    curl {{ request.host_url }}paste/1/json \
    -H "Authorization: Bearer <YOUR_TOKEN>"
    
  • View Raw Content:

    curl {{ request.host_url }}paste/1/raw \
    -H "Authorization: Bearer <YOUR_TOKEN>"
    
  • List Pastes:

    curl -H "Authorization: Bearer <YOUR_TOKEN>" {{ request.host_url }}pastes
    
  • Delete a Paste:

    curl -X DELETE {{ request.host_url }}paste/1 \
    -H "Authorization: Bearer <YOUR_TOKEN>"
    
  • Search Paste Contents:

    curl -X GET {{ request.host_url }}pastes/search?q="search term" \
    -H "Authorization: Bearer <YOUR_TOKEN>"
    
  • User Details:

    curl -X GET {{ request.host_url }}user/details \
    -H "Authorization: Bearer <YOUR_TOKEN>"
    
  • Mark a Paste as Favorite:

    curl -X POST {{ request.host_url }}api/paste/1/favorite \
    -H "Authorization: Bearer <YOUR_TOKEN>"
    
  • Remove a Paste from Favorites:

    curl -X POST {{ request.host_url }}api/paste/1/unfavorite \
    -H "Authorization: Bearer <YOUR_TOKEN>"
    
  • Download a Paste:

    curl -X GET {{ request.host_url }}api/paste/1/download \
    -H "Authorization: Bearer <YOUR_TOKEN>" \
    -J -O
    
  • List Favorites:

    curl -X GET {{ request.host_url }}api/favorites \
    -H "Authorization: Bearer <YOUR_TOKEN>"
    
  • List Pastes Shared With Others:

    curl -X GET {{ request.host_url }}api/shared_with_others \
    -H "Authorization: Bearer <YOUR_TOKEN>"
    
  • List Pastes Shared With Me:

    curl -X GET {{ request.host_url }}api/shared_with_me \
    -H "Authorization: Bearer <YOUR_TOKEN>"
    
  • Share a Paste:

    curl -X POST {{ request.host_url }}api/paste/1/share \
    -H "Authorization: Bearer <YOUR_TOKEN>" \
    -H "Content-Type: application/json" \
    -d '{
      "username": "test_user",
      "can_edit": true
    }'
    

    Shares paste with ID 1 with test_user, allowing edit if can_edit is true.

  • Unshare a Paste:

    curl -X POST {{ request.host_url }}api/paste/1/unshare \
    -H "Authorization: Bearer <YOUR_TOKEN>" \
    -H "Content-Type: application/json" \
    -d '{
      "username": "test"
    }'
    
  • Edit a Paste:

    curl -X PUT {{ request.host_url }}api/paste/1 \
    -H "Authorization: Bearer <YOUR_TOKEN>" \
    -H "Content-Type: application/json" \
    -d '{
      "content": "Updated content here"
    }'
    

    Overwrites the content of paste with ID 1 using JSON. Make sure the authenticated user has edit permission.

Description
No description provided
Readme BSD-2-Clause 10 MiB
Languages
JavaScript 97.6%
CSS 1.5%
Python 0.5%
HTML 0.3%