howto-db/data/pages/nex_protocol.txt
2024-04-25 01:00:04 +00:00

98 lines
4.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

====== Nex (протокол) ======
Минималистичный сетевой протокол семейства [[https://ru.wikipedia.org/wiki/Gopher|Gopher]] / [[:gemini_protocol|Gemini]] для обмена преимущественно текстовыми файлами.
От последнего отличается отсутствием:
* внешних и внутренних редиректов
* [[:gemini_protocol#коды_статусов|статус-кодов]] и других заголовков - MIME тип документа определяется расширением файла (по-умолчанию text/plain)
* разметки, за исключением кликабельных ссылок, в формате %%=> url/uri [alt]%%
* обязательной сертификации TLS, следовательно - привязки к домену посредством CN/SNI, что выгодно при использовании классической адресации 0200::/7 в Yggdrasil, где передаваемый трафик уже зашифрован а DNS - зачастую не используется
===== Спецификация =====
==== NEX ====
Сервер принимает подключения посредством TCP на порту 1900 и в зависимости от наличия слеша в конце пути запроса, возвращает либо директорию либо текстовый или бинарный файл.
**Пример запроса:**
<code>
telnet nightfall.city 1900
nex
</code>
**Подробнее:**
%%nex://nightfall.city/nex/info/specification.txt%%
==== NPS ====
Протокол отправки данных по типу Titan для Gemini, по-умолчанию используется порт 1915.
Целостность отправляемого пакета обеспечивается точкой в строке сообщения, после чего пакет считается отправленным и соединение с сервером прекращается.
**Пример запроса:**
<code>
nc nightfall.city 1915
classifieds
YOUR MESSAGE GOES HERE
.
</code>
Текст из файла
<file - file.txt>
classifieds
╦ ╦╔═╗╔═╗╔╦╗╦═╗╔═╗╔═╗╦╦
╚╦╝║ ╦║ ╦ ║║╠╦╝╠═╣╚═╗║║
╩ ╚═╝╚═╝═╩╝╩╚═╩ ╩╚═╝╩╩═╝
.
</file>
<code>
cat file.txt | nc nightfall.city 1915
</code>
Посмотреть отправленное сообщение можно по адресу:
%%nex://nightfall.city/classifieds/%%
**Спецификация:**
%%nex://nightfall.city/nps/info/specification.txt%%
===== Программное обеспечение =====
==== Клиент ====
=== GUI ===
* [[https://github.com/skyjake/lagrange|Lagrange]] (C) - браузер для различных smallnet протоколов, включая nex
=== CLI ===
* [[https://git.sr.ht/~hedy/gelim|gelim]] (Go)
* [[https://git.32bit.cafe/yequari/pynex|pynex]] (Python)
==== Сервер ====
* [[https://hg.sr.ht/~m15o/nexd|nexd]] - очень простой сервер на Go для публикации статики на 1900 порту, по-умолчанию открывает файлы с названием "[[https://hg.sr.ht/~m15o/nex-pfm/browse/handler.go?rev=tip#L93|index]]" (репозиторий mercurial)
* [[https://github.com/YGGverse/nexd|форк сервера nexd]] - включает пакет [[https://hg.sr.ht/~m15o/nex-pfm|nex-pfm]] и модифицированный для Linux / amd64 makefile
* [[https://hg.sr.ht/~m15o/kinex|kinex]] - проксирующий сервер на Go для публикации статики на 8080 порту, также добавляет разметку HTML
==== Библиотеки ====
* [[https://github.com/YGGverse/nex-php|nex-php]], [[https://github.com/YGGverse/nps-php|nps-php]] - PHP 8 / Composer библиотеки для разработки веб-приложений
===== Внутрисетевые ресурсы =====
* %%nex://[301:23b4:991a:634d::1900]%% - блог проекта YGGverse в формате [[:gemini_protocol#gemtext|gemtext]]
===== Ссылки =====
* [[https://nightfall.city]] (%%nex://nightfall.city%%) - домашняя страница - документация, полезные ссылки и ресурсы сообщества
* [[https://hg.sr.ht/~m15o/]] - тематические проекты с открытым кодом
* [[:gemini_protocol#сравнение|Сравнение протоколов gemini, spartan, scroll, nex]]