From cc951dcb53f2dcfc84c5b2ebaf1371cf4492ab47 Mon Sep 17 00:00:00 2001 From: Mark Qvist Date: Sat, 7 Oct 2023 12:40:30 +0200 Subject: [PATCH] Added RPC key configuration option to manual --- RNS/Utilities/rnsd.py | 11 +++++++++++ docs/Reticulum Manual.epub | Bin 2491507 -> 2491699 bytes docs/Reticulum Manual.pdf | Bin 2405997 -> 2406689 bytes docs/manual/_sources/using.rst.txt | 11 +++++++++++ docs/manual/searchindex.js | 2 +- docs/manual/using.html | 11 +++++++++++ docs/source/using.rst | 11 +++++++++++ 7 files changed, 45 insertions(+), 1 deletion(-) diff --git a/RNS/Utilities/rnsd.py b/RNS/Utilities/rnsd.py index dfde122..e772379 100755 --- a/RNS/Utilities/rnsd.py +++ b/RNS/Utilities/rnsd.py @@ -112,6 +112,17 @@ shared_instance_port = 37428 instance_control_port = 37429 +# On systems where running instances may not have access +# to the same shared Reticulum configuration directory, +# it is still possible to allow full interactivity for +# running instances, by manually specifying a shared RPC +# key. In almost all cases, this option is not needed, but +# it can be useful on operating systems such as Android. +# The key must be specified as bytes in hexadecimal. + +# rpc_key = e5c032d3ec4e64a6aca9927ba8ab73336780f6d71790 + + # You can configure Reticulum to panic and forcibly close # if an unrecoverable interface error occurs, such as the # hardware device for an interface disappearing. This is diff --git a/docs/Reticulum Manual.epub b/docs/Reticulum Manual.epub index b5fceff82e2ff3efe7fcf979145a083035679e73..f17502ae34d8addc20b1361793ee2b32fd22e4e5 100644 GIT binary patch delta 12583 zcmZA71yCGKyEfp(-Q6WDA$SPxPH+kC?ixJE;x0iKC%9X1cXxMpcekJS{p$NqoikNe zb?;PlZ}0TZGgVXfbx0CKbyyNaB`E|5!bCz1q}txX4h;ZcVgdk2006+q&eqAq)``*1 z-n1-9((alaJ?Q)q2eP6}wO<-}c|A+ej$wj*JrB=6TO1Q3)L3$8xc%I`>cmZ&@^f&< zUdy$8DnVq+Llqs88Pt;fmqe-?$SogzmQ6~n*vyLd=5JR1j!t&_;a%1EGUs>WK& zv*+d0x$RIXzM^jeh<-&(DpFAmijg8%~LmAl#box^J90karRad3SyawSq%LkLg=w$+FIoZBEfGxHBVnUT1_wDdr z*PxL>|CU32tT>xCU7*u8&)e~>%55c5zT|)elUc^m#KEZKY=&_0(2dEIurT4*Eu7en z9+9ne4j(d^vy%Ggb}=b$U`Euvp-L|d2bZ>fbdYX|d!kl#n4kGgi6e;m+`9D+9}QJL zisI5%NMdv_Q~_xe*%rT{^M);AZ@iN?FR4+E~L%9bSyJc6YDjm2uUbH zBSg_^IaU+?sb6|2q}^6vrad#F`nSB)EeN8&f1CW|A9}TCG#)MZ!~^IN!DpOfz9l{6 zIlYq=ugV1?sYJ>b*b$)9-z&n4+5!4JTRTaK(uTn6lnNkKT9ZqKzT}aps6C1M+nB6% zM3^44PRO?2pMyQ0uIM$!`q~rfQug{>TPtE2q(*Wm*i0hgjmjLLD%^D-K{-}8)Yk;= zii-eJ32``MSjclM7c?vhiR@Z@vOXmn3dy1>wCYT>le8maX*LkA3^7^AdiCQVM(|;p z(j7`Y|EYgXSzk1k864#sRAlsg|M=yu4{L&wl7RQDK_)-WT0|d>W%20t3V$f=HA4%( ze;rqor%3EQLd_nKKRuF6I^xb5H4uh9j5m<&o}?}2ar6RZ=h`_Jm&KQ&<&tF0bOQ17 ze5gxJs2@ekp$$lvGk~MHGu$^(#Eog6H>3P=675*#M?%Fm#0U+i8KTA%bV=VYR%pD8 zZC2R^ZO3o<*6>VCW77^XX4@1U;i6v`e)p<>p2H7pVQke3nPs!&@rLq{!KLS3$bIO0eZ?yraAG)4O{N%yb0Cy`x_3WH)MLBF#dV`+nY#qs`l&9%Isa2AAj z%y*R{B@fEZXna4zJy@-++BhNnB`cg`@;*mkioFSmg4RO8~}}l`Vb&;S-TeQy z@9gQOMr#D#)?J_TNERTm4~9&?s8>=|urhYU6kQXw>CIKS*Y2NPkT`9+wqKOK!6`^X zL1TXu6nMZ#nW^@LQA&jRr!$w@A@px2c~!3G-wM<>o@)#E0sv&E{HFprJ6hP9F}j&M z*;t=?Njt85kKH3_r%dFVQ|0UPY*)#iqf$KDa!L^WR8)SJFlY`z-XV&FU<~m+b}_h$ z|J2Jy?iy|{_?C$PBnk~V05?dfq0(H(`yGKigOv0v)5A@)<%O)DY+d)|_9h*a1P(iI4A1d**I?9h;^yGsI87De8Lr@NU9_HS>}7>ZI|$S)f6*M`)E1AgTR)ZK zUi{1Hwu^B2v)njDU}Il6K?&M18Lya^TRlP1>K8fpS-&#l%w(r?scoW$E@=q4v~+^- zRw^g`zC>126x3{Xun0zh1HmvTR|T3yQKHoa56N-3QK@LiBzad(s9&R!b~_h+)y3{k zSpOO6K(J7+KHNG1j@Hk+&?U{e&}*fGg%Rua=m$oD+Lla$L#31|QcT`f#c#2+if|bnCLa?EmwOK?6+Y%gc#33Qk#?1==vG5Gv&O#Du z)@&}nxA3PF7o|Bj7iUk8f5GmT!dpnl5dyK^k*VqbW|)5~rmt4U;~{u{U3-}9Ee~VS zI-v9dq0TOmRU!g)bD%; zzHJov2S!Y53JaCdC@b`Vn2#Lb=_5uahETrM{H>{lH8scSLH_+{QWbBj#CUB2r`P_A z>wI-k?stzzqo)cm1S!T8c)|ahUQ(IHm?9Vc`ayG-a=2G5p@0@6oL(Dvgx+pigc<%| zsf*~`9MI>X0nMePvS$3KR!Sm;*jCqzfQ)lP!4N_wGlV*~kv-?xAM$aX2W;UE_rb&T?;g6t( zu$>shXizAs#r83$q8j2-44r;?rm6$#DeX5AwA_wj1xm&&fjl_iVD13)gee1NuF$dg zCTN8b7|v$O=vc@Af_zFK09EGYO=J;uc5AR*_BTqwAlD=fTkXaUBO@mMW!LFuhnNRC zkcT=Hs!a@J4;`-dD5PpbTyOLGu>5IEMs_y(KGGYgHH*Sd!RT;u^%tOlzlrrN_;VaF z>`#U(l`tryWiQC?AQU938E<$Lp(pyRWR@hOHA5UR2lQ@UkOk6F&T_bNQKg`z&@|uj zZxJ1aI^1U+wnS2?1PPXj?cM!F#6|mBV_K+oxBMGGzGTWOV45Dc1Y0ssG>AS@wy>#e z5oxG7(Sh<+w38ExN2Fq(wm$Ex${$Ko0b^ex1Ywl{0HH{$peci(v^B2x_jOhjK3Ngc zWmW~z0=KFF5C*MaTu~)Mh*6`4VjqK?8WP#Qk@4d)GOS#Ze!{-sj&WIInLaGr3H-;l zF>i|&Ceor*-9P066a=uDfXoJ2C{ zf>l`1bX1p}o2bOtj`uSajWy9r&fg+TqQ$OlQw}t6<}_DKq*_G5v`!{pZq>Ie#r(8x zv4edl5UMAHrU$E0s0|dF02pI$1VQg(N(DhDVFa*;{!DjD?oN%O^^d}N6EAeF98gog z97a_JT~V>UdK8TEz4sP3H)o8|8f0N+g{ap5`K*4_EVCPdE*GUjcy&^|Ch$W<@dl3B zUmCZMV!oKNQEEt>D0JF$7QLOjy2E1bPVjSFh^CK>@ENqKL@nYq(eN%ok}>@T5_Vr9 ziS3r5?w~Ga993ANhGGwS(~Y)7GMtPCZK28@$Qzjtw#mA{2sv&-&m$K-r&h7a=kE;L z07q=b#3HUf6EG2T2NgRNuaqHzs`^Lyu0It5Ux{zvA+Q!RHXKHQE~w7;t#4`w#RQyf zJ+4G2+q&ziLk?3r#*0l$z10C78BV{sChA@Xuz-^arg04+#C%E>#*<9d`{JqdLrX&u zL|ALGE0x1YIzSJ@lFci8WJqS8Mk{8eS(e9sr&^EBNghMqwg>MdwP~i|J`f^-r&mZ^ zhGxlN1sHctApD`hj!jL0p@lGfc1qY)OcR-&^wahtQt#0sqv$C zqC3?+Vu&nWR=mZ8I@G^E9$*54yg&mFO3{s5V{MJ3^8RbFx+z6eO{6l!j)K|iu1Lt| z7Z8u?BQgh(7!5U7K8ZMJ&YCFG^6S15QBe}ZI7tT+dKTN|tb|e~uQtj^bp*nZ<%Jby z=1V2RmljwATuO;w`fwbXFe>Q^LGIOh!3keXm`93R zOdwJiS%wc)qTb1uFY@6EHJVK!Ai{AElq-5PU9Yu1G<|hjnr`tnre}EXE=}n?_>x|j zzn{4cPzl_d{NP1N3nBIOS@G_i5KWMe`|=>!oZxAT1cSZ{DJhr6=;f5t?i-I6Wz*j| z&{j2@s$kxd`-xy*s)OsM@e?Vdu}hNJhB7cs6ta_;WI+a&L4~G<=*;wjpm}Xo$()EL zf~D4qjvevxa9jucOW@(zLrN}!BXfx03C~qX^bwIkZyRNmqj!0Er_0(`GyMzq4MrOY zCt*ctFi8vd($l7u{lyUqEDi|W87K9T=f zIXk72Oj;tlW@DL`G4i<)w~l!XjGoG3on>cd;s`z_gS-vk{0o}B#aQ}eT%=bK!g#~a zgo0eXRQfh~;EBoGa}_7X?%%Jb_r~@EZ)z$hyS5AvlPdZXIbt2}Ai_Sy+~02ROT?*$ zWY^aEjUqNg00Dxe;?0&ym6I=(gLs_N1fvvx%CoTN;?$Vw4>KUWVB8d*56g|yrg~sY zdJZ)C_Z;f9^vvqFX<=|7xB}q+~fSI?X>_GqM$onW!1l6 z8252D;Xx{L-VqkrEp2fDhRRv~k*Sk4iX}83Cspe|%HqX1du9c8_t+0AWrOOm2nPJv zjpZe=TvKixF^v-qa5U}h!zsQ(*+OUz!hV7h#aa7WXllOpAT+^_W7d&s&J{F4>^dxH zsBEP?4}xmf6+JNX0O0#RU`P0&^7o+b?^Gs#Y5LReg^Cj-H{HI7L6*GnMg#+kr2?0` z%1?2f`pg+J&6AvIH`LWnNK?-EJI@7MpPR=aSXXhg z#~J9G6JMuZd%jO7o2298_!ld5Hpj=~5QYpHI$!OcfUpb>GNibobzdE{nGT%4VO5X( z4WJ^$ZeHJ!N=TGnf|@`_O$4ZO%(lpDd~wp6Bk}#Uh%bb|U0j(Ihpt0TjwEE>FZ*kBipfvD5$XW;=xXv!-A zQIiS8f~XbeX$@YcV1C6!%gWplOb9#ag`8K@)gk)xQVS$EYgTbMMt_?oHtELBN91yr zHM%oBcXat}@#T?=RJ+3m3DAp6H2fg+7@S7dd~E!dzjA~6YGB8egSRz)0*`U)u#(~V zB1}vNa(1rhiNo7kwL$O!<(#051)k3w26xwNf^;21mzKXSkFXH@rk2Br8~l|J6EXi) zMn3uEF!4u9HFtO{w9Yg0vK3v*lKxWgxpUkC?q09+wg&BqraCDdu6W&(7mHh~a+E75 zCeYm4Jbv6N41Q{HF*2%d3w1*RHS45LAG!Zi`6w6V4sBrURE%1Q5M|@m=>%ZU z9LQI^uR;*<5PE*bln{K~RMl2XA7N}!<$g+!n*$C37YdMM8rDE~Oc=nPGelTZI_0WH znK}Fn!{PvoC0F=iQV>1H4vr?`d4xj^k%8{-;#bY#J0_|}<+!7wCdMi;1K{Jwy%yKC zjt&M7Zx(RzZ-?H z{8t(x*$|s)+tM|DL%CLMIE-etWD&{}ezWrzYFBPGpGkRwtFTw%S0`!LP0*-bW9a3X z-dBoy*&OQ#_f$bhKxGhf>Utm~dl1lkat5bc5?dQ8m>V?cmkYn+a|@ghiX`Q|gI@YU zgc3q~FpkN(liW}=#`#`lu_5E)13T9i@r z@{%!e3LO_hb=ZwJNiVX@pyQ-PeNGHTmh_TaZ!BgPb8S*)qU*FYr2}NaazVT@`Zi0G zHUcZtbi#~KEYS++vLf6O!|+npH65LpCKXPKFQh^FHd&E^Sjgh;vCh3MC%?wBF_D*4 z7-pg)CWLjSTk04MwGzYICLB*^SNJ+Yk7?D%$_?W$Ay1U92(2t~Kt`$)TPbGPL)(LW z*$Y|Kp2trEC5T+wT|Hq3J_uXZ@)b}^;yf5Jv%=(y{4|UfAxO2r6qGQFtQ!_y@lrN& z3sI}WlvPDC{fyB3&wyxo>ls!8Ww8Cn$ z27{^LW-`u%BgX|HXEw!`=)Wr!)u_iLC1Q(9t-&IxOEXdryi z>}B+Osp<-X#fUAD_dSiCn~I{rGMpuh?dZ|KypG?X81gN5(yXn#+!q&Ln+|iHE*+`8uRZk&&dARmrB?aoZUX#1@=(Hd0T>dS@ zuKY4H^CHs^bLL6h?q=p;i_5Q)^wnO5h>}+xZ3>C`MDtpNd`256-3kFCb4b)@bn`O{ z5t9R%YYVe_hUhbAO;Fl9G{F~ilTU&pjAVug^Xf%=q9D&VgiMfTZ`csi#h?uPL(XI= zww!Ec69n|ZzzkMoipHlH{r3kFT#U_RbO)`nZt) zrozB-91?x5l4c;HhM%vB6IshU&zf8hH_b}$84B>0gFo>9!v!5UX+#!}U*)~tjvrf90 z?||1DxJ$cAE52@V)ZOKv)64wAxQ+CyaLir52kFv6a(p19gOW*f{5OJLW)>lKQtAAe zOE1~0iEjlH=M1{8JlyG;;LG8t!2A7s(dh`*G{~WOJ`e4E)16IVasPbszNQvOfIOzC z>Ar-@g7r^0!-G)$1~wG_Bi|Et2lt(16qhU!+S2Q(>~Wn3)^tsHeSymG7=Kzgl1jW! zNblv4{8kOt6v*auvv}*zG9g<#{#aj*giF4qqaC-!{pV#uJ_7DY{%3$m^Jrf&zt{a+ z6v(AzZ&kH`V5E8P0JUkW#5PJUh>Ez*vl3Bmt=&63_Tpah@l@dbQqOYg6t26Csi3`` zw%z7J#DjBr?j@NZ{M{bsEV0+7)M$n*Y6m;O#*QT&)@Tu_tFwWFc<3#+i+e=pgS7^p|(V=KjK0(+yx`pKgc+2GvXA!?=}S z>ekElVlSAR;PKp%t{)rp?SYjNbrni*ycS!}G|-`A=q2n<7K?BfGG!J$GuQ#bWnjsf z=C`}w^99nW*rePyC)%^#hMW6uK8&w?#HZ|=Mk=qb%v9JERdD9+HrN!h-$^E+r$KG` zHQdl`f!n%CHBUfae5ql7X*Z%qGBR?8MiW}@?uh4zx$P{30Riks2Hq7?)tI{rtaV9G zgd5}-Jxwm$v>d%Eg}T{20;^7UsKd9Q!#CBLFUEZDTkB&2-sr@}RR+A)>CPTmrY);g zcy`=(-mEcG(E(BpSSfaYq^n&V2SB=}d7q#FKULH6paKk4YFd$^c>X@8Sn!YtqJIy~ zzF9!vN*OjRuiI=E+Kd6fs)D zs3*QddGVjjCu1}EtRXX{JOm(`_W5)fxHtQ`Q80fis!UdQ2%6&1S~{6y)J@Ed5EKbZ7X(A z1&=j;L;AL+B4F@UmMWgaR%`83ZyKIy%JC|}y)B-MMM1m^>8S#A&5=rYd5OFhOyWaE(b(yhauGCtar3l;T5#&Md?6ez&rr9!{om(oKNV1t}>9?ISA=j1DU|PZl ze??dN=N~wzuvr38eXHake7I_c7BQiw?*S@O0VQ#S5;x_-4x-Da>{mr$6{(&}_rcQ| z3nX*|ow+2a`KuPp1jCd16X5Pms+GZl`yv-38M4lXd&`4Yf_wGZ9+_Tqq7Z#qB>TUG z^@n)qrxS5fe}jogmT3>4U*BjDaYAyvS+m>n7KA4412K|_xM%U2nlvKj1|I2(vUQSs zrq=qR-Nhg4y@@y4lL~=ly~bDP?soR!$ctlww;zVzEfa&3yD{InRvZ5)e#Ii8zAhL3 zOV}z@#xV2+Er5|T{id}zI(*L&i2Zc>XAm6Qc2p)B9ls6RH7!(aH?L0g4~VA zQ_`}8YMcrSmPNzmC>-tzNIJ}&6^{DBD%Uldo4Bv-INP$kI6`Y6yD`o6sRai!Xx8S% z)s{`Pwz-)6&U^`rdn>{p!wG>?Ss3Z@PagFPDRmqcm(}cj->y0!X zk{mEO+`(?|EQmAk#POml-u4^t>xms}sD)OymfUOf)xE$@L$L;!s4MQWFOOOM!0+SV zB+QO3;GKE{sY8B0fU#ky!l}X57=&tN)fj}U?(Yi8nWmjqN~IMJ9x!jmPye1L;2WdH z8@PVB*@i=0Q?`b)6}^8|p}*R}m^mjNg)<`hZNV|WiO<6PQ~W_Eoptd5rsD~8 zAUe-1?#CHX&g(X3o%1?@%pj4Os3|HDO#W8ZjmXQ0+Kd}TM zvpBG?tu^4?Kg|m&NxJ7u3f}n{fLK&kB|#_8aYE4M%>wZKzK}j*?pYa2gbBKtP3K)R zcEn+u@GHxsy53*qZqVPk*0xOFSDH+ScYQuyGmTZwqGO_*I%rSGEjh!4yF9L}ZdSZ$ zLwBiv0$DDNzE?ahNS_Ev3YA7uPV|o*`R0o6E+rOPq=cdfQ?LeRr_FF%-0+sf^e+z8 zsL1K}8O2qpq+5O}B)7&nNX0q5o6KbHFB|o(R(f9~roX?CuB})>=$jeVD{ZPjX!0sP zjfrw!5^U1(nAls(e`;`p9Nj!wwJAi6p&@Y{2i4ABnkuJ%mUs@ZsSLiy?j)5qbF}(2 zA(BQ7o%aJ7z93Sq<$R7S1(hfjmm{pp&SLJ@tOCc2t{gH_5dW7b@^Q+(y2i@^dSJ$* zQjG)COj9}YV-kkrMnJRTQr|T$!THQW3YvVwbhFuvsX1dNHn1@cu*Upz=~Q^HPs6T! z3v{IzhTVC19BR}}518(mo2$rR|AKLKP1 zJRBu-ulTPS?e=hoyP@~bb$SR4b5xW2LDHD+oNBPsclNwk%%fko(tw|A4i2!;mjb27 zaMI;b{%(eCFTCy}L%l7EN=#P?5Wc%u2qfQ;%6Oc*l;p%aI#}pfa6GPtVL;C=w6p^5lBAHx(e}56!EV&^z=B!B^@gssKJgg07~> zIezOloFcES74}$HKZ$85$cp<{DOHz~q3+s;P_V92@XCJvD{yoh{OopK-g3Xu>VZ=g zc>n9v!j;-mdtRg*E7M^|%!&nlGZlvXC%*0Eaeec}!*ab+NW=YK#d2rtiNW_@^@n}E zpVAq>!WP)ZXlIWqa7b$-*MEi_hzFUK{1M5~KK-s|q)@358s$YE05LoY%R3NZQD;1z z{m3;p(#=4S&+2jUR(=4%=LS-HqSEV;hVI{JXCv7}tNCM;RktLBR_#lQu<5_6`a(*d z3Dp8OOcMM1?%;~+t@8A zTw<5c)%sx;eu^CML6-Qk`Tj)$sIaZ(D+zCH?Q?L&>1XR3 zeY?O6B`D!5v^#8XVin$Qf+f)Eqy`fm;;))7J!jQ5L@Tlb*zsLDDqJ>uPbLRV-^%fD z;@kAPuHbY*Mswb^TocCG`!=`jt_n`hL#5qTf7C#DaY7rx{)033&98^*fvp*7PM?MB zn2F^)+v^>_JR6n!)5r`&IF!!cu?gIh+hb)^YPI92kka3mzN%Wa>_33yuX;;cp5`(e z8d>Q^os8K~?Ub5XwXQ|DnIQ%n`{^W)ukplD*HNIhQt-wEA^3=1q;mIZJuA_Eh;)BO z#q{1$y1b_UoAE8`JGz>homF6Z*8`~r0b_* zF`g9rv4crRAjHi{eJm$vZ#m089Q69LobJ*iCfvTG0CgrzOM^nyMPA!Uhm)h4tZ#Ehc!(gy%J?>P>dBgLX` z=kTlr!&=6)reNfZi(QH|T*cPUD7WfUo3UR9$G*&&^A6}w6Pn;;__Gm$k$Q|qp2W$ZO8H^BX z2)xYms!%-#{8LUL-VM|uiTp0}kzDhe6K8zunZFMOsWJtFnbtF8@}UL~UrY{$trudB z1&EhOcGr3)bI_MeP~v6Hp4$6;nwG8|#YZxWLt_FVk?!OEd-;XNs?7O?mLolb6n?n( zuR;m4)gMYd#SmFXo*Oq_fH-6|{1iO+VY9TWb+^bE`zT#f18{}snRThrR zBoXt`*B`{(Mp3w>WF>dUn0&anWoo|pJQ7>=e*JdmeOuDuy~kC_HB;wW9j{qIqs|c> zTf?dWy4|}VfjPlnijYZ|`*{7IMvP)7lT!C>|E1b=Zu7pmGsBw+4diSHqT;3$r z2tf!Sm~Pc=NstFBmK0uV_wQl?aq~nb6g%Z$*`HdT)8+_p9DyFGiVQ+h;62a2vOfmN$V?Oh=Ln6_x!6JC2& z2%*0)jyRrqI^;Zv6vY0{a+RwKjw0ILD>ZWmLS5 zSi)m5jaEYyt{{>m7}iqw?jd`82>q5QW)OtEk7Stow2LF|Kl?d{zfC=}b#GA%&7u?J z@1>K=DA}bLxpP!G%<%MfA=3HDe^FIB>}=k(Oz{UVFXPZvt-<~(ew1Gv`x|1ybi&a? zj2)dJ=AX=bdZ4cV6D#RLk^wY1{{DFy8x4uOi68SLcA!df^78!Ud2QqM40^wKVlvhl z`*&ZHvPybcp6C0}%+uc~f{YPZ45QYdu9eJ_a@Ydo^kv=oz{_8CG}XhMGP33@jU?Zi zxTvKEfSd(%wl_GJwq9D)Y%^*TKsRkQ1r-xa^0DbMkVc4aT75jP*4HtGWn)LpSLrH!4jHHN6|vhD$S{Fj5EKiR+3 z5;V_aNu8z*=r0)(@u{Tt$^eZCn)kSwqZ-?OYt4Zvt<=lC>tm5j`+(z9PW@k~r1{6* zUp`xEnzq$(vabaRk36+H)F1nd6Qkr8FQnq@oc+QD=p91CDol5hnGnt_PmMTTZrYIe zJr7DHXsC{9Atx{bB$99LQuX^l9@7KpV$I(~W7zbHiKPklh0~^VZhx`l*qAwPx-ONK zXu)d+0BX4y`=;jk1gXWeBt55XZY6RAE?)Fue&qCc_;pzbg4??}j0wQ_rJ;l(kFZqJ zvc$r}F2++*C5eYyOytyd513XjbuojM9Ik&74+^sw+ntrK4Wz_DA2XYou`i?spVx_1uvQ zK5ZFQhG*RMUh^1dNRX#@)`O}H)=O#IwwR%gZ8!})kjY8wnf_c|eE1h>9vU^S60GkAGna7`Isae)lU) zKJvQt6pon_m(OMNOVtzelJ?fqT7R{+q}Vc_+*Dnn@r>5HR2G3&DS$8L-%zu{_3m-@ z9pzbS9Nx2c#f!Vl(75lA@<_WHk?+li5&rRsZ?&3eLDAB zo$SQljh(#x8+kJ^2t)cHV1~c1^i;5$+obW$=`CNY-g=o_Rk-(F%&mVY+GJ^KEtu1| zs(mULSFJz9>q^a{F}uisp%UEk2<#ks`& z=Tsjm0x@BJ1_9nx{i1(?P?nDma=gQzzr)$$uXXq7$z>dEQZl>~3cK`7h0iQEH`Jd@Au5T1y?H0_N;eoq5o#s5A3&=DbW=^N*#a>`G zB8!i1#l0YnK>*4;GB8X_s-djDRJWRJdyT7 z8nxzhf0&k%wt*qG<>O{&acp=*GC1TzbWW=7oWfDoLBv8da~OoA$N~puHKdOjUr!}_ zzYCBtlZ5`zty=;)Rq9|_4Q2x)xhLV!b7pcE1HYu25gc>D#8x{<`_HlO@1Ywx_WEO` z_^Gmg5l@|7kAr96LjMJ zxxe(c5k&cjEy2ohsE>|kp}M3MG@lH#T9GlGLDGE|`~34TeAY6E6hSfqmnA$K35LN< zn}^NAM*Cjj)G_X+@S%uu8ruJp8{ zKxvw)CKHo06Ys7E18;i{`(q?z4VNrK6JGtt#^$bx<9SR1c@B>-m9iK+UmItl&KjUM zoS{hsvgza}Y+~!V&ib$Utv2s_tLJCuE2@1DuZ>>#*)2CGa(E!QMg-f9NVAbj4$KX& zK<$FuO6oQF=s9bl;Wiv^g511ldMu*8l#?CPB?_o*4CFdl6|k4{K`MG3TH0Ru(jsz> z&Y}@NsNC344yKRzlKB)a76FZauT{_`cO(_j;*JAxxIEbpRc92UR!5L zJpDxAyArI#N~G6oAp`1mJe#%#mhy1kgJf~e0+$of3;Dw2SE;n=<%JH$6I8jh>MNGg=%MKe+#@z z`~dX<`UA`d*bi_Y;6EUIK>UF80r>;U2h=OCQPo=)0So_4 zkJjTI1G~`>KFOn(NG;900=$=0N_62r~f^2eI3Cp&p=j)3$WQU zkO#Rr82~V~`)TfMV_*w*cm`tqJDT)UcuNT)08lLt0HFSN=trCDI{@DJ7zU9ECVl~m z@huJk0Okfija?0Xn*1lKsvr#ki4FDt1FveNS*pPPk3fB$_?VNC*)KR(u8WLQI0AUV+>Y&)~sVAmzUc{J&w@ z|Cx3LjQ9rRM1UEF0JxePI9dGrqrkdvKvKw}MX>i9P#mgb1{zE<1C0+}e*@A&Hm!q^ z-hpBeb6~}HpeSUy3mE(k6oJ(G1YY@QA*K_^slP+?C0J04K$7_?T}Mi$OvB z{RGyn`a}v=hoDCOcTw<6!nD080Khai0D$q|75#hFcESD-)cg>O;4TPiQHWVE93-_U z)D@TtEDxr_1Diln(?Uw5f@2`5$;toOJS*T2M7xiR2FDBlp#QIl7}CI#kkq^oLts=W zYCcG!BCzZ~ZF&(n0*adSpFaq=42qfvlB^g!1Vt?fbyG|QRxG9>p!>i3(!D{){s|2L Z81n!C5dPO!41pD)sfl5+pMf8z{~s}V>RJE* delta 12360 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 bdEov=_#AM%>?uw)ZEeH}IXM$s(-Z#(>@vbm diff --git a/docs/manual/_sources/using.rst.txt b/docs/manual/_sources/using.rst.txt index 5b6ed48..ef8a4c5 100644 --- a/docs/manual/_sources/using.rst.txt +++ b/docs/manual/_sources/using.rst.txt @@ -99,6 +99,17 @@ configuration file is created. The default configuration looks like this: instance_control_port = 37429 + # On systems where running instances may not have access + # to the same shared Reticulum configuration directory, + # it is still possible to allow full interactivity for + # running instances, by manually specifying a shared RPC + # key. In almost all cases, this option is not needed, but + # it can be useful on operating systems such as Android. + # The key must be specified as bytes in hexadecimal. + + # rpc_key = e5c032d3ec4e64a6aca9927ba8ab73336780f6d71790 + + # You can configure Reticulum to panic and forcibly close # if an unrecoverable interface error occurs, such as the # hardware device for an interface disappearing. This is diff --git a/docs/manual/searchindex.js b/docs/manual/searchindex.js index 097ccdb..6921d2e 100644 --- a/docs/manual/searchindex.js +++ b/docs/manual/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["examples", "forhumans", "gettingstartedfast", "hardware", "index", "interfaces", "networks", "reference", "support", "understanding", "using", "whatis"], "filenames": ["examples.rst", "forhumans.rst", "gettingstartedfast.rst", "hardware.rst", "index.rst", "interfaces.rst", "networks.rst", "reference.rst", "support.rst", "understanding.rst", "using.rst", "whatis.rst"], "titles": ["Code Examples", "An Explanation of Reticulum for Human Beings", "Getting Started Fast", "Communications Hardware", "Reticulum Network Stack Manual", "Configuring Interfaces", "Building Networks", "API Reference", "Support Reticulum", "Understanding Reticulum", "Using Reticulum on Your System", "What is Reticulum?"], "terms": {"A": [0, 2, 5, 6, 7, 9, 10, 11], "number": [0, 2, 5, 6, 7, 9, 10], "ar": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "includ": [0, 3, 4, 5, 7, 9], "sourc": [0, 2, 3, 6, 9, 11], "distribut": [0, 2, 6, 7, 9, 10], "reticulum": [0, 5, 6, 7], "you": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "can": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10], "us": [0, 3, 4, 5, 6, 7, 9], "learn": [0, 2, 8, 9], "how": [0, 2, 3, 5, 6, 9, 10, 11], "write": [0, 2, 5, 7, 9, 10], "your": [0, 2, 3, 4, 5, 6, 8, 9, 11], "own": [0, 2, 6, 7, 9, 10, 11], "program": [0, 3, 4, 5, 7, 9, 11], "The": [0, 2, 3, 4, 5, 6, 7, 11], "demonstr": [0, 5], "bare": 0, "minimum": [0, 5, 6, 9], "setup": [0, 2, 4, 5], "requir": [0, 2, 5, 6, 9, 10, 11], "connect": [0, 3, 4, 5, 6, 7, 9, 10, 11], "network": [0, 3, 5, 7, 9, 10, 11], "from": [0, 2, 3, 5, 6, 7, 9, 10, 11], "In": [0, 2, 3, 5, 6, 7, 9, 10, 11], "about": [0, 2, 3, 5, 6, 7, 9], "five": 0, "line": [0, 2, 4, 5, 6, 9, 10, 11], "have": [0, 2, 3, 5, 6, 7, 9, 10], "stack": [0, 2, 6, 7, 9, 10, 11], "initialis": [0, 7, 10], "readi": [0, 2, 3, 5, 6, 7, 11], "pass": [0, 3, 5, 6, 7, 9, 10], "traffic": [0, 2, 5, 6, 7, 9, 10], "thi": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "rn": [0, 2, 3, 7, 9, 10], "start": [0, 3, 4, 5, 7, 9, 10], "up": [0, 2, 3, 5, 6, 9, 10, 11], "gener": [0, 2, 3, 5, 6, 7, 9, 10, 11], "new": [0, 4, 6, 7, 9, 10], "destin": [0, 2, 4, 6, 7, 10], "let": [0, 2, 5, 6, 9, 10], "user": [0, 2, 5, 6, 9, 10, 11], "send": [0, 5, 7, 9, 10], "an": [0, 2, 3, 5, 6, 7, 9, 10, 11], "import": [0, 2, 3, 5, 6, 7, 8, 9], "argpars": 0, "": [0, 2, 5, 6, 9, 10, 11], "defin": [0, 5, 7, 9, 10], "app": [0, 2, 7, 9], "name": [0, 4, 5, 6, 7], "we": [0, 2, 3, 5, 8, 9], "ll": [0, 2, 11], "all": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "creat": [0, 4, 5, 6, 7, 9, 10, 11], "sinc": [0, 2, 5, 6, 7, 9], "basic": [0, 2, 4, 7, 10], "i": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10], "part": [0, 5, 6, 7, 9, 10], "rang": [0, 2, 3, 5, 6, 9, 10, 11], "util": [0, 3, 4, 5, 9], "put": [0, 3, 5, 10], "them": [0, 2, 3, 5, 6, 8, 9, 10, 11], "within": [0, 2, 5, 6, 7, 9], "namespac": 0, "example_util": 0, "app_nam": [0, 7], "execut": [0, 2, 5, 7, 10], "when": [0, 2, 3, 5, 6, 7, 9, 10], "def": 0, "program_setup": 0, "configpath": 0, "must": [0, 2, 5, 6, 7, 9], "first": [0, 2, 5, 7, 9, 10], "randomli": [0, 9], "ident": [0, 2, 4, 7, 10, 11], "our": [0, 9], "just": [0, 2, 3, 5, 6, 9, 11], "endpoint": [0, 6, 7, 9], "address": [0, 2, 5, 6, 7, 9, 11], "commun": [0, 2, 4, 5, 6, 7, 8, 9, 10, 11], "also": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "exist": [0, 2, 3, 5, 9, 10, 11], "which": [0, 2, 5, 6, 7, 9, 10], "know": [0, 2, 3, 6, 7, 9, 11], "thei": [0, 2, 5, 6, 7, 9, 10], "reachabl": [0, 2, 5, 6, 7, 9, 10], "automat": [0, 2, 3, 5, 6, 7, 9, 10, 11], "path": [0, 2, 3, 5, 7, 9, 10], "anywher": [0, 5], "els": [0, 2, 6, 9], "IN": [0, 7], "singl": [0, 5, 7, 9, 10, 11], "minimalsampl": 0, "configur": [0, 2, 3, 4, 6, 7, 9, 11], "prove": [0, 9], "packet": [0, 2, 4, 5, 6, 7, 10, 11], "By": [0, 2, 5, 7, 9, 10], "do": [0, 2, 3, 5, 7, 9, 11], "proof": [0, 7, 9, 10], "each": [0, 2, 5, 6, 9, 10], "incom": [0, 5, 7, 10], "transmit": [0, 5, 9], "back": [0, 5, 9, 11], "sender": [0, 2, 6, 9, 10], "anyon": [0, 2, 3, 5, 6, 7, 9, 10], "tri": 0, "whether": [0, 5, 7, 9], "wa": [0, 3, 5, 6, 7, 9, 10, 11], "receiv": [0, 2, 5, 7, 9, 10], "correctli": 0, "set_proof_strategi": [0, 7], "prove_al": [0, 7], "everyth": [0, 6, 9], "hand": 0, "over": [0, 3, 4, 5, 7, 9, 10, 11], "control": [0, 2, 3, 4, 6, 7, 9, 11], "loop": 0, "announceloop": 0, "log": [0, 5, 10], "prettyhexrep": 0, "hash": [0, 2, 7, 9, 10], "run": [0, 2, 3, 5, 6, 7, 9, 10, 11], "hit": 0, "enter": [0, 10], "manual": [0, 2, 5, 6, 7, 10], "ctrl": 0, "c": [0, 6, 10], "quit": 0, "until": [0, 2, 5, 7], "exit": [0, 2, 7, 10], "If": [0, 2, 3, 5, 6, 7, 9, 10, 11], "server": [0, 2, 3, 4, 7, 10], "client": [0, 2, 3, 4, 7], "messag": [0, 2, 7, 9, 10], "direct": [0, 2, 3, 6, 7, 9, 10], "toward": [0, 5, 9], "while": [0, 2, 3, 5, 6, 7, 9, 11], "true": [0, 2, 5, 7, 10], "input": [0, 10], "sent": [0, 2, 7, 9, 10], "startup": [0, 10], "get": [0, 3, 4, 5, 7, 11], "pars": 0, "desir": [0, 3, 5, 9], "mode": [0, 2, 3, 4, 9, 10, 11], "__name__": 0, "__main__": 0, "try": [0, 4, 5], "parser": 0, "argumentpars": 0, "descript": [0, 10], "add_argu": 0, "config": [0, 2, 6, 10], "action": 0, "store": [0, 3, 9, 10], "default": [0, 2, 3, 5, 6, 7, 9, 10], "none": [0, 2, 5, 7, 9, 10], "help": [0, 6, 8, 9, 10, 11], "altern": [0, 2, 5, 10], "directori": [0, 10], "type": [0, 2, 4, 5, 6, 7, 10], "str": 0, "arg": 0, "parse_arg": 0, "configarg": 0, "except": [0, 5, 7], "keyboardinterrupt": 0, "print": [0, 5, 10], "found": [0, 2, 5, 6, 9, 10], "http": [0, 2, 8], "github": [0, 2, 8], "com": [0, 2, 8], "markqvist": [0, 2, 8], "blob": [0, 9], "master": [0, 7], "py": [0, 2, 9, 10], "build": [0, 2, 3, 4, 5, 9, 11], "upon": [0, 9], "previou": 0, "explor": [0, 9, 11], "notif": [0, 7], "relev": [0, 3, 5, 7, 9, 10], "set": [0, 2, 3, 5, 6, 7, 9, 10, 11], "callback": [0, 7], "applic": [0, 5, 6, 7, 9, 10, 11], "arriv": [0, 9], "random": [0, 7, 9], "two": [0, 2, 3, 5, 6, 7, 9], "list": [0, 2, 3, 5, 7, 9, 11], "string": [0, 7], "app_data": [0, 7], "fruit": 0, "peach": 0, "quinc": 0, "date": [0, 2], "tangerin": 0, "pomelo": 0, "carambola": 0, "grape": 0, "noble_gas": 0, "helium": 0, "neon": 0, "argon": 0, "krypton": 0, "xenon": 0, "radon": 0, "oganesson": 0, "announcesampl": 0, "space": [0, 2, 3, 6, 9, 11], "destination_1": 0, "destination_2": 0, "handler": [0, 7], "onli": [0, 2, 3, 5, 6, 7, 9, 10, 11], "ask": [0, 2, 3, 7], "chang": [0, 2, 5, 7, 9, 10, 11], "filter": [0, 6, 9, 10], "see": [0, 2, 5, 6, 7, 9, 10, 11], "what": [0, 2, 4, 7, 9], "happen": [0, 7, 9], "announce_handl": 0, "exampleannouncehandl": 0, "aspect_filt": [0, 7], "regist": [0, 7], "transport": [0, 2, 4, 5, 6, 7, 10, 11], "register_announce_handl": [0, 7], "select": [0, 5], "randint": 0, "0": [0, 2, 5, 7, 9, 10, 11], "len": 0, "1": [0, 2, 5, 7, 9, 10], "data": [0, 2, 3, 4, 5, 6, 7, 9, 11], "encod": [0, 7], "utf": 0, "8": [0, 5, 10], "nobl": 0, "ga": 0, "noble_ga": 0, "need": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "class": [0, 6, 7, 11], "method": [0, 2, 5, 7, 9], "take": [0, 2, 5, 9, 10, 11], "option": [0, 2, 3, 4, 6, 7, 9, 10], "argument": [0, 7, 10], "instanc": [0, 4, 5, 7, 9, 10], "some": [0, 2, 3, 5, 6, 7, 9, 10], "want": [0, 2, 5, 6, 9, 10, 11], "aspect": [0, 3, 5, 7, 9, 10], "__init__": [0, 7], "self": [0, 6, 11], "call": [0, 6, 7, 9, 11], "system": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11], "match": [0, 5, 9, 10], "specif": [0, 3, 4, 5, 7, 10, 11], "cannot": [0, 2, 5, 11], "wildcard": 0, "received_announc": [0, 7], "destination_hash": [0, 7, 10], "announced_ident": [0, 7], "contain": [0, 6, 7, 9, 10], "follow": [0, 2, 3, 5, 7, 8, 9, 10, 11], "decod": 0, "plaintext": [0, 7], "unencrypt": [0, 7, 9], "inform": [0, 2, 4, 5, 6, 7, 9, 10], "ani": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "listen": [0, 5, 9, 10], "sy": 0, "did": 0, "one": [0, 2, 3, 5, 6, 7, 9, 10, 11], "public_inform": 0, "ad": [0, 3, 4, 5, 6, 7, 9, 11], "so": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "differ": [0, 2, 3, 5, 6, 7, 9, 10, 11], "plain": [0, 3, 5, 7, 9], "uncencrypt": 0, "broadcast_destin": 0, "specifi": [0, 2, 3, 5, 6, 7, 10], "everi": [0, 5, 6, 7, 9], "time": [0, 2, 3, 5, 6, 7, 9, 10], "set_packet_callback": [0, 7], "packet_callback": 0, "main": 0, "broadcastloop": 0, "simpli": [0, 2, 3, 5, 6, 9, 10], "out": [0, 2, 3, 5, 6, 7, 9, 10, 11], "r": [0, 5, 9, 10], "n": [0, 9, 10], "end": [0, 5, 6, 7, 9, 11], "stdout": [0, 5, 10], "flush": 0, "text": [0, 2, 6, 9], "prompt": 0, "channelarg": 0, "between": [0, 5, 6, 7, 9], "interfac": [0, 3, 4, 6, 7, 10], "simpl": [0, 3, 7, 9, 10, 11], "respond": [0, 7, 10], "receipt": [0, 7, 9], "choos": [0, 2, 5, 9], "global": [0, 2, 5, 6, 9, 11], "server_ident": 0, "queri": [0, 2, 7], "abl": [0, 2, 5, 6, 7, 9, 10], "verifi": [0, 7, 9, 10, 11], "repli": [0, 10], "encrypt": [0, 2, 6, 7, 9, 10, 11], "wai": [0, 2, 5, 6, 7, 9], "certain": [0, 5, 6, 8, 9], "than": [0, 2, 5, 6, 7, 9, 10], "read": [0, 2, 5, 7, 9, 10], "echo_destin": 0, "tell": [0, 5], "function": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11], "server_callback": 0, "wait": [0, 5, 9], "go": [0, 2, 5, 9], "handl": [0, 3, 5, 6, 7, 9, 10, 11], "reception_stat": 0, "is_connected_to_shared_inst": 0, "reception_rssi": 0, "get_packet_rssi": 0, "packet_hash": 0, "reception_snr": 0, "get_packet_snr": 0, "rssi": [0, 10], "dbm": [0, 5, 10], "snr": [0, 10], "db": [0, 10], "destination_hexhash": 0, "timeout": [0, 7, 10], "binari": [0, 2, 7, 9], "represent": [0, 7], "command": [0, 2, 5, 10], "dest_len": 0, "truncated_hashlength": [0, 7], "2": [0, 5, 7, 9, 10], "rais": [0, 7], "valueerror": [0, 7], "length": [0, 5, 7, 9], "invalid": [0, 7], "hex": 0, "hexadecim": [0, 9, 10], "charact": 0, "byte": [0, 7, 9, 10, 11], "format": [0, 4, 10, 11], "fromhex": 0, "e": [0, 6, 10], "check": [0, 2, 7, 9, 10], "overrid": 0, "loglevel": [0, 7, 10], "provid": [0, 2, 3, 4, 5, 6, 7, 9, 11], "feedback": [0, 4], "log_info": 0, "doe": [0, 2, 3, 4, 5, 6, 7, 9, 10], "load": [0, 2, 7, 10], "has_path": [0, 7], "To": [0, 2, 3, 5, 6, 9, 10, 11], "public": [0, 4, 5, 7, 10], "kei": [0, 4, 6, 7, 10, 11], "done": [0, 2, 5, 6, 9, 10], "recal": [0, 7, 10], "modul": [0, 2, 3, 9, 10, 11], "known": [0, 5, 7, 9, 10], "return": [0, 7, 10], "outgo": [0, 5, 7, 9, 10], "got": 0, "correct": [0, 9], "convent": 0, "request_destin": 0, "add": [0, 2, 5, 6, 7, 10], "echo_request": 0, "get_random_hash": [0, 7], "successfulli": [0, 9], "packetreceipt": [0, 4, 7], "packet_receipt": [0, 7], "set_timeout": [0, 7], "set_timeout_callback": [0, 7], "packet_timed_out": 0, "deliveri": [0, 2, 7, 11], "set_delivery_callback": [0, 7], "packet_deliv": 0, "yet": [0, 5, 9, 11], "retri": [0, 7, 9], "onc": [0, 2, 3, 5, 6, 7, 9, 10, 11], "request_path": [0, 7], "statu": [0, 2, 4, 5, 7, 9, 10], "deliv": [0, 7], "rtt": [0, 7, 9], "get_rtt": [0, 7], "round": [0, 7, 10], "3": [0, 5, 9, 10, 11], "rttstring": 0, "second": [0, 5, 7, 9, 10, 11], "1000": 0, "millisecond": [0, 10], "proof_packet": 0, "valid": [0, 5, 7, 9, 10], "trip": [0, 7, 10], "fail": [0, 2, 7], "store_tru": 0, "t": [0, 2, 5, 6, 7, 10], "metavar": 0, "float": [0, 7], "narg": 0, "timeoutarg": 0, "print_help": 0, "establish": [0, 2, 5, 6, 7, 11], "remot": [0, 4, 7, 10], "forth": 0, "o": [0, 2, 9, 10, 11], "refer": [0, 2, 4], "latest": [0, 2, 5, 10], "latest_client_link": 0, "server_destin": 0, "linkexampl": 0, "set_link_established_callback": [0, 7], "client_connect": 0, "server_loop": 0, "set_link_closed_callback": [0, 7], "client_disconnect": 0, "server_packet_receiv": 0, "disconnect": [0, 5], "activ": [0, 2, 5, 7, 9], "last": [0, 5, 7], "reply_text": 0, "reply_data": 0, "server_link": 0, "sleep": [0, 10], "begin": [0, 3, 7], "And": 0, "client_packet_receiv": 0, "close": [0, 6, 7, 10], "link_establish": 0, "link_clos": 0, "interact": [0, 2, 7, 9, 10], "client_loop": 0, "becom": [0, 2, 6, 9], "should_quit": 0, "fals": [0, 5, 7, 10], "should": [0, 2, 5, 6, 7, 9, 10, 11], "q": [0, 10], "teardown": [0, 7], "mdu": [0, 7], "size": [0, 2, 5, 7, 9, 10], "exce": [0, 5, 7], "log_error": 0, "error": [0, 2, 8, 10], "ha": [0, 2, 3, 5, 6, 7, 9, 11], "been": [0, 2, 3, 5, 6, 7, 9, 11], "later": [0, 2, 5, 10], "teardown_reason": 0, "now": [0, 2, 6, 9, 10], "elif": 0, "destination_clos": 0, "exit_handl": 0, "5": [0, 2, 5, 10], "_exit": 0, "identifi": [0, 5, 7, 9, 10], "intiat": 0, "initi": [0, 6, 7, 9, 11], "peer": [0, 2, 5, 7, 9, 10], "identifyexampl": 0, "set_remote_identified_callback": [0, 7], "remote_identifi": 0, "origin": [0, 6, 9], "displai": [0, 9, 10], "remote_p": 0, "unidentifi": 0, "get_remote_ident": [0, 7], "client_ident": 0, "sendig": 0, "perform": [0, 2, 5, 6, 9, 10], "random_text_gener": 0, "request_id": [0, 7], "link_id": [0, 7], "remote_ident": [0, 7], "requested_at": [0, 7], "look": [0, 2, 5, 9, 10], "On": [0, 2, 5, 10], "full": [0, 5, 7, 9, 10, 11], "moon": 0, "becki": 0, "upset": 0, "stai": [0, 9, 10], "awai": [0, 5, 6, 9, 10], "pet": 0, "shop": 0, "stock": 0, "requestexampl": 0, "register_request_handl": [0, 7], "response_gener": [0, 7], "allow": [0, 2, 3, 5, 6, 7, 9, 10, 11], "allow_al": [0, 7], "response_callback": [0, 7], "got_respons": 0, "failed_callback": [0, 7], "request_fail": 0, "request_receipt": [0, 7], "request_receiv": 0, "structur": [0, 7, 9, 11], "datetim": 0, "vendor": [0, 3], "umsgpack": 0, "share": [0, 2, 6, 7, 9, 10], "object": [0, 7], "subclass": [0, 7], "messagebas": [0, 4, 7], "ensur": [0, 5, 7, 9, 10, 11], "serial": [0, 2, 4, 9, 11], "deseri": 0, "multiplex": 0, "other": [0, 2, 3, 5, 6, 7, 9, 10], "both": [0, 2, 3, 5, 6, 7, 9, 10, 11], "same": [0, 2, 3, 5, 6, 7, 9, 10], "definit": [0, 9], "note": [0, 3, 4, 5, 7, 9, 10], "wish": [0, 9, 10], "make": [0, 2, 3, 5, 8, 9, 10], "stringmessag": 0, "convei": 0, "timestamp": 0, "msgtype": [0, 7], "variabl": [0, 7], "assign": [0, 9, 10], "integ": 0, "valu": [0, 5, 7, 9], "constructor": 0, "uniqu": [0, 5, 7, 9, 11], "across": [0, 3, 6], "0xf000": [0, 7], "reserv": [0, 7, 9], "0x0101": 0, "callabl": [0, 7], "paramet": [0, 3, 5, 6, 7, 9, 10], "empti": 0, "version": [0, 2, 9, 10], "unpack": [0, 7], "final": [0, 7, 9], "implement": [0, 5, 6, 7, 8, 9, 11], "pack": [0, 7], "raw": [0, 3, 7], "payload": [0, 7, 9, 10], "packag": [0, 2, 5, 9], "bundl": 0, "could": [0, 2, 5, 6, 7, 9, 11], "struct": 0, "python": [0, 4, 7, 9, 10, 11], "more": [0, 2, 3, 5, 6, 7, 9, 10, 11], "fit": 0, "entir": [0, 6, 7, 9, 10], "avail": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "properti": [0, 6, 7], "slightli": [0, 2], "less": [0, 5, 7, 9, 11], "due": [0, 6], "header": [0, 7, 9], "content": [0, 2, 6, 10], "stream": [0, 7, 9], "packb": 0, "unpackb": 0, "channelexampl": 0, "get_channel": [0, 7], "register_message_typ": [0, 7], "add_message_handl": [0, 7], "server_message_receiv": 0, "param": 0, "deserializ": 0, "unless": [0, 2, 5, 7, 9], "preced": 0, "indic": 0, "isinst": 0, "reply_messag": 0, "order": [0, 7, 10], "were": [0, 6], "consid": [0, 5, 7, 9, 11], "subsequ": [0, 9], "skip": 0, "packed_s": 0, "is_ready_to_send": [0, 7], "pleas": [0, 2, 5, 7, 10, 11], "pend": 0, "complet": [0, 2, 3, 5, 6, 7, 9, 10, 11], "client_message_receiv": 0, "reader": [0, 7], "writer": [0, 7], "__future__": 0, "annot": 0, "latest_buff": 0, "bufferexampl": 0, "old": [0, 3, 8, 9], "stream_id": [0, 7], "bit": [0, 2, 5, 7, 9, 10, 11], "like": [0, 2, 3, 5, 6, 7, 9, 10, 11], "file": [0, 2, 3, 5, 6, 7, 9, 10, 11], "descriptor": 0, "actual": [0, 2, 5, 9], "separ": [0, 2, 5, 6, 9, 10], "unidirect": 0, "flow": [0, 5, 6], "opposit": [0, 5], "create_bidirectional_buff": [0, 7], "server_buffer_readi": 0, "ready_byt": [0, 7], "int": [0, 7], "otherwis": [0, 7], "forc": [0, 10], "server_client_connect": 0, "detail": [0, 2, 4, 5, 7, 10, 11], "client_buffer_readi": 0, "termin": [0, 2, 7], "download": [0, 5, 10], "resourc": [0, 2, 4, 7, 8], "effici": [0, 2, 5, 9, 11], "serv": [0, 3, 5, 6, 9, 10], "larg": [0, 3, 5, 6, 7, 9, 11], "transfer": [0, 7, 9, 10, 11], "recommend": [0, 2, 9], "compress": [0, 7, 9], "hashmap": 0, "sequenc": [0, 7, 9, 11], "long": [0, 2, 3, 5, 7, 9], "slow": [0, 5, 9], "cpu": [0, 9], "probabl": [0, 2, 6, 9, 10, 11], "result": [0, 9, 10], "befor": [0, 2, 5, 7, 9, 10], "prepar": [0, 6], "instead": [0, 2, 5, 9, 10], "slice": 0, "chunk": 0, "suitabl": [0, 2, 5, 6, 9, 11], "thread": 0, "app_timeout": 0, "45": [0, 9], "serve_path": 0, "here": [0, 2, 5, 9, 10], "conveni": 0, "list_fil": 0, "entri": [0, 2, 9], "listdir": 0, "isfil": 0, "join": [0, 2, 6, 8, 9], "host": [0, 2, 5, 9, 10], "still": [0, 2, 5, 6, 9], "isdir": 0, "list_packet": 0, "list_receipt": 0, "list_deliv": 0, "list_timeout": 0, "too": [0, 6], "mani": [0, 2, 3, 5, 6, 7, 9, 10, 11], "split": 0, "filelist": 0, "multipl": [0, 5, 6, 9, 10], "hint": 0, "alreadi": [0, 2, 3, 6, 7, 9, 10], "support": [0, 2, 4, 5, 6, 9, 10, 11], "after": [0, 2, 5, 6, 7, 9, 10], "re": [0, 5, 7, 9], "keep": [0, 6, 7, 9, 10, 11], "open": [0, 3, 5, 6, 7, 8, 9, 10, 11], "client_request": 0, "longer": [0, 2, 6, 9, 10], "filenam": 0, "rb": 0, "file_resourc": 0, "resource_sending_conclud": 0, "somethign": 0, "went": 0, "wrong": [0, 5], "don": [0, 2, 6, 7, 10], "unknown": [0, 5, 7, 9, 10], "conclud": [0, 7], "hasattr": 0, "server_fil": 0, "current": [0, 2, 4, 5, 7, 9], "current_download": 0, "current_filenam": 0, "statist": [0, 5, 8], "download_start": 0, "download_finish": 0, "download_tim": 0, "transfer_s": 0, "file_s": 0, "expect": [0, 5, 7, 9, 10], "normal": [0, 2, 5, 7, 10], "accordingli": 0, "filelist_receiv": 0, "advertis": [0, 7], "set_resource_strategi": [0, 7], "accept_al": [0, 7], "set_resource_started_callback": [0, 7], "download_began": 0, "set_resource_concluded_callback": [0, 7], "download_conclud": 0, "menu": 0, "menu_mod": 0, "down": [0, 3, 5, 7], "request_packet": 0, "create_receipt": [0, 7], "print_menu": 0, "25": [0, 4, 11], "user_input": 0, "screen": 0, "variou": [0, 2, 5, 6, 9, 10], "state": 0, "It": [0, 2, 3, 5, 7, 9, 10, 11], "uninterest": 0, "won": 0, "clear_screen": 0, "print_filelist": 0, "percent": [0, 5], "get_progress": [0, 7], "100": [0, 5, 9], "rprogress": 0, "save_error": 0, "disk": [0, 7], "hour": [0, 5], "rem": 0, "divmod": 0, "3600": [0, 5], "minut": [0, 2, 5, 9], "60": [0, 5], "timestr": 0, "05": 0, "2f": 0, "ttime": 0, "taken": [0, 9], "tfile": 0, "size_str": 0, "tdata": 0, "teffect": 0, "rate": [0, 4, 7, 10], "suffix": 0, "b": [0, 6, 10], "ttransfer": 0, "press": 0, "index": [0, 2, 4], "enumer": 0, "filelist_data": 0, "extend": [0, 2, 7], "local": [0, 2, 5, 6, 7, 9, 10, 11], "append": [0, 9], "visibl": 0, "updat": [0, 2, 7, 9, 10], "small": [0, 5, 6, 9, 11], "job": 0, "potenti": [0, 5, 8, 9, 10, 11], "target": [0, 5, 10], "filelist_timeout_job": 0, "setdaemon": 0, "detect": 0, "shown": 0, "progress": [0, 7, 10, 11], "total_s": 0, "saved_filenam": 0, "counter": 0, "wb": 0, "human": [0, 7, 8, 9], "readabl": [0, 7, 9], "num": 0, "unit": [0, 2, 7, 10], "ki": 0, "mi": 0, "gi": 0, "ti": [0, 9], "pi": [0, 4, 6, 9, 10, 11], "ei": 0, "zi": 0, "last_unit": 0, "yi": 0, "k": 0, "m": [0, 2, 9, 10], "g": [0, 10], "p": [0, 10], "z": 0, "y": 0, "ab": 0, "1024": 0, "clear": [0, 5, 7, 9, 10], "cl": 0, "nt": 0, "dir": 0, "best": [2, 9, 11], "guid": [2, 3, 9], "outlin": [2, 3, 9], "sensibl": [2, 3, 5], "scenario": [2, 4, 9], "relat": 2, "easiest": [2, 3, 5, 9], "via": [2, 3, 5, 8, 9, 10, 11], "pip": [2, 3, 10], "manag": [2, 6, 7, 9, 10, 11], "sudo": [2, 10], "apt": 2, "python3": [2, 3], "pamac": 2, "similar": [2, 3, 5, 6, 7, 10, 11], "dowload": 2, "releas": [2, 5, 9], "wheel": 2, "channel": [2, 4, 5, 6, 7, 8, 9, 11], "offlin": 2, "py3": 2, "whl": 2, "mai": [2, 5, 7, 9, 10], "case": [2, 3, 5, 6, 9, 10], "usual": 2, "essenti": [2, 5, 9], "deriv": [2, 7, 9, 11], "arch": 2, "manjaro": 2, "devel": 2, "fedora": 2, "dnf": 2, "groupinstal": 2, "tool": [2, 3, 9, 10, 11], "librari": 2, "compil": 2, "miss": 2, "even": [2, 5, 6, 9, 10, 11], "pre": [2, 7, 9], "built": [2, 5, 9, 11], "few": [2, 3, 5, 6, 9, 10, 11], "extrem": [2, 9, 10, 11], "low": [2, 3, 5, 6, 9, 11], "bandwidth": [2, 5, 6, 7, 9, 10, 11], "These": [2, 5, 7, 9, 10], "feel": 2, "work": [2, 3, 5, 6, 9, 10, 11], "design": [2, 3, 6, 9, 11], "well": [2, 3, 5, 6, 7, 9, 10, 11], "lora": [2, 3, 4, 9, 11], "link": [2, 3, 4, 5, 6, 7, 10, 11], "wifi": [2, 4, 5, 6, 9, 10, 11], "wire": [2, 3, 4, 5, 11], "ethernet": [2, 4, 5, 6, 9, 11], "combin": [2, 4, 6, 9], "As": [2, 3, 5, 6, 7, 9, 11], "easi": [2, 3, 5, 9, 10, 11], "experi": [2, 9], "without": [2, 3, 5, 6, 9, 11], "transceiv": [2, 3, 5, 9, 11], "infrastructur": [2, 3, 5, 6, 9, 10], "launch": [2, 10], "devic": [2, 4, 5, 6, 7, 9, 10], "enough": [2, 3, 9], "physic": [2, 3, 5, 9, 10], "rnsh": [2, 10], "fulli": [2, 3, 9, 10, 11], "session": [2, 9], "pipe": [2, 4, 11], "ssh": 2, "veri": [2, 3, 5, 6, 7, 8, 9, 10, 11], "facilit": 2, "suit": [2, 3, 9, 10], "featur": [2, 8, 9, 11], "delai": [2, 5, 9, 10], "browser": 2, "page": [2, 4, 9], "dynam": [2, 10], "render": 2, "authent": [2, 5, 6, 7, 9, 11], "face": [2, 5], "protocol": [2, 3, 4, 5, 11], "lxmf": [2, 10], "anoth": [2, 7, 9, 10], "project": 2, "nomadnet": 2, "might": [2, 5, 6, 9, 10], "reboot": 2, "again": [2, 5, 9, 10], "would": [2, 5, 6, 7, 9], "rather": [2, 7], "graphic": 2, "linux": [2, 3, 9], "maco": 2, "peopl": [2, 9], "compat": [2, 3, 5, 7, 9], "i2p": [2, 4, 11], "qr": 2, "paper": 2, "anyth": [2, 3, 5, 9, 10, 11], "interoper": [2, 3, 6, 9, 11], "come": [2, 9], "easier": [2, 5, 6, 10], "rnsd": [2, 4], "background": [2, 5], "foreground": 2, "servic": [2, 4, 6], "rnstatu": [2, 4, 5, 9], "rnpath": [2, 4, 5], "rnprobe": [2, 4], "view": [2, 5, 9, 10], "chapter": [2, 3, 5, 6, 7, 9, 10, 11], "locat": [2, 3, 6, 9, 10], "exampl": [2, 3, 4, 5, 7, 9, 10, 11], "exampleconfig": [2, 10], "broadcast": [2, 4, 5, 7, 9], "domain": [2, 5], "further": [2, 4, 5], "tcp": [2, 3, 4, 6, 9, 11], "There": [2, 6, 9, 11], "subnet": [2, 6], "rout": [2, 3, 5, 6, 7, 9, 10, 11], "tabl": [2, 5, 6, 9, 10], "thing": 2, "discov": [2, 5], "topographi": [2, 6, 9], "situat": [2, 3, 5, 6, 9], "where": [2, 3, 4, 5, 6, 7, 9, 10], "utilis": [2, 5, 6, 7, 10, 11], "extern": [2, 5, 7, 11], "often": [2, 5, 6, 9, 10], "suffici": [2, 5, 9, 10], "act": [2, 7, 9, 10], "gatewai": [2, 5, 6, 9], "enabl": [2, 3, 5, 6, 7, 9, 10, 11], "wider": [2, 5, 9, 10], "autointerfac": [2, 3, 5, 10], "possibli": 2, "offer": [2, 4, 5, 7, 9], "carefulli": 2, "tcpserverinterfac": [2, 5], "access": [2, 4, 5, 6, 7, 10], "ip": [2, 3, 5, 9, 10, 11], "faster": [2, 5, 9], "lower": [2, 5, 10], "latenc": [2, 9, 11], "energi": 2, "i2pinterfac": [2, 5], "howev": [2, 6, 9], "leak": 2, "reveal": [2, 7, 9, 11], "who": [2, 9], "inspect": [2, 5, 6, 9, 10], "someon": [2, 5], "determin": [2, 7, 9], "adversari": 2, "record": [2, 9], "metadata": 2, "transmiss": [2, 5, 7, 9], "though": [2, 5, 9], "publicli": [2, 5], "most": [2, 3, 5, 6, 9, 10], "anymor": 2, "through": [2, 3, 5, 6, 7, 9, 10, 11], "invis": [2, 5], "daemon": [2, 5, 7, 10], "parallel": 2, "For": [2, 3, 5, 6, 7, 9, 10, 11], "alwai": [2, 5, 7, 9, 10], "node": [2, 4, 5, 6, 10, 11], "i2pd": [2, 5], "mix": [2, 5, 6, 10], "hide": 2, "relai": 2, "extra": [2, 5, 6, 10], "comput": [2, 9, 11], "power": [2, 3, 5, 9, 10], "attack": 2, "form": [2, 5, 6, 7, 9], "deep": 2, "much": [2, 5, 6, 9, 10], "difficult": [2, 3], "non": [2, 7, 9], "behind": [2, 9], "firewal": [2, 5], "nat": 2, "preserv": [2, 7], "anonym": [2, 6, 7, 9, 11], "care": [2, 7, 11], "experiment": [2, 11], "made": [2, 7, 9], "amsterdam": 2, "hub": [2, 5], "tcpclientinterfac": [2, 3, 5], "ye": [2, 5, 9, 10], "target_host": [2, 5], "target_port": [2, 5], "4965": [2, 10], "betweenthebord": 2, "4242": [2, 5], "g3br23bvx3lq5uddcsjii74xgmn6y5q325ovrkq2zw2wbzbqgbuq": 2, "b32": [2, 5], "point": [2, 3, 5, 6, 9, 10], "absolut": [2, 8, 11], "usag": [2, 4, 5, 7, 8, 10], "occasion": 2, "test": [2, 9, 10], "failur": [2, 5], "guarante": [2, 9], "hardwar": [2, 4, 5, 6, 7, 9, 10, 11], "wide": [2, 3, 5, 9, 11], "section": [2, 3, 5, 6, 9, 10], "easili": [2, 5, 6, 9, 10, 11], "cheapli": 2, "rnode": [2, 4, 9, 10, 11], "purpos": [2, 3, 5, 7, 9], "digit": [2, 3, 9, 11], "integr": [2, 6, 9], "yourself": [2, 9, 11], "custom": [2, 5, 7, 9, 11], "firmwar": [2, 3, 9, 10], "board": [2, 4, 9, 11], "auto": [2, 3, 4, 7, 9], "script": [2, 3], "prefer": [2, 9], "purchas": [2, 6, 9, 11], "supplier": 2, "addit": [2, 3, 5, 7, 9, 10, 11], "privat": [2, 5, 7, 8, 9, 10, 11], "secur": [2, 9, 11], "uncensor": 2, "mesh": [2, 5, 6, 11], "think": 2, "welcom": 2, "head": 2, "discuss": [2, 3, 9], "propos": 2, "abov": [2, 3, 5, 9, 10], "next": [2, 6, 7, 9], "step": [2, 3], "pyseri": 2, "api": [2, 4, 9, 11], "associ": [2, 7, 9], "recip": 2, "cryptographi": [2, 9, 11], "clone": 2, "repositori": [2, 8, 9], "git": 2, "move": [2, 5, 9, 10], "folder": 2, "symlink": [2, 10], "cd": 2, "ln": [2, 10], "echo": [2, 4], "ve": 2, "immedi": [2, 5, 10], "necessari": [2, 3, 5, 6, 7, 9], "nano": 2, "repeat": 2, "process": [2, 3, 5, 7, 9], "h": [2, 10], "ping": [2, 10], "replac": [2, 9, 10], "below": [2, 3, 5, 10], "174a64852a75682259ad8b921b8bf416": 2, "filetransf": [2, 4, 7], "understand": [2, 4, 7, 10], "submit": 2, "pull": 2, "request": [2, 4, 5, 7, 9, 10], "good": [2, 3, 6, 9, 10], "idea": [2, 9, 10], "introduc": [2, 9], "disucss": 2, "forum": 2, "maintain": [2, 9], "place": [2, 5, 6, 9, 10], "procedur": [2, 7, 9], "quirk": 2, "worth": 2, "being": [2, 5, 7, 9], "awar": [2, 9], "termux": 2, "f": [2, 10], "droid": 2, "emul": 2, "environ": [2, 6, 9], "abil": [2, 3], "pkg": 2, "sure": [2, 3, 10], "upgrad": [2, 9], "Then": 2, "reason": [2, 5, 9], "attempt": [2, 3, 7], "openssl": [2, 9], "libffi": 2, "rust": 2, "export": 2, "cargo_build_target": 2, "aarch64": 2, "sever": [2, 6, 7, 10], "succe": 2, "softwar": [2, 3, 5, 9, 11], "possibl": [2, 3, 5, 6, 7, 9, 10, 11], "apk": 2, "tutori": 2, "code": [2, 3, 4, 5, 10], "startig": 2, "architectur": 2, "precompil": 2, "dev": [2, 5, 10], "64": [2, 9, 10], "32": [2, 9], "rasperri": 2, "os": [2, 5], "april": 2, "2023": [2, 10], "onto": [2, 9], "unfortun": 2, "pipx": 2, "isol": [2, 5, 10], "neg": 2, "affect": [2, 5], "ensurepath": 2, "restor": [2, 5], "behaviour": [2, 5, 10], "edit": [2, 10], "conf": 2, "break": [2, 7, 9, 11], "somewhat": 2, "mislead": 2, "choic": 2, "word": 2, "cours": [2, 5, 9], "rare": [2, 5], "lead": [2, 9], "conflict": 2, "pose": [2, 9], "problem": [2, 9], "_could_": 2, "obscur": 2, "rnspure": 2, "No": [2, 5, 9, 10, 11], "matter": [2, 5], "perfectli": 2, "pyca": [2, 9], "cryptograph": [2, 4, 6, 10, 11], "primit": [2, 4], "One": [3, 7], "truli": [3, 9], "valuabl": [3, 8], "almost": [3, 5, 9, 10], "conceiv": 3, "kind": [3, 5, 6, 9], "medium": [3, 5, 6, 7, 9, 11], "flexibl": [3, 5, 11], "cover": [3, 9, 11], "wireless": [3, 6], "decad": 3, "modern": [3, 9], "millimet": 3, "wave": 3, "backhaul": [3, 6], "oper": [3, 5, 6, 7, 9, 10, 11], "chanc": 3, "box": 3, "glue": 3, "littl": [3, 9], "effort": 3, "pipeinterfac": [3, 5], "kiss": [3, 4, 10, 11], "simplyequip": 3, "broad": 3, "abund": 3, "sometim": 3, "especi": [3, 5], "scratch": 3, "real": [3, 6, 11], "world": [3, 6, 11], "minim": [3, 4, 9], "cost": [3, 9, 11], "fundament": [3, 9], "categori": 3, "addition": [3, 5, 9], "common": [3, 4, 6, 9, 10, 11], "briefli": [3, 9], "describ": [3, 5, 7, 9], "emploi": [3, 9], "pattern": [3, 9], "high": [3, 5, 9, 11], "capac": [3, 5, 7, 9], "gain": [3, 7, 9], "antenna": 3, "backbon": 3, "area": [3, 5, 6, 9, 11], "reliabl": [3, 5, 6, 7, 9, 11], "commonli": 3, "either": [3, 5, 6, 7, 9, 10], "expens": 3, "hard": 3, "hungri": 3, "allevi": 3, "particular": 3, "plaform": 3, "depend": [3, 4, 6, 7, 9, 10], "its": [3, 5, 7, 9], "compon": [3, 8, 9], "frequenc": [3, 5, 9, 10], "band": [3, 9], "scheme": 3, "limit": [3, 4, 6, 9], "ism": [3, 9], "avoid": [3, 9, 10], "confus": [3, 9], "layer": [3, 5, 6, 9, 11], "noth": [3, 11], "lorawan": [3, 9], "standard": [3, 9], "central": [3, 6, 9], "iot": 3, "overhead": [3, 5, 9], "level": [3, 5, 9, 10], "directli": [3, 5, 7, 9, 10, 11], "replic": [3, 9], "togeth": [3, 9, 10], "exact": [3, 5, 9], "explain": [3, 7], "approach": [3, 9, 10], "develop": [3, 4, 7, 8, 9, 11], "boil": 3, "obtain": [3, 7, 9], "autom": [3, 8, 9], "provis": [3, 10], "rnodeinterfac": [3, 5, 10], "ic": 3, "semtech": 3, "sx1276": 3, "platform": [3, 4, 9], "esp32": 3, "manufactur": 3, "io": 3, "avr": 3, "atmega1284p": 3, "rnodeconf": [3, 4], "autoinstal": [3, 10], "seri": 3, "question": [3, 5], "port": [3, 4, 5, 6, 9, 11], "air": [3, 11], "id": [3, 5, 7, 9, 10], "itself": [3, 4, 9], "short": [3, 5, 9, 10], "bridg": [3, 4], "behav": 3, "mean": [3, 5, 6, 9, 10], "dhcp": [3, 5, 10], "dn": 3, "least": [3, 5, 9, 10, 11], "transpar": [3, 5, 9, 10], "distanc": [3, 9], "ubiqu": 3, "airmax": 3, "ltu": 3, "mikrotik": 3, "exhaust": [3, 9], "rel": [3, 9, 11], "cheap": [3, 9], "co": [3, 5, 11], "concurr": [3, 9, 10], "switch": [3, 5, 9, 10], "fiber": 3, "optic": [3, 11], "virtual": [3, 5, 6, 9, 10, 11], "adapt": [3, 6], "tun": 3, "tap": 3, "serialinterfac": [3, 5], "usb": [3, 6, 9, 10], "freedv": 3, "tnc": [3, 5, 7, 10, 11], "dire": 3, "wolf": 3, "aim": [4, 9], "particip": [4, 6, 9], "pdf": 4, "epub": 4, "caveat": 4, "emptor": 4, "fast": [4, 5, 7, 9], "standalon": 4, "instal": [4, 5, 6, 9, 10, 11], "resolv": [4, 5, 10], "issu": [4, 6, 8], "base": [4, 5, 6, 7, 9, 10, 11], "shell": [4, 10], "nomad": 4, "sideband": 4, "With": [4, 5, 6, 9, 10], "internet": [4, 5, 9, 11], "testnet": [4, 10], "radio": [4, 5, 6, 7, 9, 10, 11], "android": 4, "arm64": 4, "raspberri": [4, 6, 9, 10, 11], "debian": [4, 9, 10], "bookworm": 4, "ubuntu": [4, 10], "lunar": 4, "pure": [4, 9], "rnid": 4, "rncp": 4, "rnx": 4, "improv": [4, 5, 8], "fix": [4, 9], "motiv": 4, "goal": [4, 5], "introduct": 4, "announc": [4, 7, 10], "mechan": [4, 5], "reach": [4, 5, 6], "prioritis": [4, 5, 6, 7], "propag": [4, 5, 7], "rule": [4, 5], "modem": [4, 5, 6, 7, 9, 11], "udp": [4, 6, 9, 10, 11], "ax": [4, 11], "concept": [4, 9, 10], "overview": [4, 5, 9], "interconnect": [4, 5, 9], "site": [4, 5], "growth": 4, "converg": [4, 9], "identif": [4, 5, 11], "respons": [4, 7, 9], "buffer": [4, 5, 7], "donat": 4, "contribut": 4, "requestreceipt": [4, 7], "rawchannelread": [4, 7], "rawchannelwrit": [4, 7], "search": 4, "distinct": [5, 9], "topologi": [5, 9], "endless": 5, "give": [5, 9, 10], "respect": [5, 11], "discover": 5, "autoconfigur": [5, 11], "ipv6": [5, 10], "router": [5, 10], "sort": [5, 9, 10], "interface_en": [5, 10], "lan": 5, "group": [5, 7, 9], "group_id": 5, "kernel": [5, 10, 11], "wlan0": 5, "eth1": 5, "Or": [5, 10, 11], "ignor": [5, 7, 9], "ones": [5, 10], "ignored_devic": 5, "tun0": 5, "eth0": 5, "multicast": 5, "autodiscov": 5, "discoveri": [5, 9, 10], "scope": 5, "admin": 5, "organis": [5, 6, 8], "custom_network_nam": 5, "discovery_scop": 5, "discovery_port": 5, "48555": 5, "data_port": 5, "49555": 5, "frequent": 5, "block": 5, "inbound": [5, 7], "portabl": [5, 9], "persist": [5, 10], "achiev": [5, 7, 9], "geti2p": 5, "net": 5, "websit": 5, "base32": 5, "comma": 5, "5urvjicpzi7q3ybztsef4i5ow2aq4soktfj7zedz53s47r54jnqq": 5, "output": [5, 10], "event": 5, "simplest": [5, 9], "tunnel": [5, 9, 11], "interchang": 5, "degre": 5, "retain": 5, "eas": [5, 9], "simpler": 5, "listen_ip": 5, "listen_port": 5, "bind": 5, "10": [5, 9, 10], "88": 5, "i2p_tunnel": 5, "127": 5, "5001": 5, "dedic": [5, 9], "natur": 5, "toler": 5, "intermitt": 5, "gracefulli": 5, "reappear": 5, "hostnam": 5, "expos": [5, 7], "soundmodem": 5, "kiss_fram": 5, "8001": 5, "caution": 5, "frame": 5, "conjunct": 5, "never": [5, 7, 9], "disabl": [5, 9, 10], "intern": [5, 7, 9], "recoveri": 5, "greatli": 5, "unreli": 5, "implic": 5, "better": 5, "udpinterfac": 5, "forward_ip": 5, "255": [5, 10], "forward_port": 5, "assum": [5, 9], "55": 5, "72": 5, "24": 5, "equival": 5, "forward": [5, 7, 9, 11], "segment": [5, 6, 7, 9, 11], "15": 5, "16": [5, 9, 10], "ttyusb0": [5, 10], "867": 5, "mhz": [5, 9], "867200000": 5, "125": 5, "khz": 5, "125000": 5, "tx": [5, 10], "7": [5, 9, 10], "mw": 5, "txpower": 5, "spread": [5, 10], "factor": [5, 7, 10], "12": [5, 10], "fastest": [5, 9], "longest": 5, "spreadingfactor": 5, "throough": 5, "codingr": 5, "interv": [5, 7, 10], "id_callsign": 5, "mycal": 5, "id_interv": 5, "600": 5, "homebrew": 5, "amount": [5, 6, 7, 9, 11], "ram": 5, "flow_control": 5, "airtim": 5, "term": [5, 6, 9], "appli": [5, 7, 9], "window": 5, "approxim": 5, "enforc": 5, "roll": 5, "airtime_limit_long": 5, "airtime_limit_short": 5, "33": 5, "pair": [5, 7, 9, 10], "laser": 5, "baud": [5, 10], "speed": [5, 9, 10], "115200": [5, 10], "databit": [5, 10], "pariti": [5, 10], "stopbit": [5, 10], "stdin": [5, 10], "netcat": 5, "l": [5, 10], "5757": 5, "respawn": 5, "respawn_delai": 5, "continu": [5, 7, 8, 11], "scan": 5, "eof": 5, "respawn_interv": 5, "varieti": [5, 9, 10, 11], "openmodem": [5, 11], "period": [5, 7, 9], "beacon": 5, "station": 5, "kissinterfac": [5, 10], "ttyusb1": 5, "preambl": [5, 10], "150": [5, 10], "tail": 5, "txtail": [5, 10], "cdma": 5, "200": [5, 10], "slottim": [5, 10], "20": [5, 9, 10], "elaps": 5, "comment": [5, 10], "amateur": [5, 11], "spectrum": [5, 9], "encapsul": [5, 11], "callsign": 5, "ssid": 5, "realli": [5, 7], "doesn": 5, "incur": 5, "ax25kissinterfac": 5, "no1cll": 5, "ttyusb2": 5, "150m": 5, "increas": [5, 10], "squelch": 5, "rx": [5, 10], "turnaround": 5, "kept": [5, 6, 7, 9], "wast": 5, "bring": 5, "brought": [5, 10], "access_point": 5, "shorthand": [5, 10], "ap": 5, "shorter": 5, "expiri": 5, "mostli": [5, 6, 9], "quiet": [5, 10], "momentarili": 5, "disappear": [5, 10], "network_nam": 5, "passphras": [5, 9], "alon": 5, "ifac_s": 5, "customis": 5, "carri": [5, 7, 9, 10], "512": [5, 7, 9], "announce_cap": [5, 7], "maximum": [5, 7, 9], "alloc": [5, 7, 9, 10], "given": [5, 6, 7, 9, 10], "upkeep": 5, "cap": 5, "queue": [5, 9], "nearbi": 5, "overwhelm": [5, 7], "rapidli": 5, "spam": 5, "effect": 5, "excess": 5, "benefici": [5, 10], "balanc": 5, "necesarri": 5, "bitrat": 5, "report": [5, 8, 10], "guess": 5, "per": [5, 7, 9, 10, 11], "strictli": [5, 9], "complex": [5, 9], "left": [5, 7, 9, 10], "gw": 5, "behalf": 5, "resid": 5, "requestor": 5, "chain": 5, "along": [5, 6, 7, 9, 10], "boundari": 5, "remain": [5, 7, 9], "roam": 5, "mobil": [5, 9], "seen": [5, 9], "perspect": [5, 7, 9, 11], "vehicl": 5, "equip": [5, 6, 9], "side": [5, 11], "expir": 5, "significantli": 5, "impact": [5, 9], "announce_rate_target": 5, "announce_rate_grac": 5, "announce_rate_penalti": 5, "basi": [5, 7, 9, 10, 11], "moder": 5, "violat": 5, "penalti": 5, "7200": 5, "annouce_cap": 5, "mention": [5, 9], "strategi": [5, 7], "decis": [5, 9], "slower": [5, 7, 9], "hop": [5, 6, 7, 9, 10, 11], "right": [5, 6], "tend": 5, "conserv": 5, "span": [5, 9], "seamlessli": 5, "influx": 5, "newli": [5, 6, 7, 9], "previous": [5, 6, 7, 9], "occur": [5, 10, 11], "hold": [5, 7, 9], "interrupt": 5, "burst": 5, "subsid": 5, "held": [5, 10], "decid": [5, 6, 7, 9], "bogu": 5, "retransmit": [5, 9], "ingress": 5, "individu": [5, 7, 9, 11], "sub": 5, "disrupt": 5, "neccessari": 5, "modifi": [5, 9, 10], "ingress_control": 5, "ic_new_tim": 5, "spawn": 5, "ic_burst_freq_new": 5, "ic_burst_freq": 5, "temporarili": 5, "ic_max_held_announc": 5, "drop": [5, 7, 9, 10], "256": [5, 7, 9, 10], "ic_burst_hold": 5, "threshold": 5, "ic_burst_penalti": 5, "ic_held_release_interv": 5, "30": [5, 10], "knowledg": [6, 9], "tradit": [6, 9], "worri": 6, "coordin": [6, 7, 9, 11], "evolv": 6, "futur": [6, 9], "mind": [6, 11], "autonom": [6, 9], "terminologi": [6, 9], "rest": [6, 11], "billion": [6, 9], "larger": [6, 9, 10], "higher": [6, 11], "discrimin": 6, "ephemer": [6, 7, 9, 11], "ellipt": [6, 7, 9, 11], "curv": [6, 7, 9, 11], "diffi": [6, 9, 11], "hellman": [6, 9, 11], "exchang": [6, 7, 9, 11], "curve25519": [6, 7, 9, 11], "throttl": 6, "thu": [6, 7, 9], "agnost": [6, 9], "equal": [6, 7, 9], "keystor": 6, "degrad": 6, "stationari": [6, 10], "candid": 6, "optim": 6, "intend": [6, 9], "trustless": [6, 9, 11], "leav": [6, 9], "free": [6, 8, 11], "unorganis": 6, "manner": 6, "far": [6, 9], "unexplor": 6, "dissolv": 6, "organ": 6, "restrict": 6, "legaci": 6, "unifi": 6, "underli": [6, 11], "carrier": [6, 11], "involv": 6, "hardlin": 6, "illustr": [6, 9], "plan": [6, 9], "member": 6, "mainli": 6, "three": [6, 9], "hill": 6, "top": [6, 9], "chosen": [6, 9], "sight": 6, "becaus": [6, 9], "four": 6, "At": [6, 9], "cabl": 6, "suppli": [6, 7, 9], "grow": 6, "core": [6, 9, 10, 11], "those": [6, 9], "d": [6, 10], "island": 6, "investig": 6, "dori": 6, "willing": 6, "she": 6, "her": 6, "home": 6, "everyon": [6, 9], "vice": [6, 11], "versa": [6, 11], "vhf": [6, 9, 11], "outli": 6, "geograph": 6, "coverag": 6, "dai": 6, "find": [6, 9], "poorli": 6, "outlier": 6, "signatur": [7, 9, 10, 11], "configdir": 7, "logdest": 7, "verbos": [7, 10], "exactli": [7, 9], "independ": [7, 9, 11], "inter": 7, "soon": 7, "kill": [7, 9], "forcibli": [7, 10], "advantag": 7, "demand": 7, "mtu": [7, 9, 11], "500": [7, 9, 11], "adher": 7, "507": 7, "prerequisit": 7, "percentag": 7, "schedul": 7, "queu": [7, 10], "fewer": 7, "distant": 7, "smaller": 7, "eventu": 7, "static": 7, "should_use_implicit_proof": 7, "explicit": 7, "implicit": [7, 9], "transport_en": 7, "create_kei": 7, "decrypt": [7, 9, 10], "verif": [7, 9, 10], "sign": [7, 9, 10], "dh": 7, "keysiz": 7, "x25519": [7, 9, 11], "concaten": 7, "128": [7, 9, 11], "constant": 7, "truncat": [7, 9], "recall_app_data": 7, "heard": [7, 9], "full_hash": 7, "sha": [7, 9], "truncated_hash": 7, "from_byt": 7, "prv_byte": 7, "save": [7, 9], "hazard": 7, "feed": 7, "from_fil": 7, "to_fil": 7, "Be": [7, 10], "get_private_kei": 7, "get_public_kei": 7, "load_private_kei": 7, "load_public_kei": 7, "pub_byt": 7, "ciphertext": 7, "token": [7, 9], "keyerror": 7, "ciphertext_token": 7, "presenc": 7, "ingo": 7, "zero": [7, 11], "expand_nam": 7, "app_and_aspects_from_nam": 7, "full_nam": [7, 10], "tupl": 7, "hash_from_name_and_ident": 7, "adress": [7, 9], "path_respons": 7, "attached_interfac": 7, "tag": 7, "flag": [7, 9], "accepts_link": 7, "accept": [7, 8, 9, 10], "set_proof_requested_callback": 7, "proof_strategi": 7, "prove_non": 7, "prove_app": 7, "proof_requested_callback": 7, "allow_non": 7, "allowed_list": 7, "whatev": [7, 9], "funcion": 7, "allow_list": 7, "deregister_request_handl": 7, "deregist": 7, "symmetr": [7, 9], "typeerror": 7, "incompat": [7, 9], "set_default_app_data": 7, "clear_default_app_data": 7, "ae": [7, 9, 11], "secreci": [7, 9, 11], "instanti": 7, "encrypted_mdu": 7, "383": 7, "plain_mdu": 7, "464": 7, "resend": 7, "get_statu": 7, "cull": 7, "successful": 7, "proven": [7, 9], "established_callback": 7, "closed_callback": 7, "establishment_timeout_per_hop": 7, "6": [7, 10], "keepalive_timeout_factor": 7, "4": [7, 9, 10], "calcul": [7, 9, 10], "stale_grac": 7, "grace": 7, "keepal": [7, 9], "360": 7, "aliv": [7, 9], "stale_tim": 7, "720": 7, "mark": [7, 9], "stale": 7, "torn": 7, "progress_callback": 7, "info": [7, 9, 10], "get_establishment_r": 7, "ocur": 7, "no_inbound_for": 7, "no_outbound_for": 7, "outbound": [7, 9], "inactive_for": 7, "purg": 7, "set_resource_callback": 7, "get_transfer_s": 7, "get_data_s": 7, "get_part": 7, "is_compress": 7, "begun": 7, "resource_strategi": 7, "accept_non": 7, "accept_app": 7, "resource_callback": 7, "unsupport": 7, "get_request_id": 7, "get_respons": 7, "get_response_tim": 7, "auto_compress": 7, "arbitrari": [7, 9, 10, 11], "checksum": [7, 11], "Will": 7, "whenev": [7, 9], "cancel": 7, "total": [7, 9, 11], "get_seg": 7, "divid": 7, "get_hash": 7, "bi": [7, 9], "neither": [7, 9], "constrain": 7, "message_class": 7, "recept": 7, "messagecallbacktyp": 7, "bool": 7, "stop": [7, 11], "remove_message_handl": 7, "remov": [7, 10], "envelop": 7, "thrown": 7, "consum": 7, "adjust": 7, "accommod": [7, 9], "abstract": [7, 9], "greater": [7, 9], "popul": 7, "bufferedread": 7, "bufferedwrit": 7, "bufferedrwpair": 7, "create_read": 7, "ready_callback": 7, "document": [7, 9], "create_writ": 7, "receive_stream_id": 7, "send_stream_id": 7, "rawiobas": 7, "add_ready_callback": 7, "cb": [7, 9], "remove_ready_callback": 7, "pathfinder_m": 7, "attribut": 7, "deregister_announce_handl": 7, "hops_to": 7, "next_hop": 7, "next_hop_interfac": 7, "on_interfac": 7, "recurs": 7, "gratefulli": 8, "monero": 8, "84fpy1qbxhcgdseepynmhthcrgmx4nffbytz2gkytoqhvvhjp8eaw1z1eedrnkd19b3b8nilcgvxzkv17ummmeescrpya5w": 8, "ethereum": 8, "0x81f7b979fea6134ba9fd5c701b3501a2e61e897a": 8, "bitcoin": 8, "3cpmacgm34qyvr6xwlvejmi2ane3pzquuq": 8, "ko": 8, "fi": 8, "roadmap": 8, "realiti": 8, "quickli": [8, 9, 11], "sponsor": [8, 11], "dysfunct": 8, "analyt": 8, "telemetri": 8, "collect": 8, "under": [8, 10, 11], "circumst": [8, 9], "reli": [8, 9], "fashion": 8, "u": [8, 9, 10], "suggest": 8, "overal": 9, "principl": [9, 11], "author": 9, "That": 9, "said": 9, "pretti": 9, "sentiment": 9, "philosophi": 9, "seek": 9, "solv": 9, "solut": [9, 10], "primari": 9, "lack": 9, "my": 9, "belief": 9, "highli": 9, "machin": 9, "censorship": [9, 11], "barrier": 9, "todai": 9, "centralis": 9, "trust": [9, 10], "approv": 9, "gatekeep": 9, "inevit": 9, "govern": 9, "alter": 9, "censor": 9, "persecut": 9, "unwant": 9, "actor": 9, "imposs": 9, "freeli": 9, "deploi": 9, "enhanc": 9, "agenc": 9, "freedom": 9, "permissionless": 9, "pick": 9, "ghz": 9, "off": [9, 10, 11], "shelf": [9, 11], "ultim": 9, "vast": 9, "myriad": 9, "thousand": 9, "surveil": 9, "disassoci": 9, "oversight": 9, "beings": 9, "usabl": 9, "useabl": 9, "critic": [9, 10], "agnostic": 9, "shall": 9, "handheld": 9, "interest": 9, "strong": 9, "oneself": 9, "unlicens": 9, "licens": 9, "condit": [9, 11], "pmr": 9, "written": 9, "programm": 9, "orient": 9, "multipoint": 9, "recipi": 9, "singular": 9, "_represented_": 9, "characterist": 9, "13425ec15b621c1d928589718000d814": 9, "trade": 9, "simultan": 9, "unlik": 9, "nears": 9, "congest": 9, "galact": 9, "scale": [9, 11], "obvious": 9, "ridicul": 9, "multi": [9, 10, 11], "special": [9, 10], "ecdh": [9, 11], "creator": 9, "correspond": 9, "possess": 9, "although": [9, 11], "capabl": 9, "dot": [9, 10], "notat": [9, 10], "repres": 9, "plenti": 9, "environment": 9, "monitor": 9, "measur": 9, "environmentlogg": 9, "remotesensor": 9, "temperatur": 9, "4faf1b2e0a077e6a9d92fa051f256038": 9, "advis": 9, "expand": 9, "recap": 9, "indirectli": 9, "ledger": 9, "therefor": [9, 11], "messeng": 9, "nicknam": 9, "ed25519": [9, 11], "reconstruct": 9, "notic": [9, 10], "piec": 9, "intention": 9, "infer": 9, "throughout": 9, "accord": 9, "around": 9, "topic": 9, "necessarili": 9, "person": 9, "entiti": 9, "robot": 9, "sensor": 9, "someth": 9, "agent": 9, "manipul": [9, 11], "multilater": 9, "creation": [9, 11], "great": 9, "suffic": 9, "cluster": 9, "hear": 9, "But": 9, "lot": 9, "surviv": 9, "overcom": 9, "challeng": 9, "asymmetr": [9, 10, 11], "closer": 9, "distinguish": 9, "contend": 9, "enable_transport": [9, 10], "randomis": 9, "prioriti": 9, "invers": 9, "proport": 9, "count": 9, "insert": 9, "closest": 9, "newer": 9, "newest": 9, "discard": 9, "contact": 9, "shortest": 9, "predict": 9, "constantli": 9, "earlier": 9, "opt": 9, "against": 9, "bidirect": 9, "travers": 9, "rememb": 9, "ten": 9, "advanc": 9, "confirm": [9, 11], "insid": 9, "intermediari": 9, "moment": [9, 11], "methodologi": [9, 10], "answer": [9, 10], "malici": 9, "pretend": 9, "recreat": 9, "rotat": 9, "memori": 9, "thereaft": 9, "297": [9, 11], "practic": [9, 11], "neglig": 9, "1200": 9, "96": 9, "keypair": 9, "simplic": 9, "explan": [9, 10], "lki": 9, "laid": 9, "had": 9, "construct": [9, 11], "lkr": 9, "chose": 9, "direction": 9, "unequivoc": 9, "retransmiss": 9, "reassembl": 9, "programmat": 9, "satisfi": 9, "half": [9, 11], "duplex": [9, 11], "averag": 9, "throughput": [9, 11], "x": [9, 10], "runtim": 9, "consist": 9, "whereupon": 9, "stabl": [9, 11], "stage": 9, "year": 9, "microcontrol": 9, "430": 9, "868": 9, "900": 9, "recent": 9, "mac": 9, "tailor": 9, "treat": 9, "regard": 9, "preshar": 9, "ifac": [9, 10], "compos": 9, "field": 9, "context": 9, "465": 9, "vari": [9, 10], "00": [9, 10], "01": 9, "11": 9, "_______": 9, "________________": 9, "________": 9, "______": 9, "__": 9, "_": 9, "01010000": 9, "00000100": 9, "hash1": 9, "hash2": 9, "header_2": 9, "00000000": 9, "00000111": 9, "header_1": 9, "10000000": 9, "exclud": 9, "51": 9, "167": 9, "83": [9, 10], "115": 9, "99": 9, "conceptu": 9, "hkdf": 9, "fernet": [9, 11], "cbc": [9, 11], "hmac": [9, 11], "hashlib": 9, "pkcs7": [9, 11], "pad": [9, 11], "trivial": [9, 11], "consequ": 9, "backend": 9, "loss": 9, "scrutini": 9, "review": [9, 11], "risk": 9, "driver": [10, 11], "privileg": 10, "light": 10, "weight": 10, "etc": 10, "boot": 10, "ie": 10, "breviti": 10, "socket": 10, "turn": 10, "share_inst": 10, "shared_instance_port": 10, "37428": 10, "instance_control_port": 10, "37429": 10, "panic": 10, "unrecover": 10, "panic_on_interface_error": 10, "probe": 10, "respond_to_prob": 10, "warn": 10, "debug": 10, "unus": 10, "teach": 10, "task": 10, "08": 10, "18": 10, "17": 10, "59": 10, "56": 10, "v": 10, "show": 10, "ifconfig": 10, "gbp": 10, "13": 10, "kb": 10, "86": 10, "mbp": 10, "63": 10, "23": 10, "80": 10, "tcpinterfac": 10, "dublin": 10, "187": 10, "27": 10, "74": 10, "uhf": [10, 11], "kbp": 10, "e702c42ba8": 10, "49": 10, "9": 10, "5245a8efe1788c6a1cd36144a270e13b": 10, "j": 10, "posit": 10, "stat": 10, "arx": 10, "atx": 10, "revers": 10, "json": 10, "new_ident": 10, "984b74a3f768bef236af4371e6f248cd": 10, "new_id": 10, "0f4259fef4521ab75a3409e353fe9073eb10783b4912a6a9937c57bf44a62c1": 10, "hidden": 10, "8dd57a738226809646089335a6b03695": 10, "my_fil": 10, "txt": 10, "bc7291552be7a58f361522990465165c": 10, "rfe": 10, "fetch": 10, "30602def3b3506a28ed33db6f60cc6c9": 10, "2b489d06eaf7c543808c76a5332a447d": 10, "my_ident": 10, "2225fdeecaf6e2db4556c3c2d7637294": 10, "w": 10, "decreas": 10, "overwrit": 10, "c89b4da064bf66d280f0e4d8abfd9806": 10, "f53a1c4278e0726bb73fcc623d6ce763": 10, "rnstransport": 10, "2d03725b327348980d570f739a3a5708": 10, "38": 10, "469": 10, "781": 10, "e7536ee90bd4a440e130490b87a25124": 10, "809": 10, "73": 10, "1726dbad538775b5bf9b0ea25a4079c8": 10, "c50cc4e4f7838b6c31f60ab9032cbc62": 10, "allowed_ident": 10, "copi": 10, "tgz": 10, "73cbd378bb0286ed11a707c13447bb1": 10, "allowed_hash": 10, "silent": 10, "auth": 10, "941bed5e228775e5a8079fc38b1ccf3f": 10, "1b03013c25f1c2ca068a4f080b844a10": 10, "7a55144adf826958a9529a3bcf08b149": 10, "cat": 10, "proc": 10, "cpuinfo": 10, "pseudo": 10, "stderr": 10, "noauth": 10, "noid": 10, "mirror": 10, "max": 10, "fw": 10, "nocheck": 10, "flash": 10, "baud_flash": 10, "freq": 10, "hz": 10, "bw": 10, "txp": 10, "sf": 10, "cr": 10, "eeprom": 10, "backup": 10, "dump": 10, "wipe": 10, "hexbyt": 10, "attach": 10, "older": 10, "onlin": 10, "extract": 10, "cach": 10, "921600": 10, "bluetooth": 10, "intens": 10, "consol": 10, "unlock": 10, "perman": 10, "administr": 10, "ftdi_ft230x_basic_uart_43891ckm": 10, "if00": 10, "port0": 10, "plug": 10, "unplug": 10, "systemd": 10, "usr": 10, "bin": 10, "execstartpr": 10, "restart": 10, "restartsec": 10, "usernameher": 10, "execstart": 10, "wantedbi": 10, "systemctl": 10, "readili": 11, "advers": 11, "unforg": 11, "acknowledg": 11, "empow": 11, "autonomi": 11, "sovereignti": 11, "subject": 11, "outsid": 11, "planetari": 11, "hierarch": 11, "beaureucrat": 11, "resili": 11, "userland": 11, "beta": 11, "bug": 11, "warrant": 11, "sha256": 11, "iv": 11, "urandom": 11, "intuit": 11, "friendli": 11, "44": 11, "gigabyt": 11, "scalabl": 11, "hoc": 11, "transform": 11, "fact": 11, "strength": 11, "generalis": 11, "fibr": 11, "popular": 11, "ideal": 11, "stdio": 11, "hack": 11, "foremost": 11, "audit": 11, "privaci": 11, "thorough": 11, "research": 11, "touch": 11}, "objects": {"RNS": [[7, 0, 1, "", "Buffer"], [7, 0, 1, "", "Destination"], [7, 0, 1, "", "Identity"], [7, 0, 1, "", "Link"], [7, 0, 1, "", "MessageBase"], [7, 0, 1, "", "Packet"], [7, 0, 1, "", "PacketReceipt"], [7, 0, 1, "", "RawChannelReader"], [7, 0, 1, "", "RawChannelWriter"], [7, 0, 1, "", "RequestReceipt"], [7, 0, 1, "", "Resource"], [7, 0, 1, "", "Reticulum"], [7, 0, 1, "", "Transport"]], "RNS.Buffer": [[7, 1, 1, "", "create_bidirectional_buffer"], [7, 1, 1, "", "create_reader"], [7, 1, 1, "", "create_writer"]], "RNS.Channel": [[7, 0, 1, "", "Channel"]], "RNS.Channel.Channel": [[7, 2, 1, "", "MDU"], [7, 1, 1, "", "add_message_handler"], [7, 1, 1, "", "is_ready_to_send"], [7, 1, 1, "", "register_message_type"], [7, 1, 1, "", "remove_message_handler"], [7, 1, 1, "", "send"]], "RNS.Destination": [[7, 1, 1, "", "accepts_links"], [7, 1, 1, "", "announce"], [7, 1, 1, "", "app_and_aspects_from_name"], [7, 1, 1, "", "clear_default_app_data"], [7, 1, 1, "", "create_keys"], [7, 1, 1, "", "decrypt"], [7, 1, 1, "", "deregister_request_handler"], [7, 1, 1, "", "encrypt"], [7, 1, 1, "", "expand_name"], [7, 1, 1, "", "get_private_key"], [7, 1, 1, "", "hash"], [7, 1, 1, "", "hash_from_name_and_identity"], [7, 1, 1, "", "load_private_key"], [7, 1, 1, "", "register_request_handler"], [7, 1, 1, "", "set_default_app_data"], [7, 1, 1, "", "set_link_established_callback"], [7, 1, 1, "", "set_packet_callback"], [7, 1, 1, "", "set_proof_requested_callback"], [7, 1, 1, "", "set_proof_strategy"], [7, 1, 1, "", "sign"]], "RNS.Identity": [[7, 3, 1, "", "CURVE"], [7, 3, 1, "", "KEYSIZE"], [7, 3, 1, "", "TRUNCATED_HASHLENGTH"], [7, 1, 1, "", "decrypt"], [7, 1, 1, "", "encrypt"], [7, 1, 1, "", "from_bytes"], [7, 1, 1, "", "from_file"], [7, 1, 1, "", "full_hash"], [7, 1, 1, "", "get_private_key"], [7, 1, 1, "", "get_public_key"], [7, 1, 1, "", "get_random_hash"], [7, 1, 1, "", "load_private_key"], [7, 1, 1, "", "load_public_key"], [7, 1, 1, "", "recall"], [7, 1, 1, "", "recall_app_data"], [7, 1, 1, "", "sign"], [7, 1, 1, "", "to_file"], [7, 1, 1, "", "truncated_hash"], [7, 1, 1, "", "validate"]], "RNS.Link": [[7, 3, 1, "", "CURVE"], [7, 3, 1, "", "ESTABLISHMENT_TIMEOUT_PER_HOP"], [7, 3, 1, "", "KEEPALIVE"], [7, 3, 1, "", "KEEPALIVE_TIMEOUT_FACTOR"], [7, 3, 1, "", "STALE_GRACE"], [7, 3, 1, "", "STALE_TIME"], [7, 1, 1, "", "get_channel"], [7, 1, 1, "", "get_establishment_rate"], [7, 1, 1, "", "get_remote_identity"], [7, 1, 1, "", "identify"], [7, 1, 1, "", "inactive_for"], [7, 1, 1, "", "no_inbound_for"], [7, 1, 1, "", "no_outbound_for"], [7, 1, 1, "", "request"], [7, 1, 1, "", "set_link_closed_callback"], [7, 1, 1, "", "set_packet_callback"], [7, 1, 1, "", "set_remote_identified_callback"], [7, 1, 1, "", "set_resource_callback"], [7, 1, 1, "", "set_resource_concluded_callback"], [7, 1, 1, "", "set_resource_started_callback"], [7, 1, 1, "", "set_resource_strategy"], [7, 1, 1, "", "teardown"]], "RNS.MessageBase": [[7, 3, 1, "", "MSGTYPE"], [7, 1, 1, "", "pack"], [7, 1, 1, "", "unpack"]], "RNS.Packet": [[7, 3, 1, "", "ENCRYPTED_MDU"], [7, 3, 1, "", "PLAIN_MDU"], [7, 1, 1, "", "resend"], [7, 1, 1, "", "send"]], "RNS.PacketReceipt": [[7, 1, 1, "", "get_rtt"], [7, 1, 1, "", "get_status"], [7, 1, 1, "", "set_delivery_callback"], [7, 1, 1, "", "set_timeout"], [7, 1, 1, "", "set_timeout_callback"]], "RNS.RawChannelReader": [[7, 1, 1, "", "__init__"], [7, 1, 1, "", "add_ready_callback"], [7, 1, 1, "", "remove_ready_callback"]], "RNS.RawChannelWriter": [[7, 1, 1, "", "__init__"]], "RNS.RequestReceipt": [[7, 1, 1, "", "get_progress"], [7, 1, 1, "", "get_request_id"], [7, 1, 1, "", "get_response"], [7, 1, 1, "", "get_response_time"], [7, 1, 1, "", "get_status"]], "RNS.Resource": [[7, 1, 1, "", "advertise"], [7, 1, 1, "", "cancel"], [7, 1, 1, "", "get_data_size"], [7, 1, 1, "", "get_hash"], [7, 1, 1, "", "get_parts"], [7, 1, 1, "", "get_progress"], [7, 1, 1, "", "get_segments"], [7, 1, 1, "", "get_transfer_size"], [7, 1, 1, "", "is_compressed"]], "RNS.Reticulum": [[7, 3, 1, "", "ANNOUNCE_CAP"], [7, 3, 1, "", "MTU"], [7, 1, 1, "", "should_use_implicit_proof"], [7, 1, 1, "", "transport_enabled"]], "RNS.Transport": [[7, 3, 1, "", "PATHFINDER_M"], [7, 1, 1, "", "deregister_announce_handler"], [7, 1, 1, "", "has_path"], [7, 1, 1, "", "hops_to"], [7, 1, 1, "", "next_hop"], [7, 1, 1, "", "next_hop_interface"], [7, 1, 1, "", "register_announce_handler"], [7, 1, 1, "", "request_path"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:property", "3": "py:attribute"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "property", "Python property"], "3": ["py", "attribute", "Python attribute"]}, "titleterms": {"code": [0, 8, 9], "exampl": [0, 6], "minim": 0, "announc": [0, 5, 9], "broadcast": 0, "echo": 0, "link": [0, 9], "identif": 0, "request": 0, "respons": 0, "channel": 0, "buffer": 0, "filetransf": 0, "an": 1, "explan": 1, "reticulum": [1, 2, 3, 4, 8, 9, 10, 11], "human": 1, "Beings": 1, "get": [2, 9], "start": 2, "fast": 2, "standalon": 2, "instal": [2, 3], "resolv": 2, "depend": 2, "issu": 2, "try": 2, "us": [2, 10, 11], "base": [2, 3], "program": [2, 10], "remot": 2, "shell": 2, "nomad": 2, "network": [2, 4, 6], "sideband": 2, "includ": [2, 10], "util": [2, 10], "creat": [2, 3], "With": 2, "connect": 2, "instanc": 2, "over": [2, 6], "internet": [2, 6], "public": [2, 9], "testnet": 2, "ad": 2, "radio": [2, 3], "interfac": [2, 5, 9, 11], "develop": 2, "particip": 2, "platform": 2, "specif": [2, 9], "note": 2, "android": 2, "arm64": 2, "raspberri": 2, "pi": 2, "debian": 2, "bookworm": 2, "ubuntu": 2, "lunar": 2, "pure": 2, "python": 2, "commun": 3, "hardwar": 3, "combin": 3, "type": [3, 9, 11], "rnode": [3, 5], "support": [3, 8], "board": 3, "lilygo": 3, "lora32": 3, "v2": 3, "1": 3, "0": 3, "t": 3, "beam": 3, "heltec": 3, "unsign": 3, "x": 3, "v1": 3, "usag": 3, "wifi": 3, "ethernet": 3, "serial": [3, 5, 10], "line": 3, "devic": [3, 11], "packet": [3, 9], "modem": 3, "stack": 4, "manual": 4, "tabl": 4, "Of": 4, "content": 4, "indic": 4, "configur": [5, 10], "auto": 5, "i2p": 5, "tcp": 5, "server": 5, "client": 5, "udp": 5, "lora": [5, 6], "pipe": 5, "kiss": 5, "ax": 5, "25": 5, "common": 5, "option": 5, "mode": 5, "rate": 5, "control": 5, "new": 5, "destin": [5, 9], "limit": 5, "build": 6, "concept": 6, "overview": 6, "scenario": 6, "interconnect": 6, "site": 6, "bridg": 6, "growth": 6, "converg": 6, "api": 7, "refer": [7, 9], "donat": 8, "provid": 8, "feedback": 8, "contribut": 8, "understand": 9, "motiv": 9, "goal": 9, "introduct": 9, "basic": 9, "function": 9, "name": [9, 10], "kei": 9, "ident": 9, "further": 9, "transport": 9, "node": 9, "The": [9, 10], "mechan": 9, "detail": 9, "reach": 9, "establish": 9, "resourc": 9, "setup": 9, "protocol": 9, "prioritis": 9, "access": 9, "wire": 9, "format": 9, "propag": 9, "rule": 9, "cryptograph": 9, "primit": 9, "your": 10, "system": 10, "data": 10, "rnsd": 10, "rnstatu": 10, "rnid": 10, "rnpath": 10, "rnprobe": 10, "rncp": 10, "rnx": 10, "rnodeconf": 10, "improv": 10, "fix": 10, "port": 10, "servic": 10, "what": 11, "i": 11, "current": 11, "statu": 11, "doe": 11, "offer": 11, "where": 11, "can": 11, "caveat": 11, "emptor": 11}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 58}, "alltitles": {"Code Examples": [[0, "code-examples"]], "Minimal": [[0, "minimal"]], "Announce": [[0, "announce"]], "Broadcast": [[0, "broadcast"]], "Echo": [[0, "echo"]], "Link": [[0, "link"]], "Identification": [[0, "example-identify"]], "Requests & Responses": [[0, "requests-responses"]], "Channel": [[0, "channel"]], "Buffer": [[0, "buffer"]], "Filetransfer": [[0, "filetransfer"]], "An Explanation of Reticulum for Human Beings": [[1, "an-explanation-of-reticulum-for-human-beings"]], "Getting Started Fast": [[2, "getting-started-fast"]], "Standalone Reticulum Installation": [[2, "standalone-reticulum-installation"]], "Resolving Dependency & Installation Issues": [[2, "resolving-dependency-installation-issues"]], "Try Using a Reticulum-based Program": [[2, "try-using-a-reticulum-based-program"]], "Remote Shell": [[2, "remote-shell"]], "Nomad Network": [[2, "nomad-network"]], "Sideband": [[2, "sideband"]], "Using the Included Utilities": [[2, "using-the-included-utilities"]], "Creating a Network With Reticulum": [[2, "creating-a-network-with-reticulum"]], "Connecting Reticulum Instances Over the Internet": [[2, "connecting-reticulum-instances-over-the-internet"]], "Connect to the Public Testnet": [[2, "connect-to-the-public-testnet"]], "Adding Radio Interfaces": [[2, "adding-radio-interfaces"]], "Develop a Program with Reticulum": [[2, "develop-a-program-with-reticulum"]], "Participate in Reticulum Development": [[2, "participate-in-reticulum-development"]], "Platform-Specific Install Notes": [[2, "platform-specific-install-notes"]], "Android": [[2, "android"]], "ARM64": [[2, "arm64"]], "Raspberry Pi": [[2, "raspberry-pi"]], "Debian Bookworm": [[2, "debian-bookworm"]], "Ubuntu Lunar": [[2, "ubuntu-lunar"]], "Pure-Python Reticulum": [[2, "pure-python-reticulum"]], "Communications Hardware": [[3, "communications-hardware"]], "Combining Hardware Types": [[3, "combining-hardware-types"]], "RNode": [[3, "rnode"]], "Creating RNodes": [[3, "creating-rnodes"]], "Supported Boards": [[3, "supported-boards"]], "LilyGO LoRa32 v2.1": [[3, "lilygo-lora32-v2-1"]], "LilyGO LoRa32 v2.0": [[3, "lilygo-lora32-v2-0"]], "LilyGO T-Beam": [[3, "lilygo-t-beam"]], "Heltec LoRa32 v2.0": [[3, "heltec-lora32-v2-0"]], "Unsigned RNode v2.x": [[3, "unsigned-rnode-v2-x"]], "Unsigned RNode v1.x": [[3, "unsigned-rnode-v1-x"]], "Installation": [[3, "installation"]], "Usage with Reticulum": [[3, "usage-with-reticulum"]], "WiFi-based Hardware": [[3, "wifi-based-hardware"]], "Ethernet-based Hardware": [[3, "ethernet-based-hardware"]], "Serial Lines & Devices": [[3, "serial-lines-devices"]], "Packet Radio Modems": [[3, "packet-radio-modems"]], "Reticulum Network Stack Manual": [[4, "reticulum-network-stack-manual"]], "Table Of Contents": [[4, "table-of-contents"]], "Indices and Tables": [[4, "indices-and-tables"]], "Configuring Interfaces": [[5, "configuring-interfaces"]], "Auto Interface": [[5, "auto-interface"]], "I2P Interface": [[5, "i2p-interface"]], "TCP Server Interface": [[5, "tcp-server-interface"]], "TCP Client Interface": [[5, "tcp-client-interface"]], "UDP Interface": [[5, "udp-interface"]], "RNode LoRa Interface": [[5, "rnode-lora-interface"]], "Serial Interface": [[5, "serial-interface"]], "Pipe Interface": [[5, "pipe-interface"]], "KISS Interface": [[5, "kiss-interface"]], "AX.25 KISS Interface": [[5, "ax-25-kiss-interface"]], "Common Interface Options": [[5, "common-interface-options"]], "Interface Modes": [[5, "interface-modes"]], "Announce Rate Control": [[5, "announce-rate-control"]], "New Destination Rate Limiting": [[5, "new-destination-rate-limiting"]], "Building Networks": [[6, "building-networks"]], "Concepts & Overview": [[6, "concepts-overview"]], "Example Scenarios": [[6, "example-scenarios"]], "Interconnected LoRa Sites": [[6, "interconnected-lora-sites"]], "Bridging Over the Internet": [[6, "bridging-over-the-internet"]], "Growth and Convergence": [[6, "growth-and-convergence"]], "API Reference": [[7, "api-reference"]], "Support Reticulum": [[8, "support-reticulum"]], "Donations": [[8, "donations"]], "Provide Feedback": [[8, "provide-feedback"]], "Contribute Code": [[8, "contribute-code"]], "Understanding Reticulum": [[9, "understanding-reticulum"]], "Motivation": [[9, "motivation"]], "Goals": [[9, "goals"]], "Introduction & Basic Functionality": [[9, "introduction-basic-functionality"]], "Destinations": [[9, "destinations"]], "Destination Naming": [[9, "destination-naming"]], "Public Key Announcements": [[9, "public-key-announcements"]], "Identities": [[9, "understanding-identities"]], "Getting Further": [[9, "getting-further"]], "Reticulum Transport": [[9, "reticulum-transport"]], "Node Types": [[9, "node-types"]], "The Announce Mechanism in Detail": [[9, "the-announce-mechanism-in-detail"]], "Reaching the Destination": [[9, "reaching-the-destination"]], "Link Establishment in Detail": [[9, "link-establishment-in-detail"]], "Resources": [[9, "resources"]], "Reference Setup": [[9, "reference-setup"]], "Protocol Specifics": [[9, "protocol-specifics"]], "Packet Prioritisation": [[9, "packet-prioritisation"]], "Interface Access Codes": [[9, "interface-access-codes"]], "Wire Format": [[9, "wire-format"]], "Announce Propagation Rules": [[9, "announce-propagation-rules"]], "Cryptographic Primitives": [[9, "cryptographic-primitives"]], "Using Reticulum on Your System": [[10, "using-reticulum-on-your-system"]], "Configuration & Data": [[10, "configuration-data"]], "Included Utility Programs": [[10, "included-utility-programs"]], "The rnsd Utility": [[10, "the-rnsd-utility"]], "The rnstatus Utility": [[10, "the-rnstatus-utility"]], "The rnid Utility": [[10, "the-rnid-utility"]], "The rnpath Utility": [[10, "the-rnpath-utility"]], "The rnprobe Utility": [[10, "the-rnprobe-utility"]], "The rncp Utility": [[10, "the-rncp-utility"]], "The rnx Utility": [[10, "the-rnx-utility"]], "The rnodeconf Utility": [[10, "the-rnodeconf-utility"]], "Improving System Configuration": [[10, "improving-system-configuration"]], "Fixed Serial Port Names": [[10, "fixed-serial-port-names"]], "Reticulum as a System Service": [[10, "reticulum-as-a-system-service"]], "What is Reticulum?": [[11, "what-is-reticulum"]], "Current Status": [[11, "current-status"]], "What does Reticulum Offer?": [[11, "what-does-reticulum-offer"]], "Where can Reticulum be Used?": [[11, "where-can-reticulum-be-used"]], "Interface Types and Devices": [[11, "interface-types-and-devices"]], "Caveat Emptor": [[11, "caveat-emptor"]]}, "indexentries": {"announce_cap (rns.reticulum attribute)": [[7, "RNS.Reticulum.ANNOUNCE_CAP"]], "buffer (class in rns)": [[7, "RNS.Buffer"]], "curve (rns.identity attribute)": [[7, "RNS.Identity.CURVE"]], "curve (rns.link attribute)": [[7, "RNS.Link.CURVE"]], "channel (class in rns.channel)": [[7, "RNS.Channel.Channel"]], "destination (class in rns)": [[7, "RNS.Destination"]], "encrypted_mdu (rns.packet attribute)": [[7, "RNS.Packet.ENCRYPTED_MDU"]], "establishment_timeout_per_hop (rns.link attribute)": [[7, "RNS.Link.ESTABLISHMENT_TIMEOUT_PER_HOP"]], "identity (class in rns)": [[7, "RNS.Identity"]], "keepalive (rns.link attribute)": [[7, "RNS.Link.KEEPALIVE"]], "keepalive_timeout_factor (rns.link attribute)": [[7, "RNS.Link.KEEPALIVE_TIMEOUT_FACTOR"]], "keysize (rns.identity attribute)": [[7, "RNS.Identity.KEYSIZE"]], "link (class in rns)": [[7, "RNS.Link"]], "mdu (rns.channel.channel property)": [[7, "RNS.Channel.Channel.MDU"]], "msgtype (rns.messagebase attribute)": [[7, "RNS.MessageBase.MSGTYPE"]], "mtu (rns.reticulum attribute)": [[7, "RNS.Reticulum.MTU"]], "messagebase (class in rns)": [[7, "RNS.MessageBase"]], "pathfinder_m (rns.transport attribute)": [[7, "RNS.Transport.PATHFINDER_M"]], "plain_mdu (rns.packet attribute)": [[7, "RNS.Packet.PLAIN_MDU"]], "packet (class in rns)": [[7, "RNS.Packet"]], "packetreceipt (class in rns)": [[7, "RNS.PacketReceipt"]], "rawchannelreader (class in rns)": [[7, "RNS.RawChannelReader"]], "rawchannelwriter (class in rns)": [[7, "RNS.RawChannelWriter"]], "requestreceipt (class in rns)": [[7, "RNS.RequestReceipt"]], "resource (class in rns)": [[7, "RNS.Resource"]], "reticulum (class in rns)": [[7, "RNS.Reticulum"]], "stale_grace (rns.link attribute)": [[7, "RNS.Link.STALE_GRACE"]], "stale_time (rns.link attribute)": [[7, "RNS.Link.STALE_TIME"]], "truncated_hashlength (rns.identity attribute)": [[7, "RNS.Identity.TRUNCATED_HASHLENGTH"]], "transport (class in rns)": [[7, "RNS.Transport"]], "__init__() (rns.rawchannelreader method)": [[7, "RNS.RawChannelReader.__init__"]], "__init__() (rns.rawchannelwriter method)": [[7, "RNS.RawChannelWriter.__init__"]], "accepts_links() (rns.destination method)": [[7, "RNS.Destination.accepts_links"]], "add_message_handler() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.add_message_handler"]], "add_ready_callback() (rns.rawchannelreader method)": [[7, "RNS.RawChannelReader.add_ready_callback"]], "advertise() (rns.resource method)": [[7, "RNS.Resource.advertise"]], "announce() (rns.destination method)": [[7, "RNS.Destination.announce"]], "app_and_aspects_from_name() (rns.destination static method)": [[7, "RNS.Destination.app_and_aspects_from_name"]], "cancel() (rns.resource method)": [[7, "RNS.Resource.cancel"]], "clear_default_app_data() (rns.destination method)": [[7, "RNS.Destination.clear_default_app_data"]], "create_bidirectional_buffer() (rns.buffer static method)": [[7, "RNS.Buffer.create_bidirectional_buffer"]], "create_keys() (rns.destination method)": [[7, "RNS.Destination.create_keys"]], "create_reader() (rns.buffer static method)": [[7, "RNS.Buffer.create_reader"]], "create_writer() (rns.buffer static method)": [[7, "RNS.Buffer.create_writer"]], "decrypt() (rns.destination method)": [[7, "RNS.Destination.decrypt"]], "decrypt() (rns.identity method)": [[7, "RNS.Identity.decrypt"]], "deregister_announce_handler() (rns.transport static method)": [[7, "RNS.Transport.deregister_announce_handler"]], "deregister_request_handler() (rns.destination method)": [[7, "RNS.Destination.deregister_request_handler"]], "encrypt() (rns.destination method)": [[7, "RNS.Destination.encrypt"]], "encrypt() (rns.identity method)": [[7, "RNS.Identity.encrypt"]], "expand_name() (rns.destination static method)": [[7, "RNS.Destination.expand_name"]], "from_bytes() (rns.identity static method)": [[7, "RNS.Identity.from_bytes"]], "from_file() (rns.identity static method)": [[7, "RNS.Identity.from_file"]], "full_hash() (rns.identity static method)": [[7, "RNS.Identity.full_hash"]], "get_channel() (rns.link method)": [[7, "RNS.Link.get_channel"]], "get_data_size() (rns.resource method)": [[7, "RNS.Resource.get_data_size"]], "get_establishment_rate() (rns.link method)": [[7, "RNS.Link.get_establishment_rate"]], "get_hash() (rns.resource method)": [[7, "RNS.Resource.get_hash"]], "get_parts() (rns.resource method)": [[7, "RNS.Resource.get_parts"]], "get_private_key() (rns.destination method)": [[7, "RNS.Destination.get_private_key"]], "get_private_key() (rns.identity method)": [[7, "RNS.Identity.get_private_key"]], "get_progress() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_progress"]], "get_progress() (rns.resource method)": [[7, "RNS.Resource.get_progress"]], "get_public_key() (rns.identity method)": [[7, "RNS.Identity.get_public_key"]], "get_random_hash() (rns.identity static method)": [[7, "RNS.Identity.get_random_hash"]], "get_remote_identity() (rns.link method)": [[7, "RNS.Link.get_remote_identity"]], "get_request_id() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_request_id"]], "get_response() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_response"]], "get_response_time() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_response_time"]], "get_rtt() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.get_rtt"]], "get_segments() (rns.resource method)": [[7, "RNS.Resource.get_segments"]], "get_status() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.get_status"]], "get_status() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_status"]], "get_transfer_size() (rns.resource method)": [[7, "RNS.Resource.get_transfer_size"]], "has_path() (rns.transport static method)": [[7, "RNS.Transport.has_path"]], "hash() (rns.destination static method)": [[7, "RNS.Destination.hash"]], "hash_from_name_and_identity() (rns.destination static method)": [[7, "RNS.Destination.hash_from_name_and_identity"]], "hops_to() (rns.transport static method)": [[7, "RNS.Transport.hops_to"]], "identify() (rns.link method)": [[7, "RNS.Link.identify"]], "inactive_for() (rns.link method)": [[7, "RNS.Link.inactive_for"]], "is_compressed() (rns.resource method)": [[7, "RNS.Resource.is_compressed"]], "is_ready_to_send() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.is_ready_to_send"]], "load_private_key() (rns.destination method)": [[7, "RNS.Destination.load_private_key"]], "load_private_key() (rns.identity method)": [[7, "RNS.Identity.load_private_key"]], "load_public_key() (rns.identity method)": [[7, "RNS.Identity.load_public_key"]], "next_hop() (rns.transport static method)": [[7, "RNS.Transport.next_hop"]], "next_hop_interface() (rns.transport static method)": [[7, "RNS.Transport.next_hop_interface"]], "no_inbound_for() (rns.link method)": [[7, "RNS.Link.no_inbound_for"]], "no_outbound_for() (rns.link method)": [[7, "RNS.Link.no_outbound_for"]], "pack() (rns.messagebase method)": [[7, "RNS.MessageBase.pack"]], "recall() (rns.identity static method)": [[7, "RNS.Identity.recall"]], "recall_app_data() (rns.identity static method)": [[7, "RNS.Identity.recall_app_data"]], "register_announce_handler() (rns.transport static method)": [[7, "RNS.Transport.register_announce_handler"]], "register_message_type() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.register_message_type"]], "register_request_handler() (rns.destination method)": [[7, "RNS.Destination.register_request_handler"]], "remove_message_handler() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.remove_message_handler"]], "remove_ready_callback() (rns.rawchannelreader method)": [[7, "RNS.RawChannelReader.remove_ready_callback"]], "request() (rns.link method)": [[7, "RNS.Link.request"]], "request_path() (rns.transport static method)": [[7, "RNS.Transport.request_path"]], "resend() (rns.packet method)": [[7, "RNS.Packet.resend"]], "send() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.send"]], "send() (rns.packet method)": [[7, "RNS.Packet.send"]], "set_default_app_data() (rns.destination method)": [[7, "RNS.Destination.set_default_app_data"]], "set_delivery_callback() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.set_delivery_callback"]], "set_link_closed_callback() (rns.link method)": [[7, "RNS.Link.set_link_closed_callback"]], "set_link_established_callback() (rns.destination method)": [[7, "RNS.Destination.set_link_established_callback"]], "set_packet_callback() (rns.destination method)": [[7, "RNS.Destination.set_packet_callback"]], "set_packet_callback() (rns.link method)": [[7, "RNS.Link.set_packet_callback"]], "set_proof_requested_callback() (rns.destination method)": [[7, "RNS.Destination.set_proof_requested_callback"]], "set_proof_strategy() (rns.destination method)": [[7, "RNS.Destination.set_proof_strategy"]], "set_remote_identified_callback() (rns.link method)": [[7, "RNS.Link.set_remote_identified_callback"]], "set_resource_callback() (rns.link method)": [[7, "RNS.Link.set_resource_callback"]], "set_resource_concluded_callback() (rns.link method)": [[7, "RNS.Link.set_resource_concluded_callback"]], "set_resource_started_callback() (rns.link method)": [[7, "RNS.Link.set_resource_started_callback"]], "set_resource_strategy() (rns.link method)": [[7, "RNS.Link.set_resource_strategy"]], "set_timeout() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.set_timeout"]], "set_timeout_callback() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.set_timeout_callback"]], "should_use_implicit_proof() (rns.reticulum static method)": [[7, "RNS.Reticulum.should_use_implicit_proof"]], "sign() (rns.destination method)": [[7, "RNS.Destination.sign"]], "sign() (rns.identity method)": [[7, "RNS.Identity.sign"]], "teardown() (rns.link method)": [[7, "RNS.Link.teardown"]], "to_file() (rns.identity method)": [[7, "RNS.Identity.to_file"]], "transport_enabled() (rns.reticulum static method)": [[7, "RNS.Reticulum.transport_enabled"]], "truncated_hash() (rns.identity static method)": [[7, "RNS.Identity.truncated_hash"]], "unpack() (rns.messagebase method)": [[7, "RNS.MessageBase.unpack"]], "validate() (rns.identity method)": [[7, "RNS.Identity.validate"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["examples", "forhumans", "gettingstartedfast", "hardware", "index", "interfaces", "networks", "reference", "support", "understanding", "using", "whatis"], "filenames": ["examples.rst", "forhumans.rst", "gettingstartedfast.rst", "hardware.rst", "index.rst", "interfaces.rst", "networks.rst", "reference.rst", "support.rst", "understanding.rst", "using.rst", "whatis.rst"], "titles": ["Code Examples", "An Explanation of Reticulum for Human Beings", "Getting Started Fast", "Communications Hardware", "Reticulum Network Stack Manual", "Configuring Interfaces", "Building Networks", "API Reference", "Support Reticulum", "Understanding Reticulum", "Using Reticulum on Your System", "What is Reticulum?"], "terms": {"A": [0, 2, 5, 6, 7, 9, 10, 11], "number": [0, 2, 5, 6, 7, 9, 10], "ar": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "includ": [0, 3, 4, 5, 7, 9], "sourc": [0, 2, 3, 6, 9, 11], "distribut": [0, 2, 6, 7, 9, 10], "reticulum": [0, 5, 6, 7], "you": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "can": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10], "us": [0, 3, 4, 5, 6, 7, 9], "learn": [0, 2, 8, 9], "how": [0, 2, 3, 5, 6, 9, 10, 11], "write": [0, 2, 5, 7, 9, 10], "your": [0, 2, 3, 4, 5, 6, 8, 9, 11], "own": [0, 2, 6, 7, 9, 10, 11], "program": [0, 3, 4, 5, 7, 9, 11], "The": [0, 2, 3, 4, 5, 6, 7, 11], "demonstr": [0, 5], "bare": 0, "minimum": [0, 5, 6, 9], "setup": [0, 2, 4, 5], "requir": [0, 2, 5, 6, 9, 10, 11], "connect": [0, 3, 4, 5, 6, 7, 9, 10, 11], "network": [0, 3, 5, 7, 9, 10, 11], "from": [0, 2, 3, 5, 6, 7, 9, 10, 11], "In": [0, 2, 3, 5, 6, 7, 9, 10, 11], "about": [0, 2, 3, 5, 6, 7, 9], "five": 0, "line": [0, 2, 4, 5, 6, 9, 10, 11], "have": [0, 2, 3, 5, 6, 7, 9, 10], "stack": [0, 2, 6, 7, 9, 10, 11], "initialis": [0, 7, 10], "readi": [0, 2, 3, 5, 6, 7, 11], "pass": [0, 3, 5, 6, 7, 9, 10], "traffic": [0, 2, 5, 6, 7, 9, 10], "thi": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "rn": [0, 2, 3, 7, 9, 10], "start": [0, 3, 4, 5, 7, 9, 10], "up": [0, 2, 3, 5, 6, 9, 10, 11], "gener": [0, 2, 3, 5, 6, 7, 9, 10, 11], "new": [0, 4, 6, 7, 9, 10], "destin": [0, 2, 4, 6, 7, 10], "let": [0, 2, 5, 6, 9, 10], "user": [0, 2, 5, 6, 9, 10, 11], "send": [0, 5, 7, 9, 10], "an": [0, 2, 3, 5, 6, 7, 9, 10, 11], "import": [0, 2, 3, 5, 6, 7, 8, 9], "argpars": 0, "": [0, 2, 5, 6, 9, 10, 11], "defin": [0, 5, 7, 9, 10], "app": [0, 2, 7, 9], "name": [0, 4, 5, 6, 7], "we": [0, 2, 3, 5, 8, 9], "ll": [0, 2, 11], "all": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "creat": [0, 4, 5, 6, 7, 9, 10, 11], "sinc": [0, 2, 5, 6, 7, 9], "basic": [0, 2, 4, 7, 10], "i": [0, 2, 3, 4, 5, 6, 7, 8, 9, 10], "part": [0, 5, 6, 7, 9, 10], "rang": [0, 2, 3, 5, 6, 9, 10, 11], "util": [0, 3, 4, 5, 9], "put": [0, 3, 5, 10], "them": [0, 2, 3, 5, 6, 8, 9, 10, 11], "within": [0, 2, 5, 6, 7, 9], "namespac": 0, "example_util": 0, "app_nam": [0, 7], "execut": [0, 2, 5, 7, 10], "when": [0, 2, 3, 5, 6, 7, 9, 10], "def": 0, "program_setup": 0, "configpath": 0, "must": [0, 2, 5, 6, 7, 9, 10], "first": [0, 2, 5, 7, 9, 10], "randomli": [0, 9], "ident": [0, 2, 4, 7, 10, 11], "our": [0, 9], "just": [0, 2, 3, 5, 6, 9, 11], "endpoint": [0, 6, 7, 9], "address": [0, 2, 5, 6, 7, 9, 11], "commun": [0, 2, 4, 5, 6, 7, 8, 9, 10, 11], "also": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "exist": [0, 2, 3, 5, 9, 10, 11], "which": [0, 2, 5, 6, 7, 9, 10], "know": [0, 2, 3, 6, 7, 9, 11], "thei": [0, 2, 5, 6, 7, 9, 10], "reachabl": [0, 2, 5, 6, 7, 9, 10], "automat": [0, 2, 3, 5, 6, 7, 9, 10, 11], "path": [0, 2, 3, 5, 7, 9, 10], "anywher": [0, 5], "els": [0, 2, 6, 9], "IN": [0, 7], "singl": [0, 5, 7, 9, 10, 11], "minimalsampl": 0, "configur": [0, 2, 3, 4, 6, 7, 9, 11], "prove": [0, 9], "packet": [0, 2, 4, 5, 6, 7, 10, 11], "By": [0, 2, 5, 7, 9, 10], "do": [0, 2, 3, 5, 7, 9, 11], "proof": [0, 7, 9, 10], "each": [0, 2, 5, 6, 9, 10], "incom": [0, 5, 7, 10], "transmit": [0, 5, 9], "back": [0, 5, 9, 11], "sender": [0, 2, 6, 9, 10], "anyon": [0, 2, 3, 5, 6, 7, 9, 10], "tri": 0, "whether": [0, 5, 7, 9], "wa": [0, 3, 5, 6, 7, 9, 10, 11], "receiv": [0, 2, 5, 7, 9, 10], "correctli": 0, "set_proof_strategi": [0, 7], "prove_al": [0, 7], "everyth": [0, 6, 9], "hand": 0, "over": [0, 3, 4, 5, 7, 9, 10, 11], "control": [0, 2, 3, 4, 6, 7, 9, 11], "loop": 0, "announceloop": 0, "log": [0, 5, 10], "prettyhexrep": 0, "hash": [0, 2, 7, 9, 10], "run": [0, 2, 3, 5, 6, 7, 9, 10, 11], "hit": 0, "enter": [0, 10], "manual": [0, 2, 5, 6, 7, 10], "ctrl": 0, "c": [0, 6, 10], "quit": 0, "until": [0, 2, 5, 7], "exit": [0, 2, 7, 10], "If": [0, 2, 3, 5, 6, 7, 9, 10, 11], "server": [0, 2, 3, 4, 7, 10], "client": [0, 2, 3, 4, 7], "messag": [0, 2, 7, 9, 10], "direct": [0, 2, 3, 6, 7, 9, 10], "toward": [0, 5, 9], "while": [0, 2, 3, 5, 6, 7, 9, 11], "true": [0, 2, 5, 7, 10], "input": [0, 10], "sent": [0, 2, 7, 9, 10], "startup": [0, 10], "get": [0, 3, 4, 5, 7, 11], "pars": 0, "desir": [0, 3, 5, 9], "mode": [0, 2, 3, 4, 9, 10, 11], "__name__": 0, "__main__": 0, "try": [0, 4, 5], "parser": 0, "argumentpars": 0, "descript": [0, 10], "add_argu": 0, "config": [0, 2, 6, 10], "action": 0, "store": [0, 3, 9, 10], "default": [0, 2, 3, 5, 6, 7, 9, 10], "none": [0, 2, 5, 7, 9, 10], "help": [0, 6, 8, 9, 10, 11], "altern": [0, 2, 5, 10], "directori": [0, 10], "type": [0, 2, 4, 5, 6, 7, 10], "str": 0, "arg": 0, "parse_arg": 0, "configarg": 0, "except": [0, 5, 7], "keyboardinterrupt": 0, "print": [0, 5, 10], "found": [0, 2, 5, 6, 9, 10], "http": [0, 2, 8], "github": [0, 2, 8], "com": [0, 2, 8], "markqvist": [0, 2, 8], "blob": [0, 9], "master": [0, 7], "py": [0, 2, 9, 10], "build": [0, 2, 3, 4, 5, 9, 11], "upon": [0, 9], "previou": 0, "explor": [0, 9, 11], "notif": [0, 7], "relev": [0, 3, 5, 7, 9, 10], "set": [0, 2, 3, 5, 6, 7, 9, 10, 11], "callback": [0, 7], "applic": [0, 5, 6, 7, 9, 10, 11], "arriv": [0, 9], "random": [0, 7, 9], "two": [0, 2, 3, 5, 6, 7, 9], "list": [0, 2, 3, 5, 7, 9, 11], "string": [0, 7], "app_data": [0, 7], "fruit": 0, "peach": 0, "quinc": 0, "date": [0, 2], "tangerin": 0, "pomelo": 0, "carambola": 0, "grape": 0, "noble_gas": 0, "helium": 0, "neon": 0, "argon": 0, "krypton": 0, "xenon": 0, "radon": 0, "oganesson": 0, "announcesampl": 0, "space": [0, 2, 3, 6, 9, 11], "destination_1": 0, "destination_2": 0, "handler": [0, 7], "onli": [0, 2, 3, 5, 6, 7, 9, 10, 11], "ask": [0, 2, 3, 7], "chang": [0, 2, 5, 7, 9, 10, 11], "filter": [0, 6, 9, 10], "see": [0, 2, 5, 6, 7, 9, 10, 11], "what": [0, 2, 4, 7, 9], "happen": [0, 7, 9], "announce_handl": 0, "exampleannouncehandl": 0, "aspect_filt": [0, 7], "regist": [0, 7], "transport": [0, 2, 4, 5, 6, 7, 10, 11], "register_announce_handl": [0, 7], "select": [0, 5], "randint": 0, "0": [0, 2, 5, 7, 9, 10, 11], "len": 0, "1": [0, 2, 5, 7, 9, 10], "data": [0, 2, 3, 4, 5, 6, 7, 9, 11], "encod": [0, 7], "utf": 0, "8": [0, 5, 10], "nobl": 0, "ga": 0, "noble_ga": 0, "need": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "class": [0, 6, 7, 11], "method": [0, 2, 5, 7, 9], "take": [0, 2, 5, 9, 10, 11], "option": [0, 2, 3, 4, 6, 7, 9, 10], "argument": [0, 7, 10], "instanc": [0, 4, 5, 7, 9, 10], "some": [0, 2, 3, 5, 6, 7, 9, 10], "want": [0, 2, 5, 6, 9, 10, 11], "aspect": [0, 3, 5, 7, 9, 10], "__init__": [0, 7], "self": [0, 6, 11], "call": [0, 6, 7, 9, 11], "system": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11], "match": [0, 5, 9, 10], "specif": [0, 3, 4, 5, 7, 10, 11], "cannot": [0, 2, 5, 11], "wildcard": 0, "received_announc": [0, 7], "destination_hash": [0, 7, 10], "announced_ident": [0, 7], "contain": [0, 6, 7, 9, 10], "follow": [0, 2, 3, 5, 7, 8, 9, 10, 11], "decod": 0, "plaintext": [0, 7], "unencrypt": [0, 7, 9], "inform": [0, 2, 4, 5, 6, 7, 9, 10], "ani": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "listen": [0, 5, 9, 10], "sy": 0, "did": 0, "one": [0, 2, 3, 5, 6, 7, 9, 10, 11], "public_inform": 0, "ad": [0, 3, 4, 5, 6, 7, 9, 11], "so": [0, 2, 3, 5, 6, 7, 8, 9, 10, 11], "differ": [0, 2, 3, 5, 6, 7, 9, 10, 11], "plain": [0, 3, 5, 7, 9], "uncencrypt": 0, "broadcast_destin": 0, "specifi": [0, 2, 3, 5, 6, 7, 10], "everi": [0, 5, 6, 7, 9], "time": [0, 2, 3, 5, 6, 7, 9, 10], "set_packet_callback": [0, 7], "packet_callback": 0, "main": 0, "broadcastloop": 0, "simpli": [0, 2, 3, 5, 6, 9, 10], "out": [0, 2, 3, 5, 6, 7, 9, 10, 11], "r": [0, 5, 9, 10], "n": [0, 9, 10], "end": [0, 5, 6, 7, 9, 11], "stdout": [0, 5, 10], "flush": 0, "text": [0, 2, 6, 9], "prompt": 0, "channelarg": 0, "between": [0, 5, 6, 7, 9], "interfac": [0, 3, 4, 6, 7, 10], "simpl": [0, 3, 7, 9, 10, 11], "respond": [0, 7, 10], "receipt": [0, 7, 9], "choos": [0, 2, 5, 9], "global": [0, 2, 5, 6, 9, 11], "server_ident": 0, "queri": [0, 2, 7], "abl": [0, 2, 5, 6, 7, 9, 10], "verifi": [0, 7, 9, 10, 11], "repli": [0, 10], "encrypt": [0, 2, 6, 7, 9, 10, 11], "wai": [0, 2, 5, 6, 7, 9], "certain": [0, 5, 6, 8, 9], "than": [0, 2, 5, 6, 7, 9, 10], "read": [0, 2, 5, 7, 9, 10], "echo_destin": 0, "tell": [0, 5], "function": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11], "server_callback": 0, "wait": [0, 5, 9], "go": [0, 2, 5, 9], "handl": [0, 3, 5, 6, 7, 9, 10, 11], "reception_stat": 0, "is_connected_to_shared_inst": 0, "reception_rssi": 0, "get_packet_rssi": 0, "packet_hash": 0, "reception_snr": 0, "get_packet_snr": 0, "rssi": [0, 10], "dbm": [0, 5, 10], "snr": [0, 10], "db": [0, 10], "destination_hexhash": 0, "timeout": [0, 7, 10], "binari": [0, 2, 7, 9], "represent": [0, 7], "command": [0, 2, 5, 10], "dest_len": 0, "truncated_hashlength": [0, 7], "2": [0, 5, 7, 9, 10], "rais": [0, 7], "valueerror": [0, 7], "length": [0, 5, 7, 9], "invalid": [0, 7], "hex": 0, "hexadecim": [0, 9, 10], "charact": 0, "byte": [0, 7, 9, 10, 11], "format": [0, 4, 10, 11], "fromhex": 0, "e": [0, 6, 10], "check": [0, 2, 7, 9, 10], "overrid": 0, "loglevel": [0, 7, 10], "provid": [0, 2, 3, 4, 5, 6, 7, 9, 11], "feedback": [0, 4], "log_info": 0, "doe": [0, 2, 3, 4, 5, 6, 7, 9, 10], "load": [0, 2, 7, 10], "has_path": [0, 7], "To": [0, 2, 3, 5, 6, 9, 10, 11], "public": [0, 4, 5, 7, 10], "kei": [0, 4, 6, 7, 10, 11], "done": [0, 2, 5, 6, 9, 10], "recal": [0, 7, 10], "modul": [0, 2, 3, 9, 10, 11], "known": [0, 5, 7, 9, 10], "return": [0, 7, 10], "outgo": [0, 5, 7, 9, 10], "got": 0, "correct": [0, 9], "convent": 0, "request_destin": 0, "add": [0, 2, 5, 6, 7, 10], "echo_request": 0, "get_random_hash": [0, 7], "successfulli": [0, 9], "packetreceipt": [0, 4, 7], "packet_receipt": [0, 7], "set_timeout": [0, 7], "set_timeout_callback": [0, 7], "packet_timed_out": 0, "deliveri": [0, 2, 7, 11], "set_delivery_callback": [0, 7], "packet_deliv": 0, "yet": [0, 5, 9, 11], "retri": [0, 7, 9], "onc": [0, 2, 3, 5, 6, 7, 9, 10, 11], "request_path": [0, 7], "statu": [0, 2, 4, 5, 7, 9, 10], "deliv": [0, 7], "rtt": [0, 7, 9], "get_rtt": [0, 7], "round": [0, 7, 10], "3": [0, 5, 9, 10, 11], "rttstring": 0, "second": [0, 5, 7, 9, 10, 11], "1000": 0, "millisecond": [0, 10], "proof_packet": 0, "valid": [0, 5, 7, 9, 10], "trip": [0, 7, 10], "fail": [0, 2, 7], "store_tru": 0, "t": [0, 2, 5, 6, 7, 10], "metavar": 0, "float": [0, 7], "narg": 0, "timeoutarg": 0, "print_help": 0, "establish": [0, 2, 5, 6, 7, 11], "remot": [0, 4, 7, 10], "forth": 0, "o": [0, 2, 9, 10, 11], "refer": [0, 2, 4], "latest": [0, 2, 5, 10], "latest_client_link": 0, "server_destin": 0, "linkexampl": 0, "set_link_established_callback": [0, 7], "client_connect": 0, "server_loop": 0, "set_link_closed_callback": [0, 7], "client_disconnect": 0, "server_packet_receiv": 0, "disconnect": [0, 5], "activ": [0, 2, 5, 7, 9], "last": [0, 5, 7], "reply_text": 0, "reply_data": 0, "server_link": 0, "sleep": [0, 10], "begin": [0, 3, 7], "And": 0, "client_packet_receiv": 0, "close": [0, 6, 7, 10], "link_establish": 0, "link_clos": 0, "interact": [0, 2, 7, 9, 10], "client_loop": 0, "becom": [0, 2, 6, 9], "should_quit": 0, "fals": [0, 5, 7, 10], "should": [0, 2, 5, 6, 7, 9, 10, 11], "q": [0, 10], "teardown": [0, 7], "mdu": [0, 7], "size": [0, 2, 5, 7, 9, 10], "exce": [0, 5, 7], "log_error": 0, "error": [0, 2, 8, 10], "ha": [0, 2, 3, 5, 6, 7, 9, 11], "been": [0, 2, 3, 5, 6, 7, 9, 11], "later": [0, 2, 5, 10], "teardown_reason": 0, "now": [0, 2, 6, 9, 10], "elif": 0, "destination_clos": 0, "exit_handl": 0, "5": [0, 2, 5, 10], "_exit": 0, "identifi": [0, 5, 7, 9, 10], "intiat": 0, "initi": [0, 6, 7, 9, 11], "peer": [0, 2, 5, 7, 9, 10], "identifyexampl": 0, "set_remote_identified_callback": [0, 7], "remote_identifi": 0, "origin": [0, 6, 9], "displai": [0, 9, 10], "remote_p": 0, "unidentifi": 0, "get_remote_ident": [0, 7], "client_ident": 0, "sendig": 0, "perform": [0, 2, 5, 6, 9, 10], "random_text_gener": 0, "request_id": [0, 7], "link_id": [0, 7], "remote_ident": [0, 7], "requested_at": [0, 7], "look": [0, 2, 5, 9, 10], "On": [0, 2, 5, 10], "full": [0, 5, 7, 9, 10, 11], "moon": 0, "becki": 0, "upset": 0, "stai": [0, 9, 10], "awai": [0, 5, 6, 9, 10], "pet": 0, "shop": 0, "stock": 0, "requestexampl": 0, "register_request_handl": [0, 7], "response_gener": [0, 7], "allow": [0, 2, 3, 5, 6, 7, 9, 10, 11], "allow_al": [0, 7], "response_callback": [0, 7], "got_respons": 0, "failed_callback": [0, 7], "request_fail": 0, "request_receipt": [0, 7], "request_receiv": 0, "structur": [0, 7, 9, 11], "datetim": 0, "vendor": [0, 3], "umsgpack": 0, "share": [0, 2, 6, 7, 9, 10], "object": [0, 7], "subclass": [0, 7], "messagebas": [0, 4, 7], "ensur": [0, 5, 7, 9, 10, 11], "serial": [0, 2, 4, 9, 11], "deseri": 0, "multiplex": 0, "other": [0, 2, 3, 5, 6, 7, 9, 10], "both": [0, 2, 3, 5, 6, 7, 9, 10, 11], "same": [0, 2, 3, 5, 6, 7, 9, 10], "definit": [0, 9], "note": [0, 3, 4, 5, 7, 9, 10], "wish": [0, 9, 10], "make": [0, 2, 3, 5, 8, 9, 10], "stringmessag": 0, "convei": 0, "timestamp": 0, "msgtype": [0, 7], "variabl": [0, 7], "assign": [0, 9, 10], "integ": 0, "valu": [0, 5, 7, 9], "constructor": 0, "uniqu": [0, 5, 7, 9, 11], "across": [0, 3, 6], "0xf000": [0, 7], "reserv": [0, 7, 9], "0x0101": 0, "callabl": [0, 7], "paramet": [0, 3, 5, 6, 7, 9, 10], "empti": 0, "version": [0, 2, 9, 10], "unpack": [0, 7], "final": [0, 7, 9], "implement": [0, 5, 6, 7, 8, 9, 11], "pack": [0, 7], "raw": [0, 3, 7], "payload": [0, 7, 9, 10], "packag": [0, 2, 5, 9], "bundl": 0, "could": [0, 2, 5, 6, 7, 9, 11], "struct": 0, "python": [0, 4, 7, 9, 10, 11], "more": [0, 2, 3, 5, 6, 7, 9, 10, 11], "fit": 0, "entir": [0, 6, 7, 9, 10], "avail": [0, 2, 3, 4, 5, 6, 7, 9, 10, 11], "properti": [0, 6, 7], "slightli": [0, 2], "less": [0, 5, 7, 9, 11], "due": [0, 6], "header": [0, 7, 9], "content": [0, 2, 6, 10], "stream": [0, 7, 9], "packb": 0, "unpackb": 0, "channelexampl": 0, "get_channel": [0, 7], "register_message_typ": [0, 7], "add_message_handl": [0, 7], "server_message_receiv": 0, "param": 0, "deserializ": 0, "unless": [0, 2, 5, 7, 9], "preced": 0, "indic": 0, "isinst": 0, "reply_messag": 0, "order": [0, 7, 10], "were": [0, 6], "consid": [0, 5, 7, 9, 11], "subsequ": [0, 9], "skip": 0, "packed_s": 0, "is_ready_to_send": [0, 7], "pleas": [0, 2, 5, 7, 10, 11], "pend": 0, "complet": [0, 2, 3, 5, 6, 7, 9, 10, 11], "client_message_receiv": 0, "reader": [0, 7], "writer": [0, 7], "__future__": 0, "annot": 0, "latest_buff": 0, "bufferexampl": 0, "old": [0, 3, 8, 9], "stream_id": [0, 7], "bit": [0, 2, 5, 7, 9, 10, 11], "like": [0, 2, 3, 5, 6, 7, 9, 10, 11], "file": [0, 2, 3, 5, 6, 7, 9, 10, 11], "descriptor": 0, "actual": [0, 2, 5, 9], "separ": [0, 2, 5, 6, 9, 10], "unidirect": 0, "flow": [0, 5, 6], "opposit": [0, 5], "create_bidirectional_buff": [0, 7], "server_buffer_readi": 0, "ready_byt": [0, 7], "int": [0, 7], "otherwis": [0, 7], "forc": [0, 10], "server_client_connect": 0, "detail": [0, 2, 4, 5, 7, 10, 11], "client_buffer_readi": 0, "termin": [0, 2, 7], "download": [0, 5, 10], "resourc": [0, 2, 4, 7, 8], "effici": [0, 2, 5, 9, 11], "serv": [0, 3, 5, 6, 9, 10], "larg": [0, 3, 5, 6, 7, 9, 11], "transfer": [0, 7, 9, 10, 11], "recommend": [0, 2, 9], "compress": [0, 7, 9], "hashmap": 0, "sequenc": [0, 7, 9, 11], "long": [0, 2, 3, 5, 7, 9], "slow": [0, 5, 9], "cpu": [0, 9], "probabl": [0, 2, 6, 9, 10, 11], "result": [0, 9, 10], "befor": [0, 2, 5, 7, 9, 10], "prepar": [0, 6], "instead": [0, 2, 5, 9, 10], "slice": 0, "chunk": 0, "suitabl": [0, 2, 5, 6, 9, 11], "thread": 0, "app_timeout": 0, "45": [0, 9], "serve_path": 0, "here": [0, 2, 5, 9, 10], "conveni": 0, "list_fil": 0, "entri": [0, 2, 9], "listdir": 0, "isfil": 0, "join": [0, 2, 6, 8, 9], "host": [0, 2, 5, 9, 10], "still": [0, 2, 5, 6, 9, 10], "isdir": 0, "list_packet": 0, "list_receipt": 0, "list_deliv": 0, "list_timeout": 0, "too": [0, 6], "mani": [0, 2, 3, 5, 6, 7, 9, 10, 11], "split": 0, "filelist": 0, "multipl": [0, 5, 6, 9, 10], "hint": 0, "alreadi": [0, 2, 3, 6, 7, 9, 10], "support": [0, 2, 4, 5, 6, 9, 10, 11], "after": [0, 2, 5, 6, 7, 9, 10], "re": [0, 5, 7, 9], "keep": [0, 6, 7, 9, 10, 11], "open": [0, 3, 5, 6, 7, 8, 9, 10, 11], "client_request": 0, "longer": [0, 2, 6, 9, 10], "filenam": 0, "rb": 0, "file_resourc": 0, "resource_sending_conclud": 0, "somethign": 0, "went": 0, "wrong": [0, 5], "don": [0, 2, 6, 7, 10], "unknown": [0, 5, 7, 9, 10], "conclud": [0, 7], "hasattr": 0, "server_fil": 0, "current": [0, 2, 4, 5, 7, 9], "current_download": 0, "current_filenam": 0, "statist": [0, 5, 8], "download_start": 0, "download_finish": 0, "download_tim": 0, "transfer_s": 0, "file_s": 0, "expect": [0, 5, 7, 9, 10], "normal": [0, 2, 5, 7, 10], "accordingli": 0, "filelist_receiv": 0, "advertis": [0, 7], "set_resource_strategi": [0, 7], "accept_al": [0, 7], "set_resource_started_callback": [0, 7], "download_began": 0, "set_resource_concluded_callback": [0, 7], "download_conclud": 0, "menu": 0, "menu_mod": 0, "down": [0, 3, 5, 7], "request_packet": 0, "create_receipt": [0, 7], "print_menu": 0, "25": [0, 4, 11], "user_input": 0, "screen": 0, "variou": [0, 2, 5, 6, 9, 10], "state": 0, "It": [0, 2, 3, 5, 7, 9, 10, 11], "uninterest": 0, "won": 0, "clear_screen": 0, "print_filelist": 0, "percent": [0, 5], "get_progress": [0, 7], "100": [0, 5, 9], "rprogress": 0, "save_error": 0, "disk": [0, 7], "hour": [0, 5], "rem": 0, "divmod": 0, "3600": [0, 5], "minut": [0, 2, 5, 9], "60": [0, 5], "timestr": 0, "05": 0, "2f": 0, "ttime": 0, "taken": [0, 9], "tfile": 0, "size_str": 0, "tdata": 0, "teffect": 0, "rate": [0, 4, 7, 10], "suffix": 0, "b": [0, 6, 10], "ttransfer": 0, "press": 0, "index": [0, 2, 4], "enumer": 0, "filelist_data": 0, "extend": [0, 2, 7], "local": [0, 2, 5, 6, 7, 9, 10, 11], "append": [0, 9], "visibl": 0, "updat": [0, 2, 7, 9, 10], "small": [0, 5, 6, 9, 11], "job": 0, "potenti": [0, 5, 8, 9, 10, 11], "target": [0, 5, 10], "filelist_timeout_job": 0, "setdaemon": 0, "detect": 0, "shown": 0, "progress": [0, 7, 10, 11], "total_s": 0, "saved_filenam": 0, "counter": 0, "wb": 0, "human": [0, 7, 8, 9], "readabl": [0, 7, 9], "num": 0, "unit": [0, 2, 7, 10], "ki": 0, "mi": 0, "gi": 0, "ti": [0, 9], "pi": [0, 4, 6, 9, 10, 11], "ei": 0, "zi": 0, "last_unit": 0, "yi": 0, "k": 0, "m": [0, 2, 9, 10], "g": [0, 10], "p": [0, 10], "z": 0, "y": 0, "ab": 0, "1024": 0, "clear": [0, 5, 7, 9, 10], "cl": 0, "nt": 0, "dir": 0, "best": [2, 9, 11], "guid": [2, 3, 9], "outlin": [2, 3, 9], "sensibl": [2, 3, 5], "scenario": [2, 4, 9], "relat": 2, "easiest": [2, 3, 5, 9], "via": [2, 3, 5, 8, 9, 10, 11], "pip": [2, 3, 10], "manag": [2, 6, 7, 9, 10, 11], "sudo": [2, 10], "apt": 2, "python3": [2, 3], "pamac": 2, "similar": [2, 3, 5, 6, 7, 10, 11], "dowload": 2, "releas": [2, 5, 9], "wheel": 2, "channel": [2, 4, 5, 6, 7, 8, 9, 11], "offlin": 2, "py3": 2, "whl": 2, "mai": [2, 5, 7, 9, 10], "case": [2, 3, 5, 6, 9, 10], "usual": 2, "essenti": [2, 5, 9], "deriv": [2, 7, 9, 11], "arch": 2, "manjaro": 2, "devel": 2, "fedora": 2, "dnf": 2, "groupinstal": 2, "tool": [2, 3, 9, 10, 11], "librari": 2, "compil": 2, "miss": 2, "even": [2, 5, 6, 9, 10, 11], "pre": [2, 7, 9], "built": [2, 5, 9, 11], "few": [2, 3, 5, 6, 9, 10, 11], "extrem": [2, 9, 10, 11], "low": [2, 3, 5, 6, 9, 11], "bandwidth": [2, 5, 6, 7, 9, 10, 11], "These": [2, 5, 7, 9, 10], "feel": 2, "work": [2, 3, 5, 6, 9, 10, 11], "design": [2, 3, 6, 9, 11], "well": [2, 3, 5, 6, 7, 9, 10, 11], "lora": [2, 3, 4, 9, 11], "link": [2, 3, 4, 5, 6, 7, 10, 11], "wifi": [2, 4, 5, 6, 9, 10, 11], "wire": [2, 3, 4, 5, 11], "ethernet": [2, 4, 5, 6, 9, 11], "combin": [2, 4, 6, 9], "As": [2, 3, 5, 6, 7, 9, 11], "easi": [2, 3, 5, 9, 10, 11], "experi": [2, 9], "without": [2, 3, 5, 6, 9, 11], "transceiv": [2, 3, 5, 9, 11], "infrastructur": [2, 3, 5, 6, 9, 10], "launch": [2, 10], "devic": [2, 4, 5, 6, 7, 9, 10], "enough": [2, 3, 9], "physic": [2, 3, 5, 9, 10], "rnsh": [2, 10], "fulli": [2, 3, 9, 10, 11], "session": [2, 9], "pipe": [2, 4, 11], "ssh": 2, "veri": [2, 3, 5, 6, 7, 8, 9, 10, 11], "facilit": 2, "suit": [2, 3, 9, 10], "featur": [2, 8, 9, 11], "delai": [2, 5, 9, 10], "browser": 2, "page": [2, 4, 9], "dynam": [2, 10], "render": 2, "authent": [2, 5, 6, 7, 9, 11], "face": [2, 5], "protocol": [2, 3, 4, 5, 11], "lxmf": [2, 10], "anoth": [2, 7, 9, 10], "project": 2, "nomadnet": 2, "might": [2, 5, 6, 9, 10], "reboot": 2, "again": [2, 5, 9, 10], "would": [2, 5, 6, 7, 9], "rather": [2, 7], "graphic": 2, "linux": [2, 3, 9], "maco": 2, "peopl": [2, 9], "compat": [2, 3, 5, 7, 9], "i2p": [2, 4, 11], "qr": 2, "paper": 2, "anyth": [2, 3, 5, 9, 10, 11], "interoper": [2, 3, 6, 9, 11], "come": [2, 9], "easier": [2, 5, 6, 10], "rnsd": [2, 4], "background": [2, 5], "foreground": 2, "servic": [2, 4, 6], "rnstatu": [2, 4, 5, 9], "rnpath": [2, 4, 5], "rnprobe": [2, 4], "view": [2, 5, 9, 10], "chapter": [2, 3, 5, 6, 7, 9, 10, 11], "locat": [2, 3, 6, 9, 10], "exampl": [2, 3, 4, 5, 7, 9, 10, 11], "exampleconfig": [2, 10], "broadcast": [2, 4, 5, 7, 9], "domain": [2, 5], "further": [2, 4, 5], "tcp": [2, 3, 4, 6, 9, 11], "There": [2, 6, 9, 11], "subnet": [2, 6], "rout": [2, 3, 5, 6, 7, 9, 10, 11], "tabl": [2, 5, 6, 9, 10], "thing": 2, "discov": [2, 5], "topographi": [2, 6, 9], "situat": [2, 3, 5, 6, 9], "where": [2, 3, 4, 5, 6, 7, 9, 10], "utilis": [2, 5, 6, 7, 10, 11], "extern": [2, 5, 7, 11], "often": [2, 5, 6, 9, 10], "suffici": [2, 5, 9, 10], "act": [2, 7, 9, 10], "gatewai": [2, 5, 6, 9], "enabl": [2, 3, 5, 6, 7, 9, 10, 11], "wider": [2, 5, 9, 10], "autointerfac": [2, 3, 5, 10], "possibli": 2, "offer": [2, 4, 5, 7, 9], "carefulli": 2, "tcpserverinterfac": [2, 5], "access": [2, 4, 5, 6, 7, 10], "ip": [2, 3, 5, 9, 10, 11], "faster": [2, 5, 9], "lower": [2, 5, 10], "latenc": [2, 9, 11], "energi": 2, "i2pinterfac": [2, 5], "howev": [2, 6, 9], "leak": 2, "reveal": [2, 7, 9, 11], "who": [2, 9], "inspect": [2, 5, 6, 9, 10], "someon": [2, 5], "determin": [2, 7, 9], "adversari": 2, "record": [2, 9], "metadata": 2, "transmiss": [2, 5, 7, 9], "though": [2, 5, 9], "publicli": [2, 5], "most": [2, 3, 5, 6, 9, 10], "anymor": 2, "through": [2, 3, 5, 6, 7, 9, 10, 11], "invis": [2, 5], "daemon": [2, 5, 7, 10], "parallel": 2, "For": [2, 3, 5, 6, 7, 9, 10, 11], "alwai": [2, 5, 7, 9, 10], "node": [2, 4, 5, 6, 10, 11], "i2pd": [2, 5], "mix": [2, 5, 6, 10], "hide": 2, "relai": 2, "extra": [2, 5, 6, 10], "comput": [2, 9, 11], "power": [2, 3, 5, 9, 10], "attack": 2, "form": [2, 5, 6, 7, 9], "deep": 2, "much": [2, 5, 6, 9, 10], "difficult": [2, 3], "non": [2, 7, 9], "behind": [2, 9], "firewal": [2, 5], "nat": 2, "preserv": [2, 7], "anonym": [2, 6, 7, 9, 11], "care": [2, 7, 11], "experiment": [2, 11], "made": [2, 7, 9], "amsterdam": 2, "hub": [2, 5], "tcpclientinterfac": [2, 3, 5], "ye": [2, 5, 9, 10], "target_host": [2, 5], "target_port": [2, 5], "4965": [2, 10], "betweenthebord": 2, "4242": [2, 5], "g3br23bvx3lq5uddcsjii74xgmn6y5q325ovrkq2zw2wbzbqgbuq": 2, "b32": [2, 5], "point": [2, 3, 5, 6, 9, 10], "absolut": [2, 8, 11], "usag": [2, 4, 5, 7, 8, 10], "occasion": 2, "test": [2, 9, 10], "failur": [2, 5], "guarante": [2, 9], "hardwar": [2, 4, 5, 6, 7, 9, 10, 11], "wide": [2, 3, 5, 9, 11], "section": [2, 3, 5, 6, 9, 10], "easili": [2, 5, 6, 9, 10, 11], "cheapli": 2, "rnode": [2, 4, 9, 10, 11], "purpos": [2, 3, 5, 7, 9], "digit": [2, 3, 9, 11], "integr": [2, 6, 9], "yourself": [2, 9, 11], "custom": [2, 5, 7, 9, 11], "firmwar": [2, 3, 9, 10], "board": [2, 4, 9, 11], "auto": [2, 3, 4, 7, 9], "script": [2, 3], "prefer": [2, 9], "purchas": [2, 6, 9, 11], "supplier": 2, "addit": [2, 3, 5, 7, 9, 10, 11], "privat": [2, 5, 7, 8, 9, 10, 11], "secur": [2, 9, 11], "uncensor": 2, "mesh": [2, 5, 6, 11], "think": 2, "welcom": 2, "head": 2, "discuss": [2, 3, 9], "propos": 2, "abov": [2, 3, 5, 9, 10], "next": [2, 6, 7, 9], "step": [2, 3], "pyseri": 2, "api": [2, 4, 9, 11], "associ": [2, 7, 9], "recip": 2, "cryptographi": [2, 9, 11], "clone": 2, "repositori": [2, 8, 9], "git": 2, "move": [2, 5, 9, 10], "folder": 2, "symlink": [2, 10], "cd": 2, "ln": [2, 10], "echo": [2, 4], "ve": 2, "immedi": [2, 5, 10], "necessari": [2, 3, 5, 6, 7, 9], "nano": 2, "repeat": 2, "process": [2, 3, 5, 7, 9], "h": [2, 10], "ping": [2, 10], "replac": [2, 9, 10], "below": [2, 3, 5, 10], "174a64852a75682259ad8b921b8bf416": 2, "filetransf": [2, 4, 7], "understand": [2, 4, 7, 10], "submit": 2, "pull": 2, "request": [2, 4, 5, 7, 9, 10], "good": [2, 3, 6, 9, 10], "idea": [2, 9, 10], "introduc": [2, 9], "disucss": 2, "forum": 2, "maintain": [2, 9], "place": [2, 5, 6, 9, 10], "procedur": [2, 7, 9], "quirk": 2, "worth": 2, "being": [2, 5, 7, 9], "awar": [2, 9], "termux": 2, "f": [2, 10], "droid": 2, "emul": 2, "environ": [2, 6, 9], "abil": [2, 3], "pkg": 2, "sure": [2, 3, 10], "upgrad": [2, 9], "Then": 2, "reason": [2, 5, 9], "attempt": [2, 3, 7], "openssl": [2, 9], "libffi": 2, "rust": 2, "export": 2, "cargo_build_target": 2, "aarch64": 2, "sever": [2, 6, 7, 10], "succe": 2, "softwar": [2, 3, 5, 9, 11], "possibl": [2, 3, 5, 6, 7, 9, 10, 11], "apk": 2, "tutori": 2, "code": [2, 3, 4, 5, 10], "startig": 2, "architectur": 2, "precompil": 2, "dev": [2, 5, 10], "64": [2, 9, 10], "32": [2, 9], "rasperri": 2, "os": [2, 5], "april": 2, "2023": [2, 10], "onto": [2, 9], "unfortun": 2, "pipx": 2, "isol": [2, 5, 10], "neg": 2, "affect": [2, 5], "ensurepath": 2, "restor": [2, 5], "behaviour": [2, 5, 10], "edit": [2, 10], "conf": 2, "break": [2, 7, 9, 11], "somewhat": 2, "mislead": 2, "choic": 2, "word": 2, "cours": [2, 5, 9], "rare": [2, 5], "lead": [2, 9], "conflict": 2, "pose": [2, 9], "problem": [2, 9], "_could_": 2, "obscur": 2, "rnspure": 2, "No": [2, 5, 9, 10, 11], "matter": [2, 5], "perfectli": 2, "pyca": [2, 9], "cryptograph": [2, 4, 6, 10, 11], "primit": [2, 4], "One": [3, 7], "truli": [3, 9], "valuabl": [3, 8], "almost": [3, 5, 9, 10], "conceiv": 3, "kind": [3, 5, 6, 9], "medium": [3, 5, 6, 7, 9, 11], "flexibl": [3, 5, 11], "cover": [3, 9, 11], "wireless": [3, 6], "decad": 3, "modern": [3, 9], "millimet": 3, "wave": 3, "backhaul": [3, 6], "oper": [3, 5, 6, 7, 9, 10, 11], "chanc": 3, "box": 3, "glue": 3, "littl": [3, 9], "effort": 3, "pipeinterfac": [3, 5], "kiss": [3, 4, 10, 11], "simplyequip": 3, "broad": 3, "abund": 3, "sometim": 3, "especi": [3, 5], "scratch": 3, "real": [3, 6, 11], "world": [3, 6, 11], "minim": [3, 4, 9], "cost": [3, 9, 11], "fundament": [3, 9], "categori": 3, "addition": [3, 5, 9], "common": [3, 4, 6, 9, 10, 11], "briefli": [3, 9], "describ": [3, 5, 7, 9], "emploi": [3, 9], "pattern": [3, 9], "high": [3, 5, 9, 11], "capac": [3, 5, 7, 9], "gain": [3, 7, 9], "antenna": 3, "backbon": 3, "area": [3, 5, 6, 9, 11], "reliabl": [3, 5, 6, 7, 9, 11], "commonli": 3, "either": [3, 5, 6, 7, 9, 10], "expens": 3, "hard": 3, "hungri": 3, "allevi": 3, "particular": 3, "plaform": 3, "depend": [3, 4, 6, 7, 9, 10], "its": [3, 5, 7, 9], "compon": [3, 8, 9], "frequenc": [3, 5, 9, 10], "band": [3, 9], "scheme": 3, "limit": [3, 4, 6, 9], "ism": [3, 9], "avoid": [3, 9, 10], "confus": [3, 9], "layer": [3, 5, 6, 9, 11], "noth": [3, 11], "lorawan": [3, 9], "standard": [3, 9], "central": [3, 6, 9], "iot": 3, "overhead": [3, 5, 9], "level": [3, 5, 9, 10], "directli": [3, 5, 7, 9, 10, 11], "replic": [3, 9], "togeth": [3, 9, 10], "exact": [3, 5, 9], "explain": [3, 7], "approach": [3, 9, 10], "develop": [3, 4, 7, 8, 9, 11], "boil": 3, "obtain": [3, 7, 9], "autom": [3, 8, 9], "provis": [3, 10], "rnodeinterfac": [3, 5, 10], "ic": 3, "semtech": 3, "sx1276": 3, "platform": [3, 4, 9], "esp32": 3, "manufactur": 3, "io": 3, "avr": 3, "atmega1284p": 3, "rnodeconf": [3, 4], "autoinstal": [3, 10], "seri": 3, "question": [3, 5], "port": [3, 4, 5, 6, 9, 11], "air": [3, 11], "id": [3, 5, 7, 9, 10], "itself": [3, 4, 9], "short": [3, 5, 9, 10], "bridg": [3, 4], "behav": 3, "mean": [3, 5, 6, 9, 10], "dhcp": [3, 5, 10], "dn": 3, "least": [3, 5, 9, 10, 11], "transpar": [3, 5, 9, 10], "distanc": [3, 9], "ubiqu": 3, "airmax": 3, "ltu": 3, "mikrotik": 3, "exhaust": [3, 9], "rel": [3, 9, 11], "cheap": [3, 9], "co": [3, 5, 11], "concurr": [3, 9, 10], "switch": [3, 5, 9, 10], "fiber": 3, "optic": [3, 11], "virtual": [3, 5, 6, 9, 10, 11], "adapt": [3, 6], "tun": 3, "tap": 3, "serialinterfac": [3, 5], "usb": [3, 6, 9, 10], "freedv": 3, "tnc": [3, 5, 7, 10, 11], "dire": 3, "wolf": 3, "aim": [4, 9], "particip": [4, 6, 9], "pdf": 4, "epub": 4, "caveat": 4, "emptor": 4, "fast": [4, 5, 7, 9], "standalon": 4, "instal": [4, 5, 6, 9, 10, 11], "resolv": [4, 5, 10], "issu": [4, 6, 8], "base": [4, 5, 6, 7, 9, 10, 11], "shell": [4, 10], "nomad": 4, "sideband": 4, "With": [4, 5, 6, 9, 10], "internet": [4, 5, 9, 11], "testnet": [4, 10], "radio": [4, 5, 6, 7, 9, 10, 11], "android": [4, 10], "arm64": 4, "raspberri": [4, 6, 9, 10, 11], "debian": [4, 9, 10], "bookworm": 4, "ubuntu": [4, 10], "lunar": 4, "pure": [4, 9], "rnid": 4, "rncp": 4, "rnx": 4, "improv": [4, 5, 8], "fix": [4, 9], "motiv": 4, "goal": [4, 5], "introduct": 4, "announc": [4, 7, 10], "mechan": [4, 5], "reach": [4, 5, 6], "prioritis": [4, 5, 6, 7], "propag": [4, 5, 7], "rule": [4, 5], "modem": [4, 5, 6, 7, 9, 11], "udp": [4, 6, 9, 10, 11], "ax": [4, 11], "concept": [4, 9, 10], "overview": [4, 5, 9], "interconnect": [4, 5, 9], "site": [4, 5], "growth": 4, "converg": [4, 9], "identif": [4, 5, 11], "respons": [4, 7, 9], "buffer": [4, 5, 7], "donat": 4, "contribut": 4, "requestreceipt": [4, 7], "rawchannelread": [4, 7], "rawchannelwrit": [4, 7], "search": 4, "distinct": [5, 9], "topologi": [5, 9], "endless": 5, "give": [5, 9, 10], "respect": [5, 11], "discover": 5, "autoconfigur": [5, 11], "ipv6": [5, 10], "router": [5, 10], "sort": [5, 9, 10], "interface_en": [5, 10], "lan": 5, "group": [5, 7, 9], "group_id": 5, "kernel": [5, 10, 11], "wlan0": 5, "eth1": 5, "Or": [5, 10, 11], "ignor": [5, 7, 9], "ones": [5, 10], "ignored_devic": 5, "tun0": 5, "eth0": 5, "multicast": 5, "autodiscov": 5, "discoveri": [5, 9, 10], "scope": 5, "admin": 5, "organis": [5, 6, 8], "custom_network_nam": 5, "discovery_scop": 5, "discovery_port": 5, "48555": 5, "data_port": 5, "49555": 5, "frequent": 5, "block": 5, "inbound": [5, 7], "portabl": [5, 9], "persist": [5, 10], "achiev": [5, 7, 9], "geti2p": 5, "net": 5, "websit": 5, "base32": 5, "comma": 5, "5urvjicpzi7q3ybztsef4i5ow2aq4soktfj7zedz53s47r54jnqq": 5, "output": [5, 10], "event": 5, "simplest": [5, 9], "tunnel": [5, 9, 11], "interchang": 5, "degre": 5, "retain": 5, "eas": [5, 9], "simpler": 5, "listen_ip": 5, "listen_port": 5, "bind": 5, "10": [5, 9, 10], "88": 5, "i2p_tunnel": 5, "127": 5, "5001": 5, "dedic": [5, 9], "natur": 5, "toler": 5, "intermitt": 5, "gracefulli": 5, "reappear": 5, "hostnam": 5, "expos": [5, 7], "soundmodem": 5, "kiss_fram": 5, "8001": 5, "caution": 5, "frame": 5, "conjunct": 5, "never": [5, 7, 9], "disabl": [5, 9, 10], "intern": [5, 7, 9], "recoveri": 5, "greatli": 5, "unreli": 5, "implic": 5, "better": 5, "udpinterfac": 5, "forward_ip": 5, "255": [5, 10], "forward_port": 5, "assum": [5, 9], "55": 5, "72": 5, "24": 5, "equival": 5, "forward": [5, 7, 9, 11], "segment": [5, 6, 7, 9, 11], "15": 5, "16": [5, 9, 10], "ttyusb0": [5, 10], "867": 5, "mhz": [5, 9], "867200000": 5, "125": 5, "khz": 5, "125000": 5, "tx": [5, 10], "7": [5, 9, 10], "mw": 5, "txpower": 5, "spread": [5, 10], "factor": [5, 7, 10], "12": [5, 10], "fastest": [5, 9], "longest": 5, "spreadingfactor": 5, "throough": 5, "codingr": 5, "interv": [5, 7, 10], "id_callsign": 5, "mycal": 5, "id_interv": 5, "600": 5, "homebrew": 5, "amount": [5, 6, 7, 9, 11], "ram": 5, "flow_control": 5, "airtim": 5, "term": [5, 6, 9], "appli": [5, 7, 9], "window": 5, "approxim": 5, "enforc": 5, "roll": 5, "airtime_limit_long": 5, "airtime_limit_short": 5, "33": 5, "pair": [5, 7, 9, 10], "laser": 5, "baud": [5, 10], "speed": [5, 9, 10], "115200": [5, 10], "databit": [5, 10], "pariti": [5, 10], "stopbit": [5, 10], "stdin": [5, 10], "netcat": 5, "l": [5, 10], "5757": 5, "respawn": 5, "respawn_delai": 5, "continu": [5, 7, 8, 11], "scan": 5, "eof": 5, "respawn_interv": 5, "varieti": [5, 9, 10, 11], "openmodem": [5, 11], "period": [5, 7, 9], "beacon": 5, "station": 5, "kissinterfac": [5, 10], "ttyusb1": 5, "preambl": [5, 10], "150": [5, 10], "tail": 5, "txtail": [5, 10], "cdma": 5, "200": [5, 10], "slottim": [5, 10], "20": [5, 9, 10], "elaps": 5, "comment": [5, 10], "amateur": [5, 11], "spectrum": [5, 9], "encapsul": [5, 11], "callsign": 5, "ssid": 5, "realli": [5, 7], "doesn": 5, "incur": 5, "ax25kissinterfac": 5, "no1cll": 5, "ttyusb2": 5, "150m": 5, "increas": [5, 10], "squelch": 5, "rx": [5, 10], "turnaround": 5, "kept": [5, 6, 7, 9], "wast": 5, "bring": 5, "brought": [5, 10], "access_point": 5, "shorthand": [5, 10], "ap": 5, "shorter": 5, "expiri": 5, "mostli": [5, 6, 9], "quiet": [5, 10], "momentarili": 5, "disappear": [5, 10], "network_nam": 5, "passphras": [5, 9], "alon": 5, "ifac_s": 5, "customis": 5, "carri": [5, 7, 9, 10], "512": [5, 7, 9], "announce_cap": [5, 7], "maximum": [5, 7, 9], "alloc": [5, 7, 9, 10], "given": [5, 6, 7, 9, 10], "upkeep": 5, "cap": 5, "queue": [5, 9], "nearbi": 5, "overwhelm": [5, 7], "rapidli": 5, "spam": 5, "effect": 5, "excess": 5, "benefici": [5, 10], "balanc": 5, "necesarri": 5, "bitrat": 5, "report": [5, 8, 10], "guess": 5, "per": [5, 7, 9, 10, 11], "strictli": [5, 9], "complex": [5, 9], "left": [5, 7, 9, 10], "gw": 5, "behalf": 5, "resid": 5, "requestor": 5, "chain": 5, "along": [5, 6, 7, 9, 10], "boundari": 5, "remain": [5, 7, 9], "roam": 5, "mobil": [5, 9], "seen": [5, 9], "perspect": [5, 7, 9, 11], "vehicl": 5, "equip": [5, 6, 9], "side": [5, 11], "expir": 5, "significantli": 5, "impact": [5, 9], "announce_rate_target": 5, "announce_rate_grac": 5, "announce_rate_penalti": 5, "basi": [5, 7, 9, 10, 11], "moder": 5, "violat": 5, "penalti": 5, "7200": 5, "annouce_cap": 5, "mention": [5, 9], "strategi": [5, 7], "decis": [5, 9], "slower": [5, 7, 9], "hop": [5, 6, 7, 9, 10, 11], "right": [5, 6], "tend": 5, "conserv": 5, "span": [5, 9], "seamlessli": 5, "influx": 5, "newli": [5, 6, 7, 9], "previous": [5, 6, 7, 9], "occur": [5, 10, 11], "hold": [5, 7, 9], "interrupt": 5, "burst": 5, "subsid": 5, "held": [5, 10], "decid": [5, 6, 7, 9], "bogu": 5, "retransmit": [5, 9], "ingress": 5, "individu": [5, 7, 9, 11], "sub": 5, "disrupt": 5, "neccessari": 5, "modifi": [5, 9, 10], "ingress_control": 5, "ic_new_tim": 5, "spawn": 5, "ic_burst_freq_new": 5, "ic_burst_freq": 5, "temporarili": 5, "ic_max_held_announc": 5, "drop": [5, 7, 9, 10], "256": [5, 7, 9, 10], "ic_burst_hold": 5, "threshold": 5, "ic_burst_penalti": 5, "ic_held_release_interv": 5, "30": [5, 10], "knowledg": [6, 9], "tradit": [6, 9], "worri": 6, "coordin": [6, 7, 9, 11], "evolv": 6, "futur": [6, 9], "mind": [6, 11], "autonom": [6, 9], "terminologi": [6, 9], "rest": [6, 11], "billion": [6, 9], "larger": [6, 9, 10], "higher": [6, 11], "discrimin": 6, "ephemer": [6, 7, 9, 11], "ellipt": [6, 7, 9, 11], "curv": [6, 7, 9, 11], "diffi": [6, 9, 11], "hellman": [6, 9, 11], "exchang": [6, 7, 9, 11], "curve25519": [6, 7, 9, 11], "throttl": 6, "thu": [6, 7, 9], "agnost": [6, 9], "equal": [6, 7, 9], "keystor": 6, "degrad": 6, "stationari": [6, 10], "candid": 6, "optim": 6, "intend": [6, 9], "trustless": [6, 9, 11], "leav": [6, 9], "free": [6, 8, 11], "unorganis": 6, "manner": 6, "far": [6, 9], "unexplor": 6, "dissolv": 6, "organ": 6, "restrict": 6, "legaci": 6, "unifi": 6, "underli": [6, 11], "carrier": [6, 11], "involv": 6, "hardlin": 6, "illustr": [6, 9], "plan": [6, 9], "member": 6, "mainli": 6, "three": [6, 9], "hill": 6, "top": [6, 9], "chosen": [6, 9], "sight": 6, "becaus": [6, 9], "four": 6, "At": [6, 9], "cabl": 6, "suppli": [6, 7, 9], "grow": 6, "core": [6, 9, 10, 11], "those": [6, 9], "d": [6, 10], "island": 6, "investig": 6, "dori": 6, "willing": 6, "she": 6, "her": 6, "home": 6, "everyon": [6, 9], "vice": [6, 11], "versa": [6, 11], "vhf": [6, 9, 11], "outli": 6, "geograph": 6, "coverag": 6, "dai": 6, "find": [6, 9], "poorli": 6, "outlier": 6, "signatur": [7, 9, 10, 11], "configdir": 7, "logdest": 7, "verbos": [7, 10], "exactli": [7, 9], "independ": [7, 9, 11], "inter": 7, "soon": 7, "kill": [7, 9], "forcibli": [7, 10], "advantag": 7, "demand": 7, "mtu": [7, 9, 11], "500": [7, 9, 11], "adher": 7, "507": 7, "prerequisit": 7, "percentag": 7, "schedul": 7, "queu": [7, 10], "fewer": 7, "distant": 7, "smaller": 7, "eventu": 7, "static": 7, "should_use_implicit_proof": 7, "explicit": 7, "implicit": [7, 9], "transport_en": 7, "create_kei": 7, "decrypt": [7, 9, 10], "verif": [7, 9, 10], "sign": [7, 9, 10], "dh": 7, "keysiz": 7, "x25519": [7, 9, 11], "concaten": 7, "128": [7, 9, 11], "constant": 7, "truncat": [7, 9], "recall_app_data": 7, "heard": [7, 9], "full_hash": 7, "sha": [7, 9], "truncated_hash": 7, "from_byt": 7, "prv_byte": 7, "save": [7, 9], "hazard": 7, "feed": 7, "from_fil": 7, "to_fil": 7, "Be": [7, 10], "get_private_kei": 7, "get_public_kei": 7, "load_private_kei": 7, "load_public_kei": 7, "pub_byt": 7, "ciphertext": 7, "token": [7, 9], "keyerror": 7, "ciphertext_token": 7, "presenc": 7, "ingo": 7, "zero": [7, 11], "expand_nam": 7, "app_and_aspects_from_nam": 7, "full_nam": [7, 10], "tupl": 7, "hash_from_name_and_ident": 7, "adress": [7, 9], "path_respons": 7, "attached_interfac": 7, "tag": 7, "flag": [7, 9], "accepts_link": 7, "accept": [7, 8, 9, 10], "set_proof_requested_callback": 7, "proof_strategi": 7, "prove_non": 7, "prove_app": 7, "proof_requested_callback": 7, "allow_non": 7, "allowed_list": 7, "whatev": [7, 9], "funcion": 7, "allow_list": 7, "deregister_request_handl": 7, "deregist": 7, "symmetr": [7, 9], "typeerror": 7, "incompat": [7, 9], "set_default_app_data": 7, "clear_default_app_data": 7, "ae": [7, 9, 11], "secreci": [7, 9, 11], "instanti": 7, "encrypted_mdu": 7, "383": 7, "plain_mdu": 7, "464": 7, "resend": 7, "get_statu": 7, "cull": 7, "successful": 7, "proven": [7, 9], "established_callback": 7, "closed_callback": 7, "establishment_timeout_per_hop": 7, "6": [7, 10], "keepalive_timeout_factor": 7, "4": [7, 9, 10], "calcul": [7, 9, 10], "stale_grac": 7, "grace": 7, "keepal": [7, 9], "360": 7, "aliv": [7, 9], "stale_tim": 7, "720": 7, "mark": [7, 9], "stale": 7, "torn": 7, "progress_callback": 7, "info": [7, 9, 10], "get_establishment_r": 7, "ocur": 7, "no_inbound_for": 7, "no_outbound_for": 7, "outbound": [7, 9], "inactive_for": 7, "purg": 7, "set_resource_callback": 7, "get_transfer_s": 7, "get_data_s": 7, "get_part": 7, "is_compress": 7, "begun": 7, "resource_strategi": 7, "accept_non": 7, "accept_app": 7, "resource_callback": 7, "unsupport": 7, "get_request_id": 7, "get_respons": 7, "get_response_tim": 7, "auto_compress": 7, "arbitrari": [7, 9, 10, 11], "checksum": [7, 11], "Will": 7, "whenev": [7, 9], "cancel": 7, "total": [7, 9, 11], "get_seg": 7, "divid": 7, "get_hash": 7, "bi": [7, 9], "neither": [7, 9], "constrain": 7, "message_class": 7, "recept": 7, "messagecallbacktyp": 7, "bool": 7, "stop": [7, 11], "remove_message_handl": 7, "remov": [7, 10], "envelop": 7, "thrown": 7, "consum": 7, "adjust": 7, "accommod": [7, 9], "abstract": [7, 9], "greater": [7, 9], "popul": 7, "bufferedread": 7, "bufferedwrit": 7, "bufferedrwpair": 7, "create_read": 7, "ready_callback": 7, "document": [7, 9], "create_writ": 7, "receive_stream_id": 7, "send_stream_id": 7, "rawiobas": 7, "add_ready_callback": 7, "cb": [7, 9], "remove_ready_callback": 7, "pathfinder_m": 7, "attribut": 7, "deregister_announce_handl": 7, "hops_to": 7, "next_hop": 7, "next_hop_interfac": 7, "on_interfac": 7, "recurs": 7, "gratefulli": 8, "monero": 8, "84fpy1qbxhcgdseepynmhthcrgmx4nffbytz2gkytoqhvvhjp8eaw1z1eedrnkd19b3b8nilcgvxzkv17ummmeescrpya5w": 8, "ethereum": 8, "0x81f7b979fea6134ba9fd5c701b3501a2e61e897a": 8, "bitcoin": 8, "3cpmacgm34qyvr6xwlvejmi2ane3pzquuq": 8, "ko": 8, "fi": 8, "roadmap": 8, "realiti": 8, "quickli": [8, 9, 11], "sponsor": [8, 11], "dysfunct": 8, "analyt": 8, "telemetri": 8, "collect": 8, "under": [8, 10, 11], "circumst": [8, 9], "reli": [8, 9], "fashion": 8, "u": [8, 9, 10], "suggest": 8, "overal": 9, "principl": [9, 11], "author": 9, "That": 9, "said": 9, "pretti": 9, "sentiment": 9, "philosophi": 9, "seek": 9, "solv": 9, "solut": [9, 10], "primari": 9, "lack": 9, "my": 9, "belief": 9, "highli": 9, "machin": 9, "censorship": [9, 11], "barrier": 9, "todai": 9, "centralis": 9, "trust": [9, 10], "approv": 9, "gatekeep": 9, "inevit": 9, "govern": 9, "alter": 9, "censor": 9, "persecut": 9, "unwant": 9, "actor": 9, "imposs": 9, "freeli": 9, "deploi": 9, "enhanc": 9, "agenc": 9, "freedom": 9, "permissionless": 9, "pick": 9, "ghz": 9, "off": [9, 10, 11], "shelf": [9, 11], "ultim": 9, "vast": 9, "myriad": 9, "thousand": 9, "surveil": 9, "disassoci": 9, "oversight": 9, "beings": 9, "usabl": 9, "useabl": 9, "critic": [9, 10], "agnostic": 9, "shall": 9, "handheld": 9, "interest": 9, "strong": 9, "oneself": 9, "unlicens": 9, "licens": 9, "condit": [9, 11], "pmr": 9, "written": 9, "programm": 9, "orient": 9, "multipoint": 9, "recipi": 9, "singular": 9, "_represented_": 9, "characterist": 9, "13425ec15b621c1d928589718000d814": 9, "trade": 9, "simultan": 9, "unlik": 9, "nears": 9, "congest": 9, "galact": 9, "scale": [9, 11], "obvious": 9, "ridicul": 9, "multi": [9, 10, 11], "special": [9, 10], "ecdh": [9, 11], "creator": 9, "correspond": 9, "possess": 9, "although": [9, 11], "capabl": 9, "dot": [9, 10], "notat": [9, 10], "repres": 9, "plenti": 9, "environment": 9, "monitor": 9, "measur": 9, "environmentlogg": 9, "remotesensor": 9, "temperatur": 9, "4faf1b2e0a077e6a9d92fa051f256038": 9, "advis": 9, "expand": 9, "recap": 9, "indirectli": 9, "ledger": 9, "therefor": [9, 11], "messeng": 9, "nicknam": 9, "ed25519": [9, 11], "reconstruct": 9, "notic": [9, 10], "piec": 9, "intention": 9, "infer": 9, "throughout": 9, "accord": 9, "around": 9, "topic": 9, "necessarili": 9, "person": 9, "entiti": 9, "robot": 9, "sensor": 9, "someth": 9, "agent": 9, "manipul": [9, 11], "multilater": 9, "creation": [9, 11], "great": 9, "suffic": 9, "cluster": 9, "hear": 9, "But": 9, "lot": 9, "surviv": 9, "overcom": 9, "challeng": 9, "asymmetr": [9, 10, 11], "closer": 9, "distinguish": 9, "contend": 9, "enable_transport": [9, 10], "randomis": 9, "prioriti": 9, "invers": 9, "proport": 9, "count": 9, "insert": 9, "closest": 9, "newer": 9, "newest": 9, "discard": 9, "contact": 9, "shortest": 9, "predict": 9, "constantli": 9, "earlier": 9, "opt": 9, "against": 9, "bidirect": 9, "travers": 9, "rememb": 9, "ten": 9, "advanc": 9, "confirm": [9, 11], "insid": 9, "intermediari": 9, "moment": [9, 11], "methodologi": [9, 10], "answer": [9, 10], "malici": 9, "pretend": 9, "recreat": 9, "rotat": 9, "memori": 9, "thereaft": 9, "297": [9, 11], "practic": [9, 11], "neglig": 9, "1200": 9, "96": 9, "keypair": 9, "simplic": 9, "explan": [9, 10], "lki": 9, "laid": 9, "had": 9, "construct": [9, 11], "lkr": 9, "chose": 9, "direction": 9, "unequivoc": 9, "retransmiss": 9, "reassembl": 9, "programmat": 9, "satisfi": 9, "half": [9, 11], "duplex": [9, 11], "averag": 9, "throughput": [9, 11], "x": [9, 10], "runtim": 9, "consist": 9, "whereupon": 9, "stabl": [9, 11], "stage": 9, "year": 9, "microcontrol": 9, "430": 9, "868": 9, "900": 9, "recent": 9, "mac": 9, "tailor": 9, "treat": 9, "regard": 9, "preshar": 9, "ifac": [9, 10], "compos": 9, "field": 9, "context": 9, "465": 9, "vari": [9, 10], "00": [9, 10], "01": 9, "11": 9, "_______": 9, "________________": 9, "________": 9, "______": 9, "__": 9, "_": 9, "01010000": 9, "00000100": 9, "hash1": 9, "hash2": 9, "header_2": 9, "00000000": 9, "00000111": 9, "header_1": 9, "10000000": 9, "exclud": 9, "51": 9, "167": 9, "83": [9, 10], "115": 9, "99": 9, "conceptu": 9, "hkdf": 9, "fernet": [9, 11], "cbc": [9, 11], "hmac": [9, 11], "hashlib": 9, "pkcs7": [9, 11], "pad": [9, 11], "trivial": [9, 11], "consequ": 9, "backend": 9, "loss": 9, "scrutini": 9, "review": [9, 11], "risk": 9, "driver": [10, 11], "privileg": 10, "light": 10, "weight": 10, "etc": 10, "boot": 10, "ie": 10, "breviti": 10, "socket": 10, "turn": 10, "share_inst": 10, "shared_instance_port": 10, "37428": 10, "instance_control_port": 10, "37429": 10, "panic": 10, "unrecover": 10, "panic_on_interface_error": 10, "probe": 10, "respond_to_prob": 10, "warn": 10, "debug": 10, "unus": 10, "teach": 10, "task": 10, "08": 10, "18": 10, "17": 10, "59": 10, "56": 10, "v": 10, "show": 10, "ifconfig": 10, "gbp": 10, "13": 10, "kb": 10, "86": 10, "mbp": 10, "63": 10, "23": 10, "80": 10, "tcpinterfac": 10, "dublin": 10, "187": 10, "27": 10, "74": 10, "uhf": [10, 11], "kbp": 10, "e702c42ba8": 10, "49": 10, "9": 10, "5245a8efe1788c6a1cd36144a270e13b": 10, "j": 10, "posit": 10, "stat": 10, "arx": 10, "atx": 10, "revers": 10, "json": 10, "new_ident": 10, "984b74a3f768bef236af4371e6f248cd": 10, "new_id": 10, "0f4259fef4521ab75a3409e353fe9073eb10783b4912a6a9937c57bf44a62c1": 10, "hidden": 10, "8dd57a738226809646089335a6b03695": 10, "my_fil": 10, "txt": 10, "bc7291552be7a58f361522990465165c": 10, "rfe": 10, "fetch": 10, "30602def3b3506a28ed33db6f60cc6c9": 10, "2b489d06eaf7c543808c76a5332a447d": 10, "my_ident": 10, "2225fdeecaf6e2db4556c3c2d7637294": 10, "w": 10, "decreas": 10, "overwrit": 10, "c89b4da064bf66d280f0e4d8abfd9806": 10, "f53a1c4278e0726bb73fcc623d6ce763": 10, "rnstransport": 10, "2d03725b327348980d570f739a3a5708": 10, "38": 10, "469": 10, "781": 10, "e7536ee90bd4a440e130490b87a25124": 10, "809": 10, "73": 10, "1726dbad538775b5bf9b0ea25a4079c8": 10, "c50cc4e4f7838b6c31f60ab9032cbc62": 10, "allowed_ident": 10, "copi": 10, "tgz": 10, "73cbd378bb0286ed11a707c13447bb1": 10, "allowed_hash": 10, "silent": 10, "auth": 10, "941bed5e228775e5a8079fc38b1ccf3f": 10, "1b03013c25f1c2ca068a4f080b844a10": 10, "7a55144adf826958a9529a3bcf08b149": 10, "cat": 10, "proc": 10, "cpuinfo": 10, "pseudo": 10, "stderr": 10, "noauth": 10, "noid": 10, "mirror": 10, "max": 10, "fw": 10, "nocheck": 10, "flash": 10, "baud_flash": 10, "freq": 10, "hz": 10, "bw": 10, "txp": 10, "sf": 10, "cr": 10, "eeprom": 10, "backup": 10, "dump": 10, "wipe": 10, "hexbyt": 10, "attach": 10, "older": 10, "onlin": 10, "extract": 10, "cach": 10, "921600": 10, "bluetooth": 10, "intens": 10, "consol": 10, "unlock": 10, "perman": 10, "administr": 10, "ftdi_ft230x_basic_uart_43891ckm": 10, "if00": 10, "port0": 10, "plug": 10, "unplug": 10, "systemd": 10, "usr": 10, "bin": 10, "execstartpr": 10, "restart": 10, "restartsec": 10, "usernameher": 10, "execstart": 10, "wantedbi": 10, "systemctl": 10, "readili": 11, "advers": 11, "unforg": 11, "acknowledg": 11, "empow": 11, "autonomi": 11, "sovereignti": 11, "subject": 11, "outsid": 11, "planetari": 11, "hierarch": 11, "beaureucrat": 11, "resili": 11, "userland": 11, "beta": 11, "bug": 11, "warrant": 11, "sha256": 11, "iv": 11, "urandom": 11, "intuit": 11, "friendli": 11, "44": 11, "gigabyt": 11, "scalabl": 11, "hoc": 11, "transform": 11, "fact": 11, "strength": 11, "generalis": 11, "fibr": 11, "popular": 11, "ideal": 11, "stdio": 11, "hack": 11, "foremost": 11, "audit": 11, "privaci": 11, "thorough": 11, "research": 11, "touch": 11, "rpc": 10, "rpc_kei": 10, "e5c032d3ec4e64a6aca9927ba8ab73336780f6d71790": 10}, "objects": {"RNS": [[7, 0, 1, "", "Buffer"], [7, 0, 1, "", "Destination"], [7, 0, 1, "", "Identity"], [7, 0, 1, "", "Link"], [7, 0, 1, "", "MessageBase"], [7, 0, 1, "", "Packet"], [7, 0, 1, "", "PacketReceipt"], [7, 0, 1, "", "RawChannelReader"], [7, 0, 1, "", "RawChannelWriter"], [7, 0, 1, "", "RequestReceipt"], [7, 0, 1, "", "Resource"], [7, 0, 1, "", "Reticulum"], [7, 0, 1, "", "Transport"]], "RNS.Buffer": [[7, 1, 1, "", "create_bidirectional_buffer"], [7, 1, 1, "", "create_reader"], [7, 1, 1, "", "create_writer"]], "RNS.Channel": [[7, 0, 1, "", "Channel"]], "RNS.Channel.Channel": [[7, 2, 1, "", "MDU"], [7, 1, 1, "", "add_message_handler"], [7, 1, 1, "", "is_ready_to_send"], [7, 1, 1, "", "register_message_type"], [7, 1, 1, "", "remove_message_handler"], [7, 1, 1, "", "send"]], "RNS.Destination": [[7, 1, 1, "", "accepts_links"], [7, 1, 1, "", "announce"], [7, 1, 1, "", "app_and_aspects_from_name"], [7, 1, 1, "", "clear_default_app_data"], [7, 1, 1, "", "create_keys"], [7, 1, 1, "", "decrypt"], [7, 1, 1, "", "deregister_request_handler"], [7, 1, 1, "", "encrypt"], [7, 1, 1, "", "expand_name"], [7, 1, 1, "", "get_private_key"], [7, 1, 1, "", "hash"], [7, 1, 1, "", "hash_from_name_and_identity"], [7, 1, 1, "", "load_private_key"], [7, 1, 1, "", "register_request_handler"], [7, 1, 1, "", "set_default_app_data"], [7, 1, 1, "", "set_link_established_callback"], [7, 1, 1, "", "set_packet_callback"], [7, 1, 1, "", "set_proof_requested_callback"], [7, 1, 1, "", "set_proof_strategy"], [7, 1, 1, "", "sign"]], "RNS.Identity": [[7, 3, 1, "", "CURVE"], [7, 3, 1, "", "KEYSIZE"], [7, 3, 1, "", "TRUNCATED_HASHLENGTH"], [7, 1, 1, "", "decrypt"], [7, 1, 1, "", "encrypt"], [7, 1, 1, "", "from_bytes"], [7, 1, 1, "", "from_file"], [7, 1, 1, "", "full_hash"], [7, 1, 1, "", "get_private_key"], [7, 1, 1, "", "get_public_key"], [7, 1, 1, "", "get_random_hash"], [7, 1, 1, "", "load_private_key"], [7, 1, 1, "", "load_public_key"], [7, 1, 1, "", "recall"], [7, 1, 1, "", "recall_app_data"], [7, 1, 1, "", "sign"], [7, 1, 1, "", "to_file"], [7, 1, 1, "", "truncated_hash"], [7, 1, 1, "", "validate"]], "RNS.Link": [[7, 3, 1, "", "CURVE"], [7, 3, 1, "", "ESTABLISHMENT_TIMEOUT_PER_HOP"], [7, 3, 1, "", "KEEPALIVE"], [7, 3, 1, "", "KEEPALIVE_TIMEOUT_FACTOR"], [7, 3, 1, "", "STALE_GRACE"], [7, 3, 1, "", "STALE_TIME"], [7, 1, 1, "", "get_channel"], [7, 1, 1, "", "get_establishment_rate"], [7, 1, 1, "", "get_remote_identity"], [7, 1, 1, "", "identify"], [7, 1, 1, "", "inactive_for"], [7, 1, 1, "", "no_inbound_for"], [7, 1, 1, "", "no_outbound_for"], [7, 1, 1, "", "request"], [7, 1, 1, "", "set_link_closed_callback"], [7, 1, 1, "", "set_packet_callback"], [7, 1, 1, "", "set_remote_identified_callback"], [7, 1, 1, "", "set_resource_callback"], [7, 1, 1, "", "set_resource_concluded_callback"], [7, 1, 1, "", "set_resource_started_callback"], [7, 1, 1, "", "set_resource_strategy"], [7, 1, 1, "", "teardown"]], "RNS.MessageBase": [[7, 3, 1, "", "MSGTYPE"], [7, 1, 1, "", "pack"], [7, 1, 1, "", "unpack"]], "RNS.Packet": [[7, 3, 1, "", "ENCRYPTED_MDU"], [7, 3, 1, "", "PLAIN_MDU"], [7, 1, 1, "", "resend"], [7, 1, 1, "", "send"]], "RNS.PacketReceipt": [[7, 1, 1, "", "get_rtt"], [7, 1, 1, "", "get_status"], [7, 1, 1, "", "set_delivery_callback"], [7, 1, 1, "", "set_timeout"], [7, 1, 1, "", "set_timeout_callback"]], "RNS.RawChannelReader": [[7, 1, 1, "", "__init__"], [7, 1, 1, "", "add_ready_callback"], [7, 1, 1, "", "remove_ready_callback"]], "RNS.RawChannelWriter": [[7, 1, 1, "", "__init__"]], "RNS.RequestReceipt": [[7, 1, 1, "", "get_progress"], [7, 1, 1, "", "get_request_id"], [7, 1, 1, "", "get_response"], [7, 1, 1, "", "get_response_time"], [7, 1, 1, "", "get_status"]], "RNS.Resource": [[7, 1, 1, "", "advertise"], [7, 1, 1, "", "cancel"], [7, 1, 1, "", "get_data_size"], [7, 1, 1, "", "get_hash"], [7, 1, 1, "", "get_parts"], [7, 1, 1, "", "get_progress"], [7, 1, 1, "", "get_segments"], [7, 1, 1, "", "get_transfer_size"], [7, 1, 1, "", "is_compressed"]], "RNS.Reticulum": [[7, 3, 1, "", "ANNOUNCE_CAP"], [7, 3, 1, "", "MTU"], [7, 1, 1, "", "should_use_implicit_proof"], [7, 1, 1, "", "transport_enabled"]], "RNS.Transport": [[7, 3, 1, "", "PATHFINDER_M"], [7, 1, 1, "", "deregister_announce_handler"], [7, 1, 1, "", "has_path"], [7, 1, 1, "", "hops_to"], [7, 1, 1, "", "next_hop"], [7, 1, 1, "", "next_hop_interface"], [7, 1, 1, "", "register_announce_handler"], [7, 1, 1, "", "request_path"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:property", "3": "py:attribute"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "property", "Python property"], "3": ["py", "attribute", "Python attribute"]}, "titleterms": {"code": [0, 8, 9], "exampl": [0, 6], "minim": 0, "announc": [0, 5, 9], "broadcast": 0, "echo": 0, "link": [0, 9], "identif": 0, "request": 0, "respons": 0, "channel": 0, "buffer": 0, "filetransf": 0, "an": 1, "explan": 1, "reticulum": [1, 2, 3, 4, 8, 9, 10, 11], "human": 1, "Beings": 1, "get": [2, 9], "start": 2, "fast": 2, "standalon": 2, "instal": [2, 3], "resolv": 2, "depend": 2, "issu": 2, "try": 2, "us": [2, 10, 11], "base": [2, 3], "program": [2, 10], "remot": 2, "shell": 2, "nomad": 2, "network": [2, 4, 6], "sideband": 2, "includ": [2, 10], "util": [2, 10], "creat": [2, 3], "With": 2, "connect": 2, "instanc": 2, "over": [2, 6], "internet": [2, 6], "public": [2, 9], "testnet": 2, "ad": 2, "radio": [2, 3], "interfac": [2, 5, 9, 11], "develop": 2, "particip": 2, "platform": 2, "specif": [2, 9], "note": 2, "android": 2, "arm64": 2, "raspberri": 2, "pi": 2, "debian": 2, "bookworm": 2, "ubuntu": 2, "lunar": 2, "pure": 2, "python": 2, "commun": 3, "hardwar": 3, "combin": 3, "type": [3, 9, 11], "rnode": [3, 5], "support": [3, 8], "board": 3, "lilygo": 3, "lora32": 3, "v2": 3, "1": 3, "0": 3, "t": 3, "beam": 3, "heltec": 3, "unsign": 3, "x": 3, "v1": 3, "usag": 3, "wifi": 3, "ethernet": 3, "serial": [3, 5, 10], "line": 3, "devic": [3, 11], "packet": [3, 9], "modem": 3, "stack": 4, "manual": 4, "tabl": 4, "Of": 4, "content": 4, "indic": 4, "configur": [5, 10], "auto": 5, "i2p": 5, "tcp": 5, "server": 5, "client": 5, "udp": 5, "lora": [5, 6], "pipe": 5, "kiss": 5, "ax": 5, "25": 5, "common": 5, "option": 5, "mode": 5, "rate": 5, "control": 5, "new": 5, "destin": [5, 9], "limit": 5, "build": 6, "concept": 6, "overview": 6, "scenario": 6, "interconnect": 6, "site": 6, "bridg": 6, "growth": 6, "converg": 6, "api": 7, "refer": [7, 9], "donat": 8, "provid": 8, "feedback": 8, "contribut": 8, "understand": 9, "motiv": 9, "goal": 9, "introduct": 9, "basic": 9, "function": 9, "name": [9, 10], "kei": 9, "ident": 9, "further": 9, "transport": 9, "node": 9, "The": [9, 10], "mechan": 9, "detail": 9, "reach": 9, "establish": 9, "resourc": 9, "setup": 9, "protocol": 9, "prioritis": 9, "access": 9, "wire": 9, "format": 9, "propag": 9, "rule": 9, "cryptograph": 9, "primit": 9, "your": 10, "system": 10, "data": 10, "rnsd": 10, "rnstatu": 10, "rnid": 10, "rnpath": 10, "rnprobe": 10, "rncp": 10, "rnx": 10, "rnodeconf": 10, "improv": 10, "fix": 10, "port": 10, "servic": 10, "what": 11, "i": 11, "current": 11, "statu": 11, "doe": 11, "offer": 11, "where": 11, "can": 11, "caveat": 11, "emptor": 11}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 58}, "alltitles": {"Code Examples": [[0, "code-examples"]], "Minimal": [[0, "minimal"]], "Announce": [[0, "announce"]], "Broadcast": [[0, "broadcast"]], "Echo": [[0, "echo"]], "Link": [[0, "link"]], "Identification": [[0, "example-identify"]], "Requests & Responses": [[0, "requests-responses"]], "Channel": [[0, "channel"]], "Buffer": [[0, "buffer"]], "Filetransfer": [[0, "filetransfer"]], "An Explanation of Reticulum for Human Beings": [[1, "an-explanation-of-reticulum-for-human-beings"]], "Getting Started Fast": [[2, "getting-started-fast"]], "Standalone Reticulum Installation": [[2, "standalone-reticulum-installation"]], "Resolving Dependency & Installation Issues": [[2, "resolving-dependency-installation-issues"]], "Try Using a Reticulum-based Program": [[2, "try-using-a-reticulum-based-program"]], "Remote Shell": [[2, "remote-shell"]], "Nomad Network": [[2, "nomad-network"]], "Sideband": [[2, "sideband"]], "Using the Included Utilities": [[2, "using-the-included-utilities"]], "Creating a Network With Reticulum": [[2, "creating-a-network-with-reticulum"]], "Connecting Reticulum Instances Over the Internet": [[2, "connecting-reticulum-instances-over-the-internet"]], "Connect to the Public Testnet": [[2, "connect-to-the-public-testnet"]], "Adding Radio Interfaces": [[2, "adding-radio-interfaces"]], "Develop a Program with Reticulum": [[2, "develop-a-program-with-reticulum"]], "Participate in Reticulum Development": [[2, "participate-in-reticulum-development"]], "Platform-Specific Install Notes": [[2, "platform-specific-install-notes"]], "Android": [[2, "android"]], "ARM64": [[2, "arm64"]], "Raspberry Pi": [[2, "raspberry-pi"]], "Debian Bookworm": [[2, "debian-bookworm"]], "Ubuntu Lunar": [[2, "ubuntu-lunar"]], "Pure-Python Reticulum": [[2, "pure-python-reticulum"]], "Communications Hardware": [[3, "communications-hardware"]], "Combining Hardware Types": [[3, "combining-hardware-types"]], "RNode": [[3, "rnode"]], "Creating RNodes": [[3, "creating-rnodes"]], "Supported Boards": [[3, "supported-boards"]], "LilyGO LoRa32 v2.1": [[3, "lilygo-lora32-v2-1"]], "LilyGO LoRa32 v2.0": [[3, "lilygo-lora32-v2-0"]], "LilyGO T-Beam": [[3, "lilygo-t-beam"]], "Heltec LoRa32 v2.0": [[3, "heltec-lora32-v2-0"]], "Unsigned RNode v2.x": [[3, "unsigned-rnode-v2-x"]], "Unsigned RNode v1.x": [[3, "unsigned-rnode-v1-x"]], "Installation": [[3, "installation"]], "Usage with Reticulum": [[3, "usage-with-reticulum"]], "WiFi-based Hardware": [[3, "wifi-based-hardware"]], "Ethernet-based Hardware": [[3, "ethernet-based-hardware"]], "Serial Lines & Devices": [[3, "serial-lines-devices"]], "Packet Radio Modems": [[3, "packet-radio-modems"]], "Reticulum Network Stack Manual": [[4, "reticulum-network-stack-manual"]], "Table Of Contents": [[4, "table-of-contents"]], "Indices and Tables": [[4, "indices-and-tables"]], "Configuring Interfaces": [[5, "configuring-interfaces"]], "Auto Interface": [[5, "auto-interface"]], "I2P Interface": [[5, "i2p-interface"]], "TCP Server Interface": [[5, "tcp-server-interface"]], "TCP Client Interface": [[5, "tcp-client-interface"]], "UDP Interface": [[5, "udp-interface"]], "RNode LoRa Interface": [[5, "rnode-lora-interface"]], "Serial Interface": [[5, "serial-interface"]], "Pipe Interface": [[5, "pipe-interface"]], "KISS Interface": [[5, "kiss-interface"]], "AX.25 KISS Interface": [[5, "ax-25-kiss-interface"]], "Common Interface Options": [[5, "common-interface-options"]], "Interface Modes": [[5, "interface-modes"]], "Announce Rate Control": [[5, "announce-rate-control"]], "New Destination Rate Limiting": [[5, "new-destination-rate-limiting"]], "Building Networks": [[6, "building-networks"]], "Concepts & Overview": [[6, "concepts-overview"]], "Example Scenarios": [[6, "example-scenarios"]], "Interconnected LoRa Sites": [[6, "interconnected-lora-sites"]], "Bridging Over the Internet": [[6, "bridging-over-the-internet"]], "Growth and Convergence": [[6, "growth-and-convergence"]], "Support Reticulum": [[8, "support-reticulum"]], "Donations": [[8, "donations"]], "Provide Feedback": [[8, "provide-feedback"]], "Contribute Code": [[8, "contribute-code"]], "Understanding Reticulum": [[9, "understanding-reticulum"]], "Motivation": [[9, "motivation"]], "Goals": [[9, "goals"]], "Introduction & Basic Functionality": [[9, "introduction-basic-functionality"]], "Destinations": [[9, "destinations"]], "Destination Naming": [[9, "destination-naming"]], "Public Key Announcements": [[9, "public-key-announcements"]], "Identities": [[9, "understanding-identities"]], "Getting Further": [[9, "getting-further"]], "Reticulum Transport": [[9, "reticulum-transport"]], "Node Types": [[9, "node-types"]], "The Announce Mechanism in Detail": [[9, "the-announce-mechanism-in-detail"]], "Reaching the Destination": [[9, "reaching-the-destination"]], "Link Establishment in Detail": [[9, "link-establishment-in-detail"]], "Resources": [[9, "resources"]], "Reference Setup": [[9, "reference-setup"]], "Protocol Specifics": [[9, "protocol-specifics"]], "Packet Prioritisation": [[9, "packet-prioritisation"]], "Interface Access Codes": [[9, "interface-access-codes"]], "Wire Format": [[9, "wire-format"]], "Announce Propagation Rules": [[9, "announce-propagation-rules"]], "Cryptographic Primitives": [[9, "cryptographic-primitives"]], "What is Reticulum?": [[11, "what-is-reticulum"]], "Current Status": [[11, "current-status"]], "What does Reticulum Offer?": [[11, "what-does-reticulum-offer"]], "Where can Reticulum be Used?": [[11, "where-can-reticulum-be-used"]], "Interface Types and Devices": [[11, "interface-types-and-devices"]], "Caveat Emptor": [[11, "caveat-emptor"]], "API Reference": [[7, "api-reference"]], "Using Reticulum on Your System": [[10, "using-reticulum-on-your-system"]], "Configuration & Data": [[10, "configuration-data"]], "Included Utility Programs": [[10, "included-utility-programs"]], "The rnsd Utility": [[10, "the-rnsd-utility"]], "The rnstatus Utility": [[10, "the-rnstatus-utility"]], "The rnid Utility": [[10, "the-rnid-utility"]], "The rnpath Utility": [[10, "the-rnpath-utility"]], "The rnprobe Utility": [[10, "the-rnprobe-utility"]], "The rncp Utility": [[10, "the-rncp-utility"]], "The rnx Utility": [[10, "the-rnx-utility"]], "The rnodeconf Utility": [[10, "the-rnodeconf-utility"]], "Improving System Configuration": [[10, "improving-system-configuration"]], "Fixed Serial Port Names": [[10, "fixed-serial-port-names"]], "Reticulum as a System Service": [[10, "reticulum-as-a-system-service"]]}, "indexentries": {"announce_cap (rns.reticulum attribute)": [[7, "RNS.Reticulum.ANNOUNCE_CAP"]], "buffer (class in rns)": [[7, "RNS.Buffer"]], "curve (rns.identity attribute)": [[7, "RNS.Identity.CURVE"]], "curve (rns.link attribute)": [[7, "RNS.Link.CURVE"]], "channel (class in rns.channel)": [[7, "RNS.Channel.Channel"]], "destination (class in rns)": [[7, "RNS.Destination"]], "encrypted_mdu (rns.packet attribute)": [[7, "RNS.Packet.ENCRYPTED_MDU"]], "establishment_timeout_per_hop (rns.link attribute)": [[7, "RNS.Link.ESTABLISHMENT_TIMEOUT_PER_HOP"]], "identity (class in rns)": [[7, "RNS.Identity"]], "keepalive (rns.link attribute)": [[7, "RNS.Link.KEEPALIVE"]], "keepalive_timeout_factor (rns.link attribute)": [[7, "RNS.Link.KEEPALIVE_TIMEOUT_FACTOR"]], "keysize (rns.identity attribute)": [[7, "RNS.Identity.KEYSIZE"]], "link (class in rns)": [[7, "RNS.Link"]], "mdu (rns.channel.channel property)": [[7, "RNS.Channel.Channel.MDU"]], "msgtype (rns.messagebase attribute)": [[7, "RNS.MessageBase.MSGTYPE"]], "mtu (rns.reticulum attribute)": [[7, "RNS.Reticulum.MTU"]], "messagebase (class in rns)": [[7, "RNS.MessageBase"]], "pathfinder_m (rns.transport attribute)": [[7, "RNS.Transport.PATHFINDER_M"]], "plain_mdu (rns.packet attribute)": [[7, "RNS.Packet.PLAIN_MDU"]], "packet (class in rns)": [[7, "RNS.Packet"]], "packetreceipt (class in rns)": [[7, "RNS.PacketReceipt"]], "rawchannelreader (class in rns)": [[7, "RNS.RawChannelReader"]], "rawchannelwriter (class in rns)": [[7, "RNS.RawChannelWriter"]], "requestreceipt (class in rns)": [[7, "RNS.RequestReceipt"]], "resource (class in rns)": [[7, "RNS.Resource"]], "reticulum (class in rns)": [[7, "RNS.Reticulum"]], "stale_grace (rns.link attribute)": [[7, "RNS.Link.STALE_GRACE"]], "stale_time (rns.link attribute)": [[7, "RNS.Link.STALE_TIME"]], "truncated_hashlength (rns.identity attribute)": [[7, "RNS.Identity.TRUNCATED_HASHLENGTH"]], "transport (class in rns)": [[7, "RNS.Transport"]], "__init__() (rns.rawchannelreader method)": [[7, "RNS.RawChannelReader.__init__"]], "__init__() (rns.rawchannelwriter method)": [[7, "RNS.RawChannelWriter.__init__"]], "accepts_links() (rns.destination method)": [[7, "RNS.Destination.accepts_links"]], "add_message_handler() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.add_message_handler"]], "add_ready_callback() (rns.rawchannelreader method)": [[7, "RNS.RawChannelReader.add_ready_callback"]], "advertise() (rns.resource method)": [[7, "RNS.Resource.advertise"]], "announce() (rns.destination method)": [[7, "RNS.Destination.announce"]], "app_and_aspects_from_name() (rns.destination static method)": [[7, "RNS.Destination.app_and_aspects_from_name"]], "cancel() (rns.resource method)": [[7, "RNS.Resource.cancel"]], "clear_default_app_data() (rns.destination method)": [[7, "RNS.Destination.clear_default_app_data"]], "create_bidirectional_buffer() (rns.buffer static method)": [[7, "RNS.Buffer.create_bidirectional_buffer"]], "create_keys() (rns.destination method)": [[7, "RNS.Destination.create_keys"]], "create_reader() (rns.buffer static method)": [[7, "RNS.Buffer.create_reader"]], "create_writer() (rns.buffer static method)": [[7, "RNS.Buffer.create_writer"]], "decrypt() (rns.destination method)": [[7, "RNS.Destination.decrypt"]], "decrypt() (rns.identity method)": [[7, "RNS.Identity.decrypt"]], "deregister_announce_handler() (rns.transport static method)": [[7, "RNS.Transport.deregister_announce_handler"]], "deregister_request_handler() (rns.destination method)": [[7, "RNS.Destination.deregister_request_handler"]], "encrypt() (rns.destination method)": [[7, "RNS.Destination.encrypt"]], "encrypt() (rns.identity method)": [[7, "RNS.Identity.encrypt"]], "expand_name() (rns.destination static method)": [[7, "RNS.Destination.expand_name"]], "from_bytes() (rns.identity static method)": [[7, "RNS.Identity.from_bytes"]], "from_file() (rns.identity static method)": [[7, "RNS.Identity.from_file"]], "full_hash() (rns.identity static method)": [[7, "RNS.Identity.full_hash"]], "get_channel() (rns.link method)": [[7, "RNS.Link.get_channel"]], "get_data_size() (rns.resource method)": [[7, "RNS.Resource.get_data_size"]], "get_establishment_rate() (rns.link method)": [[7, "RNS.Link.get_establishment_rate"]], "get_hash() (rns.resource method)": [[7, "RNS.Resource.get_hash"]], "get_parts() (rns.resource method)": [[7, "RNS.Resource.get_parts"]], "get_private_key() (rns.destination method)": [[7, "RNS.Destination.get_private_key"]], "get_private_key() (rns.identity method)": [[7, "RNS.Identity.get_private_key"]], "get_progress() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_progress"]], "get_progress() (rns.resource method)": [[7, "RNS.Resource.get_progress"]], "get_public_key() (rns.identity method)": [[7, "RNS.Identity.get_public_key"]], "get_random_hash() (rns.identity static method)": [[7, "RNS.Identity.get_random_hash"]], "get_remote_identity() (rns.link method)": [[7, "RNS.Link.get_remote_identity"]], "get_request_id() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_request_id"]], "get_response() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_response"]], "get_response_time() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_response_time"]], "get_rtt() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.get_rtt"]], "get_segments() (rns.resource method)": [[7, "RNS.Resource.get_segments"]], "get_status() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.get_status"]], "get_status() (rns.requestreceipt method)": [[7, "RNS.RequestReceipt.get_status"]], "get_transfer_size() (rns.resource method)": [[7, "RNS.Resource.get_transfer_size"]], "has_path() (rns.transport static method)": [[7, "RNS.Transport.has_path"]], "hash() (rns.destination static method)": [[7, "RNS.Destination.hash"]], "hash_from_name_and_identity() (rns.destination static method)": [[7, "RNS.Destination.hash_from_name_and_identity"]], "hops_to() (rns.transport static method)": [[7, "RNS.Transport.hops_to"]], "identify() (rns.link method)": [[7, "RNS.Link.identify"]], "inactive_for() (rns.link method)": [[7, "RNS.Link.inactive_for"]], "is_compressed() (rns.resource method)": [[7, "RNS.Resource.is_compressed"]], "is_ready_to_send() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.is_ready_to_send"]], "load_private_key() (rns.destination method)": [[7, "RNS.Destination.load_private_key"]], "load_private_key() (rns.identity method)": [[7, "RNS.Identity.load_private_key"]], "load_public_key() (rns.identity method)": [[7, "RNS.Identity.load_public_key"]], "next_hop() (rns.transport static method)": [[7, "RNS.Transport.next_hop"]], "next_hop_interface() (rns.transport static method)": [[7, "RNS.Transport.next_hop_interface"]], "no_inbound_for() (rns.link method)": [[7, "RNS.Link.no_inbound_for"]], "no_outbound_for() (rns.link method)": [[7, "RNS.Link.no_outbound_for"]], "pack() (rns.messagebase method)": [[7, "RNS.MessageBase.pack"]], "recall() (rns.identity static method)": [[7, "RNS.Identity.recall"]], "recall_app_data() (rns.identity static method)": [[7, "RNS.Identity.recall_app_data"]], "register_announce_handler() (rns.transport static method)": [[7, "RNS.Transport.register_announce_handler"]], "register_message_type() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.register_message_type"]], "register_request_handler() (rns.destination method)": [[7, "RNS.Destination.register_request_handler"]], "remove_message_handler() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.remove_message_handler"]], "remove_ready_callback() (rns.rawchannelreader method)": [[7, "RNS.RawChannelReader.remove_ready_callback"]], "request() (rns.link method)": [[7, "RNS.Link.request"]], "request_path() (rns.transport static method)": [[7, "RNS.Transport.request_path"]], "resend() (rns.packet method)": [[7, "RNS.Packet.resend"]], "send() (rns.channel.channel method)": [[7, "RNS.Channel.Channel.send"]], "send() (rns.packet method)": [[7, "RNS.Packet.send"]], "set_default_app_data() (rns.destination method)": [[7, "RNS.Destination.set_default_app_data"]], "set_delivery_callback() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.set_delivery_callback"]], "set_link_closed_callback() (rns.link method)": [[7, "RNS.Link.set_link_closed_callback"]], "set_link_established_callback() (rns.destination method)": [[7, "RNS.Destination.set_link_established_callback"]], "set_packet_callback() (rns.destination method)": [[7, "RNS.Destination.set_packet_callback"]], "set_packet_callback() (rns.link method)": [[7, "RNS.Link.set_packet_callback"]], "set_proof_requested_callback() (rns.destination method)": [[7, "RNS.Destination.set_proof_requested_callback"]], "set_proof_strategy() (rns.destination method)": [[7, "RNS.Destination.set_proof_strategy"]], "set_remote_identified_callback() (rns.link method)": [[7, "RNS.Link.set_remote_identified_callback"]], "set_resource_callback() (rns.link method)": [[7, "RNS.Link.set_resource_callback"]], "set_resource_concluded_callback() (rns.link method)": [[7, "RNS.Link.set_resource_concluded_callback"]], "set_resource_started_callback() (rns.link method)": [[7, "RNS.Link.set_resource_started_callback"]], "set_resource_strategy() (rns.link method)": [[7, "RNS.Link.set_resource_strategy"]], "set_timeout() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.set_timeout"]], "set_timeout_callback() (rns.packetreceipt method)": [[7, "RNS.PacketReceipt.set_timeout_callback"]], "should_use_implicit_proof() (rns.reticulum static method)": [[7, "RNS.Reticulum.should_use_implicit_proof"]], "sign() (rns.destination method)": [[7, "RNS.Destination.sign"]], "sign() (rns.identity method)": [[7, "RNS.Identity.sign"]], "teardown() (rns.link method)": [[7, "RNS.Link.teardown"]], "to_file() (rns.identity method)": [[7, "RNS.Identity.to_file"]], "transport_enabled() (rns.reticulum static method)": [[7, "RNS.Reticulum.transport_enabled"]], "truncated_hash() (rns.identity static method)": [[7, "RNS.Identity.truncated_hash"]], "unpack() (rns.messagebase method)": [[7, "RNS.MessageBase.unpack"]], "validate() (rns.identity method)": [[7, "RNS.Identity.validate"]]}}) \ No newline at end of file diff --git a/docs/manual/using.html b/docs/manual/using.html index 0f0705c..8b11c9b 100644 --- a/docs/manual/using.html +++ b/docs/manual/using.html @@ -307,6 +307,17 @@ configuration file is created. The default configuration looks like this:

