Π‘ΠΎΡΡΠΎΡΠ»ΡΡ ΡΠ΅Π»ΠΈΠ· Node-to-Node copy (NNCP), Π½Π°Π±ΠΎΡΠ° ΡΡΠΈΠ»ΠΈΡ Π΄Π»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ², ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ store-and-forward. ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ° Π½Π° POSIX-ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
. Π£ΡΠΈΠ»ΠΈΡΡ Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π½Π° ΡΠ·ΡΠΊΠ΅ Go ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ GPLv3.
Π£ΡΠΈΠ»ΠΈΡΡ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Ρ Π½Π° ΠΏΠΎΠΌΠΎΡΡ Π² ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ
ΠΎΠ΄Π½ΠΎΡΠ°Π½Π³ΠΎΠ²ΡΡ
friend-to-friend ΡΠ΅ΡΠ΅ΠΉ (Π΄ΡΠΆΠΈΠ½Ρ ΡΠ·Π»ΠΎΠ²) ΡΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π΄Π»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ fire-and-forget, Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½Π° ΡΠ°ΠΉΠ»Ρ, ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΡΡ ΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄. ΠΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Ρ (end-to-end) ΠΈ ΡΠ²Π½ΠΎ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΡΡΡΡΡ ΠΏΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΌ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΌ ΠΊΠ»ΡΡΠ°ΠΌ Π·Π½Π°ΠΊΠΎΠΌΡΡ
. ΠΡΠΊΠΎΠ²ΠΎΠ΅ (ΠΊΠ°ΠΊ Π² Tor) ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ
ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ
ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ·Π΅Π» ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΡΡΠΏΠ°ΡΡ ΠΊΠ°ΠΊ Π² ΡΠΎΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΡΠ°ΠΊ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈ push ΠΈ poll ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ.
ΠΡΠ»ΠΈΡΠΈΠ΅ΠΌ NNCP ΠΎΡ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ UUCP ΠΈ FTN (FidoNet Technology Network), ΠΊΡΠΎΠΌΠ΅ Π²ΡΡΠ΅ΡΠΏΠΎΠΌΡΠ½ΡΡΠΎΠ³ΠΎ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ ΡΠ΅ΡΠ΅ΠΉ ΡΠ»ΠΎΠΏΠΏΠΈΠ½Π΅Ρ ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ², ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
(air-gapped) ΠΎΡ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΡ
Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ
ΠΈ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΡ
ΡΠ΅ΡΠ΅ΠΉ. ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ NNCP ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΡΠ³ΠΊΠ°Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ (Π½Π°ΡΠ°Π²Π½Π΅ Ρ UUCP) Ρ ΡΠ΅ΠΊΡΡΠΈΠΌΠΈ ΠΏΠΎΡΡΠΎΠ²ΡΠΌΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Postfix ΠΈ Exim.
ΠΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ NNCP ΠΎΡΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ/ΠΏΡΠΈΡΠΌΠ° ΠΏΠΎΡΡΡ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π±Π΅Π· ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΡ, ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΡΡΠ»ΠΎΠ²ΠΈΡΡ
Π½Π΅ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΎΡΠ΅Π½Ρ Π±ΠΎΠ»ΡΡΠΈΡ
ΠΎΠ±ΡΡΠΌΠΎΠ² Π΄Π°Π½Π½ΡΡ
Π½Π° ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΡ
Π½ΠΎΡΠΈΡΠ΅Π»ΡΡ
, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π·Π°ΡΠΈΡΡΠ½Π½ΡΡ
ΠΎΡ MitM-Π°ΡΠ°ΠΊ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΡΠ΅ΡΠ΅ΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ
, ΠΎΠ±Ρ
ΠΎΠ΄Π° ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΡΠ΅Π½Π·ΡΡΡ ΠΈ ΡΠ»Π΅ΠΆΠΊΠΈ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠ»ΡΡ Π΄Π»Ρ Π΄Π΅ΡΠΈΡΡΠΎΠ²ΠΊΠΈ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΏΡΡΠ΅ΠΉ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΏΠΎ ΡΠ΅ΡΠΈ ΠΈΠ»ΠΈ ΡΠ΅ΡΠ΅Π· ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π½ΠΎΡΠΈΡΠ΅Π»ΠΈ, ΡΡΠ΅ΡΡΠ΅ Π»ΠΈΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅, Π΄Π°ΠΆΠ΅ ΠΏΠ΅ΡΠ΅Ρ
Π²Π°ΡΠΈΠ² ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅. Π ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΠΎ ΡΠΈΡΡΠΎΠ²ΠΎΠΉ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ Π²ΠΈΠ΄ΠΎΠΌ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ.
Π‘ΡΠ΅Π΄ΠΈ Π½ΠΎΠ²ΡΠ΅ΡΡΠ² NNCP 5.0.0, ΠΏΠΎ-ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ Π½ΠΎΠ²ΠΎΡΡΡΡ (Π²Π΅ΡΡΠΈΡ 3.3), ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ:
- ΠΠΈΡΠ΅Π½Π·ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ GPLv3+ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° Π½Π° GPLv3-only, ΠΈΠ·-Π·Π° Π½Π΅Π΄ΠΎΠ²Π΅ΡΠΈΡ ΠΊ Π€ΠΎΠ½Π΄Ρ Π‘ΠΠ ΠΏΠΎΡΠ»Π΅ ΡΡ
ΠΎΠ΄Π° Π ΠΈΡΠ°ΡΠ΄Π° Π‘ΡΠΎΠ»Π»ΠΌΠ°Π½Π° ΠΈΠ· Π½Π΅Π³ΠΎ;
- ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠ΅ AEAD ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅ ChaCha20-Poly135 128 KiB Π±Π»ΠΎΠΊΠ°ΠΌΠΈ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠ°Π·Ρ ΠΆΠ΅ Π½Π° Π»Π΅ΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΡΡ
ΠΏΠ°ΠΊΠ΅ΡΠ°Ρ
, Π²ΠΌΠ΅ΡΡΠΎ Π²ΡΡ
ΠΎΠ΄Π° Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Π³ΠΎ ΡΠΈΡΡΠΎΡΠ΅ΠΊΡΡΠ°;
- Π€ΠΎΡΠΌΠ°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΡΠΌΠ΅Π½ΠΈΠ»ΡΡ Ρ YAML Π½Π° Hjson. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΡΠΎΡΠ΅ ΠΈ ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌ, ΠΏΡΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠΌ ΡΠ΄ΠΎΠ±ΡΡΠ²Π΅ ΡΠ°Π±ΠΎΡΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ° Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ;
- zlib Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΆΠ°ΡΠΈΡ Π·Π°ΠΌΠ΅Π½ΡΠ½ Π½Π° Zstandard: Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠΎΡΠΎΡΡΠΈ ΡΠΆΠ°ΡΠΈΡ ΠΏΡΠΈ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠΉ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ;
- nncp-call ΠΏΠΎΠ»ΡΡΠΈΠ» ΠΎΠΏΡΠΈΡ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΠΈΠΌΠ΅ΡΡΠΈΡ
ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² (-list) Π½Π° ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Π΅, Π±Π΅Π· ΠΈΡ
ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ. Π ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ±ΠΎΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² (-pkts);
- nncp-daemon ΠΏΠΎΠ»ΡΡΠΈΠ» ΠΎΠΏΡΠΈΡ -inetd, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π΅ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΠΎΠ΄ inetd ΠΈΠ»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠ΅Π· SSH;
- Online ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΠΏΡΡΠΌΡΡ ΠΏΠΎ TCP, Π½ΠΎ ΠΈ Π²ΡΠ·ΡΠ²Π°Ρ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ ΠΎΠ±ΡΠ°ΡΡΡ ΡΠ΅ΡΠ΅Π· stdin/stdout. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: nncp-call gw.stargrave.org «|ssh gw.stargrave.org nncp-daemon -inetd»;
- ΠΡΡΠΆΠ΅Π»ΡΠ±Π½ΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΊ umask (ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ ΠΏΡΠ°Π²Π° Π΄ΠΎΡΡΡΠΏΠ° ΡΠΈΠΏΠ° 666/777) ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΡΡΠ°Π²Π»Π΅Π½ΠΈΡ umask ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠ°ΠΉΠ», ΡΠΏΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΉ spool-Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ ΡΡΠ΅Π΄ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ;
- ΠΠΎΠ»Π½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Go ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru