💾 Archived View for betahowto.duckdns.org › nex_protocol captured on 2024-05-10 at 10:44:13. Gemini links have been rewritten to link to archived content
View Raw
More Information
-=-=-=-=-=-=-
Nex (протокол)
Минималистичный сетевой протокол семейства Gopher ( https://ru.wikipedia.org/wiki/Gopher ) / Gemini ( gemini://betahowto.duckdns.org/gemini_protocol ) для обмена преимущественно текстовыми файлами.
От последнего отличается отсутствием:
- внешних и внутренних редиректов
- статус-кодов ( gemini://betahowto.duckdns.org/gemini_protocol#коды_статусов ) и других заголовков - MIME тип документа определяется расширением файла (по-умолчанию text/plain)
- разметки, за исключением кликабельных ссылок, в формате => url/uri [alt]
- обязательной сертификации TLS, следовательно - привязки к домену посредством CN/SNI, что выгодно при использовании классической адресации 0200::/7 в Yggdrasil, где передаваемый трафик уже зашифрован а DNS - зачастую не используется
Спецификация
NEX
Сервер принимает подключения посредством TCP на порту 1900 и в зависимости от наличия слеша в конце пути запроса, возвращает либо директорию либо текстовый или бинарный файл.
Пример запроса:
telnet nightfall.city 1900
nex
Подробнее:
nex://nightfall.city/nex/info/specification.txt
NPS
Протокол отправки данных по типу Titan для Gemini, по-умолчанию используется порт 1915.
Целостность отправляемого пакета обеспечивается точкой в последней строке сообщения, после чего пакет считается отправленным и соединение с сервером прекращается.
Формат взаимодействия с сервером может отличаться, обычно документация прилагается отдельно взятым ресурсом, но в целом принцип следующий
Пример запроса:
nc nightfall.city 1915
classifieds
YOUR MESSAGE GOES HERE
.
где строки:
- установка соединения посредством синтаксиса netcat
- целевой ресурс на сервере - в данном случае, аргумент указывает URI classifieds
- тело сообщения, можно указать несколько строк
- единственная точка в новой строке - завершает отправку, в содержимое сообщения данным сервером не добавляется
Текст из файла
file.txt
classifieds
╦ ╦╔═╗╔═╗╔╦╗╦═╗╔═╗╔═╗╦╦
╚╦╝║ ╦║ ╦ ║║╠╦╝╠═╣╚═╗║║
╩ ╚═╝╚═╝═╩╝╩╚═╩ ╩╚═╝╩╩═╝
.
cat file.txt | nc nightfall.city 1915
Посмотреть отправленное сообщение можно по адресу:
nex://nightfall.city/classifieds/
Также появился внутрисетевой сервер отправки сообщений KevaChat ( gemini://betahowto.duckdns.org/social_media:kevachat ), работает подобным образом:
nc 201:23b4:991a:634d:8359:4521:5576:15b7 1915
- В некоторых дистрибутивах для поддержки IPv6 в nc может потребоваться установка пакета netcat-openbsd
- IPv6 также поддерживается утилитами telnet и ncat (вместо nc ( https://netcat.sourceforge.net )), ncat лучше работает с кириллицей
- Для работы с кириллицей в терминале (на что собственно и ориентирован протокол), важно также убедиться в наличии поддержки окружением кодировки ввода UTF-8 (установить можно командой stty iutf8 в ~/.bashrc)
Спецификация:
nex://nightfall.city/nps/info/specification.txt
Программное обеспечение
Клиент
GUI
- Lagrange ( https://github.com/skyjake/lagrange ) (C) - браузер для различных smallnet протоколов, включая nex
CLI
- gelim ( https://git.sr.ht/~hedy/gelim ) (Go)
- pynex ( https://git.32bit.cafe/yequari/pynex ) (Python)
Сервер
- nexd ( https://hg.sr.ht/~m15o/nexd ) - очень простой сервер на Go для публикации статики на 1900 порту, по-умолчанию открывает файлы с названием "index ( https://hg.sr.ht/~m15o/nex-pfm/browse/handler.go?rev=tip#L93 )" (репозиторий mercurial)
- форк сервера nexd ( https://github.com/YGGverse/nexd ) - включает пакет nex-pfm ( https://hg.sr.ht/~m15o/nex-pfm ) и модифицированный для Linux / amd64 makefile
- next ( https://github.com/YGGverse/next ) - сервер на PHP с множеством настроек
- kinex ( https://hg.sr.ht/~m15o/kinex ) - проксирующий сервер на Go для публикации статики на 8080 порту, также добавляет разметку HTML
Библиотеки
- nex-php ( https://github.com/YGGverse/nex-php ), nps-php ( https://github.com/YGGverse/nps-php ) - PHP 8 / Composer библиотеки для разработки веб-приложений
- Ratchet ( https://github.com/ratchetphp/Ratchet ) - универсальная библиотека PHP 8 / Composer для разработки асинхронных серверов
Проксирование
В виду простоты протокола, передаваемые данные легко проксируются любым сервером, поддерживающим маршрутизацию потоков TCP
Nginx
/etc/nginx/nginx.conf
stream {
server {
listen 1915;
proxy_pass [IP]:1915;
}
}
Внутрисетевые ресурсы
- nex://[301:23b4:991a:634d::1900]/index.gmi - блог проекта YGGverse в формате gemtext ( gemini://betahowto.duckdns.org/gemini_protocol#gemtext )
- nex://[301:23b4:991a:634d::feed]/index.gmi - агрегатор лент RSS на базе движка с открытым кодом Pulsar ( https://github.com/YGGverse/Pulsar )
- nc 201:23b4:991a:634d:8359:4521:5576:15b7 1915 - NPS сервер KevaChat ( gemini://betahowto.duckdns.org/social_media:kevachat )
Ссылки
- https://nightfall.city (nex://nightfall.city) - домашняя страница - документация, полезные ссылки и ресурсы сообщества
- https://hg.sr.ht/~m15o/ - тематические проекты с открытым кодом
- Справочный материал по вариантам netcat (en) ( https://blog.ikuamike.io/posts/2021/netcat/ )
- Сравнение протоколов gemini, spartan, scroll, nex ( gemini://betahowto.duckdns.org/gemini_protocol#сравнение )
Материалы
https://ru.wikipedia.org/wiki/Gopher
gemini://betahowto.duckdns.org/gemini_protocol
gemini://betahowto.duckdns.org/gemini_protocol#коды_статусов
gemini://betahowto.duckdns.org/social_media:kevachat
https://netcat.sourceforge.net
https://github.com/skyjake/lagrange
https://git.sr.ht/~hedy/gelim
https://git.32bit.cafe/yequari/pynex
https://hg.sr.ht/~m15o/nexd
https://hg.sr.ht/~m15o/nex-pfm/browse/handler.go?rev=tip#L93
https://github.com/YGGverse/nexd
https://hg.sr.ht/~m15o/nex-pfm
https://github.com/YGGverse/next
https://hg.sr.ht/~m15o/kinex
https://github.com/YGGverse/nex-php
https://github.com/YGGverse/nps-php
https://github.com/ratchetphp/Ratchet
gemini://betahowto.duckdns.org/gemini_protocol#gemtext
https://github.com/YGGverse/Pulsar
https://nightfall.city
https://hg.sr.ht/~m15o/
https://blog.ikuamike.io/posts/2021/netcat/
gemini://betahowto.duckdns.org/gemini_protocol#сравнение
Навигация
Поиск
Главная страница
Редактировать
Проект β-Doku
Алиас
[0200::/7]
Alfis / Yggdrasil