Что CPYNET хранит, что никогда не хранит, и почему - проверено построчно по реально работающему коду, а не по шаблонной политике.
Содержимое paste существует только в памяти (RAM) - оно никогда не записывается на диск или в базу данных. Оно навсегда удаляется в момент прочтения (или когда исчерпан лимит чтений) либо по истечении таймера. Перезапуск сервера также приводит к потере любого ещё не прочитанного paste - это не баг, а весь смысл.
Если защищён паролем, он хранится зашифрованным с помощью AES-256-GCM; сервер держит расшифрованный текст в памяти только на краткий момент проверки пароля. При шифровании с нулевым разглашением сервер вообще никогда не видит ничего, кроме шифротекста - ключ расшифровки до него не доходит.
Каждый запрос порождает одну стандартную строку лога доступа: IP клиента, HTTP-метод, путь (например, /123456 - только код, никогда не содержимое), код статуса, длительность. Это идёт в собственный stdout сервера (обычно перехватывается systemd или Docker), сам CPYNET не хранит это в доступной для запросов базе данных.
Панель /admin (по умолчанию отключена, доступна только если задан ADMIN_PASSWORD) хранит последние 200 записей активности (кто что сделал, с какого IP) и накопительные счётчики pastes - только метаданные, никогда не содержимое, видимые только тому, у кого есть пароль администратора.
Ровно два: cookie lang, запоминающий выбор языка, и - только если вы действительно входите в панель администратора - сессионный cookie, ограниченный путём /admin. Никаких отслеживающих или рекламных cookies какого-либо рода.
По умолчанию отключён. Загружается только если тот, кто управляет конкретным развёртыванием, задаёт Measurement ID в своей собственной панели администратора - это их выбор для их экземпляра, сам CPYNET никогда не загружает трекер по собственной инициативе.
У сервера ноль внешних Go-зависимостей (чистая стандартная библиотека). Веб-страница загружает один шрифт из Google Fonts - единственный сетевой запрос к третьей стороне во всём продукте. Никаких других сторонних скриптов, CDN или трекеров.
CPYNET предоставляется «как есть», без каких-либо гарантий. Вы используете его на свой страх и риск. Тот, кто управляет конкретным экземпляром (оператор), не несёт ответственности за какой-либо ущерб, прямой или косвенный, возникший в результате использования - включая потерю данных (pastes по замыслу эфемерны и не могут быть восстановлены после истечения срока или прочтения), перебои в обслуживании, или что-либо, распространённое через него.
Вы несёте полную ответственность за то, что вставляете или загружаете: за законность, точность и своё право делиться этим. Не используйте это для распространения чего-либо незаконного, нарушающего права или вредоносного. Оператор может по своему усмотрению отозвать доступ, ограничить скорость или заблокировать источник, хотя в обычном случае содержимое просто никогда не проверяется (см. выше) - злоупотребления обычно выявляются автоматическими ограничениями ниже, а не ручной проверкой.
Чтобы один злоумышленник (или волна автоматизированных) не смог положить экземпляр для всех: записи и чтения ограничены по IP, общий объём памяти по всем активным pastes имеет жёсткий предел (при заполнении дальнейшие записи получают 503, вместо того чтобы процессу не хватило памяти), а загрузки файлов имеют более короткий максимальный срок жизни, чем обычный текст (см. справочник по API для актуальных лимитов). Ничто из этого не требует учётной записи и не идентифицирует, кто использует сервис, в обычном случае - это включается только при реальной нагрузке.
Дизайн CPYNET по умолчанию склоняется к минимизации данных: содержимое paste никогда не сохраняется постоянно, логи запросов хранят только IP, метод, путь, код статуса и длительность (ни имени, ни email, ни учётной записи, привязанных к запросу), а единственные cookies функциональны (язык, сессия администратора) - ни один из них не требует баннера согласия по GDPR или турецкому KVKK. Тем не менее сам CPYNET не является оператором данных; тот, кто управляет конкретным развёртыванием (self-hosted или иначе), несёт ответственность за свои собственные обязательства по соответствию - включая местоположение своего сервера и любое дополнительное логирование поверх, например собственные логи доступа обратного прокси.
Это небольшой, однофайловый сервис - если что-то здесь неясно, описанное выше поведение можно проверить напрямую: посмотрите, что вернёт повторное чтение того же кода, изучите заголовки ответа, или откройте вкладку «Сеть» в браузере перед отправкой чего-либо.