PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i5h-3LL

HOME


5h-3LL 1.0
DIR: /usr/share/augeas/lenses/dist/tests
/usr/share/augeas/lenses/dist/tests/
Upload File:
Current File : /usr/share/augeas/lenses/dist/tests/test_openvpn.aug
module Test_OpenVPN =

let server_conf = "
daemon
local 10.0.5.20
port 1194
# TCP or UDP server?
proto udp
;dev tap
dev tun

dev-node MyTap
ca ca.crt
cert server.crt
key server.key  # This file should be kept secret

# Diffie hellman parameters.
dh dh1024.pem

server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt

client-config-dir /etc/openvpn/ccd
server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100
route 10.9.0.0 255.255.255.0
push \"route 192.168.10.0 255.255.255.0\"
learn-address ./script
push \"redirect-gateway\"
push \"dhcp-option DNS 10.8.0.1\"
push \"dhcp-option WINS 10.8.0.1\"
client-to-client
duplicate-cn
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher BF-CBC        # Blowfish (default)
;cipher AES-128-CBC   # AES
;cipher DES-EDE3-CBC  # Triple-DES
comp-lzo
max-clients 100
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
log         openvpn.log
log-append  openvpn.log
verb 3
mute 20
management 10.0.5.20 1193 /etc/openvpn/mpass
"

test OpenVPN.lns get server_conf =
  {}
  { "daemon" }
  { "local"    = "10.0.5.20" }
  { "port"     = "1194" }
  { "#comment" = "TCP or UDP server?" }
  { "proto"    = "udp" }
  { "#comment" = "dev tap" }
  { "dev"      = "tun" }
  {}
  { "dev-node" = "MyTap" }
  { "ca"       = "ca.crt" }
  { "cert"     = "server.crt" }
  { "key"      = "server.key"
      { "#comment" = "This file should be kept secret" } }
  {}
  { "#comment" = "Diffie hellman parameters." }
  { "dh"       = "dh1024.pem" }
  {}
  { "server"
      { "address" = "10.8.0.0" }
      { "netmask" = "255.255.255.0" } }
  { "ifconfig-pool-persist"
    { "file" = "ipp.txt" }
  }
  {}
  { "client-config-dir" = "/etc/openvpn/ccd" }
  { "server-bridge"
      { "address" = "10.8.0.4" }
      { "netmask" = "255.255.255.0" }
      { "start"   = "10.8.0.50" }
      { "end"     = "10.8.0.100" } }
  { "route"
      { "address" = "10.9.0.0" }
      { "netmask" = "255.255.255.0" } }
  { "push" = "route 192.168.10.0 255.255.255.0" }
  { "learn-address" = "./script" }
  { "push" = "redirect-gateway" }
  { "push" = "dhcp-option DNS 10.8.0.1" }
  { "push" = "dhcp-option WINS 10.8.0.1" }
  { "client-to-client" }
  { "duplicate-cn" }
  { "keepalive"
      { "ping" = "10" }
      { "timeout" = "120" } }
  { "tls-auth"
      { "key" = "ta.key" }
      { "is_client" = "0" }
      { "#comment" = "This file is secret" } }
  { "cipher" =  "BF-CBC"
      { "#comment" = "Blowfish (default)" } }
  { "#comment" = "cipher AES-128-CBC   # AES" }
  { "#comment" = "cipher DES-EDE3-CBC  # Triple-DES" }
  { "comp-lzo" }
  { "max-clients" = "100" }
  { "user"        = "nobody" }
  { "group"       =  "nobody" }
  { "persist-key" }
  { "persist-tun" }
  { "status"
      { "file" = "openvpn-status.log" }
  }
  { "log"         = "openvpn.log" }
  { "log-append"  = "openvpn.log" }
  { "verb"        = "3" }
  { "mute"        = "20" }
  { "management"
      { "server"  = "10.0.5.20" }
      { "port"	  = "1193" }
      { "pwfile"  = "/etc/openvpn/mpass" } }



let client_conf = "
client
remote my-server-1 1194
;remote my-server-2 1194
remote-random
resolv-retry infinite
nobind
http-proxy-retry # retry on connection failures
http-proxy mytest 1024
mute-replay-warnings
ns-cert-type server
"

test OpenVPN.lns get client_conf =
  {}
  { "client" }
  { "remote"
     { "server" = "my-server-1" }
     { "port"   = "1194" } }
  { "#comment"  = "remote my-server-2 1194" }
  { "remote-random" }
  { "resolv-retry" = "infinite" }
  { "nobind" }
  { "http-proxy-retry"
      { "#comment" = "retry on connection failures" } }
  { "http-proxy"
      { "server" = "mytest" }
      { "port"   = "1024" } }
  { "mute-replay-warnings" }
  { "ns-cert-type" = "server" }

(* Most (hopefully all) permutations for OpenVPN 2.3
 * NOTE: This completely ignores IPv6 because it's hard to tell which OpenVPN
 * options actually work with IPv6. Thar be dragons.
 *)
let all_permutations_conf = "
config /a/canonical/file
config relative_file
mode p2p
mode server
local 192.168.1.1
local hostname
remote 192.168.1.1 1234
remote hostname 1234
remote hostname
remote 192.168.1.1
remote hostname 1234 tcp
remote 192.168.1.1 1234 tcp
remote hostname 1234 udp
remote-random-hostname
#comment square <connection> blocks should go here
proto-force udp
proto-force tcp
remote-random
proto udp
proto tcp-client
proto tcp-server
connect-retry 5
connect-timeout 10
connect-retry-max 0
show-proxy-settings
http-proxy servername 1234
http-proxy servername 1234 auto
http-proxy servername 1234 auto-nct
http-proxy servername 1234 auto none
http-proxy servername 1234 auto basic
http-proxy servername 1234 auto ntlm
http-proxy servername 1234 relative_filename ntlm
http-proxy servername 1234 /canonical/filename basic
http-proxy-retry
http-proxy-timeout 5
http-proxy-option VERSION 1.0
http-proxy-option AGENT an unquoted string with spaces
http-proxy-option AGENT an_unquoted_string_without_spaces
socks-proxy servername
socks-proxy servername 1234
socks-proxy servername 1234 /canonical/file
socks-proxy servername 1234 relative/file
socks-proxy-retry
resolv-retry 5
float
ipchange my command goes here
port 1234
lport 1234
rport 1234
bind
nobind
dev tun
dev tun0
dev tap
dev tap0
dev null
dev-type tun
dev-type tap
topology net30
topology p2p
topology subnet
tun-ipv6
dev-node /canonical/file
dev-node relative/file
lladdr 1.2.3.4
iproute my command goes here
ifconfig 1.2.3.4 5.6.7.8
ifconfig-noexec
ifconfig-nowarn
route 111.222.123.123
route networkname
route vpn_gateway
route net_gateway
route remote_host
route 111.222.123.123 255.123.255.221
route 111.222.123.123 default
route 111.222.123.123 255.123.255.231 111.222.123.1
route 111.222.123.123 default 111.222.123.1
route 111.222.123.123 255.123.255.231 default
route 111.222.123.123 default default
route 111.222.123.123 255.123.255.231 gatewayname
route 111.222.123.123 255.123.255.231 gatewayname 5
route 111.222.123.123 255.123.255.231 vpn_gateway
route 111.222.123.123 255.123.255.231 net_gateway
route 111.222.123.123 255.123.255.231 remote_host
route 111.222.123.123 255.123.255.231 111.222.123.1
route 111.222.123.123 255.123.255.231 111.222.123.1 5
max-routes 5
route-gateway gateway-name
route-gateway 111.222.123.1
route-gateway dhcp
route-metric 5
route-delay
route-delay 1
route-delay 1 2
route-up my command goes here
route-pre-down my command goes here
route-noexec
route-nopull
allow-pull-fqdn
client-nat snat 1.2.3.4 5.6.7.8 9.8.7.6
client-nat dnat 1.2.3.4 5.6.7.8 9.8.7.6
redirect-gateway local
redirect-gateway local autolocal
redirect-gateway local autolocal def1 bypass-dhcp bypass-dns block-local
link-mtu 5
redirect-private local
redirect-private local autolocal
redirect-private local autolocal def1 bypass-dhcp bypass-dns block-local
tun-mtu 5
tun-mtu-extra 5
mtu-disc no
mtu-disc maybe
mtu-disc yes
mtu-test
fragment 5
mssfix 1600
sndbuf 65536
rcvbuf 65535
mark blahvalue
socket-flags TCP_NODELAY
txqueuelen 5
shaper 50
inactive 5
inactive 5 1024
ping 10
ping-exit 10
ping-restart 10
keepalive 1 2
ping-timer-rem
persist-tun
persist-key
persist-local-ip
persist-remote-ip
mlock
up my command goes here
up-delay
down my command goes here
down-pre
up-restart
setenv myname myvalue
setenv my0-_name my value with spaces
setenv-safe myname myvalue
setenv-safe my-_name my value with spaces
ignore-unknown-option anopt
ignore-unknown-option anopt anotheropt
script-security 3
disable-occ
user username
group groupname
cd /canonical/dir
cd relative/dir/
chroot /canonical/dir
chroot relative/dir/
setcon selinux-context
daemon
daemon mydaemon_name
syslog
syslog my_syslog-name
errors-to-stderr
passtos
inetd
inetd wait
inetd nowait
inetd wait my-program_name
log myfilename
log-append myfilename
suppress-timestamps
writepid myfile
nice 5
fast-io
multihome
echo stuff to echo until end of line
remap-usr1 SIGHUP
remap-usr1 SIGTERM
verb 6
status myfile
status myfile 15
status-version
status-version 3
mute 20
comp-lzo
comp-lzo yes
comp-lzo no
comp-lzo adaptive
management 123.123.123.123 1234
management 123.123.123.123 1234 /canonical/file
management-client
management-query-passwords
management-query-proxy
management-query-remote
management-forget-disconnect
management-hold
management-signal
management-up-down
management-client-auth
management-client-pf
management-log-cache 5
management-client-user myuser
management-client-user mygroup
plugin /canonical/file
plugin relative/file
plugin myfile an init string
server 1.2.3.4 255.255.255.0
server 1.2.3.4 255.255.255.255 nopool
server-bridge 1.2.3.4 1.2.3.5 50.5.5.5 50.5.5.6
server-bridge nogw
push \"my push string\"
push-reset
push-peer-info
disable
ifconfig-pool 1.1.1.1 2.2.2.2
ifconfig-pool 1.1.1.1 2.2.2.2 255.255.255.0
ifconfig-pool-persist myfile
ifconfig-pool-persist myfile 50
ifconfig-pool-linear
ifconfig-push 1.1.1.1 2.2.2.2
ifconfig-push 1.1.1.1 2.2.2.2 alias-name
iroute 1.1.1.1
iroute 1.1.1.1 2.2.2.2
client-to-client
duplicate-cn
client-connect my command goes here
client-disconnect my command goes here
client-config-dir directory
ccd-exclusive
tmp-dir /directory
hash-size 1 2
bcast-buffers 5
tcp-queue-limit 50
tcp-nodelay
max-clients 50
max-routes-per-client 50
stale-routes-check 5
stale-routes-check 5 50
connect-freq 50 100
learn-address my command goes here
auth-user-pass-verify /my/script/with/no/arguments.sh via-env
auth-user-pass-verify \"myscript.sh arg1 arg2\" via-file
opt-verify
auth-user-pass-optional
client-cert-not-required
username-as-common-name
port-share 1.1.1.1 1234
port-share myhostname 1234
port-share myhostname 1234 /canonical/dir
client
pull
auth-user-pass
auth-user-pass /canonical/file
auth-user-pass relative/file
auth-retry none
auth-retry nointeract
auth-retry interact
static-challenge challenge_no_spaces 1
static-challenge \"my quoted challenge string\" 0
server-poll-timeout 50
explicit-exit-notify
explicit-exit-notify 5
secret /canonicalfile
secret relativefile
secret filename 1
secret filename 0
key-direction
auth none
auth sha1
cipher SHA1
cipher sha1
keysize 50
prng SHA1
prng SHA1 500
engine
engine blah
no-replay
replay-window 64
replay-window 64 16
mute-replay-warnings
replay-persist /my/canonical/filename
no-iv
use-prediction-resistance
test-crypto
tls-server
tls-client
ca myfile
capath /mydir/
dh myfile
cert myfile
extra-certs myfile
key myfile
tls-version-min 1.1
tls-version-min 2
tls-version-min 1.1 or-highest
tls-version-max 5.5
pkcs12 myfile
verify-hash AD:B0:95:D8:09:C8:36:45:12:A9:89:C8:90:09:CB:13:72:A6:AD:16
pkcs11-cert-private 0
pkcs11-cert-private 1
pkcs11-id myname
pkcs11-id-management
pkcs11-pin-cache 50
pkcs11-protected-authentication 0
pkcs11-protected-authentication 1
cryptoapicert \"SUBJ:Justin Akers\"
key-method 2
tls-cipher DEFAULT:!EXP:!PSK:!SRP:!kRSA
tls-timeout 50
reneg-bytes 50
reneg-pkts 50
reneg-sec 5
hand-window 123
tran-window 456
single-session
tls-exit
tls-auth filename 1
askpass /canonical/filename
auth-nocache
tls-verify my command goes here
tls-export-cert /a/directory/for/things
x509-username-field emailAddress
x509-username-field ext:subjectAltName
tls-remote myhostname
verify-x509-name hostname name
verify-x509-name hostname name-prefix
verify-x509-name hostname subject
ns-cert-type server
ns-cert-type client
remote-cert-tls server
remote-cert-tls client
remote-cert-ku 01
remote-cert-ku 01 02 fa FF b3
remote-cert-eku 123.3510.350.10
remote-cert-eku \"TLS Web Client Authentication\"
remote-cert-eku serverAuth
crl-verify /a/file/path
crl-verify /a/directory/ dir
show-ciphers
show-digests
show-tls
show-engines
genkey
mktun
rmtun
ifconfig-ipv6 2000:123:456::/64 1234:99:123::124
ifconfig-ipv6-push 2000:123:456::/64 1234:99:123::124
iroute-ipv6 2000:123:456::/64
route-ipv6 2000:123:456::/64
route-ipv6 2000:123:456::/64 1234:99:123::124
route-ipv6 2000:123:456::/64 1234:99:123::124 500
server-ipv6 2000:123:456::/64
ifconfig-ipv6-pool 2000:123:456::/64