instance_control_port = 37429 +# On systems where running instances may not have access +# to the same shared Reticulum configuration directory, +# it is still possible to allow full interactivity for +# running instances, by manually specifying a shared RPC +# key. In almost all cases, this option is not needed, but +# it can be useful on operating systems such as Android. +# The key must be specified as bytes in hexadecimal. + +# rpc_key = e5c032d3ec4e64a6aca9927ba8ab73336780f6d71790 + + # You can configure Reticulum to panic and forcibly close # if an unrecoverable interface error occurs, such as the # hardware device for an interface disappearing. This is diff --git a/docs/source/using.rst b/docs/source/using.rst index 5b6ed48..ef8a4c5 100644 --- a/docs/source/using.rst +++ b/docs/source/using.rst @@ -99,6 +99,17 @@ configuration file is created. The default configuration looks like this: instance_control_port = 37429 + # On systems where running instances may not have access + # to the same shared Reticulum configuration directory, + # it is still possible to allow full interactivity for + # running instances, by manually specifying a shared RPC + # key. In almost all cases, this option is not needed, but + # it can be useful on operating systems such as Android. + # The key must be specified as bytes in hexadecimal. + + # rpc_key = e5c032d3ec4e64a6aca9927ba8ab73336780f6d71790 + + # You can configure Reticulum to panic and forcibly close # if an unrecoverable interface error occurs, such as the # hardware device for an interface disappearing. This is