98 lines
4.7 KiB
Plaintext
98 lines
4.7 KiB
Plaintext
====== 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]] |