"

test OpenVPN.lns get all_permutations_conf =
  {  }
  { "config" = "/a/canonical/file" }
  { "config" = "relative_file" }
  { "mode" = "p2p" }
  { "mode" = "server" }
  { "local" = "192.168.1.1" }
  { "local" = "hostname" }
  { "remote"
    { "server" = "192.168.1.1" }
    { "port" = "1234" }
  }
  { "remote"
    { "server" = "hostname" }
    { "port" = "1234" }
  }
  { "remote"
    { "server" = "hostname" }
  }
  { "remote"
    { "server" = "192.168.1.1" }
  }
  { "remote"
    { "server" = "hostname" }
    { "port" = "1234" }
    { "proto" = "tcp" }
  }
  { "remote"
    { "server" = "192.168.1.1" }
    { "port" = "1234" }
    { "proto" = "tcp" }
  }
  { "remote"
    { "server" = "hostname" }
    { "port" = "1234" }
    { "proto" = "udp" }
  }
  { "remote-random-hostname" }
  { "#comment" = "comment square <connection> blocks should go here" }
  { "proto-force" = "udp" }
  { "proto-force" = "tcp" }
  { "remote-random" }
  { "proto" = "udp" }
  { "proto" = "tcp-client" }
  { "proto" = "tcp-server" }
  { "connect-retry" = "5" }
  { "connect-timeout" = "10" }
  { "connect-retry-max" = "0" }
  { "show-proxy-settings" }
  { "http-proxy"
    { "server" = "servername" }
    { "port" = "1234" }
  }
  { "http-proxy"
    { "server" = "servername" }
    { "port" = "1234" }
    { "auth" = "auto" }
  }
  { "http-proxy"
    { "server" = "servername" }
    { "port" = "1234" }
    { "auth" = "auto-nct" }
  }
  { "http-proxy"
    { "server" = "servername" }
    { "port" = "1234" }
    { "auth" = "auto" }
    { "auth-method" = "none" }
  }
  { "http-proxy"
    { "server" = "servername" }
    { "port" = "1234" }
    { "auth" = "auto" }
    { "auth-method" = "basic" }
  }
  { "http-proxy"
    { "server" = "servername" }
    { "port" = "1234" }
    { "auth" = "auto" }
    { "auth-method" = "ntlm" }
  }
  { "http-proxy"
    { "server" = "servername" }
    { "port" = "1234" }
    { "auth" = "relative_filename" }
    { "auth-method" = "ntlm" }
  }
  { "http-proxy"
    { "server" = "servername" }
    { "port" = "1234" }
    { "auth" = "/canonical/filename" }
    { "auth-method" = "basic" }
  }
  { "http-proxy-retry" }
  { "http-proxy-timeout" = "5" }
  { "http-proxy-option"
    { "option" = "VERSION" }
    { "value" = "1.0" }
  }
  { "http-proxy-option"
    { "option" = "AGENT" }
    { "value" = "an unquoted string with spaces" }
  }
  { "http-proxy-option"
    { "option" = "AGENT" }
    { "value" = "an_unquoted_string_without_spaces" }
  }
  { "socks-proxy"
    { "server" = "servername" }
  }
  { "socks-proxy"
    { "server" = "servername" }
    { "port" = "1234" }
  }
  { "socks-proxy"
    { "server" = "servername" }
    { "port" = "1234" }
    { "auth" = "/canonical/file" }
  }
  { "socks-proxy"
    { "server" = "servername" }
    { "port" = "1234" }
    { "auth" = "relative/file" }
  }
  { "socks-proxy-retry" }
  { "resolv-retry" = "5" }
  { "float" }
  { "ipchange" = "my command goes here" }
  { "port" = "1234" }
  { "lport" = "1234" }
  { "rport" = "1234" }
  { "bind" }
  { "nobind" }
  { "dev" = "tun" }
  { "dev" = "tun0" }
  { "dev" = "tap" }
  { "dev" = "tap0" }
  { "dev" = "null" }
  { "dev-type" = "tun" }
  { "dev-type" = "tap" }
  { "topology" = "net30" }
  { "topology" = "p2p" }
  { "topology" = "subnet" }
  { "tun-ipv6" }
  { "dev-node" = "/canonical/file" }
  { "dev-node" = "relative/file" }
  { "lladdr" = "1.2.3.4" }
  { "iproute" = "my command goes here" }
  { "ifconfig"
    { "local" = "1.2.3.4" }
    { "remote" = "5.6.7.8" }
  }
  { "ifconfig-noexec" }
  { "ifconfig-nowarn" }
  { "route"
    { "address" = "111.222.123.123" }
  }
  { "route"
    { "address" = "networkname" }
  }
  { "route"
    { "address" = "vpn_gateway" }
  }
  { "route"
    { "address" = "net_gateway" }
  }
  { "route"
    { "address" = "remote_host" }
  }
  { "route"
    { "address" = "111.222.123.123" }
    { "netmask" = "255.123.255.221" }
  }
  { "route"
    { "address" = "111.222.123.123" }
    { "netmask" = "default" }
  }
  { "route"
    { "address" = "111.222.123.123" }
    { "netmask" = "255.123.255.231" }
    { "gateway" = "111.222.123.1" }
  }
  { "route"
    { "address" = "111.222.123.123" }
    { "netmask" = "default" }
    { "gateway" = "111.222.123.1" }
  }
  { "route"
    { "address" = "111.222.123.123" }
    { "netmask" = "255.123.255.231" }
    { "gateway" = "default" }
  }
  { "route"
    { "address" = "111.222.123.123" }
    { "netmask" = "default" }
    { "gateway" = "default" }
  }
  { "route"
    { "address" = "111.222.123.123" }
    { "netmask" = "255.123.255.231" }
    { "gateway" = "gatewayname" }
  }
  { "route"
    { "address" = "111.222.123.123" }
    { "netmask" = "255.123.255.231" }
    { "gateway" = "gatewayname" }
    { "metric" = "5" }
  }
  { "route"
    { "address" = "111.222.123.123" }
    { "netmask" = "255.123.255.231" }
    { "gateway" = "vpn_gateway" }
  }
  { "route"
    { "address" = "111.222.123.123" }
    { "netmask" = "255.123.255.231" }
    { "gateway" = "net_gateway" }
  }
  { "route"
    { "address" = "111.222.123.123" }
    { "netmask" = "255.123.255.231" }
    { "gateway" = "remote_host" }
  }
  { "route"
    { "address" = "111.222.123.123" }
    { "netmask" = "255.123.255.231" }
    { "gateway" = "111.222.123.1" }
  }
  { "route"
    { "address" = "111.222.123.123" }
    { "netmask" = "255.123.255.231" }
    { "gateway" = "111.222.123.1" }
    { "metric" = "5" }
  }
  { "max-routes" = "5" }
  { "route-gateway" = "gateway-name" }
  { "route-gateway" = "111.222.123.1" }
  { "route-gateway" = "dhcp" }
  { "route-metric" = "5" }
  { "route-delay" }
  { "route-delay"
    { "seconds" = "1" }
  }
  { "route-delay"
    { "seconds" = "1" }
    { "win-seconds" = "2" }
  }
  { "route-up" = "my command goes here" }
  { "route-pre-down" = "my command goes here" }
  { "route-noexec" }
  { "route-nopull" }
  { "allow-pull-fqdn" }
  { "client-nat"
    { "type" = "snat" }
    { "network" = "1.2.3.4" }
    { "netmask" = "5.6.7.8" }
    { "alias" = "9.8.7.6" }
  }
  { "client-nat"
    { "type" = "dnat" }
    { "network" = "1.2.3.4" }
    { "netmask" = "5.6.7.8" }
    { "alias" = "9.8.7.6" }
  }
  { "redirect-gateway"
    { "flag" = "local" }
  }
  { "redirect-gateway"
    { "flag" = "local" }
    { "flag" = "autolocal" }
  }
  { "redirect-gateway"
    { "flag" = "local" }
    { "flag" = "autolocal" }
    { "flag" = "def1" }
    { "flag" = "bypass-dhcp" }
    { "flag" = "bypass-dns" }
    { "flag" = "block-local" }
  }
  { "link-mtu" = "5" }
  { "redirect-private"
    { "flag" = "local" }
  }
  { "redirect-private"
    { "flag" = "local" }
    { "flag" = "autolocal" }
  }
  { "redirect-private"
    { "flag" = "local" }
    { "flag" = "autolocal" }
    { "flag" = "def1" }
    { "flag" = "bypass-dhcp" }
    { "flag" = "bypass-dns" }
    { "flag" = "block-local" }
  }
  { "tun-mtu" = "5" }
  { "tun-mtu-extra" = "5" }
  { "mtu-disc" = "no" }
  { "mtu-disc" = "maybe" }
  { "mtu-disc" = "yes" }
  { "mtu-test" }
  { "fragment" = "5" }
  { "mssfix" = "1600" }
  { "sndbuf" = "65536" }
  { "rcvbuf" = "65535" }
  { "mark" = "blahvalue" }
  { "socket-flags" = "TCP_NODELAY" }
  { "txqueuelen" = "5" }
  { "shaper" = "50" }
  { "inactive"
    { "seconds" = "5" }
  }
  { "inactive"
    { "seconds" = "5" }
    { "bytes" = "1024" }
  }
  { "ping" = "10" }
  { "ping-exit" = "10" }
  { "ping-restart" = "10" }
  { "keepalive"
    { "ping" = "1" }
    { "timeout" = "2" }
  }
  { "ping-timer-rem" }
  { "persist-tun" }
  { "persist-key" }
  { "persist-local-ip" }
  { "persist-remote-ip" }
  { "mlock" }
  { "up" = "my command goes here" }
  { "up-delay" }
  { "down" = "my command goes here" }
  { "down-pre" }
  { "up-restart" }
  { "setenv"
    { "myname" = "myvalue" }
  }
  { "setenv"
    { "my0-_name" = "my value with spaces" }
  }
  { "setenv-safe"
    { "myname" = "myvalue" }
  }
  { "setenv-safe"
    { "my-_name" = "my value with spaces" }
  }
  { "ignore-unknown-option"
    { "opt" = "anopt" }
  }
  { "ignore-unknown-option"
    { "opt" = "anopt" }
    { "opt" = "anotheropt" }
  }
  { "script-security" = "3" }
  { "disable-occ" }
  { "user" = "username" }
  { "group" = "groupname" }
  { "cd" = "/canonical/dir" }
  { "cd" = "relative/dir/" }
  { "chroot" = "/canonical/dir" }
  { "chroot" = "relative/dir/" }
  { "setcon" = "selinux-context" }
  { "daemon" }
  { "daemon" = "mydaemon_name" }
  { "syslog" }
  { "syslog" = "my_syslog-name" }
  { "errors-to-stderr" }
  { "passtos" }
  { "inetd" }
  { "inetd"
    { "mode" = "wait" }
  }
  { "inetd"
    { "mode" = "nowait" }
  }
  { "inetd"
    { "mode" = "wait" }
    { "progname" = "my-program_name" }
  }
  { "log" = "myfilename" }
  { "log-append" = "myfilename" }
  { "suppress-timestamps" }
  { "writepid" = "myfile" }
  { "nice" = "5" }
  { "fast-io" }
  { "multihome" }
  { "echo" = "stuff to echo until end of line" }
  { "remap-usr1" = "SIGHUP" }
  { "remap-usr1" = "SIGTERM" }
  { "verb" = "6" }
  { "status"
    { "file" = "myfile" }
  }
  { "status"
    { "file" = "myfile" }
    { "repeat-seconds" = "15" }
  }
  { "status-version" }
  { "status-version" = "3" }
  { "mute" = "20" }
  { "comp-lzo" }
  { "comp-lzo" = "yes" }
  { "comp-lzo" = "no" }
  { "comp-lzo" = "adaptive" }
  { "management"
    { "server" = "123.123.123.123" }
    { "port" = "1234" }
  }
  { "management"
    { "server" = "123.123.123.123" }
    { "port" = "1234" }
    { "pwfile" = "/canonical/file" }
  }
  { "management-client" }
  { "management-query-passwords" }
  { "management-query-proxy" }
  { "management-query-remote" }
  { "management-forget-disconnect" }
  { "management-hold" }
  { "management-signal" }
  { "management-up-down" }
  { "management-client-auth" }
  { "management-client-pf" }
  { "management-log-cache" = "5" }
  { "management-client-user" = "myuser" }
  { "management-client-user" = "mygroup" }
  { "plugin"
    { "file" = "/canonical/file" }
  }
  { "plugin"
    { "file" = "relative/file" }
  }
  { "plugin"
    { "file" = "myfile" }
    { "init-string" = "an init string" }
  }
  { "server"
    { "address" = "1.2.3.4" }
    { "netmask" = "255.255.255.0" }
  }
  { "server"
    { "address" = "1.2.3.4" }
    { "netmask" = "255.255.255.255" }
    { "nopool" }
  }
  { "server-bridge"
    { "address" = "1.2.3.4" }
    { "netmask" = "1.2.3.5" }
    { "start" = "50.5.5.5" }
    { "end" = "50.5.5.6" }
  }
  { "server-bridge" = "nogw" }
  { "push" = "my push string" }
  { "push-reset" }
  { "push-peer-info" }
  { "disable" }
  { "ifconfig-pool"
    { "start" = "1.1.1.1" }
    { "end" = "2.2.2.2" }
  }
  { "ifconfig-pool"
    { "start" = "1.1.1.1" }
    { "end" = "2.2.2.2" }
    { "netmask" = "255.255.255.0" }
  }
  { "ifconfig-pool-persist"
    { "file" = "myfile" }
  }
  { "ifconfig-pool-persist"
    { "file" = "myfile" }
    { "seconds" = "50" }
  }
  { "ifconfig-pool-linear" }
  { "ifconfig-push"
    { "local" = "1.1.1.1" }
    { "remote-netmask" = "2.2.2.2" }
  }
  { "ifconfig-push"
    { "local" = "1.1.1.1" }
    { "remote-netmask" = "2.2.2.2" }
    { "alias" = "alias-name" }
  }
  { "iroute"
    { "local" = "1.1.1.1" }
  }
  { "iroute"
    { "local" = "1.1.1.1" }
    { "netmask" = "2.2.2.2" }
  }
  { "client-to-client" }
  { "duplicate-cn" }
  { "client-connect" = "my command goes here" }
  { "client-disconnect" = "my command goes here" }
  { "client-config-dir" = "directory" }
  { "ccd-exclusive" }
  { "tmp-dir" = "/directory" }
  { "hash-size"
    { "real" = "1" }
    { "virtual" = "2" }
  }
  { "bcast-buffers" = "5" }
  { "tcp-queue-limit" = "50" }
  { "tcp-nodelay" }
  { "max-clients" = "50" }
  { "max-routes-per-client" = "50" }
  { "stale-routes-check"
    { "age" = "5" }
  }
  { "stale-routes-check"
    { "age" = "5" }
    { "interval" = "50" }
  }
  { "connect-freq"
    { "num" = "50" }
    { "sec" = "100" }
  }
  { "learn-address" = "my command goes here" }
  { "auth-user-pass-verify"
    { 
      { "command" = "/my/script/with/no/arguments.sh" }
    }
    { "method" = "via-env" }
  }
  { "auth-user-pass-verify"
    { 
      { "command" = "myscript.sh arg1 arg2" }
    }
    { "method" = "via-file" }
  }
  { "opt-verify" }
  { "auth-user-pass-optional" }
  { "client-cert-not-required" }
  { "username-as-common-name" }
  { "port-share"
    { "host" = "1.1.1.1" }
    { "port" = "1234" }
  }
  { "port-share"
    { "host" = "myhostname" }
    { "port" = "1234" }
  }
  { "port-share"
    { "host" = "myhostname" }
    { "port" = "1234" }
    { "dir" = "/canonical/dir" }
  }
  { "client" }
  { "pull" }
  { "auth-user-pass" }
  { "auth-user-pass" = "/canonical/file" }
  { "auth-user-pass" = "relative/file" }
  { "auth-retry" = "none" }
  { "auth-retry" = "nointeract" }
  { "auth-retry" = "interact" }
  { "static-challenge"
    {
      { "text" = "challenge_no_spaces" }
    }
    { "echo" = "1" }
  }
  { "static-challenge"
    {
      { "text" = "my quoted challenge string" }
    }
    { "echo" = "0" }
  }
  { "server-poll-timeout" = "50" }
  { "explicit-exit-notify" }
  { "explicit-exit-notify" = "5" }
  { "secret"
    { "file" = "/canonicalfile" }
  }
  { "secret"
    { "file" = "relativefile" }
  }
  { "secret"
    { "file" = "filename" }
    { "direction" = "1" }
  }
  { "secret"
    { "file" = "filename" }
    { "direction" = "0" }
  }
  { "key-direction" }
  { "auth" = "none" }
  { "auth" = "sha1" }
  { "cipher" = "SHA1" }
  { "cipher" = "sha1" }
  { "keysize" = "50" }
  { "prng"
    { "algorithm" = "SHA1" }
  }
  { "prng"
    { "algorithm" = "SHA1" }
    { "nsl" = "500" }
  }
  { "engine" }
  { "engine" = "blah" }
  { "no-replay" }
  { "replay-window"
    { "window-size" = "64" }
  }
  { "replay-window"
    { "window-size" = "64" }
    { "seconds" = "16" }
  }
  { "mute-replay-warnings" }
  { "replay-persist" = "/my/canonical/filename" }
  { "no-iv" }
  { "use-prediction-resistance" }
  { "test-crypto" }
  { "tls-server" }
  { "tls-client" }
  { "ca" = "myfile" }
  { "capath" = "/mydir/" }
  { "dh" = "myfile" }
  { "cert" = "myfile" }
  { "extra-certs" = "myfile" }
  { "key" = "myfile" }
  { "tls-version-min" = "1.1" }
  { "tls-version-min" = "2" }
  { "tls-version-min" = "1.1"
    { "or-highest" }
  }
  { "tls-version-max" = "5.5" }
  { "pkcs12" = "myfile" }
  { "verify-hash" = "AD:B0:95:D8:09:C8:36:45:12:A9:89:C8:90:09:CB:13:72:A6:AD:16" }
  { "pkcs11-cert-private" = "0" }
  { "pkcs11-cert-private" = "1" }
  { "pkcs11-id" = "myname" }
  { "pkcs11-id-management" }
  { "pkcs11-pin-cache" = "50" }
  { "pkcs11-protected-authentication" = "0" }
  { "pkcs11-protected-authentication" = "1" }
  { "cryptoapicert"
    { "SUBJ" = "Justin Akers" }
  }
  { "key-method" = "2" }
  { "tls-cipher"
    { "cipher" = "DEFAULT" }
    { "cipher" = "!EXP" }
    { "cipher" = "!PSK" }
    { "cipher" = "!SRP" }
    { "cipher" = "!kRSA" }
  }
  { "tls-timeout" = "50" }
  { "reneg-bytes" = "50" }
  { "reneg-pkts" = "50" }
  { "reneg-sec" = "5" }
  { "hand-window" = "123" }
  { "tran-window" = "456" }
  { "single-session" }
  { "tls-exit" }
  { "tls-auth"
    { "key" = "filename" }
    { "is_client" = "1" }
  }
  { "askpass" = "/canonical/filename" }
  { "auth-nocache" }
  { "tls-verify" = "my command goes here" }
  { "tls-export-cert" = "/a/directory/for/things" }
  { "x509-username-field"
    { "subj" = "emailAddress" }
  }
  { "x509-username-field"
    { "ext" = "subjectAltName" }
  }
  { "tls-remote" = "myhostname" }
  { "verify-x509-name"
    { "name" = "hostname" }
    { "type" = "name" }
  }
  { "verify-x509-name"
    { "name" = "hostname" }
    { "type" = "name-prefix" }
  }
  { "verify-x509-name"
    { "name" = "hostname" }
    { "type" = "subject" }
  }
  { "ns-cert-type" = "server" }
  { "ns-cert-type" = "client" }
  { "remote-cert-tls" = "server" }
  { "remote-cert-tls" = "client" }
  { "remote-cert-ku"
    { "usage" = "01" }
  }
  { "remote-cert-ku"
    { "usage" = "01" }
    { "usage" = "02" }
    { "usage" = "fa" }
    { "usage" = "FF" }
    { "usage" = "b3" }
  }
  { "remote-cert-eku"
    { "oid" = "123.3510.350.10" }
  }
  { "remote-cert-eku"
    { "symbol" = "TLS Web Client Authentication" }
  }
  { "remote-cert-eku"
    { "symbol" = "serverAuth" }
  }
  { "crl-verify" = "/a/file/path" }
  { "crl-verify" = "/a/directory/"
    { "dir" }
  }
  { "show-ciphers" }
  { "show-digests" }
  { "show-tls" }
  { "show-engines" }
  { "genkey" }
  { "mktun" }
  { "rmtun" }
  { "ifconfig-ipv6"
    { "address" = "2000:123:456::/64" }
    { "remote" = "1234:99:123::124" }
  }
  { "ifconfig-ipv6-push"
    { "address" = "2000:123:456::/64" }
    { "remote" = "1234:99:123::124" }
  }
  { "iroute-ipv6" = "2000:123:456::/64" }
  { "route-ipv6"
    { "network" = "2000:123:456::/64" }
  }
  { "route-ipv6"
    { "network" = "2000:123:456::/64" }
    { "gateway" = "1234:99:123::124" }
  }
  { "route-ipv6"
    { "network" = "2000:123:456::/64" }
    { "gateway" = "1234:99:123::124" }
    { "metric" = "500" }
  }
  { "server-ipv6" = "2000:123:456::/64" }
  { "ifconfig-ipv6-pool" = "2000:123:456::/64" }
  {  }