| ofs | hex dump | ascii |
|---|
| 0000 | 65 6c 6e 6f 64 65 2d 32 30 31 39 30 37 30 32 2e 31 35 30 39 2f 00 00 00 00 00 00 00 00 00 00 00 | elnode-20190702.1509/........... |
| 0020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0060 | 00 00 00 00 30 30 30 30 37 35 35 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 | ....0000755.0000000.0000000.0000 |
| 0080 | 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 32 32 36 32 00 20 35 00 00 00 | 0000000.00000000000.012262..5... |
| 00a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 00c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 00e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0100 | 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...root................... |
| 0120 | 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........root................... |
| 0140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 01e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0200 | 65 6c 6e 6f 64 65 2d 32 30 31 39 30 37 30 32 2e 31 35 30 39 2f 64 65 66 61 75 6c 74 2d 77 65 62 | elnode-20190702.1509/default-web |
| 0220 | 73 65 72 76 65 72 2d 69 6d 61 67 65 2e 70 6e 67 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | server-image.png................ |
| 0240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0260 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 | ....0000644.0000000.0000000.0000 |
| 0280 | 30 30 31 37 37 30 35 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 37 35 31 30 00 20 30 00 00 00 | 0017705.00000000000.017510..0... |
| 02a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 02c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 02e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0300 | 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...root................... |
| 0320 | 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........root................... |
| 0340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 03a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 03c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 03e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0400 | 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 00 00 01 2c 00 00 00 b4 08 03 00 00 00 19 e1 e1 | .PNG........IHDR...,............ |
| 0420 | dd 00 00 03 00 50 4c 54 45 00 00 00 60 a0 bf 00 66 99 cc e0 eb 43 43 43 ca c8 c7 a3 a3 a3 31 7c | .....PLTE...`...f....CCC......1| |
| 0440 | a3 fe fe fe 1c 1c 1c d9 d5 d5 c0 be be 85 85 85 15 6f 9c a5 c9 db 8a a1 ae d8 e8 ef 64 64 64 a4 | .................o..........ddd. |
| 0460 | c4 d5 68 92 a7 5e 90 a9 8d b5 ca e9 f1 f6 d0 cd cd e3 e0 df b9 b8 b7 2b 2b 2b c8 c6 c6 82 a0 b0 | ..h..^.................+++...... |
| 0480 | a6 b0 b7 e1 dd dd b7 cc da 73 73 73 21 74 9e 0c 6d 9d 0a 0a 0a 4b 86 a4 e9 e8 e7 b6 ba bd b2 c1 | .........sss!t..m....K.......... |
| 04a0 | ca 93 93 93 c1 c0 bf bc ba ba b9 bd c0 54 54 54 b8 b6 b6 c2 d2 dc 3c 3c 3c d3 d0 cf 04 68 9a db | .............TTT......<<<....h.. |
| 04c0 | d8 d7 96 c0 d5 ed f4 f8 72 aa c7 b5 b4 b4 3c 8a b1 55 99 bb c4 c1 c2 e9 e5 e5 c2 c5 c8 19 74 a3 | ........r.....<..U............t. |
| 04e0 | f5 f0 ef f1 ed ed 89 b1 c6 b1 b5 b8 85 ad c2 cc c9 ca 2b 7c a5 7a 9a aa 33 33 33 a5 ac af 99 99 | ..................+|.z..333..... |
| 0500 | 99 f3 f1 f2 49 92 b6 ab bc c5 6b 6b 6b 9c a7 ad 33 85 ad d5 d1 d1 90 b7 cb 13 13 13 24 24 24 dd | ....I.....kkk...3...........$$$. |
| 0520 | d9 d9 e3 df e0 4b 4b 4b 52 89 a5 6a a6 c3 be d1 db 5b 5b 5b e5 e1 e1 6f 98 ac c1 d9 e6 e1 ed f3 | .....KKKR..j.....[[[...o........ |
| 0540 | 79 79 79 db d7 d8 8a 8a 8a ed e9 ea 51 91 b3 82 b4 cd d2 cf d0 2b 7f a9 99 c2 d6 a2 b3 bd 78 ae | yyy.........Q........+........x. |
| 0560 | c9 ab cc dd ea e6 e8 8d ac bd ca c7 c8 3a 7f a2 44 8b af 74 a4 bd a5 ad b0 d2 e4 ed 93 bd d2 f4 | .............:..D..t............ |
| 0580 | f8 fa c1 bf c0 cd dc e5 22 7a a6 8b ba d0 f3 ef f0 1e 78 a5 b9 b7 b8 b4 d2 e1 5d 8d a6 92 a5 af | ........"z........x.......]..... |
| 05a0 | 9c af b9 65 a2 c1 9f c5 d9 13 72 a0 51 97 b8 5a 9c bd 69 9a b3 ab ab ab 6c 95 aa b0 af af 70 97 | ...e......r.Q..Z..i.....l.....p. |
| 05c0 | ac 84 9d ab 4a 8e b1 bb d6 e3 80 a7 bc 27 7d a9 4e 95 b8 7b b0 ca db e9 f1 c6 dd e8 6f a9 c5 74 | ....J........'}.N..{........o..t |
| 05e0 | 9c b0 ac b6 bd 42 83 a4 99 ab b4 34 80 a7 ad b1 b4 aa ae b1 94 a9 b3 cc d8 df 7c 9e b0 54 8c a9 | .....B.....4..............|..T.. |
| 0600 | ac be c8 c9 df e9 2d 80 aa 8f a8 b5 f0 f6 f9 bc c5 cb 4c 88 a6 59 95 b4 a5 b7 c1 71 99 ad 43 8e | ......-...........L..Y.....q..C. |
| 0620 | b4 3b 80 a3 91 b9 ce 75 ac c8 c8 d1 d8 a2 c7 da 7c a4 b9 ae c0 ca 60 8f a7 16 70 9c 82 aa bf 64 | .;.....u........|.....`...p....d |
| 0640 | 92 aa 8d a4 b0 93 a6 b0 9e b0 bb 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0660 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0680 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 06a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 06c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 06e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 0720 | 00 00 00 00 00 00 00 00 00 38 7a 78 34 00 00 00 09 70 48 59 73 00 00 0e c3 00 00 0e c3 01 c7 6f | .........8zx4....pHYs..........o |
| 0740 | a8 64 00 00 1c 6b 49 44 41 54 78 da e4 9a 21 8f 24 37 10 85 57 39 52 f2 e3 29 50 92 99 49 4b 25 | .d...kIDATx...!.$7..W9R..)P..IK% |
| 0760 | 59 8a 54 d2 80 69 10 14 34 e0 1a 44 21 56 a3 25 66 5d ec 34 7f 63 c0 80 05 01 a1 61 fb ff 02 ba | Y.T..i..4..D!V.%f].4.c.....a.... |
| 0780 | 7b 66 f7 12 70 89 4e 1e af e2 5f 50 fa fc de ab 72 75 3f 51 5f 67 a1 8e cf d3 3f d4 9b 62 4c cb | {f..p.N..._P....ru?Q_g....?..bL. |
| 07a0 | c3 48 15 11 ce 39 7e 08 58 8b 40 4d bd e6 d4 ba 94 b8 5e 10 c3 85 b9 86 e9 03 c0 12 0c 40 89 81 | .H...9~.X.@M......^..........@.. |
| 07c0 | dd e3 43 2c 08 85 48 15 91 f0 11 60 a1 16 9a 58 dc fd d8 b2 92 92 c6 91 88 22 14 2e e2 ee 92 3a | ..C,..H....`...X.........".....: |
| 07e0 | 87 15 05 5e 27 5a b2 00 f0 da 14 d6 38 8e 44 54 a1 70 07 00 e1 a5 6f 58 01 ce 44 f4 59 80 41 d1 | ...^'Z......8.DT.p....oX..D.Y.A. |
| 0800 | 52 5a d3 3c a7 48 29 ba 1a 00 a8 02 b5 f4 0d 4b 24 8f 44 94 a1 66 a6 68 59 ed 1c 63 19 89 55 cd | RZ.<.H)........K$.D..f.hY..c..U. |
| 0820 | 14 50 b3 c1 39 76 0d 8b 69 24 5a 58 d4 cc cc 90 9b 76 c3 18 16 12 98 99 01 50 1b ba 33 e2 7b 58 | .P..9v..i$ZX.....v.......P..3.{X |
| 0840 | f3 48 23 51 10 6c b0 b8 65 29 73 29 0b 31 56 65 c1 4c 15 5c 3a 86 15 88 8e 14 e5 06 ab 69 c2 53 | .H#Q.l..e)s).1Ve.L.\:........i.S |
| 0860 | 29 31 09 6c b5 a1 42 4d 85 3b 86 15 69 24 62 71 98 99 99 79 db 5a 53 a0 88 3b 2c 33 43 9d fa 85 | )1.l..BM.;..i$bq...y.ZS..;,3C... |
| 0880 | 95 68 a4 f0 b3 00 6b cd ad 2f b6 d0 b8 6a 5a 37 69 ab e7 7e 61 d1 42 bf c5 2a 00 a0 66 90 b6 36 | .h....k../...jZ7i..~a.B..*..f..6 |
| 08a0 | a4 99 02 a0 a6 66 1b 2c f3 ae 22 fe 3d ac 29 05 ae 22 8e 6d 74 90 c6 d5 fc 12 d7 6e a8 ba c1 b2 | .....f.,..".=.)..".mt......n.... |
| 08c0 | ae c6 f8 a7 f7 fb 86 a9 70 95 dd 86 d6 1c 16 11 8b aa 99 0e bb b4 70 ea 77 74 88 bb b2 1e 05 ab | ........p.............p.wt...... |
| 08e0 | b0 9a 19 b0 4b ab 71 43 fe 57 01 bf c2 92 35 b3 1e 01 6b ca aa 6a b8 29 cb 7c e9 1c 96 af b0 14 | ....K.qC.W....5...k..j.).|...... |
| 0900 | 32 b6 ae 67 ce 03 06 b3 4d da 66 8a d8 2b ac e9 6b 1b 36 af f4 c8 18 74 d8 94 dd 9b 0f bf 0a f8 | 2..g....M.f..+..k.6....t........ |
| 0920 | 77 ca 32 3c 60 01 97 d6 6b 1a 36 56 a6 de 29 ac e3 14 03 cb 1b 65 1d da 3f 37 8e 02 35 db 5d 68 | w.2<`...k.6V..)......e..?7..5.]h |
| 0940 | 66 e8 14 56 9c ee 01 bf da b0 bd 07 46 56 dd 76 34 1b ac a5 4f 58 21 96 cc 7c b7 e1 e0 ed db 21 | f..V........FV.v4...OX!..|.....! |
| 0960 | 85 75 e1 70 83 a5 bd c2 5a 95 e5 fb 50 aa 38 34 6f 87 c7 e8 fa 41 60 dd 95 b5 c2 6a 9f f0 73 14 | .u.p....Z...P.84o....A`....j..s. |
| 0980 | 33 60 4d 78 b8 f6 6b c3 a9 84 cc 22 87 7d cc 81 37 4f f8 29 0a 0c f0 b5 1b 57 74 0b 2b c7 18 de | 3`Mx..k....".}..7O.).....Wt.+... |
| 09a0 | 66 96 69 fb 29 27 c5 aa 06 88 aa a9 30 43 87 3e 61 cd 1c 63 e1 5a c5 6f 6f b3 c1 5b fb 70 4a 02 | f.i.)'......0C.>a..c.Z.oo..[.pJ. |
| 09c0 | 33 38 00 e7 9c bb 55 56 e1 10 43 de b6 0e fb 43 56 96 d6 b0 5c 15 07 87 c2 39 67 d5 4e e7 2c a9 | 38....UV..C....CV...\....9g.N.,. |
| 09e0 | 5c 42 d8 32 6b 5b 55 a2 f1 47 fc 65 0a a2 06 30 4c 25 9f b2 f6 3a 94 ba d7 50 c2 b6 d0 da 95 d5 | \B.2k[U..G.e...0L%...:...P...... |
| 0a00 | 58 5a 73 5c 04 06 88 1a 6a 0e 8c 5e 95 05 97 1c 02 f3 7d fb 67 a6 8d 1b 62 4a f3 1a 59 a6 c2 a1 | XZs\....j..^......}.g...bJ..Y... |
| 0a20 | 67 58 10 de 61 ed 33 a1 02 9e 9a 46 56 80 02 02 03 87 90 45 d1 6b 66 c1 f9 14 4e 5c df 26 bc 36 | gX..a.3....FV......E.kf...N\.&.6 |
| 0a40 | 35 e2 98 e6 cf 30 83 00 ce 9c 19 8f 58 40 7e 13 ac e5 80 ca 21 e4 95 d6 70 4b 2d 97 d2 cc 84 69 | 5....0......X@~.....!...pK-....i |
| 0a60 | 64 00 02 a8 40 2b 6b b7 b0 88 21 9c c3 1e f1 db 5c 3a 00 22 3c b7 d1 d5 b4 44 60 fb e5 08 60 51 | d...@+k...!.....\:."<....D`...`Q |
| 0a80 | ed 77 f9 27 ce 21 84 cc ef 47 2d 40 84 a7 16 ba 3a 8e 73 05 e0 50 35 05 33 00 74 f4 05 ff e9 f7 | .w.'.!...G-@....:.s..P5.3.t..... |
| 0aa0 | 4f 6f ce cb eb f3 cb cb 9f 2f 7f 3c bf 5e 2e d7 eb f5 7c 3e 9f cf e7 eb f5 72 b9 bc 3e ff fa e9 | Oo......./.<.^....|>.....r..>... |
| 0ac0 | 6f e7 c7 ef 5a 4a 49 cb 94 a2 e8 f6 39 5c 9d d7 5f 36 3b 82 f5 e5 87 ff 7e 7e fa 9e d3 68 5a e8 | o...ZJI.....9\.._6;.....~~...hZ. |
| 0ae0 | 44 54 01 11 a8 c1 01 81 2a 10 e6 ff 0f ac 6f eb a4 71 9a c7 48 44 59 5c 2a fe e2 de ec 55 2c 39 | DT......*.....o..q..HDY\*....U,9 |
| 0b00 | 62 28 1c 8e 90 62 a3 e0 80 02 43 25 03 05 8a 1a 26 a8 82 9d 9b 38 99 1b 4c 45 4e 44 c7 56 56 f5 | b(...b....C%....&....8..LEND.VV. |
| 0b20 | 2e fb 0e 0e 1c f8 0d 1d 74 df bb eb bf 68 58 18 ae 82 7e 80 8f d3 55 47 a5 23 d9 2a a4 8a 88 3c | ........t....hX...~...UG.#.*...< |
| 0b40 | 8b e0 f3 1c f1 3f 18 d6 30 53 75 67 8d d2 fe 17 5b 1f a5 11 11 13 61 41 01 d9 aa ac 5a 37 a9 b5 | .....?..0Sug....[.....aA....Z7.. |
| 0b60 | 8a c8 e7 71 5a 3f 0c 56 1b 83 23 82 83 99 fd 56 d7 ab bb aa ba ba 47 30 87 71 70 98 f5 d1 fa 3e | ...qZ?.V..#....V......G0.qp....> |
| 0b80 | 13 d0 60 5d 22 15 ab 1e b2 92 5a a5 da 43 c0 fa a9 44 44 b8 bb bb be ff 43 2d 7b 6f 7d 8c 61 ce | ..`]".....Z..C...DD.....C-{o}.a. |
| 0ba0 | ec 7a 2b 57 57 77 f7 2b 33 07 9b 31 47 c4 7b 29 b4 93 69 66 f4 c2 90 2a 70 95 23 a3 25 5b fd 44 | .z+WWw.+3..1G.{)..if...*p.#.%[.D |
| 0bc0 | 0d cf 87 60 7d 31 0b 76 77 66 bf 3a c7 77 ff 59 eb 6d 36 6a d4 87 31 bb de 71 e5 a9 2b 67 0e 66 | ...`}1.vwf.:.w.Y.m6j..1..q..+g.f |
| 0be0 | 36 b6 18 16 fb 9c fc f2 c2 9d ba 29 6a 15 36 96 b3 6a dd 1e 05 d6 b0 08 66 77 57 55 75 bf ab 6b | 6..........)j.6..j......fwWUu..k |
| 0c00 | b6 46 d4 a9 11 05 bb ab ea ab 26 52 35 d5 0f 69 79 58 8c 88 08 0b b3 d9 79 09 f4 17 ea 85 b1 a4 | .F........&R5..iyX......y....... |
| 0c20 | 22 c2 51 bf b1 7a 0c 58 bf f7 61 c6 ee aa a9 99 a9 7e 5b f8 e9 7d 4e da e7 6c e5 98 80 bc 00 58 | ".Q..z.X..a......~[..}N..l.....X |
| 0c40 | 79 10 75 f7 ab 33 6b 09 e6 60 77 f7 eb 92 34 eb 44 85 13 22 e2 a1 f8 5e 58 eb 41 0e f8 32 c6 55 | y.u..3k..`w...4.D.."...^X.A..2.U |
| 0c60 | 55 33 33 33 91 aa 3e 89 a8 f7 46 44 b3 f7 11 ae c7 64 0d 90 85 cc 11 11 16 c1 0a 40 44 0f 8f 2e | U333..>...FD.....d.........@D... |
| 0c80 | 41 dc 89 fa af ef fa 22 22 b2 52 ea b3 c8 d1 9f 7e a6 ee f0 63 b0 7a 29 c6 9a 09 00 48 64 a6 3b | A......"".R.....~...c.z)....Hd.; |
| 0ca0 | b7 d9 db 24 a2 b9 5b f8 39 85 4c 4f 68 58 29 76 4c db e4 34 51 22 75 31 95 ae 9d 0a bf 26 ce dd | ...$..[.9.LOhX)vL..4Q"u1.....&.. |
| 0cc0 | 8a c3 64 9d 81 8b cf d3 f0 7c ec 36 a4 52 4c 33 13 0b 40 76 a4 3a 9b cd 39 8f 56 cf 4e 2a 60 b2 | ..d......|.6.RL3..@v.:..9.V.N*`. |
| 0ce0 | d7 d4 b6 9b e7 b1 14 74 1b cd c3 d5 9a 8d c1 a3 f0 c2 92 6f b5 d6 92 4d b6 ad 6e f2 18 d6 e1 cb | .......t...........o...M..n..... |
| 0d00 | 1c 66 ac c0 02 80 54 a4 3a b3 51 27 22 2a ad 1c ac 36 dd f7 dd 38 38 6f 01 fb 7b 9c 68 a1 37 a2 | .f....T.:.Q'"*...6...88o..{.h.7. |
| 0d20 | 08 56 ce 25 7f 63 05 c8 73 ad 75 ab 55 c6 43 c0 fa b3 84 19 ab 26 16 32 01 78 b0 fb ec 73 12 51 | .V.%.c..s.u.U.C......&.2.x...s.Q |
| 0d40 | bf eb aa 0f a2 38 48 dc b3 31 5b 15 91 a5 d4 fa 2c ac 8a bc 51 c2 29 ab 25 52 6b dd b6 5a 6b 7f | .....8H..1[.....,...Q.).%Rk..Zk. |
| 0d60 | 0c 58 66 c1 9a aa 40 2a d6 7a b5 62 a3 74 da b9 d0 e4 93 95 66 a3 82 73 1b a7 6e 5b dd 6a dd 44 | .Xf...@*.z.b.t......f..s..n[.j.D |
| 0d80 | 54 33 75 70 b4 11 e7 58 57 a4 8a 00 22 b2 e4 64 75 64 a6 e7 43 c0 fa 83 99 35 55 15 9a 09 59 d9 | T3up...XW..."..dud..C....5U...Y. |
| 0da0 | 7b e9 7b 9b 44 b4 b3 62 89 ac 05 a1 a1 0a a9 b5 42 21 99 00 32 01 56 40 d5 79 e7 5c 77 9f 70 bc | {.{.D..b........B!..2.V@.y.\w.p. |
| 0dc0 | fb ad b5 d6 92 7b 38 e4 f3 3c c2 ff 37 ac 9f df de 2e ff ae a7 e3 fb f4 f5 ed 72 79 7b ba 5c 2e | .....{8..<..7.............ry{.\. |
| 0de0 | bf 29 fb 6b 9e de 1c 58 ba ef 8d 26 d1 ec e5 5d f5 b0 0c 8b 08 c7 59 85 70 28 44 e4 e5 b8 3b b1 | .).k...X...&...]......Y.p(D...;. |
| 0e00 | f0 17 35 e7 ca 23 3b 12 43 61 6a b9 7e 80 81 a5 c3 42 46 8a 54 a8 a5 01 1d d0 e8 a2 80 18 0d b1 | ..5..#;.Caj.~....BF.T........... |
| 0e20 | b2 d8 ac ad fd ff 0b 5c e9 c9 dc d5 d5 b6 b4 a4 bb 40 50 d0 27 3f 8e 4f 3d 54 64 38 fe e5 8f 66 | .......\.........@P.'?.O=Td8...f |
| 0e40 | 6b 2d 35 b3 55 5c 15 2c 79 71 58 7f 13 dd f9 26 cc 0e 67 76 77 77 07 e0 80 bb 03 ce 98 3a 33 0b | k-5.U\.,yqX....&..gvww.......:3. |
| 0e60 | 8b 68 dc 0a 56 68 ca 86 61 79 da d0 95 1a 4c e5 7d b6 8c ae 19 1a d9 52 b5 a5 a6 36 d5 08 39 7a | .h..Vh..ay....L.}......R...6..9z |
| 0e80 | 60 f6 52 20 9a 05 eb 68 03 af 33 47 ff 19 16 d1 95 a5 33 97 8a 74 77 2b 52 ec 70 de b0 76 77 96 | `.R....h..3G......3..tw+R.p..vw. |
| 0ea0 | b8 45 68 45 d6 2d 54 83 41 44 0b 0c 9b eb a7 aa ea 8d 77 8d d6 72 08 31 ad 63 85 a9 a9 11 d9 5a | .EhE.-T.AD........w..r.1.c.....Z |
| 0ec0 | 66 9d 16 d0 cc 0c 88 0e 5a 95 93 03 d6 2b 1d 0c f9 33 2c a2 45 44 3a 3b 36 60 db 60 06 c0 b9 d8 | f.......Z....+...3,.ED:;6`.`.... |
| 0ee0 | 6d 80 f7 5b 88 68 c4 98 90 43 05 4c 44 04 00 3d 33 53 a3 2f 3d 2b b3 52 73 48 8c fa 8a 68 16 d0 | m..[.h...C.LD..=3S./=+.RsH...h.. |
| 0f00 | 63 95 eb d0 6f 9a 65 36 1c 17 52 e8 3d 60 d1 5d 4a 66 02 ee 30 83 bb b3 03 ee 66 80 77 11 09 0d | c...o.e6..R.=`.]Jf..0.....f.w... |
| 0f20 | a9 39 5a 42 44 bc c4 28 bc eb 67 a6 76 d6 9c 3f aa 62 9f b9 94 d4 48 55 8d 08 1d e9 17 be ef 66 | .9ZBD..(..g.v..?.b....HU.......f |
| 0f40 | eb e7 b8 45 77 c0 c2 bb c0 2a 5a ee 27 58 d8 18 ee 3b 00 77 ee 22 21 0f 03 a6 77 01 2d 77 32 b8 | ...Ew....*Z.'X...;.w."!...w.-w2. |
| 0f60 | 77 cd 96 da 3d 3f 6a 72 d1 54 cd cf 1c 09 a9 0f 78 63 52 8a 50 15 df 44 22 46 5b 9c 5f ef 64 f7 | w...=?jr.T......xcR.P..D"F[._.d. |
| 0f80 | 7f c1 22 82 44 67 18 00 33 8c b8 c2 06 0c 5a 7d 98 7a c3 51 b8 11 d1 d7 97 1f b0 18 6d be cc 73 | ..".Dg..3.....Z}.z.Q........m..s |
| 0fa0 | cb 96 2d 33 5b b6 d4 76 54 a5 12 9f a7 2c 14 51 3d b6 0c 0f f9 da ec 9d 60 d1 95 6f dd 1d 00 cc | ..-3[..vT....,.Q=.......`..o.... |
| 0fc0 | 36 87 c3 1d 28 5c db 56 66 d6 ca 6b 67 66 e6 e8 84 3b c1 b9 8b b6 d4 60 0c 1b fd 3c c9 1c ab 62 | 6...(\.Vf..kgf...;.....`...<...b |
| 0fe0 | ee 94 9e 8f 36 78 82 f5 42 15 eb 19 58 44 72 5b dd 2b b4 6a 39 7c 73 54 b9 77 5e d7 be 31 33 33 | ....6x..B...XDr[.+.j9|sT.w^..133 |
| 1000 | 7b 77 22 72 70 97 50 d5 10 8f 7a a5 61 38 53 97 cb fc f1 71 76 15 da a1 ba 1e d1 36 0e c1 1f ac | {w"rp.P...z.a8S....qv......6.... |
| 1020 | 5e 67 d4 79 16 d6 bd 57 dd 32 00 06 03 b0 6d df b8 98 7b 67 66 76 66 38 13 5d c1 bd f7 50 8d 60 | ^g.y...W.2....m...{gfvf8.]...P.` |
| 1040 | cb b9 8c 98 63 80 9e 2f 23 70 5a 9b e7 8f 33 b3 f3 75 9d 6f 56 af f5 1e cd 33 b0 88 20 9d 2b 13 | ....c../#pZ...3..u.oV....3....+. |
| 1060 | a7 12 10 8e a1 4f 81 b1 4d c3 d3 04 d8 fd 17 19 0f 41 2f 0c b4 da fe ff 3e d5 7e 99 8f fd ad f6 | .....O..M........A/.....>.~..... |
| 1080 | 9d 9e f9 f3 d4 ce e3 1a eb fc 5a 97 ef 9f 84 45 c6 9d dd 1d 56 eb 28 f7 b0 51 e9 1d 13 d8 be 96 | ..........Z....E....V.(..Q...... |
| 10a0 | 2b dd f7 2d 44 6f 2c c2 58 06 ac 6f 54 0f c3 a1 cd f3 6f 25 ec f2 78 fd e2 11 57 7a 7f 4b 58 64 | +..-Do,.X..oT.....o%..x...Wz.KXd |
| 10c0 | 6b 67 66 37 1c b4 0a 19 cc 0c 0e 00 10 c0 96 2b 5d 77 88 c8 ea 2a 8c 65 6d 97 cb 7c 32 66 2a 66 | kgf7...........+]w...*.em..|2f*f |
| 10e0 | 4e 35 fe f2 1b 33 6d ed f1 ff 47 7b b9 87 7b 9e 84 45 53 67 3e 72 d1 cc 6c 9a 0c f0 62 56 91 b6 | N5...3m...G{..{..ESg>r..l...bV.. |
| 1100 | f0 b2 ef 74 9f 26 5f d7 55 82 37 bb 4a fb 71 67 a9 b2 f0 1c 4c 3f 58 0d dd 30 1f 31 76 a5 77 85 | ...t.&_.U.7.J.qg....L?X..0.1v.w. |
| 1120 | 45 e0 dd 3b 8f b6 68 36 4d d3 54 01 56 35 1f 13 f6 6a 07 fb e4 2c bd b3 ed d4 2e b3 8a 9e 3d bf | E..;..h6M.T.V5...j...,........=. |
| 1140 | 47 1a 1e 8d ef 1b d5 21 b2 0e 56 0b bd 07 ac 67 d6 5f fb 3e 8d 12 36 4d 30 40 88 a8 0c 1a b7 0d | G......!..V....g._.>..6M0@...... |
| 1160 | cc 0b a1 5d 12 6b fc 0b d6 dc 7e af 5a 99 aa 63 6f 63 1e 89 fa 82 4f 25 fe 0f 58 d3 b4 ef fb d7 | ...].k....~.Z..coc....O%..X..... |
| 1180 | d7 be 9b ed cb b4 10 11 2d 44 b4 2f d7 e5 ba 18 78 a1 f9 1f 5e ce a0 b5 71 23 0a c0 44 3a f8 21 | ........-D./....x...^...q#..D:.! |
| 11a0 | 81 30 ed da 3e 68 77 42 44 b4 0b 01 15 19 c3 e4 62 a9 87 c2 52 c3 6a 2f 22 81 80 31 8a 0f 1b d3 | .0..>hwBD.......b...R.j/"..1.... |
| 11c0 | b4 85 55 aa 1c bc 60 6d dc 4d 48 dd 60 7b dd 6e 43 9b 96 d4 a5 e0 6c 7a e8 76 97 fe bf 1e 64 3b | ..U...`m.MH.`{.nC.....lz.v....d; |
| 11e0 | f6 68 24 8d 6a 27 73 f0 c1 7e cf 6f f4 e9 cd 9b 37 4f 33 c2 e2 a3 8f be 1f 0c 4e 9f 60 8c f1 c9 | .h$.j's..~.o....7O3.......N.`... |
| 1200 | fc 58 1c 0f c8 37 f7 07 83 c1 ef cf e4 e0 94 e3 24 57 d5 c8 73 e4 79 9e 5f f5 c7 2d ed c6 30 9e | .X...7..........$W..s.y._..-..0. |
| 1220 | 9f e8 31 08 bb 3c 2f f9 be ef fb 52 58 7c 01 58 3b b6 6a 18 3b a6 e3 38 b6 e3 18 00 00 06 00 98 | ..1..</....RX|.X;.j.;..8........ |
| 1240 | 60 18 00 aa 8d 54 f8 e3 5e 66 22 5c cc 7c fc 60 d6 b5 f0 86 86 b1 f6 e0 fd 54 40 b9 1a 3c 9c 94 | `....T..^f"\.|.`.........T@..<.. |
| 1260 | 96 45 71 66 1e ec ad e6 5a 23 2b 64 fd ec a8 db 4c f6 bd 61 b3 5b f1 e6 e2 4b a5 de 89 94 ce 37 | .Eqf....Z#+d....L..a.[...K.....7 |
| 1280 | ae 37 cb 73 56 5e 5a 2d 9f 5f 0a 2c db de 71 1c e3 73 e7 2d f9 80 cc 04 40 b6 fd c9 57 44 f5 75 | .7.sV^Z-._.,..q..s.-....@...WD.u |
| 12a0 | eb f1 ab 93 c0 c1 34 51 13 37 b4 0f 57 84 c0 3d 3c ce 4d c7 f9 55 4f da de 54 e2 ba 30 2a c5 b9 | ......4Q.7..W..=<.M..UO..T..0*.. |
| 12c0 | 58 be 34 a2 6a bd 3c 6a 0c 29 d2 87 9b 11 56 94 4a ae b7 04 58 b6 03 86 09 cf 43 4f 13 c1 44 7f | X.4.j.<j.)....V.J...X.....CO..D. |
| 12e0 | 7d 47 b1 7a 31 71 2d 19 e3 37 19 8a c0 cf 41 80 0f f2 f6 2a 43 27 94 56 2f 02 55 bf 5d 8c 53 23 | }G.z1q-..7....A....*C'.V/.U.].S# |
| 1300 | 86 58 b6 1d 7b 57 38 af 5b 5d 10 16 42 b6 0b ae 41 7a d6 5b c3 55 bf a6 db fe 7b 42 eb 7c 8b 7a | .X..{W8.[]..B...Az.[.U....{B.|.z |
| 1320 | 29 c5 0b 51 d4 26 15 ac 2a 53 37 94 2e 0d 55 6f 37 49 cf ca ce 8c d6 16 83 a1 e1 62 01 de 56 55 | )..Q.&..*S7...Uo7I.........b..VU |
| 1340 | 07 1c 20 61 7d ea 7c f3 59 94 d2 0b 8c 31 3e 39 39 7d 17 f1 7b f1 be 36 7d f1 46 95 b1 23 9b e1 | ...a}.|.Y....1>99}..{..6}.F..#.. |
| 1360 | b1 d8 2d 26 ab 35 a7 d2 cd 32 77 db b0 da e0 9a b6 0a 86 43 0e c3 7f 72 31 2e 7d 71 82 f1 ab ad | ..-&.5...2w........C...r1.}q.... |
| 1380 | 18 47 f9 65 7a 0d ac b0 b8 33 82 56 d5 62 d1 9a c2 aa b3 59 59 10 16 00 80 61 18 24 ac d8 fb a4 | .G.ez....3.V.b.....YY....a.$.... |
| 13a0 | 3c c6 4f d6 e2 04 2a e9 61 71 d6 7c fc 61 72 94 29 ac 6d ee ae 60 19 8e 01 a5 54 6a eb a7 f1 a1 | <.O...*.aq.|.ar.).m..`....Tj.... |
| 13c0 | 94 eb a7 87 c5 cd c6 ad be c2 a5 81 55 e7 ee 0c 96 6b 42 4a 58 c5 a4 70 52 f9 1f b0 94 9b 81 d8 | ............U....kBJX..pR....... |
| 13e0 | 2b 73 69 60 b1 5f fe a2 b0 82 17 a1 97 b8 a5 b6 62 3e 3d 2c ee 7a 9a 80 9f 71 69 60 b9 e5 3b 83 | +si`._..........b>=,.z...qi`..;. |
| 1400 | 65 dc 06 2c ce a7 c0 f2 2a ad 92 ef fb 87 ad b6 45 1d 65 e5 09 ac d7 91 ce 47 85 75 48 c9 74 bb | e..,....*.......E.e......G.uH.t. |
| 1420 | 3e cf f3 3c 2f 95 5a 97 4b 1d 86 e6 6d c0 6a 13 b0 bc d7 cd b9 8c 3b 5b bf 8c 8c 74 7d 6a a2 7f | >..</.Z.K...m.j.......;[...t}j.. |
| 1440 | 18 fc 9a 6f ce 6a 36 01 00 bc 50 d6 36 37 b3 0e 1b 2b ca b2 60 05 8b 33 2a 2c e5 ea d7 9c 9f fb | ...o.j6...P.67...+..`..3*,...... |
| 1460 | 33 32 e1 e2 d6 d6 8f 8f 8f b7 be 54 a2 eb 43 55 8e e3 b8 cb 7a 96 92 73 4a e5 f0 26 44 00 00 a0 | 32.........T..CU....z..sJ..&D... |
| 1480 | 24 0d 95 b9 3f c8 b6 94 19 58 24 5b a5 1f 5e 58 4b 9b 4b 4b 1d 00 1c 0a ac cc 05 16 65 15 0c d3 | $...?....X$[..^XK.KK........e... |
| 14a0 | f8 2d 43 45 f9 62 ba ac 3e 0e e1 2a ba 13 58 5e 3d 6a 31 93 55 a8 bd 69 84 23 60 e8 14 48 b5 7d | .-CE.b..>..*..X^=j1.U..i.#`..H.} |
| 14c0 | 03 8b 1c 85 2d fa ca 69 14 0b cb 63 a9 65 8c 3f 8c 10 ac 51 47 d4 c4 03 21 d8 55 5a f8 29 8c ea | ....-..i...c.e.?...QG...!.UZ.).. |
| 14e0 | fd f9 4c 75 eb 43 68 7a cc 32 58 cf 91 36 01 00 20 b4 16 2e 36 28 ba 9d f2 04 d6 0a 21 5e 8f b0 | ..Lu.Chz.2X..6......6(......!^.. |
| 1500 | d6 39 5b 10 d6 b4 3d 0f 25 3d b2 a6 89 fb 36 b8 3b b6 20 08 8f 42 ac ce e7 6b 81 3f 92 02 1d 06 | .9[...=.%=....6.;....B...k.?.... |
| 1520 | a3 79 02 f1 25 00 40 36 74 21 f4 ab 1f 8e c6 b0 76 23 33 e2 d0 cd 69 b9 0b c0 72 a7 a7 e3 4a a1 | .y..%.@6t!......v#3...i...r...J. |
| 1540 | 0d df 1a d6 e4 a7 2a b8 36 aa 21 a1 40 0e c4 77 73 55 53 8c 3f 90 d6 57 59 6e 91 47 e9 f1 5e 7c | ......*.6.!.@..wsUS.?..WYn.G..^| |
| 1560 | 6a 3f d3 b6 03 58 15 52 a1 b1 a4 1a 7c 64 0b c1 92 b1 26 ee 23 47 75 ed 1a 42 7a e1 db 38 58 18 | j?...X.R....|d....&.#Gu..Bz..8X. |
| 1580 | 63 4c c6 1f 89 c5 aa 45 e9 b1 95 d6 47 57 c2 91 b8 73 5b b0 1c 30 68 b0 44 8c 45 dd 31 65 84 40 | cL.....E....GW...s[..0h.D.E.1e.@ |
| 15a0 | 40 ba fe 45 12 ac 35 56 58 2e df f1 bb ad b6 65 95 a9 3d 1e 16 59 1d 6b d2 ae a9 b5 c1 c3 fe 92 | @..E..5VX......e..=..Y.k........ |
| 15c0 | 61 05 bb b7 a9 49 69 49 c3 da 81 ee 02 a0 1d 54 43 7a e1 df 24 58 99 64 58 55 69 ef 28 b6 96 e0 | a....IiI.......TCz..$X.dXUi.(... |
| 15e0 | 01 40 87 fc 32 f1 f0 a8 14 59 c8 68 d7 1b f9 a5 c1 72 6e 66 44 12 d6 00 63 ed 40 00 00 54 40 36 | .@..2....Y.h.....rnfD...c.@..T@6 |
| 1600 | d2 0b cf 48 58 37 ef d5 a4 47 78 02 56 5e da 4d 5e 94 78 b4 84 af 97 38 4d c4 fe 67 b9 52 9f af | ...HX7...Gx.V^.M^.x....8M..g.R.. |
| 1620 | f3 2f 02 cb 70 a8 31 eb 18 63 51 76 55 15 3d d5 55 5b d7 f7 7f 20 61 69 1b f3 21 3e 16 56 a3 c2 | ./..p.1..cQvU.=.U[....ai..!>.V.. |
| 1640 | 94 f5 79 94 62 4b 39 75 e4 a3 15 e0 7d 77 61 58 c1 b2 d0 89 82 25 20 dd b4 91 ad d6 0a 05 f9 61 | ..y.bK9u....}waX.....%.........a |
| 1660 | c8 b3 66 9e e7 63 0d e3 f5 68 58 be c7 98 22 7b 94 b9 6d 94 0c 4b 62 29 69 ec e5 17 85 65 80 0b | ..f..c...hX..."{..m..Kb)i....e.. |
| 1680 | 8e 49 87 25 ca 85 9a 03 08 21 41 97 65 19 87 3c 8b d8 29 12 09 2b 6b 71 5c 0a 58 64 4a ba c2 30 | .I.%.....!A.e..<..)..+kq\.XdJ..0 |
| 16a0 | 47 31 15 29 14 7f 41 58 00 26 04 c7 bf 28 b0 f6 05 64 0b 35 41 10 0a b2 2c 9e 27 c5 ac 28 58 92 | G1.)..AX.&...(...d.5A...,.'..(X. |
| 16c0 | c2 a5 82 65 45 d5 6d 62 5a 96 cd c6 7f ec 9d c1 6b e3 56 10 87 77 e5 cb e0 47 45 42 b1 75 10 d8 | ...eE.mbZ.......k.V..w...GEB.u.. |
| 16e0 | 20 50 0f 82 57 6c 0c 5a 16 2c 41 0f 25 eb 83 4b db 94 d0 83 bb 28 b9 24 e0 93 9f f0 1e 7c 90 42 | .P..Wl.Z.,A.%..K.....(.$.....|.B |
| 1700 | 40 18 4c 71 b2 86 d2 43 0f 21 a4 60 d6 50 e8 d2 3f 30 3d 48 b6 65 bd 79 d6 b3 e5 42 28 d1 31 10 | @.Lq...C.!.`.P..?0=H.e.y...B(.1. |
| 1720 | c7 f9 98 99 37 33 6f 7e a3 0e 2b 02 cb 65 8e e3 38 26 d4 f8 0c 7e 46 89 56 7e ff be 51 6e 68 9a | ....73o~..+..e..8&...~F.V~..Qnh. |
| 1740 | 4e 7c ca b9 a1 bd d2 86 d1 6d b0 76 ea 66 0c 11 2b b9 94 49 7f 42 c9 5b 11 56 24 75 00 e6 bc 73 | N|.......m.v.f..+..I.B.[.V$u...s |
| 1760 | 1d 40 3a a5 11 f1 fb 9a a6 95 35 4d eb fb 84 f8 3a 67 59 94 6c dc 4e e3 b0 ae 94 5d 61 dd ef 03 | .@:.......5M....:gY.l.N....]a... |
| 1780 | 0b d4 a6 d4 1f 38 2f 96 94 be 03 d7 05 93 87 f5 25 d1 35 2d 9e 3d d6 7d 5f 47 02 fc 5a 71 28 b6 | .....8/.........%.5-.=.}_G..Zq(. |
| 17a0 | ac 5b 91 7f fc da 0d 16 a1 5a 1a e6 bb e1 47 b9 d4 7a 22 77 88 84 05 33 78 d7 05 00 97 b3 ac 44 | .[.......Z....G..z"w...3x......D |
| 17c0 | 7c 98 3c 7c cc b2 a8 95 0f ab 83 1d e3 17 f5 55 47 e2 9e ff c6 73 41 13 29 d7 4b 16 32 81 ab 5d | |.<|...........UG....sA.).K.2..] |
| 17e0 | 08 96 09 ae 73 8a 05 f8 fe db b7 ba ee fb 7e 2c 69 a2 36 9f 3a a4 67 4c 71 58 25 de a2 c2 8d 04 | ....s.........~,i.6.:.gLqX%..... |
| 1800 | 11 81 75 93 8d 33 d2 e5 6d 75 7a 9d 4f 4b 2d 58 1b 32 0f 89 59 33 3d 91 81 e9 be ae fb 3e f9 8a | ..u..3..muz.OK-X.2..Y3=......>.. |
| 1820 | 4f 1d 48 ae 65 71 bd f4 20 33 33 83 c0 9a 66 2d 71 97 76 c0 e8 2c af 4c e8 14 83 c5 98 63 22 a7 | O.H.eq...33...f-q.v..,.L.....c". |
| 1840 | 61 32 37 94 08 07 7d 1e 16 a5 76 9e 65 0d f3 5c 0a 81 15 0a af 20 e5 9e 5b 35 d8 36 b5 73 5d 10 | a27...}...v.e..\........[5.6.s]. |
| 1860 | 96 c3 90 00 bf 84 45 e2 b7 1d f9 48 06 4f 56 a0 a8 8d 9e 86 d9 a2 ad d9 93 80 c5 b9 ee 25 ec fe | ......E....H.OV..............%.. |
| 1880 | f4 26 1f 6e 04 99 6a af 58 3f 8b 39 c0 10 58 94 5a b1 d0 c4 27 84 20 49 69 5a 83 8f a7 0e 93 dc | .&.n..j.X?.9..X.Z...'..IiZ...... |
| 18a0 | 66 0b 02 0b 8c dd 8b 43 d1 10 dc 02 71 ca 3b 81 ec 37 90 79 fe ac 83 87 58 56 14 1b cc 6a 5e 54 | f......C....q.;..7.y....XV...j^T |
| 18c0 | 04 2b 16 10 e0 31 4b 45 b2 9c 7c 58 1d e9 1e cd 5d 10 1c 01 40 69 4b 5f e2 8a c3 35 2a b8 5e 05 | .+...1KE..|X....]...@iK_...5*.^. |
| 18e0 | bb be 8f 96 ee 45 e3 b9 51 1c 16 b5 6d 4a 28 25 94 10 04 56 6b 2f 58 5c d0 32 7a 82 68 6e c4 6d | .....E..Q...mJ(%...Vk/X\.2z.hn.m |
| 1900 | 65 43 59 88 67 2d 39 32 93 42 b0 06 00 2e 1f e0 a3 e4 cd 68 b1 d9 10 ca e7 59 89 e2 24 19 c1 a5 | eCY.g-92.B.........h.....Y..$... |
| 1920 | 12 b0 e6 52 b0 18 17 9e ef 1f d0 46 b8 a1 2c 61 29 c3 91 90 56 f6 d3 8e 8a 6e 66 63 66 ad 82 c0 | ...R.......F..,a)...V....nfcf... |
| 1940 | b2 57 6f 29 24 c4 16 16 d2 f1 74 b7 f5 c8 c3 ca da 88 91 35 80 5e 1b 8b b2 fc f8 50 97 ef 77 56 | .Wo)$.....t........5.^.....P..wV |
| 1960 | cf 57 f7 86 86 a2 28 ca fc 4e 0e 56 93 15 5c dc c3 98 5b 6b 61 96 95 c0 b0 6d 8a b8 e1 5a 9a 42 | .W....(..N.V..\...[ka....m...Z.B |
| 1980 | 08 b1 08 02 6b 94 73 b0 5d 19 e8 91 d4 e3 4f fe 76 98 89 dd 53 43 d9 84 a5 28 5d 95 49 b8 61 b7 | ....k.s.].....O.v...SC...(].I.a. |
| 19a0 | d8 12 8c 41 19 80 99 2d 91 65 25 12 30 1e 56 1c d8 a9 6d 53 6a 11 4a 11 58 fc 04 4d ba d0 1b bd | ...A...-.e%.0.V...mSj.J.X..M.... |
| 19c0 | 11 9d df d8 64 5a ea 5e fb 56 ed 34 d3 b3 0e 2b b6 c6 4d 9d a1 57 b1 1b 77 90 c5 2c ab 71 0a c0 | ....dZ.^.V.4...+..M..W..w..,.q.. |
| 19e0 | 06 62 58 b6 4d 29 41 9a 7f d6 72 b7 2e a5 92 49 a9 a2 b4 2f 26 3d 00 28 8d 16 43 71 b2 c3 f0 a2 | .bX.M)A...r....I.../&=.(..Cq.... |
| 1a00 | d8 e8 de 04 c1 9b cd 01 9c 51 d6 d1 e6 53 75 35 c3 5c e2 c7 c2 9b bd 82 b0 9c be c7 df a4 47 19 | .........Q...Su5.\............G. |
| 1a20 | ed 89 8d 58 d6 5a c3 63 51 1b b1 2c e9 e1 c5 6c 66 38 91 fe 8d 11 12 c2 15 45 31 ba 5d 7c aa e9 | ...X.Z.cQ..,...lf8.......E1.]|.. |
| 1a40 | 75 d1 65 63 ac d6 af b1 d6 56 58 b6 fd 3b 5f ee 24 ed 77 42 08 a1 16 0a ab b4 27 2c f9 b1 47 01 | u.ec.....VX..;_.$.wB......',..G. |
| 1a60 | 2c 61 b1 53 2d 0a cb 03 00 67 96 ed 67 e5 c1 8a 83 fb 7a 5f e4 a3 64 8b 46 0a 16 d7 7b 38 0c ac | ,a.S-....g..g.....z_..d.F...{8.. |
| 1a80 | 66 1d 8a c2 32 01 40 9f ed 68 59 5f c4 d2 5e 6b 29 3a a4 bb 35 ff f2 60 c9 7a f0 6e b0 5a 50 14 | f...2.@..hY_..^k):..5..`.z.n.ZP. |
| 1aa0 | d6 c0 74 e0 3b 12 ed ec 86 1b f2 7b dc 0d f3 9a e3 af 87 e2 6a b6 d2 3c 34 ac 66 08 85 61 55 cc | ..t.;......{........j..<4.f..aU. |
| 1ac0 | 9a 43 f6 82 45 d3 9a 7b c1 85 c5 74 cb dd 94 8a 66 f0 ab ca 6f 78 58 58 ed 09 1c 00 96 6b 6a fa | .C..E..{...t....f...oxXX.....kj. |
| 1ae0 | ce 6e f8 f7 26 2b 4a 1e 05 57 61 c2 58 dd bd 85 ad b0 80 4d f3 31 4c d0 04 05 7b 82 07 38 04 2c | .n..&+J..Wa.X......M.1L...{..8., |
| 1b00 | d3 d7 cb 66 65 67 58 19 e1 bd 08 16 d4 d1 e6 a5 f1 41 54 1b a6 6b 9a 8f 5b 71 19 67 a5 78 60 34 | ...fegX..........AT..k..[q.g.x`4 |
| 1b20 | ff 1c 39 2f 1d 40 6f a8 28 ca c0 24 65 26 4c 1d 68 b2 2f 0c b1 2c 5f 0e 16 54 83 26 ff 6f 56 41 | ..9/.@o.(..$e&L.h./..,_..T.&.oVA |
| 1b40 | 02 16 c0 83 40 6e a8 28 cd 4e 6b 5d 5f 57 c3 f3 2d 58 db 8b f4 cc e6 ab 5e b8 e7 33 f8 54 f9 da | ....@n.(.Nk]_W..-X......^..3.T.. |
| 1b60 | d5 3d 80 a3 4f 9f 3f ff 35 9b 8d a3 68 1c 45 d1 38 fa 6d 2d 1b 4f 66 6c a3 28 8a c6 e3 d9 6c 3c | .=..O.?.5...h.E.8.m-.Ofl.(....l< |
| 1b80 | 1e cf c6 e3 3f b2 3b 69 fe 19 7f b3 f1 c9 e9 26 53 ef 32 ed 2a d7 e7 ab 2a ee 6a f3 db a0 33 5d | ....?.;i.......&S.2.*...*.j...3] |
| 1ba0 | 55 f5 8c 9b 02 1f de f0 d2 cc bb 0a d6 1c 35 e6 17 99 12 fb d5 de ea 6a d7 31 bd 5a d9 05 80 d3 | U.............5........j.1.Z.... |
| 1bc0 | 72 59 4b 1a 7a d6 ba bd be 7e 71 36 5d ae 09 49 eb ed 57 eb 8c 08 b5 69 63 7b 6b 7c 1a 04 41 10 | rYK.z....~q6]..I..W....ic{k|..A. |
| 1be0 | 5c a8 47 fb 7c cf 23 35 9c 26 dd ca 4a 78 27 96 be 96 ea e1 34 08 82 4e 77 1e 04 c1 45 38 41 5a | \.G.|.#5.&..Jx'.....4..Nw...E8AZ |
| 1c00 | 61 fb c3 f2 3c cf f1 3c 06 50 fb 51 6b e8 a9 25 7d 29 85 7d f2 32 1a 6a 51 4a e3 ed 90 94 df 76 | a...<..<.P.Qk..%}).}.2.jQJ.....v |
| 1c20 | 44 6d eb 59 ed 32 da 32 26 b9 f7 6f 9a a6 e7 79 35 00 28 6b 5a 23 de 3c 97 dd dd 60 a5 cb 9a f5 | Dm.Y.2.2&..o...y5.(kZ#.<...`.... |
| 1c40 | b6 a7 ec f3 9c 56 91 fe 57 b0 3c cf f1 dc 78 1b 59 7f 73 78 c1 b6 6d 2b f5 d6 bf 8d 45 f8 99 9d | .....V..W.<...x.Y.sx..m+....E... |
| 1c60 | 3d f1 de 90 67 b8 f0 02 85 e5 3e bd 3c 92 8f fb 02 eb 05 d6 0b ac 17 58 ff 07 58 df ff 7c 72 72 | =...g.....>.<..........X..X..|rr |
| 1c80 | f2 cb 0f 4f 3f a5 7e 76 7c 7c 7c fc ed d3 bf ec 9d 41 8b ab 3c 14 86 37 52 de aa 9b ac 02 06 a4 | ...O?.~v|||......A..<..7R....... |
| 1ca0 | 20 01 19 5a d2 95 30 8b db c5 40 f1 42 e1 52 a9 0b 37 b6 ee b3 4b fe 42 ff f7 b9 0b ed 34 91 a9 | ...Z..0...@.B.R..7...K.B.....4.. |
| 1cc0 | d3 ce dc ef c2 9d 6f 66 31 03 ea e4 c4 c7 93 37 a7 35 fa 12 a9 e1 6f ff 93 31 c6 18 63 19 31 c6 | ......of1......7.5....o..1..c.1. |
| 1ce0 | d8 fe 56 a0 2a 67 7f f9 d4 12 c6 18 63 01 cd 19 63 cd e4 91 41 b9 fd 14 ac 66 23 9b fd bc 09 e5 | ..V.*g......c...c...A....f#..... |
| 1d00 | cc dd 5a 02 b2 22 a2 c4 28 77 b3 00 16 44 44 b9 c8 6e 06 ca 81 ec 8f f3 c8 96 53 7b e7 80 d9 12 | ..Z.."..(w...DD..n........S{.... |
| 1d20 | 51 96 9e a6 9b 11 28 3e 03 ab 85 49 88 88 f6 a1 07 2b 01 c0 33 22 2a c6 20 6a 22 a2 20 be 1d a8 | Q.....(>...I.....+..3"*..j"..... |
| 1d40 | 36 c5 9f 4f 9e b2 9d da 5b 01 39 11 11 45 ef 34 b3 e3 cd 27 60 6d 81 01 52 e2 c3 ca 65 bf 67 f6 | 6..O....[.9..E.4...'`m..R...e.g. |
| 1d60 | 26 2c d5 fe dd 81 b6 c0 64 c0 1d a0 7a 05 f8 4f 35 ab 00 2e ac 03 0f 56 ab 0c b0 fb 00 ac ea 54 | &,......d...z..O5......V.......T |
| 1d80 | 7a 5d 6e 45 31 91 16 ac 2c d5 49 0a e5 2b 43 14 15 cd 28 ac 28 eb db e7 56 c0 f4 d0 9c 63 f6 c1 | z]nE1...,.I..+C...(.(...V....c.. |
| 1da0 | ae cc b2 36 76 24 61 5e 2f 9c 11 91 2c db 9a 68 9b 6f ef 86 65 80 37 25 2f 69 89 01 26 f8 40 66 | ...6v$a^/...,..h.o..e.7%/i..&.@f |
| 1dc0 | e5 70 03 d5 a8 a9 2d 6f 6b 33 10 2e 05 b8 07 10 27 6a 7b 6d bc e6 7f be 9d df 16 34 33 48 d1 cc | .p....-ok3......'j{m.......43H.. |
| 1de0 | 25 53 20 9c 73 c0 c9 81 2a 84 73 3a 49 89 94 94 c1 e9 5e 58 19 80 ea 06 2c ca 01 39 7f 1c 56 ec | %S..s...*.s:I.....^X....,..9..V. |
| 1e00 | c1 8a 11 26 b4 9b 52 1b 46 2d e0 f6 49 a2 a1 00 c6 9d 25 30 39 0c 03 a0 8f 30 f3 d3 ed 94 2b 20 | ...&..R.F-..I.....%09....0....+. |
| 1e20 | 71 36 85 70 13 76 6f b0 2c b7 6a 7f 77 66 a1 6f 4d b1 d1 ac 9b b4 44 14 01 e2 fc 49 58 4b c0 b0 | q6.p.vo.,.j.wf.oM.....D....IXK.. |
| 1e40 | 49 69 6e 46 b0 02 20 20 35 04 ba 0b 56 3c 5c 71 b5 f3 d3 6d 36 6f 90 fa c1 2a 1f 67 ba 7f 44 b3 | IinF....5...V<\q...m6o...*.g..D. |
| 1e60 | 2e 79 da 00 61 36 86 35 4f e1 05 bb c2 aa 17 f7 c2 a2 12 53 67 fa 06 ac 25 a0 48 01 ec 6e 58 21 | .y..a6.5O..........Sg...%.H..nX! |
| 1e80 | c2 be 77 95 cf 7c 49 33 e4 de 3c 10 8e e6 85 f4 21 81 67 43 37 ae b3 a2 03 8b 12 33 6a 2e 06 96 | ..w..|I3..<.....!.gC7......3j... |
| 1ea0 | 44 44 53 b5 9f 0f 6b 4f cc f8 43 ea 3d 58 ea e1 cc 1a fa 9e 9d fd 6e 08 a2 8d d7 4a 01 bf e2 69 | DDS...kO..C.=X........n....J...i |
| 1ec0 | fc 41 fa 7e 9d 55 40 66 bd d0 7a b0 b6 ed 70 95 7d 58 f5 d0 eb a2 ba 17 d6 2e a1 c4 e0 11 58 99 | .A.~.U@f..z...p.}X............X. |
| 1ee0 | c4 92 6a 1f b0 41 4b b7 2b 5d 89 33 11 51 1b d0 48 9f 14 4c 92 b8 03 53 5d 0f 49 28 69 05 72 52 | ..j..AK.+].3.Q..H..L...S].I(i.rR |
| 1f00 | 0f c0 ca 4a 44 15 51 00 78 53 d6 6e 28 ef e2 51 a2 9e b1 69 f6 db 72 47 74 67 05 cf c2 2a 4b cf | ...JD.Q.xS.n(..Q...i..rGtg...*K. |
| 1f20 | 53 b3 e1 82 62 60 ee 5d 91 9c 62 4f 8a 49 40 c4 c9 ed fa 03 58 6c d5 a9 a5 b1 3e ed b0 89 bd 94 | S...b`.]..bO.I@.....Xl....>..... |
| 1f40 | 3d 25 d7 20 72 46 0c e6 ed 8a e4 e6 67 c3 ed 49 9c cf 45 1c 8c ca 9f b6 4f 9e 71 a9 ce 0a ce 4b | =%..rF......g..I..E.....O.q....K |
| 1f60 | 35 c1 4a e5 65 e9 28 5a b0 3b 17 f9 ed a4 88 cb f2 94 f8 ff 41 14 9c 67 45 e0 7f 9e 39 4d c6 0c | 5.J.e.(Z.;..........A..gE...9M.. |
| 1f80 | 66 9c cf fc 03 54 19 13 55 f9 c2 09 9d 15 c5 b5 4c 4a 44 9c 11 e5 a2 fe fe d6 e1 fb 2b 9a 6f 58 | f....T..U.......LJD.........+.oX |
| 1fa0 | df b0 be 61 fd bf 60 7d ec 6e 34 8c 91 52 1e 52 19 72 21 84 78 1e 5e b8 3d 36 ab e8 cd 1c 23 2b | ...a..`}.n4..R.R.r!.x.^.=6....#+ |
| 1fc0 | 7a 4b 31 ad b5 e6 5c 58 21 fa bb 85 ce 2b e1 85 10 fc 8b de 64 95 d8 74 47 d9 c9 75 77 d4 5a 8b | zK1...\X!....+......d..tG..uw.Z. |
| 1fe0 | 57 db bd d5 78 55 77 ff 5c 80 e5 42 08 3d d8 af 69 61 85 bd 18 cc 38 16 ac 3c fc a2 b0 36 3f 7e | W...xUw.\..B.=..ia....8..<...6?~ |
| 2000 | ca 63 da c9 a3 4c 39 d7 7a f0 09 5d 8d d2 ea 69 75 f1 5e 1d fc c0 b4 d6 fc e2 27 b0 7a 7a 7d 7f | .c...L9.z..]...iu.^.......'.zz}. |
| 2020 | 7e 14 59 a1 39 97 5f 15 56 67 7e 70 d9 75 a9 4c f9 ba b7 6f 8a a2 95 b7 d8 a1 18 6c 42 57 bd e9 | ~.Y.9._.Vg~p.u.L...o.......lBW.. |
| 2040 | 82 ee 9d 32 85 7e 19 60 3d bd 3a 33 d8 28 12 fc 57 fa 0f dc c1 ff 18 ac 14 dd 71 2d 3b 99 1e 0f | ...2.~.`=.:3.(..W.........q-;... |
| 2060 | 3c 5c f3 97 17 11 45 4f 2b f7 71 de d5 6a 15 45 4f d7 c4 d2 dc 5a db 53 7b 8e a2 c8 b1 45 b1 36 | <\....EO+.q..j.EO....Z.S{....E.6 |
| 2080 | b2 fa d8 7d dd 85 21 9d 49 8f fc 20 d3 f0 20 75 1a be 68 f1 1c 5d dc 79 87 e5 45 fd f3 5e 3d 12 | ...}..!.I......u..h..].y..E..^=. |
| 20a0 | a1 39 e7 d6 5a 61 a3 c1 31 d3 59 a0 65 85 b5 e2 28 f1 75 61 21 0d c3 75 2a e5 3a 3d 70 b9 e6 17 | .9..Za..1.Y.e...(.ua!..u*.:=p... |
| 20c0 | af 0e 2b ae 2b 66 9c df 82 73 ae ed e0 14 f3 7a ac 7d 95 76 ad ff 89 bc fa 38 ac f5 7a 7d 3c 74 | ..+.+f...s.....z.}.v.....8..z}<t |
| 20e0 | e1 f1 b0 96 bf 06 58 f6 77 7b 67 a8 e3 48 0c 83 e1 83 96 f3 00 06 96 7e 16 b2 52 25 a3 91 16 b4 | ......X.w{g..H.........~..R%.... |
| 2100 | 60 1e a0 60 8d 4a ac e1 66 e3 f7 97 0e 64 a6 db 5d 70 a7 d3 96 b4 3d a3 41 03 3e 39 ce 9f c4 c9 | `..`.J..f....d..]p....=.A.>9.... |
| 2120 | af 96 35 e2 c6 eb b8 b5 4a 91 f1 28 c6 cd c5 e9 6b cb 91 a6 24 e8 b9 61 b1 19 c3 0d 70 e7 f3 ac | ..5.....J..(....k...$..a....p... |
| 2140 | aa 35 9b d9 18 62 55 ed ed d0 da a1 1d da a1 b5 2a 11 49 7d 7f af 6a 87 a9 f6 e7 31 aa b4 aa de | .5...bU.........*.I}..j....1.... |
| 2160 | 2b 45 62 a5 a7 cf 2c 0b 37 0f 47 b0 a9 a6 05 20 da 3e 0d 88 76 5d 50 6a 26 a9 7b 4a d5 15 56 6d | +Eb...,.7.G......>..v]Pj&.{J..Vm |
| 2180 | 46 b6 d6 e9 b9 61 91 99 19 c3 9c e1 c1 9c 06 07 42 af 8d 90 d3 e1 2a 38 35 8d 07 2c dd b5 ba 56 | F....a..........B.....*85..,...V |
| 21a0 | bd 6f b4 52 2c e8 d9 61 b1 45 30 32 e0 1d 81 e5 b8 00 bc 37 4b 7e 5b c7 58 f0 56 b3 f4 c6 87 75 | .o.R,..a.E02.......7K~[.X.V....u |
| 21c0 | b3 17 15 06 3d 3d 2c 07 47 c0 c2 bb 03 4e b4 7c 70 ee 4d a4 5f 61 55 84 c9 66 e8 5b 7b 6a ed 76 | ....==,.G....N.|p.M._aU..f.[{j.v |
| 21e0 | c8 12 17 7a 7e 58 14 88 e0 40 bf b8 a3 d3 b1 43 6a bb cd db a6 1b 58 55 1a e0 01 6b a3 55 aa b3 | ...z~X...@.....Cj.....XU...k.U.. |
| 2200 | 0e cf d6 c7 29 57 3f ec 56 66 80 c3 2f ee ee cb b1 f7 d0 da 9d 09 bf 7a 16 8a 77 96 d4 79 e8 87 | ....)W?.Vf../..........z..w..y.. |
| 2220 | 6a ad 69 a6 ce 73 a6 d8 4a 2f 02 8b d8 01 74 b8 7b a7 a3 e7 6e 63 f8 76 68 fa a9 d2 b5 78 f1 90 | j.i..s..J/....t.{...nc.vh....x.. |
| 2240 | cd f3 5d 55 5b 2b cd cc 39 53 6c a1 97 81 45 2b 80 0e b8 af b4 62 db a3 9a a6 d6 34 39 37 75 a0 | ..]U[+..9Sl...E+.....b.....497u. |
| 2260 | aa e4 fd 43 86 e7 fb e6 dc 2e 26 39 8b 88 d1 0b c1 22 ea de f1 e1 4e b4 b2 56 9b a6 43 9b a6 d6 | ...C......&9....."....N..V..C... |
| 2280 | 12 ac 55 a5 4d 35 35 a9 77 88 d9 80 25 a9 9a c6 26 22 66 fc 5a b0 c8 4f 34 03 7e 74 49 dd d5 68 | ..U.M55.w...%...&"f.Z..O4.~tI..h |
| 22a0 | 05 ec f3 c9 3f 22 5a 10 6c 03 97 48 aa 8c 8f 88 f5 c5 60 11 93 87 bb 83 45 75 5b 24 57 84 5c fd | ....?"Z.l..H......`.....Eu[$W.\. |
| 22c0 | ec 87 de 8f 60 8e 91 4e 92 c6 6c 62 47 7a bc f8 29 ac 15 64 ee dd c1 26 22 5a 9a 9a bc d5 72 4d | ....`..N..lbGz..)..d...&"Z....rM |
| 22e0 | 19 c9 b3 00 61 01 13 11 36 63 33 7e bc ac ba 07 2c 3a 85 47 ef dd 11 c1 a9 aa 22 f3 3e f1 a9 ed | ....a...6c3~....,:.G......".>... |
| 2300 | bb 9f 23 b5 58 c4 98 8d 79 79 c4 b4 ba 07 2c 02 ba 2f fd e2 61 9b 40 18 13 df 9c 2a d7 95 cc 02 | ..#.X...yy....,../..a.@....*.... |
| 2320 | 30 b3 49 ca 99 39 3a d1 ab c2 22 8e 93 bb 3b 82 cd c4 98 b7 42 9e b7 db 54 dd 11 61 22 12 1f 38 | 0.I..9:..."...;.....B...T..a"..8 |
| 2340 | d2 0b c3 a2 0c bf f4 7e 41 98 f1 99 ed 2c b3 a4 64 7e 91 51 ce 00 8b f1 42 0f 1c f7 80 45 7c ea | .......~A....,..d~.Q....B....E|. |
| 2360 | dd 81 6d ac c9 38 20 fc 76 66 ba 76 f8 a5 9f e8 e5 61 d1 f1 b4 74 00 88 d8 47 a1 24 3d 5f fc ba | ..m..8..vf.v.....a...t...G.$=_.. |
| 2380 | d3 7f 7a 5f 00 60 14 2e b1 33 d3 7f 58 7f 90 10 70 47 44 04 33 b3 3c 25 ab fb c1 22 ea cc 11 1c | ..z_.`...3..X...pGD.3.<%...".... |
| 23a0 | 11 58 56 fa 0f eb af 72 de d9 1e 6a 9f f8 1f e3 37 97 2c c5 bb 11 c7 3f f5 00 00 00 00 49 45 4e | .XV....r...j....7.,....?.....IEN |
| 23c0 | 44 ae 42 60 82 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | D.B`............................ |
| 23e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2400 | 65 6c 6e 6f 64 65 2d 32 30 31 39 30 37 30 32 2e 31 35 30 39 2f 64 65 66 61 75 6c 74 2d 77 65 62 | elnode-20190702.1509/default-web |
| 2420 | 73 65 72 76 65 72 2d 74 65 73 74 2e 68 74 6d 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | server-test.html................ |
| 2440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2460 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 | ....0000644.0000000.0000000.0000 |
| 2480 | 30 30 30 30 37 31 35 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 37 35 35 36 00 20 30 00 00 00 | 0000715.00000000000.017556..0... |
| 24a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 24c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 24e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2500 | 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...root................... |
| 2520 | 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........root................... |
| 2540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 25a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 25c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 25e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2600 | 3c 68 74 6d 6c 3e 0a 3c 62 6f 64 79 3e 0a 3c 68 31 3e 54 68 69 73 20 69 73 20 45 6c 6e 6f 64 65 | <html>.<body>.<h1>This.is.Elnode |
| 2620 | 27 73 20 54 65 73 74 20 48 54 4d 4c 20 66 69 6c 65 3c 2f 68 31 3e 0a 3c 70 3e 49 66 20 79 6f 75 | 's.Test.HTML.file</h1>.<p>If.you |
| 2640 | 20 61 72 65 20 72 65 61 64 69 6e 67 20 74 68 69 73 20 74 68 65 6e 20 6d 6f 73 74 20 6c 69 6b 65 | .are.reading.this.then.most.like |
| 2660 | 6c 79 20 45 6c 6e 6f 64 65 20 69 73 20 77 6f 72 6b 69 6e 67 20 6f 6b 2e 3c 2f 70 3e 0a 0a 3c 70 | ly.Elnode.is.working.ok.</p>..<p |
| 2680 | 3e 54 68 69 73 20 66 69 6c 65 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 20 73 74 6f 72 65 64 20 69 6e | >This.file.is.normally.stored.in |
| 26a0 | 20 74 68 65 20 75 73 65 72 27 73 20 64 69 72 65 63 74 6f 72 79 2e 20 49 74 20 63 61 6e 0a 6e 6f | .the.user's.directory..It.can.no |
| 26c0 | 72 6d 61 6c 6c 79 20 62 65 20 66 6f 75 6e 64 20 69 6e 3a 3c 2f 70 3e 0a 0a 3c 70 72 65 3e 0a 7e | rmally.be.found.in:</p>..<pre>.~ |
| 26e0 | 2f 2e 65 6d 61 63 73 2e 64 2f 65 6c 6e 6f 64 65 0a 3c 2f 70 72 65 3e 0a 0a 3c 70 3e 54 6f 20 6c | /.emacs.d/elnode.</pre>..<p>To.l |
| 2700 | 65 61 72 6e 20 6d 6f 72 65 20 61 62 6f 75 74 20 45 6c 6e 6f 64 65 20 76 69 73 69 74 20 3c 61 20 | earn.more.about.Elnode.visit.<a. |
| 2720 | 68 72 65 66 3d 22 68 74 74 70 3a 2f 2f 65 6c 6e 6f 64 65 2e 6f 72 67 22 3e 74 68 65 20 77 65 62 | href="http://elnode.org">the.web |
| 2740 | 73 69 74 65 3c 2f 61 3e 2e 3c 2f 70 3e 0a 0a 3c 70 3e 4a 75 73 74 20 74 6f 20 73 68 6f 77 20 74 | site</a>.</p>..<p>Just.to.show.t |
| 2760 | 68 61 74 20 45 6c 6e 6f 64 65 20 77 69 6c 6c 20 73 65 72 76 65 20 61 6e 79 74 68 69 6e 67 2c 20 | hat.Elnode.will.serve.anything,. |
| 2780 | 68 65 72 65 27 73 20 61 20 70 6e 67 3a 3c 2f 70 3e 0a 0a 3c 69 6d 67 20 73 72 63 3d 22 64 65 66 | here's.a.png:</p>..<img.src="def |
| 27a0 | 61 75 6c 74 2d 77 65 62 73 65 72 76 65 72 2d 69 6d 61 67 65 2e 70 6e 67 22 2f 3e 0a 0a 3c 2f 62 | ault-webserver-image.png"/>..</b |
| 27c0 | 6f 64 79 3e 0a 3c 2f 68 74 6d 6c 3e 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ody>.</html>.................... |
| 27e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2800 | 65 6c 6e 6f 64 65 2d 32 30 31 39 30 37 30 32 2e 31 35 30 39 2f 64 65 66 61 75 6c 74 2d 77 69 6b | elnode-20190702.1509/default-wik |
| 2820 | 69 2d 69 6e 64 65 78 2e 63 72 65 6f 6c 65 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | i-index.creole.................. |
| 2840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2860 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 | ....0000644.0000000.0000000.0000 |
| 2880 | 30 30 30 36 34 31 30 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 37 31 35 30 00 20 30 00 00 00 | 0006410.00000000000.017150..0... |
| 28a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 28c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 28e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2900 | 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...root................... |
| 2920 | 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........root................... |
| 2940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 29a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 29c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 29e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 2a00 | 3d 20 45 6c 6e 6f 64 65 20 57 69 6b 69 20 3d 0a 0a 54 68 69 73 20 69 73 20 45 6c 6e 6f 64 65 27 | =.Elnode.Wiki.=..This.is.Elnode' |
| 2a20 | 73 20 57 69 6b 69 2e 20 20 49 74 20 69 73 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 7b 7b 7b 63 | s.Wiki...It.is.based.on.the.{{{c |
| 2a40 | 72 65 6f 6c 65 7d 7d 7d 20 77 69 6b 69 20 6c 61 6e 67 75 61 67 65 0a 61 6e 64 20 69 73 20 77 72 | reole}}}.wiki.language.and.is.wr |
| 2a60 | 69 74 74 65 6e 20 63 6f 6d 70 6c 65 74 65 6c 79 20 69 6e 20 45 6d 61 63 73 4c 69 73 70 2e 0a 0a | itten.completely.in.EmacsLisp... |
| 2a80 | 7b 7b 64 65 66 61 75 6c 74 2d 77 69 6b 69 2d 6c 6f 67 6f 2e 67 69 66 7c 47 4e 55 73 20 73 69 74 | {{default-wiki-logo.gif|GNUs.sit |
| 2aa0 | 74 69 6e 67 20 6f 6e 20 63 6c 6f 75 64 73 7d 7d 0a 0a 3d 3d 20 57 68 61 74 20 64 6f 65 73 20 69 | ting.on.clouds}}..==.What.does.i |
| 2ac0 | 74 20 64 6f 3f 20 3d 3d 0a 0a 49 74 20 64 6f 65 73 20 73 79 6e 74 61 78 20 63 6f 6c 6f 72 69 6e | t.do?.==..It.does.syntax.colorin |
| 2ae0 | 67 3a 0a 0a 7b 7b 7b 0a 23 23 21 20 65 6d 61 63 73 2d 6c 69 73 70 0a 28 64 65 66 75 6e 20 65 6c | g:..{{{.##!.emacs-lisp.(defun.el |
| 2b00 | 6e 6f 64 65 2d 77 69 6b 69 2d 68 61 6e 64 6c 65 72 20 28 68 74 74 70 63 6f 6e 20 77 69 6b 69 72 | node-wiki-handler.(httpcon.wikir |
| 2b20 | 6f 6f 74 29 0a 20 20 22 41 20 6c 6f 77 20 6c 65 76 65 6c 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 | oot)..."A.low.level.handler.for. |
| 2b40 | 57 69 6b 69 20 6f 70 65 72 61 74 69 6f 6e 73 2e 0a 0a 53 65 6e 64 20 74 68 65 20 57 69 6b 69 20 | Wiki.operations...Send.the.Wiki. |
| 2b60 | 70 61 67 65 20 72 65 71 75 65 73 74 65 64 2c 20 77 68 69 63 68 20 6d 75 73 74 20 62 65 20 61 20 | page.requested,.which.must.be.a. |
| 2b80 | 66 69 6c 65 20 65 78 69 73 74 69 6e 67 20 75 6e 64 65 72 0a 74 68 65 20 57 49 4b 49 52 4f 4f 54 | file.existing.under.the.WIKIROOT |
| 2ba0 | 2c 20 62 61 63 6b 20 74 6f 20 74 68 65 20 48 54 54 50 43 4f 4e 2e 0a 0a 55 70 64 61 74 65 20 6f | ,.back.to.the.HTTPCON...Update.o |
| 2bc0 | 70 65 72 61 74 69 6f 6e 73 20 61 72 65 20 70 72 6f 74 65 63 74 65 64 20 62 79 20 61 75 74 68 65 | perations.are.protected.by.authe |
| 2be0 | 6e 74 69 63 61 74 69 6f 6e 2e 22 0a 20 20 28 65 6c 6e 6f 64 65 2d 6d 65 74 68 6f 64 20 68 74 74 | ntication."...(elnode-method.htt |
| 2c00 | 70 63 6f 6e 0a 20 20 20 20 28 47 45 54 0a 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 64 6f 63 72 6f | pcon.....(GET......(elnode-docro |
| 2c20 | 6f 74 2d 66 6f 72 20 77 69 6b 69 72 6f 6f 74 0a 20 20 20 20 20 20 20 77 69 74 68 20 74 61 72 67 | ot-for.wikiroot........with.targ |
| 2c40 | 65 74 2d 70 61 74 68 0a 20 20 20 20 20 20 20 6f 6e 20 68 74 74 70 63 6f 6e 0a 20 20 20 20 20 20 | et-path........on.httpcon....... |
| 2c60 | 20 64 6f 0a 20 20 20 20 20 20 20 28 69 66 20 28 65 71 75 61 6c 20 74 61 72 67 65 74 2d 70 61 74 | .do........(if.(equal.target-pat |
| 2c80 | 68 20 28 65 78 70 61 6e 64 2d 66 69 6c 65 2d 6e 61 6d 65 20 28 63 6f 6e 63 61 74 20 77 69 6b 69 | h.(expand-file-name.(concat.wiki |
| 2ca0 | 72 6f 6f 74 20 22 2f 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 77 | root."/")))............(elnode-w |
| 2cc0 | 69 6b 69 2d 70 61 67 65 20 68 74 74 70 63 6f 6e 20 28 63 6f 6e 63 61 74 20 77 69 6b 69 72 6f 6f | iki-page.httpcon.(concat.wikiroo |
| 2ce0 | 74 20 22 2f 69 6e 64 65 78 2e 63 72 65 6f 6c 65 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 | t."/index.creole"))............( |
| 2d00 | 65 6c 6e 6f 64 65 2d 77 69 6b 69 2d 70 61 67 65 20 68 74 74 70 63 6f 6e 20 74 61 72 67 65 74 2d | elnode-wiki-page.httpcon.target- |
| 2d20 | 70 61 74 68 29 29 29 29 0a 20 20 20 20 28 50 4f 53 54 0a 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d | path)))).....(POST......(elnode- |
| 2d40 | 77 69 74 68 2d 61 75 74 68 20 68 74 74 70 63 6f 6e 20 27 65 6c 6e 6f 64 65 2d 77 69 6b 69 2d 61 | with-auth.httpcon.'elnode-wiki-a |
| 2d60 | 75 74 68 0a 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 70 61 74 68 20 28 65 6c 6e 6f 64 65 2d | uth........(let*.((path.(elnode- |
| 2d80 | 68 74 74 70 2d 70 61 74 68 69 6e 66 6f 20 68 74 74 70 63 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 | http-pathinfo.httpcon))......... |
| 2da0 | 20 20 20 20 20 20 28 74 65 78 74 20 28 65 6c 6e 6f 64 65 2d 77 69 6b 69 2d 2d 74 65 78 74 2d 70 | ......(text.(elnode-wiki--text-p |
| 2dc0 | 61 72 61 6d 20 68 74 74 70 63 6f 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6e 6f | aram.httpcon)))..........(if.(no |
| 2de0 | 74 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 70 61 72 61 6d 20 68 74 74 70 63 6f 6e 20 22 70 72 | t.(elnode-http-param.httpcon."pr |
| 2e00 | 65 76 69 65 77 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 41 20 73 61 76 65 20 | eview"))..............;;.A.save. |
| 2e20 | 72 65 71 75 65 73 74 20 69 6e 20 77 68 69 63 68 20 63 61 73 65 20 73 61 76 65 20 74 68 65 20 6e | request.in.which.case.save.the.n |
| 2e40 | 65 77 20 74 65 78 74 20 61 6e 64 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b | ew.text.and.then..............;; |
| 2e60 | 20 73 65 6e 64 20 74 68 65 20 77 69 6b 69 20 74 65 78 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20 | .send.the.wiki.text............. |
| 2e80 | 20 20 28 65 6c 6e 6f 64 65 2d 77 69 6b 69 2d 2d 73 61 76 65 2d 72 65 71 75 65 73 74 20 68 74 74 | ..(elnode-wiki--save-request.htt |
| 2ea0 | 70 63 6f 6e 20 77 69 6b 69 72 6f 6f 74 20 70 61 74 68 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 | pcon.wikiroot.path.text)........ |
| 2ec0 | 20 20 20 20 20 20 3b 3b 20 4d 69 67 68 74 20 62 65 20 61 20 70 72 65 76 69 65 77 20 72 65 71 75 | ......;;.Might.be.a.preview.requ |
| 2ee0 | 65 73 74 20 69 6e 20 77 68 69 63 68 20 63 61 73 65 20 73 65 6e 64 20 62 61 63 6b 20 74 68 65 20 | est.in.which.case.send.back.the. |
| 2f00 | 57 49 4b 49 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 74 65 78 74 20 74 68 61 74 27 73 | WIKI..............;;.text.that's |
| 2f20 | 20 62 65 65 6e 20 73 65 6e 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 74 | .been.sent...............(with-t |
| 2f40 | 65 6d 70 2d 66 69 6c 65 20 22 2f 74 6d 70 2f 70 72 65 76 69 65 77 22 0a 20 20 20 20 20 20 20 20 | emp-file."/tmp/preview"......... |
| 2f60 | 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 74 65 78 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 | .......(insert.text))........... |
| 2f80 | 20 20 20 28 65 6c 6e 6f 64 65 2d 77 69 6b 69 2d 73 65 6e 64 20 68 74 74 70 63 6f 6e 20 22 2f 74 | ...(elnode-wiki-send.httpcon."/t |
| 2fa0 | 6d 70 2f 70 72 65 76 69 65 77 22 20 70 61 74 68 29 29 29 29 29 29 29 0a 7d 7d 7d 0a 0a 49 74 20 | mp/preview".path))))))).}}}..It. |
| 2fc0 | 64 6f 65 73 20 6c 69 6e 6b 73 2c 20 66 6f 72 20 65 78 61 6d 70 6c 65 20 74 6f 0a 5b 5b 68 74 74 | does.links,.for.example.to.[[htt |
| 2fe0 | 70 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6e 69 63 66 65 72 72 69 65 72 2f 65 6c 77 69 6b 69 | p://github.com/nicferrier/elwiki |
| 3000 | 63 72 65 6f 6c 65 7c 45 6d 61 63 73 20 43 72 65 6f 6c 65 5d 5d 20 77 68 69 63 68 20 69 73 0a 74 | creole|Emacs.Creole]].which.is.t |
| 3020 | 68 65 20 57 69 6b 69 20 72 65 6e 64 65 72 20 65 6e 67 69 6e 65 20 75 73 65 64 20 74 6f 20 64 69 | he.Wiki.render.engine.used.to.di |
| 3040 | 73 70 6c 61 79 20 70 61 67 65 73 2e 0a 0a 49 74 20 64 6f 65 73 20 61 6c 6c 20 74 68 65 20 6e 6f | splay.pages...It.does.all.the.no |
| 3060 | 72 6d 61 6c 20 57 69 6b 69 20 74 68 69 6e 67 73 20 6c 69 6b 65 20 68 65 61 64 69 6e 67 73 20 61 | rmal.Wiki.things.like.headings.a |
| 3080 | 6e 64 20 6c 69 73 74 73 2e 0a 0a 59 6f 75 20 63 61 6e 20 61 6c 73 6f 20 64 6f 20 73 6f 6d 65 20 | nd.lists...You.can.also.do.some. |
| 30a0 | 73 70 65 63 69 61 6c 20 45 6d 61 63 73 20 74 68 69 6e 67 73 2c 20 6c 69 6b 65 20 6f 72 67 2d 6d | special.Emacs.things,.like.org-m |
| 30c0 | 6f 64 65 20 74 61 62 6c 65 73 3a 0a 0a 7c 20 20 20 20 20 20 20 44 61 74 65 20 7c 20 41 6d 6f 75 | ode.tables:..|.......Date.|.Amou |
| 30e0 | 6e 74 20 7c 20 44 65 73 63 72 69 70 74 69 6f 6e 20 20 20 20 20 20 20 20 20 7c 0a 7c 2d 2d 2d 2d | nt.|.Description.........|.|---- |
| 3100 | 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | --------+--------+-------------- |
| 3120 | 2d 2d 2d 2d 2d 2d 2d 7c 0a 7c 20 32 30 31 31 2d 31 31 2d 31 35 20 7c 20 31 30 30 2e 31 35 20 7c | -------|.|.2011-11-15.|.100.15.| |
| 3140 | 20 45 78 70 65 6e 73 69 76 65 20 6c 75 6e 63 68 20 6f 75 74 20 7c 0a 7c 20 32 30 31 31 2d 31 31 | .Expensive.lunch.out.|.|.2011-11 |
| 3160 | 2d 31 38 20 7c 20 20 20 37 2e 33 30 20 7c 20 44 72 79 20 63 6c 65 61 6e 69 6e 67 20 20 20 20 20 | -18.|...7.30.|.Dry.cleaning..... |
| 3180 | 20 20 20 7c 0a 7c 20 32 30 31 31 2d 31 31 2d 32 31 20 7c 20 20 32 32 2e 35 30 20 7c 20 54 61 6b | ...|.|.2011-11-21.|..22.50.|.Tak |
| 31a0 | 65 61 77 61 79 20 63 75 72 72 79 20 20 20 20 20 20 7c 0a 7c 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | eaway.curry......|.|------------ |
| 31c0 | 2b 2d 2d 2d 2d 2d 2d 2d 2d 2b 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 7c | +--------+---------------------| |
| 31e0 | 0a 7c 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 31 32 39 2e 39 35 20 7c 20 20 20 20 20 20 20 20 | .|............|.129.95.|........ |
| 3200 | 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 0a 23 2b 54 42 4c 46 4d 3a 20 40 35 24 32 3d 76 73 75 | .............|.#+TBLFM:.@5$2=vsu |
| 3220 | 6d 28 40 49 2e 2e 40 49 49 29 0a 0a 61 6e 64 20 6c 69 73 70 20 63 61 6c 6c 6f 75 74 73 3a 0a 0a | m(@I..@II)..and.lisp.callouts:.. |
| 3240 | 3c 3c 28 0a 20 28 6d 61 70 63 6f 6e 63 61 74 0a 20 20 20 28 6c 61 6d 62 64 61 20 28 73 29 0a 20 | <<(..(mapconcat....(lambda.(s).. |
| 3260 | 20 20 20 20 28 66 6f 72 6d 61 74 20 22 2a 20 25 73 22 20 73 29 29 0a 20 20 20 27 28 22 77 68 69 | ....(format."*.%s".s))....'("whi |
| 3280 | 63 68 22 20 22 65 76 61 6c 22 20 22 6c 69 73 70 22 20 22 61 6e 64 22 20 22 72 65 6e 64 65 72 22 | ch"."eval"."lisp"."and"."render" |
| 32a0 | 20 22 74 68 65 22 20 22 72 65 73 75 6c 74 73 22 29 0a 20 20 20 22 5c 6e 22 29 0a 29 3e 3e 0a 0a | ."the"."results")...."\n").)>>.. |
| 32c0 | 0a 3d 3d 20 41 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 3d 3d 0a 0a 42 79 20 64 65 66 61 75 6c | .==.Authentication.==..By.defaul |
| 32e0 | 74 2c 20 74 68 65 20 57 69 6b 69 20 75 73 65 73 20 61 6e 20 61 75 74 68 65 6e 74 69 63 61 74 69 | t,.the.Wiki.uses.an.authenticati |
| 3300 | 6f 6e 20 64 61 74 61 62 61 73 65 20 69 6e 20 74 68 65 20 45 6d 61 63 73 0a 69 6e 73 74 61 6e 63 | on.database.in.the.Emacs.instanc |
| 3320 | 65 20 72 75 6e 6e 69 6e 67 20 45 6c 6e 6f 64 65 20 61 6e 64 20 74 68 65 20 57 69 6b 69 20 73 65 | e.running.Elnode.and.the.Wiki.se |
| 3340 | 72 76 65 72 2e 0a 0a 49 66 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 61 64 64 20 61 20 75 73 65 72 | rver...If.you.want.to.add.a.user |
| 3360 | 20 74 6f 20 74 68 65 20 57 69 6b 69 20 73 6f 20 79 6f 75 20 63 61 6e 20 65 64 69 74 20 70 61 67 | .to.the.Wiki.so.you.can.edit.pag |
| 3380 | 65 73 20 79 6f 75 20 63 61 6e 20 64 6f 20 74 68 69 73 20 69 6e 20 45 6d 61 63 73 3a 0a 0a 7b 7b | es.you.can.do.this.in.Emacs:..{{ |
| 33a0 | 7b 0a 4d 2d 78 20 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 75 73 65 72 2d 61 64 64 0a 7d 7d 7d 0a 0a | {.M-x.elnode-auth-user-add.}}}.. |
| 33c0 | 61 6e 64 20 69 74 20 77 69 6c 6c 20 61 73 6b 20 79 6f 75 20 66 6f 72 20 61 20 75 73 65 72 6e 61 | and.it.will.ask.you.for.a.userna |
| 33e0 | 6d 65 20 61 6e 64 20 61 20 70 61 73 73 77 6f 72 64 2e 20 20 54 68 65 20 75 73 65 72 20 77 69 6c | me.and.a.password...The.user.wil |
| 3400 | 6c 20 62 65 0a 73 74 6f 72 65 64 20 69 6e 20 61 20 70 65 72 73 69 73 74 65 6e 74 20 64 61 74 61 | l.be.stored.in.a.persistent.data |
| 3420 | 62 61 73 65 2e 0a 0a 0a 3d 3d 20 57 68 65 72 65 20 74 68 65 20 57 69 6b 69 20 70 61 67 65 73 20 | base....==.Where.the.Wiki.pages. |
| 3440 | 61 72 65 20 3d 3d 0a 0a 42 79 20 64 65 66 61 75 6c 74 20 74 68 65 20 45 6c 6e 6f 64 65 20 57 69 | are.==..By.default.the.Elnode.Wi |
| 3460 | 6b 69 20 73 74 6f 72 65 73 20 66 69 6c 65 73 20 69 6e 20 79 6f 75 72 20 7b 7b 7b 7e 2f 2e 65 6d | ki.stores.files.in.your.{{{~/.em |
| 3480 | 61 63 73 2e 64 7d 7d 7d 0a 64 69 72 65 63 74 6f 72 79 20 77 68 69 63 68 20 69 73 20 61 63 74 75 | acs.d}}}.directory.which.is.actu |
| 34a0 | 61 6c 6c 79 20 64 65 66 69 6e 65 64 20 62 79 20 74 68 65 20 76 61 72 69 61 62 6c 65 0a 7b 7b 7b | ally.defined.by.the.variable.{{{ |
| 34c0 | 75 73 65 72 2d 65 6d 61 63 73 2d 64 69 72 65 63 74 6f 72 79 7d 7d 7d 20 69 6e 20 45 6d 61 63 73 | user-emacs-directory}}}.in.Emacs |
| 34e0 | 2e 0a 0a 54 68 65 72 65 20 69 73 20 6e 6f 72 6d 61 6c 6c 79 20 61 20 64 69 72 65 63 74 6f 72 79 | ...There.is.normally.a.directory |
| 3500 | 20 7b 7b 7b 65 6c 6e 6f 64 65 7d 7d 7d 20 69 6e 20 74 68 61 74 20 64 69 72 65 63 74 6f 72 79 20 | .{{{elnode}}}.in.that.directory. |
| 3520 | 77 68 69 63 68 0a 63 6f 6e 74 61 69 6e 73 20 64 69 72 65 63 74 6f 72 69 65 73 20 66 6f 72 20 74 | which.contains.directories.for.t |
| 3540 | 68 65 20 57 65 62 20 73 65 72 76 65 72 20 64 6f 63 75 6d 65 6e 74 20 72 6f 6f 74 20 61 6e 64 20 | he.Web.server.document.root.and. |
| 3560 | 74 68 65 20 57 69 6b 69 2e 0a 0a 54 68 65 20 6c 6f 63 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 57 | the.Wiki...The.location.of.the.W |
| 3580 | 69 6b 69 20 66 69 6c 65 73 20 63 61 6e 20 62 65 20 63 6f 6e 66 69 67 75 72 65 64 20 74 68 6f 75 | iki.files.can.be.configured.thou |
| 35a0 | 67 68 2c 20 74 72 79 3a 0a 0a 7b 7b 7b 0a 4d 2d 78 20 63 75 73 74 6f 6d 69 7a 65 2d 76 61 72 69 | gh,.try:..{{{.M-x.customize-vari |
| 35c0 | 61 62 6c 65 20 5b 52 45 54 5d 20 65 6c 6e 6f 64 65 2d 77 69 6b 69 73 65 72 76 65 72 2d 77 69 6b | able.[RET].elnode-wikiserver-wik |
| 35e0 | 69 72 6f 6f 74 0a 7d 7d 7d 0a 0a 3d 3d 20 4d 6f 72 65 20 63 75 73 74 6f 6d 69 7a 61 74 69 6f 6e | iroot.}}}..==.More.customization |
| 3600 | 20 3d 3d 0a 0a 54 68 65 72 65 20 61 72 65 20 6d 61 6e 79 20 6f 74 68 65 72 20 74 68 69 6e 67 73 | .==..There.are.many.other.things |
| 3620 | 20 69 6e 20 45 6c 6e 6f 64 65 27 73 20 57 69 6b 69 20 74 68 61 74 20 63 61 6e 20 62 65 20 63 75 | .in.Elnode's.Wiki.that.can.be.cu |
| 3640 | 73 74 6f 6d 69 7a 65 64 2c 0a 69 6e 63 6c 75 64 69 6e 67 20 74 68 65 20 68 65 61 64 65 72 20 61 | stomized,.including.the.header.a |
| 3660 | 6e 64 20 66 6f 6f 74 65 72 2e 20 55 73 65 3a 0a 0a 7b 7b 7b 0a 4d 2d 78 20 63 75 73 74 6f 6d 69 | nd.footer..Use:..{{{.M-x.customi |
| 3680 | 7a 65 2d 67 72 6f 75 70 20 5b 52 45 54 5d 20 65 6c 6e 6f 64 65 2d 77 69 6b 69 73 65 72 76 65 72 | ze-group.[RET].elnode-wikiserver |
| 36a0 | 20 5b 52 45 54 5d 0a 7d 7d 7d 0a 0a 54 68 65 72 65 20 69 73 20 6d 6f 72 65 20 74 6f 20 64 6f 20 | .[RET].}}}..There.is.more.to.do. |
| 36c0 | 77 69 74 68 20 74 68 65 20 45 6c 6e 6f 64 65 20 57 69 6b 69 20 73 65 72 76 65 72 20 62 65 63 61 | with.the.Elnode.Wiki.server.beca |
| 36e0 | 75 73 65 20 74 68 65 72 65 20 69 73 20 73 6f 0a 6d 75 63 68 20 74 68 61 74 20 45 6d 61 63 73 20 | use.there.is.so.much.that.Emacs. |
| 3700 | 63 61 6e 20 64 6f 2e 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | can.do.......................... |
| 3720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 37a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 37c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 37e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3800 | 65 6c 6e 6f 64 65 2d 32 30 31 39 30 37 30 32 2e 31 35 30 39 2f 65 6c 6e 6f 64 65 2d 6c 69 73 74 | elnode-20190702.1509/elnode-list |
| 3820 | 73 2e 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | s.el............................ |
| 3840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3860 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 | ....0000644.0000000.0000000.0000 |
| 3880 | 30 30 31 31 34 34 34 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 35 32 31 32 00 20 30 00 00 00 | 0011444.00000000000.015212..0... |
| 38a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 38c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 38e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3900 | 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...root................... |
| 3920 | 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........root................... |
| 3940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 39e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 3a00 | 3b 3b 3b 20 65 6c 6e 6f 64 65 2d 6c 69 73 74 73 2e 65 6c 20 2d 20 6d 61 6e 61 67 65 6d 65 6e 74 | ;;;.elnode-lists.el.-.management |
| 3a20 | 20 74 6f 6f 6c 73 20 66 6f 72 20 65 6c 6e 6f 64 65 0a 0a 28 72 65 71 75 69 72 65 20 27 65 6c 6e | .tools.for.elnode..(require.'eln |
| 3a40 | 6f 64 65 29 0a 28 72 65 71 75 69 72 65 20 27 74 61 62 75 6c 61 74 65 64 2d 6c 69 73 74 29 0a 28 | ode).(require.'tabulated-list).( |
| 3a60 | 72 65 71 75 69 72 65 20 27 6e 6f 66 6c 65 74 29 0a 0a 3b 3b 3b 20 44 65 66 65 72 72 65 64 20 71 | require.'noflet)..;;;.Deferred.q |
| 3a80 | 75 65 75 65 20 6c 69 73 74 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 6e | ueue.list..;;;###autoload.(defun |
| 3aa0 | 20 65 6c 6e 6f 64 65 2d 64 65 66 65 72 72 65 64 2d 71 75 65 75 65 20 28 61 72 67 29 0a 20 20 22 | .elnode-deferred-queue.(arg)..." |
| 3ac0 | 4d 65 73 73 61 67 65 20 74 68 65 20 6c 65 6e 67 74 68 20 6f 66 20 74 68 65 20 64 65 66 65 72 72 | Message.the.length.of.the.deferr |
| 3ae0 | 65 64 20 71 75 65 75 65 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 22 50 22 29 0a 20 | ed.queue."...(interactive."P").. |
| 3b00 | 20 28 69 66 20 28 6e 6f 74 20 61 72 67 29 0a 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 0a 20 20 | .(if.(not.arg).......(message... |
| 3b20 | 20 20 20 20 20 22 65 6c 6e 6f 64 65 20 64 65 66 65 72 72 65 64 20 71 75 65 75 65 3a 20 25 64 20 | ....."elnode.deferred.queue:.%d. |
| 3b40 | 25 73 22 0a 20 20 20 20 20 20 20 28 6c 65 6e 67 74 68 20 65 6c 6e 6f 64 65 2d 2d 64 65 66 65 72 | %s"........(length.elnode--defer |
| 3b60 | 72 65 64 29 0a 20 20 20 20 20 20 20 65 6c 6e 6f 64 65 2d 2d 64 65 66 65 72 2d 74 69 6d 65 72 29 | red)........elnode--defer-timer) |
| 3b80 | 0a 20 20 20 20 28 73 65 74 71 20 65 6c 6e 6f 64 65 2d 2d 64 65 66 65 72 72 65 64 20 28 6c 69 73 | .....(setq.elnode--deferred.(lis |
| 3ba0 | 74 29 29 0a 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 65 6c 6e 6f 64 65 20 64 65 66 65 72 72 65 | t)).....(message."elnode.deferre |
| 3bc0 | 64 20 71 75 65 75 65 20 72 65 73 65 74 21 22 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 | d.queue.reset!")))..(defun.elnod |
| 3be0 | 65 2d 2d 6c 69 73 74 2d 64 65 66 65 72 72 65 64 73 20 28 29 0a 20 20 22 4c 69 73 74 20 74 68 65 | e--list-deferreds.()..."List.the |
| 3c00 | 20 64 65 66 65 72 72 65 64 20 73 65 72 76 65 72 73 2e 22 0a 20 20 3b 3b 20 54 4f 44 4f 20 68 61 | .deferred.servers."...;;.TODO.ha |
| 3c20 | 76 65 20 74 68 65 20 64 65 66 65 72 20 73 74 75 66 66 20 70 75 74 20 61 20 62 65 74 74 65 72 20 | ve.the.defer.stuff.put.a.better. |
| 3c40 | 72 65 66 65 72 65 6e 63 65 20 74 6f 20 74 68 65 20 61 63 74 75 61 6c 0a 20 20 3b 3b 20 68 61 6e | reference.to.the.actual...;;.han |
| 3c60 | 64 6c 65 72 20 6f 6e 74 6f 20 74 68 65 20 70 72 6f 63 65 73 73 3f 0a 20 20 3b 3b 0a 20 20 3b 3b | dler.onto.the.process?...;;...;; |
| 3c80 | 20 77 65 20 63 6f 75 6c 64 20 68 61 76 65 20 74 68 65 20 6d 61 70 70 65 72 20 61 64 64 20 74 68 | .we.could.have.the.mapper.add.th |
| 3ca0 | 65 20 6d 61 70 70 65 64 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 74 68 65 20 70 72 6f 63 65 73 73 | e.mapped.function.to.the.process |
| 3cc0 | 20 61 73 20 77 65 6c 6c 3f 0a 20 20 3b 3b 0a 20 20 3b 3b 20 69 6e 74 6f 20 61 20 6c 69 73 74 20 | .as.well?...;;...;;.into.a.list. |
| 3ce0 | 6f 66 20 6d 61 70 70 65 64 20 66 75 6e 63 74 69 6f 6e 73 20 6f 6e 20 74 68 69 73 20 70 72 6f 63 | of.mapped.functions.on.this.proc |
| 3d00 | 65 73 73 3f 0a 20 20 28 6c 6f 6f 70 20 66 6f 72 20 28 70 72 6f 63 20 2e 20 64 65 66 65 72 72 65 | ess?...(loop.for.(proc...deferre |
| 3d20 | 64 2d 63 6c 6f 73 75 72 65 29 20 69 6e 20 65 6c 6e 6f 64 65 2d 2d 64 65 66 65 72 72 65 64 0a 20 | d-closure).in.elnode--deferred.. |
| 3d40 | 20 20 20 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 20 20 20 28 6c 69 73 74 0a 20 20 20 20 20 20 20 | ....collect........(list........ |
| 3d60 | 20 70 72 6f 63 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 70 6c 20 28 70 72 6f 63 65 73 73 | .proc.........(let.((pl.(process |
| 3d80 | 2d 70 6c 69 73 74 20 70 72 6f 63 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 76 65 63 74 6f 72 | -plist.proc)))...........(vector |
| 3da0 | 20 28 61 70 70 6c 79 20 27 66 6f 72 6d 61 74 20 22 25 73 3a 25 53 22 20 28 70 72 6f 63 65 73 73 | .(apply.'format."%s:%S".(process |
| 3dc0 | 2d 63 6f 6e 74 61 63 74 20 70 72 6f 63 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | -contact.proc))................. |
| 3de0 | 20 20 28 61 70 70 6c 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 66 6f 72 | ..(apply....................'for |
| 3e00 | 6d 61 74 20 22 25 73 2e 25 73 2e 25 73 2e 25 73 2e 3a 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 | mat."%s.%s.%s.%s.:%s"........... |
| 3e20 | 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 61 72 20 27 69 64 65 6e 74 69 74 79 20 28 70 72 6f 63 | .........(mapcar.'identity.(proc |
| 3e40 | 65 73 73 2d 63 6f 6e 74 61 63 74 20 70 72 6f 63 20 3a 6c 6f 63 61 6c 29 29 29 0a 20 20 20 20 20 | ess-contact.proc.:local)))...... |
| 3e60 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 28 70 6c 69 73 74 | .............(symbol-name.(plist |
| 3e80 | 2d 67 65 74 20 70 6c 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 68 61 6e 64 6c 65 72 29 29 0a 20 | -get.pl.:elnode-http-handler)).. |
| 3ea0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 70 6c 20 3a | .................(plist-get.pl.: |
| 3ec0 | 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 72 65 73 6f 75 72 63 65 29 29 29 29 29 29 0a 0a 28 64 65 66 | elnode-http-resource))))))..(def |
| 3ee0 | 69 6e 65 2d 64 65 72 69 76 65 64 2d 6d 6f 64 65 0a 20 20 20 20 65 6c 6e 6f 64 65 2d 64 65 66 65 | ine-derived-mode.....elnode-defe |
| 3f00 | 72 72 65 64 2d 6c 69 73 74 2d 6d 6f 64 65 20 74 61 62 75 6c 61 74 65 64 2d 6c 69 73 74 2d 6d 6f | rred-list-mode.tabulated-list-mo |
| 3f20 | 64 65 20 22 45 6c 6e 6f 64 65 20 64 65 66 65 72 65 64 20 71 75 65 75 65 20 6c 69 73 74 22 0a 20 | de."Elnode.defered.queue.list".. |
| 3f40 | 20 20 20 22 4d 61 6a 6f 72 20 6d 6f 64 65 20 66 6f 72 20 6c 69 73 74 69 6e 67 20 74 68 65 20 63 | ..."Major.mode.for.listing.the.c |
| 3f60 | 75 72 72 65 6e 74 6c 79 20 64 65 66 65 72 72 65 64 20 45 6c 6e 6f 64 65 20 68 61 6e 64 6c 65 72 | urrently.deferred.Elnode.handler |
| 3f80 | 73 2e 22 0a 20 20 20 20 28 73 65 74 71 20 74 61 62 75 6c 61 74 65 64 2d 6c 69 73 74 2d 65 6e 74 | s.".....(setq.tabulated-list-ent |
| 3fa0 | 72 69 65 73 20 27 65 6c 6e 6f 64 65 2d 2d 6c 69 73 74 2d 64 65 66 65 72 72 65 64 73 29 0a 20 20 | ries.'elnode--list-deferreds)... |
| 3fc0 | 20 20 28 73 65 74 71 20 74 61 62 75 6c 61 74 65 64 2d 6c 69 73 74 2d 66 6f 72 6d 61 74 0a 20 20 | ..(setq.tabulated-list-format... |
| 3fe0 | 20 20 20 20 20 20 20 20 5b 28 22 41 64 64 72 65 73 73 22 20 31 35 20 6e 69 6c 29 0a 20 20 20 20 | ........[("Address".15.nil)..... |
| 4000 | 20 20 20 20 20 20 20 28 22 4c 6f 63 61 6c 20 73 65 72 76 65 72 22 20 31 35 20 6e 69 6c 29 0a 20 | .......("Local.server".15.nil).. |
| 4020 | 20 20 20 20 20 20 20 20 20 20 28 22 48 61 6e 64 6c 65 72 20 66 75 6e 63 74 69 6f 6e 22 20 32 30 | ..........("Handler.function".20 |
| 4040 | 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 22 52 65 73 6f 75 72 63 65 22 20 33 30 20 | .nil)............("Resource".30. |
| 4060 | 6e 69 6c 29 5d 29 0a 20 20 20 20 28 74 61 62 75 6c 61 74 65 64 2d 6c 69 73 74 2d 69 6e 69 74 2d | nil)]).....(tabulated-list-init- |
| 4080 | 68 65 61 64 65 72 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 6e 20 | header))..;;;###autoload.(defun. |
| 40a0 | 65 6c 6e 6f 64 65 2d 64 65 66 65 72 72 65 64 2d 6c 69 73 74 20 28 26 6f 70 74 69 6f 6e 61 6c 20 | elnode-deferred-list.(&optional. |
| 40c0 | 70 72 65 66 69 78 29 0a 20 20 22 4c 69 73 74 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20 64 65 | prefix)..."List.the.currently.de |
| 40e0 | 66 65 72 72 65 64 20 45 6c 6e 6f 64 65 20 68 61 6e 64 6c 65 72 73 2e 22 0a 20 20 28 69 6e 74 65 | ferred.Elnode.handlers."...(inte |
| 4100 | 72 61 63 74 69 76 65 20 22 50 22 29 0a 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 | ractive."P")...(with-current-buf |
| 4120 | 66 65 72 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 20 22 2a 65 6c 6e 6f 64 65 20 | fer.(get-buffer-create."*elnode. |
| 4140 | 64 65 66 65 72 72 65 64 73 2a 22 29 0a 20 20 20 20 28 65 6c 6e 6f 64 65 2d 64 65 66 65 72 72 65 | deferreds*").....(elnode-deferre |
| 4160 | 64 2d 6c 69 73 74 2d 6d 6f 64 65 29 0a 20 20 20 20 28 74 61 62 75 6c 61 74 65 64 2d 6c 69 73 74 | d-list-mode).....(tabulated-list |
| 4180 | 2d 70 72 69 6e 74 29 0a 20 20 20 20 28 69 66 20 70 72 65 66 69 78 0a 20 20 20 20 20 20 20 20 28 | -print).....(if.prefix.........( |
| 41a0 | 73 77 69 74 63 68 2d 74 6f 2d 62 75 66 66 65 72 2d 6f 74 68 65 72 2d 77 69 6e 64 6f 77 20 28 63 | switch-to-buffer-other-window.(c |
| 41c0 | 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 20 20 20 28 73 77 69 74 63 68 2d | urrent-buffer)).........(switch- |
| 41e0 | 74 6f 2d 62 75 66 66 65 72 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 29 29 0a 0a | to-buffer.(current-buffer))))).. |
| 4200 | 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 61 6c 69 61 73 20 27 6c 69 73 74 2d 65 | ;;;###autoload.(defalias.'list-e |
| 4220 | 6c 6e 6f 64 65 2d 64 65 66 65 72 72 65 64 73 20 27 65 6c 6e 6f 64 65 2d 64 65 66 65 72 72 65 64 | lnode-deferreds.'elnode-deferred |
| 4240 | 2d 6c 69 73 74 29 0a 0a 3b 3b 3b 20 53 65 72 76 65 72 20 6c 69 73 74 0a 0a 28 64 65 66 75 6e 20 | -list)..;;;.Server.list..(defun. |
| 4260 | 65 6c 6e 6f 64 65 2d 2d 6c 69 73 74 2d 73 65 72 76 65 72 73 20 28 29 0a 20 20 22 4c 69 73 74 20 | elnode--list-servers.()..."List. |
| 4280 | 74 68 65 20 63 75 72 72 65 6e 74 20 45 6c 6e 6f 64 65 20 73 65 72 76 65 72 73 20 66 6f 72 20 60 | the.current.Elnode.servers.for.` |
| 42a0 | 65 6c 6e 6f 64 65 2d 6c 69 73 74 2d 6d 6f 64 65 27 2e 22 0a 20 20 28 6e 6f 66 6c 65 74 20 28 28 | elnode-list-mode'."...(noflet.(( |
| 42c0 | 63 6c 6f 73 75 72 65 70 20 28 76 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 66 75 | closurep.(v)............(and.(fu |
| 42e0 | 6e 63 74 69 6f 6e 70 20 76 29 20 28 6c 69 73 74 70 20 76 29 20 28 65 71 20 28 63 61 72 20 76 29 | nctionp.v).(listp.v).(eq.(car.v) |
| 4300 | 20 27 63 6c 6f 73 75 72 65 29 29 29 29 0a 20 20 20 20 28 6c 6f 6f 70 20 66 6f 72 20 28 70 6f 72 | .'closure)))).....(loop.for.(por |
| 4320 | 74 20 2e 20 73 6f 63 6b 65 74 2d 70 72 6f 63 29 20 69 6e 20 65 6c 6e 6f 64 65 2d 73 65 72 76 65 | t...socket-proc).in.elnode-serve |
| 4340 | 72 2d 73 6f 63 6b 65 74 0a 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 20 20 20 20 | r-socket........collect......... |
| 4360 | 20 28 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 70 6f 72 74 0a 20 20 20 20 20 20 20 20 20 20 | .(list...........port........... |
| 4380 | 28 6c 65 74 2a 20 28 28 66 6e 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 73 6f 63 6b 65 74 2d 70 | (let*.((fn.(process-get.socket-p |
| 43a0 | 72 6f 63 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 68 61 6e 64 6c 65 72 29 29 0a 20 20 20 20 20 | roc.:elnode-http-handler))...... |
| 43c0 | 20 20 20 20 20 20 20 20 20 20 20 20 28 64 6f 63 20 28 77 68 65 6e 20 28 66 75 6e 63 74 69 6f 6e | ............(doc.(when.(function |
| 43e0 | 70 20 66 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 | p.fn).........................(d |
| 4400 | 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 66 6e 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ocumentation.fn))))............. |
| 4420 | 28 76 65 63 74 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 25 73 | (vector..............(format."%s |
| 4440 | 22 20 70 6f 72 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 | ".port)..............(cond...... |
| 4460 | 20 20 20 20 20 20 20 20 20 20 28 28 63 6c 6f 73 75 72 65 70 20 66 6e 29 20 28 66 6f 72 6d 61 74 | ..........((closurep.fn).(format |
| 4480 | 20 22 25 53 22 20 66 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 62 79 74 65 | ."%S".fn))................((byte |
| 44a0 | 2d 63 6f 64 65 2d 66 75 6e 63 74 69 6f 6e 2d 70 20 66 6e 29 20 28 66 6f 72 6d 61 74 20 22 62 79 | -code-function-p.fn).(format."by |
| 44c0 | 74 65 2d 63 6f 64 65 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 61 6e 64 20 | te-code"))................((and. |
| 44e0 | 28 6c 69 73 74 70 20 66 6e 29 28 65 71 20 28 63 61 72 20 66 6e 29 20 27 6c 61 6d 62 64 61 29 29 | (listp.fn)(eq.(car.fn).'lambda)) |
| 4500 | 20 28 66 6f 72 6d 61 74 20 22 6c 61 6d 62 64 61 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | .(format."lambda"))............. |
| 4520 | 20 20 20 28 74 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 66 6e 29 29 29 0a 20 20 20 20 20 20 20 | ...(t.(symbol-name.fn)))........ |
| 4540 | 20 20 20 20 20 20 28 6f 72 20 28 69 66 20 28 61 6e 64 20 64 6f 63 20 28 73 74 72 69 6e 67 2d 6d | ......(or.(if.(and.doc.(string-m |
| 4560 | 61 74 63 68 20 22 5e 5c 5c 28 5b 5e 5c 6e 5d 2b 5c 5c 29 22 20 64 6f 63 29 29 0a 20 20 20 20 20 | atch."^\\([^\n]+\\)".doc))...... |
| 4580 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 | ................(match-string.1. |
| 45a0 | 64 6f 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 6e 6f 20 64 6f | doc)......................"no.do |
| 45c0 | 63 75 6d 65 6e 74 61 74 69 6f 6e 2e 22 29 29 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c | cumentation."))))))))..(defun.el |
| 45e0 | 6e 6f 64 65 2d 6c 69 73 74 73 2d 73 65 72 76 65 72 2d 66 69 6e 64 2d 68 61 6e 64 6c 65 72 20 28 | node-lists-server-find-handler.( |
| 4600 | 29 0a 20 20 22 46 69 6e 64 20 74 68 65 20 68 61 6e 64 6c 65 72 20 6d 65 6e 74 69 6f 6e 65 64 20 | )..."Find.the.handler.mentioned. |
| 4620 | 69 6e 20 74 68 65 20 68 61 6e 64 6c 65 72 20 6c 69 73 74 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 | in.the.handler.list."...(interac |
| 4640 | 74 69 76 65 29 0a 20 20 28 6c 65 74 20 28 28 6c 69 6e 65 0a 20 20 20 20 20 20 20 20 20 28 62 75 | tive)...(let.((line..........(bu |
| 4660 | 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 0a 20 20 20 | ffer-substring-no-properties.... |
| 4680 | 20 20 20 20 20 20 20 28 6c 69 6e 65 2d 62 65 67 69 6e 6e 69 6e 67 2d 70 6f 73 69 74 69 6f 6e 29 | .......(line-beginning-position) |
| 46a0 | 0a 20 20 20 20 20 20 20 20 20 20 28 6c 69 6e 65 2d 65 6e 64 2d 70 6f 73 69 74 69 6f 6e 29 29 29 | ...........(line-end-position))) |
| 46c0 | 29 0a 20 20 20 20 28 77 68 65 6e 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 5e 5b 30 2d 39 | ).....(when.(string-match."^[0-9 |
| 46e0 | 5d 2b 20 2b 5c 5c 28 5b 5e 20 5d 2b 5c 5c 29 20 2e 2a 22 20 6c 69 6e 65 29 0a 20 20 20 20 20 20 | ]+.+\\([^.]+\\)..*".line)....... |
| 4700 | 28 6c 65 74 20 28 28 68 61 6e 64 6c 65 72 2d 6e 61 6d 65 20 28 69 6e 74 65 72 6e 20 28 6d 61 74 | (let.((handler-name.(intern.(mat |
| 4720 | 63 68 2d 73 74 72 69 6e 67 20 31 20 6c 69 6e 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 77 69 | ch-string.1.line)))).........(wi |
| 4740 | 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 66 | th-current-buffer.............(f |
| 4760 | 69 6e 64 2d 66 69 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 73 79 6d 62 6f | ind-file..............(or.(symbo |
| 4780 | 6c 2d 66 69 6c 65 20 68 61 6e 64 6c 65 72 2d 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 | l-file.handler-name)............ |
| 47a0 | 20 20 20 20 20 20 28 65 72 72 6f 72 20 22 6e 6f 20 73 75 63 68 20 66 69 6c 65 22 29 29 29 0a 20 | ......(error."no.such.file"))).. |
| 47c0 | 20 20 20 20 20 20 20 20 20 28 66 69 6e 64 2d 66 75 6e 63 74 69 6f 6e 20 68 61 6e 64 6c 65 72 2d | .........(find-function.handler- |
| 47e0 | 6e 61 6d 65 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 6c 69 73 74 73 2d | name))))))..(defun.elnode-lists- |
| 4800 | 6b 69 6c 6c 2d 73 65 72 76 65 72 20 28 29 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 | kill-server.()...(interactive).. |
| 4820 | 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 6c 69 6e 65 2d 62 65 67 69 6e 6e 69 6e 67 2d 70 6f 73 69 | .(goto-char.(line-beginning-posi |
| 4840 | 74 69 6f 6e 29 29 0a 20 20 28 72 65 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 22 5e 5c 5c | tion))...(re-search-forward."^\\ |
| 4860 | 28 5b 30 2d 39 5d 2b 5c 5c 29 22 20 28 6c 69 6e 65 2d 65 6e 64 2d 70 6f 73 69 74 69 6f 6e 29 20 | ([0-9]+\\)".(line-end-position). |
| 4880 | 74 29 0a 20 20 28 6c 65 74 20 28 28 70 6f 72 74 20 28 73 74 72 69 6e 67 2d 74 6f 2d 6e 75 6d 62 | t)...(let.((port.(string-to-numb |
| 48a0 | 65 72 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 29 29 29 29 0a 20 20 20 20 28 65 6c 6e 6f | er.(match-string.1)))).....(elno |
| 48c0 | 64 65 2d 73 74 6f 70 20 70 6f 72 74 29 0a 20 20 20 20 28 6c 65 74 20 28 28 62 75 66 66 65 72 2d | de-stop.port).....(let.((buffer- |
| 48e0 | 72 65 61 64 2d 6f 6e 6c 79 20 6e 69 6c 29 29 0a 20 20 20 20 20 20 28 65 72 61 73 65 2d 62 75 66 | read-only.nil)).......(erase-buf |
| 4900 | 66 65 72 29 0a 20 20 20 20 20 20 28 74 61 62 75 6c 61 74 65 64 2d 6c 69 73 74 2d 70 72 69 6e 74 | fer).......(tabulated-list-print |
| 4920 | 29 29 29 29 0a 0a 28 64 65 66 69 6e 65 2d 64 65 72 69 76 65 64 2d 6d 6f 64 65 0a 20 20 20 20 65 | ))))..(define-derived-mode.....e |
| 4940 | 6c 6e 6f 64 65 2d 6c 69 73 74 2d 6d 6f 64 65 20 74 61 62 75 6c 61 74 65 64 2d 6c 69 73 74 2d 6d | lnode-list-mode.tabulated-list-m |
| 4960 | 6f 64 65 20 22 45 6c 6e 6f 64 65 20 73 65 72 76 65 72 20 6c 69 73 74 22 0a 20 20 20 20 22 4d 61 | ode."Elnode.server.list"....."Ma |
| 4980 | 6a 6f 72 20 6d 6f 64 65 20 66 6f 72 20 6c 69 73 74 69 6e 67 20 45 6c 6e 6f 64 65 20 73 65 72 76 | jor.mode.for.listing.Elnode.serv |
| 49a0 | 65 72 73 20 63 75 72 72 65 6e 74 6c 79 20 72 75 6e 6e 69 6e 67 2e 22 0a 20 20 20 20 28 73 65 74 | ers.currently.running.".....(set |
| 49c0 | 71 20 74 61 62 75 6c 61 74 65 64 2d 6c 69 73 74 2d 65 6e 74 72 69 65 73 20 27 65 6c 6e 6f 64 65 | q.tabulated-list-entries.'elnode |
| 49e0 | 2d 2d 6c 69 73 74 2d 73 65 72 76 65 72 73 29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 | --list-servers).....(define-key. |
| 4a00 | 65 6c 6e 6f 64 65 2d 6c 69 73 74 2d 6d 6f 64 65 2d 6d 61 70 20 28 6b 62 64 20 22 5c 72 22 29 0a | elnode-list-mode-map.(kbd."\r"). |
| 4a20 | 20 20 20 20 20 20 27 65 6c 6e 6f 64 65 2d 6c 69 73 74 73 2d 73 65 72 76 65 72 2d 66 69 6e 64 2d | ......'elnode-lists-server-find- |
| 4a40 | 68 61 6e 64 6c 65 72 29 0a 20 20 20 20 28 64 65 66 69 6e 65 2d 6b 65 79 20 65 6c 6e 6f 64 65 2d | handler).....(define-key.elnode- |
| 4a60 | 6c 69 73 74 2d 6d 6f 64 65 2d 6d 61 70 20 28 6b 62 64 20 22 6b 22 29 0a 20 20 20 20 20 20 27 65 | list-mode-map.(kbd."k").......'e |
| 4a80 | 6c 6e 6f 64 65 2d 6c 69 73 74 73 2d 6b 69 6c 6c 2d 73 65 72 76 65 72 29 0a 20 20 20 20 28 73 65 | lnode-lists-kill-server).....(se |
| 4aa0 | 74 71 20 74 61 62 75 6c 61 74 65 64 2d 6c 69 73 74 2d 66 6f 72 6d 61 74 0a 20 20 20 20 20 20 20 | tq.tabulated-list-format........ |
| 4ac0 | 20 20 20 5b 28 22 50 6f 72 74 22 20 31 30 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 | ...[("Port".10.nil)............( |
| 4ae0 | 22 48 61 6e 64 6c 65 72 20 66 75 6e 63 74 69 6f 6e 22 20 34 30 20 6e 69 6c 29 0a 20 20 20 20 20 | "Handler.function".40.nil)...... |
| 4b00 | 20 20 20 20 20 20 28 22 44 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 22 20 38 30 20 6e 69 6c 29 5d 29 | ......("Documentation".80.nil)]) |
| 4b20 | 0a 20 20 20 20 28 74 61 62 75 6c 61 74 65 64 2d 6c 69 73 74 2d 69 6e 69 74 2d 68 65 61 64 65 72 | .....(tabulated-list-init-header |
| 4b40 | 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 | ))..;;;###autoload.(defun.elnode |
| 4b60 | 2d 73 65 72 76 65 72 2d 6c 69 73 74 20 28 26 6f 70 74 69 6f 6e 61 6c 20 70 72 65 66 69 78 29 0a | -server-list.(&optional.prefix). |
| 4b80 | 20 20 22 4c 69 73 74 20 74 68 65 20 63 75 72 72 65 6e 74 6c 79 20 72 75 6e 6e 69 6e 67 20 45 6c | .."List.the.currently.running.El |
| 4ba0 | 6e 6f 64 65 20 73 65 72 76 65 72 73 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 20 22 50 | node.servers."...(interactive."P |
| 4bc0 | 22 29 0a 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 | ")...(with-current-buffer.(get-b |
| 4be0 | 75 66 66 65 72 2d 63 72 65 61 74 65 20 22 2a 65 6c 6e 6f 64 65 20 73 65 72 76 65 72 73 2a 22 29 | uffer-create."*elnode.servers*") |
| 4c00 | 0a 20 20 20 20 28 65 6c 6e 6f 64 65 2d 6c 69 73 74 2d 6d 6f 64 65 29 0a 20 20 20 20 28 74 61 62 | .....(elnode-list-mode).....(tab |
| 4c20 | 75 6c 61 74 65 64 2d 6c 69 73 74 2d 70 72 69 6e 74 29 0a 20 20 20 20 28 69 66 20 70 72 65 66 69 | ulated-list-print).....(if.prefi |
| 4c40 | 78 0a 20 20 20 20 20 20 20 20 28 73 77 69 74 63 68 2d 74 6f 2d 62 75 66 66 65 72 2d 6f 74 68 65 | x.........(switch-to-buffer-othe |
| 4c60 | 72 2d 77 69 6e 64 6f 77 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 0a 20 20 20 20 20 | r-window.(current-buffer))...... |
| 4c80 | 20 20 20 28 73 77 69 74 63 68 2d 74 6f 2d 62 75 66 66 65 72 20 28 63 75 72 72 65 6e 74 2d 62 75 | ...(switch-to-buffer.(current-bu |
| 4ca0 | 66 66 65 72 29 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 61 6c | ffer)))))..;;;###autoload.(defal |
| 4cc0 | 69 61 73 20 27 6c 69 73 74 2d 65 6c 6e 6f 64 65 2d 73 65 72 76 65 72 73 20 27 65 6c 6e 6f 64 65 | ias.'list-elnode-servers.'elnode |
| 4ce0 | 2d 73 65 72 76 65 72 2d 6c 69 73 74 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 65 6c 6e 6f 64 65 2d | -server-list)..(provide.'elnode- |
| 4d00 | 6c 69 73 74 29 0a 0a 3b 3b 3b 20 65 6e 6c 6f 64 65 2d 6c 69 73 74 2e 65 6c 20 65 6e 64 73 20 68 | list)..;;;.enlode-list.el.ends.h |
| 4d20 | 65 72 65 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ere............................. |
| 4d40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4d60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4e00 | 65 6c 6e 6f 64 65 2d 32 30 31 39 30 37 30 32 2e 31 35 30 39 2f 65 6c 6e 6f 64 65 2d 6c 6f 67 2d | elnode-20190702.1509/elnode-log- |
| 4e20 | 6d 6f 64 65 2e 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | mode.el......................... |
| 4e40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4e60 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 | ....0000644.0000000.0000000.0000 |
| 4e80 | 30 30 30 31 34 33 31 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 35 35 35 32 00 20 30 00 00 00 | 0001431.00000000000.015552..0... |
| 4ea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4ec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4ee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4f00 | 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...root................... |
| 4f20 | 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........root................... |
| 4f40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4f60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4f80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4fa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4fc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 4fe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5000 | 3b 3b 3b 20 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 6d 6f 64 65 2e 65 6c 20 2d 20 76 69 65 77 20 65 6c | ;;;.elnode-log-mode.el.-.view.el |
| 5020 | 6e 6f 64 65 20 6c 6f 67 20 66 69 6c 65 73 20 6e 69 63 65 6c 79 0a 0a 3b 3b 3b 23 23 23 61 75 74 | node.log.files.nicely..;;;###aut |
| 5040 | 6f 6c 6f 61 64 0a 28 64 65 66 69 6e 65 2d 67 65 6e 65 72 69 63 2d 6d 6f 64 65 20 27 65 6c 6e 6f | oload.(define-generic-mode.'elno |
| 5060 | 64 65 2d 6c 6f 67 2d 6d 6f 64 65 0a 20 20 6e 69 6c 20 3b 20 63 6f 6d 6d 65 6e 74 73 0a 20 20 6e | de-log-mode...nil.;.comments...n |
| 5080 | 69 6c 3b 20 6b 65 79 77 6f 72 64 73 0a 20 20 60 28 28 22 5e 5c 5c 28 5b 30 2d 39 3a 2d 5d 2b 5c | il;.keywords...`(("^\\([0-9:-]+\ |
| 50a0 | 5c 29 20 2e 2a 22 20 31 20 27 28 66 61 63 65 20 27 28 69 74 61 6c 69 63 20 28 3a 66 6f 72 65 67 | \)..*".1.'(face.'(italic.(:foreg |
| 50c0 | 72 6f 75 6e 64 20 22 62 6c 75 65 22 29 29 29 29 0a 20 20 20 20 28 22 5e 5b 30 2d 39 3a 2d 5d 2b | round."blue")))).....("^[0-9:-]+ |
| 50e0 | 20 5c 5c 28 5b 33 32 5d 5b 30 2d 39 5d 5c 5c 7b 32 5c 5c 7d 5c 5c 29 20 2e 2a 22 20 31 20 27 28 | .\\([32][0-9]\\{2\\}\\)..*".1.'( |
| 5100 | 66 61 63 65 20 27 28 3a 66 6f 72 65 67 72 6f 75 6e 64 20 22 67 72 65 65 6e 22 29 29 29 0a 20 20 | face.'(:foreground."green")))... |
| 5120 | 20 20 28 22 5e 5b 30 2d 39 3a 2d 5d 2b 20 5c 5c 28 34 5b 30 2d 39 5d 5c 5c 7b 32 5c 5c 7d 5c 5c | ..("^[0-9:-]+.\\(4[0-9]\\{2\\}\\ |
| 5140 | 29 20 2e 2a 22 20 31 20 27 28 66 61 63 65 20 27 28 3a 66 6f 72 65 67 72 6f 75 6e 64 20 22 79 65 | )..*".1.'(face.'(:foreground."ye |
| 5160 | 6c 6c 6f 77 22 29 29 29 0a 20 20 20 20 28 22 5e 5b 30 2d 39 3a 2d 5d 2b 20 5c 5c 28 35 5b 30 2d | llow"))).....("^[0-9:-]+.\\(5[0- |
| 5180 | 39 5d 5c 5c 7b 32 5c 5c 7d 5c 5c 29 20 2e 2a 22 20 31 20 27 28 66 61 63 65 20 27 28 3a 66 6f 72 | 9]\\{2\\}\\)..*".1.'(face.'(:for |
| 51a0 | 65 67 72 6f 75 6e 64 20 22 72 65 64 22 29 29 29 0a 20 20 20 20 28 22 5e 2e 2a 20 5c 5c 28 47 45 | eground."red"))).....("^.*.\\(GE |
| 51c0 | 54 5c 5c 7c 50 4f 53 54 5c 5c 7c 48 45 41 44 5c 5c 7c 44 45 4c 45 54 45 5c 5c 7c 54 52 41 43 45 | T\\|POST\\|HEAD\\|DELETE\\|TRACE |
| 51e0 | 5c 5c 29 22 20 31 20 27 28 66 61 63 65 20 27 28 62 6f 6c 64 20 28 3a 66 6f 72 65 67 72 6f 75 6e | \\)".1.'(face.'(bold.(:foregroun |
| 5200 | 64 20 22 70 75 72 70 6c 65 22 29 29 29 29 29 20 3b 20 66 6f 6e 74 2d 6c 6f 63 6b 20 6c 69 73 74 | d."purple"))))).;.font-lock.list |
| 5220 | 0a 20 20 6e 69 6c 0a 20 20 27 28 28 6c 61 6d 62 64 61 20 28 29 0a 20 20 20 20 20 20 3b 3b 28 75 | ...nil...'((lambda.().......;;(u |
| 5240 | 73 65 2d 6c 6f 63 61 6c 2d 6d 61 70 20 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 6d 6f 64 65 2d 6d 61 70 | se-local-map.elnode-log-mode-map |
| 5260 | 29 0a 20 20 20 20 20 20 28 73 65 74 71 20 62 75 66 66 65 72 2d 72 65 61 64 2d 6f 6e 6c 79 20 27 | ).......(setq.buffer-read-only.' |
| 5280 | 74 29 0a 20 20 20 20 20 20 28 73 65 74 2d 62 75 66 66 65 72 2d 6d 6f 64 69 66 69 65 64 2d 70 20 | t).......(set-buffer-modified-p. |
| 52a0 | 6e 69 6c 29 0a 20 20 20 20 20 20 29 29 0a 20 20 22 45 6c 6e 6f 64 65 20 6c 6f 67 20 76 69 65 77 | nil).......))..."Elnode.log.view |
| 52c0 | 69 6e 67 20 6d 6f 64 65 2e 0a 0a 46 6f 72 20 76 69 65 77 69 6e 67 20 61 63 63 65 73 73 20 6c 6f | ing.mode...For.viewing.access.lo |
| 52e0 | 67 20 66 69 6c 65 73 20 66 72 6f 6d 20 45 6c 6e 6f 64 65 2e 22 29 0a 0a 3b 3b 3b 20 65 6c 6e 6f | g.files.from.Elnode.")..;;;.elno |
| 5300 | 64 65 2d 6c 6f 67 2d 6d 6f 64 65 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 00 00 00 00 00 00 | de-log-mode.el.ends.here........ |
| 5320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 53a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 53c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 53e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5400 | 65 6c 6e 6f 64 65 2d 32 30 31 39 30 37 30 32 2e 31 35 30 39 2f 65 6c 6e 6f 64 65 2d 70 6b 67 2e | elnode-20190702.1509/elnode-pkg. |
| 5420 | 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | el.............................. |
| 5440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5460 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 | ....0000644.0000000.0000000.0000 |
| 5480 | 30 30 30 30 37 37 34 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 36 34 31 00 20 30 00 00 00 | 0000774.00000000000.014641..0... |
| 54a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 54c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 54e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5500 | 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...root................... |
| 5520 | 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........root................... |
| 5540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 55a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 55c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 55e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5600 | 3b 3b 20 2d 2a 2d 20 6e 6f 2d 62 79 74 65 2d 63 6f 6d 70 69 6c 65 3a 20 74 3b 20 6c 65 78 69 63 | ;;.-*-.no-byte-compile:.t;.lexic |
| 5620 | 61 6c 2d 62 69 6e 64 69 6e 67 3a 20 6e 69 6c 20 2d 2a 2d 0a 28 64 65 66 69 6e 65 2d 70 61 63 6b | al-binding:.nil.-*-.(define-pack |
| 5640 | 61 67 65 20 22 65 6c 6e 6f 64 65 22 20 22 32 30 31 39 30 37 30 32 2e 31 35 30 39 22 0a 20 20 22 | age."elnode"."20190702.1509"..." |
| 5660 | 54 68 65 20 45 6d 61 63 73 20 77 65 62 73 65 72 76 65 72 2e 22 0a 20 20 27 28 28 77 65 62 20 20 | The.Emacs.webserver."...'((web.. |
| 5680 | 20 20 22 30 2e 31 2e 34 22 29 0a 20 20 20 20 28 64 61 73 68 20 20 20 22 31 2e 31 2e 30 22 29 0a | .."0.1.4").....(dash..."1.1.0"). |
| 56a0 | 20 20 20 20 28 6e 6f 66 6c 65 74 20 22 30 2e 30 2e 37 22 29 0a 20 20 20 20 28 73 20 20 20 20 20 | ....(noflet."0.0.7").....(s..... |
| 56c0 | 20 22 31 2e 35 2e 30 22 29 0a 20 20 20 20 28 63 72 65 6f 6c 65 20 22 30 2e 38 2e 31 34 22 29 0a | ."1.5.0").....(creole."0.8.14"). |
| 56e0 | 20 20 20 20 28 66 61 6b 69 72 20 20 22 30 2e 31 2e 36 22 29 0a 20 20 20 20 28 64 62 20 20 20 20 | ....(fakir.."0.1.6").....(db.... |
| 5700 | 20 22 30 2e 30 2e 35 22 29 0a 20 20 20 20 28 6b 76 20 20 20 20 20 22 30 2e 30 2e 31 37 22 29 29 | ."0.0.5").....(kv....."0.0.17")) |
| 5720 | 0a 20 20 3a 75 72 6c 20 22 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6a 63 61 77 | ...:url."https://github.com/jcaw |
| 5740 | 2f 65 6c 6e 6f 64 65 22 0a 20 20 3a 63 6f 6d 6d 69 74 20 22 32 39 65 66 30 66 35 31 61 36 35 61 | /elnode"...:commit."29ef0f51a65a |
| 5760 | 32 34 66 63 61 37 66 64 63 64 62 34 31 34 30 64 32 65 34 35 35 36 65 34 62 62 32 39 22 0a 20 20 | 24fca7fdcdb4140d2e4556e4bb29"... |
| 5780 | 3a 72 65 76 64 65 73 63 20 22 32 39 65 66 30 66 35 31 61 36 35 61 22 0a 20 20 3a 6b 65 79 77 6f | :revdesc."29ef0f51a65a"...:keywo |
| 57a0 | 72 64 73 20 27 28 22 6c 69 73 70 22 20 22 68 74 74 70 22 20 22 68 79 70 65 72 6d 65 64 69 61 22 | rds.'("lisp"."http"."hypermedia" |
| 57c0 | 29 0a 20 20 3a 61 75 74 68 6f 72 73 20 27 28 28 22 4e 69 63 20 46 65 72 72 69 65 72 22 20 2e 20 | )...:authors.'(("Nic.Ferrier"... |
| 57e0 | 22 6e 66 65 72 72 69 65 72 40 66 65 72 72 69 65 72 2e 6d 65 2e 75 6b 22 29 29 29 0a 00 00 00 00 | "nferrier@ferrier.me.uk")))..... |
| 5800 | 65 6c 6e 6f 64 65 2d 32 30 31 39 30 37 30 32 2e 31 35 30 39 2f 65 6c 6e 6f 64 65 2d 70 72 6f 78 | elnode-20190702.1509/elnode-prox |
| 5820 | 79 2e 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | y.el............................ |
| 5840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5860 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 | ....0000644.0000000.0000000.0000 |
| 5880 | 30 30 32 32 31 33 36 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 35 32 33 35 00 20 30 00 00 00 | 0022136.00000000000.015235..0... |
| 58a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 58c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 58e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5900 | 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...root................... |
| 5920 | 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........root................... |
| 5940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 59a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 59c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 59e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 5a00 | 3b 3b 3b 20 65 6c 6e 6f 64 65 2d 70 72 6f 78 79 2e 65 6c 20 2d 2d 20 70 72 6f 78 79 69 6e 67 20 | ;;;.elnode-proxy.el.--.proxying. |
| 5a20 | 77 69 74 68 20 65 6c 6e 6f 64 65 20 2d 2a 2d 20 6c 65 78 69 63 61 6c 2d 62 69 6e 64 69 6e 67 3a | with.elnode.-*-.lexical-binding: |
| 5a40 | 20 74 20 2d 2a 2d 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 0a 3b 3b 20 54 68 69 73 | .t.-*-..;;;.Commentary:..;;.This |
| 5a60 | 20 69 73 20 73 74 75 66 66 20 74 6f 20 6c 65 74 20 79 6f 75 20 6d 61 6b 65 20 70 72 6f 78 79 20 | .is.stuff.to.let.you.make.proxy. |
| 5a80 | 73 65 72 76 65 72 73 20 77 69 74 68 20 45 6c 6e 6f 64 65 2e 0a 0a 0a 3b 3b 3b 20 43 6f 64 65 3a | servers.with.Elnode....;;;.Code: |
| 5aa0 | 0a 0a 28 72 65 71 75 69 72 65 20 27 73 29 0a 28 72 65 71 75 69 72 65 20 27 64 61 73 68 29 0a 28 | ..(require.'s).(require.'dash).( |
| 5ac0 | 72 65 71 75 69 72 65 20 27 77 65 62 29 0a 28 72 65 71 75 69 72 65 20 27 65 6c 6e 6f 64 65 29 0a | require.'web).(require.'elnode). |
| 5ae0 | 28 72 65 71 75 69 72 65 20 27 6b 76 29 0a 28 72 65 71 75 69 72 65 20 27 63 6c 29 20 3b 20 66 6f | (require.'kv).(require.'cl).;.fo |
| 5b00 | 72 20 64 65 73 74 72 75 63 74 75 72 69 6e 67 2d 62 69 6e 64 0a 0a 28 64 65 66 75 6e 20 65 6c 6e | r.destructuring-bind..(defun.eln |
| 5b20 | 6f 64 65 2d 2d 77 65 62 2d 3e 65 6c 6e 6f 64 65 2d 68 64 72 20 28 68 64 72 20 68 74 74 70 63 6f | ode--web->elnode-hdr.(hdr.httpco |
| 5b40 | 6e 29 0a 20 20 22 53 65 6e 64 20 74 68 65 20 48 44 52 20 66 72 6f 6d 20 74 68 65 20 77 65 62 20 | n)..."Send.the.HDR.from.the.web. |
| 5b60 | 48 54 54 50 20 72 65 71 75 65 73 74 20 74 6f 20 45 6c 6e 6f 64 65 27 73 20 48 54 54 50 43 4f 4e | HTTP.request.to.Elnode's.HTTPCON |
| 5b80 | 2e 22 0a 20 20 28 6c 65 74 20 28 28 68 65 61 64 65 72 73 0a 20 20 20 20 20 20 20 20 20 28 2d 66 | ."...(let.((headers..........(-f |
| 5ba0 | 69 6c 74 65 72 0a 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 68 64 72 2d 70 61 69 | ilter...........(lambda.(hdr-pai |
| 5bc0 | 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 6d 65 6d 62 65 72 0a 20 | r).............(unless.(member.. |
| 5be0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 6f 77 6e 63 61 73 65 20 28 73 | ....................(downcase.(s |
| 5c00 | 79 6d 62 6f 6c 2d 6e 61 6d 65 20 28 63 61 72 20 68 64 72 2d 70 61 69 72 29 29 29 0a 20 20 20 20 | ymbol-name.(car.hdr-pair)))..... |
| 5c20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 22 73 74 61 74 75 73 2d 63 6f 64 65 22 | .................'("status-code" |
| 5c40 | 20 22 73 74 61 74 75 73 2d 73 74 72 69 6e 67 22 20 22 73 74 61 74 75 73 2d 76 65 72 73 69 6f 6e | ."status-string"."status-version |
| 5c60 | 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 28 73 79 6d 62 6f 6c 2d | "))...............(cons.(symbol- |
| 5c80 | 6e 61 6d 65 20 28 63 61 72 20 68 64 72 2d 70 61 69 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 | name.(car.hdr-pair))............ |
| 5ca0 | 20 20 20 20 20 20 20 20 20 28 63 64 72 20 68 64 72 2d 70 61 69 72 29 29 29 29 0a 20 20 20 20 20 | .........(cdr.hdr-pair))))...... |
| 5cc0 | 20 20 20 20 20 28 6b 76 68 61 73 68 2d 3e 61 6c 69 73 74 20 68 64 72 29 29 29 29 0a 20 20 20 20 | .....(kvhash->alist.hdr))))..... |
| 5ce0 | 28 61 70 70 6c 79 20 27 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 74 61 72 74 20 20 68 74 74 70 63 | (apply.'elnode-http-start..httpc |
| 5d00 | 6f 6e 20 32 30 30 20 68 65 61 64 65 72 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 | on.200.headers)))..(defun.elnode |
| 5d20 | 2d 2d 70 72 6f 78 79 2d 78 2d 66 6f 72 77 61 72 64 65 64 2d 66 6f 72 20 28 68 74 74 70 63 6f 6e | --proxy-x-forwarded-for.(httpcon |
| 5d40 | 29 0a 20 20 22 52 65 74 75 72 6e 20 61 6e 20 58 2d 46 6f 72 77 61 64 65 64 2d 46 6f 72 20 68 65 | )..."Return.an.X-Forwaded-For.he |
| 5d60 | 61 64 65 72 2e 22 0a 20 20 28 6c 65 74 20 28 28 69 70 61 64 64 72 20 28 65 6c 6e 6f 64 65 2d 67 | ader."...(let.((ipaddr.(elnode-g |
| 5d80 | 65 74 2d 72 65 6d 6f 74 65 2d 69 70 61 64 64 72 20 68 74 74 70 63 6f 6e 29 29 0a 20 20 20 20 20 | et-remote-ipaddr.httpcon))...... |
| 5da0 | 20 20 20 28 68 64 72 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 68 65 61 64 65 72 20 68 74 74 70 | ...(hdr.(elnode-http-header.http |
| 5dc0 | 63 6f 6e 20 22 58 2d 46 6f 72 77 61 72 64 65 64 2d 46 6f 72 22 29 29 29 0a 20 20 20 20 28 69 66 | con."X-Forwarded-For"))).....(if |
| 5de0 | 20 68 64 72 0a 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 68 64 72 20 28 66 6f 72 6d 61 74 | .hdr.........(concat.hdr.(format |
| 5e00 | 20 22 2c 20 25 73 22 20 69 70 61 64 64 72 29 29 0a 20 20 20 20 20 20 20 20 69 70 61 64 64 72 29 | .",.%s".ipaddr)).........ipaddr) |
| 5e20 | 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 70 72 6f 78 79 2d 64 6f 20 28 68 74 74 70 | ))..(defun.elnode-proxy-do.(http |
| 5e40 | 63 6f 6e 20 75 72 6c 29 0a 20 20 22 44 6f 20 70 72 6f 78 79 69 6e 67 20 74 6f 20 55 52 4c 20 6f | con.url)..."Do.proxying.to.URL.o |
| 5e60 | 6e 20 48 54 54 50 43 4f 4e 2e 0a 0a 41 20 72 65 71 75 65 73 74 20 69 73 20 6d 61 64 65 20 74 6f | n.HTTPCON...A.request.is.made.to |
| 5e80 | 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 55 52 4c 2e 20 20 54 68 65 20 55 52 4c 20 6d 61 79 | .the.specified.URL...The.URL.may |
| 5ea0 | 20 69 6e 63 6c 75 64 65 0a 60 73 2d 66 6f 72 6d 61 74 27 20 70 61 74 74 65 72 6e 73 20 66 6f 72 | .include.`s-format'.patterns.for |
| 5ec0 | 20 69 6e 74 65 72 70 6f 6c 61 74 69 6f 6e 20 77 69 74 68 20 61 6e 79 20 6f 66 20 74 68 65 73 65 | .interpolation.with.any.of.these |
| 5ee0 | 0a 76 61 72 69 61 62 6c 65 73 3a 0a 0a 20 70 61 74 68 20 2d 20 74 68 65 20 70 61 74 68 20 66 72 | .variables:...path.-.the.path.fr |
| 5f00 | 6f 6d 20 74 68 65 20 48 54 54 50 43 4f 4e 0a 20 70 61 72 61 6d 73 20 2d 20 74 68 65 20 70 61 72 | om.the.HTTPCON..params.-.the.par |
| 5f20 | 61 6d 73 20 66 72 6f 6d 20 74 68 65 20 48 54 54 50 43 4f 4e 0a 20 71 75 65 72 79 20 2d 20 74 68 | ams.from.the.HTTPCON..query.-.th |
| 5f40 | 65 20 70 61 72 61 6d 73 20 66 72 6f 6d 20 74 68 65 20 48 54 54 50 43 4f 4e 20 61 73 20 61 20 71 | e.params.from.the.HTTPCON.as.a.q |
| 5f60 | 75 65 72 79 0a 0a 46 6f 72 20 65 78 61 6d 70 6c 65 2c 20 5c 22 68 74 74 70 3a 2f 2f 6d 79 73 65 | uery..For.example,.\"http://myse |
| 5f80 | 72 76 65 72 3a 38 30 30 30 24 7b 70 61 74 68 7d 24 7b 71 75 65 72 79 7d 5c 22 20 77 6f 75 6c 64 | rver:8000${path}${query}\".would |
| 5fa0 | 20 63 61 75 73 65 0a 5c 22 6d 79 73 65 72 76 65 72 5c 22 20 6f 6e 20 70 6f 72 74 20 38 30 30 30 | .cause.\"myserver\".on.port.8000 |
| 5fc0 | 20 74 6f 20 67 65 74 20 74 68 65 20 71 75 65 72 79 20 66 72 6f 6d 20 74 68 65 20 75 73 65 72 20 | .to.get.the.query.from.the.user. |
| 5fe0 | 77 69 74 68 20 74 68 65 0a 73 70 65 63 69 66 69 65 64 20 70 61 74 68 20 61 6e 64 20 71 75 65 72 | with.the.specified.path.and.quer |
| 6000 | 79 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 6d 65 74 68 6f 64 20 28 65 6c 6e 6f 64 65 2d 68 74 74 | y."...(let*.((method.(elnode-htt |
| 6020 | 70 2d 6d 65 74 68 6f 64 20 68 74 74 70 63 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 28 70 61 74 | p-method.httpcon))..........(pat |
| 6040 | 68 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 70 61 74 68 69 6e 66 6f 20 68 74 74 70 63 6f 6e 29 | h.(elnode-http-pathinfo.httpcon) |
| 6060 | 29 0a 20 20 20 20 20 20 20 20 20 28 70 61 72 61 6d 73 20 28 77 65 62 2d 74 6f 2d 71 75 65 72 79 | )..........(params.(web-to-query |
| 6080 | 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 | -string...................(elnod |
| 60a0 | 65 2d 68 74 74 70 2d 70 61 72 61 6d 73 20 68 74 74 70 63 6f 6e 29 29 29 0a 20 20 20 20 20 20 20 | e-http-params.httpcon)))........ |
| 60c0 | 20 20 28 70 61 72 61 6d 73 2d 61 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 0a | ..(params-alist...........(list. |
| 60e0 | 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 22 70 61 74 68 22 20 70 61 74 68 29 0a 20 20 | ...........(cons."path".path)... |
| 6100 | 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 22 71 75 65 72 79 22 20 28 69 66 20 28 73 2d 62 6c | .........(cons."query".(if.(s-bl |
| 6120 | 61 6e 6b 3f 20 70 61 72 61 6d 73 29 20 22 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ank?.params).""................. |
| 6140 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 22 3f 22 20 70 61 72 61 6d 73 29 | .............(concat."?".params) |
| 6160 | 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 22 70 61 72 61 6d 73 22 20 70 61 72 | ))............(cons."params".par |
| 6180 | 61 6d 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 60 61 67 65 74 27 20 68 65 72 65 20 69 | ams)))..........;;.`aget'.here.i |
| 61a0 | 73 20 6a 75 73 74 20 61 20 73 79 6d 62 6f 6c 2c 20 6e 6f 74 20 61 20 66 75 6e 63 74 69 6f 6e 2e | s.just.a.symbol,.not.a.function. |
| 61c0 | 20 49 74 20 72 65 66 65 72 73 20 74 6f 20 61 6e 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 69 6e 74 | .It.refers.to.an..........;;.int |
| 61e0 | 65 72 6e 61 6c 20 73 2d 2d 61 67 65 74 20 66 75 6e 63 74 69 6f 6e 2e 0a 20 20 20 20 20 20 20 20 | ernal.s--aget.function.......... |
| 6200 | 20 28 77 65 62 2d 75 72 6c 20 28 73 2d 66 6f 72 6d 61 74 20 75 72 6c 20 27 61 67 65 74 20 70 61 | .(web-url.(s-format.url.'aget.pa |
| 6220 | 72 61 6d 73 2d 61 6c 69 73 74 29 29 0a 20 20 20 20 20 20 20 20 20 68 64 72 2d 73 65 6e 74 29 0a | rams-alist))..........hdr-sent). |
| 6240 | 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 70 75 74 0a 20 20 20 20 20 20 20 68 74 74 70 63 6f | ......(process-put........httpco |
| 6260 | 6e 0a 20 20 20 20 20 20 20 3a 65 6c 6e 6f 64 65 2d 63 68 69 6c 64 2d 70 72 6f 63 65 73 73 0a 20 | n........:elnode-child-process.. |
| 6280 | 20 20 20 20 20 20 28 77 65 62 2d 68 74 74 70 2d 63 61 6c 6c 0a 20 20 20 20 20 20 20 20 6d 65 74 | ......(web-http-call.........met |
| 62a0 | 68 6f 64 0a 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 68 74 74 70 63 20 68 64 72 20 64 | hod.........(lambda.(httpc.hdr.d |
| 62c0 | 61 74 61 29 0a 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 68 64 72 2d 73 65 6e 74 0a | ata)...........(unless.hdr-sent. |
| 62e0 | 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 77 65 62 2d 3e 65 6c 6e 6f 64 65 | ............(elnode--web->elnode |
| 6300 | 2d 68 64 72 20 68 64 72 20 68 74 74 70 63 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 | -hdr.hdr.httpcon).............(s |
| 6320 | 65 74 71 20 68 64 72 2d 73 65 6e 74 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 | etq.hdr-sent.t))...........(if.( |
| 6340 | 65 71 20 64 61 74 61 20 3a 64 6f 6e 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c | eq.data.:done)...............(el |
| 6360 | 6e 6f 64 65 2d 68 74 74 70 2d 72 65 74 75 72 6e 20 68 74 74 70 63 6f 6e 29 0a 20 20 20 20 20 20 | node-http-return.httpcon)....... |
| 6380 | 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 65 6e 64 2d 73 74 72 69 6e 67 | ........(elnode-http-send-string |
| 63a0 | 20 68 74 74 70 63 6f 6e 20 64 61 74 61 29 29 29 0a 20 20 20 20 20 20 20 20 3a 6d 6f 64 65 20 27 | .httpcon.data))).........:mode.' |
| 63c0 | 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 3a 75 72 6c 20 77 65 62 2d 75 72 6c 0a 20 20 20 20 | stream.........:url.web-url..... |
| 63e0 | 20 20 20 20 3a 65 78 74 72 61 2d 68 65 61 64 65 72 73 0a 20 20 20 20 20 20 20 20 60 28 28 22 58 | ....:extra-headers.........`(("X |
| 6400 | 2d 46 6f 72 77 61 72 64 65 64 2d 46 6f 72 22 0a 20 20 20 20 20 20 20 20 20 20 20 2e 20 2c 28 65 | -Forwarded-For"..............,(e |
| 6420 | 6c 6e 6f 64 65 2d 2d 70 72 6f 78 79 2d 78 2d 66 6f 72 77 61 72 64 65 64 2d 66 6f 72 20 68 74 74 | lnode--proxy-x-forwarded-for.htt |
| 6440 | 70 63 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 22 58 2d 50 72 6f 78 79 2d 43 6c 69 65 6e | pcon))...........("X-Proxy-Clien |
| 6460 | 74 22 20 2e 20 22 65 6c 6e 6f 64 65 2f 77 65 62 22 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 | t"..."elnode/web"))))))..(defun. |
| 6480 | 65 6c 6e 6f 64 65 2d 70 72 6f 78 79 2d 62 6f 75 6e 63 65 20 28 68 74 74 70 63 6f 6e 20 68 61 6e | elnode-proxy-bounce.(httpcon.han |
| 64a0 | 64 6c 65 72 20 68 6f 73 74 2d 70 6f 72 74 29 0a 20 20 22 42 6f 75 6e 63 65 20 74 68 69 73 20 72 | dler.host-port)..."Bounce.this.r |
| 64c0 | 65 71 75 65 73 74 2e 0a 0a 49 66 20 48 54 54 50 43 4f 4e 20 69 73 20 6e 6f 74 20 61 20 72 65 71 | equest...If.HTTPCON.is.not.a.req |
| 64e0 | 75 65 73 74 20 66 6f 72 20 70 6f 72 74 20 48 4f 53 54 2d 50 4f 52 54 20 74 68 65 6e 20 62 6f 75 | uest.for.port.HOST-PORT.then.bou |
| 6500 | 6e 63 65 20 74 6f 0a 48 4f 53 54 2d 50 4f 52 54 2c 20 65 6c 73 65 20 69 74 20 69 73 20 61 20 72 | nce.to.HOST-PORT,.else.it.is.a.r |
| 6520 | 65 71 75 65 73 74 20 6f 6e 20 48 4f 53 54 2d 50 4f 52 54 20 73 6f 20 70 61 73 73 20 74 6f 20 48 | equest.on.HOST-PORT.so.pass.to.H |
| 6540 | 41 4e 44 4c 45 52 2e 22 0a 20 20 28 64 65 73 74 72 75 63 74 75 72 69 6e 67 2d 62 69 6e 64 20 28 | ANDLER."...(destructuring-bind.( |
| 6560 | 68 6f 73 74 6e 61 6d 65 20 74 68 69 73 2d 70 6f 72 74 29 0a 20 20 20 20 20 20 28 73 70 6c 69 74 | hostname.this-port).......(split |
| 6580 | 2d 73 74 72 69 6e 67 20 28 65 6c 6e 6f 64 65 2d 73 65 72 76 65 72 2d 69 6e 66 6f 20 68 74 74 70 | -string.(elnode-server-info.http |
| 65a0 | 63 6f 6e 29 20 22 3a 22 29 0a 20 20 20 20 28 69 66 20 28 65 71 75 61 6c 20 28 66 6f 72 6d 61 74 | con).":").....(if.(equal.(format |
| 65c0 | 20 22 25 73 22 20 74 68 69 73 2d 70 6f 72 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ."%s".this-port)................ |
| 65e0 | 28 66 6f 72 6d 61 74 20 22 25 73 22 20 68 6f 73 74 2d 70 6f 72 74 29 29 0a 20 20 20 20 20 20 20 | (format."%s".host-port))........ |
| 6600 | 20 28 66 75 6e 63 61 6c 6c 20 68 61 6e 64 6c 65 72 20 68 74 74 70 63 6f 6e 29 0a 20 20 20 20 20 | .(funcall.handler.httpcon)...... |
| 6620 | 20 20 20 28 65 6c 6e 6f 64 65 2d 70 72 6f 78 79 2d 64 6f 0a 20 20 20 20 20 20 20 20 20 68 74 74 | ...(elnode-proxy-do..........htt |
| 6640 | 70 63 6f 6e 0a 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 68 74 74 70 3a 2f 2f 25 73 | pcon..........(format."http://%s |
| 6660 | 3a 25 73 24 7b 70 61 74 68 7d 24 7b 71 75 65 72 79 7d 22 20 68 6f 73 74 6e 61 6d 65 20 68 6f 73 | :%s${path}${query}".hostname.hos |
| 6680 | 74 2d 70 6f 72 74 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 70 72 6f 78 79 | t-port)))))..(defun.elnode-proxy |
| 66a0 | 2d 6d 61 6b 65 2d 62 6f 75 6e 63 65 72 20 28 68 61 6e 64 6c 65 72 20 68 6f 73 74 2d 70 6f 72 74 | -make-bouncer.(handler.host-port |
| 66c0 | 29 0a 20 20 22 4d 61 6b 65 20 61 20 70 72 6f 78 79 20 62 6f 75 6e 63 65 72 20 68 61 6e 64 6c 65 | )..."Make.a.proxy.bouncer.handle |
| 66e0 | 72 20 66 6f 72 20 48 41 4e 44 4c 45 52 20 70 72 6f 63 20 6f 6e 20 4f 54 48 45 52 2d 50 4f 52 54 | r.for.HANDLER.proc.on.OTHER-PORT |
| 6700 | 2e 0a 0a 54 68 69 73 20 69 73 20 66 6f 72 20 6d 61 6e 61 67 69 6e 67 20 70 72 6f 78 79 20 63 61 | ...This.is.for.managing.proxy.ca |
| 6720 | 6c 6c 73 2e 20 20 49 66 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20 68 61 6e 64 6c 65 72 0a 72 | lls...If.the.resulting.handler.r |
| 6740 | 65 63 65 69 76 65 73 20 61 20 63 61 6c 6c 20 6f 6e 20 61 6e 79 74 68 69 6e 67 20 74 68 61 6e 20 | eceives.a.call.on.anything.than. |
| 6760 | 48 4f 53 54 2d 50 4f 52 54 20 74 68 65 6e 20 69 74 20 70 72 6f 78 69 65 73 20 74 68 65 0a 72 65 | HOST-PORT.then.it.proxies.the.re |
| 6780 | 71 75 65 73 74 20 74 6f 20 74 68 65 20 48 4f 53 54 2d 50 4f 52 54 2e 20 20 4f 74 68 65 72 77 69 | quest.to.the.HOST-PORT...Otherwi |
| 67a0 | 73 65 20 69 74 20 6a 75 73 74 20 68 61 6e 64 6c 65 73 20 74 68 65 0a 72 65 71 75 65 73 74 2e 22 | se.it.just.handles.the.request." |
| 67c0 | 0a 20 20 28 6c 61 6d 62 64 61 20 28 68 74 74 70 63 6f 6e 29 0a 20 20 20 20 28 65 6c 6e 6f 64 65 | ...(lambda.(httpcon).....(elnode |
| 67e0 | 2d 70 72 6f 78 79 2d 62 6f 75 6e 63 65 20 68 74 74 70 63 6f 6e 20 68 61 6e 64 6c 65 72 20 68 6f | -proxy-bounce.httpcon.handler.ho |
| 6800 | 73 74 2d 70 6f 72 74 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 | st-port)))..;;;###autoload.(defu |
| 6820 | 6e 20 65 6c 6e 6f 64 65 2d 6d 61 6b 65 2d 70 72 6f 78 79 20 28 75 72 6c 29 0a 20 20 22 4d 61 6b | n.elnode-make-proxy.(url)..."Mak |
| 6840 | 65 20 61 20 70 72 6f 78 79 20 68 61 6e 64 6c 65 72 20 73 65 6e 64 69 6e 67 20 72 65 71 75 65 73 | e.a.proxy.handler.sending.reques |
| 6860 | 74 73 20 74 6f 20 55 52 4c 2e 0a 0a 53 65 65 20 60 65 6c 6e 6f 64 65 2d 70 72 6f 78 79 2d 64 6f | ts.to.URL...See.`elnode-proxy-do |
| 6880 | 27 20 66 6f 72 20 68 6f 77 20 55 52 4c 20 69 73 20 68 61 6e 64 6c 65 64 2e 0a 0a 41 6e 20 48 54 | '.for.how.URL.is.handled...An.HT |
| 68a0 | 54 50 20 75 73 65 72 2d 61 67 65 6e 74 20 77 69 74 68 20 61 20 73 70 65 63 69 66 69 65 64 20 48 | TP.user-agent.with.a.specified.H |
| 68c0 | 54 54 50 20 70 72 6f 78 79 20 73 65 6e 64 73 20 74 68 65 20 66 75 6c 6c 0a 72 65 71 75 65 73 74 | TTP.proxy.sends.the.full.request |
| 68e0 | 20 61 73 20 74 68 65 20 70 61 74 68 2c 20 65 67 3a 0a 0a 20 20 47 45 54 20 68 74 74 70 3a 2f 2f | .as.the.path,.eg:....GET.http:// |
| 6900 | 73 6f 6d 65 68 6f 73 74 3a 70 6f 72 74 2f 70 61 74 68 3f 71 75 65 72 79 20 48 54 54 50 2f 31 2e | somehost:port/path?query.HTTP/1. |
| 6920 | 31 0a 0a 53 6f 20 60 65 6c 6e 6f 64 65 2d 6d 61 6b 65 2d 70 72 6f 78 79 27 20 63 61 6e 20 6d 61 | 1..So.`elnode-make-proxy'.can.ma |
| 6940 | 6b 65 20 28 73 6f 6d 65 74 68 69 6e 67 20 6c 69 6b 65 29 20 61 20 66 75 6c 6c 20 70 72 6f 78 79 | ke.(something.like).a.full.proxy |
| 6960 | 0a 73 65 72 76 65 72 20 77 69 74 68 3a 0a 0a 20 20 28 65 6c 6e 6f 64 65 2d 6d 61 6b 65 2d 70 72 | .server.with:....(elnode-make-pr |
| 6980 | 6f 78 79 20 5c 22 24 7b 70 61 74 68 7d 24 7b 71 75 65 72 79 7d 5c 22 29 0a 0a 54 68 65 72 65 20 | oxy.\"${path}${query}\")..There. |
| 69a0 | 6d 61 79 20 62 65 20 6d 61 6e 79 20 74 68 69 6e 67 73 20 74 68 61 74 20 61 20 66 75 6c 6c 20 70 | may.be.many.things.that.a.full.p |
| 69c0 | 72 6f 78 79 20 64 6f 65 73 20 74 68 61 74 20 74 68 69 73 20 64 6f 65 73 0a 6e 6f 74 20 64 6f 20 | roxy.does.that.this.does.not.do. |
| 69e0 | 68 6f 77 65 76 65 72 2e 0a 0a 52 65 76 65 72 73 65 20 70 72 6f 78 79 69 6e 67 20 69 73 20 61 20 | however...Reverse.proxying.is.a. |
| 6a00 | 73 69 6d 70 6c 65 72 20 61 6e 64 20 70 65 72 68 61 70 73 20 6d 6f 72 65 20 75 73 65 66 75 6c 2e | simpler.and.perhaps.more.useful. |
| 6a20 | 22 0a 20 20 28 6c 61 6d 62 64 61 20 28 68 74 74 70 63 6f 6e 29 0a 20 20 20 20 28 65 6c 6e 6f 64 | "...(lambda.(httpcon).....(elnod |
| 6a40 | 65 2d 70 72 6f 78 79 2d 64 6f 20 68 74 74 70 63 6f 6e 20 75 72 6c 29 29 29 0a 0a 28 64 65 66 76 | e-proxy-do.httpcon.url)))..(defv |
| 6a60 | 61 72 20 65 6c 6e 6f 64 65 2d 2d 70 72 6f 78 79 2d 73 65 72 76 65 72 2d 70 6f 72 74 2d 68 69 73 | ar.elnode--proxy-server-port-his |
| 6a80 | 74 6f 72 79 20 6e 69 6c 0a 20 20 22 48 69 73 74 6f 72 79 20 76 61 72 69 61 62 6c 65 20 75 73 65 | tory.nil..."History.variable.use |
| 6aa0 | 64 20 66 6f 72 20 70 72 6f 78 79 20 73 65 72 76 65 72 20 70 6f 72 74 20 72 65 61 64 69 6e 67 2e | d.for.proxy.server.port.reading. |
| 6ac0 | 22 29 0a 0a 28 64 65 66 76 61 72 20 65 6c 6e 6f 64 65 2d 2d 70 72 6f 78 79 2d 73 65 72 76 65 72 | ")..(defvar.elnode--proxy-server |
| 6ae0 | 2d 67 6f 74 6f 2d 75 72 6c 2d 68 69 73 74 6f 72 79 20 6e 69 6c 0a 20 20 22 48 69 73 74 6f 72 79 | -goto-url-history.nil..."History |
| 6b00 | 20 76 61 72 69 61 62 6c 65 20 75 73 65 64 20 66 6f 72 20 70 72 6f 78 79 20 67 6f 74 6f 20 75 72 | .variable.used.for.proxy.goto.ur |
| 6b20 | 6c 73 2e 22 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 6e 20 65 6c 6e | ls.")..;;;###autoload.(defun.eln |
| 6b40 | 6f 64 65 2d 6d 61 6b 65 2d 70 72 6f 78 79 2d 73 65 72 76 65 72 20 28 70 6f 72 74 20 26 6f 70 74 | ode-make-proxy-server.(port.&opt |
| 6b60 | 69 6f 6e 61 6c 20 75 72 6c 29 0a 20 20 22 4d 61 6b 65 20 61 20 70 72 6f 78 79 20 73 65 72 76 65 | ional.url)..."Make.a.proxy.serve |
| 6b80 | 72 20 6f 6e 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 50 4f 52 54 2e 0a 0a 4f 70 74 69 6f 6e | r.on.the.specified.PORT...Option |
| 6ba0 | 61 6c 6c 79 20 68 61 76 65 20 72 65 71 75 65 73 74 73 20 67 6f 20 74 6f 20 55 52 4c 2e 20 20 49 | ally.have.requests.go.to.URL...I |
| 6bc0 | 66 20 55 52 4c 20 69 73 20 6e 6f 74 20 73 70 65 63 69 66 69 65 64 20 69 74 0a 69 73 20 5c 22 24 | f.URL.is.not.specified.it.is.\"$ |
| 6be0 | 7b 70 61 74 68 7d 24 7b 71 75 65 72 79 7d 5c 22 2e 0a 0a 49 6e 74 65 72 61 63 74 69 76 65 6c 79 | {path}${query}\"...Interactively |
| 6c00 | 20 75 73 65 20 43 2d 75 20 74 6f 20 73 70 65 63 69 66 79 20 74 68 65 20 55 52 4c 2e 22 0a 20 20 | .use.C-u.to.specify.the.URL."... |
| 6c20 | 28 69 6e 74 65 72 61 63 74 69 76 65 0a 20 20 20 28 6c 69 73 74 0a 20 20 20 20 28 72 65 61 64 2d | (interactive....(list.....(read- |
| 6c40 | 66 72 6f 6d 2d 6d 69 6e 69 62 75 66 66 65 72 0a 20 20 20 20 20 22 70 72 6f 78 79 20 73 65 72 76 | from-minibuffer......"proxy.serv |
| 6c60 | 65 72 20 70 6f 72 74 3a 22 20 6e 69 6c 20 6e 69 6c 20 6e 69 6c 0a 20 20 20 20 20 27 65 6c 6e 6f | er.port:".nil.nil.nil......'elno |
| 6c80 | 64 65 2d 2d 70 72 6f 78 79 2d 73 65 72 76 65 72 2d 70 6f 72 74 2d 68 69 73 74 6f 72 79 29 0a 20 | de--proxy-server-port-history).. |
| 6ca0 | 20 20 20 28 69 66 20 63 75 72 72 65 6e 74 2d 70 72 65 66 69 78 2d 61 72 67 0a 20 20 20 20 20 20 | ...(if.current-prefix-arg....... |
| 6cc0 | 20 20 28 72 65 61 64 2d 66 72 6f 6d 2d 6d 69 6e 69 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 | ..(read-from-minibuffer......... |
| 6ce0 | 20 22 70 72 6f 78 79 20 73 65 72 76 65 72 20 67 6f 74 6f 20 75 72 6c 3a 22 20 22 24 7b 70 61 74 | ."proxy.server.goto.url:"."${pat |
| 6d00 | 68 7d 24 7b 71 75 65 72 79 7d 22 20 6e 69 6c 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 27 65 6c | h}${query}".nil.nil..........'el |
| 6d20 | 6e 6f 64 65 2d 2d 70 72 6f 78 79 2d 73 65 72 76 65 72 2d 67 6f 74 6f 2d 75 72 6c 2d 68 69 73 74 | node--proxy-server-goto-url-hist |
| 6d40 | 6f 72 79 0a 20 20 20 20 20 20 20 20 20 22 24 7b 70 61 74 68 7d 24 7b 71 75 65 72 79 7d 22 29 0a | ory.........."${path}${query}"). |
| 6d60 | 20 20 20 20 20 20 20 20 22 24 7b 70 61 74 68 7d 24 7b 71 75 65 72 79 7d 22 29 29 29 0a 20 20 28 | ........"${path}${query}")))...( |
| 6d80 | 6c 65 74 20 28 28 70 72 6f 78 79 2d 68 61 6e 64 6c 65 72 0a 20 20 20 20 20 20 20 20 20 28 65 6c | let.((proxy-handler..........(el |
| 6da0 | 6e 6f 64 65 2d 6d 61 6b 65 2d 70 72 6f 78 79 20 28 6f 72 20 75 72 6c 20 22 24 7b 70 61 74 68 7d | node-make-proxy.(or.url."${path} |
| 6dc0 | 24 7b 71 75 65 72 79 7d 22 29 29 29 29 0a 20 20 20 20 28 65 6c 6e 6f 64 65 2d 73 74 61 72 74 20 | ${query}")))).....(elnode-start. |
| 6de0 | 70 72 6f 78 79 2d 68 61 6e 64 6c 65 72 20 3a 70 6f 72 74 20 70 6f 72 74 29 29 29 0a 0a 0a 28 64 | proxy-handler.:port.port)))...(d |
| 6e00 | 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 70 72 6f 78 79 2d 72 65 64 69 72 65 63 74 20 | efun.elnode-send-proxy-redirect. |
| 6e20 | 28 68 74 74 70 63 6f 6e 20 6c 6f 63 61 74 69 6f 6e 29 0a 20 20 22 53 65 6e 64 20 62 61 63 6b 20 | (httpcon.location)..."Send.back. |
| 6e40 | 61 20 70 72 6f 78 79 20 72 65 64 69 72 65 63 74 20 74 6f 20 4c 4f 43 41 54 49 4f 4e 2e 0a 0a 41 | a.proxy.redirect.to.LOCATION...A |
| 6e60 | 20 70 72 6f 78 79 20 72 65 64 69 72 65 63 74 20 69 73 20 73 65 74 74 69 6e 67 20 5c 22 58 2d 41 | .proxy.redirect.is.setting.\"X-A |
| 6e80 | 63 63 65 6c 2d 52 65 64 69 72 65 63 74 5c 22 20 74 6f 20 61 20 6c 6f 63 61 74 69 6f 6e 2c 0a 70 | ccel-Redirect\".to.a.location,.p |
| 6ea0 | 72 6f 78 69 65 73 20 63 61 6e 20 69 6e 74 65 72 70 72 65 74 20 74 68 65 20 68 65 61 64 65 72 20 | roxies.can.interpret.the.header. |
| 6ec0 | 77 69 74 68 20 73 6f 6d 65 20 6b 69 6e 64 20 6f 66 20 69 6e 74 65 72 6e 61 6c 20 6f 6e 6c 79 0a | with.some.kind.of.internal.only. |
| 6ee0 | 55 52 4c 20 72 65 73 6f 6c 75 74 69 6f 6e 20 6d 65 63 68 61 6e 69 73 6d 20 61 6e 64 20 64 6f 20 | URL.resolution.mechanism.and.do. |
| 6f00 | 64 69 73 70 61 74 63 68 20 74 6f 20 61 6e 6f 74 68 65 72 20 62 61 63 6b 65 6e 64 0a 77 69 74 68 | dispatch.to.another.backend.with |
| 6f20 | 6f 75 74 20 73 65 6e 64 69 6e 67 20 74 68 65 20 72 65 64 69 72 65 63 74 20 62 61 63 6b 20 74 6f | out.sending.the.redirect.back.to |
| 6f40 | 20 74 68 65 20 6f 72 69 67 69 6e 20 55 41 2e 22 0a 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d | .the.origin.UA."...(elnode-http- |
| 6f60 | 68 65 61 64 65 72 2d 73 65 74 0a 20 20 20 68 74 74 70 63 6f 6e 20 22 58 2d 41 63 63 65 6c 2d 52 | header-set....httpcon."X-Accel-R |
| 6f80 | 65 64 69 72 65 63 74 22 20 6c 6f 63 61 74 69 6f 6e 29 0a 20 20 3b 3b 20 54 68 69 73 20 69 73 20 | edirect".location)...;;.This.is. |
| 6fa0 | 61 6e 20 6e 67 69 6e 78 20 73 70 65 63 69 66 69 63 20 68 61 63 6b 20 62 65 63 61 75 73 65 20 69 | an.nginx.specific.hack.because.i |
| 6fc0 | 74 20 73 65 65 6d 73 20 6e 67 69 6e 78 20 6b 69 6c 6c 73 20 74 68 65 0a 20 20 3b 3b 20 73 6f 63 | t.seems.nginx.kills.the...;;.soc |
| 6fe0 | 6b 65 74 20 6f 6e 63 65 20 74 68 65 20 61 63 63 65 6c 20 68 65 61 64 65 72 20 61 72 72 69 76 65 | ket.once.the.accel.header.arrive |
| 7000 | 73 0a 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 65 72 72 0a 20 20 20 20 20 20 28 65 | s...(condition-case.err.......(e |
| 7020 | 6c 6e 6f 64 65 2d 73 65 6e 64 2d 72 65 64 69 72 65 63 74 20 68 74 74 70 63 6f 6e 20 6c 6f 63 61 | lnode-send-redirect.httpcon.loca |
| 7040 | 74 69 6f 6e 29 0a 20 20 20 20 28 65 72 72 6f 72 20 28 75 6e 6c 65 73 73 20 28 73 74 72 69 6e 67 | tion).....(error.(unless.(string |
| 7060 | 2d 6d 61 74 63 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 5c 28 53 | -match....................."\\(S |
| 7080 | 49 47 50 49 50 45 5c 5c 7c 6e 6f 20 6c 6f 6e 67 65 72 20 63 6f 6e 6e 65 63 74 65 64 5c 5c 29 22 | IGPIPE\\|no.longer.connected\\)" |
| 70a0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 25 73 | .....................(format."%s |
| 70c0 | 22 20 28 63 64 72 20 65 72 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 69 67 6e | ".(cdr.err)))..............(sign |
| 70e0 | 61 6c 20 28 63 61 72 20 65 72 72 29 20 28 63 64 72 20 65 72 72 29 29 29 29 29 29 0a 0a 28 64 65 | al.(car.err).(cdr.err))))))..(de |
| 7100 | 66 75 6e 20 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 70 72 6f 78 79 2d 6c 6f 63 61 74 69 6f 6e 20 28 | fun.elnode-send-proxy-location.( |
| 7120 | 68 74 74 70 63 6f 6e 20 6c 6f 63 61 74 69 6f 6e 29 0a 20 20 22 53 65 6e 64 20 4c 4f 43 41 54 49 | httpcon.location)..."Send.LOCATI |
| 7140 | 4f 4e 20 77 69 74 68 20 70 72 6f 78 79 69 6e 67 20 74 65 63 68 6e 69 71 75 65 73 2e 0a 0a 49 66 | ON.with.proxying.techniques...If |
| 7160 | 20 74 68 65 20 48 54 54 50 43 4f 4e 20 63 6f 6d 65 73 20 66 72 6f 6d 20 61 20 70 72 6f 78 79 20 | .the.HTTPCON.comes.from.a.proxy. |
| 7180 | 28 64 65 74 65 63 74 65 64 20 62 79 20 63 68 65 63 6b 69 6e 67 20 74 68 65 0a 5c 22 58 2d 46 6f | (detected.by.checking.the.\"X-Fo |
| 71a0 | 72 77 61 72 64 65 64 2d 46 6f 72 5c 22 29 20 74 68 65 6e 20 61 6e 20 60 65 6c 6e 6f 64 65 2d 73 | rwarded-For\").then.an.`elnode-s |
| 71c0 | 65 6e 64 2d 70 72 6f 78 79 2d 72 65 64 69 72 65 63 74 27 20 74 6f 0a 6c 6f 63 61 74 69 6f 6e 20 | end-proxy-redirect'.to.location. |
| 71e0 | 69 73 20 73 65 6e 74 2e 0a 0a 41 6c 74 65 72 6e 61 74 65 6c 79 20 69 74 20 73 65 74 73 20 75 70 | is.sent...Alternately.it.sets.up |
| 7200 | 20 61 20 64 69 72 65 63 74 20 70 72 6f 78 79 20 63 61 6c 6c 20 74 6f 20 74 68 65 20 63 75 72 72 | .a.direct.proxy.call.to.the.curr |
| 7220 | 65 6e 74 20 73 65 72 76 65 72 0a 66 6f 72 20 74 68 65 20 6c 6f 63 61 74 69 6f 6e 2e 22 0a 20 20 | ent.server.for.the.location."... |
| 7240 | 28 69 66 20 28 61 6e 64 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 68 65 61 64 65 72 20 68 74 74 | (if.(and.(elnode-http-header.htt |
| 7260 | 70 63 6f 6e 20 22 58 2d 46 6f 72 77 61 72 64 65 64 2d 46 6f 72 22 29 0a 20 20 20 20 20 20 20 20 | pcon."X-Forwarded-For")......... |
| 7280 | 20 20 20 28 6e 6f 74 20 28 65 71 75 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...(not.(equal.................. |
| 72a0 | 22 65 6c 6e 6f 64 65 2f 77 65 62 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 | "elnode/web"..................(e |
| 72c0 | 6c 6e 6f 64 65 2d 68 74 74 70 2d 68 65 61 64 65 72 20 68 74 74 70 63 6f 6e 20 22 58 2d 50 72 6f | lnode-http-header.httpcon."X-Pro |
| 72e0 | 78 79 2d 43 6c 69 65 6e 74 22 29 29 29 29 0a 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 73 65 6e | xy-Client")))).......(elnode-sen |
| 7300 | 64 2d 70 72 6f 78 79 2d 72 65 64 69 72 65 63 74 20 68 74 74 70 63 6f 6e 20 6c 6f 63 61 74 69 6f | d-proxy-redirect.httpcon.locatio |
| 7320 | 6e 29 0a 20 20 20 20 20 20 3b 3b 20 45 6c 73 65 20 77 65 27 72 65 20 6e 6f 74 20 62 65 68 69 6e | n).......;;.Else.we're.not.behin |
| 7340 | 64 20 61 20 70 72 6f 78 79 2c 20 73 65 6e 64 20 61 20 70 72 6f 78 79 20 76 65 72 73 69 6f 6e 0a | d.a.proxy,.send.a.proxy.version. |
| 7360 | 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 73 65 72 76 65 72 20 28 65 6c 6e 6f 64 65 2d 73 65 72 | ......(let*.((server.(elnode-ser |
| 7380 | 76 65 72 2d 69 6e 66 6f 20 68 74 74 70 63 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | ver-info.httpcon)).............. |
| 73a0 | 28 75 72 6c 20 28 66 6f 72 6d 61 74 20 22 68 74 74 70 3a 2f 2f 25 73 25 73 22 20 73 65 72 76 65 | (url.(format."http://%s%s".serve |
| 73c0 | 72 20 6c 6f 63 61 74 69 6f 6e 29 29 29 0a 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 28 | r.location))).........(funcall.( |
| 73e0 | 65 6c 6e 6f 64 65 2d 6d 61 6b 65 2d 70 72 6f 78 79 20 75 72 6c 29 20 68 74 74 70 63 6f 6e 29 29 | elnode-make-proxy.url).httpcon)) |
| 7400 | 29 29 0a 0a 28 64 65 66 75 6e 2a 20 65 6c 6e 6f 64 65 2d 70 72 6f 78 79 2d 70 6f 73 74 20 28 68 | ))..(defun*.elnode-proxy-post.(h |
| 7420 | 74 74 70 63 6f 6e 20 70 61 74 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ttpcon.path..................... |
| 7440 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 26 6b 65 79 20 28 6d 6f 64 65 20 27 62 61 74 63 68 | ...............&key.(mode.'batch |
| 7460 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | )............................... |
| 7480 | 20 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 64 61 74 61 20 65 78 74 72 61 2d 68 65 61 64 65 72 73 | .....callback.data.extra-headers |
| 74a0 | 29 0a 20 20 22 4d 61 6b 65 20 61 6e 20 48 54 54 50 20 63 61 6c 6c 20 74 6f 20 6c 6f 63 61 6c 68 | )..."Make.an.HTTP.call.to.localh |
| 74c0 | 6f 73 74 20 6f 72 20 74 68 65 20 66 69 72 73 74 20 75 70 73 74 72 65 61 6d 20 70 72 6f 78 79 2e | ost.or.the.first.upstream.proxy. |
| 74e0 | 22 0a 20 20 28 6c 65 74 2a 20 28 28 68 70 2d 70 61 69 72 0a 20 20 20 20 20 20 20 20 20 20 28 69 | "...(let*.((hp-pair...........(i |
| 7500 | 66 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 68 65 61 64 65 72 20 68 74 74 70 63 6f 6e 20 22 58 | f.(elnode-http-header.httpcon."X |
| 7520 | 2d 46 6f 72 77 61 72 64 65 64 2d 46 6f 72 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 | -Forwarded-For")...............( |
| 7540 | 65 6c 6e 6f 64 65 2d 67 65 74 2d 72 65 6d 6f 74 65 2d 69 70 61 64 64 72 20 68 74 74 70 63 6f 6e | elnode-get-remote-ipaddr.httpcon |
| 7560 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 73 65 72 76 65 72 2d 69 | )...............(elnode-server-i |
| 7580 | 6e 66 6f 20 68 74 74 70 63 6f 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 75 72 6c 20 28 66 6f | nfo.httpcon)))..........(url.(fo |
| 75a0 | 72 6d 61 74 20 22 68 74 74 70 3a 2f 2f 25 73 25 73 22 20 68 70 2d 70 61 69 72 20 70 61 74 68 29 | rmat."http://%s%s".hp-pair.path) |
| 75c0 | 29 29 0a 20 20 20 20 28 77 65 62 2d 68 74 74 70 2d 70 6f 73 74 0a 20 20 20 20 20 28 6f 72 20 63 | )).....(web-http-post......(or.c |
| 75e0 | 61 6c 6c 62 61 63 6b 0a 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 68 74 74 70 63 20 | allback..........(lambda.(httpc. |
| 7600 | 68 64 72 20 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 65 72 72 | hdr.data)............(elnode-err |
| 7620 | 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 25 73 20 70 6f 73 74 20 72 65 73 70 6f 6e 73 65 | or............."%s.post.response |
| 7640 | 20 25 53 20 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 68 74 74 70 63 6f 6e 20 68 64 72 20 | .%S.%s".............httpcon.hdr. |
| 7660 | 64 61 74 61 29 29 29 0a 20 20 20 20 20 3a 75 72 6c 20 75 72 6c 20 3a 6d 6f 64 65 20 6d 6f 64 65 | data)))......:url.url.:mode.mode |
| 7680 | 20 3a 64 61 74 61 20 64 61 74 61 0a 20 20 20 20 20 3a 65 78 74 72 61 2d 68 65 61 64 65 72 73 20 | .:data.data......:extra-headers. |
| 76a0 | 65 78 74 72 61 2d 68 65 61 64 65 72 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2f | extra-headers)))..(defun.elnode/ |
| 76c0 | 70 72 6f 78 79 2d 72 6f 75 74 65 20 28 68 74 74 70 63 6f 6e 20 73 65 72 76 69 63 65 20 68 61 6e | proxy-route.(httpcon.service.han |
| 76e0 | 64 6c 65 72 20 70 61 74 68 29 0a 20 20 22 50 72 6f 78 69 65 73 20 61 20 70 61 72 74 69 63 75 6c | dler.path)..."Proxies.a.particul |
| 7700 | 61 72 20 72 6f 75 74 65 20 66 72 6f 6d 20 60 65 6c 6e 6f 64 65 2d 72 6f 75 74 65 27 2e 22 0a 20 | ar.route.from.`elnode-route'.".. |
| 7720 | 20 28 6c 65 74 2a 20 28 28 73 65 72 76 65 72 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 68 74 74 | .(let*.((server.(process-get.htt |
| 7740 | 70 63 6f 6e 20 3a 73 65 72 76 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 28 70 32 20 70 61 74 68 | pcon.:server))..........(p2.path |
| 7760 | 29 0a 20 20 20 20 20 20 20 20 20 28 6d 61 70 73 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 73 65 | )..........(maps.(process-get.se |
| 7780 | 72 76 65 72 20 3a 65 6c 6e 6f 64 65 2d 73 65 72 76 69 63 65 2d 6d 61 70 29 29 0a 20 20 20 20 20 | rver.:elnode-service-map))...... |
| 77a0 | 20 20 20 20 28 70 6f 72 74 0a 20 20 20 20 20 20 20 20 20 20 28 6f 72 0a 20 20 20 20 20 20 20 20 | ....(port...........(or......... |
| 77c0 | 20 20 20 28 6b 76 61 20 73 65 72 76 69 63 65 20 6d 61 70 73 29 0a 20 20 20 20 20 20 20 20 20 20 | ...(kva.service.maps)........... |
| 77e0 | 20 28 73 74 72 69 6e 67 2d 74 6f 2d 6e 75 6d 62 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 | .(string-to-number.............( |
| 7800 | 63 61 64 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 70 6c 69 74 2d 73 74 72 69 6e 67 0a | cadr..............(split-string. |
| 7820 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 73 65 72 76 65 72 2d 69 6e 66 | ..............(elnode-server-inf |
| 7840 | 6f 20 68 74 74 70 63 6f 6e 29 20 22 3a 22 29 29 29 29 29 29 0a 20 20 20 20 3b 3b 20 57 72 61 70 | o.httpcon).":")))))).....;;.Wrap |
| 7860 | 20 74 68 65 20 68 61 6e 64 6c 65 72 20 69 6e 20 61 20 62 6f 75 6e 63 65 72 0a 20 20 20 20 28 65 | .the.handler.in.a.bouncer.....(e |
| 7880 | 6c 6e 6f 64 65 2d 70 72 6f 78 79 2d 62 6f 75 6e 63 65 20 68 74 74 70 63 6f 6e 20 68 61 6e 64 6c | lnode-proxy-bounce.httpcon.handl |
| 78a0 | 65 72 20 70 6f 72 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 72 6f 75 74 65 20 | er.port)))..(defun.elnode-route. |
| 78c0 | 28 68 74 74 70 63 6f 6e 20 72 6f 75 74 65 73 29 0a 20 20 22 50 61 73 73 20 48 54 54 50 43 4f 4e | (httpcon.routes)..."Pass.HTTPCON |
| 78e0 | 20 74 6f 20 74 68 65 20 68 61 6e 64 6c 65 72 20 64 65 63 69 64 65 64 20 62 79 20 52 4f 55 54 45 | .to.the.handler.decided.by.ROUTE |
| 7900 | 53 2e 0a 0a 52 4f 55 54 45 53 20 69 73 20 61 20 72 6f 75 74 69 6e 67 20 74 61 62 6c 65 20 6d 61 | S...ROUTES.is.a.routing.table.ma |
| 7920 | 74 63 68 69 6e 67 20 72 65 67 65 78 73 20 74 6f 20 68 61 6e 64 6c 65 72 73 20 77 69 74 68 20 65 | tching.regexs.to.handlers.with.e |
| 7940 | 78 74 72 61 0a 6d 65 74 61 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 20 20 52 6f 75 74 65 73 20 6d | xtra.meta.information...Routes.m |
| 7960 | 61 79 20 64 6f 20 61 64 64 69 74 69 6f 6e 61 6c 20 74 68 69 6e 67 73 20 6c 69 6b 65 20 63 61 75 | ay.do.additional.things.like.cau |
| 7980 | 73 65 20 61 0a 72 6f 75 74 65 20 74 6f 20 62 65 20 70 72 6f 78 79 65 64 20 74 6f 20 61 6e 6f 74 | se.a.route.to.be.proxyed.to.anot |
| 79a0 | 68 65 72 20 73 65 72 76 65 72 2e 0a 0a 55 73 69 6e 67 20 52 4f 55 54 45 53 20 79 6f 75 20 63 61 | her.server...Using.ROUTES.you.ca |
| 79c0 | 6e 20 64 65 73 63 72 69 62 65 20 63 6f 6d 70 6c 65 78 20 6d 75 6c 74 69 2d 70 72 6f 63 65 73 73 | n.describe.complex.multi-process |
| 79e0 | 2c 20 6d 75 6c 74 69 2d 70 6f 72 74 0a 65 6c 6e 6f 64 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f | ,.multi-port.elnode.configuratio |
| 7a00 | 6e 73 2e 0a 0a 52 4f 55 54 45 53 20 69 73 20 61 6e 20 61 6c 69 73 74 20 77 68 65 72 65 20 65 61 | ns...ROUTES.is.an.alist.where.ea |
| 7a20 | 63 68 20 65 6c 65 6d 65 6e 74 20 6c 6f 6f 6b 73 20 6c 69 6b 65 20 28 52 45 47 45 58 50 0a 2e 20 | ch.element.looks.like.(REGEXP... |
| 7a40 | 46 55 4e 43 54 49 4f 4e 29 20 6f 72 20 28 52 45 47 45 58 50 20 46 55 4e 43 54 49 4f 4e 20 60 3a | FUNCTION).or.(REGEXP.FUNCTION.`: |
| 7a60 | 73 65 72 76 69 63 65 27 20 53 45 52 56 49 43 45 2d 4e 41 4d 45 29 2e 0a 53 45 52 56 49 43 45 2d | service'.SERVICE-NAME)..SERVICE- |
| 7a80 | 4e 41 4d 45 20 69 73 20 61 20 6e 61 6d 65 20 74 68 61 74 20 6d 61 79 20 62 65 20 61 74 74 61 63 | NAME.is.a.name.that.may.be.attac |
| 7aa0 | 68 65 64 20 74 6f 20 74 68 65 20 72 6f 75 74 65 20 73 6f 20 74 68 61 74 0a 69 74 20 63 61 6e 20 | hed.to.the.route.so.that.it.can. |
| 7ac0 | 62 65 20 6d 61 70 70 65 64 20 74 6f 20 61 20 54 43 50 20 70 6f 72 74 2c 20 6f 72 20 65 76 65 6e | be.mapped.to.a.TCP.port,.or.even |
| 7ae0 | 20 61 6e 6f 74 68 65 72 20 45 6d 61 63 73 20 70 72 6f 63 65 73 73 2e 0a 4d 61 70 70 69 6e 67 20 | .another.Emacs.process..Mapping. |
| 7b00 | 73 65 72 76 69 63 65 20 6e 61 6d 65 73 20 69 73 20 64 6f 6e 65 20 62 79 20 60 65 6c 6e 6f 64 65 | service.names.is.done.by.`elnode |
| 7b20 | 2d 73 74 61 72 74 27 2e 22 0a 20 20 28 6c 65 74 2a 0a 20 20 20 20 20 20 28 73 65 72 76 69 63 65 | -start'."...(let*.......(service |
| 7b40 | 73 0a 20 20 20 20 20 20 20 28 72 74 61 62 6c 65 0a 20 20 20 20 20 20 20 20 28 6c 6f 6f 70 20 66 | s........(rtable.........(loop.f |
| 7b60 | 6f 72 20 28 70 61 74 68 20 2e 20 72 65 73 6f 75 72 63 65 29 20 69 6e 20 74 61 62 6c 65 0a 20 20 | or.(path...resource).in.table... |
| 7b80 | 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 | .........collect..............(i |
| 7ba0 | 66 20 28 61 74 6f 6d 20 72 65 73 6f 75 72 63 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | f.(atom.resource)............... |
| 7bc0 | 20 20 20 28 6c 69 73 74 20 70 61 74 68 20 72 65 73 6f 75 72 63 65 29 0a 20 20 20 20 20 20 20 20 | ...(list.path.resource)......... |
| 7be0 | 20 20 20 20 20 20 20 20 20 3b 3b 20 45 6c 73 65 20 69 74 27 73 20 61 20 6d 6f 72 65 20 63 6f 6d | .........;;.Else.it's.a.more.com |
| 7c00 | 70 6c 65 78 20 72 65 73 6f 75 72 63 65 20 64 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 20 20 20 20 | plex.resource.description....... |
| 7c20 | 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 68 61 6e 64 6c 65 72 20 28 63 61 72 20 | ...........(let*.((handler.(car. |
| 7c40 | 72 65 73 6f 75 72 63 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | resource))...................... |
| 7c60 | 20 20 20 28 73 65 72 76 69 63 65 20 28 70 6c 69 73 74 2d 67 65 74 20 28 63 64 72 20 72 65 73 6f | ...(service.(plist-get.(cdr.reso |
| 7c80 | 75 72 63 65 29 20 3a 73 65 72 76 69 63 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | urce).:service))................ |
| 7ca0 | 20 20 20 20 20 20 20 20 20 3b 3b 20 4d 61 6b 65 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 66 72 | .........;;.Make.the.function.fr |
| 7cc0 | 6f 6d 20 74 68 65 20 72 65 73 6f 75 72 63 65 20 64 65 73 63 72 69 70 74 69 6f 6e 0a 20 20 20 20 | om.the.resource.description..... |
| 7ce0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 0a 20 20 20 20 20 20 | ....................(func....... |
| 7d00 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 68 74 74 70 | ...................(lambda.(http |
| 7d20 | 63 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | con)............................ |
| 7d40 | 28 65 6c 6e 6f 64 65 2f 70 72 6f 78 79 2d 72 6f 75 74 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 | (elnode/proxy-route............. |
| 7d60 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 74 74 70 63 6f 6e 20 73 65 72 76 69 63 65 20 | ................httpcon.service. |
| 7d80 | 68 61 6e 64 6c 65 72 20 70 61 74 68 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | handler.path))))................ |
| 7da0 | 20 20 20 20 28 77 68 65 6e 20 73 65 72 76 69 63 65 20 28 70 75 73 68 20 73 65 72 76 69 63 65 20 | ....(when.service.(push.service. |
| 7dc0 | 73 65 72 76 69 63 65 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c | services))....................(l |
| 7de0 | 69 73 74 20 70 61 74 68 20 66 75 6e 63 29 29 29 29 29 29 0a 20 20 20 20 28 65 6c 6e 6f 64 65 2d | ist.path.func)))))).....(elnode- |
| 7e00 | 68 6f 73 74 70 61 74 68 2d 64 69 73 70 61 74 63 68 65 72 20 68 74 74 70 63 6f 6e 20 72 74 61 62 | hostpath-dispatcher.httpcon.rtab |
| 7e20 | 6c 65 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 65 6c 6e 6f 64 65 2d 70 72 6f 78 79 29 0a 0a | le)))..(provide.'elnode-proxy).. |
| 7e40 | 3b 3b 3b 20 65 6c 6e 6f 64 65 2d 70 72 6f 78 79 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 00 | ;;;.elnode-proxy.el.ends.here... |
| 7e60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7e80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7ea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7ec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7ee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7f00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7f20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7f40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7f60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7f80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7fa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7fc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 7fe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8000 | 65 6c 6e 6f 64 65 2d 32 30 31 39 30 37 30 32 2e 31 35 30 39 2f 65 6c 6e 6f 64 65 2d 72 6c 65 2e | elnode-20190702.1509/elnode-rle. |
| 8020 | 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | el.............................. |
| 8040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8060 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 | ....0000644.0000000.0000000.0000 |
| 8080 | 30 30 33 32 32 37 36 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 36 34 34 00 20 30 00 00 00 | 0032276.00000000000.014644..0... |
| 80a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 80c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 80e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8100 | 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...root................... |
| 8120 | 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........root................... |
| 8140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 81a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 81c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 81e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 8200 | 3b 3b 3b 20 65 6c 6e 6f 64 65 2d 72 6c 65 2e 65 6c 20 2d 2d 2d 20 52 65 6d 6f 74 65 20 4c 69 73 | ;;;.elnode-rle.el.---.Remote.Lis |
| 8220 | 70 20 45 78 65 63 75 74 69 69 6f 6e 20 77 69 74 68 20 45 6c 6e 6f 64 65 20 20 2d 2a 2d 20 6c 65 | p.Executiion.with.Elnode..-*-.le |
| 8240 | 78 69 63 61 6c 2d 62 69 6e 64 69 6e 67 3a 20 74 20 2d 2a 2d 0a 0a 3b 3b 20 43 6f 70 79 72 69 67 | xical-binding:.t.-*-..;;.Copyrig |
| 8260 | 68 74 20 28 43 29 20 32 30 31 32 20 20 4e 69 63 20 46 65 72 72 69 65 72 0a 0a 3b 3b 20 41 75 74 | ht.(C).2012..Nic.Ferrier..;;.Aut |
| 8280 | 68 6f 72 3a 20 4e 69 63 20 46 65 72 72 69 65 72 0a 3b 3b 20 4b 65 79 77 6f 72 64 73 3a 20 6c 69 | hor:.Nic.Ferrier.;;.Keywords:.li |
| 82a0 | 73 70 2c 20 68 79 70 65 72 6d 65 64 69 61 2c 20 70 72 6f 63 65 73 73 65 73 0a 0a 3b 3b 20 54 68 | sp,.hypermedia,.processes..;;.Th |
| 82c0 | 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72 65 3b 20 79 6f 75 | is.program.is.free.software;.you |
| 82e0 | 20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20 61 6e 64 2f 6f 72 20 6d 6f 64 69 | .can.redistribute.it.and/or.modi |
| 8300 | 66 79 0a 3b 3b 20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f 66 20 74 68 65 20 | fy.;;.it.under.the.terms.of.the. |
| 8320 | 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 61 73 20 70 75 | GNU.General.Public.License.as.pu |
| 8340 | 62 6c 69 73 68 65 64 20 62 79 0a 3b 3b 20 74 68 65 20 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 | blished.by.;;.the.Free.Software. |
| 8360 | 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65 72 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20 | Foundation,.either.version.3.of. |
| 8380 | 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 3b 3b 20 28 61 74 20 79 6f 75 72 20 6f 70 74 69 | the.License,.or.;;.(at.your.opti |
| 83a0 | 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 73 20 | on).any.later.version...;;.This. |
| 83c0 | 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e 20 74 68 65 20 68 6f | program.is.distributed.in.the.ho |
| 83e0 | 70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2c 0a 3b 3b 20 62 75 | pe.that.it.will.be.useful,.;;.bu |
| 8400 | 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20 | t.WITHOUT.ANY.WARRANTY;.without. |
| 8420 | 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20 6f 66 0a 3b 3b 20 | even.the.implied.warranty.of.;;. |
| 8440 | 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41 | MERCHANTABILITY.or.FITNESS.FOR.A |
| 8460 | 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20 20 53 65 65 20 74 68 65 0a 3b 3b | .PARTICULAR.PURPOSE...See.the.;; |
| 8480 | 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20 | .GNU.General.Public.License.for. |
| 84a0 | 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 73 68 6f 75 6c 64 20 68 61 76 | more.details...;;.You.should.hav |
| 84c0 | 65 20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e | e.received.a.copy.of.the.GNU.Gen |
| 84e0 | 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 69 74 | eral.Public.License.;;.along.wit |
| 8500 | 68 20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e 6f 74 2c 20 73 65 65 20 3c 68 74 | h.this.program...If.not,.see.<ht |
| 8520 | 74 70 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b | tp://www.gnu.org/licenses/>...;; |
| 8540 | 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 3b 3b 0a 3b 3b 20 54 68 69 73 20 69 73 20 61 6e 20 65 | ;.Commentary:.;;.;;.This.is.an.e |
| 8560 | 6c 6e 6f 64 65 20 68 61 6e 64 6c 65 72 20 61 6e 64 20 74 6f 6f 6c 73 20 66 6f 72 20 64 6f 69 6e | lnode.handler.and.tools.for.doin |
| 8580 | 67 20 61 73 79 6e 63 68 72 6f 75 73 0a 3b 3b 20 70 72 6f 67 72 61 6d 6d 69 6e 67 2e 0a 3b 3b 0a | g.asynchrous.;;.programming..;;. |
| 85a0 | 3b 3b 20 54 68 65 20 69 64 65 61 20 69 73 20 74 68 61 74 20 79 6f 75 20 63 61 6e 20 73 65 74 75 | ;;.The.idea.is.that.you.can.setu |
| 85c0 | 70 20 61 73 73 6f 63 69 61 74 65 64 20 63 68 69 6c 64 20 70 72 6f 63 65 73 73 65 73 20 61 6e 64 | p.associated.child.processes.and |
| 85e0 | 20 70 61 73 73 0a 3b 3b 20 74 68 65 6d 20 77 6f 72 6b 20 74 6f 20 64 6f 20 61 6e 64 20 72 65 63 | .pass.;;.them.work.to.do.and.rec |
| 8600 | 65 69 76 65 20 74 68 65 69 72 20 6f 75 74 70 75 74 20 6f 76 65 72 20 48 54 54 50 2e 0a 0a 3b 3b | eive.their.output.over.HTTP...;; |
| 8620 | 3b 20 43 6f 64 65 3a 0a 0a 28 72 65 71 75 69 72 65 20 27 65 6c 6e 6f 64 65 29 0a 28 72 65 71 75 | ;.Code:..(require.'elnode).(requ |
| 8640 | 69 72 65 20 27 77 65 62 29 0a 28 72 65 71 75 69 72 65 20 27 6c 6f 61 64 68 69 73 74 29 0a 28 72 | ire.'web).(require.'loadhist).(r |
| 8660 | 65 71 75 69 72 65 20 27 73 65 72 76 65 72 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 72 | equire.'server)..(defun.elnode-r |
| 8680 | 6c 65 2d 2d 68 61 6e 64 6c 65 72 20 28 68 74 74 70 63 6f 6e 29 0a 20 20 22 52 65 6d 6f 74 65 20 | le--handler.(httpcon)..."Remote. |
| 86a0 | 4c 69 73 70 20 45 76 61 6c 75 61 74 6f 72 20 68 61 6e 64 6c 65 72 2e 0a 0a 54 68 69 73 20 63 61 | Lisp.Evaluator.handler...This.ca |
| 86c0 | 6e 20 62 65 20 73 70 61 77 6e 65 64 20 69 6e 20 61 20 63 6c 69 65 6e 74 20 74 6f 20 61 6c 6c 6f | n.be.spawned.in.a.client.to.allo |
| 86e0 | 77 20 61 6e 79 20 6c 69 73 70 20 63 6f 64 65 20 74 6f 20 62 65 0a 70 61 73 73 65 64 20 6f 76 65 | w.any.lisp.code.to.be.passed.ove |
| 8700 | 72 20 74 68 65 20 63 6c 69 65 6e 74 2d 73 65 72 76 65 72 20 6c 69 6e 6b 2e 22 0a 20 20 28 6c 65 | r.the.client-server.link."...(le |
| 8720 | 74 2a 20 28 28 6c 69 73 70 2d 74 6f 2d 72 75 6e 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 70 61 | t*.((lisp-to-run.(elnode-http-pa |
| 8740 | 72 61 6d 20 68 74 74 70 63 6f 6e 20 22 6c 69 73 70 22 29 29 0a 20 20 20 20 20 20 20 20 20 28 6c | ram.httpcon."lisp"))..........(l |
| 8760 | 69 73 70 0a 20 20 20 20 20 20 20 20 20 20 28 69 66 20 6c 69 73 70 2d 74 6f 2d 72 75 6e 0a 20 20 | isp...........(if.lisp-to-run... |
| 8780 | 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 72 20 28 72 65 61 64 2d 66 72 6f 6d 2d 73 74 72 69 | ............(car.(read-from-stri |
| 87a0 | 6e 67 20 6c 69 73 70 2d 74 6f 2d 72 75 6e 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 62 69 6e | ng.lisp-to-run))))..........(bin |
| 87c0 | 64 69 6e 67 73 2d 74 6f 2d 75 73 65 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 70 61 72 61 6d 20 | dings-to-use.(elnode-http-param. |
| 87e0 | 68 74 74 70 63 6f 6e 20 22 62 69 6e 64 69 6e 67 73 22 29 29 0a 20 20 20 20 20 20 20 20 20 28 62 | httpcon."bindings"))..........(b |
| 8800 | 69 6e 64 69 6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 28 69 66 20 62 69 6e 64 69 6e 67 73 2d 74 | indings...........(if.bindings-t |
| 8820 | 6f 2d 75 73 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 72 20 28 72 65 61 64 2d 66 | o-use...............(car.(read-f |
| 8840 | 72 6f 6d 2d 73 74 72 69 6e 67 20 62 69 6e 64 69 6e 67 73 2d 74 6f 2d 75 73 65 29 29 29 29 0a 20 | rom-string.bindings-to-use)))).. |
| 8860 | 20 20 20 20 20 20 20 20 28 74 6f 2d 65 76 61 6c 20 28 6c 69 73 74 20 27 6c 65 74 20 62 69 6e 64 | ........(to-eval.(list.'let.bind |
| 8880 | 69 6e 67 73 20 6c 69 73 70 29 29 29 0a 20 20 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 74 | ings.lisp))).....(elnode-http-st |
| 88a0 | 61 72 74 20 68 74 74 70 63 6f 6e 20 32 30 30 20 27 28 22 43 6f 6e 74 65 6e 74 2d 74 79 70 65 22 | art.httpcon.200.'("Content-type" |
| 88c0 | 20 2e 20 22 74 65 78 74 2f 70 6c 61 69 6e 22 29 29 0a 20 20 20 20 28 6c 65 74 20 28 28 6e 6f 6d | ..."text/plain")).....(let.((nom |
| 88e0 | 65 73 73 61 67 65 20 74 29 29 0a 20 20 20 20 20 20 28 77 69 74 68 2d 73 74 64 6f 75 74 2d 74 6f | essage.t)).......(with-stdout-to |
| 8900 | 2d 65 6c 6e 6f 64 65 20 68 74 74 70 63 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 28 65 76 61 6c 20 | -elnode.httpcon...........(eval. |
| 8920 | 74 6f 2d 65 76 61 6c 29 29 29 29 29 0a 0a 28 65 72 74 2d 64 65 66 74 65 73 74 20 65 6c 6e 6f 64 | to-eval)))))..(ert-deftest.elnod |
| 8940 | 65 2d 72 6c 65 2d 2d 68 61 6e 64 6c 65 72 20 28 29 0a 20 20 22 54 65 73 74 20 74 68 65 20 52 65 | e-rle--handler.()..."Test.the.Re |
| 8960 | 6d 6f 74 65 20 4c 69 73 70 20 45 76 61 6c 75 61 74 6f 72 20 68 61 6e 64 6c 65 72 2e 22 0a 20 20 | mote.Lisp.Evaluator.handler."... |
| 8980 | 3a 65 78 70 65 63 74 65 64 2d 72 65 73 75 6c 74 20 3a 66 61 69 6c 65 64 0a 20 20 28 66 6c 65 74 | :expected-result.:failed...(flet |
| 89a0 | 20 28 28 6c 69 73 70 2d 65 6e 63 6f 64 65 20 28 70 61 72 61 6d 20 6c 69 73 70 29 0a 20 20 20 20 | .((lisp-encode.(param.lisp)..... |
| 89c0 | 20 20 20 20 20 20 20 28 63 6f 6e 73 20 70 61 72 61 6d 20 28 66 6f 72 6d 61 74 20 22 25 53 22 20 | .......(cons.param.(format."%S". |
| 89e0 | 6c 69 73 70 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 64 6f 2d 74 65 73 74 20 28 6c 69 73 70 20 | lisp)))..........(do-test.(lisp. |
| 8a00 | 62 69 6e 64 69 6e 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 66 61 6b 69 72 2d 6d 6f 63 6b | bindings)............(fakir-mock |
| 8a20 | 2d 70 72 6f 63 65 73 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 74 74 70 63 6f 6e | -process................:httpcon |
| 8a40 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 70 | ................((:elnode-http-p |
| 8a60 | 61 72 61 6d 73 20 28 6c 69 73 74 20 6c 69 73 70 20 62 69 6e 64 69 6e 67 73 29 29 29 0a 20 20 20 | arams.(list.lisp.bindings))).... |
| 8a80 | 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 72 6c 65 2d 2d 68 61 6e 64 6c 65 72 20 3a | ..........(elnode-rle--handler.: |
| 8aa0 | 68 74 74 70 63 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 | httpcon)..............(with-curr |
| 8ac0 | 65 6e 74 2d 62 75 66 66 65 72 20 28 70 72 6f 63 65 73 73 2d 62 75 66 66 65 72 20 3a 68 74 74 70 | ent-buffer.(process-buffer.:http |
| 8ae0 | 63 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 | con)................(goto-char.( |
| 8b00 | 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 46 69 | point-min))................;;.Fi |
| 8b20 | 6e 64 20 74 68 65 20 68 65 61 64 65 72 20 65 6e 64 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | nd.the.header.end............... |
| 8b40 | 20 20 28 72 65 2d 73 65 61 72 63 68 2d 66 6f 72 77 61 72 64 20 22 5c 72 5c 6e 5c 72 5c 6e 22 20 | ..(re-search-forward."\r\n\r\n". |
| 8b60 | 6e 69 6c 20 27 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 | nil.'t)................(buffer-s |
| 8b80 | 75 62 73 74 72 69 6e 67 20 28 70 6f 69 6e 74 29 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 29 | ubstring.(point).(point-max))))) |
| 8ba0 | 29 0a 20 20 20 20 20 20 28 73 68 6f 75 6c 64 0a 20 20 20 20 20 20 20 28 65 71 75 61 6c 0a 20 20 | ).......(should........(equal... |
| 8bc0 | 20 20 20 20 20 20 3b 3b 20 4d 61 74 63 68 20 74 68 65 20 63 6f 6e 74 65 6e 74 20 74 72 61 6e 73 | ......;;.Match.the.content.trans |
| 8be0 | 66 65 72 20 65 6e 63 6f 64 65 64 0a 20 20 20 20 20 20 20 20 22 63 5c 72 5c 6e 68 65 6c 6c 6f 20 | fer.encoded........."c\r\nhello. |
| 8c00 | 77 6f 72 6c 64 21 5c 72 5c 6e 30 5c 72 5c 6e 5c 72 5c 6e 22 0a 20 20 20 20 20 20 20 20 28 6c 65 | world!\r\n0\r\n\r\n".........(le |
| 8c20 | 74 2a 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6c 69 73 70 20 28 6c 69 73 70 2d 65 6e 63 6f | t*.............((lisp.(lisp-enco |
| 8c40 | 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 6c 69 73 70 22 20 27 28 | de....................."lisp".'( |
| 8c60 | 6c 65 74 20 28 28 61 20 22 68 65 6c 6c 6f 20 77 6f 72 6c 64 21 22 29 29 20 28 70 72 69 6e 63 20 | let.((a."hello.world!")).(princ. |
| 8c80 | 61 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 69 6e 64 69 6e 67 73 20 28 6c 69 | a))))..............(bindings.(li |
| 8ca0 | 73 70 2d 65 6e 63 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | sp-encode....................... |
| 8cc0 | 20 20 22 62 69 6e 64 69 6e 67 73 22 20 27 28 28 61 20 31 30 29 28 62 20 32 30 29 29 29 29 29 0a | .."bindings".'((a.10)(b.20))))). |
| 8ce0 | 20 20 20 20 20 20 20 20 20 20 28 64 6f 2d 74 65 73 74 20 6c 69 73 70 20 62 69 6e 64 69 6e 67 73 | ..........(do-test.lisp.bindings |
| 8d00 | 29 29 29 29 0a 20 20 20 20 20 20 28 73 68 6f 75 6c 64 0a 20 20 20 20 20 20 20 28 65 71 75 61 6c | )))).......(should........(equal |
| 8d20 | 0a 20 20 20 20 20 20 20 20 22 32 5c 72 5c 6e 33 30 5c 72 5c 6e 30 5c 72 5c 6e 5c 72 5c 6e 22 0a | ........."2\r\n30\r\n0\r\n\r\n". |
| 8d40 | 20 20 20 20 20 20 20 20 28 6c 65 74 2a 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6c 69 73 70 | ........(let*.............((lisp |
| 8d60 | 20 28 6c 69 73 70 2d 65 6e 63 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .(lisp-encode................... |
| 8d80 | 20 20 22 6c 69 73 70 22 20 27 28 6c 65 74 20 28 28 61 20 28 2b 20 62 20 31 30 29 29 29 20 28 70 | .."lisp".'(let.((a.(+.b.10))).(p |
| 8da0 | 72 69 6e 63 20 61 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 69 6e 64 69 6e 67 | rinc.a))))..............(binding |
| 8dc0 | 73 20 28 6c 69 73 70 2d 65 6e 63 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | s.(lisp-encode.................. |
| 8de0 | 20 20 20 20 20 20 20 22 62 69 6e 64 69 6e 67 73 22 20 27 28 28 61 20 31 30 29 28 62 20 32 30 29 | ......."bindings".'((a.10)(b.20) |
| 8e00 | 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 64 6f 2d 74 65 73 74 20 6c 69 73 70 20 62 69 6e | ))))...........(do-test.lisp.bin |
| 8e20 | 64 69 6e 67 73 29 29 29 29 29 29 0a 0a 28 64 65 66 76 61 72 20 65 6c 6e 6f 64 65 2d 72 6c 65 2d | dings))))))..(defvar.elnode-rle- |
| 8e40 | 2d 73 65 72 76 65 72 73 20 28 6d 61 6b 65 2d 68 61 73 68 2d 74 61 62 6c 65 20 3a 74 65 73 74 20 | -servers.(make-hash-table.:test. |
| 8e60 | 27 65 71 75 61 6c 29 0a 20 20 22 54 68 65 20 68 61 73 68 20 6f 66 20 52 4c 45 20 73 65 72 76 65 | 'equal)..."The.hash.of.RLE.serve |
| 8e80 | 72 73 20 61 76 61 69 6c 61 62 6c 65 2e 22 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 72 | rs.available.")..(defun.elnode-r |
| 8ea0 | 6c 65 2d 2d 6c 6f 61 64 2d 70 61 74 68 2d 69 7a 65 20 28 6c 69 73 70 29 0a 20 20 22 57 72 61 70 | le--load-path-ize.(lisp)..."Wrap |
| 8ec0 | 20 4c 49 53 50 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 6c 6f 61 64 2d 70 61 74 68 2e 22 | .LISP.in.the.current.load-path." |
| 8ee0 | 0a 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 3b 3b 20 54 68 65 72 65 20 69 73 20 61 20 76 65 72 79 | ...(concat....;;.There.is.a.very |
| 8f00 | 20 73 74 72 61 6e 67 65 20 74 68 69 6e 67 20 77 69 74 68 20 73 65 6e 64 69 6e 67 20 6c 69 73 70 | .strange.thing.with.sending.lisp |
| 8f20 | 20 74 6f 0a 20 20 20 3b 3b 20 28 72 65 61 64 29 20 6f 76 65 72 20 61 20 70 69 70 65 64 20 73 74 | .to....;;.(read).over.a.piped.st |
| 8f40 | 72 65 61 6d 2e 2e 2e 20 28 72 65 61 64 29 20 63 61 6e 27 74 20 63 6f 70 65 20 77 69 74 68 0a 20 | ream....(read).can't.cope.with.. |
| 8f60 | 20 20 3b 3b 20 6d 75 6c 74 69 70 6c 65 20 6c 69 6e 65 73 3b 20 73 6f 20 77 65 20 65 6e 63 6f 64 | ..;;.multiple.lines;.so.we.encod |
| 8f80 | 65 20 6e 65 77 6c 69 6e 65 20 68 65 72 65 2e 0a 20 20 20 3b 3b 28 72 65 70 6c 61 63 65 2d 72 65 | e.newline.here.....;;(replace-re |
| 8fa0 | 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 0a 20 20 20 3b 3b 20 22 5c 6e 22 0a 20 20 20 3b 3b 20 | gexp-in-string....;;."\n"....;;. |
| 8fc0 | 22 5c 5c 5c 5c 6e 22 0a 20 20 20 28 66 6f 72 6d 61 74 20 22 28 70 72 6f 67 6e 20 28 73 65 74 71 | "\\\\n"....(format."(progn.(setq |
| 8fe0 | 20 6c 6f 61 64 2d 70 61 74 68 20 28 71 75 6f 74 65 20 25 53 29 29 20 25 73 29 22 0a 20 20 20 20 | .load-path.(quote.%S)).%s)"..... |
| 9000 | 20 20 20 20 20 20 20 28 61 70 70 65 6e 64 20 28 6c 69 73 74 20 64 65 66 61 75 6c 74 2d 64 69 72 | .......(append.(list.default-dir |
| 9020 | 65 63 74 6f 72 79 29 20 6c 6f 61 64 2d 70 61 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 6c 69 | ectory).load-path)............li |
| 9040 | 73 70 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 72 6c 65 2d 2d 68 61 6e 64 6c 65 | sp)))..(defun.elnode-rle--handle |
| 9060 | 72 2d 6c 69 73 70 20 28 74 6f 2d 72 65 71 75 69 72 65 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 | r-lisp.(to-require)..."Return.a. |
| 9080 | 66 69 6c 65 20 77 69 74 68 20 4c 69 73 70 20 74 6f 20 73 74 61 72 74 20 45 6c 6e 6f 64 65 20 77 | file.with.Lisp.to.start.Elnode.w |
| 90a0 | 69 74 68 20 54 4f 2d 52 45 51 55 49 52 45 2e 0a 0a 55 73 65 64 20 74 6f 20 63 6f 6e 73 74 72 75 | ith.TO-REQUIRE...Used.to.constru |
| 90c0 | 63 74 20 74 68 65 20 6c 69 73 70 20 74 6f 20 73 65 6e 64 2e 20 20 59 6f 75 27 72 65 20 75 6e 6c | ct.the.lisp.to.send...You're.unl |
| 90e0 | 69 6b 65 6c 79 20 74 6f 20 6e 65 65 64 20 74 6f 0a 6f 76 65 72 72 69 64 65 20 74 68 69 73 20 61 | ikely.to.need.to.override.this.a |
| 9100 | 74 20 61 6c 6c 2c 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 6a 75 73 74 20 68 65 72 65 | t.all,.the.function.is.just.here |
| 9120 | 20 74 6f 20 6d 61 6b 65 20 74 68 65 0a 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 65 61 73 69 | .to.make.the.implementation.easi |
| 9140 | 65 72 20 74 6f 20 64 65 62 75 67 2e 0a 0a 54 4f 2d 52 45 51 55 49 52 45 20 69 73 20 61 20 6c 69 | er.to.debug...TO-REQUIRE.is.a.li |
| 9160 | 73 74 20 6f 66 20 74 68 69 6e 67 73 20 74 6f 20 72 65 71 75 69 72 65 2c 20 63 75 72 72 65 6e 74 | st.of.things.to.require,.current |
| 9180 | 6c 79 20 6f 6e 6c 79 20 31 20 69 73 0a 61 6c 6c 6f 77 65 64 2e 22 0a 20 20 28 6c 65 74 20 28 28 | ly.only.1.is.allowed."...(let.(( |
| 91a0 | 74 65 6d 70 2d 66 69 6c 65 0a 20 20 20 20 20 20 20 20 20 28 6d 61 6b 65 2d 74 65 6d 70 2d 66 69 | temp-file..........(make-temp-fi |
| 91c0 | 6c 65 0a 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 65 6c 6e 6f 64 65 2d 72 6c 65 | le...........(format."elnode-rle |
| 91e0 | 2d 25 73 22 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 74 6f 2d 72 65 71 75 69 72 65 29 29 29 29 | -%s".(symbol-name.to-require)))) |
| 9200 | 29 0a 20 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 66 69 6c 65 20 74 65 6d 70 2d 66 69 6c 65 0a | ).....(with-temp-file.temp-file. |
| 9220 | 20 20 20 20 20 20 28 69 6e 73 65 72 74 0a 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 72 6c 65 | ......(insert........(elnode-rle |
| 9240 | 2d 2d 6c 6f 61 64 2d 70 61 74 68 2d 69 7a 65 0a 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 | --load-path-ize.........(format. |
| 9260 | 22 28 70 72 6f 67 6e 0a 20 28 73 65 74 71 20 65 6c 6e 6f 64 65 2d 64 6f 2d 69 6e 69 74 20 6e 69 | "(progn..(setq.elnode-do-init.ni |
| 9280 | 6c 29 0a 20 28 73 65 74 71 20 65 6c 6e 6f 64 65 2d 2d 64 6f 2d 65 72 72 6f 72 2d 6c 6f 67 67 69 | l)..(setq.elnode--do-error-loggi |
| 92a0 | 6e 67 20 6e 69 6c 29 0a 20 28 72 65 71 75 69 72 65 20 28 71 75 6f 74 65 20 25 73 29 29 0a 20 28 | ng.nil)..(require.(quote.%s))..( |
| 92c0 | 72 65 71 75 69 72 65 20 28 71 75 6f 74 65 20 65 6c 6e 6f 64 65 2d 72 6c 65 29 29 0a 20 28 74 6f | require.(quote.elnode-rle))..(to |
| 92e0 | 67 67 6c 65 2d 64 65 62 75 67 2d 6f 6e 2d 65 72 72 6f 72 29 0a 20 28 73 65 74 71 20 65 6c 6e 6f | ggle-debug-on-error)..(setq.elno |
| 9300 | 64 65 2d 72 6c 65 2d 70 6f 72 74 20 28 65 6c 6e 6f 64 65 2d 66 69 6e 64 2d 66 72 65 65 2d 73 65 | de-rle-port.(elnode-find-free-se |
| 9320 | 72 76 69 63 65 29 29 0a 20 28 65 6c 6e 6f 64 65 2d 73 74 61 72 74 20 27 65 6c 6e 6f 64 65 2d 72 | rvice))..(elnode-start.'elnode-r |
| 9340 | 6c 65 2d 2d 68 61 6e 64 6c 65 72 20 3a 70 6f 72 74 20 65 6c 6e 6f 64 65 2d 72 6c 65 2d 70 6f 72 | le--handler.:port.elnode-rle-por |
| 9360 | 74 29 0a 20 28 70 72 69 6e 74 20 28 66 6f 72 6d 61 74 20 5c 22 5c 5c 6e 65 6c 6e 6f 64 65 2d 70 | t)..(print.(format.\"\\nelnode-p |
| 9380 | 6f 72 74 3d 25 25 64 5c 5c 6e 5c 22 20 70 6f 72 74 29 29 29 22 0a 20 20 20 20 20 20 20 20 20 20 | ort=%%d\\n\".port)))"........... |
| 93a0 | 20 20 20 20 20 20 74 6f 2d 72 65 71 75 69 72 65 29 29 29 29 0a 20 20 20 20 74 65 6d 70 2d 66 69 | ......to-require)))).....temp-fi |
| 93c0 | 6c 65 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 72 6c 65 2d 2d 68 74 74 70 63 6f 6e | le))..(defun.elnode-rle--httpcon |
| 93e0 | 2d 6d 61 70 70 65 72 20 28 63 6c 69 65 6e 74 2d 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 20 20 | -mapper.(client-header.......... |
| 9400 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6c 69 65 6e 74 | ..........................client |
| 9420 | 2d 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | -data........................... |
| 9440 | 20 20 20 20 20 20 20 20 20 65 6c 6e 6f 64 65 2d 68 74 74 70 63 6f 6e 0a 20 20 20 20 20 20 20 20 | .........elnode-httpcon......... |
| 9460 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 26 6f 70 74 69 | ...........................&opti |
| 9480 | 6f 6e 61 6c 20 65 6e 64 2d 63 61 6c 6c 62 61 63 6b 29 0a 20 20 22 45 6c 6e 6f 64 65 20 73 70 65 | onal.end-callback)..."Elnode.spe |
| 94a0 | 63 69 66 69 63 20 63 6c 69 65 6e 74 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 48 54 54 50 20 | cific.client.connection.to.HTTP. |
| 94c0 | 63 6f 6e 6e 65 63 74 69 6f 6e 20 6d 61 70 70 65 72 2e 0a 0a 4d 61 70 73 20 63 6c 69 65 6e 74 20 | connection.mapper...Maps.client. |
| 94e0 | 61 73 79 6e 63 20 64 61 74 61 20 72 65 73 70 6f 6e 73 65 73 20 74 6f 20 61 6e 20 65 6c 6e 6f 64 | async.data.responses.to.an.elnod |
| 9500 | 65 20 73 65 72 76 65 72 20 72 65 73 70 6f 6e 73 65 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 28 70 | e.server.response."...(unless.(p |
| 9520 | 72 6f 63 65 73 73 2d 67 65 74 20 65 6c 6e 6f 64 65 2d 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 | rocess-get.elnode-httpcon.:elnod |
| 9540 | 65 2d 72 6c 65 2d 68 65 61 64 65 72 2d 73 65 6e 74 29 0a 20 20 20 20 28 65 6c 6e 6f 64 65 2d 68 | e-rle-header-sent).....(elnode-h |
| 9560 | 74 74 70 2d 73 74 61 72 74 0a 20 20 20 20 20 65 6c 6e 6f 64 65 2d 68 74 74 70 63 6f 6e 0a 20 20 | ttp-start......elnode-httpcon... |
| 9580 | 20 20 20 28 67 65 74 68 61 73 68 20 27 73 74 61 74 75 73 2d 63 6f 64 65 20 63 6c 69 65 6e 74 2d | ...(gethash.'status-code.client- |
| 95a0 | 68 65 61 64 65 72 29 29 0a 20 20 20 20 28 70 72 6f 63 65 73 73 2d 70 75 74 20 65 6c 6e 6f 64 65 | header)).....(process-put.elnode |
| 95c0 | 2d 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 72 6c 65 2d 68 65 61 64 65 72 2d 73 65 6e 74 | -httpcon.:elnode-rle-header-sent |
| 95e0 | 20 74 29 29 0a 20 20 28 69 66 20 28 65 71 20 63 6c 69 65 6e 74 2d 64 61 74 61 20 3a 64 6f 6e 65 | .t))...(if.(eq.client-data.:done |
| 9600 | 29 0a 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 72 65 74 75 72 6e 20 65 6c 6e 6f | ).......(elnode-http-return.elno |
| 9620 | 64 65 2d 68 74 74 70 63 6f 6e 29 20 3b 20 72 65 74 75 72 6e 20 69 66 20 77 65 27 72 65 20 64 6f | de-httpcon).;.return.if.we're.do |
| 9640 | 6e 65 0a 20 20 20 20 20 20 3b 3b 20 45 6c 73 65 20 6a 75 73 74 20 73 65 6e 64 20 74 68 65 20 64 | ne.......;;.Else.just.send.the.d |
| 9660 | 61 74 61 0a 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 65 6e 64 2d 73 74 72 69 | ata.......(elnode-http-send-stri |
| 9680 | 6e 67 20 65 6c 6e 6f 64 65 2d 68 74 74 70 63 6f 6e 20 63 6c 69 65 6e 74 2d 64 61 74 61 29 29 29 | ng.elnode-httpcon.client-data))) |
| 96a0 | 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 72 6c 65 2d 2d 63 6c 69 65 6e 74 2d 64 61 74 61 | ..(defun.elnode-rle--client-data |
| 96c0 | 2d 6d 61 70 70 65 72 20 28 63 6f 6e 20 68 65 61 64 65 72 20 64 61 74 61 20 73 74 72 65 61 6d 20 | -mapper.(con.header.data.stream. |
| 96e0 | 65 6e 64 2d 63 61 6c 6c 62 61 63 6b 29 0a 20 20 22 52 65 63 65 76 69 65 73 20 64 61 74 61 20 66 | end-callback)..."Recevies.data.f |
| 9700 | 72 6f 6d 20 74 68 65 20 52 4c 45 20 73 65 72 76 65 72 20 61 6e 64 20 73 65 6e 64 73 20 69 74 20 | rom.the.RLE.server.and.sends.it. |
| 9720 | 74 6f 20 74 68 65 20 53 54 52 45 41 4d 2e 0a 0a 45 4e 44 2d 43 41 4c 4c 42 41 43 4b 20 69 73 20 | to.the.STREAM...END-CALLBACK.is. |
| 9740 | 74 6f 20 62 65 20 63 61 6c 6c 65 64 20 77 68 65 6e 20 74 68 65 20 63 6c 69 65 6e 74 20 73 65 65 | to.be.called.when.the.client.see |
| 9760 | 73 20 45 4f 46 2e 22 0a 20 20 28 63 6f 6e 64 0a 20 20 20 20 28 28 70 72 6f 63 65 73 73 70 20 73 | s.EOF."...(cond.....((processp.s |
| 9780 | 74 72 65 61 6d 29 20 3b 20 74 68 69 73 20 73 68 6f 75 6c 64 20 72 65 61 6c 6c 79 20 65 6c 6e 6f | tream).;.this.should.really.elno |
| 97a0 | 64 65 2d 68 74 74 70 2d 70 0a 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 72 6c 65 2d 2d 68 74 74 70 | de-http-p......(elnode-rle--http |
| 97c0 | 63 6f 6e 2d 6d 61 70 70 65 72 20 68 65 61 64 65 72 20 64 61 74 61 20 73 74 72 65 61 6d 20 65 6e | con-mapper.header.data.stream.en |
| 97e0 | 64 2d 63 61 6c 6c 62 61 63 6b 29 29 0a 20 20 20 20 28 28 62 75 66 66 65 72 70 20 73 74 72 65 61 | d-callback)).....((bufferp.strea |
| 9800 | 6d 29 0a 20 20 20 20 20 28 69 66 20 28 6e 6f 74 20 28 65 71 20 64 61 74 61 20 3a 64 6f 6e 65 29 | m)......(if.(not.(eq.data.:done) |
| 9820 | 29 0a 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 | )..........(with-current-buffer. |
| 9840 | 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f | stream............(save-excursio |
| 9860 | 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 | n..............(goto-char.(point |
| 9880 | 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 64 61 74 61 | -max))..............(insert.data |
| 98a0 | 29 29 29 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 50 72 6f 63 65 73 73 20 69 73 20 64 6f 6e 65 2e | )))..........;;.Process.is.done. |
| 98c0 | 0a 20 20 20 20 20 20 20 20 20 28 61 6e 64 20 28 66 75 6e 63 74 69 6f 6e 70 20 65 6e 64 2d 63 61 | ..........(and.(functionp.end-ca |
| 98e0 | 6c 6c 62 61 63 6b 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 65 | llback)...............(funcall.e |
| 9900 | 6e 64 2d 63 61 6c 6c 62 61 63 6b 20 68 65 61 64 65 72 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e | nd-callback.header))))))..(defun |
| 9920 | 20 65 6c 6e 6f 64 65 2d 72 6c 65 2d 2d 63 61 6c 6c 2d 6d 61 70 70 65 72 20 28 64 61 74 61 2d 74 | .elnode-rle--call-mapper.(data-t |
| 9940 | 6f 2d 73 65 6e 64 20 73 74 72 65 61 6d 20 70 6f 72 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | o-send.stream.port.............. |
| 9960 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 26 6f 70 74 69 6f 6e 61 6c 20 65 6e 64 | ...................&optional.end |
| 9980 | 2d 63 61 6c 6c 62 61 63 6b 29 0a 20 20 22 4d 61 6b 65 20 61 20 63 6c 69 65 6e 74 20 63 61 6c 6c | -callback)..."Make.a.client.call |
| 99a0 | 20 74 6f 20 50 4f 52 54 20 6d 61 70 70 69 6e 67 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 53 54 52 | .to.PORT.mapping.response.to.STR |
| 99c0 | 45 41 4d 2e 0a 0a 57 68 65 6e 20 69 74 20 66 69 6e 69 73 68 65 73 2c 20 63 61 6c 6c 20 45 4e 44 | EAM...When.it.finishes,.call.END |
| 99e0 | 2d 43 41 4c 4c 42 41 43 4b 2c 20 69 66 20 70 72 65 73 65 6e 74 2c 20 77 69 74 68 20 74 68 65 20 | -CALLBACK,.if.present,.with.the. |
| 9a00 | 68 65 61 64 65 72 2e 22 0a 20 20 28 77 65 62 2d 68 74 74 70 2d 70 6f 73 74 0a 20 20 20 28 6c 61 | header."...(web-http-post....(la |
| 9a20 | 6d 62 64 61 20 28 63 6f 6e 20 68 65 61 64 65 72 20 64 61 74 61 29 0a 20 20 20 20 20 28 65 6c 6e | mbda.(con.header.data)......(eln |
| 9a40 | 6f 64 65 2d 72 6c 65 2d 2d 63 6c 69 65 6e 74 2d 64 61 74 61 2d 6d 61 70 70 65 72 0a 20 20 20 20 | ode-rle--client-data-mapper..... |
| 9a60 | 20 20 63 6f 6e 0a 20 20 20 20 20 20 68 65 61 64 65 72 0a 20 20 20 20 20 20 64 61 74 61 0a 20 20 | ..con.......header.......data... |
| 9a80 | 20 20 20 20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 65 6e 64 2d 63 61 6c 6c 62 61 63 6b 29 29 0a | ....stream.......end-callback)). |
| 9aa0 | 20 20 20 22 2f 22 0a 20 20 20 3a 68 6f 73 74 20 22 6c 6f 63 61 6c 68 6f 73 74 22 0a 20 20 20 3a | ..."/"....:host."localhost"....: |
| 9ac0 | 70 6f 72 74 20 70 6f 72 74 0a 20 20 20 3a 64 61 74 61 20 64 61 74 61 2d 74 6f 2d 73 65 6e 64 0a | port.port....:data.data-to-send. |
| 9ae0 | 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 78 2d 65 6c 6e | ...:mime-type."application/x-eln |
| 9b00 | 6f 64 65 22 0a 20 20 20 3a 6d 6f 64 65 20 27 73 74 72 65 61 6d 29 29 0a 0a 28 64 65 66 75 6e 20 | ode"....:mode.'stream))..(defun. |
| 9b20 | 65 6c 6e 6f 64 65 2d 72 6c 65 2d 2d 6d 61 6b 65 2d 73 65 72 76 65 72 20 28 74 6f 2d 72 65 71 75 | elnode-rle--make-server.(to-requ |
| 9b40 | 69 72 65 29 0a 20 20 22 4d 61 6b 65 20 61 6e 20 52 4c 45 20 73 65 72 76 65 72 2c 20 61 20 63 68 | ire)..."Make.an.RLE.server,.a.ch |
| 9b60 | 69 6c 64 20 45 6d 61 63 73 20 72 75 6e 6e 69 6e 67 20 74 68 65 20 52 4c 45 20 68 61 6e 64 6c 65 | ild.Emacs.running.the.RLE.handle |
| 9b80 | 72 2e 0a 0a 52 65 74 75 72 6e 20 61 20 70 72 6f 63 20 74 68 61 74 20 72 65 70 72 65 73 65 6e 74 | r...Return.a.proc.that.represent |
| 9ba0 | 73 20 74 68 65 20 63 68 69 6c 64 20 70 72 6f 63 65 73 73 2e 20 20 54 68 65 20 63 68 69 6c 64 0a | s.the.child.process...The.child. |
| 9bc0 | 70 72 6f 63 65 73 73 20 68 61 73 20 61 20 70 72 6f 70 65 72 74 79 20 60 3a 65 78 65 63 27 20 77 | process.has.a.property.`:exec'.w |
| 9be0 | 68 69 63 68 20 69 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 63 61 6c 6c 73 20 74 68 | hich.is.a.function.that.calls.th |
| 9c00 | 65 0a 52 4c 45 20 68 61 6e 64 6c 65 72 20 69 6e 20 74 68 65 20 63 68 69 6c 64 27 73 20 45 6c 6e | e.RLE.handler.in.the.child's.Eln |
| 9c20 | 6f 64 65 20 73 65 72 76 65 72 20 28 77 61 69 74 69 6e 67 20 66 6f 72 20 74 68 65 20 73 65 72 76 | ode.server.(waiting.for.the.serv |
| 9c40 | 65 72 0a 74 6f 20 73 74 61 72 74 20 66 69 72 73 74 20 61 6e 64 20 70 72 6f 76 69 64 65 20 74 68 | er.to.start.first.and.provide.th |
| 9c60 | 65 20 72 65 6c 65 76 61 6e 74 20 70 6f 72 74 29 20 62 79 20 63 61 6c 6c 69 6e 67 0a 60 65 6c 6e | e.relevant.port).by.calling.`eln |
| 9c80 | 6f 64 65 2d 72 6c 65 2d 63 61 6c 6c 2d 6d 61 70 70 65 72 27 20 77 69 74 68 20 74 68 65 20 73 74 | ode-rle-call-mapper'.with.the.st |
| 9ca0 | 72 65 61 6d 20 66 72 6f 6d 20 74 68 65 20 60 3a 65 78 65 63 27 20 63 61 6c 6c 0a 61 6e 64 20 74 | ream.from.the.`:exec'.call.and.t |
| 9cc0 | 68 65 20 63 68 69 6c 64 27 73 20 72 65 6d 6f 74 65 20 48 54 54 50 20 70 6f 72 74 2e 0a 0a 54 68 | he.child's.remote.HTTP.port...Th |
| 9ce0 | 65 20 60 3a 65 78 65 63 27 20 70 72 6f 63 20 77 69 6c 6c 20 73 69 67 6e 61 6c 20 60 65 6c 6e 6f | e.`:exec'.proc.will.signal.`elno |
| 9d00 | 64 65 2d 72 6c 65 2d 63 68 69 6c 64 2d 70 6f 72 74 27 20 69 66 20 74 68 65 20 63 68 69 6c 64 0a | de-rle-child-port'.if.the.child. |
| 9d20 | 73 65 72 76 65 72 20 64 6f 65 73 20 6e 6f 74 20 73 74 61 72 74 20 70 72 6f 70 65 72 6c 79 2e 22 | server.does.not.start.properly." |
| 9d40 | 20 20 3b 20 79 65 73 2e 20 49 20 6b 6e 6f 77 20 69 74 27 73 20 62 6c 6f 6f 64 79 20 63 6f 6d 70 | ..;.yes..I.know.it's.bloody.comp |
| 9d60 | 6c 69 63 61 74 65 64 2e 0a 20 20 28 6c 65 74 2a 20 28 28 70 72 6f 63 2d 62 75 66 66 65 72 0a 20 | licated....(let*.((proc-buffer.. |
| 9d80 | 20 20 20 20 20 20 20 20 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 0a 20 20 20 20 | .........(get-buffer-create..... |
| 9da0 | 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 2a 20 25 73 20 2a 22 20 22 74 68 69 6e 67 79 22 | .......(format."*.%s.*"."thingy" |
| 9dc0 | 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 65 6d 61 63 73 72 75 6e 0a 20 20 20 20 20 20 20 20 20 | )))..........(emacsrun.......... |
| 9de0 | 20 22 2f 75 73 72 2f 62 69 6e 2f 65 6d 61 63 73 20 2d 51 20 2d 2d 64 61 65 6d 6f 6e 3d 65 6c 6e | ."/usr/bin/emacs.-Q.--daemon=eln |
| 9e00 | 6f 64 65 2d 64 65 62 75 67 69 74 22 29 0a 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 0a 20 20 20 | ode-debugit")..........(proc.... |
| 9e20 | 20 20 20 20 20 20 20 28 73 74 61 72 74 2d 70 72 6f 63 65 73 73 2d 73 68 65 6c 6c 2d 63 6f 6d 6d | .......(start-process-shell-comm |
| 9e40 | 61 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 22 65 6c 6e 6f 64 65 2d 72 6c 65 2d 73 65 72 76 65 | and............"elnode-rle-serve |
| 9e60 | 72 22 0a 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 | r"............proc-buffer....... |
| 9e80 | 20 20 20 20 20 65 6d 61 63 73 72 75 6e 29 29 0a 20 20 20 20 20 20 20 20 20 28 66 69 6c 65 2d 6f | .....emacsrun))..........(file-o |
| 9ea0 | 66 2d 6c 69 73 70 0a 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 72 6c 65 2d 2d 68 61 | f-lisp...........(elnode-rle--ha |
| 9ec0 | 6e 64 6c 65 72 2d 6c 69 73 70 0a 20 20 20 20 20 20 20 20 20 20 20 74 6f 2d 72 65 71 75 69 72 65 | ndler-lisp............to-require |
| 9ee0 | 29 29 29 0a 20 20 20 20 3b 3b 20 53 74 61 72 74 20 65 6c 6e 6f 64 65 20 69 6e 20 69 74 0a 20 20 | ))).....;;.Start.elnode.in.it... |
| 9f00 | 20 20 28 73 65 72 76 65 72 2d 65 76 61 6c 2d 61 74 20 22 65 6c 6e 6f 64 65 2d 64 65 62 75 67 69 | ..(server-eval-at."elnode-debugi |
| 9f20 | 74 22 20 60 28 6c 6f 61 64 2d 66 69 6c 65 20 2c 66 69 6c 65 2d 6f 66 2d 6c 69 73 70 29 29 0a 20 | t".`(load-file.,file-of-lisp)).. |
| 9f40 | 20 20 20 28 70 72 6f 63 65 73 73 2d 70 75 74 20 70 72 6f 63 20 3a 64 61 65 6d 6f 6e 68 61 6e 64 | ...(process-put.proc.:daemonhand |
| 9f60 | 6c 65 20 22 65 6c 6e 6f 64 65 2d 64 65 62 75 67 69 74 22 29 0a 20 20 20 20 28 70 72 6f 63 65 73 | le."elnode-debugit").....(proces |
| 9f80 | 73 2d 70 75 74 0a 20 20 20 20 20 70 72 6f 63 0a 20 20 20 20 20 3a 70 6f 72 74 0a 20 20 20 20 20 | s-put......proc......:port...... |
| 9fa0 | 28 73 65 72 76 65 72 2d 65 76 61 6c 2d 61 74 0a 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 67 | (server-eval-at.......(process-g |
| 9fc0 | 65 74 20 70 72 6f 63 20 3a 64 61 65 6d 6f 6e 68 61 6e 64 6c 65 29 0a 20 20 20 20 20 20 27 65 6c | et.proc.:daemonhandle).......'el |
| 9fe0 | 6e 6f 64 65 2d 72 6c 65 2d 70 6f 72 74 29 29 0a 20 20 20 20 3b 3b 20 43 6f 6c 6c 65 63 74 20 74 | node-rle-port)).....;;.Collect.t |
| a000 | 68 65 20 70 6f 72 74 20 66 72 6f 6d 20 74 68 65 20 72 65 6d 6f 74 65 20 45 6d 61 63 73 0a 20 20 | he.port.from.the.remote.Emacs... |
| a020 | 20 20 3b 3b 20 2d 20 46 49 58 4d 45 20 74 68 69 73 20 73 68 6f 75 6c 64 20 61 6c 73 6f 20 63 6f | ..;;.-.FIXME.this.should.also.co |
| a040 | 6c 6c 65 63 74 20 74 68 65 20 73 65 63 75 72 65 20 74 6f 6b 65 6e 0a 20 20 20 20 28 73 65 74 2d | llect.the.secure.token.....(set- |
| a060 | 70 72 6f 63 65 73 73 2d 66 69 6c 74 65 72 0a 20 20 20 20 20 70 72 6f 63 0a 20 20 20 20 20 28 6c | process-filter......proc......(l |
| a080 | 61 6d 62 64 61 20 28 70 72 6f 63 20 64 61 74 61 29 0a 20 20 20 20 20 20 20 3b 3b 20 4f 70 74 69 | ambda.(proc.data)........;;.Opti |
| a0a0 | 6f 6e 61 6c 20 64 65 6c 61 79 20 66 6f 72 20 74 65 73 74 20 72 65 61 73 6f 6e 73 0a 20 20 20 20 | onal.delay.for.test.reasons..... |
| a0c0 | 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 70 72 6f 63 65 73 73 | ...(with-current-buffer.(process |
| a0e0 | 2d 62 75 66 66 65 72 20 70 72 6f 63 29 0a 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 | -buffer.proc)..........(save-exc |
| a100 | 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f | ursion............(goto-char.(po |
| a120 | 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 64 61 74 | int-max))............(insert.dat |
| a140 | 61 29 29 29 29 29 0a 20 20 20 20 3b 3b 20 4d 61 6b 65 20 61 20 68 61 6e 64 6c 65 72 20 74 6f 20 | a))))).....;;.Make.a.handler.to. |
| a160 | 63 61 6c 6c 20 74 68 65 20 73 65 72 76 65 72 0a 20 20 20 20 28 70 72 6f 63 65 73 73 2d 70 75 74 | call.the.server.....(process-put |
| a180 | 0a 20 20 20 20 20 70 72 6f 63 20 3a 65 78 65 63 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 64 | ......proc.:exec......(lambda.(d |
| a1a0 | 61 74 61 20 73 74 72 65 61 6d 20 26 6f 70 74 69 6f 6e 61 6c 20 65 6e 64 2d 63 61 6c 6c 62 61 63 | ata.stream.&optional.end-callbac |
| a1c0 | 6b 29 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 65 70 68 65 6d 65 72 61 6c 2d 70 6f 72 74 20 | k)........(let.((ephemeral-port. |
| a1e0 | 28 70 72 6f 63 65 73 73 2d 67 65 74 20 70 72 6f 63 20 3a 70 6f 72 74 29 29 29 0a 20 20 20 20 20 | (process-get.proc.:port)))...... |
| a200 | 20 20 20 20 28 65 6c 6e 6f 64 65 2d 72 6c 65 2d 2d 63 61 6c 6c 2d 6d 61 70 70 65 72 20 64 61 74 | ....(elnode-rle--call-mapper.dat |
| a220 | 61 20 73 74 72 65 61 6d 20 65 70 68 65 6d 65 72 61 6c 2d 70 6f 72 74 20 65 6e 64 2d 63 61 6c 6c | a.stream.ephemeral-port.end-call |
| a240 | 62 61 63 6b 29 29 29 29 0a 20 20 20 20 70 72 6f 63 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f | back)))).....proc))..(defun.elno |
| a260 | 64 65 2d 72 6c 65 2d 2d 73 65 6e 64 65 72 20 28 73 74 72 65 61 6d 20 74 6f 2d 72 65 71 75 69 72 | de-rle--sender.(stream.to-requir |
| a280 | 65 20 62 69 6e 64 69 6e 67 73 20 62 6f 64 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | e.bindings.body................. |
| a2a0 | 20 20 20 20 20 20 20 20 20 20 20 26 6f 70 74 69 6f 6e 61 6c 20 65 6e 64 2d 63 61 6c 6c 62 61 63 | ...........&optional.end-callbac |
| a2c0 | 6b 29 0a 20 20 22 4d 61 6b 65 20 61 20 63 61 6c 6c 20 75 73 69 6e 67 20 61 20 63 6c 69 65 6e 74 | k)..."Make.a.call.using.a.client |
| a2e0 | 20 74 6f 20 74 68 65 20 52 4c 45 20 73 65 72 76 65 72 20 65 6c 73 65 77 68 65 72 65 2e 0a 0a 54 | .to.the.RLE.server.elsewhere...T |
| a300 | 68 65 20 52 4c 45 20 73 65 72 76 65 72 20 69 73 20 72 65 75 73 65 64 20 6f 76 65 72 20 54 4f 2d | he.RLE.server.is.reused.over.TO- |
| a320 | 52 45 51 55 49 52 45 2c 20 69 66 20 69 74 27 73 20 6e 6f 74 20 61 6c 72 65 61 64 79 0a 65 78 69 | REQUIRE,.if.it's.not.already.exi |
| a340 | 73 74 69 6e 67 2c 20 69 74 20 69 73 20 63 72 65 61 74 65 64 2e 22 0a 20 20 28 6c 65 74 20 28 28 | sting,.it.is.created."...(let.(( |
| a360 | 73 65 72 76 65 72 20 28 67 65 74 68 61 73 68 20 74 6f 2d 72 65 71 75 69 72 65 20 65 6c 6e 6f 64 | server.(gethash.to-require.elnod |
| a380 | 65 2d 72 6c 65 2d 2d 73 65 72 76 65 72 73 29 29 29 0a 20 20 20 20 3b 3b 20 4d 61 6b 65 20 74 68 | e-rle--servers))).....;;.Make.th |
| a3a0 | 65 20 73 65 72 76 65 72 20 69 66 20 77 65 20 64 6f 6e 27 74 20 68 61 76 65 20 69 74 0a 20 20 20 | e.server.if.we.don't.have.it.... |
| a3c0 | 20 28 75 6e 6c 65 73 73 20 73 65 72 76 65 72 0a 20 20 20 20 20 20 28 73 65 74 71 20 73 65 72 76 | .(unless.server.......(setq.serv |
| a3e0 | 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 74 68 61 73 68 20 74 6f 2d 72 65 71 75 69 | er.............(puthash.to-requi |
| a400 | 72 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d | re......................(elnode- |
| a420 | 72 6c 65 2d 2d 6d 61 6b 65 2d 73 65 72 76 65 72 20 28 63 61 72 20 74 6f 2d 72 65 71 75 69 72 65 | rle--make-server.(car.to-require |
| a440 | 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 6e 6f 64 65 2d 72 | ))......................elnode-r |
| a460 | 6c 65 2d 2d 73 65 72 76 65 72 73 29 29 29 0a 20 20 20 20 3b 3b 20 4e 6f 77 20 6d 61 6b 65 20 74 | le--servers))).....;;.Now.make.t |
| a480 | 68 65 20 63 61 6c 6c 20 74 6f 20 74 68 65 20 73 65 72 76 65 72 0a 20 20 20 20 28 6c 65 74 20 28 | he.call.to.the.server.....(let.( |
| a4a0 | 28 64 61 74 61 20 28 6d 61 6b 65 2d 68 61 73 68 2d 74 61 62 6c 65 20 3a 74 65 73 74 20 27 65 71 | (data.(make-hash-table.:test.'eq |
| a4c0 | 75 61 6c 29 29 29 0a 20 20 20 20 20 20 28 70 75 74 68 61 73 68 20 22 62 69 6e 64 69 6e 67 73 22 | ual))).......(puthash."bindings" |
| a4e0 | 20 28 66 6f 72 6d 61 74 20 22 25 53 22 20 62 69 6e 64 69 6e 67 73 29 20 64 61 74 61 29 0a 20 20 | .(format."%S".bindings).data)... |
| a500 | 20 20 20 20 28 70 75 74 68 61 73 68 20 22 6c 69 73 70 22 20 28 66 6f 72 6d 61 74 20 22 25 53 22 | ....(puthash."lisp".(format."%S" |
| a520 | 20 62 6f 64 79 29 20 64 61 74 61 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 63 6c 69 65 6e 74 | .body).data).......(let.((client |
| a540 | 2d 63 6f 6e 6e 65 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c | -connection..............(funcal |
| a560 | 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 73 65 72 | l...............(process-get.ser |
| a580 | 76 65 72 20 3a 65 78 65 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 0a 20 20 | ver.:exec)...............data... |
| a5a0 | 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | ............stream.............. |
| a5c0 | 20 65 6e 64 2d 63 61 6c 6c 62 61 63 6b 29 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 49 66 20 77 | .end-callback))).........;;.If.w |
| a5e0 | 65 27 72 65 20 73 74 72 65 61 6d 69 6e 67 20 74 6f 20 65 6c 6e 6f 64 65 20 74 68 65 6e 20 77 65 | e're.streaming.to.elnode.then.we |
| a600 | 20 6e 65 65 64 20 74 6f 20 6d 61 72 6b 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 20 20 20 | .need.to.mark.the.connection.... |
| a620 | 20 20 20 20 20 28 77 68 65 6e 20 28 70 72 6f 63 65 73 73 70 20 73 74 72 65 61 6d 29 0a 20 20 20 | .....(when.(processp.stream).... |
| a640 | 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 70 75 74 0a 20 20 20 20 20 20 20 20 20 20 20 73 | .......(process-put............s |
| a660 | 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 3a 65 6c 6e 6f 64 65 2d 63 68 69 6c 64 2d 70 | tream............:elnode-child-p |
| a680 | 72 6f 63 65 73 73 0a 20 20 20 20 20 20 20 20 20 20 20 63 6c 69 65 6e 74 2d 63 6f 6e 6e 65 63 74 | rocess............client-connect |
| a6a0 | 69 6f 6e 29 29 29 29 29 29 0a 0a 28 64 65 66 76 61 72 20 65 6c 6e 6f 64 65 2d 72 6c 65 2d 2d 61 | ion))))))..(defvar.elnode-rle--a |
| a6c0 | 73 79 6e 63 2d 64 6f 2d 65 6e 64 2d 63 61 6c 6c 62 61 63 6b 20 6e 69 6c 0a 20 20 22 55 73 65 64 | sync-do-end-callback.nil..."Used |
| a6e0 | 20 62 79 20 60 65 6c 6e 6f 64 65 2d 61 73 79 6e 63 2d 64 6f 27 20 61 73 20 74 68 65 20 73 6f 75 | .by.`elnode-async-do'.as.the.sou |
| a700 | 72 63 65 20 6f 66 20 61 6e 20 65 6e 64 2d 63 61 6c 6c 62 61 63 6b 2e 0a 0a 54 68 69 73 20 69 73 | rce.of.an.end-callback...This.is |
| a720 | 20 6a 75 73 74 20 75 73 65 64 20 62 79 20 74 65 73 74 73 20 66 6f 72 20 65 6e 64 20 73 69 67 6e | .just.used.by.tests.for.end.sign |
| a740 | 61 6c 6c 69 6e 67 2e 22 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 65 6c 6e 6f 64 65 2d 61 73 79 6e | alling.")..(defmacro.elnode-asyn |
| a760 | 63 2d 64 6f 20 28 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | c-do.(stream.................... |
| a780 | 20 20 20 20 20 20 20 20 72 65 71 75 69 72 65 73 20 72 65 71 75 69 72 65 6d 65 6e 74 73 0a 20 20 | ........requires.requirements... |
| a7a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 69 74 68 2d 65 6e | .........................with-en |
| a7c0 | 76 69 72 6f 6e 6d 65 6e 74 20 62 69 6e 64 69 6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | vironment.bindings.............. |
| a7e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20 22 | ..............do.&rest.body)..." |
| a800 | 45 78 65 63 75 74 65 20 74 68 65 20 42 4f 44 59 20 69 6e 20 61 20 72 65 6d 6f 74 65 20 45 6d 61 | Execute.the.BODY.in.a.remote.Ema |
| a820 | 63 73 2e 0a 0a 54 68 65 20 53 54 52 45 41 4d 20 69 73 20 75 73 65 64 20 74 6f 20 68 61 6e 64 6c | cs...The.STREAM.is.used.to.handl |
| a840 | 65 20 61 6e 79 20 6f 75 74 70 75 74 2e 0a 0a 54 68 65 20 52 45 51 55 49 52 45 4d 45 4e 54 53 20 | e.any.output...The.REQUIREMENTS. |
| a860 | 69 73 20 61 20 6c 69 73 74 20 6f 66 20 70 72 6f 76 69 64 65 20 73 79 6d 62 6f 6c 20 6e 61 6d 65 | is.a.list.of.provide.symbol.name |
| a880 | 73 20 74 68 61 74 20 77 69 6c 6c 20 62 65 0a 75 73 65 64 20 74 6f 20 65 73 74 61 62 6c 69 73 68 | s.that.will.be.used.to.establish |
| a8a0 | 20 74 68 65 20 72 69 67 68 74 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 69 6e 20 74 68 65 20 72 65 | .the.right.environment.in.the.re |
| a8c0 | 6d 6f 74 65 2e 0a 0a 54 68 65 20 42 49 4e 44 49 4e 47 53 20 61 72 65 20 61 6c 73 6f 20 73 65 6e | mote...The.BINDINGS.are.also.sen |
| a8e0 | 74 20 74 6f 20 74 68 65 20 72 65 6d 6f 74 65 2e 0a 0a 54 4f 44 4f 0a 0a 73 65 63 75 72 69 74 79 | t.to.the.remote...TODO..security |
| a900 | 20 66 6f 72 20 74 68 65 20 72 65 6d 6f 74 65 20 75 73 69 6e 67 20 74 68 65 20 73 74 6f 72 65 64 | .for.the.remote.using.the.stored |
| a920 | 20 6b 65 79 2e 22 0a 20 20 28 61 73 73 65 72 74 20 28 65 71 20 77 69 74 68 2d 65 6e 76 69 72 6f | .key."...(assert.(eq.with-enviro |
| a940 | 6e 6d 65 6e 74 20 27 77 69 74 68 2d 65 6e 76 69 72 6f 6e 6d 65 6e 74 29 29 0a 20 20 28 61 73 73 | nment.'with-environment))...(ass |
| a960 | 65 72 74 20 28 65 71 20 72 65 71 75 69 72 65 73 20 27 72 65 71 75 69 72 65 73 29 29 0a 20 20 28 | ert.(eq.requires.'requires))...( |
| a980 | 61 73 73 65 72 74 20 28 65 71 20 64 6f 20 27 64 6f 29 29 0a 20 20 28 6c 65 74 20 28 28 62 6f 64 | assert.(eq.do.'do))...(let.((bod |
| a9a0 | 79 76 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 62 6f 64 79 22 29 29 0a 20 20 20 20 20 20 20 | yv.(make-symbol."body"))........ |
| a9c0 | 20 28 62 69 6e 64 73 76 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 62 69 6e 64 73 22 29 29 0a | .(bindsv.(make-symbol."binds")). |
| a9e0 | 20 20 20 20 20 20 20 20 28 73 74 72 65 61 6d 76 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 73 | ........(streamv.(make-symbol."s |
| aa00 | 74 72 65 61 6d 76 22 29 29 0a 20 20 20 20 20 20 20 20 28 72 65 71 75 69 72 65 76 20 28 6d 61 6b | treamv")).........(requirev.(mak |
| aa20 | 65 2d 73 79 6d 62 6f 6c 20 22 70 72 6f 76 69 64 69 6e 67 22 29 29 29 0a 20 20 20 20 60 28 6c 65 | e-symbol."providing"))).....`(le |
| aa40 | 74 2a 20 28 28 2c 73 74 72 65 61 6d 76 20 2c 73 74 72 65 61 6d 29 0a 20 20 20 20 20 20 20 20 20 | t*.((,streamv.,stream).......... |
| aa60 | 20 20 20 28 2c 62 6f 64 79 76 20 28 71 75 6f 74 65 20 28 70 72 6f 67 6e 20 2c 40 62 6f 64 79 29 | ...(,bodyv.(quote.(progn.,@body) |
| aa80 | 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 2c 62 69 6e 64 73 76 20 28 6c 69 73 74 0a 20 20 | )).............(,bindsv.(list... |
| aaa0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 40 28 6c 6f 6f 70 20 66 6f 72 20 | ....................,@(loop.for. |
| aac0 | 70 20 69 6e 20 62 69 6e 64 69 6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | p.in.bindings................... |
| aae0 | 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .........collect................ |
| ab00 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 61 6e 64 20 70 20 28 6c 69 73 74 70 20 | ..............(if.(and.p.(listp. |
| ab20 | 70 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | p))............................. |
| ab40 | 20 20 20 20 20 28 6c 69 73 74 20 27 6c 69 73 74 20 60 28 71 75 6f 74 65 20 2c 28 63 61 72 20 70 | .....(list.'list.`(quote.,(car.p |
| ab60 | 29 29 20 28 63 61 64 72 20 70 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | )).(cadr.p)).................... |
| ab80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 27 63 6f 6e 73 20 60 2c 70 20 6e 69 | ..............(list.'cons.`,p.ni |
| aba0 | 6c 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 2c 72 65 71 75 69 72 65 76 20 28 71 | l))))).............(,requirev.(q |
| abc0 | 75 6f 74 65 20 2c 72 65 71 75 69 72 65 6d 65 6e 74 73 29 29 29 0a 20 20 20 20 20 20 20 28 65 6c | uote.,requirements)))........(el |
| abe0 | 6e 6f 64 65 2d 72 6c 65 2d 2d 73 65 6e 64 65 72 0a 20 20 20 20 20 20 20 20 2c 73 74 72 65 61 6d | node-rle--sender.........,stream |
| ac00 | 76 20 2c 72 65 71 75 69 72 65 76 20 2c 62 69 6e 64 73 76 20 2c 62 6f 64 79 76 0a 20 20 20 20 20 | v.,requirev.,bindsv.,bodyv...... |
| ac20 | 20 20 20 65 6c 6e 6f 64 65 2d 72 6c 65 2d 2d 61 73 79 6e 63 2d 64 6f 2d 65 6e 64 2d 63 61 6c 6c | ...elnode-rle--async-do-end-call |
| ac40 | 62 61 63 6b 29 29 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 77 69 74 68 2d 65 6c 6e 6f 64 65 2d | back))))..(defmacro.with-elnode- |
| ac60 | 72 6c 65 2d 77 61 69 74 20 28 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20 22 53 69 6d 70 6c 69 66 | rle-wait.(&rest.body)..."Simplif |
| ac80 | 79 20 74 68 65 20 77 61 69 74 20 66 6f 72 20 52 4c 45 3b 20 66 6f 72 20 74 65 73 74 65 72 73 2e | y.the.wait.for.RLE;.for.testers. |
| aca0 | 22 0a 20 20 60 28 75 6e 77 69 6e 64 2d 70 72 6f 74 65 63 74 0a 20 20 20 20 20 20 20 20 28 6c 65 | "...`(unwind-protect.........(le |
| acc0 | 74 20 28 65 6e 64 65 64 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 | t.(ended)...........(progn...... |
| ace0 | 20 20 20 20 20 20 20 2c 40 62 6f 64 79 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 | .......,@body)...........(while. |
| ad00 | 28 6e 6f 74 20 65 6e 64 65 64 29 20 28 73 69 74 2d 66 6f 72 20 31 29 29 29 0a 20 20 20 20 20 3b | (not.ended).(sit-for.1)))......; |
| ad20 | 3b 20 46 49 58 4d 45 20 2d 20 63 61 6e 20 77 65 20 67 65 74 20 74 6f 20 74 68 65 20 6e 61 6d 65 | ;.FIXME.-.can.we.get.to.the.name |
| ad40 | 20 6f 66 20 74 68 69 73 3f 0a 20 20 20 20 20 28 73 65 72 76 65 72 2d 65 76 61 6c 2d 61 74 20 22 | .of.this?......(server-eval-at." |
| ad60 | 65 6c 6e 6f 64 65 2d 64 65 62 75 67 69 74 22 20 27 28 6b 69 6c 6c 2d 65 6d 61 63 73 29 29 29 29 | elnode-debugit".'(kill-emacs)))) |
| ad80 | 0a 0a 28 65 72 74 2d 64 65 66 74 65 73 74 20 65 6c 6e 6f 64 65 2d 72 6c 65 2d 2d 6d 61 6b 65 2d | ..(ert-deftest.elnode-rle--make- |
| ada0 | 73 65 72 76 65 72 20 28 29 0a 20 20 22 54 65 73 74 20 6d 61 6b 69 6e 67 20 61 6e 20 52 4c 45 20 | server.()..."Test.making.an.RLE. |
| adc0 | 73 65 72 76 65 72 2e 0a 0a 44 6f 20 69 74 20 61 6c 6c 20 33 20 77 61 79 73 3a 20 64 69 72 65 63 | server...Do.it.all.3.ways:.direc |
| ade0 | 74 6c 79 20 77 69 74 68 20 74 68 65 20 60 65 6c 6e 6f 64 65 2d 72 6c 65 2d 6d 61 6b 65 2d 73 65 | tly.with.the.`elnode-rle-make-se |
| ae00 | 72 76 65 72 27 2c 0a 77 69 74 68 20 74 68 65 20 60 65 6c 6e 6f 64 65 2d 72 6c 65 2d 2d 73 65 6e | rver',.with.the.`elnode-rle--sen |
| ae20 | 64 65 72 27 20 66 75 6e 63 74 69 6f 6e 20 61 6e 64 20 66 69 6e 61 6c 6c 79 20 77 69 74 68 20 74 | der'.function.and.finally.with.t |
| ae40 | 68 65 20 75 73 65 72 0a 66 61 63 69 6e 67 20 6d 61 63 72 6f 20 60 65 6c 6e 6f 64 65 2d 61 73 79 | he.user.facing.macro.`elnode-asy |
| ae60 | 6e 63 2d 64 6f 27 2e 0a 0a 54 68 65 20 6f 75 74 70 75 74 20 66 72 6f 6d 20 74 68 65 20 52 4c 45 | nc-do'...The.output.from.the.RLE |
| ae80 | 20 63 61 6c 6c 20 69 73 20 63 6f 6c 6c 65 63 74 65 64 20 69 6e 20 61 20 62 75 66 66 65 72 0a 61 | .call.is.collected.in.a.buffer.a |
| aea0 | 6e 64 20 74 65 73 74 65 64 2e 22 0a 20 20 3a 65 78 70 65 63 74 65 64 2d 72 65 73 75 6c 74 20 3a | nd.tested."...:expected-result.: |
| aec0 | 66 61 69 6c 65 64 0a 20 20 28 66 6c 65 74 20 28 28 6d 61 6b 65 2d 68 61 73 68 20 28 62 69 6e 64 | failed...(flet.((make-hash.(bind |
| aee0 | 69 6e 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 68 20 28 6d 61 6b 65 2d | ings)............(let.((h.(make- |
| af00 | 68 61 73 68 2d 74 61 62 6c 65 20 3a 74 65 73 74 20 27 65 71 75 61 6c 29 29 29 0a 20 20 20 20 20 | hash-table.:test.'equal)))...... |
| af20 | 20 20 20 20 20 20 20 20 28 6c 6f 6f 70 20 66 6f 72 20 62 20 69 6e 20 62 69 6e 64 69 6e 67 73 0a | ........(loop.for.b.in.bindings. |
| af40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 28 70 75 74 68 61 73 68 20 28 63 | ..................do.(puthash.(c |
| af60 | 61 72 20 62 29 20 28 63 61 64 72 20 62 29 20 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | ar.b).(cadr.b).h)).............. |
| af80 | 68 29 29 29 0a 20 20 20 20 3b 3b 20 44 6f 20 69 74 20 52 41 57 0a 20 20 20 20 28 73 68 6f 75 6c | h))).....;;.Do.it.RAW.....(shoul |
| afa0 | 64 0a 20 20 20 20 20 28 65 71 75 61 6c 0a 20 20 20 20 20 20 22 68 65 6c 6c 6f 22 0a 20 20 20 20 | d......(equal......."hello"..... |
| afc0 | 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 28 6c 65 74 | ..(with-temp-buffer.........(let |
| afe0 | 2a 20 28 28 63 68 69 6c 64 2d 70 72 6f 63 20 28 65 6c 6e 6f 64 65 2d 72 6c 65 2d 2d 6d 61 6b 65 | *.((child-proc.(elnode-rle--make |
| b000 | 2d 73 65 72 76 65 72 20 27 65 6c 6e 6f 64 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | -server.'elnode))............... |
| b020 | 20 28 64 61 65 6d 6f 6e 2d 68 61 6e 64 6c 65 72 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 63 68 | .(daemon-handler.(process-get.ch |
| b040 | 69 6c 64 2d 70 72 6f 63 20 3a 64 61 65 6d 6f 6e 68 61 6e 64 6c 65 29 29 0a 20 20 20 20 20 20 20 | ild-proc.:daemonhandle))........ |
| b060 | 20 20 20 20 20 20 20 20 28 63 6f 6c 6c 65 63 74 2d 62 75 66 20 28 63 75 72 72 65 6e 74 2d 62 75 | ........(collect-buf.(current-bu |
| b080 | 66 66 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 65 6c 6e 6f 64 65 2d 72 | ffer)))...........(with-elnode-r |
| b0a0 | 6c 65 2d 77 61 69 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 0a 20 | le-wait...............(funcall.. |
| b0c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 63 68 69 6c 64 | ..............(process-get.child |
| b0e0 | 2d 70 72 6f 63 20 3a 65 78 65 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 6b | -proc.:exec)................(mak |
| b100 | 65 2d 68 61 73 68 20 27 28 28 22 62 69 6e 64 69 6e 67 73 22 20 22 28 28 61 20 5c 22 68 65 6c 6c | e-hash.'(("bindings"."((a.\"hell |
| b120 | 6f 5c 22 29 29 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | o\"))")......................... |
| b140 | 20 20 20 20 28 22 6c 69 73 70 22 20 22 28 70 72 69 6e 63 20 5c 22 68 65 6c 6c 6f 5c 22 29 22 29 | ....("lisp"."(princ.\"hello\")") |
| b160 | 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 | ))................(current-buffe |
| b180 | 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 68 64 72 29 20 | r)................(lambda.(hdr). |
| b1a0 | 3b 20 74 68 65 20 65 6e 64 20 70 72 6f 63 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ;.the.end.proc.................. |
| b1c0 | 28 73 65 74 71 20 65 6e 64 65 64 20 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 62 75 66 | (setq.ended.t))))...........(buf |
| b1e0 | 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 | fer-substring.(point-min).(point |
| b200 | 2d 6d 61 78 29 29 29 29 29 29 0a 20 20 20 20 3b 3b 20 44 6f 20 69 74 20 76 69 61 20 74 68 65 20 | -max)))))).....;;.Do.it.via.the. |
| b220 | 73 65 6e 64 65 72 20 66 75 6e 63 0a 20 20 20 20 28 73 68 6f 75 6c 64 0a 20 20 20 20 20 28 65 71 | sender.func.....(should......(eq |
| b240 | 75 61 6c 0a 20 20 20 20 20 20 22 34 30 22 0a 20 20 20 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d | ual......."40".......(with-temp- |
| b260 | 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 65 6c 6e 6f 64 65 2d 72 6c 65 2d | buffer.........(with-elnode-rle- |
| b280 | 77 61 69 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 65 6c 6e 6f 64 65 2d 72 | wait.............(let.((elnode-r |
| b2a0 | 6c 65 2d 2d 73 65 72 76 65 72 73 20 28 6d 61 6b 65 2d 68 61 73 68 2d 74 61 62 6c 65 20 3a 74 65 | le--servers.(make-hash-table.:te |
| b2c0 | 73 74 20 27 65 71 75 61 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f | st.'equal)))...............(elno |
| b2e0 | 64 65 2d 72 6c 65 2d 2d 73 65 6e 64 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 | de-rle--sender................(c |
| b300 | 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 | urrent-buffer)................'( |
| b320 | 65 6c 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 28 61 20 31 30 29 20 | elnode)................'((a.10). |
| b340 | 28 62 20 32 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 6c 65 74 20 28 28 63 | (b.20))................'(let.((c |
| b360 | 20 33 30 29 29 28 70 72 69 6e 63 20 28 2b 20 63 20 61 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 | .30))(princ.(+.c.a)))........... |
| b380 | 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 68 65 61 64 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 | .....(lambda.(header)........... |
| b3a0 | 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 65 6c 6e 6f 64 65 2d 72 6c 65 3a 20 61 6c 6c | .......(message."elnode-rle:.all |
| b3c0 | 20 64 6f 6e 65 21 22 29 28 73 65 74 71 20 65 6e 64 65 64 20 74 29 29 29 29 29 0a 20 20 20 20 20 | .done!")(setq.ended.t)))))...... |
| b3e0 | 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 | ...(buffer-substring.(point-min) |
| b400 | 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 29 29 0a 20 20 20 20 3b 3b 20 44 6f 20 69 74 20 77 69 | .(point-max))))).....;;.Do.it.wi |
| b420 | 74 68 20 74 68 65 20 6d 61 63 72 6f 0a 20 20 20 20 28 73 68 6f 75 6c 64 0a 20 20 20 20 20 28 65 | th.the.macro.....(should......(e |
| b440 | 71 75 61 6c 0a 20 20 20 20 20 20 22 68 65 6c 6c 6f 22 0a 20 20 20 20 20 20 28 77 69 74 68 2d 74 | qual......."hello".......(with-t |
| b460 | 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 65 6c 6e 6f 64 65 2d | emp-buffer.........(with-elnode- |
| b480 | 72 6c 65 2d 77 61 69 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 65 6c 6e 6f | rle-wait.............(let.((elno |
| b4a0 | 64 65 2d 72 6c 65 2d 2d 73 65 72 76 65 72 73 20 28 6d 61 6b 65 2d 68 61 73 68 2d 74 61 62 6c 65 | de-rle--servers.(make-hash-table |
| b4c0 | 20 3a 74 65 73 74 20 27 65 71 75 61 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .:test.'equal))................. |
| b4e0 | 20 20 28 65 6c 6e 6f 64 65 2d 72 6c 65 2d 2d 61 73 79 6e 63 2d 64 6f 2d 65 6e 64 2d 63 61 6c 6c | ..(elnode-rle--async-do-end-call |
| b500 | 62 61 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 | back....................(lambda. |
| b520 | 28 68 65 61 64 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d | (header)......................(m |
| b540 | 65 73 73 61 67 65 20 22 65 6c 6e 6f 64 65 2d 72 6c 65 3a 20 69 6e 20 74 68 65 20 64 79 6e 20 62 | essage."elnode-rle:.in.the.dyn.b |
| b560 | 6f 75 6e 64 20 63 61 6c 6c 62 61 63 6b 21 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ound.callback!")................ |
| b580 | 20 20 20 20 20 20 28 73 65 74 71 20 65 6e 64 65 64 20 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 | ......(setq.ended.t))))......... |
| b5a0 | 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 61 73 79 6e 63 2d 64 6f 0a 20 20 20 20 20 20 20 20 20 | ......(elnode-async-do.......... |
| b5c0 | 20 20 20 20 20 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 20 20 20 | ......(current-buffer).......... |
| b5e0 | 20 20 20 20 20 20 72 65 71 75 69 72 65 73 20 28 65 6c 6e 6f 64 65 20 65 6e 6f 64 65 2d 72 6c 65 | ......requires.(elnode.enode-rle |
| b600 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 69 74 68 2d 65 6e 76 69 72 6f 6e 6d 65 6e | )................with-environmen |
| b620 | 74 20 28 28 61 20 31 30 29 28 62 20 32 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | t.((a.10)(b.20))................ |
| b640 | 64 6f 20 28 70 72 69 6e 63 20 22 68 65 6c 6c 6f 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 62 | do.(princ."hello")))).........(b |
| b660 | 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 | uffer-substring.(point-min).(poi |
| b680 | 6e 74 2d 6d 61 78 29 29 29 29 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 65 6c 6e 6f 64 65 2d | nt-max)))))))..(provide.'elnode- |
| b6a0 | 72 6c 65 29 0a 0a 3b 3b 20 65 6c 6e 6f 64 65 2d 72 6c 65 20 65 6e 64 73 20 68 65 72 65 0a 00 00 | rle)..;;.elnode-rle.ends.here... |
| b6c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b6e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b7a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b7c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b7e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b800 | 65 6c 6e 6f 64 65 2d 32 30 31 39 30 37 30 32 2e 31 35 30 39 2f 65 6c 6e 6f 64 65 2d 74 65 73 74 | elnode-20190702.1509/elnode-test |
| b820 | 73 75 70 70 6f 72 74 2e 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | support.el...................... |
| b840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b860 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 | ....0000644.0000000.0000000.0000 |
| b880 | 30 30 30 34 35 30 34 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 36 34 36 37 00 20 30 00 00 00 | 0004504.00000000000.016467..0... |
| b8a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b8c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b8e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b900 | 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...root................... |
| b920 | 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........root................... |
| b940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b9a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b9c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| b9e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| ba00 | 3b 3b 3b 20 74 65 73 74 20 73 75 70 70 6f 72 74 20 66 75 6e 63 74 69 6f 6e 73 20 66 6f 72 20 65 | ;;;.test.support.functions.for.e |
| ba20 | 6c 6e 6f 64 65 0a 0a 28 72 65 71 75 69 72 65 20 27 6e 6f 66 6c 65 74 29 0a 0a 28 64 65 66 6d 61 | lnode..(require.'noflet)..(defma |
| ba40 | 63 72 6f 20 65 6c 6e 6f 64 65 2d 73 69 6e 6b 20 28 68 74 74 70 63 6f 6e 20 26 72 65 73 74 20 62 | cro.elnode-sink.(httpcon.&rest.b |
| ba60 | 6f 64 79 29 0a 20 20 22 53 69 6e 6b 20 74 68 65 20 48 54 54 50 20 72 65 73 70 6f 6e 73 65 20 66 | ody)..."Sink.the.HTTP.response.f |
| ba80 | 72 6f 6d 20 42 4f 44 59 2e 0a 0a 4f 75 74 70 75 74 20 74 6f 20 60 65 6c 6e 6f 64 65 2d 68 74 74 | rom.BODY...Output.to.`elnode-htt |
| baa0 | 70 2d 73 74 61 72 74 27 2c 20 60 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 65 6e 64 2d 73 74 72 69 | p-start',.`elnode-http-send-stri |
| bac0 | 6e 67 27 20 61 6e 64 0a 60 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 72 65 74 75 72 6e 27 20 69 73 20 | ng'.and.`elnode-http-return'.is. |
| bae0 | 63 6f 6c 6c 65 63 74 65 64 20 61 6e 64 20 73 74 6f 72 65 64 20 69 6e 74 65 72 6e 61 6c 6c 6c 79 | collected.and.stored.internallly |
| bb00 | 2e 0a 0a 57 68 65 6e 20 60 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 72 65 74 75 72 6e 27 20 69 73 20 | ...When.`elnode-http-return'.is. |
| bb20 | 63 61 6c 6c 65 64 20 74 68 65 20 66 6f 72 6d 20 65 6e 64 73 20 77 69 74 68 20 61 20 73 74 72 69 | called.the.form.ends.with.a.stri |
| bb40 | 6e 67 0a 72 65 73 75 6c 74 20 6f 66 20 77 68 61 74 65 76 65 72 20 77 61 73 20 73 65 6e 74 20 61 | ng.result.of.whatever.was.sent.a |
| bb60 | 73 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2e 20 20 54 68 65 20 73 74 72 69 6e 67 20 69 73 0a 70 | s.the.response...The.string.is.p |
| bb80 | 72 6f 70 65 72 74 69 7a 65 64 20 77 69 74 68 20 74 68 65 20 68 65 61 64 65 72 20 73 65 6e 74 20 | ropertized.with.the.header.sent. |
| bba0 | 74 6f 20 60 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 74 61 72 74 27 2e 22 0a 20 20 28 64 65 63 6c | to.`elnode-http-start'."...(decl |
| bbc0 | 61 72 65 20 28 69 6e 64 65 6e 74 20 31 29 28 64 65 62 75 67 20 28 73 65 78 70 20 26 72 65 73 74 | are.(indent.1)(debug.(sexp.&rest |
| bbe0 | 20 66 6f 72 6d 29 29 29 0a 20 20 60 28 6c 65 74 20 28 72 65 73 20 72 65 73 68 64 72 29 0a 20 20 | .form)))...`(let.(res.reshdr)... |
| bc00 | 20 20 20 28 63 61 74 63 68 20 3a 65 6c 6e 6f 64 65 2d 73 69 6e 6b 2d 72 65 74 0a 20 20 20 20 20 | ...(catch.:elnode-sink-ret...... |
| bc20 | 20 20 28 6e 6f 66 6c 65 74 20 28 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 74 61 72 74 20 28 68 | ..(noflet.((elnode-http-start.(h |
| bc40 | 74 74 70 63 6f 6e 20 73 74 61 74 75 73 20 26 72 65 73 74 20 68 65 61 64 65 72 29 0a 20 20 20 20 | ttpcon.status.&rest.header)..... |
| bc60 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 68 64 72 20 0a 20 20 20 20 | ..............(setq.reshdr...... |
| bc80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6b 76 61 6c 69 73 74 2d 3e 70 6c | ....................(kvalist->pl |
| bca0 | 69 73 74 20 68 65 61 64 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 | ist.header))).................(e |
| bcc0 | 6c 6e 6f 64 65 2d 68 74 74 70 2d 68 65 61 64 65 72 2d 73 65 74 20 28 68 74 74 70 63 6f 6e 20 68 | lnode-http-header-set.(httpcon.h |
| bce0 | 65 61 64 65 72 20 26 6f 70 74 69 6f 6e 61 6c 20 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 | eader.&optional.value).......... |
| bd00 | 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 68 64 72 0a 20 20 20 20 20 20 20 20 20 20 | .........(setq.reshdr........... |
| bd20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 70 75 74 20 28 69 6e 74 65 72 6e | ..............(plist-put.(intern |
| bd40 | 20 28 63 6f 6e 63 61 74 20 22 3a 22 20 72 65 73 68 64 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 | .(concat.":".reshdr))........... |
| bd60 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 20 | .........................header. |
| bd80 | 76 61 6c 75 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 | value))).................(elnode |
| bda0 | 2d 68 74 74 70 2d 73 65 6e 64 2d 73 74 72 69 6e 67 20 28 68 74 74 70 63 6f 6e 20 64 61 74 61 29 | -http-send-string.(httpcon.data) |
| bdc0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 20 28 61 70 | ...................(setq.res.(ap |
| bde0 | 70 6c 79 20 27 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ply.'propertize................. |
| be00 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 72 65 73 20 64 | ...................(concat.res.d |
| be20 | 61 74 61 29 20 72 65 73 68 64 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 | ata).reshdr))).................( |
| be40 | 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 72 65 74 75 72 6e 20 28 68 74 74 70 63 6f 6e 20 26 6f 70 74 | elnode-http-return.(httpcon.&opt |
| be60 | 69 6f 6e 61 6c 20 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 | ional.data)...................(w |
| be80 | 68 65 6e 20 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 | hen.data.....................(se |
| bea0 | 74 71 20 72 65 73 20 28 61 70 70 6c 79 20 27 70 72 6f 70 65 72 74 69 7a 65 0a 20 20 20 20 20 20 | tq.res.(apply.'propertize....... |
| bec0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 | ...............................( |
| bee0 | 63 6f 6e 63 61 74 20 72 65 73 20 64 61 74 61 29 20 72 65 73 68 64 72 29 29 29 0a 20 20 20 20 20 | concat.res.data).reshdr)))...... |
| bf00 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 68 72 6f 77 20 3a 65 6c 6e 6f 64 65 2d 73 69 6e 6b | .............(throw.:elnode-sink |
| bf20 | 2d 72 65 74 20 3a 65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 2c 40 62 6f 64 79 29 29 0a 20 | -ret.:end)))..........,@body)).. |
| bf40 | 20 20 20 20 72 65 73 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 65 6c 6e 6f 64 65 2d 66 61 6b 65 | ....res))..(defmacro.elnode-fake |
| bf60 | 2d 70 61 72 61 6d 73 20 28 68 74 74 70 63 6f 6e 20 70 61 72 61 6d 73 2d 6c 69 73 74 20 26 72 65 | -params.(httpcon.params-list.&re |
| bf80 | 73 74 20 62 6f 64 79 29 0a 20 20 22 46 61 6b 65 20 74 68 65 20 50 41 52 41 4d 2d 42 49 4e 44 49 | st.body)..."Fake.the.PARAM-BINDI |
| bfa0 | 4e 47 53 20 61 6e 64 20 65 76 61 6c 75 61 74 65 20 42 4f 44 59 2e 0a 0a 50 41 52 41 4d 2d 42 49 | NGS.and.evaluate.BODY...PARAM-BI |
| bfc0 | 4e 44 49 4e 47 53 20 69 73 20 61 6e 20 41 4c 49 53 54 20 77 69 74 68 20 73 74 72 69 6e 67 20 63 | NDINGS.is.an.ALIST.with.string.c |
| bfe0 | 61 72 73 20 66 6f 72 20 70 61 72 61 6d 65 74 65 72 20 6e 61 6d 65 73 0a 61 6e 64 20 73 74 72 69 | ars.for.parameter.names.and.stri |
| c000 | 6e 67 20 63 64 72 73 20 66 6f 72 20 76 61 6c 75 65 73 2e 20 20 41 20 63 64 72 20 6f 66 20 61 20 | ng.cdrs.for.values...A.cdr.of.a. |
| c020 | 6c 69 73 74 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 0a 70 72 6f 76 69 64 65 20 61 20 73 74 | list.can.be.used.to.provide.a.st |
| c040 | 72 69 6e 67 20 76 61 6c 75 65 20 77 69 74 68 20 61 20 70 72 6f 70 65 72 74 79 20 6c 69 73 74 2c | ring.value.with.a.property.list, |
| c060 | 20 66 6f 72 20 65 78 61 6d 70 6c 65 3a 0a 0a 20 20 27 28 28 5c 22 70 61 72 61 6d 31 5c 22 20 2e | .for.example:....'((\"param1\".. |
| c080 | 20 5c 22 76 61 6c 75 65 5c 22 20 29 0a 20 20 20 20 28 5c 22 70 61 72 61 6d 32 5c 22 20 5c 22 76 | .\"value\".).....(\"param2\".\"v |
| c0a0 | 61 6c 75 65 5c 22 20 3a 65 6c 6e 6f 64 65 2d 66 69 6c 65 6e 61 6d 65 20 5c 22 73 6f 6d 65 66 69 | alue\".:elnode-filename.\"somefi |
| c0c0 | 6c 65 2e 74 78 74 5c 22 29 29 0a 0a 4e 6f 74 65 20 74 68 65 20 66 69 72 73 74 20 70 61 72 61 6d | le.txt\"))..Note.the.first.param |
| c0e0 | 65 74 65 72 20 69 73 20 61 6e 20 69 6d 70 72 6f 70 65 72 20 6c 69 73 74 2e 0a 0a 50 41 52 41 4d | eter.is.an.improper.list...PARAM |
| c100 | 2d 42 49 4e 44 49 4e 47 53 20 73 68 6f 75 6c 64 20 62 65 20 71 75 6f 74 65 64 2e 22 0a 20 20 28 | -BINDINGS.should.be.quoted."...( |
| c120 | 64 65 63 6c 61 72 65 20 28 69 6e 64 65 6e 74 20 32 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 64 | declare.(indent.2)............(d |
| c140 | 65 62 75 67 20 28 73 65 78 70 20 73 65 78 70 20 26 72 65 73 74 20 66 6f 72 6d 29 29 29 0a 20 20 | ebug.(sexp.sexp.&rest.form)))... |
| c160 | 60 28 6c 65 74 20 28 28 2c 68 74 74 70 63 6f 6e 20 2c 70 61 72 61 6d 73 2d 6c 69 73 74 29 29 0a | `(let.((,httpcon.,params-list)). |
| c180 | 20 20 20 20 20 28 6e 6f 66 6c 65 74 20 28 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 70 61 72 61 6d | .....(noflet.((elnode-http-param |
| c1a0 | 20 28 68 74 74 70 63 20 70 61 72 61 6d 2d 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | .(httpc.param-name)............. |
| c1c0 | 20 20 20 20 28 69 66 20 28 65 71 20 68 74 74 70 63 20 2c 68 74 74 70 63 6f 6e 29 0a 20 20 20 20 | ....(if.(eq.httpc.,httpcon)..... |
| c1e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 76 20 28 6b 76 61 20 70 61 | ................(let.((v.(kva.pa |
| c200 | 72 61 6d 2d 6e 61 6d 65 20 2c 68 74 74 70 63 6f 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 | ram-name.,httpcon)))............ |
| c220 | 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...........(cond................ |
| c240 | 20 20 20 20 20 20 20 20 20 28 28 6c 69 73 74 70 20 76 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | .........((listp.v)............. |
| c260 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 70 70 6c 79 20 27 70 72 6f 70 65 72 74 69 7a 65 20 | .............(apply.'propertize. |
| c280 | 28 63 61 72 20 76 29 20 28 63 64 72 20 76 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | (car.v).(cdr.v)))............... |
| c2a0 | 20 20 20 20 20 20 20 20 20 20 28 74 20 76 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ..........(t.v)))............... |
| c2c0 | 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 74 68 69 73 2d 66 6e 20 68 74 74 70 63 6f 6e 20 70 | ......(funcall.this-fn.httpcon.p |
| c2e0 | 61 72 61 6d 2d 6e 61 6d 65 29 29 29 29 0a 20 20 20 20 20 20 20 2c 40 62 6f 64 79 29 29 29 0a 0a | aram-name))))........,@body))).. |
| c300 | 0a 28 70 72 6f 76 69 64 65 20 27 65 6c 6e 6f 64 65 2d 74 65 73 74 73 75 70 70 6f 72 74 29 0a 0a | .(provide.'elnode-testsupport).. |
| c320 | 3b 3b 3b 20 65 6c 6e 6f 64 65 2d 74 65 73 74 73 75 70 70 6f 72 74 2e 65 6c 20 65 6e 64 73 20 68 | ;;;.elnode-testsupport.el.ends.h |
| c340 | 65 72 65 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ere............................. |
| c360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c3a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c3c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c3e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c400 | 65 6c 6e 6f 64 65 2d 32 30 31 39 30 37 30 32 2e 31 35 30 39 2f 65 6c 6e 6f 64 65 2d 77 69 6b 69 | elnode-20190702.1509/elnode-wiki |
| c420 | 2e 65 6c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .el............................. |
| c440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c460 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 | ....0000644.0000000.0000000.0000 |
| c480 | 30 30 31 36 35 36 34 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 35 30 32 37 00 20 30 00 00 00 | 0016564.00000000000.015027..0... |
| c4a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c4c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c4e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c500 | 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...root................... |
| c520 | 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........root................... |
| c540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c5a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c5c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c5e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| c600 | 3b 3b 3b 20 65 6c 6e 6f 64 65 2d 77 69 6b 69 2e 65 6c 20 2d 2d 2d 20 61 20 77 69 6b 69 20 77 69 | ;;;.elnode-wiki.el.---.a.wiki.wi |
| c620 | 74 68 20 45 6c 6e 6f 64 65 20 20 2d 2a 2d 20 6c 65 78 69 63 61 6c 2d 62 69 6e 64 69 6e 67 3a 20 | th.Elnode..-*-.lexical-binding:. |
| c640 | 74 20 2d 2a 2d 0a 0a 3b 3b 20 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 32 30 31 30 2c 20 32 30 | t.-*-..;;.Copyright.(C).2010,.20 |
| c660 | 31 31 2c 20 32 30 31 32 20 20 4e 69 63 20 46 65 72 72 69 65 72 0a 0a 3b 3b 20 41 75 74 68 6f 72 | 11,.2012..Nic.Ferrier..;;.Author |
| c680 | 3a 20 4e 69 63 20 46 65 72 72 69 65 72 20 3c 6e 66 65 72 72 69 65 72 40 66 65 72 72 69 65 72 2e | :.Nic.Ferrier.<nferrier@ferrier. |
| c6a0 | 6d 65 2e 75 6b 3e 0a 3b 3b 20 4d 61 69 6e 74 61 69 6e 65 72 3a 20 4e 69 63 20 46 65 72 72 69 65 | me.uk>.;;.Maintainer:.Nic.Ferrie |
| c6c0 | 72 20 3c 6e 66 65 72 72 69 65 72 40 66 65 72 72 69 65 72 2e 6d 65 2e 75 6b 3e 0a 3b 3b 20 43 72 | r.<nferrier@ferrier.me.uk>.;;.Cr |
| c6e0 | 65 61 74 65 64 3a 20 35 74 68 20 4f 63 74 6f 62 65 72 20 32 30 31 30 0a 3b 3b 20 4b 65 79 77 6f | eated:.5th.October.2010.;;.Keywo |
| c700 | 72 64 73 3a 20 6c 69 73 70 2c 20 68 74 74 70 2c 20 68 79 70 65 72 6d 65 64 69 61 0a 0a 3b 3b 20 | rds:.lisp,.http,.hypermedia..;;. |
| c720 | 54 68 69 73 20 66 69 6c 65 20 69 73 20 4e 4f 54 20 70 61 72 74 20 6f 66 20 47 4e 55 20 45 6d 61 | This.file.is.NOT.part.of.GNU.Ema |
| c740 | 63 73 2e 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65 65 20 73 6f 66 | cs...;;.This.program.is.free.sof |
| c760 | 74 77 61 72 65 3b 20 79 6f 75 20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 20 69 74 20 61 | tware;.you.can.redistribute.it.a |
| c780 | 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0a 3b 3b 20 69 74 20 75 6e 64 65 72 20 74 68 65 20 74 65 72 | nd/or.modify.;;.it.under.the.ter |
| c7a0 | 6d 73 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 | ms.of.the.GNU.General.Public.Lic |
| c7c0 | 65 6e 73 65 20 61 73 20 70 75 62 6c 69 73 68 65 64 20 62 79 0a 3b 3b 20 74 68 65 20 46 72 65 65 | ense.as.published.by.;;.the.Free |
| c7e0 | 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65 72 20 76 65 72 | .Software.Foundation,.either.ver |
| c800 | 73 69 6f 6e 20 33 20 6f 66 20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 3b 3b 20 28 61 74 | sion.3.of.the.License,.or.;;.(at |
| c820 | 20 79 6f 75 72 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 69 6f 6e 2e | .your.option).any.later.version. |
| c840 | 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 62 75 74 65 64 | ..;;.This.program.is.distributed |
| c860 | 20 69 6e 20 74 68 65 20 68 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73 65 | .in.the.hope.that.it.will.be.use |
| c880 | 66 75 6c 2c 0a 3b 3b 20 62 75 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 | ful,.;;.but.WITHOUT.ANY.WARRANTY |
| c8a0 | 3b 20 77 69 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77 61 72 72 61 | ;.without.even.the.implied.warra |
| c8c0 | 6e 74 79 20 6f 66 0a 3b 3b 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 20 46 49 54 | nty.of.;;.MERCHANTABILITY.or.FIT |
| c8e0 | 4e 45 53 53 20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 45 2e 20 20 | NESS.FOR.A.PARTICULAR.PURPOSE... |
| c900 | 53 65 65 20 74 68 65 0a 3b 3b 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 | See.the.;;.GNU.General.Public.Li |
| c920 | 63 65 6e 73 65 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20 59 6f 75 20 | cense.for.more.details...;;.You. |
| c940 | 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79 20 6f 66 20 74 | should.have.received.a.copy.of.t |
| c960 | 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 65 0a 3b 3b | he.GNU.General.Public.License.;; |
| c980 | 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20 49 66 20 6e 6f | .along.with.this.program...If.no |
| c9a0 | 74 2c 20 73 65 65 20 3c 68 74 74 70 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c 69 63 65 6e | t,.see.<http://www.gnu.org/licen |
| c9c0 | 73 65 73 2f 3e 2e 0a 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 3b 3b 0a 3b 3b 20 54 68 | ses/>...;;;.Commentary:.;;.;;.Th |
| c9e0 | 69 73 20 69 73 20 61 20 57 69 6b 69 20 45 6e 67 69 6e 65 20 63 6f 6d 70 6c 65 74 65 6c 79 20 77 | is.is.a.Wiki.Engine.completely.w |
| ca00 | 72 69 74 74 65 6e 20 69 6e 20 45 6d 61 63 73 4c 69 73 70 2c 20 75 73 69 6e 67 20 45 6c 6e 6f 64 | ritten.in.EmacsLisp,.using.Elnod |
| ca20 | 65 0a 3b 3b 20 61 73 20 61 20 73 65 72 76 65 72 2e 0a 3b 3b 0a 3b 3b 3b 20 53 6f 75 72 63 65 20 | e.;;.as.a.server..;;.;;;.Source. |
| ca40 | 63 6f 64 65 0a 3b 3b 0a 3b 3b 20 65 6c 6e 6f 64 65 27 73 20 63 6f 64 65 20 63 61 6e 20 62 65 20 | code.;;.;;.elnode's.code.can.be. |
| ca60 | 66 6f 75 6e 64 20 68 65 72 65 3a 0a 3b 3b 20 20 20 68 74 74 70 3a 2f 2f 67 69 74 68 75 62 2e 63 | found.here:.;;...http://github.c |
| ca80 | 6f 6d 2f 6e 69 63 66 65 72 72 69 65 72 2f 65 6c 6e 6f 64 65 0a 0a 3b 3b 3b 20 53 74 79 6c 65 20 | om/nicferrier/elnode..;;;.Style. |
| caa0 | 6e 6f 74 65 0a 3b 3b 0a 3b 3b 20 54 68 69 73 20 63 6f 64 65 73 20 75 73 65 73 20 74 68 65 20 45 | note.;;.;;.This.codes.uses.the.E |
| cac0 | 6d 61 63 73 20 73 74 79 6c 65 20 6f 66 3a 0a 3b 3b 0a 3b 3b 20 20 20 20 65 6c 6e 6f 64 65 2d 77 | macs.style.of:.;;.;;....elnode-w |
| cae0 | 69 6b 69 2d 2d 70 72 69 76 61 74 65 2d 66 75 6e 63 74 69 6f 6e 0a 3b 3b 0a 3b 3b 20 66 6f 72 20 | iki--private-function.;;.;;.for. |
| cb00 | 70 72 69 76 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 0a | private.functions....;;;.Code:.. |
| cb20 | 28 72 65 71 75 69 72 65 20 27 65 6c 6e 6f 64 65 29 0a 28 72 65 71 75 69 72 65 20 27 64 62 29 0a | (require.'elnode).(require.'db). |
| cb40 | 28 65 76 61 6c 2d 77 68 65 6e 2d 63 6f 6d 70 69 6c 65 20 27 66 61 6b 69 72 29 0a 28 72 65 71 75 | (eval-when-compile.'fakir).(requ |
| cb60 | 69 72 65 20 27 63 72 65 6f 6c 65 20 6e 69 6c 20 27 74 29 0a 3b 3b 28 72 65 71 75 69 72 65 20 27 | ire.'creole.nil.'t).;;(require.' |
| cb80 | 76 63 29 0a 0a 28 64 65 66 67 72 6f 75 70 20 65 6c 6e 6f 64 65 2d 77 69 6b 69 73 65 72 76 65 72 | vc)..(defgroup.elnode-wikiserver |
| cba0 | 20 6e 69 6c 0a 20 20 22 41 20 57 69 6b 69 20 73 65 72 76 65 72 20 77 72 69 74 74 65 6e 20 77 69 | .nil..."A.Wiki.server.written.wi |
| cbc0 | 74 68 20 45 6c 6e 6f 64 65 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 65 6c 6e 6f 64 65 29 0a 0a 3b | th.Elnode."...:group.'elnode)..; |
| cbe0 | 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 63 6f 6e 73 74 20 65 6c 6e 6f 64 65 2d 77 | ;;###autoload.(defconst.elnode-w |
| cc00 | 69 6b 69 73 65 72 76 65 72 2d 77 69 6b 69 72 6f 6f 74 2d 64 65 66 61 75 6c 74 0a 20 20 28 65 78 | ikiserver-wikiroot-default...(ex |
| cc20 | 70 61 6e 64 2d 66 69 6c 65 2d 6e 61 6d 65 20 28 63 6f 6e 63 61 74 20 65 6c 6e 6f 64 65 2d 63 6f | pand-file-name.(concat.elnode-co |
| cc40 | 6e 66 69 67 2d 64 69 72 65 63 74 6f 72 79 20 22 77 69 6b 69 2f 22 29 29 0a 20 20 22 54 68 65 20 | nfig-directory."wiki/"))..."The. |
| cc60 | 64 65 66 61 75 6c 74 20 6c 6f 63 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 77 69 6b 69 20 72 6f 6f | default.location.of.the.wiki.roo |
| cc80 | 74 2e 0a 0a 54 68 69 73 20 69 73 20 75 73 65 64 20 74 6f 20 64 65 74 65 63 74 20 77 68 65 74 68 | t...This.is.used.to.detect.wheth |
| cca0 | 65 72 20 65 6c 6e 6f 64 65 20 6e 65 65 64 73 20 74 6f 20 63 72 65 61 74 65 20 74 68 69 73 0a 64 | er.elnode.needs.to.create.this.d |
| ccc0 | 69 72 65 63 74 6f 72 79 20 6f 72 20 6e 6f 74 2e 22 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f | irectory.or.not.")..;;;###autolo |
| cce0 | 61 64 0a 28 64 65 66 63 75 73 74 6f 6d 20 65 6c 6e 6f 64 65 2d 77 69 6b 69 73 65 72 76 65 72 2d | ad.(defcustom.elnode-wikiserver- |
| cd00 | 77 69 6b 69 72 6f 6f 74 0a 20 20 65 6c 6e 6f 64 65 2d 77 69 6b 69 73 65 72 76 65 72 2d 77 69 6b | wikiroot...elnode-wikiserver-wik |
| cd20 | 69 72 6f 6f 74 2d 64 65 66 61 75 6c 74 0a 20 20 22 54 68 65 20 72 6f 6f 74 20 66 6f 72 20 74 68 | iroot-default..."The.root.for.th |
| cd40 | 65 20 45 6c 6e 6f 64 65 20 77 69 6b 69 20 66 69 6c 65 73 2e 0a 0a 54 68 69 73 20 69 73 20 77 68 | e.Elnode.wiki.files...This.is.wh |
| cd60 | 65 72 65 20 65 6c 6e 6f 64 65 2d 77 69 6b 69 73 65 72 76 65 72 20 73 65 72 76 65 73 20 77 69 6b | ere.elnode-wikiserver.serves.wik |
| cd80 | 69 20 66 69 6c 65 73 20 66 72 6f 6d 2e 22 0a 20 20 3a 74 79 70 65 20 27 28 64 69 72 65 63 74 6f | i.files.from."...:type.'(directo |
| cda0 | 72 79 29 0a 20 20 3a 67 72 6f 75 70 20 27 65 6c 6e 6f 64 65 2d 77 69 6b 69 73 65 72 76 65 72 29 | ry)...:group.'elnode-wikiserver) |
| cdc0 | 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 65 6c 6e 6f 64 65 2d 77 69 6b 69 73 65 72 76 65 72 2d 62 | ..(defcustom.elnode-wikiserver-b |
| cde0 | 6f 64 79 2d 68 65 61 64 65 72 0a 20 20 22 3c 64 69 76 20 69 64 3d 27 74 6f 70 27 3e 3c 2f 64 69 | ody-header..."<div.id='top'></di |
| ce00 | 76 3e 22 0a 20 20 22 48 54 4d 4c 20 42 4f 44 59 20 70 72 65 61 6d 61 62 6c 65 20 6f 66 20 61 20 | v>"..."HTML.BODY.preamable.of.a. |
| ce20 | 72 65 6e 64 65 72 65 64 20 57 69 6b 69 20 70 61 67 65 2e 22 0a 20 20 3a 74 79 70 65 20 27 28 73 | rendered.Wiki.page."...:type.'(s |
| ce40 | 74 72 69 6e 67 29 0a 20 20 3a 67 72 6f 75 70 20 27 65 6c 6e 6f 64 65 2d 77 69 6b 69 73 65 72 76 | tring)...:group.'elnode-wikiserv |
| ce60 | 65 72 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 65 6c 6e 6f 64 65 2d 77 69 6b 69 73 65 72 76 65 | er)..(defcustom.elnode-wikiserve |
| ce80 | 72 2d 62 6f 64 79 2d 66 6f 6f 74 65 72 0a 20 20 22 3c 64 69 76 20 69 64 3d 27 66 6f 6f 74 65 72 | r-body-footer..."<div.id='footer |
| cea0 | 27 3e 0a 3c 66 6f 72 6d 20 61 63 74 69 6f 6e 3d 27 7b 7b 70 61 67 65 7d 7d 27 20 6d 65 74 68 6f | '>.<form.action='{{page}}'.metho |
| cec0 | 64 3d 27 50 4f 53 54 27 3e 0a 3c 66 69 65 6c 64 73 65 74 3e 0a 3c 6c 65 67 65 6e 64 3e 45 64 69 | d='POST'>.<fieldset>.<legend>Edi |
| cee0 | 74 20 74 68 69 73 20 70 61 67 65 3c 2f 6c 65 67 65 6e 64 3e 0a 3c 74 65 78 74 61 72 65 61 20 20 | t.this.page</legend>.<textarea.. |
| cf00 | 63 6f 6c 73 3d 27 38 30 27 20 72 6f 77 73 3d 27 32 30 27 20 6e 61 6d 65 3d 27 77 69 6b 69 74 65 | cols='80'.rows='20'.name='wikite |
| cf20 | 78 74 27 3e 0a 7b 7b 74 65 78 74 7d 7d 0a 3c 2f 74 65 78 74 61 72 65 61 3e 3c 62 72 2f 3e 0a 3c | xt'>.{{text}}.</textarea><br/>.< |
| cf40 | 69 6e 70 75 74 20 74 79 70 65 3d 27 74 65 78 74 27 20 6e 61 6d 65 3d 27 63 6f 6d 6d 65 6e 74 27 | input.type='text'.name='comment' |
| cf60 | 20 76 61 6c 75 65 3d 27 27 2f 3e 0a 3c 69 6e 70 75 74 20 74 79 70 65 3d 27 73 75 62 6d 69 74 27 | .value=''/>.<input.type='submit' |
| cf80 | 20 6e 61 6d 65 3d 27 73 61 76 65 27 20 76 61 6c 75 65 3d 27 73 61 76 65 27 2f 3e 0a 3c 69 6e 70 | .name='save'.value='save'/>.<inp |
| cfa0 | 75 74 20 74 79 70 65 3d 27 73 75 62 6d 69 74 27 20 6e 61 6d 65 3d 27 70 72 65 76 69 65 77 27 20 | ut.type='submit'.name='preview'. |
| cfc0 | 76 61 6c 75 65 3d 27 70 72 65 76 69 65 77 27 2f 3e 0a 3c 2f 66 69 65 6c 64 73 65 74 3e 0a 3c 2f | value='preview'/>.</fieldset>.</ |
| cfe0 | 66 6f 72 6d 3e 0a 3c 2f 64 69 76 3e 22 0a 20 20 22 48 54 4d 4c 20 42 4f 44 59 20 66 6f 6f 74 74 | form>.</div>"..."HTML.BODY.foott |
| d000 | 65 72 20 66 6f 72 20 61 20 72 65 6e 64 65 72 65 64 20 57 69 6b 69 20 70 61 67 65 2e 22 0a 20 20 | er.for.a.rendered.Wiki.page."... |
| d020 | 3a 74 79 70 65 20 27 28 73 74 72 69 6e 67 29 0a 20 20 3a 67 72 6f 75 70 20 27 65 6c 6e 6f 64 65 | :type.'(string)...:group.'elnode |
| d040 | 2d 77 69 6b 69 73 65 72 76 65 72 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 65 6c 6e 6f 64 65 2d | -wikiserver)..(defcustom.elnode- |
| d060 | 77 69 6b 69 73 65 72 76 65 72 2d 62 6f 64 79 2d 66 6f 6f 74 65 72 2d 6e 6f 74 2d 6c 6f 67 67 65 | wikiserver-body-footer-not-logge |
| d080 | 64 69 6e 0a 20 20 22 3c 64 69 76 20 69 64 3d 27 66 6f 6f 74 65 72 27 3e 0a 20 20 20 20 3c 61 20 | din..."<div.id='footer'>.....<a. |
| d0a0 | 68 72 65 66 3d 27 2f 77 69 6b 69 2f 6c 6f 67 69 6e 2f 3f 72 65 64 69 72 65 63 74 3d 7b 7b 70 61 | href='/wiki/login/?redirect={{pa |
| d0c0 | 67 65 7d 7d 27 3e 6c 6f 67 69 6e 20 74 6f 20 65 64 69 74 3c 2f 61 3e 0a 20 20 3c 2f 64 69 76 3e | ge}}'>login.to.edit</a>...</div> |
| d0e0 | 22 0a 20 20 22 48 54 4d 4c 20 42 4f 44 59 20 66 6f 6f 74 74 65 72 20 66 6f 72 20 61 20 72 65 6e | "..."HTML.BODY.footter.for.a.ren |
| d100 | 64 65 72 65 64 20 57 69 6b 69 20 70 61 67 65 2e 22 0a 20 20 3a 74 79 70 65 20 27 28 73 74 72 69 | dered.Wiki.page."...:type.'(stri |
| d120 | 6e 67 29 0a 20 20 3a 67 72 6f 75 70 20 27 65 6c 6e 6f 64 65 2d 77 69 6b 69 73 65 72 76 65 72 29 | ng)...:group.'elnode-wikiserver) |
| d140 | 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 77 69 6b 69 2d 2d 73 65 74 75 70 20 28 29 0a 20 | ..(defun.elnode-wiki--setup.().. |
| d160 | 20 22 53 65 74 75 70 20 74 68 65 20 77 69 6b 69 2e 22 0a 20 20 28 65 6c 6e 6f 64 65 2d 2d 64 69 | ."Setup.the.wiki."...(elnode--di |
| d180 | 72 2d 73 65 74 75 70 20 65 6c 6e 6f 64 65 2d 77 69 6b 69 73 65 72 76 65 72 2d 77 69 6b 69 72 6f | r-setup.elnode-wikiserver-wikiro |
| d1a0 | 6f 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 6e 6f 64 65 2d 77 | ot......................elnode-w |
| d1c0 | 69 6b 69 73 65 72 76 65 72 2d 77 69 6b 69 72 6f 6f 74 2d 64 65 66 61 75 6c 74 0a 20 20 20 20 20 | ikiserver-wikiroot-default...... |
| d1e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 64 65 66 61 75 6c 74 2d 77 69 6b 69 2d 69 6e | ................"default-wiki-in |
| d200 | 64 65 78 2e 63 72 65 6f 6c 65 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | dex.creole"..................... |
| d220 | 20 22 69 6e 64 65 78 2e 63 72 65 6f 6c 65 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ."index.creole"................. |
| d240 | 20 20 20 20 20 22 64 65 66 61 75 6c 74 2d 77 69 6b 69 2d 6c 6f 67 6f 2e 67 69 66 22 29 29 0a 0a | ....."default-wiki-logo.gif")).. |
| d260 | 3b 3b 20 49 6e 74 65 72 6e 61 6c 20 77 69 6b 69 20 73 74 75 66 66 0a 0a 28 64 65 66 76 61 72 20 | ;;.Internal.wiki.stuff..(defvar. |
| d280 | 65 6c 6e 6f 64 65 2d 77 69 6b 69 2d 64 62 0a 20 20 28 64 62 2d 6d 61 6b 65 0a 20 20 20 60 28 64 | elnode-wiki-db...(db-make....`(d |
| d2a0 | 62 2d 68 61 73 68 0a 20 20 20 20 20 3a 66 69 6c 65 6e 61 6d 65 0a 20 20 20 20 20 2c 28 65 78 70 | b-hash......:filename......,(exp |
| d2c0 | 61 6e 64 2d 66 69 6c 65 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 65 6c 6e | and-file-name........(concat.eln |
| d2e0 | 6f 64 65 2d 63 6f 6e 66 69 67 2d 64 69 72 65 63 74 6f 72 79 20 22 65 6c 6e 6f 64 65 2d 77 69 6b | ode-config-directory."elnode-wik |
| d300 | 69 2d 61 75 74 68 22 29 29 29 29 29 0a 0a 3b 3b 20 44 65 66 69 6e 65 20 74 68 65 20 61 75 74 68 | i-auth")))))..;;.Define.the.auth |
| d320 | 65 6e 74 69 63 61 74 69 6f 6e 20 73 63 68 65 6d 65 20 66 6f 72 20 74 68 65 20 77 69 6b 69 0a 28 | entication.scheme.for.the.wiki.( |
| d340 | 65 6c 6e 6f 64 65 2d 64 65 66 61 75 74 68 20 27 65 6c 6e 6f 64 65 2d 77 69 6b 69 2d 61 75 74 68 | elnode-defauth.'elnode-wiki-auth |
| d360 | 0a 20 20 3a 61 75 74 68 2d 64 62 20 65 6c 6e 6f 64 65 2d 77 69 6b 69 2d 64 62 0a 20 20 3a 72 65 | ...:auth-db.elnode-wiki-db...:re |
| d380 | 64 69 72 65 63 74 20 22 2f 77 69 6b 69 2f 6c 6f 67 69 6e 2f 22 29 0a 0a 28 64 65 66 75 6e 20 65 | direct."/wiki/login/")..(defun.e |
| d3a0 | 6c 6e 6f 64 65 2d 77 69 6b 69 2d 70 61 67 65 20 28 68 74 74 70 63 6f 6e 20 77 69 6b 69 70 61 67 | lnode-wiki-page.(httpcon.wikipag |
| d3c0 | 65 20 26 6f 70 74 69 6f 6e 61 6c 20 70 61 67 65 69 6e 66 6f 29 0a 20 20 22 43 72 65 6f 6c 65 20 | e.&optional.pageinfo)..."Creole. |
| d3e0 | 72 65 6e 64 65 72 20 61 20 57 49 4b 49 50 41 47 45 20 62 61 63 6b 20 74 6f 20 74 68 65 20 48 54 | render.a.WIKIPAGE.back.to.the.HT |
| d400 | 54 50 43 4f 4e 2e 22 0a 20 20 3b 3b 20 4f 74 68 65 72 77 69 73 65 20 6a 75 73 74 20 64 6f 20 69 | TPCON."...;;.Otherwise.just.do.i |
| d420 | 74 0a 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 74 61 72 74 20 68 74 74 70 63 6f 6e 20 32 | t...(elnode-http-start.httpcon.2 |
| d440 | 30 30 20 60 28 22 43 6f 6e 74 65 6e 74 2d 74 79 70 65 22 20 2e 20 22 74 65 78 74 2f 68 74 6d 6c | 00.`("Content-type"..."text/html |
| d460 | 22 29 29 0a 20 20 28 77 69 74 68 2d 73 74 64 6f 75 74 2d 74 6f 2d 65 6c 6e 6f 64 65 20 68 74 74 | "))...(with-stdout-to-elnode.htt |
| d480 | 70 63 6f 6e 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 70 61 67 65 2d 69 6e 66 6f 20 28 6f 72 20 | pcon.......(let.((page-info.(or. |
| d4a0 | 70 61 67 65 69 6e 66 6f 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 70 61 74 68 69 6e 66 6f 20 68 | pageinfo.(elnode-http-pathinfo.h |
| d4c0 | 74 74 70 63 6f 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 68 65 61 64 65 72 20 65 6c | ttpcon))).............(header.el |
| d4e0 | 6e 6f 64 65 2d 77 69 6b 69 73 65 72 76 65 72 2d 62 6f 64 79 2d 68 65 61 64 65 72 29 0a 20 20 20 | node-wikiserver-body-header).... |
| d500 | 20 20 20 20 20 20 20 20 20 28 66 6f 6f 74 65 72 20 28 69 66 2d 65 6c 6e 6f 64 65 2d 61 75 74 68 | .........(footer.(if-elnode-auth |
| d520 | 20 68 74 74 70 63 6f 6e 20 27 65 6c 6e 6f 64 65 2d 77 69 6b 69 2d 61 75 74 68 0a 20 20 20 20 20 | .httpcon.'elnode-wiki-auth...... |
| d540 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 6e 6f 64 65 2d 77 69 6b 69 73 65 72 76 | .................elnode-wikiserv |
| d560 | 65 72 2d 62 6f 64 79 2d 66 6f 6f 74 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | er-body-footer.................. |
| d580 | 20 20 20 20 20 65 6c 6e 6f 64 65 2d 77 69 6b 69 73 65 72 76 65 72 2d 62 6f 64 79 2d 66 6f 6f 74 | .....elnode-wikiserver-body-foot |
| d5a0 | 65 72 2d 6e 6f 74 2d 6c 6f 67 67 65 64 69 6e 29 29 29 0a 20 20 20 20 20 20 20 20 28 63 72 65 6f | er-not-loggedin))).........(creo |
| d5c0 | 6c 65 2d 77 69 6b 69 0a 20 20 20 20 20 20 20 20 20 77 69 6b 69 70 61 67 65 0a 20 20 20 20 20 20 | le-wiki..........wikipage....... |
| d5e0 | 20 20 20 3a 64 65 73 74 69 6e 61 74 69 6f 6e 20 74 0a 20 20 20 20 20 20 20 20 20 3a 76 61 72 69 | ...:destination.t..........:vari |
| d600 | 61 62 6c 65 73 20 28 6c 69 73 74 20 28 63 6f 6e 73 20 27 70 61 67 65 20 70 61 67 65 2d 69 6e 66 | ables.(list.(cons.'page.page-inf |
| d620 | 6f 29 29 0a 20 20 20 20 20 20 20 20 20 3a 62 6f 64 79 2d 68 65 61 64 65 72 20 68 65 61 64 65 72 | o))..........:body-header.header |
| d640 | 0a 20 20 20 20 20 20 20 20 20 3a 62 6f 64 79 2d 66 6f 6f 74 65 72 20 66 6f 6f 74 65 72 29 29 29 | ..........:body-footer.footer))) |
| d660 | 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 77 69 6b 69 2d 2d 74 65 78 74 2d 70 61 72 61 | )..(defun.elnode-wiki--text-para |
| d680 | 6d 20 28 68 74 74 70 63 6f 6e 29 0a 20 20 22 47 65 74 20 74 68 65 20 74 65 78 74 20 70 61 72 61 | m.(httpcon)..."Get.the.text.para |
| d6a0 | 6d 20 66 72 6f 6d 20 48 54 54 50 43 4f 4e 20 61 6e 64 20 63 6f 6e 76 65 72 74 20 69 74 2e 22 0a | m.from.HTTPCON.and.convert.it.". |
| d6c0 | 20 20 28 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 0a 20 20 20 22 | ..(replace-regexp-in-string...." |
| d6e0 | 5c 72 22 20 22 22 20 3b 20 62 72 6f 77 73 65 72 73 20 73 65 6e 64 20 74 65 78 74 20 69 6e 20 44 | \r"."".;.browsers.send.text.in.D |
| d700 | 4f 53 20 6c 69 6e 65 20 65 6e 64 69 6e 67 20 66 6f 72 6d 61 74 0a 20 20 20 28 65 6c 6e 6f 64 65 | OS.line.ending.format....(elnode |
| d720 | 2d 68 74 74 70 2d 70 61 72 61 6d 20 68 74 74 70 63 6f 6e 20 22 77 69 6b 69 74 65 78 74 22 29 29 | -http-param.httpcon."wikitext")) |
| d740 | 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 77 69 6b 69 2d 2d 73 61 76 65 2d 72 65 71 75 | )..(defun.elnode-wiki--save-requ |
| d760 | 65 73 74 20 28 68 74 74 70 63 6f 6e 20 77 69 6b 69 72 6f 6f 74 20 70 61 74 68 20 74 65 78 74 29 | est.(httpcon.wikiroot.path.text) |
| d780 | 0a 20 20 22 50 72 6f 63 65 73 73 20 61 6e 20 75 70 64 61 74 65 20 72 65 71 75 65 73 74 2e 22 0a | ..."Process.an.update.request.". |
| d7a0 | 20 20 28 6c 65 74 2a 20 28 28 70 61 67 65 20 28 69 66 20 70 61 74 68 0a 20 20 20 20 20 20 20 20 | ..(let*.((page.(if.path......... |
| d7c0 | 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 | ...........(save-match-data..... |
| d7e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 | .................(string-match." |
| d800 | 2f 77 69 6b 69 2f 5c 5c 28 2e 2a 5c 5c 29 24 22 20 70 61 74 68 29 0a 20 20 20 20 20 20 20 20 20 | /wiki/\\(.*\\)$".path).......... |
| d820 | 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 70 61 74 68 | ............(match-string.1.path |
| d840 | 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 6f 6d 6d 65 6e 74 20 28 65 6c 6e 6f 64 65 2d 68 | ))))..........(comment.(elnode-h |
| d860 | 74 74 70 2d 70 61 72 61 6d 20 68 74 74 70 63 6f 6e 20 22 63 6f 6d 6d 65 6e 74 22 29 29 0a 20 20 | ttp-param.httpcon."comment"))... |
| d880 | 20 20 20 20 20 20 20 28 66 69 6c 65 2d 6e 61 6d 65 20 28 69 66 20 28 65 71 75 61 6c 20 70 61 67 | .......(file-name.(if.(equal.pag |
| d8a0 | 65 20 22 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 | e."").........................(c |
| d8c0 | 6f 6e 63 61 74 20 77 69 6b 69 72 6f 6f 74 20 22 69 6e 64 65 78 2e 63 72 65 6f 6c 65 22 29 0a 20 | oncat.wikiroot."index.creole").. |
| d8e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 66 69 | .....................(concat.(fi |
| d900 | 6c 65 2d 6e 61 6d 65 2d 61 73 2d 64 69 72 65 63 74 6f 72 79 20 77 69 6b 69 72 6f 6f 74 29 20 70 | le-name-as-directory.wikiroot).p |
| d920 | 61 67 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 20 28 66 69 6e 64 2d 66 69 | age)))..........(buffer.(find-fi |
| d940 | 6c 65 2d 6e 6f 73 65 6c 65 63 74 20 66 69 6c 65 2d 6e 61 6d 65 29 29 29 0a 20 20 20 20 28 77 69 | le-noselect.file-name))).....(wi |
| d960 | 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 62 75 66 66 65 72 0a 20 20 20 20 20 20 28 | th-current-buffer.buffer.......( |
| d980 | 65 72 61 73 65 2d 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 74 65 78 74 | erase-buffer).......(insert.text |
| d9a0 | 29 0a 20 20 20 20 20 20 28 73 61 76 65 2d 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 28 6c 65 74 | ).......(save-buffer).......(let |
| d9c0 | 20 28 28 67 69 74 2d 62 75 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 74 2d 62 75 66 | .((git-buf..............(get-buf |
| d9e0 | 66 65 72 2d 63 72 65 61 74 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 6e 65 72 61 | fer-create...............(genera |
| da00 | 74 65 2d 6e 65 77 2d 62 75 66 66 65 72 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | te-new-buffer-name.............. |
| da20 | 20 20 22 2a 20 65 6c 6e 6f 64 65 20 77 69 6b 69 20 63 6f 6d 6d 69 74 20 62 75 66 20 2a 22 29 29 | .."*.elnode.wiki.commit.buf.*")) |
| da40 | 29 29 0a 20 20 20 20 20 20 20 20 28 73 68 65 6c 6c 2d 63 6f 6d 6d 61 6e 64 0a 20 20 20 20 20 20 | )).........(shell-command....... |
| da60 | 20 20 20 28 66 6f 72 6d 61 74 20 22 67 69 74 20 63 6f 6d 6d 69 74 20 2d 6d 20 27 25 73 27 20 25 | ...(format."git.commit.-m.'%s'.% |
| da80 | 73 22 20 63 6f 6d 6d 65 6e 74 20 66 69 6c 65 2d 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 67 | s".comment.file-name)..........g |
| daa0 | 69 74 2d 62 75 66 29 0a 20 20 20 20 20 20 20 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 20 67 69 74 | it-buf).........(kill-buffer.git |
| dac0 | 2d 62 75 66 29 29 0a 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 77 69 6b 69 2d 70 61 67 65 20 68 | -buf)).......(elnode-wiki-page.h |
| dae0 | 74 74 70 63 6f 6e 20 66 69 6c 65 2d 6e 61 6d 65 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e | ttpcon.file-name))))..(defun.eln |
| db00 | 6f 64 65 2d 77 69 6b 69 2d 68 61 6e 64 6c 65 72 20 28 68 74 74 70 63 6f 6e 20 77 69 6b 69 72 6f | ode-wiki-handler.(httpcon.wikiro |
| db20 | 6f 74 29 0a 20 20 22 41 20 6c 6f 77 20 6c 65 76 65 6c 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 57 | ot)..."A.low.level.handler.for.W |
| db40 | 69 6b 69 20 6f 70 65 72 61 74 69 6f 6e 73 2e 0a 0a 53 65 6e 64 20 74 68 65 20 57 69 6b 69 20 70 | iki.operations...Send.the.Wiki.p |
| db60 | 61 67 65 20 72 65 71 75 65 73 74 65 64 2c 20 77 68 69 63 68 20 6d 75 73 74 20 62 65 20 61 20 66 | age.requested,.which.must.be.a.f |
| db80 | 69 6c 65 20 65 78 69 73 74 69 6e 67 20 75 6e 64 65 72 0a 74 68 65 20 57 49 4b 49 52 4f 4f 54 2c | ile.existing.under.the.WIKIROOT, |
| dba0 | 20 62 61 63 6b 20 74 6f 20 74 68 65 20 48 54 54 50 43 4f 4e 2e 0a 0a 55 70 64 61 74 65 20 6f 70 | .back.to.the.HTTPCON...Update.op |
| dbc0 | 65 72 61 74 69 6f 6e 73 20 61 72 65 20 70 72 6f 74 65 63 74 65 64 20 62 79 20 61 75 74 68 65 6e | erations.are.protected.by.authen |
| dbe0 | 74 69 63 61 74 69 6f 6e 2e 22 0a 20 20 28 65 6c 6e 6f 64 65 2d 6d 65 74 68 6f 64 20 68 74 74 70 | tication."...(elnode-method.http |
| dc00 | 63 6f 6e 0a 20 20 20 20 28 47 45 54 0a 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 64 6f 63 72 6f 6f | con.....(GET......(elnode-docroo |
| dc20 | 74 2d 66 6f 72 20 77 69 6b 69 72 6f 6f 74 0a 20 20 20 20 20 20 20 77 69 74 68 20 74 61 72 67 65 | t-for.wikiroot........with.targe |
| dc40 | 74 2d 70 61 74 68 0a 20 20 20 20 20 20 20 6f 6e 20 68 74 74 70 63 6f 6e 0a 20 20 20 20 20 20 20 | t-path........on.httpcon........ |
| dc60 | 64 6f 0a 20 20 20 20 20 20 20 3b 3b 20 44 6f 20 77 65 20 6e 65 65 64 20 74 6f 20 73 65 72 76 65 | do........;;.Do.we.need.to.serve |
| dc80 | 20 61 6e 20 69 6e 64 65 78 3f 0a 20 20 20 20 20 20 20 28 69 66 20 28 65 71 75 61 6c 20 74 61 72 | .an.index?........(if.(equal.tar |
| dca0 | 67 65 74 2d 70 61 74 68 20 28 65 78 70 61 6e 64 2d 66 69 6c 65 2d 6e 61 6d 65 20 28 63 6f 6e 63 | get-path.(expand-file-name.(conc |
| dcc0 | 61 74 20 77 69 6b 69 72 6f 6f 74 20 22 2f 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 65 | at.wikiroot."/")))............(e |
| dce0 | 6c 6e 6f 64 65 2d 77 69 6b 69 2d 70 61 67 65 20 68 74 74 70 63 6f 6e 20 28 63 6f 6e 63 61 74 20 | lnode-wiki-page.httpcon.(concat. |
| dd00 | 77 69 6b 69 72 6f 6f 74 20 22 2f 69 6e 64 65 78 2e 63 72 65 6f 6c 65 22 29 29 0a 20 20 20 20 20 | wikiroot."/index.creole"))...... |
| dd20 | 20 20 20 20 20 20 3b 3b 20 45 6c 73 65 20 69 74 27 73 20 61 20 77 69 6b 69 20 70 61 67 65 20 6f | ......;;.Else.it's.a.wiki.page.o |
| dd40 | 72 20 73 6f 6d 65 20 63 6f 6c 6c 61 74 65 72 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 66 | r.some.collateral............(if |
| dd60 | 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 5c 5c 2e 63 72 65 6f 6c 65 24 22 20 74 61 72 67 | .(string-match."\\.creole$".targ |
| dd80 | 65 74 2d 70 61 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 53 65 72 76 65 | et-path)................;;.Serve |
| dda0 | 20 61 20 63 72 65 6f 6c 65 20 70 61 67 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 | .a.creole.page................(e |
| ddc0 | 6c 6e 6f 64 65 2d 77 69 6b 69 2d 70 61 67 65 20 68 74 74 70 63 6f 6e 20 74 61 72 67 65 74 2d 70 | lnode-wiki-page.httpcon.target-p |
| dde0 | 61 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 45 6c 73 65 20 73 65 72 76 | ath)................;;.Else.serv |
| de00 | 65 20 6a 75 73 74 20 63 6f 6e 74 65 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 | e.just.content................(e |
| de20 | 6c 6e 6f 64 65 2d 73 65 6e 64 2d 66 69 6c 65 20 68 74 74 70 63 6f 6e 20 74 61 72 67 65 74 2d 70 | lnode-send-file.httpcon.target-p |
| de40 | 61 74 68 29 29 29 29 29 0a 20 20 20 20 28 50 4f 53 54 0a 20 20 20 20 20 28 77 69 74 68 2d 65 6c | ath))))).....(POST......(with-el |
| de60 | 6e 6f 64 65 2d 61 75 74 68 20 68 74 74 70 63 6f 6e 20 27 65 6c 6e 6f 64 65 2d 77 69 6b 69 2d 61 | node-auth.httpcon.'elnode-wiki-a |
| de80 | 75 74 68 0a 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 70 61 74 68 20 28 65 6c 6e 6f 64 65 2d | uth........(let*.((path.(elnode- |
| dea0 | 68 74 74 70 2d 70 61 74 68 69 6e 66 6f 20 68 74 74 70 63 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 | http-pathinfo.httpcon))......... |
| dec0 | 20 20 20 20 20 20 28 74 65 78 74 20 28 65 6c 6e 6f 64 65 2d 77 69 6b 69 2d 2d 74 65 78 74 2d 70 | ......(text.(elnode-wiki--text-p |
| dee0 | 61 72 61 6d 20 68 74 74 70 63 6f 6e 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6e 6f | aram.httpcon)))..........(if.(no |
| df00 | 74 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 70 61 72 61 6d 20 68 74 74 70 63 6f 6e 20 22 70 72 | t.(elnode-http-param.httpcon."pr |
| df20 | 65 76 69 65 77 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 41 20 73 61 76 65 20 | eview"))..............;;.A.save. |
| df40 | 72 65 71 75 65 73 74 20 69 6e 20 77 68 69 63 68 20 63 61 73 65 20 73 61 76 65 20 74 68 65 20 6e | request.in.which.case.save.the.n |
| df60 | 65 77 20 74 65 78 74 20 61 6e 64 20 74 68 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b | ew.text.and.then..............;; |
| df80 | 20 73 65 6e 64 20 74 68 65 20 77 69 6b 69 20 74 65 78 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20 | .send.the.wiki.text............. |
| dfa0 | 20 20 28 65 6c 6e 6f 64 65 2d 77 69 6b 69 2d 2d 73 61 76 65 2d 72 65 71 75 65 73 74 20 68 74 74 | ..(elnode-wiki--save-request.htt |
| dfc0 | 70 63 6f 6e 20 77 69 6b 69 72 6f 6f 74 20 70 61 74 68 20 74 65 78 74 29 0a 20 20 20 20 20 20 20 | pcon.wikiroot.path.text)........ |
| dfe0 | 20 20 20 20 20 20 3b 3b 20 4d 69 67 68 74 20 62 65 20 61 20 70 72 65 76 69 65 77 20 72 65 71 75 | ......;;.Might.be.a.preview.requ |
| e000 | 65 73 74 20 69 6e 20 77 68 69 63 68 20 63 61 73 65 20 73 65 6e 64 20 62 61 63 6b 20 74 68 65 20 | est.in.which.case.send.back.the. |
| e020 | 57 49 4b 49 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 74 65 78 74 20 74 68 61 74 27 73 | WIKI..............;;.text.that's |
| e040 | 20 62 65 65 6e 20 73 65 6e 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 74 | .been.sent...............(with-t |
| e060 | 65 6d 70 2d 66 69 6c 65 20 22 2f 74 6d 70 2f 70 72 65 76 69 65 77 22 0a 20 20 20 20 20 20 20 20 | emp-file."/tmp/preview"......... |
| e080 | 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 74 65 78 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 | .......(insert.text))........... |
| e0a0 | 20 20 20 28 65 6c 6e 6f 64 65 2d 77 69 6b 69 2d 70 61 67 65 20 68 74 74 70 63 6f 6e 20 22 2f 74 | ...(elnode-wiki-page.httpcon."/t |
| e0c0 | 6d 70 2f 70 72 65 76 69 65 77 22 20 70 61 74 68 29 29 29 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 | mp/preview".path)))))))..;;;###a |
| e0e0 | 75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 77 69 6b 69 73 65 72 76 65 72 | utoload.(defun.elnode-wikiserver |
| e100 | 2d 74 65 73 74 20 28 29 0a 20 20 22 54 65 73 74 20 77 68 65 74 68 65 72 20 77 65 20 73 68 6f 75 | -test.()..."Test.whether.we.shou |
| e120 | 6c 64 20 73 65 72 76 65 20 57 69 6b 69 20 6f 72 20 6e 6f 74 2e 22 0a 20 20 28 66 65 61 74 75 72 | ld.serve.Wiki.or.not."...(featur |
| e140 | 65 70 20 27 63 72 65 6f 6c 65 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 | ep.'creole))..;;;###autoload.(de |
| e160 | 66 75 6e 20 65 6c 6e 6f 64 65 2d 77 69 6b 69 73 65 72 76 65 72 20 28 68 74 74 70 63 6f 6e 29 0a | fun.elnode-wikiserver.(httpcon). |
| e180 | 20 20 22 53 65 72 76 65 20 57 69 6b 69 20 70 61 67 65 73 20 66 72 6f 6d 20 60 65 6c 6e 6f 64 65 | .."Serve.Wiki.pages.from.`elnode |
| e1a0 | 2d 77 69 6b 69 73 65 72 76 65 72 2d 77 69 6b 69 72 6f 6f 74 27 2e 0a 0a 48 54 54 50 43 4f 4e 20 | -wikiserver-wikiroot'...HTTPCON. |
| e1c0 | 69 73 20 74 68 65 20 72 65 71 75 65 73 74 2e 0a 0a 54 68 65 20 57 69 6b 69 20 73 65 72 76 65 72 | is.the.request...The.Wiki.server |
| e1e0 | 20 69 73 20 6f 6e 6c 79 20 61 76 61 69 6c 61 62 6c 65 20 69 66 20 74 68 65 20 60 63 72 65 6f 6c | .is.only.available.if.the.`creol |
| e200 | 65 27 20 70 61 63 6b 61 67 65 20 69 73 0a 70 72 6f 76 69 64 65 64 2e 20 4f 74 68 65 72 77 69 73 | e'.package.is.provided..Otherwis |
| e220 | 65 20 69 74 20 77 69 6c 6c 20 6a 75 73 74 20 65 72 72 6f 72 2e 22 0a 20 20 28 69 66 20 28 6e 6f | e.it.will.just.error."...(if.(no |
| e240 | 74 20 28 65 6c 6e 6f 64 65 2d 77 69 6b 69 73 65 72 76 65 72 2d 74 65 73 74 29 29 0a 20 20 20 20 | t.(elnode-wikiserver-test))..... |
| e260 | 20 20 28 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 35 30 30 20 68 74 74 70 63 6f 6e 20 22 54 68 65 20 | ..(elnode-send-500.httpcon."The. |
| e280 | 45 6d 61 63 73 20 66 65 61 74 75 72 65 20 27 63 72 65 6f 6c 65 20 69 73 20 72 65 71 75 69 72 65 | Emacs.feature.'creole.is.require |
| e2a0 | 64 2e 22 29 0a 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 64 69 73 70 61 74 63 68 | d.").......(elnode-auth-dispatch |
| e2c0 | 65 72 20 68 74 74 70 63 6f 6e 20 27 65 6c 6e 6f 64 65 2d 77 69 6b 69 2d 61 75 74 68 0a 20 20 20 | er.httpcon.'elnode-wiki-auth.... |
| e2e0 | 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 77 69 6b 69 2d 2d 73 65 74 75 70 29 0a 20 20 20 20 20 20 | .....(elnode-wiki--setup)....... |
| e300 | 20 20 28 65 6c 6e 6f 64 65 2d 77 69 6b 69 2d 68 61 6e 64 6c 65 72 20 68 74 74 70 63 6f 6e 20 65 | ..(elnode-wiki-handler.httpcon.e |
| e320 | 6c 6e 6f 64 65 2d 77 69 6b 69 73 65 72 76 65 72 2d 77 69 6b 69 72 6f 6f 74 29 29 29 29 0a 0a 28 | lnode-wikiserver-wikiroot))))..( |
| e340 | 70 72 6f 76 69 64 65 20 27 65 6c 6e 6f 64 65 2d 77 69 6b 69 29 0a 0a 3b 3b 3b 20 65 6c 6e 6f 64 | provide.'elnode-wiki)..;;;.elnod |
| e360 | 65 2d 77 69 6b 69 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 0a 00 00 00 00 00 00 00 00 00 00 00 00 | e-wiki.el.ends.here............. |
| e380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e3a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e3c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e3e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e400 | 65 6c 6e 6f 64 65 2d 32 30 31 39 30 37 30 32 2e 31 35 30 39 2f 65 6c 6e 6f 64 65 2e 65 6c 00 00 | elnode-20190702.1509/elnode.el.. |
| e420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e460 | 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 | ....0000644.0000000.0000000.0000 |
| e480 | 30 34 32 33 32 30 31 00 30 30 30 30 30 30 30 30 30 30 30 00 30 31 34 30 35 34 00 20 30 00 00 00 | 0423201.00000000000.014054..0... |
| e4a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e4c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e4e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e500 | 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .ustar...root................... |
| e520 | 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | .........root................... |
| e540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e5a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e5c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e5e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| e600 | 3b 3b 3b 20 65 6c 6e 6f 64 65 2e 65 6c 20 2d 2d 2d 20 61 20 73 69 6d 70 6c 65 20 65 6d 61 63 73 | ;;;.elnode.el.---.a.simple.emacs |
| e620 | 20 61 73 79 6e 63 20 48 54 54 50 20 73 65 72 76 65 72 20 2d 2a 2d 20 6c 65 78 69 63 61 6c 2d 62 | .async.HTTP.server.-*-.lexical-b |
| e640 | 69 6e 64 69 6e 67 3a 20 74 20 2d 2a 2d 0a 0a 3b 3b 20 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 | inding:.t.-*-..;;.Copyright.(C). |
| e660 | 32 30 31 30 2c 20 32 30 31 31 2c 20 32 30 31 32 20 20 4e 69 63 20 46 65 72 72 69 65 72 0a 3b 3b | 2010,.2011,.2012..Nic.Ferrier.;; |
| e680 | 20 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 32 30 31 39 20 20 47 69 74 48 75 62 20 75 73 65 72 | .Copyright.(C).2019..GitHub.user |
| e6a0 | 20 22 4a 63 61 77 22 0a 0a 3b 3b 20 41 75 74 68 6f 72 3a 20 4e 69 63 20 46 65 72 72 69 65 72 20 | ."Jcaw"..;;.Author:.Nic.Ferrier. |
| e6c0 | 3c 6e 66 65 72 72 69 65 72 40 66 65 72 72 69 65 72 2e 6d 65 2e 75 6b 3e 0a 3b 3b 20 4d 61 69 6e | <nferrier@ferrier.me.uk>.;;.Main |
| e6e0 | 74 61 69 6e 65 72 3a 20 47 69 74 48 75 62 20 75 73 65 72 20 22 4a 63 61 77 22 0a 3b 3b 20 43 72 | tainer:.GitHub.user."Jcaw".;;.Cr |
| e700 | 65 61 74 65 64 3a 20 35 74 68 20 4f 63 74 6f 62 65 72 20 32 30 31 30 0a 3b 3b 20 50 61 63 6b 61 | eated:.5th.October.2010.;;.Packa |
| e720 | 67 65 2d 56 65 72 73 69 6f 6e 3a 20 32 30 31 39 30 37 30 32 2e 31 35 30 39 0a 3b 3b 20 50 61 63 | ge-Version:.20190702.1509.;;.Pac |
| e740 | 6b 61 67 65 2d 52 65 76 69 73 69 6f 6e 3a 20 32 39 65 66 30 66 35 31 61 36 35 61 0a 3b 3b 20 4b | kage-Revision:.29ef0f51a65a.;;.K |
| e760 | 65 79 77 6f 72 64 73 3a 20 6c 69 73 70 2c 20 68 74 74 70 2c 20 68 79 70 65 72 6d 65 64 69 61 0a | eywords:.lisp,.http,.hypermedia. |
| e780 | 0a 3b 3b 20 54 68 69 73 20 66 69 6c 65 20 69 73 20 4e 4f 54 20 70 61 72 74 20 6f 66 20 47 4e 55 | .;;.This.file.is.NOT.part.of.GNU |
| e7a0 | 20 45 6d 61 63 73 2e 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 66 72 65 65 | .Emacs...;;.This.program.is.free |
| e7c0 | 20 73 6f 66 74 77 61 72 65 3b 20 79 6f 75 20 63 61 6e 20 72 65 64 69 73 74 72 69 62 75 74 65 20 | .software;.you.can.redistribute. |
| e7e0 | 69 74 20 61 6e 64 2f 6f 72 20 6d 6f 64 69 66 79 0a 3b 3b 20 69 74 20 75 6e 64 65 72 20 74 68 65 | it.and/or.modify.;;.it.under.the |
| e800 | 20 74 65 72 6d 73 20 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 | .terms.of.the.GNU.General.Public |
| e820 | 20 4c 69 63 65 6e 73 65 20 61 73 20 70 75 62 6c 69 73 68 65 64 20 62 79 0a 3b 3b 20 74 68 65 20 | .License.as.published.by.;;.the. |
| e840 | 46 72 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 65 69 74 68 65 72 | Free.Software.Foundation,.either |
| e860 | 20 76 65 72 73 69 6f 6e 20 33 20 6f 66 20 74 68 65 20 4c 69 63 65 6e 73 65 2c 20 6f 72 0a 3b 3b | .version.3.of.the.License,.or.;; |
| e880 | 20 28 61 74 20 79 6f 75 72 20 6f 70 74 69 6f 6e 29 20 61 6e 79 20 6c 61 74 65 72 20 76 65 72 73 | .(at.your.option).any.later.vers |
| e8a0 | 69 6f 6e 2e 0a 0a 3b 3b 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73 20 64 69 73 74 72 69 62 | ion...;;.This.program.is.distrib |
| e8c0 | 75 74 65 64 20 69 6e 20 74 68 65 20 68 6f 70 65 20 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65 | uted.in.the.hope.that.it.will.be |
| e8e0 | 20 75 73 65 66 75 6c 2c 0a 3b 3b 20 62 75 74 20 57 49 54 48 4f 55 54 20 41 4e 59 20 57 41 52 52 | .useful,.;;.but.WITHOUT.ANY.WARR |
| e900 | 41 4e 54 59 3b 20 77 69 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 20 69 6d 70 6c 69 65 64 20 77 | ANTY;.without.even.the.implied.w |
| e920 | 61 72 72 61 6e 74 79 20 6f 66 0a 3b 3b 20 4d 45 52 43 48 41 4e 54 41 42 49 4c 49 54 59 20 6f 72 | arranty.of.;;.MERCHANTABILITY.or |
| e940 | 20 46 49 54 4e 45 53 53 20 46 4f 52 20 41 20 50 41 52 54 49 43 55 4c 41 52 20 50 55 52 50 4f 53 | .FITNESS.FOR.A.PARTICULAR.PURPOS |
| e960 | 45 2e 20 20 53 65 65 20 74 68 65 0a 3b 3b 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 | E...See.the.;;.GNU.General.Publi |
| e980 | 63 20 4c 69 63 65 6e 73 65 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 0a 0a 3b 3b 20 | c.License.for.more.details...;;. |
| e9a0 | 59 6f 75 20 73 68 6f 75 6c 64 20 68 61 76 65 20 72 65 63 65 69 76 65 64 20 61 20 63 6f 70 79 20 | You.should.have.received.a.copy. |
| e9c0 | 6f 66 20 74 68 65 20 47 4e 55 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65 6e 73 | of.the.GNU.General.Public.Licens |
| e9e0 | 65 0a 3b 3b 20 61 6c 6f 6e 67 20 77 69 74 68 20 74 68 69 73 20 70 72 6f 67 72 61 6d 2e 20 20 49 | e.;;.along.with.this.program...I |
| ea00 | 66 20 6e 6f 74 2c 20 73 65 65 20 3c 68 74 74 70 3a 2f 2f 77 77 77 2e 67 6e 75 2e 6f 72 67 2f 6c | f.not,.see.<http://www.gnu.org/l |
| ea20 | 69 63 65 6e 73 65 73 2f 3e 2e 0a 0a 3b 3b 3b 20 53 6f 75 72 63 65 20 63 6f 64 65 0a 3b 3b 0a 3b | icenses/>...;;;.Source.code.;;.; |
| ea40 | 3b 20 65 6c 6e 6f 64 65 27 73 20 63 6f 64 65 20 63 61 6e 20 62 65 20 66 6f 75 6e 64 20 68 65 72 | ;.elnode's.code.can.be.found.her |
| ea60 | 65 3a 0a 3b 3b 20 20 20 68 74 74 70 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 6a 63 61 77 2f 65 | e:.;;...http://github.com/jcaw/e |
| ea80 | 6c 6e 6f 64 65 0a 0a 3b 3b 3b 20 53 74 79 6c 65 20 6e 6f 74 65 0a 3b 3b 0a 3b 3b 20 54 68 69 73 | lnode..;;;.Style.note.;;.;;.This |
| eaa0 | 20 63 6f 64 65 73 20 75 73 65 73 20 74 68 65 20 45 6d 61 63 73 20 73 74 79 6c 65 20 6f 66 3a 0a | .codes.uses.the.Emacs.style.of:. |
| eac0 | 3b 3b 0a 3b 3b 20 20 20 20 65 6c 6e 6f 64 65 2d 2d 70 72 69 76 61 74 65 2d 66 75 6e 63 74 69 6f | ;;.;;....elnode--private-functio |
| eae0 | 6e 0a 3b 3b 0a 3b 3b 20 66 6f 72 20 70 72 69 76 61 74 65 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 0a | n.;;.;;.for.private.functions... |
| eb00 | 0a 3b 3b 3b 20 43 6f 6d 6d 65 6e 74 61 72 79 3a 0a 3b 3b 0a 3b 3b 20 54 68 69 73 20 69 73 20 61 | .;;;.Commentary:.;;.;;.This.is.a |
| eb20 | 6e 20 65 6c 69 73 70 20 76 65 72 73 69 6f 6e 20 6f 66 20 74 68 65 20 70 6f 70 75 6c 61 72 20 6e | n.elisp.version.of.the.popular.n |
| eb40 | 6f 64 65 2e 6a 73 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 0a 3b 3b 20 77 65 62 73 65 72 76 65 72 | ode.js.asynchronous.;;.webserver |
| eb60 | 20 74 6f 6f 6c 6b 69 74 2e 0a 3b 3b 0a 3b 3b 20 59 6f 75 20 63 61 6e 20 64 65 66 69 6e 65 20 48 | .toolkit..;;.;;.You.can.define.H |
| eb80 | 54 54 50 20 72 65 71 75 65 73 74 20 68 61 6e 64 6c 65 72 73 20 61 6e 64 20 73 74 61 72 74 20 61 | TTP.request.handlers.and.start.a |
| eba0 | 6e 20 48 54 54 50 20 73 65 72 76 65 72 0a 3b 3b 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 65 | n.HTTP.server.;;.attached.to.the |
| ebc0 | 20 68 61 6e 64 6c 65 72 2e 20 20 4d 61 6e 79 20 48 54 54 50 20 73 65 72 76 65 72 73 20 63 61 6e | .handler...Many.HTTP.servers.can |
| ebe0 | 20 62 65 20 73 74 61 72 74 65 64 2c 20 65 61 63 68 0a 3b 3b 20 6d 75 73 74 20 68 61 76 65 20 69 | .be.started,.each.;;.must.have.i |
| ec00 | 74 73 20 6f 77 6e 20 54 43 50 20 70 6f 72 74 2e 20 20 48 61 6e 64 6c 65 72 73 20 63 61 6e 20 64 | ts.own.TCP.port...Handlers.can.d |
| ec20 | 65 66 65 72 20 70 72 6f 63 65 73 73 69 6e 67 20 77 69 74 68 20 61 0a 3b 3b 20 73 69 67 6e 61 6c | efer.processing.with.a.;;.signal |
| ec40 | 20 28 77 68 69 63 68 20 61 6c 6c 6f 77 73 20 63 6f 6d 65 74 20 73 74 79 6c 65 20 72 65 73 6f 75 | .(which.allows.comet.style.resou |
| ec60 | 72 63 65 20 6d 61 6e 61 67 65 6d 65 6e 74 29 0a 3b 3b 0a 3b 3b 20 53 65 65 20 65 6c 6e 6f 64 65 | rce.management).;;.;;.See.elnode |
| ec80 | 2d 73 74 61 72 74 20 66 6f 72 20 68 6f 77 20 74 6f 20 73 74 61 72 74 20 61 6e 20 48 54 54 50 20 | -start.for.how.to.start.an.HTTP. |
| eca0 | 73 65 72 76 65 72 2e 0a 0a 3b 3b 3b 20 43 6f 64 65 3a 0a 0a 28 72 65 71 75 69 72 65 20 27 66 61 | server...;;;.Code:..(require.'fa |
| ecc0 | 6b 69 72 29 0a 28 72 65 71 75 69 72 65 20 27 6d 6d 2d 65 6e 63 6f 64 65 29 0a 28 72 65 71 75 69 | kir).(require.'mm-encode).(requi |
| ece0 | 72 65 20 27 6d 61 69 6c 63 61 70 29 0a 28 72 65 71 75 69 72 65 20 27 6d 61 69 6c 2d 70 61 72 73 | re.'mailcap).(require.'mail-pars |
| ed00 | 65 29 20 3b 20 66 6f 72 20 6d 61 69 6c 2d 68 65 61 64 65 72 2d 70 61 72 73 65 2d 63 6f 6e 74 65 | e).;.for.mail-header-parse-conte |
| ed20 | 6e 74 2d 74 79 70 65 0a 28 72 65 71 75 69 72 65 20 27 75 72 6c 2d 75 74 69 6c 29 0a 28 72 65 71 | nt-type.(require.'url-util).(req |
| ed40 | 75 69 72 65 20 27 6b 76 29 0a 28 72 65 71 75 69 72 65 20 27 73 29 0a 28 72 65 71 75 69 72 65 20 | uire.'kv).(require.'s).(require. |
| ed60 | 27 64 61 73 68 29 0a 28 72 65 71 75 69 72 65 20 27 72 78 29 0a 28 72 65 71 75 69 72 65 20 27 77 | 'dash).(require.'rx).(require.'w |
| ed80 | 65 62 29 0a 28 72 65 71 75 69 72 65 20 27 6a 73 6f 6e 29 0a 28 72 65 71 75 69 72 65 20 27 64 62 | eb).(require.'json).(require.'db |
| eda0 | 29 0a 28 72 65 71 75 69 72 65 20 27 64 69 72 65 64 29 20 3b 20 6e 65 65 64 65 64 20 66 6f 72 20 | ).(require.'dired).;.needed.for. |
| edc0 | 74 68 65 20 73 65 74 75 70 0a 28 72 65 71 75 69 72 65 20 27 74 61 62 75 6c 61 74 65 64 2d 6c 69 | the.setup.(require.'tabulated-li |
| ede0 | 73 74 29 0a 28 72 65 71 75 69 72 65 20 27 6e 6f 66 6c 65 74 29 0a 28 72 65 71 75 69 72 65 20 27 | st).(require.'noflet).(require.' |
| ee00 | 65 72 74 29 20 3b 20 77 65 20 70 72 6f 76 69 64 65 20 73 6f 6d 65 20 61 73 73 65 72 74 69 6f 6e | ert).;.we.provide.some.assertion |
| ee20 | 73 20 61 6e 64 20 6e 65 65 64 20 27 73 68 6f 75 6c 64 27 0a 28 65 76 61 6c 2d 77 68 65 6e 2d 63 | s.and.need.'should'.(eval-when-c |
| ee40 | 6f 6d 70 69 6c 65 20 28 72 65 71 75 69 72 65 20 27 63 6c 29 29 0a 0a 28 64 65 66 63 6f 6e 73 74 | ompile.(require.'cl))..(defconst |
| ee60 | 20 45 4c 4e 4f 44 45 2d 46 4f 52 4d 2d 44 41 54 41 2d 54 59 50 45 20 22 61 70 70 6c 69 63 61 74 | .ELNODE-FORM-DATA-TYPE."applicat |
| ee80 | 69 6f 6e 2f 78 2d 77 77 77 2d 66 6f 72 6d 2d 75 72 6c 65 6e 63 6f 64 65 64 22 0a 20 20 22 54 68 | ion/x-www-form-urlencoded"..."Th |
| eea0 | 65 20 74 79 70 65 20 6f 66 20 48 54 54 50 20 46 6f 72 6d 20 50 4f 53 54 73 2e 22 29 0a 0a 28 64 | e.type.of.HTTP.Form.POSTs.")..(d |
| eec0 | 65 66 63 6f 6e 73 74 20 68 74 74 70 2d 72 65 66 65 72 72 65 72 20 27 72 65 66 65 72 65 72 0a 20 | efconst.http-referrer.'referer.. |
| eee0 | 20 22 48 65 6c 70 65 72 20 74 6f 20 62 79 70 61 73 73 20 69 64 69 6f 74 20 73 70 65 6c 6c 69 6e | ."Helper.to.bypass.idiot.spellin |
| ef00 | 67 20 6f 66 20 74 68 65 20 77 6f 72 64 20 60 72 65 66 65 72 72 65 72 27 2e 22 29 0a 0a 0a 3b 3b | g.of.the.word.`referrer'.")...;; |
| ef20 | 20 45 78 74 65 6e 73 69 6f 6e 73 20 74 6f 20 65 72 74 0a 0a 28 64 65 66 6d 61 63 72 6f 20 73 68 | .Extensions.to.ert..(defmacro.sh |
| ef40 | 6f 75 6c 64 2d 65 71 75 61 6c 20 28 61 20 62 29 0a 20 20 22 53 69 6d 70 6c 65 20 73 68 6f 72 74 | ould-equal.(a.b)..."Simple.short |
| ef60 | 63 75 74 20 66 6f 72 20 60 28 73 68 6f 75 6c 64 20 28 65 71 75 61 6c 20 61 20 62 29 29 27 2e 22 | cut.for.`(should.(equal.a.b))'." |
| ef80 | 0a 20 20 60 28 73 68 6f 75 6c 64 0a 20 20 20 20 28 65 71 75 61 6c 20 2c 61 20 2c 62 29 29 29 0a | ...`(should.....(equal.,a.,b))). |
| efa0 | 0a 28 64 65 66 6d 61 63 72 6f 20 73 68 6f 75 6c 64 2d 6d 61 74 63 68 20 28 72 65 67 65 78 20 61 | .(defmacro.should-match.(regex.a |
| efc0 | 29 0a 20 20 22 53 69 6d 70 6c 65 20 73 68 6f 72 74 63 75 74 20 66 6f 72 20 61 20 60 73 74 72 69 | )..."Simple.shortcut.for.a.`stri |
| efe0 | 6e 67 2d 6d 61 74 63 68 27 20 77 69 74 68 20 60 73 68 6f 75 6c 64 27 2e 22 0a 20 20 60 28 73 68 | ng-match'.with.`should'."...`(sh |
| f000 | 6f 75 6c 64 0a 20 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 0a 20 20 20 20 2c 72 65 67 65 78 | ould....(string-match.....,regex |
| f020 | 0a 20 20 20 20 2c 61 29 29 29 0a 0a 3b 3b 20 43 75 73 74 6f 6d 69 7a 61 74 69 6f 6e 20 73 74 75 | .....,a)))..;;.Customization.stu |
| f040 | 66 66 0a 0a 28 64 65 66 67 72 6f 75 70 20 65 6c 6e 6f 64 65 20 6e 69 6c 0a 20 20 22 41 6e 20 65 | ff..(defgroup.elnode.nil..."An.e |
| f060 | 78 74 65 6e 73 69 62 6c 65 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 77 65 62 20 73 65 72 76 65 | xtensible.asynchronous.web.serve |
| f080 | 72 20 66 6f 72 20 45 6d 61 63 73 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 61 70 70 6c 69 63 61 74 | r.for.Emacs."...:group.'applicat |
| f0a0 | 69 6f 6e 73 29 0a 0a 28 64 65 66 76 61 72 20 65 6c 6e 6f 64 65 2d 73 65 72 76 65 72 2d 73 6f 63 | ions)..(defvar.elnode-server-soc |
| f0c0 | 6b 65 74 20 6e 69 6c 0a 20 20 22 57 68 65 72 65 20 77 65 20 73 74 6f 72 65 20 74 68 65 20 73 65 | ket.nil..."Where.we.store.the.se |
| f0e0 | 72 76 65 72 20 73 6f 63 6b 65 74 73 2e 0a 0a 54 68 69 73 20 69 73 20 61 6e 20 61 6c 69 73 74 20 | rver.sockets...This.is.an.alist. |
| f100 | 6f 66 20 70 72 6f 63 2d 3e 73 65 72 76 65 72 2d 70 72 6f 63 65 73 73 3a 0a 0a 20 20 28 70 6f 72 | of.proc->server-process:....(por |
| f120 | 74 20 2e 20 70 72 6f 63 65 73 73 29 22 29 0a 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 65 6c 6e 6f | t...process)")...(defcustom.elno |
| f140 | 64 65 2d 69 6e 69 74 2d 70 6f 72 74 20 38 30 30 30 0a 20 20 22 54 68 65 20 70 6f 72 74 20 74 68 | de-init-port.8000..."The.port.th |
| f160 | 61 74 20 60 65 6c 6e 6f 64 65 2d 69 6e 69 74 27 20 73 74 61 72 74 73 20 74 68 65 20 64 65 66 61 | at.`elnode-init'.starts.the.defa |
| f180 | 75 6c 74 20 73 65 72 76 65 72 20 6f 6e 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 65 6c 6e 6f 64 65 | ult.server.on."...:group.'elnode |
| f1a0 | 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 65 6c 6e 6f 64 65 2d 69 6e 69 74 2d 68 6f 73 74 20 22 | )..(defcustom.elnode-init-host." |
| f1c0 | 6c 6f 63 61 6c 68 6f 73 74 22 0a 20 20 22 54 68 65 20 64 65 66 61 75 6c 74 20 68 6f 73 74 20 66 | localhost"..."The.default.host.f |
| f1e0 | 6f 72 20 74 68 65 20 64 65 66 61 75 6c 74 20 77 65 62 73 65 72 76 65 72 2e 0a 0a 41 6c 73 6f 20 | or.the.default.webserver...Also. |
| f200 | 75 73 65 64 20 61 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 68 6f 73 74 20 66 6f 72 20 60 65 6c | used.as.the.default.host.for.`el |
| f220 | 6e 6f 64 65 2d 6d 61 6b 65 2d 77 65 62 73 65 72 76 65 72 27 2e 0a 0a 53 65 65 20 60 65 6c 6e 6f | node-make-webserver'...See.`elno |
| f240 | 64 65 2d 69 6e 69 74 27 20 66 6f 72 20 6d 6f 72 65 20 64 65 74 61 69 6c 73 2e 22 0a 20 20 3a 67 | de-init'.for.more.details."...:g |
| f260 | 72 6f 75 70 20 27 65 6c 6e 6f 64 65 29 0a 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 | roup.'elnode)...;;;###autoload.( |
| f280 | 64 65 66 63 6f 6e 73 74 20 65 6c 6e 6f 64 65 2d 63 6f 6e 66 69 67 2d 64 69 72 65 63 74 6f 72 79 | defconst.elnode-config-directory |
| f2a0 | 0a 20 20 28 65 78 70 61 6e 64 2d 66 69 6c 65 2d 6e 61 6d 65 20 28 63 6f 6e 63 61 74 20 75 73 65 | ...(expand-file-name.(concat.use |
| f2c0 | 72 2d 65 6d 61 63 73 2d 64 69 72 65 63 74 6f 72 79 20 22 65 6c 6e 6f 64 65 2f 22 29 29 0a 20 20 | r-emacs-directory."elnode/"))... |
| f2e0 | 22 54 68 65 20 63 6f 6e 66 69 67 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 65 6c 6e 6f 64 65 | "The.config.directory.for.elnode |
| f300 | 20 74 6f 20 73 74 6f 72 65 20 70 65 72 69 70 68 65 72 61 6c 20 66 69 6c 65 73 2e 0a 0a 54 68 69 | .to.store.peripheral.files...Thi |
| f320 | 73 20 69 73 20 75 73 65 64 20 61 73 20 61 20 62 61 73 65 20 66 6f 72 20 6f 74 68 65 72 20 63 6f | s.is.used.as.a.base.for.other.co |
| f340 | 6e 73 74 61 6e 74 20 64 69 72 65 63 74 6f 72 79 20 6f 72 20 66 69 6c 65 0a 6e 61 6d 65 73 20 28 | nstant.directory.or.file.names.( |
| f360 | 74 68 65 20 65 6c 6e 6f 64 65 20 61 75 74 68 20 64 61 74 61 62 61 73 65 20 69 73 20 61 20 66 69 | the.elnode.auth.database.is.a.fi |
| f380 | 6c 65 20 69 6e 20 74 68 69 73 20 64 69 72 65 63 74 6f 72 79 2c 20 74 68 65 0a 65 6c 6e 6f 64 65 | le.in.this.directory,.the.elnode |
| f3a0 | 20 77 65 62 73 65 72 76 65 72 20 68 61 73 20 61 20 64 6f 63 72 6f 6f 74 20 64 69 72 65 63 74 6f | .webserver.has.a.docroot.directo |
| f3c0 | 72 79 20 69 6e 20 74 68 69 73 20 64 69 72 65 63 74 6f 72 79 29 2e 0a 0a 49 74 20 69 73 20 62 61 | ry.in.this.directory)...It.is.ba |
| f3e0 | 73 65 64 20 6f 6e 20 74 68 65 20 60 75 73 65 72 2d 65 6d 61 63 73 2d 64 69 72 65 63 74 6f 72 79 | sed.on.the.`user-emacs-directory |
| f400 | 27 20 77 68 69 63 68 20 61 6c 77 61 79 73 20 73 65 65 6d 73 20 74 6f 0a 62 65 20 73 65 74 2c 20 | '.which.always.seems.to.be.set,. |
| f420 | 65 76 65 6e 20 77 68 65 6e 20 65 6d 61 63 73 20 69 73 20 73 74 61 72 74 65 64 20 77 69 74 68 20 | even.when.emacs.is.started.with. |
| f440 | 2d 51 2e 22 29 0a 0a 0a 3b 3b 20 45 72 72 6f 72 20 6c 6f 67 20 68 61 6e 64 6c 69 6e 67 0a 0a 28 | -Q.")...;;.Error.log.handling..( |
| f460 | 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 74 72 75 6e 63 20 28 64 61 74 61 29 0a 20 20 22 54 72 75 | defun.elnode-trunc.(data)..."Tru |
| f480 | 6e 63 61 74 65 20 61 6e 64 20 63 6c 65 61 6e 20 44 41 54 41 2e 22 0a 20 20 28 72 65 70 6c 61 63 | ncate.and.clean.DATA."...(replac |
| f4a0 | 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 0a 20 20 20 22 5b 5c 72 5c 6e 5d 22 20 22 | e-regexp-in-string...."[\r\n]"." |
| f4c0 | 2e 22 0a 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 64 61 74 61 20 30 20 28 69 66 20 28 3e 20 32 | ."....(substring.data.0.(if.(>.2 |
| f4e0 | 30 20 28 6c 65 6e 67 74 68 20 64 61 74 61 29 29 20 28 6c 65 6e 67 74 68 20 64 61 74 61 29 20 32 | 0.(length.data)).(length.data).2 |
| f500 | 30 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 74 72 69 6d 20 28 73 74 72 29 0a | 0))))..(defun.elnode-trim.(str). |
| f520 | 20 20 22 54 72 69 6d 20 6f 66 66 20 77 68 69 74 65 73 70 61 63 65 2e 22 0a 20 20 28 73 74 72 69 | .."Trim.off.whitespace."...(stri |
| f540 | 6e 67 2d 6d 61 74 63 68 20 22 5b 20 5c 74 5c 6e 5c 72 5d 2a 24 22 20 73 74 72 29 0a 20 20 28 73 | ng-match."[.\t\n\r]*$".str)...(s |
| f560 | 65 74 71 20 73 74 72 20 28 72 65 70 6c 61 63 65 2d 6d 61 74 63 68 20 22 22 20 6e 69 6c 20 6e 69 | etq.str.(replace-match."".nil.ni |
| f580 | 6c 20 73 74 72 29 29 0a 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 5e 5b 20 5c 74 5c 6e | l.str))...(string-match."^[.\t\n |
| f5a0 | 5c 72 5d 2a 22 20 73 74 72 29 0a 20 20 28 72 65 70 6c 61 63 65 2d 6d 61 74 63 68 20 22 22 20 6e | \r]*".str)...(replace-match."".n |
| f5c0 | 69 6c 20 6e 69 6c 20 73 74 72 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 6a 6f 69 6e | il.nil.str))..(defun.elnode-join |
| f5e0 | 20 28 26 72 65 73 74 20 70 61 72 74 73 29 0a 20 20 22 50 61 74 68 20 6a 6f 69 6e 20 74 68 65 20 | .(&rest.parts)..."Path.join.the. |
| f600 | 70 61 72 74 73 20 74 6f 67 65 74 68 65 72 2e 0a 0a 45 6d 61 63 73 4c 69 73 70 20 73 68 6f 75 6c | parts.together...EmacsLisp.shoul |
| f620 | 64 20 72 65 61 6c 6c 79 20 70 72 6f 76 69 64 65 20 74 68 69 73 20 62 79 20 64 65 66 61 75 6c 74 | d.really.provide.this.by.default |
| f640 | 2e 22 0a 20 20 28 6c 65 74 2a 20 28 73 61 76 65 64 70 61 72 74 0a 20 20 20 20 20 20 20 20 20 28 | ."...(let*.(savedpart..........( |
| f660 | 70 61 74 68 0a 20 20 20 20 20 20 20 20 20 20 28 6c 6f 6f 70 20 66 6f 72 20 70 20 69 6e 20 70 61 | path...........(loop.for.p.in.pa |
| f680 | 72 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 | rts..............concat......... |
| f6a0 | 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 3e 20 28 6c 65 6e 67 74 68 20 70 29 20 30 29 0a 20 20 | .......(when.(>.(length.p).0)... |
| f6c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 73 61 76 65 64 70 61 72 74 20 70 | ...............(setq.savedpart.p |
| f6e0 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 69 6c 65 2d 6e 61 6d 65 2d 61 73 | )..................(file-name-as |
| f700 | 2d 64 69 72 65 63 74 6f 72 79 20 70 29 29 29 29 29 0a 20 20 20 20 28 69 66 20 28 65 71 75 61 6c | -directory.p))))).....(if.(equal |
| f720 | 20 28 65 6c 74 20 73 61 76 65 64 70 61 72 74 20 28 2d 20 28 6c 65 6e 67 74 68 20 73 61 76 65 64 | .(elt.savedpart.(-.(length.saved |
| f740 | 70 61 72 74 29 20 31 29 29 20 3f 5c 2f 29 0a 20 20 20 20 20 20 20 20 70 61 74 68 0a 20 20 20 20 | part).1)).?\/).........path..... |
| f760 | 20 20 20 20 28 73 75 62 73 74 72 69 6e 67 20 70 61 74 68 20 30 20 28 2d 20 28 6c 65 6e 67 74 68 | ....(substring.path.0.(-.(length |
| f780 | 20 70 61 74 68 29 20 31 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 64 69 | .path).1)))))..(defun.elnode--di |
| f7a0 | 72 2d 73 65 74 75 70 20 28 64 69 72 20 64 65 66 61 75 6c 74 20 64 65 66 61 75 6c 74 2d 66 69 6c | r-setup.(dir.default.default-fil |
| f7c0 | 65 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | e-name.......................... |
| f7e0 | 20 26 6f 70 74 69 6f 6e 61 6c 20 74 61 72 67 65 74 2d 66 69 6c 65 2d 6e 61 6d 65 0a 20 20 20 20 | .&optional.target-file-name..... |
| f800 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 26 72 65 73 74 20 6f 74 68 65 | ......................&rest.othe |
| f820 | 72 2d 66 69 6c 65 73 29 0a 20 20 22 49 6e 73 74 61 6c 6c 20 61 20 44 49 52 20 61 6e 64 20 44 45 | r-files)..."Install.a.DIR.and.DE |
| f840 | 46 41 55 4c 54 2d 46 49 4c 45 2d 4e 41 4d 45 20 69 66 20 69 74 27 73 20 6e 6f 74 20 73 65 74 75 | FAULT-FILE-NAME.if.it's.not.setu |
| f860 | 70 20 61 6c 72 65 61 64 79 2e 0a 0a 54 68 69 73 20 69 73 20 61 20 70 61 63 6b 61 67 69 6e 67 20 | p.already...This.is.a.packaging. |
| f880 | 68 65 6c 70 65 72 2e 20 20 49 74 20 68 65 6c 70 73 20 61 6e 20 45 4c 50 41 20 70 61 63 6b 61 67 | helper...It.helps.an.ELPA.packag |
| f8a0 | 65 20 69 6e 73 74 61 6c 6c 0a 66 69 6c 65 73 20 66 72 6f 6d 20 69 74 27 73 20 70 61 63 6b 61 67 | e.install.files.from.it's.packag |
| f8c0 | 65 20 62 61 73 65 20 69 6e 74 6f 20 74 68 65 20 75 73 65 72 27 73 20 45 6d 61 63 73 2e 20 20 49 | e.base.into.the.user's.Emacs...I |
| f8e0 | 66 20 74 68 65 20 44 49 52 0a 69 73 20 73 70 65 63 69 66 69 65 64 20 75 6e 64 65 72 20 60 75 73 | f.the.DIR.is.specified.under.`us |
| f900 | 65 72 2d 65 6d 61 63 73 2d 64 69 72 65 63 74 6f 72 79 27 2e 0a 0a 44 49 52 20 69 73 20 74 68 65 | er-emacs-directory'...DIR.is.the |
| f920 | 20 64 69 72 65 63 74 6f 72 79 20 74 6f 20 69 6e 73 74 61 6c 6c 2c 20 44 45 46 41 55 4c 54 20 69 | .directory.to.install,.DEFAULT.i |
| f940 | 73 20 74 68 65 20 64 65 66 61 75 6c 74 20 66 6f 72 20 74 68 61 74 0a 64 69 72 65 63 74 6f 72 79 | s.the.default.for.that.directory |
| f960 | 2c 20 75 6e 6c 65 73 73 20 44 49 52 20 65 71 75 61 6c 73 20 44 45 46 41 55 4c 54 20 6e 6f 74 68 | ,.unless.DIR.equals.DEFAULT.noth |
| f980 | 69 6e 67 20 69 73 20 64 6f 6e 65 2e 0a 0a 44 45 46 41 55 4c 54 2d 46 49 4c 45 2d 4e 41 4d 45 20 | ing.is.done...DEFAULT-FILE-NAME. |
| f9a0 | 69 73 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 66 69 6c 65 20 74 68 61 74 20 77 69 6c | is.the.name.of.the.file.that.wil |
| f9c0 | 6c 20 62 65 20 69 6e 73 74 61 6c 6c 65 64 0a 69 6e 20 44 49 52 2e 20 20 49 74 20 69 73 20 74 68 | l.be.installed.in.DIR...It.is.th |
| f9e0 | 65 20 65 78 70 65 63 74 65 64 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 73 6f 75 72 63 65 20 66 69 | e.expected.name.of.the.source.fi |
| fa00 | 6c 65 20 69 6e 73 69 64 65 20 74 68 65 0a 70 61 63 6b 61 67 65 2e 20 20 55 6e 6c 65 73 73 20 54 | le.inside.the.package...Unless.T |
| fa20 | 41 52 47 45 54 2d 46 49 4c 45 2d 4e 41 4d 45 20 69 73 20 73 70 65 63 69 66 69 65 64 20 69 74 20 | ARGET-FILE-NAME.is.specified.it. |
| fa40 | 69 73 20 61 6c 73 6f 20 74 68 65 0a 6e 61 6d 65 20 74 68 65 20 69 6e 73 74 61 6c 6c 65 64 20 66 | is.also.the.name.the.installed.f |
| fa60 | 69 6c 65 20 77 69 6c 6c 20 62 65 20 67 69 76 65 6e 2e 20 20 49 66 20 74 68 65 20 54 41 52 47 45 | ile.will.be.given...If.the.TARGE |
| fa80 | 54 2d 46 49 4c 45 2d 4e 41 4d 45 0a 69 73 20 73 70 65 63 69 66 69 65 64 20 74 68 65 6e 20 74 68 | T-FILE-NAME.is.specified.then.th |
| faa0 | 61 74 20 69 73 20 74 68 65 20 74 68 65 20 6e 61 6d 65 20 74 68 65 20 66 69 6c 65 20 69 73 20 69 | at.is.the.the.name.the.file.is.i |
| fac0 | 6e 73 74 61 6c 6c 65 64 20 61 73 2e 0a 0a 49 66 20 4f 54 48 45 52 2d 46 49 4c 45 53 20 69 73 20 | nstalled.as...If.OTHER-FILES.is. |
| fae0 | 70 72 65 73 65 6e 74 20 69 74 20 69 73 20 74 72 65 61 74 65 64 20 61 73 20 61 20 6c 69 73 74 20 | present.it.is.treated.as.a.list. |
| fb00 | 6f 66 20 6f 74 68 65 72 0a 66 69 6c 65 6e 61 6d 65 73 20 74 6f 20 63 6f 70 79 20 74 6f 20 74 68 | of.other.filenames.to.copy.to.th |
| fb20 | 65 20 44 49 52 2e 22 0a 20 20 28 77 68 65 6e 20 20 28 61 6e 64 0a 20 20 20 20 20 20 20 20 20 20 | e.DIR."...(when..(and........... |
| fb40 | 28 65 71 75 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 64 69 72 0a 20 20 20 20 20 20 20 20 20 20 | (equal............dir........... |
| fb60 | 20 64 65 66 61 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 66 69 6c 65 2d 65 | .default)...........(not.(file-e |
| fb80 | 78 69 73 74 73 2d 70 20 64 69 72 29 29 29 0a 20 20 20 20 3b 3b 20 44 6f 20 69 6e 73 74 61 6c 6c | xists-p.dir))).....;;.Do.install |
| fba0 | 0a 20 20 20 20 28 6c 65 74 20 28 28 73 6f 75 72 63 65 2d 64 65 66 61 75 6c 74 2d 66 69 6c 65 0a | .....(let.((source-default-file. |
| fbc0 | 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 | ...........(concat.............( |
| fbe0 | 66 69 6c 65 2d 6e 61 6d 65 2d 64 69 72 65 63 74 6f 72 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 | file-name-directory............. |
| fc00 | 20 28 6f 72 20 28 62 75 66 66 65 72 2d 66 69 6c 65 2d 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 | .(or.(buffer-file-name)......... |
| fc20 | 20 20 20 20 20 20 20 20 20 28 73 79 6d 62 6f 6c 2d 66 69 6c 65 20 27 65 6c 6e 6f 64 65 2d 2d 64 | .........(symbol-file.'elnode--d |
| fc40 | 69 72 2d 73 65 74 75 70 29 29 29 20 3b 20 74 68 69 73 20 6e 6f 74 20 76 65 72 79 20 70 6f 72 74 | ir-setup))).;.this.not.very.port |
| fc60 | 61 62 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 68 69 73 20 73 68 6f 75 6c 64 20 | able.............;;.This.should. |
| fc80 | 70 72 6f 62 61 62 6c 79 20 74 69 65 20 69 6e 20 77 69 74 68 20 74 68 65 20 6d 61 6b 65 66 69 6c | probably.tie.in.with.the.makefil |
| fca0 | 65 20 73 6f 6d 65 68 6f 77 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 2d 66 69 | e.somehow.............default-fi |
| fcc0 | 6c 65 2d 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 28 77 68 65 6e 20 28 61 6e 64 20 73 6f 75 72 | le-name))).......(when.(and.sour |
| fce0 | 63 65 2d 64 65 66 61 75 6c 74 2d 66 69 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ce-default-file................. |
| fd00 | 20 28 66 69 6c 65 2d 65 78 69 73 74 73 2d 70 20 73 6f 75 72 63 65 2d 64 65 66 61 75 6c 74 2d 66 | .(file-exists-p.source-default-f |
| fd20 | 69 6c 65 29 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 74 6f 20 28 63 6f 6e 63 61 74 0a | ile)).........(let.((to.(concat. |
| fd40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 72 0a 20 20 20 20 20 20 20 20 20 | ...................dir.......... |
| fd60 | 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 74 61 72 67 65 74 2d 66 69 6c 65 2d 6e 61 6d 65 20 64 | ..........(or.target-file-name.d |
| fd80 | 65 66 61 75 6c 74 2d 66 69 6c 65 2d 6e 61 6d 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 | efault-file-name))))...........( |
| fda0 | 6d 61 6b 65 2d 64 69 72 65 63 74 6f 72 79 20 64 69 72 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 | make-directory.dir.t)........... |
| fdc0 | 28 6d 65 73 73 61 67 65 20 22 63 6f 70 79 69 6e 67 20 25 73 20 65 6c 6e 6f 64 65 20 77 69 6b 69 | (message."copying.%s.elnode.wiki |
| fde0 | 20 64 65 66 61 75 6c 74 20 70 61 67 65 20 74 6f 20 25 73 22 20 64 69 72 20 74 6f 29 0a 20 20 20 | .default.page.to.%s".dir.to).... |
| fe00 | 20 20 20 20 20 20 20 28 64 69 72 65 64 2d 63 6f 70 79 2d 66 69 6c 65 20 73 6f 75 72 63 65 2d 64 | .......(dired-copy-file.source-d |
| fe20 | 65 66 61 75 6c 74 2d 66 69 6c 65 20 74 6f 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 28 77 | efault-file.to.nil)...........(w |
| fe40 | 68 65 6e 20 6f 74 68 65 72 2d 66 69 6c 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 66 | hen.other-files.............(nof |
| fe60 | 6c 65 74 20 28 28 72 65 73 6f 6c 76 65 2d 66 69 6c 65 6e 61 6d 65 20 28 66 69 6c 65 29 0a 20 20 | let.((resolve-filename.(file)... |
| fe80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 66 69 6c 65 2d 6e 61 6d | ...................(if.(file-nam |
| fea0 | 65 2d 61 62 73 6f 6c 75 74 65 2d 70 20 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | e-absolute-p.file).............. |
| fec0 | 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ............file................ |
| fee0 | 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ..........(concat............... |
| ff00 | 20 20 20 20 20 20 20 20 20 20 20 20 28 66 69 6c 65 2d 6e 61 6d 65 2d 64 69 72 65 63 74 6f 72 79 | ............(file-name-directory |
| ff20 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 6f 75 72 | ............................sour |
| ff40 | 63 65 2d 64 65 66 61 75 6c 74 2d 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ce-default-file)................ |
| ff60 | 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ...........file))))............. |
| ff80 | 20 20 28 6c 6f 6f 70 20 66 6f 72 20 66 69 6c 65 20 69 6e 20 6f 74 68 65 72 2d 66 69 6c 65 73 0a | ..(loop.for.file.in.other-files. |
| ffa0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 64 6f 65 73 20 74 68 65 20 66 69 6c | .................;;.does.the.fil |
| ffc0 | 65 20 65 78 69 73 74 3f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 6e | e.exist?..................if.(an |
| ffe0 | 64 20 66 69 6c 65 20 28 66 69 6c 65 2d 65 78 69 73 74 73 2d 70 20 28 72 65 73 6f 6c 76 65 2d 66 | d.file.(file-exists-p.(resolve-f |
| 10000 | 69 6c 65 6e 61 6d 65 20 66 69 6c 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ilename.file)))................. |
| 10020 | 20 64 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 69 72 65 64 2d 63 6f | .do....................(dired-co |
| 10040 | 70 79 2d 66 69 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 66 | py-file.....................;;.f |
| 10060 | 72 6f 6d 2e 2e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 73 6f | rom........................(reso |
| 10080 | 6c 76 65 2d 66 69 6c 65 6e 61 6d 65 20 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | lve-filename.file).............. |
| 100a0 | 20 20 20 20 20 20 20 3b 3b 20 74 6f 2e 2e 2e 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .......;;.to...nd............... |
| 100c0 | 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 64 69 72 20 28 66 69 6c 65 2d 6e 61 6d 65 2d 6e 6f 6e | ......(concat.dir.(file-name-non |
| 100e0 | 64 69 72 65 63 74 6f 72 79 20 66 69 6c 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | directory.file))................ |
| 10100 | 20 20 20 20 20 6e 69 6c 29 29 29 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 | .....nil)))))))))..(defun.elnode |
| 10120 | 2d 2d 70 72 6f 74 65 63 74 65 64 2d 6c 6f 61 64 20 28 66 65 61 74 75 72 65 20 64 69 72 29 0a 20 | --protected-load.(feature.dir).. |
| 10140 | 20 22 54 72 79 20 61 6e 64 20 72 65 71 75 69 72 65 20 46 45 41 54 55 52 45 2c 20 69 66 20 69 74 | ."Try.and.require.FEATURE,.if.it |
| 10160 | 20 66 61 69 6c 73 20 74 72 79 20 61 6e 64 20 6c 6f 61 64 2e 22 0a 20 20 28 63 6f 6e 64 69 74 69 | .fails.try.and.load."...(conditi |
| 10180 | 6f 6e 2d 63 61 73 65 20 65 72 72 0a 20 20 20 20 20 20 28 72 65 71 75 69 72 65 20 66 65 61 74 75 | on-case.err.......(require.featu |
| 101a0 | 72 65 29 0a 20 20 20 20 28 66 69 6c 65 2d 65 72 72 6f 72 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 | re).....(file-error.(progn...... |
| 101c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 61 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | .............(load.............. |
| 101e0 | 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 64 69 72 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 66 | ......(concat.dir.(symbol-name.f |
| 10200 | 65 61 74 75 72 65 29 20 22 2e 65 6c 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | eature).".el"))................. |
| 10220 | 20 20 28 72 65 71 75 69 72 65 20 66 65 61 74 75 72 65 29 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 | ..(require.feature)))))..;;;###a |
| 10240 | 75 74 6f 6c 6f 61 64 0a 28 64 65 66 6d 61 63 72 6f 20 65 6c 6e 6f 64 65 2d 61 70 70 20 28 64 69 | utoload.(defmacro.elnode-app.(di |
| 10260 | 72 2d 76 61 72 20 26 72 65 73 74 20 66 65 61 74 75 72 65 73 29 0a 20 20 22 41 20 6d 61 63 72 6f | r-var.&rest.features)..."A.macro |
| 10280 | 20 74 68 61 74 20 73 65 74 73 20 75 70 20 74 68 65 20 62 6f 72 69 6e 67 20 62 6f 69 6c 65 72 70 | .that.sets.up.the.boring.boilerp |
| 102a0 | 6c 61 74 65 20 66 6f 72 20 45 6c 6e 6f 64 65 20 61 70 70 73 2e 0a 0a 54 68 69 73 20 73 65 74 73 | late.for.Elnode.apps...This.sets |
| 102c0 | 20 75 70 20 6c 65 78 69 63 61 6c 20 62 69 6e 64 69 6e 67 2c 20 63 61 70 74 75 72 65 73 20 74 68 | .up.lexical.binding,.captures.th |
| 102e0 | 65 20 6d 6f 64 75 6c 65 27 73 20 70 61 72 65 6e 74 0a 64 69 72 65 63 74 6f 72 79 20 69 6e 20 44 | e.module's.parent.directory.in.D |
| 10300 | 49 52 2d 56 41 52 2c 20 72 65 71 75 69 72 65 73 20 60 63 6c 27 20 61 6e 64 20 61 6e 79 20 6f 74 | IR-VAR,.requires.`cl'.and.any.ot |
| 10320 | 68 65 72 20 66 65 61 74 75 72 65 73 20 79 6f 75 0a 6c 69 73 74 2e 20 20 55 73 65 20 69 74 20 6c | her.features.you.list...Use.it.l |
| 10340 | 69 6b 65 20 74 68 69 73 3a 0a 0a 20 28 65 6c 6e 6f 64 65 2d 61 70 70 20 6d 79 2d 61 70 70 2d 64 | ike.this:...(elnode-app.my-app-d |
| 10360 | 69 72 20 65 73 78 6d 6c 20 6d 6f 6e 67 6f 2d 65 6c 6e 6f 64 65 29 0a 0a 4f 6e 63 65 20 75 73 65 | ir.esxml.mongo-elnode)..Once.use |
| 10380 | 64 20 79 6f 75 20 63 61 6e 20 61 63 63 65 73 73 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 60 6d | d.you.can.access.the.variable.`m |
| 103a0 | 79 2d 61 70 70 2d 64 69 72 27 20 61 73 20 74 68 65 20 64 69 72 6e 61 6d 65 0a 6f 66 20 79 6f 75 | y-app-dir'.as.the.dirname.of.you |
| 103c0 | 72 20 6d 6f 64 75 6c 65 20 28 77 68 69 63 68 20 69 73 20 75 73 65 66 75 6c 20 66 6f 72 20 73 65 | r.module.(which.is.useful.for.se |
| 103e0 | 72 76 69 6e 67 20 66 69 6c 65 73 20 61 6e 64 20 73 75 63 68 29 2e 22 0a 20 20 28 64 65 63 6c 61 | rving.files.and.such)."...(decla |
| 10400 | 72 65 20 28 69 6e 64 65 6e 74 20 31 29 29 0a 20 20 28 6c 65 74 20 28 28 64 69 72 2d 76 61 72 2d | re.(indent.1))...(let.((dir-var- |
| 10420 | 76 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 64 76 22 29 29 29 0a 20 20 20 20 60 28 6c 65 74 | v.(make-symbol."dv"))).....`(let |
| 10440 | 20 28 28 2c 64 69 72 2d 76 61 72 2d 76 20 28 66 69 6c 65 2d 6e 61 6d 65 2d 64 69 72 65 63 74 6f | .((,dir-var-v.(file-name-directo |
| 10460 | 72 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 | ry.........................(or.( |
| 10480 | 62 75 66 66 65 72 2d 66 69 6c 65 2d 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | buffer-file-name)............... |
| 104a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 61 64 2d 66 69 6c 65 2d 6e 61 6d 65 0a 20 20 20 | ..............load-file-name.... |
| 104c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 | .........................default |
| 104e0 | 2d 64 69 72 65 63 74 6f 72 79 29 29 29 29 0a 20 20 20 20 20 20 20 28 73 65 74 71 20 6c 65 78 69 | -directory))))........(setq.lexi |
| 10500 | 63 61 6c 2d 62 69 6e 64 69 6e 67 20 74 29 0a 20 20 20 20 20 20 20 28 64 65 66 63 6f 6e 73 74 20 | cal-binding.t)........(defconst. |
| 10520 | 2c 64 69 72 2d 76 61 72 20 2c 64 69 72 2d 76 61 72 2d 76 29 0a 20 20 20 20 20 20 20 28 72 65 71 | ,dir-var.,dir-var-v)........(req |
| 10540 | 75 69 72 65 20 27 63 6c 29 0a 20 20 20 20 20 20 20 28 72 65 71 75 69 72 65 20 27 65 6c 6e 6f 64 | uire.'cl)........(require.'elnod |
| 10560 | 65 29 0a 20 20 20 20 20 20 20 2c 40 28 6c 6f 6f 70 20 66 6f 72 20 66 20 69 6e 20 66 65 61 74 75 | e)........,@(loop.for.f.in.featu |
| 10580 | 72 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 20 20 20 20 | res.............collect......... |
| 105a0 | 20 20 20 20 20 20 60 28 65 6c 6e 6f 64 65 2d 2d 70 72 6f 74 65 63 74 65 64 2d 6c 6f 61 64 0a 20 | ......`(elnode--protected-load.. |
| 105c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 71 75 6f 74 65 20 2c 66 29 20 2c 64 69 72 2d 76 | ...............(quote.,f).,dir-v |
| 105e0 | 61 72 2d 76 29 29 29 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 65 6c 6e 6f 64 65 2d 6c 6f 67 | ar-v)))))..(defcustom.elnode-log |
| 10600 | 2d 66 69 6c 65 73 2d 64 69 72 65 63 74 6f 72 79 20 6e 69 6c 0a 20 20 22 54 68 65 20 64 69 72 65 | -files-directory.nil..."The.dire |
| 10620 | 63 74 6f 72 79 20 74 6f 20 73 74 6f 72 65 20 61 6e 79 20 45 6c 6e 6f 64 65 20 6c 6f 67 20 66 69 | ctory.to.store.any.Elnode.log.fi |
| 10640 | 6c 65 73 2e 0a 0a 49 66 20 74 68 69 73 20 69 73 20 6e 6f 74 2d 6e 69 6c 20 28 69 6e 20 77 68 69 | les...If.this.is.not-nil.(in.whi |
| 10660 | 63 68 20 63 61 73 65 20 6c 6f 67 73 20 61 72 65 20 6e 6f 74 20 73 61 76 65 64 20 61 74 20 61 6c | ch.case.logs.are.not.saved.at.al |
| 10680 | 6c 29 20 69 74 0a 6d 75 73 74 20 62 65 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 64 69 72 65 | l).it.must.be.the.name.of.a.dire |
| 106a0 | 63 74 6f 72 79 20 45 6c 6e 6f 64 65 20 63 61 6e 20 75 73 65 20 66 6f 72 20 73 74 6f 72 69 6e 67 | ctory.Elnode.can.use.for.storing |
| 106c0 | 20 6c 6f 67 73 2e 0a 49 66 20 61 20 64 69 72 65 63 74 6f 72 79 20 69 73 20 73 70 65 63 69 66 69 | .logs..If.a.directory.is.specifi |
| 106e0 | 65 64 20 62 75 74 20 69 74 20 64 6f 65 73 20 6e 6f 74 20 65 78 69 73 74 20 69 74 20 69 73 20 63 | ed.but.it.does.not.exist.it.is.c |
| 10700 | 72 65 61 74 65 64 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 65 6c 6e 6f 64 65 0a 20 20 3a 74 79 70 | reated."...:group.'elnode...:typ |
| 10720 | 65 20 27 28 63 68 6f 69 63 65 20 28 63 6f 6e 73 74 20 3a 74 61 67 20 22 4f 66 66 22 20 6e 69 6c | e.'(choice.(const.:tag."Off".nil |
| 10740 | 29 0a 20 20 20 20 20 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 29 29 0a 0a 28 64 65 66 76 61 72 | )...........directory))..(defvar |
| 10760 | 20 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 62 75 66 66 65 72 2d 70 6f 73 69 74 69 6f 6e 2d 77 72 69 74 | .elnode-log-buffer-position-writ |
| 10780 | 74 65 6e 20 30 0a 20 20 22 54 68 65 20 70 6f 73 69 74 69 6f 6e 20 69 6e 20 74 68 65 20 6c 6f 67 | ten.0..."The.position.in.the.log |
| 107a0 | 20 62 75 66 66 65 72 20 77 72 69 74 74 65 6e 2e 0a 0a 54 68 69 73 20 69 73 20 75 73 65 64 20 62 | .buffer.written...This.is.used.b |
| 107c0 | 79 20 60 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 62 75 66 66 65 72 2d 6c 6f 67 27 20 74 6f 20 74 72 61 | y.`elnode-log-buffer-log'.to.tra |
| 107e0 | 63 6b 20 77 68 61 74 20 68 61 73 20 62 65 65 6e 20 77 72 69 74 74 65 6e 0a 73 6f 20 66 61 72 2e | ck.what.has.been.written.so.far. |
| 10800 | 22 29 0a 0a 28 64 65 66 76 61 72 20 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 62 75 66 66 65 72 2d 6d 61 | ")..(defvar.elnode-log-buffer-ma |
| 10820 | 78 2d 73 69 7a 65 20 31 30 30 30 0a 20 20 22 4d 61 78 69 6d 75 6d 20 6e 75 6d 62 65 72 20 6f 66 | x-size.1000..."Maximum.number.of |
| 10840 | 20 6c 69 6e 65 73 20 6f 66 20 6c 6f 67 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 65 6c 6e 6f 64 65 | .lines.of.log.")..(defvar.elnode |
| 10860 | 2d 6c 6f 67 2d 62 75 66 66 65 72 2d 64 61 74 65 74 69 6d 65 2d 66 6f 72 6d 61 74 20 22 25 59 2d | -log-buffer-datetime-format."%Y- |
| 10880 | 25 6d 2d 25 64 54 25 48 3a 25 4d 3a 25 53 22 0a 20 20 22 54 68 65 20 64 61 74 65 20 74 69 6d 65 | %m-%dT%H:%M:%S"..."The.date.time |
| 108a0 | 20 66 6f 72 6d 61 74 20 75 73 65 64 20 62 79 20 60 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 62 75 66 66 | .format.used.by.`elnode-log-buff |
| 108c0 | 65 72 2d 6c 6f 67 27 2e 22 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 62 75 | er-log'.")..(defun.elnode-log-bu |
| 108e0 | 66 66 65 72 2d 6c 6f 67 20 28 74 65 78 74 20 62 75 66 66 65 72 2d 6f 72 2d 6e 61 6d 65 20 26 6f | ffer-log.(text.buffer-or-name.&o |
| 10900 | 70 74 69 6f 6e 61 6c 20 66 69 6c 65 6e 61 6d 65 29 0a 20 20 22 4c 6f 67 20 54 45 58 54 20 74 6f | ptional.filename)..."Log.TEXT.to |
| 10920 | 20 74 68 65 20 42 55 46 46 45 52 2d 4f 52 2d 4e 41 4d 45 20 73 61 76 69 6e 67 20 74 68 65 20 62 | .the.BUFFER-OR-NAME.saving.the.b |
| 10940 | 75 66 66 65 72 20 69 6e 20 46 49 4c 45 4e 41 4d 45 2e 0a 0a 42 55 46 46 45 52 2d 4f 52 2d 4e 41 | uffer.in.FILENAME...BUFFER-OR-NA |
| 10960 | 4d 45 20 69 73 20 65 69 74 68 65 72 20 61 20 62 75 66 66 65 72 20 6f 72 20 61 20 73 74 72 69 6e | ME.is.either.a.buffer.or.a.strin |
| 10980 | 67 20 6e 61 6d 69 6e 67 20 61 20 62 75 66 66 65 72 2e 0a 46 49 4c 45 4e 41 4d 45 20 69 73 20 61 | g.naming.a.buffer..FILENAME.is.a |
| 109a0 | 20 66 69 6c 65 6e 61 6d 65 20 74 6f 20 73 61 76 65 20 74 68 65 20 62 75 66 66 65 72 20 69 6e 74 | .filename.to.save.the.buffer.int |
| 109c0 | 6f 2e 20 20 49 66 20 74 68 65 20 46 49 4c 45 4e 41 4d 45 0a 69 73 20 6e 6f 74 20 73 70 65 63 69 | o...If.the.FILENAME.is.not.speci |
| 109e0 | 66 69 65 64 20 74 68 65 6e 20 77 65 20 74 72 79 20 74 6f 20 75 73 65 20 74 68 65 20 66 69 6c 65 | fied.then.we.try.to.use.the.file |
| 10a00 | 6e 61 6d 65 20 6f 66 20 74 68 65 0a 42 55 46 46 45 52 2d 4f 52 2d 4e 41 4d 45 2e 0a 0a 49 66 20 | name.of.the.BUFFER-OR-NAME...If. |
| 10a20 | 6e 65 69 74 68 65 72 20 61 20 62 75 66 66 65 72 20 66 69 6c 65 6e 61 6d 65 20 6e 6f 72 20 46 49 | neither.a.buffer.filename.nor.FI |
| 10a40 | 4c 45 4e 41 4d 45 20 69 73 20 73 70 65 63 69 66 69 65 64 20 74 68 65 6e 20 61 6e 0a 65 72 72 6f | LENAME.is.specified.then.an.erro |
| 10a60 | 72 20 69 73 20 67 65 6e 65 72 61 74 65 64 2e 0a 0a 54 68 65 20 54 45 58 54 20 69 73 20 6c 6f 67 | r.is.generated...The.TEXT.is.log |
| 10a80 | 67 65 64 20 77 69 74 68 20 74 68 65 20 63 75 72 72 65 6e 74 20 64 61 74 65 20 61 6e 64 20 74 69 | ged.with.the.current.date.and.ti |
| 10aa0 | 6d 65 20 66 6f 72 6d 61 74 74 65 64 20 77 69 74 68 0a 60 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 62 75 | me.formatted.with.`elnode-log-bu |
| 10ac0 | 66 66 65 72 2d 64 61 74 65 74 69 6d 65 2d 66 6f 72 6d 61 74 27 2e 22 0a 20 20 28 6c 65 74 20 28 | ffer-datetime-format'."...(let.( |
| 10ae0 | 28 6e 61 6d 65 20 28 6f 72 20 66 69 6c 65 6e 61 6d 65 20 28 62 75 66 66 65 72 2d 66 69 6c 65 2d | (name.(or.filename.(buffer-file- |
| 10b00 | 6e 61 6d 65 20 28 67 65 74 2d 62 75 66 66 65 72 20 62 75 66 66 65 72 2d 6f 72 2d 6e 61 6d 65 29 | name.(get-buffer.buffer-or-name) |
| 10b20 | 29 29 29 29 0a 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 67 | )))).....(with-current-buffer.(g |
| 10b40 | 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 20 62 75 66 66 65 72 2d 6f 72 2d 6e 61 6d 65 29 | et-buffer-create.buffer-or-name) |
| 10b60 | 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 62 75 66 66 65 72 2d 72 65 61 64 2d 6f 6e 6c 79 20 6e | .......(let.((buffer-read-only.n |
| 10b80 | 69 6c 29 29 0a 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 61 73 73 71 0a 20 20 20 20 20 | il)).........(unless.(assq...... |
| 10ba0 | 20 20 20 20 20 20 20 20 20 20 20 20 27 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 62 75 66 66 65 72 2d 70 | ............'elnode-log-buffer-p |
| 10bc0 | 6f 73 69 74 69 6f 6e 2d 77 72 69 74 74 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | osition-written................. |
| 10be0 | 20 28 62 75 66 66 65 72 2d 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 73 29 29 0a 20 20 20 20 20 | .(buffer-local-variables))...... |
| 10c00 | 20 20 20 20 20 28 6d 61 6b 65 2d 6c 6f 63 61 6c 2d 76 61 72 69 61 62 6c 65 20 27 65 6c 6e 6f 64 | .....(make-local-variable.'elnod |
| 10c20 | 65 2d 6c 6f 67 2d 62 75 66 66 65 72 2d 70 6f 73 69 74 69 6f 6e 2d 77 72 69 74 74 65 6e 29 0a 20 | e-log-buffer-position-written).. |
| 10c40 | 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 62 75 66 66 65 72 | .........(setq.elnode-log-buffer |
| 10c60 | 2d 70 6f 73 69 74 69 6f 6e 2d 77 72 69 74 74 65 6e 20 28 6d 61 6b 65 2d 6d 61 72 6b 65 72 29 29 | -position-written.(make-marker)) |
| 10c80 | 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 2d 6d 61 72 6b 65 72 20 65 6c 6e 6f 64 65 2d 6c 6f | ...........(set-marker.elnode-lo |
| 10ca0 | 67 2d 62 75 66 66 65 72 2d 70 6f 73 69 74 69 6f 6e 2d 77 72 69 74 74 65 6e 20 28 70 6f 69 6e 74 | g-buffer-position-written.(point |
| 10cc0 | 2d 6d 69 6e 29 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 54 6f 20 74 65 73 74 20 74 68 69 73 20 | -min))).........;;.To.test.this. |
| 10ce0 | 73 74 75 66 66 20 77 65 20 63 6f 75 6c 64 20 72 69 70 20 74 68 65 73 65 20 66 75 6e 63 74 69 6f | stuff.we.could.rip.these.functio |
| 10d00 | 6e 73 20 6f 75 74 20 69 6e 74 6f 0a 20 20 20 20 20 20 20 20 3b 3b 20 73 65 70 61 72 61 74 65 20 | ns.out.into.........;;.separate. |
| 10d20 | 70 69 65 63 65 73 3f 0a 20 20 20 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a | pieces?.........(save-excursion. |
| 10d40 | 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 | ..........(goto-char.(point-max) |
| 10d60 | 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 0a 20 20 20 20 20 20 20 20 20 20 20 28 | )...........(insert............( |
| 10d80 | 66 6f 72 6d 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 25 73 3a 20 25 73 5c 6e 22 0a 20 20 | format............."%s:.%s\n"... |
| 10da0 | 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 2d 74 69 6d 65 2d 73 74 72 69 6e 67 20 65 6c | ..........(format-time-string.el |
| 10dc0 | 6e 6f 64 65 2d 6c 6f 67 2d 62 75 66 66 65 72 2d 64 61 74 65 74 69 6d 65 2d 66 6f 72 6d 61 74 29 | node-log-buffer-datetime-format) |
| 10de0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b | .............text))...........;; |
| 10e00 | 20 53 61 76 65 20 74 68 65 20 66 69 6c 65 20 69 66 20 77 65 20 68 61 76 65 20 61 20 66 69 6c 65 | .Save.the.file.if.we.have.a.file |
| 10e20 | 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 6e 61 6d 65 0a 20 20 20 20 20 20 | name...........(when.name....... |
| 10e40 | 20 20 20 20 20 20 28 69 66 20 28 6e 6f 74 20 28 66 69 6c 65 2d 65 78 69 73 74 73 2d 70 20 28 66 | ......(if.(not.(file-exists-p.(f |
| 10e60 | 69 6c 65 2d 6e 61 6d 65 2d 64 69 72 65 63 74 6f 72 79 20 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 | ile-name-directory.name)))...... |
| 10e80 | 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 6b 65 2d 64 69 72 65 63 74 6f 72 79 20 28 66 69 6c 65 | ...........(make-directory.(file |
| 10ea0 | 2d 6e 61 6d 65 2d 64 69 72 65 63 74 6f 72 79 20 6e 61 6d 65 29 20 74 29 29 0a 20 20 20 20 20 20 | -name-directory.name).t))....... |
| 10ec0 | 20 20 20 20 20 20 3b 3b 20 63 6f 75 6c 64 20 62 65 20 73 77 69 74 63 68 65 64 20 74 6f 20 77 72 | ......;;.could.be.switched.to.wr |
| 10ee0 | 69 74 65 2d 72 65 67 69 6f 6e 20 2d 20 70 72 6f 62 61 62 6c 79 20 62 65 74 74 65 72 0a 20 20 20 | ite-region.-.probably.better.... |
| 10f00 | 20 20 20 20 20 20 20 20 20 28 61 70 70 65 6e 64 2d 74 6f 2d 66 69 6c 65 20 65 6c 6e 6f 64 65 2d | .........(append-to-file.elnode- |
| 10f20 | 6c 6f 67 2d 62 75 66 66 65 72 2d 70 6f 73 69 74 69 6f 6e 2d 77 72 69 74 74 65 6e 20 28 70 6f 69 | log-buffer-position-written.(poi |
| 10f40 | 6e 74 2d 6d 61 78 29 20 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 2d 6d | nt-max).name).............(set-m |
| 10f60 | 61 72 6b 65 72 20 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 62 75 66 66 65 72 2d 70 6f 73 69 74 69 6f 6e | arker.elnode-log-buffer-position |
| 10f80 | 2d 77 72 69 74 74 65 6e 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 0a 20 20 20 20 20 20 20 20 20 | -written.(point-max))).......... |
| 10fa0 | 20 3b 3b 20 54 72 75 6e 63 61 74 65 20 74 68 65 20 66 69 6c 65 20 69 66 20 69 74 27 73 20 67 72 | .;;.Truncate.the.file.if.it's.gr |
| 10fc0 | 6f 77 6e 20 74 6f 6f 20 6c 61 72 67 65 0a 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 68 | own.too.large...........(goto-ch |
| 10fe0 | 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 77 61 | ar.(point-max))...........(forwa |
| 11000 | 72 64 2d 6c 69 6e 65 20 28 2d 20 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 62 75 66 66 65 72 2d 6d 61 78 | rd-line.(-.elnode-log-buffer-max |
| 11020 | 2d 73 69 7a 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 62 65 67 69 6e 6e 69 6e 67 2d 6f 66 2d | -size))...........(beginning-of- |
| 11040 | 6c 69 6e 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 72 65 67 69 6f 6e 20 28 | line)...........(delete-region.( |
| 11060 | 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 6e 74 29 29 29 29 29 29 29 0a 0a 28 64 65 66 63 75 | point-min).(point)))))))..(defcu |
| 11080 | 73 74 6f 6d 20 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 2d 6c 6f 67 2d 74 6f 2d 6d 65 73 73 61 67 65 | stom.elnode-error-log-to-message |
| 110a0 | 73 20 74 0a 20 20 22 57 68 65 74 68 65 72 20 74 6f 20 73 65 6e 64 20 65 6c 6e 6f 64 65 20 6c 6f | s.t..."Whether.to.send.elnode.lo |
| 110c0 | 67 67 69 6e 67 20 74 68 72 6f 75 67 68 20 74 68 65 20 6d 65 73 73 61 67 69 6e 67 20 73 79 73 74 | gging.through.the.messaging.syst |
| 110e0 | 65 6d 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 65 6c 6e 6f 64 65 0a 20 20 3a 74 79 70 65 20 27 28 | em."...:group.'elnode...:type.'( |
| 11100 | 62 6f 6f 6c 65 61 6e 29 29 0a 0a 28 64 65 66 76 61 72 20 65 6c 6e 6f 64 65 2d 73 65 72 76 65 72 | boolean))..(defvar.elnode-server |
| 11120 | 2d 65 72 72 6f 72 2d 6c 6f 67 20 22 2a 65 6c 6e 6f 64 65 2d 73 65 72 76 65 72 2d 65 72 72 6f 72 | -error-log."*elnode-server-error |
| 11140 | 2a 22 0a 20 20 22 54 68 65 20 62 75 66 66 65 72 20 77 68 65 72 65 20 65 72 72 6f 72 20 6c 6f 67 | *"..."The.buffer.where.error.log |
| 11160 | 20 6d 65 73 73 61 67 65 73 20 61 72 65 20 73 65 6e 74 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 65 | .messages.are.sent.")..(defvar.e |
| 11180 | 6c 6e 6f 64 65 2d 2d 64 6f 2d 65 72 72 6f 72 2d 6c 6f 67 67 69 6e 67 20 74 0a 20 20 22 41 6c 6c | lnode--do-error-logging.t..."All |
| 111a0 | 6f 77 73 20 74 65 73 74 73 20 74 6f 20 74 75 72 6e 20 6f 66 66 20 65 72 72 6f 72 20 6c 6f 67 67 | ows.tests.to.turn.off.error.logg |
| 111c0 | 69 6e 67 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 65 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 73 65 6e | ing.")..(defvar.elnode--http-sen |
| 111e0 | 64 2d 73 74 72 69 6e 67 2d 64 65 62 75 67 20 6e 69 6c 0a 20 20 22 57 68 65 74 68 65 72 20 74 6f | d-string-debug.nil..."Whether.to |
| 11200 | 20 64 6f 20 65 72 72 6f 72 20 6c 6f 67 67 69 6e 67 20 69 6e 20 60 65 6c 6e 6f 64 65 2d 68 74 74 | .do.error.logging.in.`elnode-htt |
| 11220 | 70 2d 73 65 6e 64 2d 73 74 72 69 6e 67 27 2e 0a 0a 54 68 61 74 20 69 73 20 76 65 72 79 20 68 69 | p-send-string'...That.is.very.hi |
| 11240 | 67 68 20 6c 6f 67 67 69 6e 67 2c 20 70 72 6f 62 61 62 6c 79 20 61 20 62 61 64 20 69 64 65 61 20 | gh.logging,.probably.a.bad.idea. |
| 11260 | 66 6f 72 20 61 6e 79 6f 6e 65 20 62 75 74 20 61 6e 0a 65 6c 6e 6f 64 65 20 64 65 76 65 6c 6f 70 | for.anyone.but.an.elnode.develop |
| 11280 | 65 72 2e 22 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 67 65 74 2d 65 72 72 6f 72 2d | er.")..(defun.elnode--get-error- |
| 112a0 | 6c 6f 67 2d 62 75 66 66 65 72 20 28 29 0a 20 20 22 52 65 74 75 72 6e 73 20 74 68 65 20 62 75 66 | log-buffer.()..."Returns.the.buf |
| 112c0 | 66 65 72 20 66 6f 72 20 74 68 65 20 65 72 72 6f 72 2d 6c 6f 67 2e 22 0a 20 20 28 67 65 74 2d 62 | fer.for.the.error-log."...(get-b |
| 112e0 | 75 66 66 65 72 2d 63 72 65 61 74 65 20 65 6c 6e 6f 64 65 2d 73 65 72 76 65 72 2d 65 72 72 6f 72 | uffer-create.elnode-server-error |
| 11300 | 2d 6c 6f 67 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 20 28 6d 73 67 | -log))..(defun.elnode-error.(msg |
| 11320 | 20 26 72 65 73 74 20 61 72 67 73 29 0a 20 20 22 4c 6f 67 20 4d 53 47 20 77 69 74 68 20 41 52 47 | .&rest.args)..."Log.MSG.with.ARG |
| 11340 | 53 20 61 73 20 61 6e 20 65 72 72 6f 72 2e 0a 0a 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 | S.as.an.error...This.function.is |
| 11360 | 20 61 76 61 69 6c 61 62 6c 65 20 66 6f 72 20 68 61 6e 64 6c 65 72 73 20 74 6f 20 63 61 6c 6c 2e | .available.for.handlers.to.call. |
| 11380 | 20 20 49 74 20 69 73 20 61 6c 73 6f 20 75 73 65 64 0a 62 79 20 65 6c 6e 6f 64 65 20 69 74 65 73 | ..It.is.also.used.by.elnode.ites |
| 113a0 | 6c 66 2e 0a 0a 54 68 65 72 65 20 69 73 20 6f 6e 6c 79 20 6f 6e 65 20 65 72 72 6f 72 20 6c 6f 67 | lf...There.is.only.one.error.log |
| 113c0 | 2c 20 69 6e 20 74 68 65 20 66 75 74 75 72 65 20 74 68 65 72 65 20 6d 61 79 20 62 65 20 6d 6f 72 | ,.in.the.future.there.may.be.mor |
| 113e0 | 65 2e 22 0a 20 20 28 77 68 65 6e 20 65 6c 6e 6f 64 65 2d 2d 64 6f 2d 65 72 72 6f 72 2d 6c 6f 67 | e."...(when.elnode--do-error-log |
| 11400 | 67 69 6e 67 0a 20 20 20 20 28 6c 65 74 20 28 28 66 69 6c 65 6e 61 6d 65 20 28 65 6c 6e 6f 64 65 | ging.....(let.((filename.(elnode |
| 11420 | 2d 2d 6c 6f 67 2d 66 69 6c 65 6e 61 6d 65 20 22 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 22 29 29 0a | --log-filename."elnode-error")). |
| 11440 | 20 20 20 20 20 20 20 20 20 20 28 66 6d 74 6d 73 67 20 28 61 70 70 6c 79 20 27 66 6f 72 6d 61 74 | ..........(fmtmsg.(apply.'format |
| 11460 | 20 60 28 2c 6d 73 67 20 2c 40 61 72 67 73 29 29 29 29 0a 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 | .`(,msg.,@args)))).......(elnode |
| 11480 | 2d 6c 6f 67 2d 62 75 66 66 65 72 2d 6c 6f 67 0a 20 20 20 20 20 20 20 66 6d 74 6d 73 67 0a 20 20 | -log-buffer-log........fmtmsg... |
| 114a0 | 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 67 65 74 2d 65 72 72 6f 72 2d 6c 6f 67 2d 62 75 66 66 | .....(elnode--get-error-log-buff |
| 114c0 | 65 72 29 0a 20 20 20 20 20 20 20 66 69 6c 65 6e 61 6d 65 29 0a 20 20 20 20 20 20 28 77 68 65 6e | er)........filename).......(when |
| 114e0 | 20 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 2d 6c 6f 67 2d 74 6f 2d 6d 65 73 73 61 67 65 73 0a 20 20 | .elnode-error-log-to-messages... |
| 11500 | 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 3a 20 25 73 | ......(message."elnode-error:.%s |
| 11520 | 22 20 66 6d 74 6d 73 67 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 6c 6f | ".fmtmsg)))))..(defun.elnode--lo |
| 11540 | 67 2d 66 69 6c 65 6e 61 6d 65 20 28 6c 6f 67 6e 61 6d 65 29 0a 20 20 22 54 75 72 6e 20 4c 4f 47 | g-filename.(logname)..."Turn.LOG |
| 11560 | 4e 41 4d 45 20 69 6e 74 6f 20 61 20 66 69 6c 65 6e 61 6d 65 2e 0a 0a 60 65 6c 6e 6f 64 65 2d 6c | NAME.into.a.filename...`elnode-l |
| 11580 | 6f 67 2d 66 69 6c 65 73 2d 64 69 72 65 63 74 6f 72 79 27 20 69 73 20 75 73 65 64 20 61 73 20 74 | og-files-directory'.is.used.as.t |
| 115a0 | 68 65 20 63 6f 6e 74 61 69 6e 65 72 20 66 6f 72 20 6c 6f 67 20 66 69 6c 65 73 2e 0a 0a 54 68 69 | he.container.for.log.files...Thi |
| 115c0 | 73 20 66 75 6e 63 74 69 6f 6e 20 6d 61 69 6e 6c 79 20 65 78 69 73 74 73 20 74 6f 20 6d 61 6b 65 | s.function.mainly.exists.to.make |
| 115e0 | 20 74 65 73 74 69 6e 67 20 65 61 73 69 65 72 2e 22 0a 20 20 28 77 68 65 6e 20 65 6c 6e 6f 64 65 | .testing.easier."...(when.elnode |
| 11600 | 2d 6c 6f 67 2d 66 69 6c 65 73 2d 64 69 72 65 63 74 6f 72 79 0a 20 20 20 20 28 65 78 70 61 6e 64 | -log-files-directory.....(expand |
| 11620 | 2d 66 69 6c 65 2d 6e 61 6d 65 0a 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 25 73 2f 25 73 22 0a | -file-name......(format."%s/%s". |
| 11640 | 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 66 69 6c 65 73 2d 64 69 | .............elnode-log-files-di |
| 11660 | 72 65 63 74 6f 72 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f 67 6e 61 6d 65 29 29 29 29 | rectory..............logname)))) |
| 11680 | 0a 0a 28 64 65 66 76 61 72 20 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 61 63 63 65 73 73 2d 66 6f 72 6d | ..(defvar.elnode-log-access-form |
| 116a0 | 61 74 2d 70 61 74 68 2d 77 69 64 74 68 20 32 30 29 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d | at-path-width.20).(defun.elnode- |
| 116c0 | 6c 6f 67 2d 61 63 63 65 73 73 2d 66 6f 72 6d 61 74 2d 66 75 6e 63 20 28 68 74 74 70 63 6f 6e 29 | log-access-format-func.(httpcon) |
| 116e0 | 0a 20 20 22 53 74 61 6e 64 61 72 64 20 61 63 63 65 73 73 20 6c 6f 67 20 66 6f 72 6d 61 74 20 66 | ..."Standard.access.log.format.f |
| 11700 | 75 6e 63 74 69 6f 6e 2e 22 0a 20 20 28 66 6f 72 6d 61 74 0a 20 20 20 28 63 6f 6e 63 61 74 0a 20 | unction."...(format....(concat.. |
| 11720 | 20 20 20 22 25 73 20 25 20 38 64 20 25 73 20 25 20 22 0a 20 20 20 20 28 6e 75 6d 62 65 72 2d 74 | ..."%s.%.8d.%s.%.".....(number-t |
| 11740 | 6f 2d 73 74 72 69 6e 67 20 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 61 63 63 65 73 73 2d 66 6f 72 6d 61 | o-string.elnode-log-access-forma |
| 11760 | 74 2d 70 61 74 68 2d 77 69 64 74 68 29 0a 20 20 20 20 22 73 22 29 0a 20 20 20 28 70 72 6f 63 65 | t-path-width)....."s")....(proce |
| 11780 | 73 73 2d 67 65 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 72 65 73 70 6f | ss-get.httpcon.:elnode-httprespo |
| 117a0 | 6e 73 65 2d 73 74 61 74 75 73 29 0a 20 20 20 28 6f 72 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 | nse-status)....(or.(process-get. |
| 117c0 | 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 62 79 74 65 73 2d 77 72 69 74 74 65 6e 29 20 30 | httpcon.:elnode-bytes-written).0 |
| 117e0 | 29 0a 20 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 6d 65 74 68 6f 64 20 68 74 74 70 63 6f 6e | )....(elnode-http-method.httpcon |
| 11800 | 29 0a 20 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 70 61 74 68 69 6e 66 6f 20 68 74 74 70 63 | )....(elnode-http-pathinfo.httpc |
| 11820 | 6f 6e 29 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 61 63 63 | on)))..(defcustom.elnode-log-acc |
| 11840 | 65 73 73 2d 64 65 66 61 75 6c 74 2d 66 6f 72 6d 61 74 74 65 72 2d 66 75 6e 63 74 69 6f 6e 0a 20 | ess-default-formatter-function.. |
| 11860 | 20 27 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 61 63 63 65 73 73 2d 66 6f 72 6d 61 74 2d 66 75 6e 63 0a | .'elnode-log-access-format-func. |
| 11880 | 20 20 22 54 68 65 20 64 65 66 61 75 6c 74 20 61 63 63 65 73 73 20 6c 6f 67 20 66 6f 72 6d 61 74 | .."The.default.access.log.format |
| 118a0 | 74 65 72 20 66 75 6e 63 74 69 6f 6e 2e 0a 0a 54 68 69 73 20 69 73 20 75 73 65 64 20 77 68 65 6e | ter.function...This.is.used.when |
| 118c0 | 20 74 68 65 72 65 20 69 73 20 6e 6f 20 73 70 65 63 69 66 69 63 20 6c 6f 67 67 65 72 20 66 75 6e | .there.is.no.specific.logger.fun |
| 118e0 | 63 74 69 6f 6e 20 66 6f 72 20 61 0a 6c 6f 67 2d 6e 61 6d 65 2e 22 0a 20 20 3a 67 72 6f 75 70 20 | ction.for.a.log-name."...:group. |
| 11900 | 27 65 6c 6e 6f 64 65 0a 20 20 3a 74 79 70 65 20 27 66 75 6e 63 74 69 6f 6e 29 0a 0a 28 64 65 66 | 'elnode...:type.'function)..(def |
| 11920 | 63 75 73 74 6f 6d 20 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 61 63 63 65 73 73 2d 61 6c 69 73 74 20 6e | custom.elnode-log-access-alist.n |
| 11940 | 69 6c 0a 20 20 22 41 6e 20 61 73 73 6f 63 69 61 74 69 6f 6e 20 6c 69 73 74 20 6f 66 20 61 63 63 | il..."An.association.list.of.acc |
| 11960 | 65 73 73 20 6c 6f 67 20 66 6f 72 6d 61 74 20 66 75 6e 63 74 69 6f 6e 73 20 66 6f 72 20 6c 6f 67 | ess.log.format.functions.for.log |
| 11980 | 20 6e 61 6d 65 73 2e 0a 0a 41 6e 20 61 63 63 65 73 73 20 6c 6f 67 20 66 6f 72 6d 61 74 20 66 75 | .names...An.access.log.format.fu |
| 119a0 | 6e 63 74 69 6f 6e 20 72 65 63 65 69 76 65 73 20 74 68 65 20 68 74 74 70 20 63 6f 6e 6e 65 63 74 | nction.receives.the.http.connect |
| 119c0 | 69 6f 6e 20 61 6e 64 0a 73 68 6f 75 6c 64 20 72 65 74 75 72 6e 20 61 20 6c 6f 67 20 6c 69 6e 65 | ion.and.should.return.a.log.line |
| 119e0 | 20 74 6f 20 62 65 20 65 6e 74 65 72 65 64 20 69 6e 20 74 68 65 20 6c 6f 67 20 62 75 66 66 65 72 | .to.be.entered.in.the.log.buffer |
| 11a00 | 2e 0a 0a 54 68 65 73 65 20 6f 76 65 72 72 69 64 65 20 74 68 65 20 64 65 66 61 75 6c 74 20 6c 6f | ...These.override.the.default.lo |
| 11a20 | 67 20 66 6f 72 6d 61 74 74 65 72 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 65 6c 6e 6f 64 65 0a 20 | g.formatter."...:group.'elnode.. |
| 11a40 | 20 3a 74 79 70 65 20 27 28 61 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 3a 6b 65 79 2d 74 79 | .:type.'(alist...........:key-ty |
| 11a60 | 70 65 20 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 3a 76 61 6c 75 65 2d 74 79 70 65 20 | pe.string...........:value-type. |
| 11a80 | 66 75 6e 63 74 69 6f 6e 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 61 63 | function))..(defun.elnode-log-ac |
| 11aa0 | 63 65 73 73 20 28 6c 6f 67 6e 61 6d 65 20 68 74 74 70 63 6f 6e 29 0a 20 20 22 4c 6f 67 20 74 68 | cess.(logname.httpcon)..."Log.th |
| 11ac0 | 65 20 48 54 54 50 20 61 63 63 65 73 73 20 69 6e 20 62 75 66 66 65 72 20 4c 4f 47 4e 41 4d 45 2e | e.HTTP.access.in.buffer.LOGNAME. |
| 11ae0 | 0a 0a 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 61 76 61 69 6c 61 62 6c 65 20 66 6f 72 | ..This.function.is.available.for |
| 11b00 | 20 68 61 6e 64 6c 65 72 73 20 74 6f 20 63 61 6c 6c 2e 20 20 49 74 20 69 73 20 61 6c 73 6f 20 75 | .handlers.to.call...It.is.also.u |
| 11b20 | 73 65 64 0a 62 79 20 65 6c 6e 6f 64 65 20 69 74 65 73 6c 66 2e 22 0a 20 20 28 6c 65 74 2a 20 28 | sed.by.elnode.iteslf."...(let*.( |
| 11b40 | 28 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 62 75 66 66 65 72 2d 64 61 74 65 74 69 6d 65 2d 66 6f 72 6d | (elnode-log-buffer-datetime-form |
| 11b60 | 61 74 20 22 25 59 2d 25 6d 2d 25 64 2d 25 48 3a 25 4d 3a 25 53 22 29 0a 20 20 20 20 20 20 20 20 | at."%Y-%m-%d-%H:%M:%S")......... |
| 11b80 | 20 28 62 75 66 66 65 72 2d 6e 61 6d 65 20 28 66 6f 72 6d 61 74 20 22 2a 25 73 2d 65 6c 6e 6f 64 | .(buffer-name.(format."*%s-elnod |
| 11ba0 | 65 2d 61 63 63 65 73 73 2a 22 20 6c 6f 67 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 28 66 | e-access*".logname))..........(f |
| 11bc0 | 69 6c 65 6e 61 6d 65 20 28 65 6c 6e 6f 64 65 2d 2d 6c 6f 67 2d 66 69 6c 65 6e 61 6d 65 20 6c 6f | ilename.(elnode--log-filename.lo |
| 11be0 | 67 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 74 65 72 0a 20 20 20 20 | gname))..........(formatter..... |
| 11c00 | 20 20 20 20 20 20 28 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 28 6b 76 61 20 6c 6f 67 6e 61 6d | ......(or............(kva.lognam |
| 11c20 | 65 20 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 61 63 63 65 73 73 2d 61 6c 69 73 74 29 0a 20 20 20 20 20 | e.elnode-log-access-alist)...... |
| 11c40 | 20 20 20 20 20 20 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 61 63 63 65 73 73 2d 64 65 66 61 75 6c 74 2d | ......elnode-log-access-default- |
| 11c60 | 66 6f 72 6d 61 74 74 65 72 2d 66 75 6e 63 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 28 66 | formatter-function))..........(f |
| 11c80 | 6f 72 6d 61 74 74 65 64 0a 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 66 6f 72 6d 61 74 74 | ormatted...........(when.formatt |
| 11ca0 | 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 66 6f 72 6d 61 74 74 65 | er.............(funcall.formatte |
| 11cc0 | 72 20 68 74 74 70 63 6f 6e 29 29 29 29 0a 20 20 20 20 28 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 62 75 | r.httpcon)))).....(elnode-log-bu |
| 11ce0 | 66 66 65 72 2d 6c 6f 67 20 66 6f 72 6d 61 74 74 65 64 20 62 75 66 66 65 72 2d 6e 61 6d 65 20 66 | ffer-log.formatted.buffer-name.f |
| 11d00 | 69 6c 65 6e 61 6d 65 29 29 29 0a 0a 0a 3b 3b 20 44 65 66 65 72 20 73 74 75 66 66 0a 0a 28 70 72 | ilename)))...;;.Defer.stuff..(pr |
| 11d20 | 6f 67 6e 0a 20 20 3b 3b 20 53 65 74 73 20 75 70 20 74 68 65 20 65 6c 6e 6f 64 65 20 64 65 66 65 | ogn...;;.Sets.up.the.elnode.defe |
| 11d40 | 72 20 73 69 67 6e 61 6c 0a 20 20 28 70 75 74 20 27 65 6c 6e 6f 64 65 2d 64 65 66 65 72 0a 20 20 | r.signal...(put.'elnode-defer... |
| 11d60 | 20 20 20 20 20 27 65 72 72 6f 72 2d 63 6f 6e 64 69 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 27 28 | .....'error-conditions........'( |
| 11d80 | 65 72 72 6f 72 20 65 6c 6e 6f 64 65 20 65 6c 6e 6f 64 65 2d 64 65 66 65 72 29 29 0a 20 20 28 70 | error.elnode.elnode-defer))...(p |
| 11da0 | 75 74 20 27 65 6c 6e 6f 64 65 2d 64 65 66 65 72 0a 20 20 20 20 20 20 20 27 65 72 72 6f 72 2d 6d | ut.'elnode-defer........'error-m |
| 11dc0 | 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 22 45 6c 6e 6f 64 65 20 68 61 6e 64 6c 65 72 20 70 72 | essage........"Elnode.handler.pr |
| 11de0 | 6f 63 65 73 73 69 6e 67 20 64 65 66 65 72 65 64 22 29 29 0a 0a 28 64 65 66 76 61 72 20 65 6c 6e | ocessing.defered"))..(defvar.eln |
| 11e00 | 6f 64 65 2d 2d 64 65 66 65 72 72 65 64 20 27 28 29 0a 20 20 22 4c 69 73 74 20 6f 66 20 64 65 66 | ode--deferred.'()..."List.of.def |
| 11e20 | 65 72 72 65 64 20 70 61 69 72 73 3a 20 28 73 6f 63 6b 65 74 20 2e 20 68 61 6e 64 6c 65 72 29 2e | erred.pairs:.(socket...handler). |
| 11e40 | 22 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 64 65 66 65 72 2d 6e 6f 77 20 28 68 61 6e | ")..(defun.elnode-defer-now.(han |
| 11e60 | 64 6c 65 72 29 0a 20 20 22 54 68 65 20 66 75 6e 63 74 69 6f 6e 20 79 6f 75 20 63 61 6c 6c 20 74 | dler)..."The.function.you.call.t |
| 11e80 | 6f 20 64 65 66 65 72 20 70 72 6f 63 65 73 73 69 6e 67 20 6f 66 20 74 68 65 20 63 75 72 72 65 6e | o.defer.processing.of.the.curren |
| 11ea0 | 74 20 73 6f 63 6b 65 74 2e 0a 0a 50 61 73 73 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 48 | t.socket...Pass.in.the.current.H |
| 11ec0 | 41 4e 44 4c 45 52 2e 0a 0a 46 49 58 4d 45 3a 20 57 65 20 63 6f 75 6c 64 20 63 61 70 74 75 72 65 | ANDLER...FIXME:.We.could.capture |
| 11ee0 | 20 74 68 65 20 63 75 72 72 65 6e 74 20 68 61 6e 64 6c 65 72 20 73 6f 6d 65 68 6f 77 3f 20 49 20 | .the.current.handler.somehow?.I. |
| 11f00 | 74 68 69 6e 6b 20 74 68 65 0a 70 6f 69 6e 74 20 69 73 20 74 68 61 74 20 77 68 61 74 65 76 65 72 | think.the.point.is.that.whatever |
| 11f20 | 20 73 69 67 6e 61 6c 73 20 65 6c 6e 6f 64 65 2d 64 65 66 65 72 20 73 68 6f 75 6c 64 20 62 65 20 | .signals.elnode-defer.should.be. |
| 11f40 | 67 65 74 74 69 6e 67 0a 63 6f 6e 74 72 6f 6c 20 62 61 63 6b 20 77 68 65 6e 20 74 68 65 20 64 65 | getting.control.back.when.the.de |
| 11f60 | 66 65 72 72 65 64 20 69 73 20 72 65 2d 70 72 6f 63 65 73 73 65 64 2e 22 0a 20 20 28 73 69 67 6e | ferred.is.re-processed."...(sign |
| 11f80 | 61 6c 20 27 65 6c 6e 6f 64 65 2d 64 65 66 65 72 20 68 61 6e 64 6c 65 72 29 29 0a 0a 28 64 65 66 | al.'elnode-defer.handler))..(def |
| 11fa0 | 6d 61 63 72 6f 20 65 6c 6e 6f 64 65 2d 64 65 66 65 72 2d 75 6e 74 69 6c 20 28 67 75 61 72 64 20 | macro.elnode-defer-until.(guard. |
| 11fc0 | 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20 22 54 65 73 74 20 47 55 41 52 44 20 61 6e 64 20 64 65 | &rest.body)..."Test.GUARD.and.de |
| 11fe0 | 66 65 72 20 69 66 20 69 74 20 66 61 69 6c 73 20 61 6e 64 20 42 4f 44 59 20 69 66 20 69 74 20 64 | fer.if.it.fails.and.BODY.if.it.d |
| 12000 | 6f 65 73 6e 27 74 2e 0a 0a 60 68 74 74 70 63 6f 6e 27 20 69 73 20 63 61 70 74 75 72 65 64 20 69 | oesn't...`httpcon'.is.captured.i |
| 12020 | 6e 20 74 68 69 73 20 6d 61 63 72 6f 20 77 68 69 63 68 20 6d 65 61 6e 73 20 74 68 65 20 6d 61 63 | n.this.macro.which.means.the.mac |
| 12040 | 72 6f 20 63 61 6e 0a 6f 6e 6c 79 20 62 65 20 65 78 70 61 6e 64 65 64 20 77 68 65 72 65 20 74 68 | ro.can.only.be.expanded.where.th |
| 12060 | 65 72 65 20 69 73 20 61 6e 20 69 6e 73 63 6f 70 65 20 60 68 74 74 70 63 6f 6e 27 2e 0a 0a 49 6e | ere.is.an.inscope.`httpcon'...In |
| 12080 | 73 69 64 65 20 74 68 65 20 6d 61 63 72 6f 20 74 68 65 20 73 79 6d 62 6f 6c 20 60 65 6c 6e 6f 64 | side.the.macro.the.symbol.`elnod |
| 120a0 | 65 2d 64 65 66 65 72 2d 67 75 61 72 64 2d 69 74 27 20 69 73 20 62 6f 75 6e 64 20 74 6f 0a 74 68 | e-defer-guard-it'.is.bound.to.th |
| 120c0 | 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 47 55 41 52 44 2e 22 0a 20 20 28 64 65 63 6c 61 72 | e.value.of.the.GUARD."...(declar |
| 120e0 | 65 20 28 69 6e 64 65 6e 74 20 31 29 29 0a 20 20 28 6c 65 74 20 28 28 62 76 20 28 6d 61 6b 65 2d | e.(indent.1))...(let.((bv.(make- |
| 12100 | 73 79 6d 62 6f 6c 20 22 62 76 22 29 29 0a 20 20 20 20 20 20 20 20 28 67 76 20 28 6d 61 6b 65 2d | symbol."bv")).........(gv.(make- |
| 12120 | 73 79 6d 62 6f 6c 20 22 67 76 22 29 29 0a 20 20 20 20 20 20 20 20 28 66 76 20 28 6d 61 6b 65 2d | symbol."gv")).........(fv.(make- |
| 12140 | 73 79 6d 62 6f 6c 20 22 66 76 22 29 29 29 0a 20 20 20 20 60 28 6c 65 74 2a 20 28 28 2c 67 76 20 | symbol."fv"))).....`(let*.((,gv. |
| 12160 | 28 6c 61 6d 62 64 61 20 28 29 20 2c 67 75 61 72 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | (lambda.().,guard))............. |
| 12180 | 28 65 6c 6e 6f 64 65 2d 64 65 66 65 72 2d 67 75 61 72 64 2d 69 74 20 28 66 75 6e 63 61 6c 6c 20 | (elnode-defer-guard-it.(funcall. |
| 121a0 | 2c 67 76 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 2c 62 76 20 28 6c 61 6d 62 64 61 20 28 | ,gv)).............(,bv.(lambda.( |
| 121c0 | 68 74 74 70 63 6f 6e 29 20 2c 40 62 6f 64 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 2c | httpcon).,@body)).............(, |
| 121e0 | 66 76 20 3b 20 61 20 79 2d 63 6f 6d 62 69 6e 61 74 6f 72 21 0a 20 20 20 20 20 20 20 20 20 20 20 | fv.;.a.y-combinator!............ |
| 12200 | 20 20 28 6c 61 6d 62 64 61 20 28 68 74 74 70 63 6f 6e 20 70 72 6f 63 29 0a 20 20 20 20 20 20 20 | ..(lambda.(httpcon.proc)........ |
| 12220 | 20 20 20 20 20 20 20 20 28 73 65 74 71 20 65 6c 6e 6f 64 65 2d 64 65 66 65 72 2d 67 75 61 72 64 | ........(setq.elnode-defer-guard |
| 12240 | 2d 69 74 20 28 66 75 6e 63 61 6c 6c 20 2c 67 76 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | -it.(funcall.,gv)).............. |
| 12260 | 20 20 28 69 66 20 65 6c 6e 6f 64 65 2d 64 65 66 65 72 2d 67 75 61 72 64 2d 69 74 0a 20 20 20 20 | ..(if.elnode-defer-guard-it..... |
| 12280 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 2c 62 76 20 68 74 74 70 | ...............(funcall.,bv.http |
| 122a0 | 63 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 74 68 65 20 74 | con)....................;;.the.t |
| 122c0 | 65 73 74 20 66 61 69 6c 65 64 20 77 65 20 73 68 6f 75 6c 64 20 64 65 66 65 72 20 61 67 61 69 6e | est.failed.we.should.defer.again |
| 122e0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 64 65 66 65 | ....................(elnode-defe |
| 12300 | 72 2d 6e 6f 77 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 | r-now.....................(lambd |
| 12320 | 61 20 28 68 74 74 70 2d 63 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | a.(http-con).................... |
| 12340 | 20 20 20 28 66 75 6e 63 61 6c 6c 20 70 72 6f 63 20 68 74 74 70 2d 63 6f 6e 20 70 72 6f 63 29 29 | ...(funcall.proc.http-con.proc)) |
| 12360 | 29 29 29 29 29 0a 20 20 20 20 20 20 20 28 69 66 20 65 6c 6e 6f 64 65 2d 64 65 66 65 72 2d 67 75 | )))))........(if.elnode-defer-gu |
| 12380 | 61 72 64 2d 69 74 0a 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 2c 62 76 20 68 | ard-it............(funcall.,bv.h |
| 123a0 | 74 74 70 63 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 68 65 20 74 65 73 74 20 66 | ttpcon)............;;.The.test.f |
| 123c0 | 61 69 6c 65 64 2c 20 77 65 20 73 68 6f 75 6c 64 20 64 65 66 65 72 2e 0a 20 20 20 20 20 20 20 20 | ailed,.we.should.defer.......... |
| 123e0 | 20 20 20 28 65 6c 6e 6f 64 65 2d 64 65 66 65 72 2d 6e 6f 77 0a 20 20 20 20 20 20 20 20 20 20 20 | ...(elnode-defer-now............ |
| 12400 | 20 28 6c 61 6d 62 64 61 20 28 68 74 74 70 63 6f 6e 29 20 3b 20 61 70 70 6c 79 20 74 68 65 20 79 | .(lambda.(httpcon).;.apply.the.y |
| 12420 | 2d 63 6f 6d 62 69 6e 61 74 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 | -combinator...............(funca |
| 12440 | 6c 6c 20 2c 66 76 20 68 74 74 70 63 6f 6e 20 2c 66 76 29 29 29 29 29 29 29 0a 0a 28 64 65 66 75 | ll.,fv.httpcon.,fv)))))))..(defu |
| 12460 | 6e 20 65 6c 6e 6f 64 65 2d 2d 64 65 66 65 72 72 65 64 2d 61 64 64 20 28 68 74 74 70 63 6f 6e 20 | n.elnode--deferred-add.(httpcon. |
| 12480 | 68 61 6e 64 6c 65 72 29 0a 20 20 22 41 64 64 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 48 54 | handler)..."Add.the.specified.HT |
| 124a0 | 54 50 43 4f 4e 2f 48 41 4e 44 4c 45 52 20 70 61 69 72 20 74 6f 20 74 68 65 20 64 65 66 65 72 72 | TPCON/HANDLER.pair.to.the.deferr |
| 124c0 | 65 64 20 6c 69 73 74 2e 22 0a 20 20 28 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 20 22 64 65 66 65 72 | ed.list."...(elnode-error."defer |
| 124e0 | 72 65 64 2d 61 64 64 3a 20 61 64 64 69 6e 67 20 61 20 64 65 66 65 72 20 25 73 20 66 6f 72 20 25 | red-add:.adding.a.defer.%s.for.% |
| 12500 | 73 22 20 68 61 6e 64 6c 65 72 20 68 74 74 70 63 6f 6e 29 0a 20 20 28 70 75 73 68 20 28 63 6f 6e | s".handler.httpcon)...(push.(con |
| 12520 | 73 20 68 74 74 70 63 6f 6e 20 68 61 6e 64 6c 65 72 29 20 65 6c 6e 6f 64 65 2d 2d 64 65 66 65 72 | s.httpcon.handler).elnode--defer |
| 12540 | 72 65 64 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 64 65 66 65 72 72 65 64 2d 70 | red))..(defun.elnode--deferred-p |
| 12560 | 72 6f 63 65 73 73 2d 6f 70 65 6e 20 28 68 74 74 70 63 6f 6e 20 68 61 6e 64 6c 65 72 29 0a 20 20 | rocess-open.(httpcon.handler)... |
| 12580 | 22 50 72 6f 63 65 73 73 20 74 68 65 20 48 41 4e 44 4c 45 52 20 77 69 74 68 20 74 68 65 20 6b 6e | "Process.the.HANDLER.with.the.kn |
| 125a0 | 6f 77 6e 20 6f 70 65 6e 20 48 54 54 50 43 4f 4e 2e 22 0a 20 20 3b 3b 20 28 65 6c 6e 6f 64 65 2d | own.open.HTTPCON."...;;.(elnode- |
| 125c0 | 65 72 72 6f 72 20 22 64 65 66 65 72 20 2d 20 6a 75 73 74 20 62 65 66 6f 72 65 20 63 61 6c 6c 69 | error."defer.-.just.before.calli |
| 125e0 | 6e 67 20 74 68 65 20 68 61 6e 64 6c 65 72 20 25 73 22 20 68 61 6e 64 6c 65 72 29 0a 20 20 28 66 | ng.the.handler.%s".handler)...(f |
| 12600 | 75 6e 63 61 6c 6c 20 68 61 6e 64 6c 65 72 20 68 74 74 70 63 6f 6e 29 29 0a 0a 0a 3b 3b 20 4c 6f | uncall.handler.httpcon))...;;.Lo |
| 12620 | 67 20 6c 65 76 65 6c 73 0a 28 64 65 66 63 6f 6e 73 74 20 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 64 65 | g.levels.(defconst.elnode-log-de |
| 12640 | 62 75 67 20 30 29 0a 28 64 65 66 63 6f 6e 73 74 20 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 69 6e 66 6f | bug.0).(defconst.elnode-log-info |
| 12660 | 20 31 29 0a 28 64 65 66 63 6f 6e 73 74 20 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 77 61 72 6e 69 6e 67 | .1).(defconst.elnode-log-warning |
| 12680 | 20 32 29 0a 28 64 65 66 63 6f 6e 73 74 20 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 63 72 69 74 69 63 61 | .2).(defconst.elnode-log-critica |
| 126a0 | 6c 20 33 29 0a 0a 28 64 65 66 76 61 72 20 65 6c 6e 6f 64 65 2d 64 65 66 65 72 2d 70 72 6f 63 65 | l.3)..(defvar.elnode-defer-proce |
| 126c0 | 73 73 6f 72 2d 6c 6f 67 2d 6c 65 76 65 6c 20 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 63 72 69 74 69 63 | ssor-log-level.elnode-log-critic |
| 126e0 | 61 6c 0a 20 20 22 4c 6f 67 20 6c 65 76 65 6c 20 6f 66 20 74 68 65 20 64 65 66 65 72 20 70 72 6f | al..."Log.level.of.the.defer.pro |
| 12700 | 63 65 73 73 6f 72 2e 22 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 64 65 66 65 72 72 | cessor.")..(defun.elnode--deferr |
| 12720 | 65 64 2d 6c 6f 67 20 28 6c 65 76 65 6c 20 6d 73 67 20 26 72 65 73 74 20 61 72 67 73 29 0a 20 20 | ed-log.(level.msg.&rest.args)... |
| 12740 | 22 53 70 65 63 69 61 6c 20 6c 6f 67 20 66 6f 72 20 65 6c 6e 6f 64 65 2d 64 65 66 65 72 72 65 64 | "Special.log.for.elnode-deferred |
| 12760 | 73 22 0a 20 20 28 77 68 65 6e 20 28 3e 3d 20 6c 65 76 65 6c 20 65 6c 6e 6f 64 65 2d 64 65 66 65 | s"...(when.(>=.level.elnode-defe |
| 12780 | 72 2d 70 72 6f 63 65 73 73 6f 72 2d 6c 6f 67 2d 6c 65 76 65 6c 29 0a 20 20 20 20 28 61 70 70 6c | r-processor-log-level).....(appl |
| 127a0 | 79 0a 20 20 20 20 20 27 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 0a 20 20 20 20 20 28 66 6f 72 6d 61 | y......'elnode-error......(forma |
| 127c0 | 74 20 22 65 6c 6e 6f 64 65 2d 64 65 66 65 72 72 65 64 2d 70 72 6f 63 65 73 73 6f 72 20 25 73 22 | t."elnode-deferred-processor.%s" |
| 127e0 | 20 6d 73 67 29 0a 20 20 20 20 20 61 72 67 73 29 29 29 0a 0a 28 64 65 66 76 61 72 20 65 6c 6e 6f | .msg)......args)))..(defvar.elno |
| 12800 | 64 65 2d 64 65 66 65 72 2d 66 61 69 6c 75 72 65 2d 68 6f 6f 6b 20 6e 69 6c 0a 20 20 22 48 6f 6f | de-defer-failure-hook.nil..."Hoo |
| 12820 | 6b 20 63 61 6c 6c 65 64 20 77 68 65 6e 20 61 20 64 65 66 65 72 72 65 64 20 73 6f 63 6b 65 74 20 | k.called.when.a.deferred.socket. |
| 12840 | 66 61 69 6c 73 2e 0a 0a 54 68 65 20 68 6f 6f 6b 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 63 61 6c | fails...The.hook.function.is.cal |
| 12860 | 6c 65 64 20 77 69 74 68 20 74 68 65 20 68 74 74 70 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 61 6e 64 | led.with.the.http.connection.and |
| 12880 | 20 74 68 65 0a 66 61 69 6c 75 72 65 20 73 74 61 74 65 20 77 68 69 63 68 20 65 69 74 68 65 72 20 | .the.failure.state.which.either. |
| 128a0 | 74 68 65 20 73 79 6d 62 6f 6c 20 60 63 6c 6f 73 65 64 27 20 6f 72 20 74 68 65 20 73 79 6d 62 6f | the.symbol.`closed'.or.the.symbo |
| 128c0 | 6c 0a 60 66 61 69 6c 65 64 27 2e 22 29 0a 0a 28 64 65 66 63 6f 6e 73 74 20 65 6c 6e 6f 64 65 2d | l.`failed'.")..(defconst.elnode- |
| 128e0 | 2d 64 65 62 75 67 2d 77 69 74 68 2d 62 61 63 6b 74 72 61 63 65 73 20 6e 69 6c 0a 20 20 22 46 65 | -debug-with-backtraces.nil..."Fe |
| 12900 | 61 74 75 72 65 20 73 77 69 74 63 68 20 74 6f 20 69 6e 63 6c 75 64 65 20 62 61 63 6b 74 72 61 63 | ature.switch.to.include.backtrac |
| 12920 | 65 20 64 65 62 75 67 67 69 6e 67 20 73 75 70 70 6f 72 74 2e 22 29 0a 0a 28 64 65 66 75 6e 20 65 | e.debugging.support.")..(defun.e |
| 12940 | 6c 6e 6f 64 65 2d 2d 64 65 66 65 72 72 65 64 2d 70 72 6f 63 65 73 73 6f 72 20 28 29 0a 20 20 22 | lnode--deferred-processor.()..." |
| 12960 | 50 72 6f 63 65 73 73 20 74 68 65 20 64 65 66 65 72 72 65 64 20 71 75 65 75 65 2e 22 0a 20 20 28 | Process.the.deferred.queue."...( |
| 12980 | 6c 65 74 20 28 28 72 75 6e 20 28 72 61 6e 64 6f 6d 20 35 30 30 30 29 29 20 3b 20 75 73 65 20 74 | let.((run.(random.5000)).;.use.t |
| 129a0 | 68 69 73 20 74 6f 20 64 69 73 61 6d 62 69 67 75 61 74 65 20 72 75 6e 73 20 69 6e 20 74 68 65 20 | his.to.disambiguate.runs.in.the. |
| 129c0 | 6c 6f 67 73 0a 20 20 20 20 20 20 20 20 28 6e 65 77 2d 64 65 66 65 72 72 65 64 20 28 6c 69 73 74 | logs.........(new-deferred.(list |
| 129e0 | 29 29 29 0a 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 64 65 66 65 72 72 65 64 2d 6c 6f 67 20 65 6c | ))).....(elnode--deferred-log.el |
| 12a00 | 6e 6f 64 65 2d 6c 6f 67 2d 69 6e 66 6f 20 22 73 74 61 72 74 22 29 0a 20 20 20 20 28 6c 6f 6f 70 | node-log-info."start").....(loop |
| 12a20 | 20 66 6f 72 20 70 61 69 72 20 69 6e 20 65 6c 6e 6f 64 65 2d 2d 64 65 66 65 72 72 65 64 0a 20 20 | .for.pair.in.elnode--deferred... |
| 12a40 | 20 20 20 20 20 64 6f 0a 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 68 74 74 70 63 6f 6e 20 | .....do..........(let.((httpcon. |
| 12a60 | 28 63 61 72 20 70 61 69 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 61 6e 64 | (car.pair))................(hand |
| 12a80 | 6c 65 72 20 28 63 64 72 20 70 61 69 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 63 61 73 | ler.(cdr.pair)))............(cas |
| 12aa0 | 65 20 28 70 72 6f 63 65 73 73 2d 73 74 61 74 75 73 20 68 74 74 70 63 6f 6e 29 0a 20 20 20 20 20 | e.(process-status.httpcon)...... |
| 12ac0 | 20 20 20 20 20 20 20 20 28 27 6f 70 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c | ........('open...............(el |
| 12ae0 | 6e 6f 64 65 2d 2d 64 65 66 65 72 72 65 64 2d 6c 6f 67 20 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 69 6e | node--deferred-log.elnode-log-in |
| 12b00 | 66 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | fo.............................. |
| 12b20 | 20 20 20 20 20 20 20 22 6f 70 65 6e 20 25 73 20 25 73 22 20 68 74 74 70 63 6f 6e 20 68 61 6e 64 | ......."open.%s.%s".httpcon.hand |
| 12b40 | 6c 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 | ler)...............(condition-ca |
| 12b60 | 73 65 20 73 69 67 6e 61 6c 2d 76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | se.signal-value................. |
| 12b80 | 20 20 28 65 6c 6e 6f 64 65 2d 2d 64 65 66 65 72 72 65 64 2d 70 72 6f 63 65 73 73 2d 6f 70 65 6e | ..(elnode--deferred-process-open |
| 12ba0 | 20 68 74 74 70 63 6f 6e 20 68 61 6e 64 6c 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .httpcon.handler)............... |
| 12bc0 | 20 20 28 27 65 6c 6e 6f 64 65 2d 64 65 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ..('elnode-defer................ |
| 12be0 | 20 20 28 70 75 73 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 | ..(push...................(cons. |
| 12c00 | 68 74 74 70 63 6f 6e 20 28 63 64 72 20 73 69 67 6e 61 6c 2d 76 61 6c 75 65 29 29 0a 20 20 20 20 | httpcon.(cdr.signal-value))..... |
| 12c20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 2d 64 65 66 65 72 72 65 64 29 29 0a 20 20 20 | ..............new-deferred)).... |
| 12c40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 | .............(error............. |
| 12c60 | 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 64 65 66 65 72 72 65 64 2d 6c 6f 67 0a 20 20 20 20 20 | .....(elnode--deferred-log...... |
| 12c80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 63 72 69 74 69 63 61 6c | .............elnode-log-critical |
| 12ca0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 65 72 72 6f 72 20 25 73 20 2d 20 25 | ..................."error.%s.-.% |
| 12cc0 | 73 20 25 53 22 20 68 74 74 70 63 6f 6e 20 73 69 67 6e 61 6c 2d 76 61 6c 75 65 0a 20 20 20 20 20 | s.%S".httpcon.signal-value...... |
| 12ce0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 65 6c 6e 6f 64 65 2d 2d 64 65 62 75 67 2d 77 | .............(if.elnode--debug-w |
| 12d00 | 69 74 68 2d 62 61 63 6b 74 72 61 63 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ith-backtraces.................. |
| 12d20 | 20 20 20 20 20 64 65 62 75 67 67 65 72 2d 70 72 65 76 69 6f 75 73 2d 62 61 63 6b 74 72 61 63 65 | .....debugger-previous-backtrace |
| 12d40 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 22 29 29 29 29 29 0a 20 | .......................""))))).. |
| 12d60 | 20 20 20 20 20 20 20 20 20 20 20 20 28 27 63 6c 6f 73 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 | ............('closed............ |
| 12d80 | 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 64 65 66 65 72 72 65 64 2d 6c 6f 67 20 65 6c 6e 6f 64 65 2d | ...(elnode--deferred-log.elnode- |
| 12da0 | 6c 6f 67 2d 69 6e 66 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | log-info........................ |
| 12dc0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 22 63 6c 6f 73 65 64 20 25 73 20 25 73 22 20 68 74 74 70 | ............."closed.%s.%s".http |
| 12de0 | 63 6f 6e 20 68 61 6e 64 6c 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 43 61 | con.handler)...............;;.Ca |
| 12e00 | 6c 6c 20 61 6e 79 20 68 6f 6f 6b 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 64 65 66 65 72 20 63 | ll.any.hook.function.for.defer.c |
| 12e20 | 6c 6f 73 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 6f 70 20 66 6f 72 20 68 6f | loses...............(loop.for.ho |
| 12e40 | 6f 6b 2d 66 75 6e 63 20 69 6e 20 65 6c 6e 6f 64 65 2d 64 65 66 65 72 2d 66 61 69 6c 75 72 65 2d | ok-func.in.elnode-defer-failure- |
| 12e60 | 68 6f 6f 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 0a 20 20 20 20 20 20 20 | hook..................do........ |
| 12e80 | 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 68 6f 6f 6b 2d 66 75 6e 63 20 68 | ............(funcall.hook-func.h |
| 12ea0 | 74 74 70 63 6f 6e 20 27 63 6c 6f 73 65 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 | ttpcon.'closed)))..............( |
| 12ec0 | 27 66 61 69 6c 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 64 | 'failed...............(elnode--d |
| 12ee0 | 65 66 65 72 72 65 64 2d 6c 6f 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 6e 6f 64 | eferred-log................elnod |
| 12f00 | 65 2d 6c 6f 67 2d 69 6e 66 6f 20 22 66 61 69 6c 65 64 20 25 73 20 25 73 22 20 68 74 74 70 63 6f | e-log-info."failed.%s.%s".httpco |
| 12f20 | 6e 20 68 61 6e 64 6c 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 43 61 6c 6c | n.handler)...............;;.Call |
| 12f40 | 20 61 6e 79 20 68 6f 6f 6b 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 64 65 66 65 72 20 66 61 69 | .any.hook.function.for.defer.fai |
| 12f60 | 6c 75 72 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 6f 70 20 66 6f 72 20 68 6f | lures...............(loop.for.ho |
| 12f80 | 6f 6b 2d 66 75 6e 63 20 69 6e 20 65 6c 6e 6f 64 65 2d 64 65 66 65 72 2d 66 61 69 6c 75 72 65 2d | ok-func.in.elnode-defer-failure- |
| 12fa0 | 68 6f 6f 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 0a 20 20 20 20 20 20 20 | hook..................do........ |
| 12fc0 | 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 68 6f 6f 6b 2d 66 75 6e 63 20 68 | ............(funcall.hook-func.h |
| 12fe0 | 74 74 70 63 6f 6e 20 27 66 61 69 6c 65 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3b | ttpcon.'failed)))..............; |
| 13000 | 3b 20 4e 6f 74 20 73 75 72 65 20 68 6f 77 20 74 6f 20 64 6f 20 63 6f 6e 6e 65 63 74 2e 2e 2e 20 | ;.Not.sure.how.to.do.connect.... |
| 13020 | 73 61 6d 65 20 61 73 20 6f 70 65 6e 3f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 2e 2e | same.as.open?..............;;... |
| 13040 | 2e 20 6f 72 20 6a 75 73 74 20 70 75 74 20 69 74 20 62 61 63 6b 3f 0a 20 20 20 20 20 20 20 20 20 | ..or.just.put.it.back?.......... |
| 13060 | 20 20 20 20 28 27 63 6f 6e 6e 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 75 73 | ....('connect...............(pus |
| 13080 | 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 68 74 74 70 63 6f 6e 20 68 | h................(cons.httpcon.h |
| 130a0 | 61 6e 64 6c 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 77 2d 64 65 66 65 72 | andler)................new-defer |
| 130c0 | 72 65 64 29 29 29 29 29 0a 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 64 65 66 65 72 72 65 64 2d 6c | red))))).....(elnode--deferred-l |
| 130e0 | 6f 67 20 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 69 6e 66 6f 20 22 63 6f 6d 70 6c 65 74 65 22 29 0a 20 | og.elnode-log-info."complete").. |
| 13100 | 20 20 20 3b 3b 20 53 65 74 20 74 68 65 20 63 6f 72 72 65 63 74 20 71 75 65 75 65 0a 20 20 20 20 | ...;;.Set.the.correct.queue..... |
| 13120 | 28 73 65 74 71 20 65 6c 6e 6f 64 65 2d 2d 64 65 66 65 72 72 65 64 20 6e 65 77 2d 64 65 66 65 72 | (setq.elnode--deferred.new-defer |
| 13140 | 72 65 64 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 64 65 66 65 72 72 65 64 2d 71 | red)))..(defun.elnode-deferred-q |
| 13160 | 75 65 75 65 2d 70 72 6f 63 65 73 73 20 28 29 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a | ueue-process.()...(interactive). |
| 13180 | 20 20 28 65 6c 6e 6f 64 65 2d 2d 64 65 66 65 72 72 65 64 2d 70 72 6f 63 65 73 73 6f 72 29 29 0a | ..(elnode--deferred-processor)). |
| 131a0 | 0a 28 64 65 66 76 61 72 20 65 6c 6e 6f 64 65 2d 64 65 66 65 72 2d 6f 6e 20 6e 69 6c 0a 20 20 22 | .(defvar.elnode-defer-on.nil..." |
| 131c0 | 57 68 65 74 68 65 72 20 74 6f 20 64 6f 20 64 65 66 65 72 72 69 6e 67 20 6f 72 20 6e 6f 74 2e 22 | Whether.to.do.deferring.or.not." |
| 131e0 | 29 0a 0a 28 64 65 66 76 61 72 20 65 6c 6e 6f 64 65 2d 2d 64 65 66 65 72 2d 74 69 6d 65 72 20 6e | )..(defvar.elnode--defer-timer.n |
| 13200 | 69 6c 0a 20 20 22 54 68 65 20 74 69 6d 65 72 20 75 73 65 64 20 62 79 20 74 68 65 20 65 6c 6e 6f | il..."The.timer.used.by.the.elno |
| 13220 | 64 65 20 64 65 66 65 72 20 70 72 6f 63 65 73 73 69 6e 67 2e 0a 0a 54 68 69 73 20 69 73 20 69 6e | de.defer.processing...This.is.in |
| 13240 | 69 74 69 61 6c 69 7a 65 64 20 62 79 20 60 65 6c 6e 6f 64 65 2d 2d 69 6e 69 74 2d 64 65 66 65 72 | itialized.by.`elnode--init-defer |
| 13260 | 72 69 6e 67 27 2e 22 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 69 6e 69 74 2d 64 65 | ring'.")..(defun.elnode--init-de |
| 13280 | 66 65 72 72 69 6e 67 20 28 29 0a 20 20 22 49 6e 69 74 69 61 6c 69 7a 65 20 65 6c 6e 6f 64 65 20 | ferring.()..."Initialize.elnode. |
| 132a0 | 64 65 66 65 72 20 70 72 6f 63 65 73 73 69 6e 67 2e 0a 0a 4e 65 63 65 73 73 61 72 79 20 66 6f 72 | defer.processing...Necessary.for |
| 132c0 | 20 72 75 6e 6e 69 6e 67 20 63 6f 6d 65 74 20 61 70 70 73 2e 22 0a 20 20 28 73 65 74 71 20 65 6c | .running.comet.apps."...(setq.el |
| 132e0 | 6e 6f 64 65 2d 2d 64 65 66 65 72 2d 74 69 6d 65 72 0a 20 20 20 20 20 20 20 20 28 72 75 6e 2d 61 | node--defer-timer.........(run-a |
| 13300 | 74 2d 74 69 6d 65 20 22 32 20 73 65 63 22 20 32 20 27 65 6c 6e 6f 64 65 2d 2d 64 65 66 65 72 72 | t-time."2.sec".2.'elnode--deferr |
| 13320 | 65 64 2d 70 72 6f 63 65 73 73 6f 72 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 64 | ed-processor)))..(defun.elnode-d |
| 13340 | 65 66 65 72 72 65 64 2d 71 75 65 75 65 2d 73 74 61 72 74 20 28 29 0a 20 20 22 53 74 61 72 74 20 | eferred-queue-start.()..."Start. |
| 13360 | 74 68 65 20 64 65 66 65 72 72 65 64 20 71 75 65 75 65 2c 20 75 6e 6c 65 73 73 20 69 74 27 73 20 | the.deferred.queue,.unless.it's. |
| 13380 | 72 75 6e 6e 69 6e 67 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 75 6e 6c | running."...(interactive)...(unl |
| 133a0 | 65 73 73 20 65 6c 6e 6f 64 65 2d 64 65 66 65 72 2d 6f 6e 0a 20 20 20 20 28 73 65 74 71 20 65 6c | ess.elnode-defer-on.....(setq.el |
| 133c0 | 6e 6f 64 65 2d 64 65 66 65 72 2d 6f 6e 20 74 29 29 0a 20 20 28 75 6e 6c 65 73 73 20 65 6c 6e 6f | node-defer-on.t))...(unless.elno |
| 133e0 | 64 65 2d 2d 64 65 66 65 72 2d 74 69 6d 65 72 0a 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 69 6e 69 | de--defer-timer.....(elnode--ini |
| 13400 | 74 2d 64 65 66 65 72 72 69 6e 67 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 64 65 | t-deferring)))..(defun.elnode-de |
| 13420 | 66 65 72 72 65 64 2d 71 75 65 75 65 2d 73 74 6f 70 20 28 29 0a 20 20 22 53 74 6f 70 20 61 6e 79 | ferred-queue-stop.()..."Stop.any |
| 13440 | 20 72 75 6e 6e 69 6e 67 20 64 65 66 65 72 72 65 64 20 71 75 65 75 65 20 70 72 6f 63 65 73 73 6f | .running.deferred.queue.processo |
| 13460 | 72 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 77 68 65 6e 20 65 6c 6e 6f | r."...(interactive)...(when.elno |
| 13480 | 64 65 2d 2d 64 65 66 65 72 2d 74 69 6d 65 72 0a 20 20 20 20 28 63 61 6e 63 65 6c 2d 74 69 6d 65 | de--defer-timer.....(cancel-time |
| 134a0 | 72 20 65 6c 6e 6f 64 65 2d 2d 64 65 66 65 72 2d 74 69 6d 65 72 29 0a 20 20 20 20 28 73 65 74 71 | r.elnode--defer-timer).....(setq |
| 134c0 | 20 65 6c 6e 6f 64 65 2d 2d 64 65 66 65 72 2d 74 69 6d 65 72 20 6e 69 6c 29 29 29 0a 0a 3b 3b 3b | .elnode--defer-timer.nil)))..;;; |
| 134e0 | 20 42 61 73 69 63 20 72 65 73 70 6f 6e 73 65 20 6d 61 6e 67 6c 69 6e 67 0a 0a 28 64 65 66 63 75 | .Basic.response.mangling..(defcu |
| 13500 | 73 74 6f 6d 20 65 6c 6e 6f 64 65 2d 64 65 66 61 75 6c 74 2d 72 65 73 70 6f 6e 73 65 2d 74 61 62 | stom.elnode-default-response-tab |
| 13520 | 6c 65 0a 20 20 27 28 28 32 30 31 20 2e 20 22 43 72 65 61 74 65 64 22 29 0a 20 20 20 20 28 34 30 | le...'((201..."Created").....(40 |
| 13540 | 30 20 2e 20 22 42 61 64 20 72 65 71 75 65 73 74 22 29 0a 20 20 20 20 28 34 30 34 20 2e 20 22 4e | 0..."Bad.request").....(404..."N |
| 13560 | 6f 74 20 66 6f 75 6e 64 22 29 0a 20 20 20 20 28 35 30 30 20 2e 20 22 53 65 72 76 65 72 20 65 72 | ot.found").....(500..."Server.er |
| 13580 | 72 6f 72 22 29 0a 20 20 20 20 28 74 20 2e 20 22 4f 6b 22 29 29 0a 20 20 22 54 68 65 20 73 74 61 | ror").....(t..."Ok"))..."The.sta |
| 135a0 | 74 75 73 20 63 6f 64 65 20 2d 3e 20 64 65 66 61 75 6c 74 20 6d 65 73 73 61 67 65 20 6d 61 70 70 | tus.code.->.default.message.mapp |
| 135c0 | 69 6e 67 73 2e 0a 0a 57 68 65 6e 20 45 6c 6e 6f 64 65 20 73 65 6e 64 73 20 61 20 64 65 66 61 75 | ings...When.Elnode.sends.a.defau |
| 135e0 | 6c 74 20 72 65 73 70 6f 6e 73 65 20 74 68 65 73 65 20 61 72 65 20 74 68 65 20 74 65 78 74 20 75 | lt.response.these.are.the.text.u |
| 13600 | 73 65 64 2e 0a 0a 41 6c 74 65 72 20 74 68 69 73 20 69 66 20 79 6f 75 20 77 61 6e 74 20 74 6f 20 | sed...Alter.this.if.you.want.to. |
| 13620 | 63 68 61 6e 67 65 20 74 68 65 20 6d 65 73 73 61 67 65 73 20 74 68 61 74 20 45 6c 6e 6f 64 65 20 | change.the.messages.that.Elnode. |
| 13640 | 73 65 6e 64 73 0a 77 69 74 68 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 66 75 6e 63 74 69 6f | sends.with.the.following.functio |
| 13660 | 6e 73 3a 0a 0a 20 27 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 34 30 30 27 0a 20 27 65 6c 6e 6f 64 65 | ns:...'elnode-send-400'..'elnode |
| 13680 | 2d 73 65 6e 64 2d 34 30 34 27 0a 20 27 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 35 30 30 27 0a 0a 54 | -send-404'..'elnode-send-500'..T |
| 136a0 | 68 65 20 66 75 6e 63 74 69 6f 6e 20 60 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 73 74 61 74 75 73 27 | he.function.`elnode-send-status' |
| 136c0 | 20 61 6c 73 6f 20 75 73 65 73 20 74 68 65 73 65 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 65 6c 6e | .also.uses.these."...:group.'eln |
| 136e0 | 6f 64 65 0a 20 20 3a 74 79 70 65 20 27 28 61 6c 69 73 74 20 3a 6b 65 79 2d 74 79 70 65 20 69 6e | ode...:type.'(alist.:key-type.in |
| 13700 | 74 65 67 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 76 61 6c 75 65 2d 74 79 70 | teger.................:value-typ |
| 13720 | 65 20 73 74 72 69 6e 67 29 29 0a 0a 28 64 65 66 63 6f 6e 73 74 20 65 6c 6e 6f 64 65 2d 2d 64 65 | e.string))..(defconst.elnode--de |
| 13740 | 66 61 75 6c 74 2d 72 65 73 70 6f 6e 73 65 2d 67 72 6f 75 70 73 0a 20 20 27 28 28 31 20 2e 20 22 | fault-response-groups...'((1..." |
| 13760 | 49 6e 66 6f 72 6d 69 6e 67 20 79 6f 75 20 6f 66 20 73 6f 6d 65 74 68 69 6e 67 2e 22 29 0a 20 20 | Informing.you.of.something.")... |
| 13780 | 20 20 28 32 20 2e 20 22 4f 6b 2e 22 29 0a 20 20 20 20 28 33 20 2e 20 22 22 29 0a 20 20 20 20 28 | ..(2..."Ok.").....(3..."").....( |
| 137a0 | 34 20 2e 20 22 42 61 64 2e 22 29 0a 20 20 20 20 28 35 20 2e 20 22 45 72 72 6f 72 2e 22 29 29 0a | 4..."Bad.").....(5..."Error.")). |
| 137c0 | 20 20 22 52 65 73 70 6f 6e 73 65 20 63 6f 64 65 73 20 66 6f 72 20 65 72 72 6f 72 20 63 6f 64 65 | .."Response.codes.for.error.code |
| 137e0 | 20 2f 20 31 30 30 2e 0a 0a 54 68 65 73 65 20 61 72 65 20 64 65 73 69 67 6e 65 64 20 74 6f 20 62 | ./.100...These.are.designed.to.b |
| 13800 | 65 20 75 73 65 64 20 77 68 65 6e 20 61 20 73 70 65 63 69 66 69 63 20 63 6f 64 65 20 69 73 20 6e | e.used.when.a.specific.code.is.n |
| 13820 | 6f 74 0a 61 76 61 69 6c 61 62 6c 65 2e 22 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d | ot.available.")..(defun.elnode-- |
| 13840 | 66 6f 72 6d 61 74 2d 72 65 73 70 6f 6e 73 65 20 28 73 74 61 74 75 73 20 26 6f 70 74 69 6f 6e 61 | format-response.(status.&optiona |
| 13860 | 6c 20 6d 73 67 29 0a 20 20 22 46 6f 72 6d 61 74 20 74 68 65 20 53 54 41 54 55 53 20 61 6e 64 20 | l.msg)..."Format.the.STATUS.and. |
| 13880 | 6f 70 74 69 6f 6e 61 6c 6c 79 20 4d 45 53 53 41 47 45 20 61 73 20 61 6e 20 48 54 4d 4c 20 72 65 | optionally.MESSAGE.as.an.HTML.re |
| 138a0 | 74 75 72 6e 2e 22 0a 20 20 28 66 6f 72 6d 61 74 20 22 3c 68 31 3e 25 73 3c 2f 68 31 3e 25 73 5c | turn."...(format."<h1>%s</h1>%s\ |
| 138c0 | 72 5c 6e 22 0a 20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 28 6f 72 20 28 61 73 73 6f 63 20 73 | r\n"...........(cdr.(or.(assoc.s |
| 138e0 | 74 61 74 75 73 20 65 6c 6e 6f 64 65 2d 64 65 66 61 75 6c 74 2d 72 65 73 70 6f 6e 73 65 2d 74 61 | tatus.elnode-default-response-ta |
| 13900 | 62 6c 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 73 73 6f 63 20 28 | ble)....................(assoc.( |
| 13920 | 2f 20 73 74 61 74 75 73 20 31 30 30 29 20 65 6c 6e 6f 64 65 2d 2d 64 65 66 61 75 6c 74 2d 72 65 | /.status.100).elnode--default-re |
| 13940 | 73 70 6f 6e 73 65 2d 67 72 6f 75 70 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | sponse-groups).................. |
| 13960 | 20 20 28 61 73 73 6f 63 20 74 20 65 6c 6e 6f 64 65 2d 64 65 66 61 75 6c 74 2d 72 65 73 70 6f 6e | ..(assoc.t.elnode-default-respon |
| 13980 | 73 65 2d 74 61 62 6c 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 69 66 20 6d 73 67 20 28 66 | se-table)))...........(if.msg.(f |
| 139a0 | 6f 72 6d 61 74 20 22 3c 70 3e 25 73 3c 2f 70 3e 22 20 6d 73 67 29 20 22 22 29 29 29 0a 0a 0a 3b | ormat."<p>%s</p>".msg)."")))...; |
| 139c0 | 3b 20 4d 61 69 6e 20 63 6f 6e 74 72 6f 6c 20 66 75 6e 63 74 69 6f 6e 73 0a 0a 28 64 65 66 75 6e | ;.Main.control.functions..(defun |
| 139e0 | 20 65 6c 6e 6f 64 65 2d 2d 73 65 6e 74 69 6e 65 6c 20 28 70 72 6f 63 65 73 73 20 73 74 61 74 75 | .elnode--sentinel.(process.statu |
| 13a00 | 73 29 0a 20 20 22 53 65 6e 74 69 6e 65 6c 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 74 68 65 20 | s)..."Sentinel.function.for.the. |
| 13a20 | 6d 61 69 6e 20 73 65 72 76 65 72 20 61 6e 64 20 66 6f 72 20 74 68 65 20 63 6c 69 65 6e 74 20 73 | main.server.and.for.the.client.s |
| 13a40 | 6f 63 6b 65 74 73 2e 22 0a 20 20 28 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 0a 20 20 20 22 65 6c 6e | ockets."...(elnode-error...."eln |
| 13a60 | 6f 64 65 2d 2d 73 65 6e 74 69 6e 65 6c 20 27 25 73 27 20 66 6f 72 20 70 72 6f 63 65 73 73 20 20 | ode--sentinel.'%s'.for.process.. |
| 13a80 | 25 73 20 77 69 74 68 20 62 75 66 66 65 72 20 25 73 22 0a 20 20 20 28 65 6c 6e 6f 64 65 2d 74 72 | %s.with.buffer.%s"....(elnode-tr |
| 13aa0 | 75 6e 63 20 73 74 61 74 75 73 29 0a 20 20 20 28 70 72 6f 63 65 73 73 2d 6e 61 6d 65 20 70 72 6f | unc.status)....(process-name.pro |
| 13ac0 | 63 65 73 73 29 0a 20 20 20 28 70 72 6f 63 65 73 73 2d 62 75 66 66 65 72 20 70 72 6f 63 65 73 73 | cess)....(process-buffer.process |
| 13ae0 | 29 29 0a 20 20 28 63 6f 6e 64 0a 20 20 20 3b 3b 20 53 65 72 76 65 72 20 73 74 61 74 75 73 0a 20 | ))...(cond....;;.Server.status.. |
| 13b00 | 20 20 28 28 61 6e 64 0a 20 20 20 20 20 28 61 73 73 6f 63 20 28 70 72 6f 63 65 73 73 2d 63 6f 6e | ..((and......(assoc.(process-con |
| 13b20 | 74 61 63 74 20 70 72 6f 63 65 73 73 20 3a 73 65 72 76 69 63 65 29 20 65 6c 6e 6f 64 65 2d 73 65 | tact.process.:service).elnode-se |
| 13b40 | 72 76 65 72 2d 73 6f 63 6b 65 74 29 0a 20 20 20 20 20 28 65 71 75 61 6c 20 73 74 61 74 75 73 20 | rver-socket)......(equal.status. |
| 13b60 | 22 64 65 6c 65 74 65 64 5c 6e 22 29 29 0a 20 20 20 20 28 69 66 20 28 65 71 75 61 6c 0a 09 20 28 | "deleted\n")).....(if.(equal...( |
| 13b80 | 70 72 6f 63 65 73 73 2d 62 75 66 66 65 72 0a 09 20 20 3b 3b 20 47 65 74 20 74 68 65 20 73 65 72 | process-buffer....;;.Get.the.ser |
| 13ba0 | 76 65 72 20 70 72 6f 63 65 73 73 0a 09 20 20 28 63 64 72 20 28 61 73 73 6f 63 0a 09 09 28 70 72 | ver.process....(cdr.(assoc...(pr |
| 13bc0 | 6f 63 65 73 73 2d 63 6f 6e 74 61 63 74 20 70 72 6f 63 65 73 73 20 3a 73 65 72 76 69 63 65 29 0a | ocess-contact.process.:service). |
| 13be0 | 09 09 65 6c 6e 6f 64 65 2d 73 65 72 76 65 72 2d 73 6f 63 6b 65 74 29 29 29 0a 09 20 28 70 72 6f | ..elnode-server-socket)))...(pro |
| 13c00 | 63 65 73 73 2d 62 75 66 66 65 72 20 70 72 6f 63 65 73 73 29 29 0a 09 28 6d 65 73 73 61 67 65 20 | cess-buffer.process))..(message. |
| 13c20 | 22 66 6f 75 6e 64 20 74 68 65 20 73 65 72 76 65 72 20 70 72 6f 63 65 73 73 20 2d 20 4e 4f 54 20 | "found.the.server.process.-.NOT. |
| 13c40 | 64 65 6c 65 74 69 6e 67 22 29 0a 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 61 68 61 21 20 | deleting").......(message."aha!. |
| 13c60 | 64 65 6c 65 74 69 6e 67 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 72 6f 63 65 73 73 22 | deleting.the.connection.process" |
| 13c80 | 29 0a 20 20 20 20 20 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 20 28 70 72 6f 63 65 73 73 2d 62 75 | ).......(kill-buffer.(process-bu |
| 13ca0 | 66 66 65 72 20 70 72 6f 63 65 73 73 29 29 29 0a 20 20 20 20 28 65 6c 6e 6f 64 65 2d 65 72 72 6f | ffer.process))).....(elnode-erro |
| 13cc0 | 72 20 22 45 6c 6e 6f 64 65 20 73 65 72 76 65 72 20 73 74 6f 70 70 65 64 22 29 29 0a 0a 20 20 20 | r."Elnode.server.stopped"))..... |
| 13ce0 | 3b 3b 20 43 6c 69 65 6e 74 20 73 6f 63 6b 65 74 20 73 74 61 74 75 73 0a 20 20 20 28 28 65 71 75 | ;;.Client.socket.status....((equ |
| 13d00 | 61 6c 20 73 74 61 74 75 73 20 22 63 6f 6e 6e 65 63 74 69 6f 6e 20 62 72 6f 6b 65 6e 20 62 79 20 | al.status."connection.broken.by. |
| 13d20 | 72 65 6d 6f 74 65 20 70 65 65 72 5c 6e 22 29 0a 20 20 20 20 28 77 68 65 6e 20 28 70 72 6f 63 65 | remote.peer\n").....(when.(proce |
| 13d40 | 73 73 2d 62 75 66 66 65 72 20 70 72 6f 63 65 73 73 29 0a 20 20 20 20 20 20 28 6b 69 6c 6c 2d 62 | ss-buffer.process).......(kill-b |
| 13d60 | 75 66 66 65 72 20 28 70 72 6f 63 65 73 73 2d 62 75 66 66 65 72 20 70 72 6f 63 65 73 73 29 29 0a | uffer.(process-buffer.process)). |
| 13d80 | 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 20 22 45 6c 6e 6f 64 65 20 63 6f 6e 6e | ......(elnode-error."Elnode.conn |
| 13da0 | 65 63 74 69 6f 6e 20 64 72 6f 70 70 65 64 20 25 73 22 20 70 72 6f 63 65 73 73 29 29 29 0a 0a 20 | ection.dropped.%s".process)))... |
| 13dc0 | 20 20 28 28 65 71 75 61 6c 20 73 74 61 74 75 73 20 22 6f 70 65 6e 5c 6e 22 29 20 3b 3b 20 74 68 | ..((equal.status."open\n").;;.th |
| 13de0 | 69 73 20 73 61 79 73 20 22 6f 70 65 6e 20 66 72 6f 6d 20 2e 2e 2e 22 0a 20 20 20 20 28 65 6c 6e | is.says."open.from....".....(eln |
| 13e00 | 6f 64 65 2d 65 72 72 6f 72 20 22 45 6c 6e 6f 64 65 20 6f 70 65 6e 65 64 20 6e 65 77 20 63 6f 6e | ode-error."Elnode.opened.new.con |
| 13e20 | 6e 65 63 74 69 6f 6e 22 29 29 0a 0a 20 20 20 3b 3b 20 44 65 66 61 75 6c 74 0a 20 20 20 28 74 0a | nection")).....;;.Default....(t. |
| 13e40 | 20 20 20 20 28 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 20 22 45 6c 6e 6f 64 65 20 73 74 61 74 75 73 | ....(elnode-error."Elnode.status |
| 13e60 | 3a 20 25 73 20 25 73 22 20 70 72 6f 63 65 73 73 20 28 65 6c 6e 6f 64 65 2d 74 72 69 6d 20 73 74 | :.%s.%s".process.(elnode-trim.st |
| 13e80 | 61 74 75 73 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 70 72 6f 63 65 73 | atus)))))..(defun.elnode--proces |
| 13ea0 | 73 2d 73 65 6e 64 2d 73 74 72 69 6e 67 20 28 70 72 6f 63 20 64 61 74 61 29 0a 20 20 22 45 6c 6e | s-send-string.(proc.data)..."Eln |
| 13ec0 | 6f 64 65 20 61 64 61 70 74 65 72 20 66 6f 72 20 60 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 73 74 | ode.adapter.for.`process-send-st |
| 13ee0 | 72 69 6e 67 27 2e 0a 0a 53 65 6e 64 73 20 44 41 54 41 20 74 6f 20 74 68 65 20 48 54 54 50 20 63 | ring'...Sends.DATA.to.the.HTTP.c |
| 13f00 | 6f 6e 6e 65 63 74 69 6f 6e 20 50 52 4f 43 20 28 77 68 69 63 68 20 69 73 20 61 6e 20 48 54 54 50 | onnection.PROC.(which.is.an.HTTP |
| 13f20 | 0a 63 6f 6e 6e 65 63 74 69 6f 6e 29 20 75 73 69 6e 67 20 60 65 6c 6e 6f 64 65 2d 68 74 74 70 2d | .connection).using.`elnode-http- |
| 13f40 | 73 65 6e 64 2d 73 74 72 69 6e 67 27 2e 0a 0a 54 68 69 73 20 69 73 20 75 73 65 64 20 62 79 20 60 | send-string'...This.is.used.by.` |
| 13f60 | 65 6c 6e 6f 64 65 2d 77 6f 72 6b 65 72 2d 65 6c 69 73 70 27 20 74 6f 20 69 6d 70 6c 65 6d 65 6e | elnode-worker-elisp'.to.implemen |
| 13f80 | 74 20 61 20 70 72 6f 74 6f 63 6f 6c 20 66 6f 72 0a 73 65 6e 64 69 6e 67 20 64 61 74 61 20 74 68 | t.a.protocol.for.sending.data.th |
| 13fa0 | 72 6f 75 67 68 20 61 6e 20 65 6c 6e 6f 64 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 72 61 6e 73 | rough.an.elnode.connection.trans |
| 13fc0 | 70 61 72 65 6e 74 6c 79 2e 22 0a 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 65 6e 64 2d 73 | parently."...(elnode-http-send-s |
| 13fe0 | 74 72 69 6e 67 20 70 72 6f 63 20 64 61 74 61 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 | tring.proc.data))..(defun.elnode |
| 14000 | 2d 2d 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 65 6f 66 20 28 70 72 6f 63 29 0a 20 20 22 45 6c 6e | --process-send-eof.(proc)..."Eln |
| 14020 | 6f 64 65 20 61 64 61 70 74 65 72 20 66 6f 72 20 60 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 65 6f | ode.adapter.for.`process-send-eo |
| 14040 | 66 27 2e 0a 0a 53 65 6e 64 73 20 45 4f 46 20 74 6f 20 74 68 65 20 48 54 54 50 20 63 6f 6e 6e 65 | f'...Sends.EOF.to.the.HTTP.conne |
| 14060 | 63 74 69 6f 6e 20 50 52 4f 43 20 28 77 68 69 63 68 20 69 73 20 61 6e 20 48 54 54 50 0a 63 6f 6e | ction.PROC.(which.is.an.HTTP.con |
| 14080 | 6e 65 63 74 69 6f 6e 29 20 69 6e 20 61 20 77 61 79 20 74 68 61 74 20 63 68 75 6e 6b 65 64 20 65 | nection).in.a.way.that.chunked.e |
| 140a0 | 6e 63 6f 64 69 6e 67 20 69 73 20 65 6e 64 65 64 20 70 72 6f 70 65 72 6c 79 2e 0a 0a 54 68 69 73 | ncoding.is.ended.properly...This |
| 140c0 | 20 69 73 20 75 73 65 64 20 62 79 20 60 65 6c 6e 6f 64 65 2d 77 6f 72 6b 65 72 2d 65 6c 69 73 70 | .is.used.by.`elnode-worker-elisp |
| 140e0 | 27 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 61 20 70 72 6f 74 6f 63 6f 6c 20 66 6f 72 0a 73 65 | '.to.implement.a.protocol.for.se |
| 14100 | 6e 64 69 6e 67 20 64 61 74 61 20 74 68 72 6f 75 67 68 20 61 6e 20 65 6c 6e 6f 64 65 20 63 6f 6e | nding.data.through.an.elnode.con |
| 14120 | 6e 65 63 74 69 6f 6e 20 74 72 61 6e 73 70 61 72 65 6e 74 6c 79 2e 22 0a 20 20 28 65 6c 6e 6f 64 | nection.transparently."...(elnod |
| 14140 | 65 2d 65 72 72 6f 72 20 22 65 6c 6e 6f 64 65 2d 2d 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 65 6f | e-error."elnode--process-send-eo |
| 14160 | 66 20 6f 6e 20 25 73 22 20 70 72 6f 63 29 0a 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 65 | f.on.%s".proc)...(elnode-http-se |
| 14180 | 6e 64 2d 73 74 72 69 6e 67 20 70 72 6f 63 20 22 22 29 0a 20 20 3b 3b 28 70 72 6f 63 65 73 73 2d | nd-string.proc."")...;;(process- |
| 141a0 | 73 65 6e 64 2d 73 74 72 69 6e 67 20 70 72 6f 63 20 22 5c 72 5c 6e 22 29 0a 20 20 28 65 6c 6e 6f | send-string.proc."\r\n")...(elno |
| 141c0 | 64 65 2d 2d 68 74 74 70 2d 65 6e 64 20 70 72 6f 63 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f | de--http-end.proc))..(defun.elno |
| 141e0 | 64 65 2d 2d 68 74 74 70 2d 70 61 72 73 65 2d 68 65 61 64 65 72 20 28 62 75 66 66 65 72 20 73 74 | de--http-parse-header.(buffer.st |
| 14200 | 61 72 74 20 26 6f 70 74 69 6f 6e 61 6c 20 6e 6f 6e 2d 68 65 61 64 65 72 29 0a 20 20 22 50 61 72 | art.&optional.non-header)..."Par |
| 14220 | 73 65 20 61 20 68 65 61 64 65 72 20 66 72 6f 6d 20 74 68 65 20 42 55 46 46 45 52 20 61 74 20 70 | se.a.header.from.the.BUFFER.at.p |
| 14240 | 6f 69 6e 74 20 53 54 41 52 54 2e 0a 0a 54 68 65 20 69 6e 69 74 69 61 6c 20 68 65 61 64 65 72 20 | oint.START...The.initial.header. |
| 14260 | 6d 61 79 20 62 65 20 70 61 72 73 65 64 20 77 69 74 68 20 74 68 69 73 20 6f 72 20 69 66 20 4e 4f | may.be.parsed.with.this.or.if.NO |
| 14280 | 4e 2d 48 45 41 44 45 52 20 69 73 0a 73 65 6e 74 20 74 68 65 6e 20 61 6e 6f 74 68 65 72 20 68 65 | N-HEADER.is.sent.then.another.he |
| 142a0 | 61 64 65 72 2c 20 73 75 63 68 20 61 73 20 61 20 6d 75 6c 74 69 70 61 72 74 20 68 65 61 64 65 72 | ader,.such.as.a.multipart.header |
| 142c0 | 2c 20 6d 61 79 20 62 65 20 72 65 61 64 2e 0a 0a 49 66 20 74 68 65 20 63 6f 6d 70 6c 65 74 65 20 | ,.may.be.read...If.the.complete. |
| 142e0 | 68 65 61 64 65 72 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20 72 65 61 64 20 74 68 65 6e 20 77 65 | header.has.not.been.read.then.we |
| 14300 | 20 74 68 72 6f 77 20 74 6f 0a 60 65 6c 6e 6f 64 65 2d 70 61 72 73 65 2d 68 74 74 70 27 20 77 69 | .throw.to.`elnode-parse-http'.wi |
| 14320 | 74 68 20 65 69 74 68 65 72 20 60 68 65 61 64 65 72 27 20 6f 72 20 60 6e 6f 6e 2d 68 65 61 64 65 | th.either.`header'.or.`non-heade |
| 14340 | 72 27 2e 0a 0a 57 65 20 72 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f 66 20 74 68 65 20 6c 65 61 | r'...We.return.a.list.of.the.lea |
| 14360 | 64 65 72 2c 20 77 68 69 63 68 20 69 73 20 74 68 65 20 66 69 72 73 74 20 6c 69 6e 65 20 6f 66 20 | der,.which.is.the.first.line.of. |
| 14380 | 74 68 65 0a 68 65 61 64 65 72 20 28 77 68 69 63 68 20 69 73 20 6e 6f 74 20 74 68 65 20 68 65 61 | the.header.(which.is.not.the.hea |
| 143a0 | 64 65 72 29 20 66 6f 6c 6c 6f 77 65 64 20 62 79 20 61 6e 20 61 6c 69 73 74 20 6f 66 0a 68 65 61 | der).followed.by.an.alist.of.hea |
| 143c0 | 64 65 72 73 2e 22 0a 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 62 75 | ders."...(with-current-buffer.bu |
| 143e0 | 66 66 65 72 0a 20 20 20 20 28 6c 65 74 20 28 28 68 64 72 65 6e 64 20 28 72 65 2d 73 65 61 72 63 | ffer.....(let.((hdrend.(re-searc |
| 14400 | 68 2d 66 6f 72 77 61 72 64 20 22 5c 72 5c 6e 5c 72 5c 6e 22 20 6e 69 6c 20 27 74 29 29 29 0a 20 | h-forward."\r\n\r\n".nil.'t))).. |
| 14420 | 20 20 20 20 20 28 77 68 65 6e 20 28 6e 6f 74 20 68 64 72 65 6e 64 29 0a 20 20 20 20 20 20 20 20 | .....(when.(not.hdrend)......... |
| 14440 | 28 74 68 72 6f 77 20 27 65 6c 6e 6f 64 65 2d 70 61 72 73 65 2d 68 74 74 70 20 28 6f 72 20 28 61 | (throw.'elnode-parse-http.(or.(a |
| 14460 | 6e 64 20 6e 6f 6e 2d 68 65 61 64 65 72 20 27 6e 6f 6e 2d 68 65 61 64 65 72 29 20 27 68 65 61 64 | nd.non-header.'non-header).'head |
| 14480 | 65 72 29 29 29 0a 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 6c 69 6e 65 73 0a 20 20 20 20 20 20 | er))).......(let*.((lines....... |
| 144a0 | 20 20 20 20 20 20 20 20 28 73 70 6c 69 74 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 | ........(split-string........... |
| 144c0 | 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 73 74 61 72 74 20 68 64 72 | .....(buffer-substring.start.hdr |
| 144e0 | 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 72 5c 6e 22 0a 20 20 20 20 20 | end)................"\r\n"...... |
| 14500 | 20 20 20 20 20 20 20 20 20 20 27 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 61 | ..........'t))..............(sta |
| 14520 | 74 75 73 20 28 63 61 72 20 6c 69 6e 65 73 29 29 20 3b 3b 20 74 68 65 20 66 69 72 73 74 20 6c 69 | tus.(car.lines)).;;.the.first.li |
| 14540 | 6e 65 20 69 73 20 74 68 65 20 73 74 61 74 75 73 20 6c 69 6e 65 0a 20 20 20 20 20 20 20 20 20 20 | ne.is.the.status.line........... |
| 14560 | 20 20 20 28 68 65 61 64 65 72 20 28 63 64 72 20 6c 69 6e 65 73 29 29 20 3b 3b 20 74 68 65 20 72 | ...(header.(cdr.lines)).;;.the.r |
| 14580 | 65 73 74 20 6f 66 20 74 68 65 20 6c 69 6e 65 73 20 61 72 65 20 74 68 65 20 68 65 61 64 65 72 0a | est.of.the.lines.are.the.header. |
| 145a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 65 61 64 65 72 2d 61 6c 69 73 74 2d 73 74 72 69 6e | .............(header-alist-strin |
| 145c0 | 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 61 72 0a 20 20 20 20 20 20 20 | gs...............(mapcar........ |
| 145e0 | 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 68 64 72 6c 69 6e 65 29 0a 20 20 20 20 20 20 | ........(lambda.(hdrline)....... |
| 14600 | 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 0a 20 | ...........(when.(string-match.. |
| 14620 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 5c 28 5b 41 2d 5a 61 | ......................."\\([A-Za |
| 14640 | 2d 7a 30 2d 39 5f 2d 5d 2b 5c 5c 29 3a 5b 20 5d 2a 5c 5c 28 2e 2a 5c 5c 29 22 0a 20 20 20 20 20 | -z0-9_-]+\\):[.]*\\(.*\\)"...... |
| 14660 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 64 72 6c 69 6e 65 29 0a 20 20 20 20 | ...................hdrline)..... |
| 14680 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 | ...............(cons............ |
| 146a0 | 20 20 20 20 20 20 20 20 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 68 64 72 6c 69 6e 65 | .........(match-string.1.hdrline |
| 146c0 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 74 63 68 2d 73 74 72 | ).....................(match-str |
| 146e0 | 69 6e 67 20 32 20 68 64 72 6c 69 6e 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ing.2.hdrline))))............... |
| 14700 | 20 68 65 61 64 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 73 74 61 74 75 73 20 | .header))).........(list.status. |
| 14720 | 68 65 61 64 65 72 2d 61 6c 69 73 74 2d 73 74 72 69 6e 67 73 29 29 29 29 29 0a 0a 28 64 65 66 75 | header-alist-strings)))))..(defu |
| 14740 | 6e 20 65 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 70 61 72 73 65 20 28 68 74 74 70 63 6f 6e 29 0a 20 | n.elnode--http-parse.(httpcon).. |
| 14760 | 20 22 50 61 72 73 65 20 74 68 65 20 48 54 54 50 20 68 65 61 64 65 72 20 66 6f 72 20 74 68 65 20 | ."Parse.the.HTTP.header.for.the. |
| 14780 | 70 72 6f 63 65 73 73 2e 0a 0a 49 66 20 74 68 65 20 72 65 71 75 65 73 74 20 69 73 20 6e 6f 74 20 | process...If.the.request.is.not. |
| 147a0 | 66 75 6c 6c 79 20 63 6f 6d 70 6c 65 74 65 20 28 69 66 20 74 68 65 20 68 65 61 64 65 72 20 68 61 | fully.complete.(if.the.header.ha |
| 147c0 | 73 20 6e 6f 74 0a 61 72 72 69 76 65 64 20 79 65 74 20 6f 72 20 77 65 20 64 6f 6e 27 74 20 68 61 | s.not.arrived.yet.or.we.don't.ha |
| 147e0 | 76 65 20 61 6c 6c 20 74 68 65 20 63 6f 6e 74 65 6e 74 2d 6c 65 6e 67 74 68 20 79 65 74 20 66 6f | ve.all.the.content-length.yet.fo |
| 14800 | 72 0a 65 78 61 6d 70 6c 65 29 20 74 68 69 73 20 63 61 6e 20 74 68 72 6f 77 20 60 65 6c 6e 6f 64 | r.example).this.can.throw.`elnod |
| 14820 | 65 2d 70 61 72 73 65 2d 68 74 74 70 27 2e 20 20 54 68 65 20 74 68 69 6e 67 20 62 65 69 6e 67 0a | e-parse-http'...The.thing.being. |
| 14840 | 77 61 69 74 65 64 20 66 6f 72 20 69 73 20 69 6e 64 69 63 61 74 65 64 2e 0a 0a 49 6d 70 6f 72 74 | waited.for.is.indicated...Import |
| 14860 | 61 6e 74 20 73 69 64 65 20 65 66 66 65 63 74 73 20 6f 66 20 74 68 69 73 20 66 75 6e 63 74 69 6f | ant.side.effects.of.this.functio |
| 14880 | 6e 20 61 72 65 20 74 6f 20 61 64 64 20 63 65 72 74 61 69 6e 0a 70 72 6f 63 65 73 73 20 70 72 6f | n.are.to.add.certain.process.pro |
| 148a0 | 70 65 72 74 69 65 73 20 74 6f 20 74 68 65 20 48 54 54 50 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 20 | perties.to.the.HTTP.connection.. |
| 148c0 | 20 54 68 65 73 65 20 61 72 65 20 74 68 65 20 72 65 73 75 6c 74 0a 6f 66 20 73 75 63 63 65 73 73 | .These.are.the.result.of.success |
| 148e0 | 66 75 6c 20 70 61 72 73 69 6e 67 2e 22 0a 20 20 3b 3b 20 46 49 58 4d 45 20 2d 20 77 65 20 64 6f | ful.parsing."...;;.FIXME.-.we.do |
| 14900 | 6e 27 74 20 6e 65 65 64 20 74 6f 20 64 6f 20 74 68 69 73 20 2d 20 77 65 20 73 68 6f 75 6c 64 20 | n't.need.to.do.this.-.we.should. |
| 14920 | 63 68 65 63 6b 20 66 6f 72 0a 20 20 3b 3b 20 68 65 61 64 65 72 2d 70 61 72 73 65 64 20 61 6e 64 | check.for...;;.header-parsed.and |
| 14940 | 20 61 76 6f 69 64 20 69 74 20 77 65 20 77 65 20 63 61 6e 0a 20 20 28 77 69 74 68 2d 63 75 72 72 | .avoid.it.we.we.can...(with-curr |
| 14960 | 65 6e 74 2d 62 75 66 66 65 72 20 28 70 72 6f 63 65 73 73 2d 62 75 66 66 65 72 20 68 74 74 70 63 | ent-buffer.(process-buffer.httpc |
| 14980 | 6f 6e 29 0a 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 28 67 | on).....(save-excursion.......(g |
| 149a0 | 6f 74 6f 2d 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 28 64 65 73 | oto-char.(point-min)).......(des |
| 149c0 | 74 72 75 63 74 75 72 69 6e 67 2d 62 69 6e 64 20 28 6c 65 61 64 65 72 20 61 6c 69 73 74 2d 73 74 | tructuring-bind.(leader.alist-st |
| 149e0 | 72 69 6e 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 70 | rings)...........(elnode--http-p |
| 14a00 | 61 72 73 65 2d 68 65 61 64 65 72 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 20 28 70 6f | arse-header.(current-buffer).(po |
| 14a20 | 69 6e 74 2d 6d 69 6e 29 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 68 64 72 65 6e 64 | int-min)).........(let*.((hdrend |
| 14a40 | 20 28 70 6f 69 6e 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6c 69 73 74 2d | .(point))................(alist- |
| 14a60 | 73 79 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6b 76 61 6c 69 73 74 2d 6b 65 | syms.................(kvalist-ke |
| 14a80 | 79 73 2d 3e 73 79 6d 62 6f 6c 73 20 61 6c 69 73 74 2d 73 74 72 69 6e 67 73 20 3a 66 69 72 73 74 | ys->symbols.alist-strings.:first |
| 14aa0 | 2d 66 6e 20 27 64 6f 77 6e 63 61 73 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 | -fn.'downcase))................( |
| 14ac0 | 63 6f 6e 74 65 6e 74 2d 6c 65 6e 20 28 61 73 73 71 20 27 63 6f 6e 74 65 6e 74 2d 6c 65 6e 67 74 | content-len.(assq.'content-lengt |
| 14ae0 | 68 20 61 6c 69 73 74 2d 73 79 6d 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 43 68 65 | h.alist-syms)))...........;;.Che |
| 14b00 | 63 6b 20 74 68 65 20 63 6f 6e 74 65 6e 74 20 69 66 20 77 65 20 68 61 76 65 20 69 74 2e 0a 20 20 | ck.the.content.if.we.have.it.... |
| 14b20 | 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 63 6f 6e 74 65 6e 74 2d 6c 65 6e 0a 20 20 20 20 20 20 | ........(when.content-len....... |
| 14b40 | 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 61 76 61 69 6c 61 62 6c 65 2d 63 6f 6e 74 65 6e 74 20 | ......(let*.((available-content. |
| 14b60 | 28 2d 20 28 70 6f 69 6e 74 2d 6d 61 78 29 20 68 64 72 65 6e 64 29 29 29 0a 20 20 20 20 20 20 20 | (-.(point-max).hdrend)))........ |
| 14b80 | 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 3e 20 28 73 74 72 69 6e 67 2d 74 6f 2d 6e 75 6d 62 65 | .......(when.(>.(string-to-numbe |
| 14ba0 | 72 20 28 63 64 72 20 63 6f 6e 74 65 6e 74 2d 6c 65 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 | r.(cdr.content-len))............ |
| 14bc0 | 20 20 20 20 20 20 20 20 20 20 20 20 61 76 61 69 6c 61 62 6c 65 2d 63 6f 6e 74 65 6e 74 29 0a 20 | ............available-content).. |
| 14be0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 68 72 6f 77 20 27 65 6c 6e 6f 64 65 2d 70 61 | ...............(throw.'elnode-pa |
| 14c00 | 72 73 65 2d 68 74 74 70 20 27 63 6f 6e 74 65 6e 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 | rse-http.'content))))........... |
| 14c20 | 28 70 72 6f 63 65 73 73 2d 70 75 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 68 65 61 | (process-put.httpcon.:elnode-hea |
| 14c40 | 64 65 72 2d 65 6e 64 20 68 64 72 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 | der-end.hdrend)...........(proce |
| 14c60 | 73 73 2d 70 75 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 74 61 74 | ss-put.httpcon.:elnode-http-stat |
| 14c80 | 75 73 20 6c 65 61 64 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 70 75 | us.leader)...........(process-pu |
| 14ca0 | 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 68 65 61 64 65 72 2d 73 79 | t.httpcon.:elnode-http-header-sy |
| 14cc0 | 6d 73 20 61 6c 69 73 74 2d 73 79 6d 73 29 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 | ms.alist-syms)...........(proces |
| 14ce0 | 73 2d 70 75 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 68 65 61 64 65 | s-put.httpcon.:elnode-http-heade |
| 14d00 | 72 20 61 6c 69 73 74 2d 73 74 72 69 6e 67 73 29 29 29 29 29 0a 20 20 3b 3b 20 52 65 74 75 72 6e | r.alist-strings)))))...;;.Return |
| 14d20 | 20 61 20 73 79 6d 62 6f 6c 20 74 6f 20 69 6e 64 69 63 61 74 65 20 64 6f 6e 65 2d 6e 65 73 73 0a | .a.symbol.to.indicate.done-ness. |
| 14d40 | 20 20 27 64 6f 6e 65 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 6d 61 | ..'done)..(defun.elnode--http-ma |
| 14d60 | 6b 65 2d 68 64 72 20 28 6d 65 74 68 6f 64 20 72 65 73 6f 75 72 63 65 20 26 72 65 73 74 20 68 65 | ke-hdr.(method.resource.&rest.he |
| 14d80 | 61 64 65 72 73 29 0a 20 20 20 20 22 43 6f 6e 76 65 6e 69 65 6e 63 65 20 66 75 6e 63 74 69 6f 6e | aders)....."Convenience.function |
| 14da0 | 20 74 6f 20 6d 61 6b 65 20 61 6e 20 48 54 54 50 20 68 65 61 64 65 72 2e 0a 0a 4d 45 54 48 4f 44 | .to.make.an.HTTP.header...METHOD |
| 14dc0 | 20 69 73 20 74 68 65 20 6d 65 74 68 6f 64 20 74 6f 20 75 73 65 2e 20 20 52 45 53 4f 55 52 43 45 | .is.the.method.to.use...RESOURCE |
| 14de0 | 20 69 73 20 74 68 65 20 70 61 74 68 20 74 6f 20 75 73 65 2e 0a 48 45 41 44 45 52 53 20 73 68 6f | .is.the.path.to.use..HEADERS.sho |
| 14e00 | 75 6c 64 20 62 65 20 70 61 69 72 73 20 6f 66 20 73 74 72 69 6e 67 73 20 69 6e 64 69 63 61 74 69 | uld.be.pairs.of.strings.indicati |
| 14e20 | 6e 67 20 74 68 65 20 68 65 61 64 65 72 20 76 61 6c 75 65 73 3a 0a 0a 20 28 65 6c 6e 6f 64 65 2d | ng.the.header.values:...(elnode- |
| 14e40 | 2d 68 74 74 70 2d 6d 61 6b 65 2d 68 64 72 20 27 67 65 74 20 5c 22 2f 5c 22 20 27 28 68 6f 73 74 | -http-make-hdr.'get.\"/\".'(host |
| 14e60 | 20 2e 20 5c 22 6c 6f 63 61 6c 68 6f 73 74 5c 22 29 29 0a 0a 57 68 65 72 65 20 73 79 6d 62 6f 6c | ...\"localhost\"))..Where.symbol |
| 14e80 | 73 20 61 72 65 20 65 6e 63 6f 75 6e 74 65 72 65 64 20 74 68 65 79 20 61 72 65 20 74 75 72 6e 65 | s.are.encountered.they.are.turne |
| 14ea0 | 64 20 69 6e 74 6f 20 73 74 72 69 6e 67 73 2e 0a 49 6e 73 69 64 65 20 68 65 61 64 65 72 73 20 74 | d.into.strings..Inside.headers.t |
| 14ec0 | 68 65 79 20 61 72 65 20 63 61 70 69 74 61 6c 69 7a 65 64 2e 0a 0a 41 20 68 65 61 64 65 72 20 70 | hey.are.capitalized...A.header.p |
| 14ee0 | 61 69 72 20 77 69 74 68 20 74 68 65 20 6b 65 79 20 60 62 6f 64 79 27 20 63 61 6e 20 62 65 20 75 | air.with.the.key.`body'.can.be.u |
| 14f00 | 73 65 64 20 74 6f 20 6d 61 6b 65 20 61 20 63 6f 6e 74 65 6e 74 20 62 6f 64 79 3a 0a 0a 20 28 65 | sed.to.make.a.content.body:...(e |
| 14f20 | 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 6d 61 6b 65 2d 68 64 72 20 27 67 65 74 20 5c 22 2f 5c 22 20 | lnode--http-make-hdr.'get.\"/\". |
| 14f40 | 27 28 62 6f 64 79 20 2e 20 5c 22 73 6f 6d 65 20 74 65 78 74 5c 22 29 29 0a 20 3d 3e 0a 20 47 45 | '(body...\"some.text\"))..=>..GE |
| 14f60 | 54 20 2f 20 48 54 54 50 2f 31 2e 31 0a 0a 20 73 6f 6d 65 20 74 65 78 74 0a 0a 4e 6f 20 6f 74 68 | T./.HTTP/1.1...some.text..No.oth |
| 14f80 | 65 72 20 74 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 73 20 61 72 65 20 64 6f 6e 65 20 6f 6e 20 74 | er.transformations.are.done.on.t |
| 14fa0 | 68 65 20 62 6f 64 79 2c 20 6e 6f 20 63 6f 6e 74 65 6e 74 20 74 79 70 65 0a 61 64 64 65 64 20 6f | he.body,.no.content.type.added.o |
| 14fc0 | 72 20 63 6f 6e 74 65 6e 74 20 6c 65 6e 67 74 68 20 63 6f 6d 70 75 74 65 64 2e 22 0a 20 20 20 20 | r.content.length.computed."..... |
| 14fe0 | 28 6c 65 74 20 28 62 6f 64 79 29 0a 20 20 20 20 20 20 28 6e 6f 66 6c 65 74 20 28 28 68 65 61 64 | (let.(body).......(noflet.((head |
| 15000 | 65 72 2d 6e 61 6d 65 20 28 68 64 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 | er-name.(hdr)................(if |
| 15020 | 20 28 73 79 6d 62 6f 6c 70 20 28 63 61 72 20 68 64 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 | .(symbolp.(car.hdr))............ |
| 15040 | 20 20 20 20 20 20 20 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 28 63 61 72 20 68 64 72 29 29 0a | ........(symbol-name.(car.hdr)). |
| 15060 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 72 20 68 64 72 29 29 29 29 0a | ...................(car.hdr)))). |
| 15080 | 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 0a 20 20 20 20 20 20 20 20 20 22 25 73 20 25 73 20 | ........(format.........."%s.%s. |
| 150a0 | 48 54 54 50 2f 31 2e 31 5c 72 5c 6e 25 73 5c 72 5c 6e 25 73 22 0a 20 20 20 20 20 20 20 20 20 28 | HTTP/1.1\r\n%s\r\n%s"..........( |
| 150c0 | 75 70 63 61 73 65 20 28 69 66 20 28 73 79 6d 62 6f 6c 70 20 6d 65 74 68 6f 64 29 20 28 73 79 6d | upcase.(if.(symbolp.method).(sym |
| 150e0 | 62 6f 6c 2d 6e 61 6d 65 20 6d 65 74 68 6f 64 29 20 6d 65 74 68 6f 64 29 29 0a 20 20 20 20 20 20 | bol-name.method).method))....... |
| 15100 | 20 20 20 72 65 73 6f 75 72 63 65 0a 20 20 20 20 20 20 20 20 20 28 6c 6f 6f 70 20 66 6f 72 20 68 | ...resource..........(loop.for.h |
| 15120 | 65 61 64 65 72 20 69 6e 20 68 65 61 64 65 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 | eader.in.headers.............if. |
| 15140 | 28 65 71 75 61 6c 20 28 68 65 61 64 65 72 2d 6e 61 6d 65 20 68 65 61 64 65 72 29 20 22 62 6f 64 | (equal.(header-name.header)."bod |
| 15160 | 79 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 28 73 65 74 71 20 62 6f 64 79 20 28 63 | y").............do.(setq.body.(c |
| 15180 | 64 72 20 68 65 61 64 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0a 20 20 20 | dr.header)).............else.... |
| 151a0 | 20 20 20 20 20 20 20 20 20 63 6f 6e 63 61 74 20 28 66 6f 72 6d 61 74 0a 20 20 20 20 20 20 20 20 | .........concat.(format......... |
| 151c0 | 20 20 20 20 20 20 20 20 20 20 20 20 22 25 73 3a 20 25 73 5c 72 5c 6e 22 0a 20 20 20 20 20 20 20 | ............"%s:.%s\r\n"........ |
| 151e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 70 69 74 61 6c 69 7a 65 20 28 68 65 61 64 65 72 | .............(capitalize.(header |
| 15200 | 2d 6e 61 6d 65 20 68 65 61 64 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | -name.header)).................. |
| 15220 | 20 20 20 28 63 64 72 20 68 65 61 64 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 49 66 | ...(cdr.header)))..........;;.If |
| 15240 | 20 77 65 20 68 61 76 65 20 61 20 62 6f 64 79 20 74 68 65 6e 20 61 64 64 20 74 68 61 74 20 61 73 | .we.have.a.body.then.add.that.as |
| 15260 | 20 77 65 6c 6c 0a 20 20 20 20 20 20 20 20 20 28 6f 72 20 62 6f 64 79 20 22 22 29 29 29 29 29 0a | .well..........(or.body.""))))). |
| 15280 | 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 67 65 74 2d 73 65 72 76 65 72 2d 70 72 6f 70 20 | .(defun.elnode--get-server-prop. |
| 152a0 | 28 70 72 6f 63 65 73 73 20 6b 65 79 29 0a 20 20 22 47 65 74 20 74 68 65 20 76 61 6c 75 65 20 6f | (process.key)..."Get.the.value.o |
| 152c0 | 66 20 74 68 65 20 4b 45 59 20 66 72 6f 6d 20 74 68 65 20 73 65 72 76 65 72 20 61 74 74 61 63 68 | f.the.KEY.from.the.server.attach |
| 152e0 | 65 64 20 74 6f 20 50 52 4f 43 45 53 53 2e 0a 0a 53 65 72 76 65 72 20 70 72 6f 70 65 72 74 69 65 | ed.to.PROCESS...Server.propertie |
| 15300 | 73 20 61 72 65 20 62 6f 75 6e 64 20 77 69 74 68 20 60 65 6c 6e 6f 64 65 2d 73 74 61 72 74 27 20 | s.are.bound.with.`elnode-start'. |
| 15320 | 77 68 69 63 68 20 73 65 74 73 20 75 70 0a 60 65 6c 6e 6f 64 65 2d 2d 6c 6f 67 2d 66 6e 27 20 74 | which.sets.up.`elnode--log-fn'.t |
| 15340 | 6f 20 65 6e 73 75 72 65 20 74 68 61 74 20 61 6c 6c 20 73 6f 63 6b 65 74 73 20 63 72 65 61 74 65 | o.ensure.that.all.sockets.create |
| 15360 | 64 20 68 61 76 65 20 61 20 6c 69 6e 6b 0a 62 61 63 6b 20 74 6f 20 74 68 65 20 73 65 72 76 65 72 | d.have.a.link.back.to.the.server |
| 15380 | 2e 22 0a 20 20 20 20 28 6c 65 74 2a 20 28 28 73 65 72 76 65 72 20 28 70 72 6f 63 65 73 73 2d 67 | .".....(let*.((server.(process-g |
| 153a0 | 65 74 20 70 72 6f 63 65 73 73 20 3a 73 65 72 76 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 | et.process.:server))............ |
| 153c0 | 28 76 61 6c 75 65 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 73 65 72 76 65 72 20 6b 65 79 29 29 | (value.(process-get.server.key)) |
| 153e0 | 29 0a 20 20 20 20 20 20 76 61 6c 75 65 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d | ).......value))..(defun.elnode-- |
| 15400 | 6d 61 6b 65 2d 73 65 6e 64 2d 73 74 72 69 6e 67 20 28 29 0a 20 20 20 20 22 4d 61 6b 65 20 61 20 | make-send-string.()....."Make.a. |
| 15420 | 66 75 6e 63 74 69 6f 6e 20 74 6f 20 73 65 6e 64 20 61 20 73 74 72 69 6e 67 20 74 6f 20 61 6e 20 | function.to.send.a.string.to.an. |
| 15440 | 48 54 54 50 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 22 0a 20 20 20 20 28 6c 61 6d 62 64 61 20 28 68 | HTTP.connection.".....(lambda.(h |
| 15460 | 74 74 70 63 6f 6e 20 73 74 72 29 0a 20 20 20 20 20 20 22 53 65 6e 64 20 53 54 52 20 74 6f 20 74 | ttpcon.str)......."Send.STR.to.t |
| 15480 | 68 65 20 48 54 54 50 43 4f 4e 2e 0a 44 6f 65 73 20 61 6e 79 20 6e 65 63 65 73 73 61 72 79 20 65 | he.HTTPCON..Does.any.necessary.e |
| 154a0 | 6e 63 6f 64 69 6e 67 2e 22 0a 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 70 72 6f 63 65 73 73 | ncoding.".......(elnode--process |
| 154c0 | 2d 73 65 6e 64 2d 73 74 72 69 6e 67 20 68 74 74 70 63 6f 6e 20 73 74 72 29 29 29 0a 0a 28 64 65 | -send-string.httpcon.str)))..(de |
| 154e0 | 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 6d 61 6b 65 2d 73 65 6e 64 2d 65 6f 66 20 28 29 0a 20 20 22 | fun.elnode--make-send-eof.()..." |
| 15500 | 4d 61 6b 65 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 73 65 6e 64 20 45 4f 46 20 74 6f 20 61 | Make.a.function.to.send.EOF.to.a |
| 15520 | 6e 20 48 54 54 50 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 22 0a 20 20 28 6c 61 6d 62 64 61 20 28 63 | n.HTTP.connection."...(lambda.(c |
| 15540 | 6f 6e 29 0a 20 20 20 20 22 53 65 6e 64 20 45 4f 46 20 74 6f 20 74 68 65 20 48 54 54 50 43 4f 4e | on)....."Send.EOF.to.the.HTTPCON |
| 15560 | 2e 0a 44 6f 65 73 20 61 6e 79 20 6e 65 63 65 73 73 61 72 79 20 65 6e 63 6f 64 69 6e 67 2e 22 0a | ..Does.any.necessary.encoding.". |
| 15580 | 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 65 6f 66 20 63 6f | ....(elnode--process-send-eof.co |
| 155a0 | 6e 29 29 29 0a 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 68 61 6e 64 6c 65 72 2d 63 61 | n)))...(defun.elnode--handler-ca |
| 155c0 | 6c 6c 20 28 68 61 6e 64 6c 65 72 20 70 72 6f 63 65 73 73 29 0a 20 20 22 53 69 6d 70 6c 65 20 66 | ll.(handler.process)..."Simple.f |
| 155e0 | 75 6e 63 74 69 6f 6e 20 74 6f 20 77 72 61 70 20 63 61 6c 6c 69 6e 67 20 74 68 65 20 48 41 4e 44 | unction.to.wrap.calling.the.HAND |
| 15600 | 4c 45 52 2e 22 0a 20 20 28 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 20 22 66 69 6c 74 65 72 3a 20 63 | LER."...(elnode-error."filter:.c |
| 15620 | 61 6c 6c 69 6e 67 20 68 61 6e 64 6c 65 72 20 6f 6e 20 25 73 22 20 70 72 6f 63 65 73 73 29 0a 20 | alling.handler.on.%s".process).. |
| 15640 | 20 28 66 75 6e 63 61 6c 6c 20 68 61 6e 64 6c 65 72 20 70 72 6f 63 65 73 73 29 0a 20 20 28 65 6c | .(funcall.handler.process)...(el |
| 15660 | 6e 6f 64 65 2d 65 72 72 6f 72 20 22 66 69 6c 74 65 72 3a 20 68 61 6e 64 6c 65 72 20 72 65 74 75 | node-error."filter:.handler.retu |
| 15680 | 72 6e 65 64 20 6f 6e 20 25 73 22 20 70 72 6f 63 65 73 73 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c | rned.on.%s".process))..(defun.el |
| 156a0 | 6e 6f 64 65 2d 2d 66 69 6c 74 65 72 20 28 70 72 6f 63 65 73 73 20 64 61 74 61 29 0a 20 20 22 46 | node--filter.(process.data)..."F |
| 156c0 | 69 6c 74 65 72 69 6e 67 20 44 41 54 41 20 73 65 6e 74 20 66 72 6f 6d 20 74 68 65 20 63 6c 69 65 | iltering.DATA.sent.from.the.clie |
| 156e0 | 6e 74 20 50 52 4f 43 45 53 53 2e 2e 0a 0a 54 68 69 73 20 64 6f 65 73 20 74 68 65 20 77 6f 72 6b | nt.PROCESS....This.does.the.work |
| 15700 | 20 6f 66 20 66 69 6e 64 69 6e 67 20 61 6e 64 20 63 61 6c 6c 69 6e 67 20 74 68 65 20 75 73 65 72 | .of.finding.and.calling.the.user |
| 15720 | 20 48 54 54 50 0a 63 6f 6e 6e 65 63 74 69 6f 6e 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 74 68 65 | .HTTP.connection.handler.for.the |
| 15740 | 20 72 65 71 75 65 73 74 20 6f 6e 20 50 52 4f 43 45 53 53 2e 0a 0a 41 20 62 75 66 66 65 72 20 66 | .request.on.PROCESS...A.buffer.f |
| 15760 | 6f 72 20 74 68 65 20 48 54 54 50 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 20 63 72 65 61 74 65 | or.the.HTTP.connection.is.create |
| 15780 | 64 2c 20 75 6e 69 71 75 69 66 69 65 64 20 62 79 20 74 68 65 0a 70 6f 72 74 20 6e 75 6d 62 65 72 | d,.uniquified.by.the.port.number |
| 157a0 | 20 6f 66 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 22 0a 20 20 28 6c 65 74 20 28 28 62 75 | .of.the.connection."...(let.((bu |
| 157c0 | 66 0a 20 20 20 20 20 20 20 20 20 28 6f 72 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 | f..........(or...........(proces |
| 157e0 | 73 2d 62 75 66 66 65 72 20 70 72 6f 63 65 73 73 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 53 | s-buffer.process)...........;;.S |
| 15800 | 65 74 20 74 68 65 20 70 72 6f 63 65 73 73 20 62 75 66 66 65 72 20 28 62 65 63 61 75 73 65 20 74 | et.the.process.buffer.(because.t |
| 15820 | 68 65 20 73 65 72 76 65 72 20 64 6f 65 73 6e 27 74 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 61 | he.server.doesn't...........;;.a |
| 15840 | 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 61 6c 6c 6f 63 61 74 65 20 74 68 65 6d 29 0a 20 20 20 20 | utomatically.allocate.them)..... |
| 15860 | 20 20 20 20 20 20 3b 3b 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 68 65 20 6e 61 6d 65 20 6f | ......;;...........;;.The.name.o |
| 15880 | 66 20 74 68 65 20 62 75 66 66 65 72 20 68 61 73 20 74 68 65 20 63 6c 69 65 6e 74 20 70 6f 72 74 | f.the.buffer.has.the.client.port |
| 158a0 | 20 69 6e 20 69 74 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 74 68 65 20 73 70 61 63 65 20 69 6e | .in.it...........;;.the.space.in |
| 158c0 | 20 74 68 65 20 6e 61 6d 65 20 65 6e 73 75 72 65 73 20 74 68 61 74 20 65 6d 61 63 73 20 64 6f 65 | .the.name.ensures.that.emacs.doe |
| 158e0 | 73 20 6e 6f 74 20 6c 69 73 74 20 69 74 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 0a 20 20 20 20 20 | s.not.list.it...........;;...... |
| 15900 | 20 20 20 20 20 3b 3b 20 57 65 20 61 6c 73 6f 20 75 73 65 20 74 68 69 73 20 6d 6f 6d 65 6e 74 20 | .....;;.We.also.use.this.moment. |
| 15920 | 74 6f 20 73 65 74 75 70 20 66 75 6e 63 74 69 6f 6e 73 20 72 65 71 75 69 72 65 64 20 62 79 0a 20 | to.setup.functions.required.by.. |
| 15940 | 20 20 20 20 20 20 20 20 20 3b 3b 20 65 6c 6e 6f 64 65 2d 77 6f 72 6b 65 72 2d 6c 69 73 70 0a 20 | .........;;.elnode-worker-lisp.. |
| 15960 | 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 70 6f 72 74 20 28 63 61 64 72 20 28 70 72 6f | .........(let*.((port.(cadr.(pro |
| 15980 | 63 65 73 73 2d 63 6f 6e 74 61 63 74 20 70 72 6f 63 65 73 73 29 29 29 0a 20 20 20 20 20 20 20 20 | cess-contact.process)))......... |
| 159a0 | 20 20 20 20 20 20 20 20 20 28 73 65 6e 64 2d 73 74 72 69 6e 67 2d 66 75 6e 63 20 28 65 6c 6e 6f | .........(send-string-func.(elno |
| 159c0 | 64 65 2d 2d 6d 61 6b 65 2d 73 65 6e 64 2d 73 74 72 69 6e 67 29 29 0a 20 20 20 20 20 20 20 20 20 | de--make-send-string)).......... |
| 159e0 | 20 20 20 20 20 20 20 20 28 73 65 6e 64 2d 65 6f 66 2d 66 75 6e 63 20 28 65 6c 6e 6f 64 65 2d 2d | ........(send-eof-func.(elnode-- |
| 15a00 | 6d 61 6b 65 2d 73 65 6e 64 2d 65 6f 66 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 | make-send-eof))).............(pr |
| 15a20 | 6f 63 65 73 73 2d 70 75 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 20 3a | ocess-put..............process.: |
| 15a40 | 73 65 6e 64 2d 73 74 72 69 6e 67 2d 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 | send-string-function............ |
| 15a60 | 20 20 73 65 6e 64 2d 73 74 72 69 6e 67 2d 66 75 6e 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ..send-string-func)............. |
| 15a80 | 3b 3b 20 2e 2e 2e 20 61 6e 64 20 74 68 69 73 20 6f 6e 65 20 64 6f 65 73 20 63 6c 6f 73 69 6e 67 | ;;.....and.this.one.does.closing |
| 15aa0 | 20 74 68 65 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 70 72 6f 70 65 72 6c 79 0a 20 20 20 20 20 20 20 | .the.connection.properly........ |
| 15ac0 | 20 20 20 20 20 3b 3b 20 77 69 74 68 20 65 6c 6e 6f 64 65 27 73 20 63 68 75 6e 6b 65 64 20 65 6e | .....;;.with.elnode's.chunked.en |
| 15ae0 | 63 6f 64 69 6e 67 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 70 75 74 | coding..............(process-put |
| 15b00 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 20 3a 73 65 6e 64 2d 65 6f 66 2d | ..............process.:send-eof- |
| 15b20 | 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 6e 64 2d 65 6f 66 2d 66 | function..............send-eof-f |
| 15b40 | 75 6e 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4e 6f 77 20 64 6f 20 74 68 65 20 62 | unc).............;;.Now.do.the.b |
| 15b60 | 75 66 66 65 72 20 63 72 65 61 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 2d | uffer.creation.............(set- |
| 15b80 | 70 72 6f 63 65 73 73 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 | process-buffer..............proc |
| 15ba0 | 65 73 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63 72 65 | ess..............(get-buffer-cre |
| 15bc0 | 61 74 65 20 28 66 6f 72 6d 61 74 20 22 20 2a 65 6c 6e 6f 64 65 2d 72 65 71 75 65 73 74 2d 25 73 | ate.(format.".*elnode-request-%s |
| 15be0 | 2a 22 20 70 6f 72 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d | *".port))).............(process- |
| 15c00 | 62 75 66 66 65 72 20 70 72 6f 63 65 73 73 29 29 29 29 29 0a 20 20 20 20 28 77 69 74 68 2d 63 75 | buffer.process))))).....(with-cu |
| 15c20 | 72 72 65 6e 74 2d 62 75 66 66 65 72 20 62 75 66 0a 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 64 | rrent-buffer.buf.......(insert.d |
| 15c40 | 61 74 61 29 0a 20 20 20 20 20 20 3b 3b 20 54 72 79 20 61 6e 64 20 70 61 72 73 65 2e 2e 2e 0a 20 | ata).......;;.Try.and.parse..... |
| 15c60 | 20 20 20 20 20 28 6c 65 74 20 28 28 70 61 72 73 65 2d 73 74 61 74 75 73 20 28 63 61 74 63 68 20 | .....(let.((parse-status.(catch. |
| 15c80 | 27 65 6c 6e 6f 64 65 2d 70 61 72 73 65 2d 68 74 74 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | 'elnode-parse-http.............. |
| 15ca0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 70 61 72 | ...............(elnode--http-par |
| 15cc0 | 73 65 20 70 72 6f 63 65 73 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 63 61 73 65 20 70 61 72 | se.process)))).........(case.par |
| 15ce0 | 73 65 2d 73 74 61 74 75 73 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 49 66 20 74 68 69 73 20 66 | se-status...........;;.If.this.f |
| 15d00 | 61 69 6c 73 20 77 69 74 68 20 6f 6e 65 20 6f 66 20 74 68 65 73 65 20 73 70 65 63 69 66 69 63 20 | ails.with.one.of.these.specific. |
| 15d20 | 63 6f 64 65 73 20 69 74 27 73 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 6f 6b 2e 2e 2e 20 77 65 | codes.it's...........;;.ok....we |
| 15d40 | 27 6c 6c 20 66 69 6e 69 73 68 20 69 74 20 77 68 65 6e 20 74 68 65 20 64 61 74 61 20 61 72 72 69 | 'll.finish.it.when.the.data.arri |
| 15d60 | 76 65 73 0a 20 20 20 20 20 20 20 20 20 20 28 27 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 20 20 | ves...........('header.......... |
| 15d80 | 20 20 28 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 20 22 65 6c 6e 6f 64 65 2d 2d 66 69 6c 74 65 72 3a | ..(elnode-error."elnode--filter: |
| 15da0 | 20 70 61 72 74 69 61 6c 20 68 65 61 64 65 72 20 64 61 74 61 20 72 65 63 65 69 76 65 64 22 29 29 | .partial.header.data.received")) |
| 15dc0 | 0a 20 20 20 20 20 20 20 20 20 20 28 27 63 6f 6e 74 65 6e 74 0a 20 20 20 20 20 20 20 20 20 20 20 | ...........('content............ |
| 15de0 | 28 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 20 22 65 6c 6e 6f 64 65 2d 2d 66 69 6c 74 65 72 3a 20 70 | (elnode-error."elnode--filter:.p |
| 15e00 | 61 72 74 69 61 6c 20 68 65 61 64 65 72 20 64 61 74 61 20 72 65 63 65 69 76 65 64 22 29 29 0a 20 | artial.header.data.received")).. |
| 15e20 | 20 20 20 20 20 20 20 20 20 3b 3b 20 57 65 20 77 65 72 65 20 73 75 63 63 65 73 73 66 75 6c 20 73 | .........;;.We.were.successful.s |
| 15e40 | 6f 20 77 65 20 63 61 6e 20 63 61 6c 6c 20 74 68 65 20 75 73 65 72 20 68 61 6e 64 6c 65 72 2e 0a | o.we.can.call.the.user.handler.. |
| 15e60 | 20 20 20 20 20 20 20 20 20 20 28 27 64 6f 6e 65 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 61 76 | ..........('done............(sav |
| 15e80 | 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d 63 | e-excursion..............(goto-c |
| 15ea0 | 68 61 72 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 70 72 6f 63 65 73 73 20 3a 65 6c 6e 6f 64 65 | har.(process-get.process.:elnode |
| 15ec0 | 2d 68 65 61 64 65 72 2d 65 6e 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 | -header-end))..............(let. |
| 15ee0 | 28 28 68 61 6e 64 6c 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 | ((handler.....................(e |
| 15f00 | 6c 6e 6f 64 65 2d 2d 67 65 74 2d 73 65 72 76 65 72 2d 70 72 6f 70 20 70 72 6f 63 65 73 73 20 3a | lnode--get-server-prop.process.: |
| 15f20 | 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 68 61 6e 64 6c 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 | elnode-http-handler))).......... |
| 15f40 | 20 20 20 20 20 20 3b 3b 20 54 68 69 73 20 69 73 20 77 68 65 72 65 20 77 65 20 63 61 6c 6c 20 74 | ......;;.This.is.where.we.call.t |
| 15f60 | 68 65 20 75 73 65 72 20 68 61 6e 64 6c 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b | he.user.handler................; |
| 15f80 | 3b 20 54 4f 44 4f 3a 20 74 68 69 73 20 6e 65 65 64 73 20 65 72 72 6f 72 20 70 72 6f 74 65 63 74 | ;.TODO:.this.needs.error.protect |
| 15fa0 | 69 6f 6e 20 73 6f 20 77 65 20 63 61 6e 20 72 65 74 75 72 6e 20 61 6e 20 65 72 72 6f 72 3f 0a 20 | ion.so.we.can.return.an.error?.. |
| 15fc0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 77 69 6e 64 2d 70 72 6f 74 65 63 74 0a 20 20 | ..............(unwind-protect... |
| 15fe0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 | ..................(condition-cas |
| 16000 | 65 20 73 69 67 6e 61 6c 2d 76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | e.signal-value.................. |
| 16020 | 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 68 61 6e 64 6c 65 72 2d 63 61 6c 6c 20 68 61 6e | .......(elnode--handler-call.han |
| 16040 | 64 6c 65 72 20 70 72 6f 63 65 73 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | dler.process)................... |
| 16060 | 20 20 20 20 28 27 65 6c 6e 6f 64 65 2d 64 65 66 65 72 20 3b 20 73 65 65 20 65 6c 6e 6f 64 65 2d | ....('elnode-defer.;.see.elnode- |
| 16080 | 64 65 66 65 72 2d 6e 6f 77 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | defer-now....................... |
| 160a0 | 20 28 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 20 22 66 69 6c 74 65 72 3a 20 64 65 66 65 72 20 63 61 | .(elnode-error."filter:.defer.ca |
| 160c0 | 75 67 68 74 20 6f 6e 20 25 73 22 20 70 72 6f 63 65 73 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 | ught.on.%s".process)............ |
| 160e0 | 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 43 68 65 63 6b 20 74 68 65 20 74 69 6d 65 72 2c 20 | ............;;.Check.the.timer,. |
| 16100 | 74 68 69 73 20 69 73 20 70 72 6f 62 61 62 6c 79 20 73 70 75 72 69 6f 75 73 20 62 75 74 0a 20 20 | this.is.probably.spurious.but... |
| 16120 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 75 73 65 66 75 6c 20 22 | .....................;;.useful." |
| 16140 | 66 6f 72 20 6e 6f 77 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | for.now"........................ |
| 16160 | 28 75 6e 6c 65 73 73 20 65 6c 6e 6f 64 65 2d 64 65 66 65 72 2d 6f 6e 0a 20 20 20 20 20 20 20 20 | (unless.elnode-defer-on......... |
| 16180 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 20 22 | .................(elnode-error." |
| 161a0 | 66 69 6c 74 65 72 3a 20 6e 6f 20 64 65 66 65 72 20 74 69 6d 65 72 20 66 6f 72 20 25 73 22 20 70 | filter:.no.defer.timer.for.%s".p |
| 161c0 | 72 6f 63 65 73 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | rocess))........................ |
| 161e0 | 28 63 61 73 65 20 28 65 6c 6e 6f 64 65 2d 2d 67 65 74 2d 73 65 72 76 65 72 2d 70 72 6f 70 0a 20 | (case.(elnode--get-server-prop.. |
| 16200 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f | .............................pro |
| 16220 | 63 65 73 73 20 3a 65 6c 6e 6f 64 65 2d 64 65 66 65 72 2d 6d 6f 64 65 29 0a 20 20 20 20 20 20 20 | cess.:elnode-defer-mode)........ |
| 16240 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 3a 6d 61 6e 61 67 65 64 20 27 6d 61 | ..................((:managed.'ma |
| 16260 | 6e 61 67 65 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | naged).......................... |
| 16280 | 20 28 70 72 6f 63 65 73 73 2d 70 75 74 20 70 72 6f 63 65 73 73 20 3a 65 6c 6e 6f 64 65 2d 64 65 | .(process-put.process.:elnode-de |
| 162a0 | 66 65 72 72 65 64 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ferred.t)....................... |
| 162c0 | 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 64 65 66 65 72 72 65 64 2d 61 64 64 0a 20 20 20 20 20 20 | ....(elnode--deferred-add....... |
| 162e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 0a 20 20 20 | .....................process.... |
| 16300 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 74 68 65 20 63 | ........................;;.the.c |
| 16320 | 64 72 20 6f 66 20 74 68 65 20 73 69 67 20 76 61 6c 75 65 20 69 73 20 74 68 65 20 66 75 6e 63 0a | dr.of.the.sig.value.is.the.func. |
| 16340 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 | ...........................(cdr. |
| 16360 | 73 69 67 6e 61 6c 2d 76 61 6c 75 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | signal-value)))................. |
| 16380 | 20 20 20 20 20 20 20 20 20 28 28 3a 69 6d 6d 65 64 69 61 74 65 20 27 69 6d 6d 65 64 69 61 74 65 | .........((:immediate.'immediate |
| 163a0 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e | )...........................(eln |
| 163c0 | 6f 64 65 2d 65 72 72 6f 72 20 22 66 69 6c 74 65 72 3a 20 69 6d 6d 65 64 69 61 74 65 20 64 65 66 | ode-error."filter:.immediate.def |
| 163e0 | 65 72 20 6f 6e 20 25 73 22 20 70 72 6f 63 65 73 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | er.on.%s".process).............. |
| 16400 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 28 63 64 72 20 73 69 67 6e 61 | .............(funcall.(cdr.signa |
| 16420 | 6c 2d 76 61 6c 75 65 29 20 70 72 6f 63 65 73 73 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 | l-value).process))))............ |
| 16440 | 20 20 20 20 20 20 20 20 20 20 20 28 27 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...........('t.................. |
| 16460 | 20 20 20 20 20 20 3b 3b 20 46 49 58 4d 45 3a 20 77 65 20 6e 65 65 64 20 73 6f 6d 65 20 73 6f 72 | ......;;.FIXME:.we.need.some.sor |
| 16480 | 74 20 6f 66 20 63 68 65 63 6b 20 74 6f 20 73 65 65 20 69 66 20 74 68 65 0a 20 20 20 20 20 20 20 | t.of.check.to.see.if.the........ |
| 164a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 68 65 61 64 65 72 20 68 61 73 20 62 65 | ................;;.header.has.be |
| 164c0 | 65 6e 20 77 72 69 74 74 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | en.written...................... |
| 164e0 | 20 20 28 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ..(elnode-error................. |
| 16500 | 20 20 20 20 20 20 20 20 22 65 6c 6e 6f 64 65 2d 2d 66 69 6c 74 65 72 3a 20 64 65 66 61 75 6c 74 | ........"elnode--filter:.default |
| 16520 | 20 68 61 6e 64 6c 69 6e 67 20 25 53 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .handling.%S"................... |
| 16540 | 20 20 20 20 20 20 73 69 67 6e 61 6c 2d 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ......signal-value)............. |
| 16560 | 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 73 74 72 69 6e 67 0a | ...........(process-send-string. |
| 16580 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 0a | ........................process. |
| 165a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d | ........................(elnode- |
| 165c0 | 2d 66 6f 72 6d 61 74 2d 72 65 73 70 6f 6e 73 65 20 35 30 30 29 29 29 29 0a 20 20 20 20 20 20 20 | -format-response.500))))........ |
| 165e0 | 20 20 20 20 20 20 20 20 20 20 3b 3b 20 48 61 6e 64 6c 65 20 75 6e 77 69 6e 64 20 65 72 72 6f 72 | ..........;;.Handle.unwind.error |
| 16600 | 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 0a 20 20 20 20 20 20 20 | s..................(when........ |
| 16620 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | ..............(and.............. |
| 16640 | 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 70 72 6f 63 65 | .........(not.(process-get.proce |
| 16660 | 73 73 20 3a 65 6c 6e 6f 64 65 2d 64 65 66 65 72 72 65 64 29 29 0a 20 20 20 20 20 20 20 20 20 20 | ss.:elnode-deferred))........... |
| 16680 | 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 70 72 | ............(not.(process-get.pr |
| 166a0 | 6f 63 65 73 73 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 74 61 72 74 65 64 29 29 0a 20 20 20 | ocess.:elnode-http-started)).... |
| 166c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 70 72 6f 63 65 73 73 | ...................(not.(process |
| 166e0 | 2d 67 65 74 20 70 72 6f 63 65 73 73 20 3a 65 6c 6e 6f 64 65 2d 63 68 69 6c 64 2d 70 72 6f 63 65 | -get.process.:elnode-child-proce |
| 16700 | 73 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 | ss)))....................(elnode |
| 16720 | 2d 65 72 72 6f 72 20 22 66 69 6c 74 65 72 3a 20 63 61 75 67 68 74 20 61 6e 20 65 72 72 6f 72 20 | -error."filter:.caught.an.error. |
| 16740 | 69 6e 20 74 68 65 20 68 61 6e 64 6c 69 6e 67 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | in.the.handling")............... |
| 16760 | 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 | .....(process-send-string....... |
| 16780 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 63 65 73 73 0a 20 20 20 20 20 20 20 20 20 20 | ..............process........... |
| 167a0 | 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 66 6f 72 6d 61 74 2d 72 65 73 70 6f 6e | ..........(elnode--format-respon |
| 167c0 | 73 65 20 35 30 30 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c | se.500))....................(del |
| 167e0 | 65 74 65 2d 70 72 6f 63 65 73 73 20 70 72 6f 63 65 73 73 29 29 29 29 29 29 29 29 29 29 29 0a 0a | ete-process.process))))))))))).. |
| 16800 | 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 69 70 2d 61 64 64 72 2d 3e 73 74 72 69 6e 67 20 | .(defun.elnode--ip-addr->string. |
| 16820 | 28 69 70 2d 61 64 64 72 29 0a 20 20 22 54 75 72 6e 20 61 20 76 65 63 74 6f 72 20 49 50 2d 41 44 | (ip-addr)..."Turn.a.vector.IP-AD |
| 16840 | 44 52 20 69 6e 74 6f 20 61 20 73 74 72 69 6e 67 20 66 6f 72 6d 2e 0a 0a 54 68 65 20 76 65 63 74 | DR.into.a.string.form...The.vect |
| 16860 | 6f 72 20 66 6f 72 6d 20 69 73 20 70 72 6f 64 75 63 65 64 20 62 79 20 60 70 72 6f 63 65 73 73 2d | or.form.is.produced.by.`process- |
| 16880 | 63 6f 6e 74 61 63 74 27 20 61 6e 64 20 69 6e 63 6c 75 64 65 73 20 74 68 65 0a 70 6f 72 74 20 6e | contact'.and.includes.the.port.n |
| 168a0 | 75 6d 62 65 72 2e 22 0a 20 20 28 64 65 73 74 72 75 63 74 75 72 69 6e 67 2d 62 69 6e 64 20 28 61 | umber."...(destructuring-bind.(a |
| 168c0 | 20 62 20 63 20 64 20 70 6f 72 74 29 0a 20 20 20 20 20 20 28 6d 61 70 63 61 72 20 27 69 64 65 6e | .b.c.d.port).......(mapcar.'iden |
| 168e0 | 74 69 74 79 20 69 70 2d 61 64 64 72 29 0a 20 20 20 20 28 66 6f 72 6d 61 74 20 22 25 73 2e 25 73 | tity.ip-addr).....(format."%s.%s |
| 16900 | 2e 25 73 2e 25 73 3a 25 73 22 20 61 20 62 20 63 20 64 20 70 6f 72 74 29 29 29 0a 0a 28 64 65 66 | .%s.%s:%s".a.b.c.d.port)))..(def |
| 16920 | 75 6e 20 65 6c 6e 6f 64 65 2d 67 65 74 2d 72 65 6d 6f 74 65 2d 69 70 61 64 64 72 20 28 68 74 74 | un.elnode-get-remote-ipaddr.(htt |
| 16940 | 70 63 6f 6e 29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 72 65 6d 6f 74 65 20 49 50 20 61 64 | pcon)..."Return.the.remote.IP.ad |
| 16960 | 64 72 65 73 73 20 66 72 6f 6d 20 74 68 65 20 48 54 54 50 43 4f 4e 2e 0a 0a 52 65 74 75 72 6e 65 | dress.from.the.HTTPCON...Returne |
| 16980 | 64 20 61 73 20 61 20 64 6f 74 74 65 64 20 69 70 20 61 64 64 72 65 73 73 20 66 6f 6c 6c 6f 77 65 | d.as.a.dotted.ip.address.followe |
| 169a0 | 64 20 62 79 20 61 20 63 6f 6c 6f 6e 20 73 65 70 61 72 61 74 65 64 0a 70 6f 72 74 20 6e 75 6d 62 | d.by.a.colon.separated.port.numb |
| 169c0 | 65 72 2e 20 20 46 6f 72 20 65 78 61 6d 70 6c 65 3a 20 5c 22 31 32 37 2e 30 2e 30 2e 31 3a 38 30 | er...For.example:.\"127.0.0.1:80 |
| 169e0 | 38 30 5c 22 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 72 65 6d 6f 74 65 20 28 70 6c 69 73 74 2d 67 | 80\"."...(let*.((remote.(plist-g |
| 16a00 | 65 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 63 6f | et...................(process-co |
| 16a20 | 6e 74 61 63 74 20 68 74 74 70 63 6f 6e 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ntact.httpcon.t)................ |
| 16a40 | 20 20 20 3a 72 65 6d 6f 74 65 29 29 29 0a 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 69 70 2d 61 64 | ...:remote))).....(elnode--ip-ad |
| 16a60 | 64 72 2d 3e 73 74 72 69 6e 67 20 72 65 6d 6f 74 65 29 29 29 0a 0a 28 64 65 66 61 6c 69 61 73 20 | dr->string.remote)))..(defalias. |
| 16a80 | 27 65 6c 6e 6f 64 65 2d 72 65 6d 6f 74 65 2d 69 70 61 64 64 72 20 27 65 6c 6e 6f 64 65 2d 67 65 | 'elnode-remote-ipaddr.'elnode-ge |
| 16aa0 | 74 2d 72 65 6d 6f 74 65 2d 69 70 61 64 64 72 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d | t-remote-ipaddr)..(defun.elnode- |
| 16ac0 | 73 65 72 76 65 72 2d 69 6e 66 6f 20 28 68 74 74 70 63 6f 6e 29 0a 20 20 22 52 65 74 75 72 6e 73 | server-info.(httpcon)..."Returns |
| 16ae0 | 20 61 20 73 74 72 69 6e 67 20 61 64 72 65 73 73 20 6f 66 20 74 68 65 20 73 65 72 76 65 72 20 68 | .a.string.adress.of.the.server.h |
| 16b00 | 6f 73 74 20 61 6e 64 20 70 6f 72 74 20 66 6f 72 20 48 54 54 50 43 4f 4e 2e 0a 0a 46 6f 72 20 65 | ost.and.port.for.HTTPCON...For.e |
| 16b20 | 78 61 6d 70 6c 65 3a 20 5c 22 31 32 37 2e 30 2e 30 2e 31 3a 38 30 30 30 5c 22 20 2d 20 6c 6f 63 | xample:.\"127.0.0.1:8000\".-.loc |
| 16b40 | 61 6c 68 6f 73 74 20 6f 6e 20 70 6f 72 74 20 38 30 30 30 2e 22 0a 20 20 28 65 6c 6e 6f 64 65 2d | alhost.on.port.8000."...(elnode- |
| 16b60 | 2d 69 70 2d 61 64 64 72 2d 3e 73 74 72 69 6e 67 0a 20 20 20 28 70 6c 69 73 74 2d 67 65 74 0a 20 | -ip-addr->string....(plist-get.. |
| 16b80 | 20 20 20 28 70 72 6f 63 65 73 73 2d 63 6f 6e 74 61 63 74 20 28 70 72 6f 63 65 73 73 2d 67 65 74 | ...(process-contact.(process-get |
| 16ba0 | 20 68 74 74 70 63 6f 6e 20 3a 73 65 72 76 65 72 29 20 74 29 0a 20 20 20 20 3a 6c 6f 63 61 6c 29 | .httpcon.:server).t).....:local) |
| 16bc0 | 29 29 0a 0a 0a 3b 3b 3b 20 54 65 73 74 69 6e 67 20 73 74 75 66 66 0a 0a 28 64 65 66 76 61 72 20 | ))...;;;.Testing.stuff..(defvar. |
| 16be0 | 65 6c 6e 6f 64 65 2d 2d 63 6f 6f 6b 69 65 2d 73 74 6f 72 65 20 6e 69 6c 0a 20 20 22 43 6f 6f 6b | elnode--cookie-store.nil..."Cook |
| 16c00 | 69 65 20 73 74 6f 72 65 20 66 6f 72 20 74 65 73 74 20 73 65 72 76 65 72 73 2e 0a 0a 54 68 69 73 | ie.store.for.test.servers...This |
| 16c20 | 20 69 73 20 61 20 73 70 65 63 69 61 6c 20 64 65 66 76 61 72 20 66 6f 72 20 64 79 6e 61 6d 69 63 | .is.a.special.defvar.for.dynamic |
| 16c40 | 20 6f 76 65 72 72 69 64 69 6e 67 20 62 79 0a 60 77 69 74 68 2d 65 6c 6e 6f 64 65 2d 6d 6f 63 6b | .overriding.by.`with-elnode-mock |
| 16c60 | 2d 73 65 72 76 65 72 27 2e 22 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 77 69 74 68 2d 65 6c 6e 6f | -server'.")..(defmacro.with-elno |
| 16c80 | 64 65 2d 6d 6f 63 6b 2d 73 65 72 76 65 72 20 28 68 61 6e 64 6c 65 72 20 26 72 65 73 74 20 62 6f | de-mock-server.(handler.&rest.bo |
| 16ca0 | 64 79 29 0a 20 20 22 45 78 65 63 75 74 65 20 42 4f 44 59 20 77 69 74 68 20 61 20 66 61 6b 65 20 | dy)..."Execute.BODY.with.a.fake. |
| 16cc0 | 73 65 72 76 65 72 20 77 68 69 63 68 20 69 73 20 62 6f 75 6e 64 20 74 6f 20 48 41 4e 44 4c 45 52 | server.which.is.bound.to.HANDLER |
| 16ce0 | 2e 0a 0a 54 68 69 73 20 69 73 20 75 73 65 66 75 6c 20 66 6f 72 20 64 6f 69 6e 67 20 65 6e 64 20 | ...This.is.useful.for.doing.end. |
| 16d00 | 74 6f 20 65 6e 64 20 63 6c 69 65 6e 74 20 74 65 73 74 69 6e 67 3a 0a 0a 20 28 65 72 74 2d 64 65 | to.end.client.testing:...(ert-de |
| 16d20 | 66 74 65 73 74 20 65 6c 6e 6f 64 65 2d 73 6f 6d 65 2d 70 61 67 65 20 28 29 0a 20 20 28 77 69 74 | ftest.elnode-some-page.()...(wit |
| 16d40 | 68 2d 65 6c 6e 6f 64 65 2d 6d 6f 63 6b 2d 73 65 72 76 65 72 20 27 65 6c 6e 6f 64 65 2d 68 6f 73 | h-elnode-mock-server.'elnode-hos |
| 16d60 | 74 70 61 74 68 2d 64 65 66 61 75 6c 74 2d 68 61 6e 64 6c 65 72 0a 20 20 20 20 28 65 6c 6e 6f 64 | tpath-default-handler.....(elnod |
| 16d80 | 65 2d 74 65 73 74 2d 63 61 6c 6c 20 5c 22 2f 73 6f 6d 65 74 68 69 6e 67 2f 74 65 73 74 5c 22 29 | e-test-call.\"/something/test\") |
| 16da0 | 29 29 0a 0a 54 68 65 20 74 65 73 74 20 63 61 6c 6c 20 77 69 74 68 20 62 65 20 70 61 73 73 65 64 | ))..The.test.call.with.be.passed |
| 16dc0 | 20 74 6f 20 74 68 65 0a 60 65 6c 6e 6f 64 65 2d 68 6f 73 74 70 61 74 68 2d 64 65 66 61 75 6c 74 | .to.the.`elnode-hostpath-default |
| 16de0 | 2d 68 61 6e 64 6c 65 72 27 20 76 69 61 20 74 68 65 20 6e 6f 72 6d 61 6c 20 48 54 54 50 20 70 61 | -handler'.via.the.normal.HTTP.pa |
| 16e00 | 72 73 69 6e 67 0a 72 6f 75 74 69 6e 65 73 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 0a 20 20 20 28 | rsing.routines."...(declare....( |
| 16e20 | 69 6e 64 65 6e 74 20 31 29 0a 20 20 20 28 64 65 62 75 67 20 74 29 29 0a 20 20 60 28 6c 65 74 20 | indent.1)....(debug.t))...`(let. |
| 16e40 | 28 28 65 6c 6e 6f 64 65 2d 2d 63 6f 6f 6b 69 65 2d 73 74 6f 72 65 20 28 6d 61 6b 65 2d 68 61 73 | ((elnode--cookie-store.(make-has |
| 16e60 | 68 2d 74 61 62 6c 65 20 3a 74 65 73 74 20 27 65 71 75 61 6c 29 29 29 0a 20 20 20 20 20 28 6e 6f | h-table.:test.'equal)))......(no |
| 16e80 | 66 6c 65 74 20 28 28 65 6c 6e 6f 64 65 2d 2d 67 65 74 2d 73 65 72 76 65 72 2d 70 72 6f 70 20 28 | flet.((elnode--get-server-prop.( |
| 16ea0 | 70 72 6f 63 20 6b 65 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a | proc.key).................(cond. |
| 16ec0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 71 20 6b 65 79 20 3a 65 6c 6e 6f | ..................((eq.key.:elno |
| 16ee0 | 64 65 2d 68 74 74 70 2d 68 61 6e 64 6c 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | de-http-handler)................ |
| 16f00 | 20 20 20 20 2c 68 61 6e 64 6c 65 72 29 29 29 29 0a 20 20 20 20 20 20 20 2c 40 62 6f 64 79 29 29 | ....,handler))))........,@body)) |
| 16f20 | 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 61 6c 69 73 74 2d 74 6f 2d 71 75 65 72 79 | )..(defun.elnode--alist-to-query |
| 16f40 | 20 28 61 6c 69 73 74 29 0a 20 20 22 54 75 72 6e 20 61 6e 20 61 6c 69 73 74 20 69 6e 74 6f 20 61 | .(alist)..."Turn.an.alist.into.a |
| 16f60 | 20 66 6f 72 6d 64 61 74 61 2f 71 75 65 72 79 20 73 74 72 69 6e 67 2e 22 0a 20 20 28 6e 6f 66 6c | .formdata/query.string."...(nofl |
| 16f80 | 65 74 20 28 28 77 65 62 2d 2d 6b 65 79 2d 76 61 6c 75 65 2d 65 6e 63 6f 64 65 20 28 6b 65 79 20 | et.((web--key-value-encode.(key. |
| 16fa0 | 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 22 45 6e 63 6f 64 65 20 61 20 4b 45 | value).............."Encode.a.KE |
| 16fc0 | 59 20 61 6e 64 20 56 41 4c 55 45 20 66 6f 72 20 75 72 6c 20 65 6e 63 6f 64 69 6e 67 2e 22 0a 20 | Y.and.VALUE.for.url.encoding.".. |
| 16fe0 | 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ............(cond............... |
| 17000 | 20 28 28 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 75 6d 62 65 72 70 20 | .((or..................(numberp. |
| 17020 | 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 70 | value)..................(stringp |
| 17040 | 20 76 61 6c 75 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 | .value)).................(format |
| 17060 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 25 73 3d 25 73 22 0a 20 20 20 20 20 20 | .................."%s=%s"....... |
| 17080 | 20 20 20 20 20 20 20 20 20 20 20 28 75 72 6c 2d 68 65 78 69 66 79 2d 73 74 72 69 6e 67 20 28 66 | ...........(url-hexify-string.(f |
| 170a0 | 6f 72 6d 61 74 20 22 25 73 22 20 6b 65 79 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ormat."%s".key))................ |
| 170c0 | 20 20 28 75 72 6c 2d 68 65 78 69 66 79 2d 73 74 72 69 6e 67 20 28 66 6f 72 6d 61 74 20 22 25 73 | ..(url-hexify-string.(format."%s |
| 170e0 | 22 20 76 61 6c 75 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 0a 20 20 | ".value))))................(t... |
| 17100 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 25 73 22 20 28 75 72 6c 2d | ..............(format."%s".(url- |
| 17120 | 68 65 78 69 66 79 2d 73 74 72 69 6e 67 20 28 66 6f 72 6d 61 74 20 22 25 73 22 20 6b 65 79 29 29 | hexify-string.(format."%s".key)) |
| 17140 | 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 77 65 62 2d 2d 74 6f 2d 71 75 65 72 79 2d 73 | ))))............(web--to-query-s |
| 17160 | 74 72 69 6e 67 20 28 6f 62 6a 65 63 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6f 6e | tring.(object).............."Con |
| 17180 | 76 65 72 74 20 4f 42 4a 45 43 54 20 28 61 20 68 61 73 68 2d 74 61 62 6c 65 20 6f 72 20 61 6c 69 | vert.OBJECT.(a.hash-table.or.ali |
| 171a0 | 73 74 29 20 74 6f 20 61 6e 20 48 54 54 50 20 71 75 65 72 79 20 73 74 72 69 6e 67 2e 22 0a 20 20 | st).to.an.HTTP.query.string."... |
| 171c0 | 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 53 74 6f 6c 65 6e 20 66 72 6f 6d 20 77 65 62 0a 20 20 | ...........;;.Stolen.from.web... |
| 171e0 | 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 | ...........(mapconcat........... |
| 17200 | 20 20 20 20 28 6c 61 6d 62 64 61 20 28 70 61 69 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | ....(lambda.(pair).............. |
| 17220 | 20 20 20 28 77 65 62 2d 2d 6b 65 79 2d 76 61 6c 75 65 2d 65 6e 63 6f 64 65 20 28 63 61 72 20 70 | ...(web--key-value-encode.(car.p |
| 17240 | 61 69 72 29 20 28 63 64 72 20 70 61 69 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | air).(cdr.pair)))............... |
| 17260 | 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 68 61 73 68 2d 74 61 62 | (cond.................((hash-tab |
| 17280 | 6c 65 2d 70 20 6f 62 6a 65 63 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c | le-p.object)..................(l |
| 172a0 | 65 74 20 28 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 | et.(result)....................( |
| 172c0 | 6d 61 70 68 61 73 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d | maphash.....................(lam |
| 172e0 | 62 64 61 20 28 6b 65 79 20 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | bda.(key.value)................. |
| 17300 | 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c 74 20 28 61 70 70 65 6e 64 20 28 6c 69 73 74 20 28 | ....(setq.result.(append.(list.( |
| 17320 | 63 6f 6e 73 20 6b 65 79 20 76 61 6c 75 65 29 29 20 72 65 73 75 6c 74 29 29 29 0a 20 20 20 20 20 | cons.key.value)).result)))...... |
| 17340 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 29 0a 20 20 20 20 20 20 20 20 20 | ...............object).......... |
| 17360 | 20 20 20 20 20 20 20 20 20 20 28 72 65 76 65 72 73 65 20 72 65 73 75 6c 74 29 29 29 0a 20 20 20 | ..........(reverse.result))).... |
| 17380 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 6c 69 73 74 70 20 6f 62 6a 65 63 74 29 0a 20 20 20 | .............((listp.object).... |
| 173a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 29 29 0a 20 20 20 20 20 20 20 20 20 | ..............object)).......... |
| 173c0 | 20 20 20 20 20 22 26 22 29 29 29 0a 20 20 20 20 28 77 65 62 2d 2d 74 6f 2d 71 75 65 72 79 2d 73 | ....."&"))).....(web--to-query-s |
| 173e0 | 74 72 69 6e 67 20 61 6c 69 73 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 6d | tring.alist)))..(defun.elnode--m |
| 17400 | 61 6b 65 2d 74 65 73 74 2d 63 61 6c 6c 20 28 70 61 74 68 20 6d 65 74 68 6f 64 20 70 61 72 61 6d | ake-test-call.(path.method.param |
| 17420 | 65 74 65 72 73 20 68 65 61 64 65 72 73 29 0a 20 20 22 43 6f 6e 73 74 72 75 63 74 20 74 68 65 20 | eters.headers)..."Construct.the. |
| 17440 | 48 54 54 50 20 72 65 71 75 65 73 74 20 66 6f 72 20 61 20 74 65 73 74 20 63 61 6c 6c 2e 0a 0a 54 | HTTP.request.for.a.test.call...T |
| 17460 | 68 69 73 20 73 68 6f 75 6c 64 20 70 72 6f 62 61 62 6c 79 20 62 65 20 6d 65 72 67 65 64 20 77 69 | his.should.probably.be.merged.wi |
| 17480 | 74 68 20 74 68 65 20 73 74 75 66 66 20 69 6e 20 74 68 65 20 60 77 65 62 27 0a 6d 6f 64 75 6c 65 | th.the.stuff.in.the.`web'.module |
| 174a0 | 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 71 75 65 72 79 0a 20 20 20 20 20 20 20 20 20 20 28 69 66 | ."...(let*.((query...........(if |
| 174c0 | 20 28 61 6e 64 20 70 61 72 61 6d 65 74 65 72 73 20 28 65 71 75 61 6c 20 6d 65 74 68 6f 64 20 22 | .(and.parameters.(equal.method." |
| 174e0 | 47 45 54 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 0a 20 20 20 | GET"))...............(format.... |
| 17500 | 20 20 20 20 20 20 20 20 20 20 20 20 22 3f 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ............"?%s"............... |
| 17520 | 20 28 65 6c 6e 6f 64 65 2d 2d 61 6c 69 73 74 2d 74 6f 2d 71 75 65 72 79 20 70 61 72 61 6d 65 74 | .(elnode--alist-to-query.paramet |
| 17540 | 65 72 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 22 29 29 0a 20 20 20 20 20 20 20 | ers))...............""))........ |
| 17560 | 20 20 28 68 74 74 70 2d 70 61 74 68 0a 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 65 71 75 61 | ..(http-path...........(if.(equa |
| 17580 | 6c 20 71 75 65 72 79 20 22 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 74 68 0a 20 | l.query."")...............path.. |
| 175a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 25 73 25 73 22 20 70 61 74 68 | .............(format."%s%s".path |
| 175c0 | 20 71 75 65 72 79 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 68 74 74 70 2d 62 6f 64 79 0a 20 20 | .query)))..........(http-body... |
| 175e0 | 20 20 20 20 20 20 20 20 28 69 66 20 28 65 71 75 61 6c 20 6d 65 74 68 6f 64 20 22 47 45 54 22 29 | ........(if.(equal.method."GET") |
| 17600 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...............nil.............. |
| 17620 | 20 28 6c 65 74 20 28 28 70 61 72 61 6d 2d 64 61 74 61 20 28 65 6c 6e 6f 64 65 2d 2d 61 6c 69 73 | .(let.((param-data.(elnode--alis |
| 17640 | 74 2d 74 6f 2d 71 75 65 72 79 20 70 61 72 61 6d 65 74 65 72 73 29 29 29 0a 20 20 20 20 20 20 20 | t-to-query.parameters)))........ |
| 17660 | 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 68 65 61 64 65 72 73 0a 20 20 20 20 20 20 20 20 20 | .........(setq.headers.......... |
| 17680 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 70 70 65 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 | .............(append............ |
| 176a0 | 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ............(list............... |
| 176c0 | 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 22 0a 20 | ..........(cons."Content-Type".. |
| 176e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 61 70 | ............................."ap |
| 17700 | 70 6c 69 63 61 74 69 6f 6e 2f 78 2d 77 77 77 2d 66 6f 72 6d 2d 75 72 6c 65 6e 63 6f 64 65 64 22 | plication/x-www-form-urlencoded" |
| 17720 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 | ).........................(cons. |
| 17740 | 22 43 6f 6e 74 65 6e 74 2d 4c 65 6e 67 74 68 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | "Content-Length"................ |
| 17760 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 25 64 22 20 28 6c 65 6e | ...............(format."%d".(len |
| 17780 | 67 74 68 20 70 61 72 61 6d 2d 64 61 74 61 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | gth.param-data)))).............. |
| 177a0 | 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ..........headers))............. |
| 177c0 | 20 20 20 20 70 61 72 61 6d 2d 64 61 74 61 29 29 29 29 0a 20 20 20 20 28 61 70 70 6c 79 0a 20 20 | ....param-data)))).....(apply... |
| 177e0 | 20 20 20 27 65 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 6d 61 6b 65 2d 68 64 72 0a 20 20 20 20 20 60 | ...'elnode--http-make-hdr......` |
| 17800 | 28 2c 6d 65 74 68 6f 64 0a 20 20 20 20 20 20 20 2c 68 74 74 70 2d 70 61 74 68 0a 20 20 20 20 20 | (,method........,http-path...... |
| 17820 | 20 20 2c 40 68 65 61 64 65 72 73 0a 20 20 20 20 20 20 20 28 62 6f 64 79 20 2e 20 2c 68 74 74 70 | ..,@headers........(body...,http |
| 17840 | 2d 62 6f 64 79 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 72 65 73 70 6f | -body)))))..(defun.elnode--respo |
| 17860 | 6e 73 65 2d 68 65 61 64 65 72 2d 74 6f 2d 63 6f 6f 6b 69 65 2d 73 74 6f 72 65 20 28 72 65 73 70 | nse-header-to-cookie-store.(resp |
| 17880 | 6f 6e 73 65 29 0a 20 20 22 41 64 64 20 53 65 74 2d 43 6f 6f 6b 69 65 20 68 65 61 64 65 72 73 20 | onse)..."Add.Set-Cookie.headers. |
| 178a0 | 66 72 6f 6d 20 52 45 53 50 4f 4e 53 45 20 74 6f 20 74 68 65 20 63 6f 6f 6b 69 65 20 73 74 6f 72 | from.RESPONSE.to.the.cookie.stor |
| 178c0 | 65 2e 22 0a 20 20 28 6c 65 74 20 28 28 63 6f 6f 6b 69 65 2d 73 65 74 20 28 61 73 73 6f 63 20 22 | e."...(let.((cookie-set.(assoc." |
| 178e0 | 53 65 74 2d 43 6f 6f 6b 69 65 22 20 72 65 73 70 6f 6e 73 65 29 29 29 0a 20 20 20 20 28 77 68 65 | Set-Cookie".response))).....(whe |
| 17900 | 6e 20 63 6f 6f 6b 69 65 2d 73 65 74 0a 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 63 6f 6f 6b 69 | n.cookie-set.......(let*.((cooki |
| 17920 | 65 2d 76 61 6c 75 65 20 28 63 61 72 20 28 73 70 6c 69 74 2d 73 74 72 69 6e 67 20 28 63 64 72 20 | e-value.(car.(split-string.(cdr. |
| 17940 | 63 6f 6f 6b 69 65 2d 73 65 74 29 20 22 3b 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 28 61 70 70 | cookie-set).";")))).........(app |
| 17960 | 6c 79 0a 20 20 20 20 20 20 20 20 20 27 70 75 74 68 61 73 68 0a 20 20 20 20 20 20 20 20 20 28 61 | ly..........'puthash..........(a |
| 17980 | 70 70 65 6e 64 0a 20 20 20 20 20 20 20 20 20 20 28 73 70 6c 69 74 2d 73 74 72 69 6e 67 20 63 6f | ppend...........(split-string.co |
| 179a0 | 6f 6b 69 65 2d 76 61 6c 75 65 20 22 3d 22 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 | okie-value."=")...........(list. |
| 179c0 | 65 6c 6e 6f 64 65 2d 2d 63 6f 6f 6b 69 65 2d 73 74 6f 72 65 29 29 29 29 29 29 0a 20 20 65 6c 6e | elnode--cookie-store))))))...eln |
| 179e0 | 6f 64 65 2d 2d 63 6f 6f 6b 69 65 2d 73 74 6f 72 65 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 | ode--cookie-store)..(defun.elnod |
| 17a00 | 65 2d 2d 63 6f 6f 6b 69 65 2d 73 74 6f 72 65 2d 74 6f 2d 68 65 61 64 65 72 2d 76 61 6c 75 65 20 | e--cookie-store-to-header-value. |
| 17a20 | 28 29 0a 20 20 22 54 75 72 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 63 6f 6f 6b 69 65 20 73 74 | ()..."Turn.the.current.cookie.st |
| 17a40 | 6f 72 65 20 69 6e 74 6f 20 61 20 68 65 61 64 65 72 2e 0a 0a 54 68 65 20 63 6f 6f 6b 69 65 73 20 | ore.into.a.header...The.cookies. |
| 17a60 | 69 6e 20 74 68 65 20 68 65 61 64 65 72 20 61 72 65 20 73 6f 72 74 65 64 20 61 6c 70 68 61 62 65 | in.the.header.are.sorted.alphabe |
| 17a80 | 74 69 63 61 6c 6c 79 20 2d 20 6d 61 6b 65 73 0a 74 65 73 74 69 6e 67 20 65 61 73 69 65 72 2e 22 | tically.-.makes.testing.easier." |
| 17aa0 | 0a 20 20 28 6c 65 74 20 28 28 63 6f 6f 6b 69 65 2d 76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 20 | ...(let.((cookie-value.......... |
| 17ac0 | 28 6d 61 70 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 63 6f | (mapconcat...........(lambda.(co |
| 17ae0 | 6f 6b 69 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 25 73 3d 25 73 | okie).............(format."%s=%s |
| 17b00 | 22 20 28 63 61 72 20 63 6f 6f 6b 69 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ".(car.cookie).................. |
| 17b20 | 20 20 20 28 75 72 6c 2d 68 65 78 69 66 79 2d 73 74 72 69 6e 67 20 28 63 64 72 20 63 6f 6f 6b 69 | ...(url-hexify-string.(cdr.cooki |
| 17b40 | 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6b 76 61 6c 69 73 74 2d 73 6f 72 74 0a 20 20 | e))))...........(kvalist-sort... |
| 17b60 | 20 20 20 20 20 20 20 20 20 28 6b 76 68 61 73 68 2d 3e 61 6c 69 73 74 20 65 6c 6e 6f 64 65 2d 2d | .........(kvhash->alist.elnode-- |
| 17b80 | 63 6f 6f 6b 69 65 2d 73 74 6f 72 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 27 73 74 72 69 6e 67 | cookie-store)............'string |
| 17ba0 | 2d 6c 65 73 73 70 29 0a 20 20 20 20 20 20 20 20 20 20 22 3b 20 22 29 29 29 0a 20 20 20 20 28 75 | -lessp)...........";."))).....(u |
| 17bc0 | 6e 6c 65 73 73 20 28 65 71 75 61 6c 20 22 22 20 63 6f 6f 6b 69 65 2d 76 61 6c 75 65 29 0a 20 20 | nless.(equal."".cookie-value)... |
| 17be0 | 20 20 20 20 63 6f 6f 6b 69 65 2d 76 61 6c 75 65 29 29 29 0a 0a 28 64 65 66 75 6e 2a 20 65 6c 6e | ....cookie-value)))..(defun*.eln |
| 17c00 | 6f 64 65 2d 74 65 73 74 2d 63 61 6c 6c 20 28 70 61 74 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ode-test-call.(path............. |
| 17c20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 26 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | ..............&key.............. |
| 17c40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 74 68 6f 64 20 22 47 45 54 22 29 0a 20 20 20 20 | .............(method."GET")..... |
| 17c60 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 61 72 61 6d 65 74 65 72 | ......................(parameter |
| 17c80 | 73 20 27 28 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | s.'()).......................... |
| 17ca0 | 20 28 68 65 61 64 65 72 73 20 27 28 29 29 29 0a 20 20 22 46 61 6b 65 20 61 20 63 61 6c 6c 20 74 | .(headers.'()))..."Fake.a.call.t |
| 17cc0 | 6f 20 65 6c 6e 6f 64 65 20 77 69 74 68 20 74 68 65 20 50 41 54 48 2e 0a 0a 49 6e 20 61 64 64 69 | o.elnode.with.the.PATH...In.addi |
| 17ce0 | 74 69 6f 6e 20 79 6f 75 20 63 61 6e 20 73 70 65 63 69 66 79 20 73 6f 6d 65 20 65 78 74 72 61 20 | tion.you.can.specify.some.extra. |
| 17d00 | 48 54 54 50 20 73 74 75 66 66 3a 0a 0a 20 3a 6d 65 74 68 6f 64 20 20 6f 6e 65 20 6f 66 20 47 45 | HTTP.stuff:...:method..one.of.GE |
| 17d20 | 54 2c 20 50 4f 53 54 2c 20 44 45 4c 45 54 45 2c 20 65 74 63 2e 2e 2e 0a 20 3a 70 61 72 61 6d 65 | T,.POST,.DELETE,.etc.....:parame |
| 17d40 | 74 65 72 73 20 50 4f 53 54 20 70 61 72 61 6d 65 74 65 72 73 2c 20 77 69 6c 6c 20 62 65 20 74 75 | ters.POST.parameters,.will.be.tu |
| 17d60 | 72 6e 65 64 20 69 6e 74 6f 20 61 20 50 4f 53 54 20 62 6f 64 79 0a 20 3a 68 65 61 64 65 72 73 20 | rned.into.a.POST.body..:headers. |
| 17d80 | 61 6e 79 20 73 70 65 63 69 66 69 63 20 68 65 61 64 65 72 73 20 79 6f 75 20 72 65 71 75 69 72 65 | any.specific.headers.you.require |
| 17da0 | 2c 20 79 6f 75 20 6d 61 79 20 6f 76 65 72 72 69 64 65 0a 20 20 20 74 65 73 74 2d 63 61 6c 6c 20 | ,.you.may.override....test-call. |
| 17dc0 | 68 65 61 64 65 72 73 2e 0a 0a 46 6f 72 20 65 78 61 6d 70 6c 65 3a 0a 0a 20 28 65 6c 6e 6f 64 65 | headers...For.example:...(elnode |
| 17de0 | 2d 74 65 73 74 2d 63 61 6c 6c 20 5c 22 2f 77 69 6b 69 2f 74 65 73 74 5c 22 29 0a 0a 6f 72 3a 0a | -test-call.\"/wiki/test\")..or:. |
| 17e00 | 0a 20 28 65 6c 6e 6f 64 65 2d 74 65 73 74 2d 63 61 6c 6c 20 5c 22 2f 77 69 6b 69 2f 74 65 73 74 | ..(elnode-test-call.\"/wiki/test |
| 17e20 | 5c 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6d 65 74 68 6f 64 20 5c 22 | \"....................:method.\" |
| 17e40 | 50 4f 53 54 5c 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 70 61 72 61 6d | POST\"....................:param |
| 17e60 | 65 74 65 72 73 20 27 28 28 5c 22 61 5c 22 20 2e 20 31 30 29 29 29 0a 0a 46 6f 72 20 68 65 61 64 | eters.'((\"a\"...10)))..For.head |
| 17e80 | 65 72 20 61 6e 64 20 70 61 72 61 6d 65 74 65 72 20 6e 61 6d 65 73 2c 20 73 74 72 69 6e 67 73 20 | er.and.parameter.names,.strings. |
| 17ea0 | 4d 55 53 54 20 62 65 20 75 73 65 64 20 63 75 72 72 65 6e 74 6c 79 2e 0a 0a 44 75 72 69 6e 67 20 | MUST.be.used.currently...During. |
| 17ec0 | 74 68 65 20 74 65 73 74 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 60 65 6c 6e 6f 64 65 2d 77 65 | the.test.the.variable.`elnode-we |
| 17ee0 | 62 73 65 72 76 65 72 2d 76 69 73 69 74 2d 66 69 6c 65 27 20 69 73 20 73 65 74 0a 74 6f 20 60 74 | bserver-visit-file'.is.set.to.`t |
| 17f00 | 27 20 74 6f 20 65 6e 73 75 72 65 20 74 68 61 74 20 45 6c 6e 6f 64 65 20 64 6f 65 73 20 6e 6f 74 | '.to.ensure.that.Elnode.does.not |
| 17f20 | 20 70 61 73 73 20 66 61 6b 65 20 48 54 54 50 20 63 6f 6e 6e 65 63 74 69 6f 6e 73 0a 74 6f 20 65 | .pass.fake.HTTP.connections.to.e |
| 17f40 | 78 74 65 72 6e 61 6c 20 70 72 6f 63 65 73 73 65 73 2e 22 0a 20 20 28 6c 65 74 20 28 72 65 73 75 | xternal.processes."...(let.(resu |
| 17f60 | 6c 74 0a 20 20 20 20 20 20 20 20 28 66 61 6b 69 72 2d 6d 6f 63 6b 2d 70 72 6f 63 65 73 73 2d 72 | lt.........(fakir-mock-process-r |
| 17f80 | 65 71 75 69 72 65 2d 73 70 65 63 69 66 69 65 64 2d 62 75 66 66 65 72 20 74 29 29 0a 20 20 20 20 | equire-specified-buffer.t))..... |
| 17fa0 | 28 66 61 6b 69 72 2d 6d 6f 63 6b 2d 70 72 6f 63 65 73 73 20 3a 68 74 74 70 63 6f 6e 20 28 29 0a | (fakir-mock-process.:httpcon.(). |
| 17fc0 | 20 20 20 20 20 20 28 6c 65 74 20 28 28 72 65 71 20 28 65 6c 6e 6f 64 65 2d 2d 6d 61 6b 65 2d 74 | ......(let.((req.(elnode--make-t |
| 17fe0 | 65 73 74 2d 63 61 6c 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 74 68 20 | est-call...................path. |
| 18000 | 6d 65 74 68 6f 64 20 70 61 72 61 6d 65 74 65 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | method.parameters............... |
| 18020 | 20 20 20 20 28 61 70 70 65 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 | ....(append....................h |
| 18040 | 65 61 64 65 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 | eaders....................(let.( |
| 18060 | 28 63 6f 6f 6b 69 65 73 20 28 65 6c 6e 6f 64 65 2d 2d 63 6f 6f 6b 69 65 2d 73 74 6f 72 65 2d 74 | (cookies.(elnode--cookie-store-t |
| 18080 | 6f 2d 68 65 61 64 65 72 2d 76 61 6c 75 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | o-header-value)))............... |
| 180a0 | 20 20 20 20 20 20 20 28 77 68 65 6e 20 63 6f 6f 6b 69 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 | .......(when.cookies............ |
| 180c0 | 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 28 63 6f 6e 73 20 22 43 6f 6f 6b 69 65 22 | ............(list.(cons."Cookie" |
| 180e0 | 20 63 6f 6f 6b 69 65 73 29 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 68 74 74 | .cookies))))))).............(htt |
| 18100 | 70 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 3a 68 74 74 70 63 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 | p-connection.:httpcon))......... |
| 18120 | 3b 3b 20 43 61 70 74 75 72 65 20 74 68 65 20 72 65 61 6c 20 65 6f 66 2d 66 75 6e 63 20 61 6e 64 | ;;.Capture.the.real.eof-func.and |
| 18140 | 20 74 68 65 6e 20 6f 76 65 72 72 69 64 65 20 69 74 20 74 6f 20 64 6f 20 66 61 6b 65 20 65 6e 64 | .then.override.it.to.do.fake.end |
| 18160 | 69 6e 67 2e 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 65 6f 66 2d 66 75 6e 63 20 28 65 6c | ing..........(let.((eof-func.(el |
| 18180 | 6e 6f 64 65 2d 2d 6d 61 6b 65 2d 73 65 6e 64 2d 65 6f 66 29 29 0a 20 20 20 20 20 20 20 20 20 20 | node--make-send-eof))........... |
| 181a0 | 20 20 20 20 28 6d 61 69 6e 2d 73 65 6e 64 2d 73 74 72 69 6e 67 20 28 73 79 6d 62 6f 6c 2d 66 75 | ....(main-send-string.(symbol-fu |
| 181c0 | 6e 63 74 69 6f 6e 20 27 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 65 6e 64 2d 73 74 72 69 6e 67 29 | nction.'elnode-http-send-string) |
| 181e0 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 6e 64 2d 73 74 72 69 6e 67 2d 66 75 6e | )...............(send-string-fun |
| 18200 | 63 20 28 65 6c 6e 6f 64 65 2d 2d 6d 61 6b 65 2d 73 65 6e 64 2d 73 74 72 69 6e 67 29 29 0a 20 20 | c.(elnode--make-send-string))... |
| 18220 | 20 20 20 20 20 20 20 20 20 20 20 20 28 74 68 65 2d 65 6e 64 20 30 29 0a 20 20 20 20 20 20 20 20 | ............(the-end.0)......... |
| 18240 | 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 77 65 62 73 65 72 76 65 72 2d 76 69 73 69 74 2d 66 69 | ......(elnode-webserver-visit-fi |
| 18260 | 6c 65 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6e 6f 66 6c 65 74 0a 20 20 20 20 20 20 20 | le.t))...........(noflet........ |
| 18280 | 20 20 20 20 20 20 20 28 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 65 6e 64 2d 73 74 72 69 6e 67 | .......((elnode-http-send-string |
| 182a0 | 20 28 68 74 74 70 63 6f 6e 20 73 74 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .(httpcon.str).................. |
| 182c0 | 28 66 75 6e 63 61 6c 6c 20 6d 61 69 6e 2d 73 65 6e 64 2d 73 74 72 69 6e 67 20 68 74 74 70 63 6f | (funcall.main-send-string.httpco |
| 182e0 | 6e 20 73 74 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d | n.str))................(elnode-- |
| 18300 | 6d 61 6b 65 2d 73 65 6e 64 2d 73 74 72 69 6e 67 20 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | make-send-string.()............. |
| 18320 | 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 68 74 74 70 63 6f 6e 20 73 74 72 29 0a 20 20 20 20 20 | .....(lambda.(httpcon.str)...... |
| 18340 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 73 65 6e 64 2d 73 74 72 69 | ..............(funcall.send-stri |
| 18360 | 6e 67 2d 66 75 6e 63 20 68 74 74 70 63 6f 6e 20 73 74 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 | ng-func.httpcon.str))).......... |
| 18380 | 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 6d 61 6b 65 2d 73 65 6e 64 2d 65 6f 66 20 28 29 0a | ......(elnode--make-send-eof.(). |
| 183a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 68 74 74 70 63 6f | .................(lambda.(httpco |
| 183c0 | 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 46 6c 65 74 20 65 76 | n)....................;;.Flet.ev |
| 183e0 | 65 72 79 74 68 69 6e 67 20 69 6e 20 65 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 65 6e 64 0a 20 20 20 | erything.in.elnode--http-end.... |
| 18400 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 2e 2e 2e 20 66 69 72 73 74 20 73 69 67 | ................;;.....first.sig |
| 18420 | 6e 61 6c 69 6e 67 20 74 68 65 20 65 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | naling.the.end.................. |
| 18440 | 20 20 28 6e 6f 66 6c 65 74 20 28 28 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 65 6f 66 20 28 70 72 | ..(noflet.((process-send-eof.(pr |
| 18460 | 6f 63 29 20 28 73 65 74 71 20 74 68 65 2d 65 6e 64 20 27 74 29 29 0a 20 20 20 20 20 20 20 20 20 | oc).(setq.the-end.'t)).......... |
| 18480 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 44 6f 20 6e 6f 74 68 69 6e 67 | ...................;;.Do.nothing |
| 184a0 | 20 2d 20 77 65 20 77 61 6e 74 20 74 68 65 20 74 65 73 74 20 70 72 6f 63 0a 20 20 20 20 20 20 20 | .-.we.want.the.test.proc........ |
| 184c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 70 72 6f | .....................(delete-pro |
| 184e0 | 63 65 73 73 20 28 70 72 6f 63 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | cess.(proc)).................... |
| 18500 | 20 20 20 20 20 20 20 20 20 3b 3b 20 41 67 61 69 6e 2c 20 64 6f 20 6e 6f 74 68 69 6e 67 2c 20 77 | .........;;.Again,.do.nothing,.w |
| 18520 | 65 20 77 61 6e 74 20 74 68 69 73 20 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | e.want.this.buffer.............. |
| 18540 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 20 28 62 75 66 | ...............(kill-buffer.(buf |
| 18560 | 66 65 72 29 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b | fer).t))......................;; |
| 18580 | 20 4e 6f 77 20 63 61 6c 6c 20 74 68 65 20 63 61 70 74 75 72 65 64 20 65 6f 66 2d 66 75 6e 63 0a | .Now.call.the.captured.eof-func. |
| 185a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 65 6f | .....................(funcall.eo |
| 185c0 | 66 2d 66 75 6e 63 20 68 74 74 70 63 6f 6e 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | f-func.httpcon)))))............. |
| 185e0 | 3b 3b 20 46 49 58 4d 45 20 2d 20 77 65 20 73 68 6f 75 6c 64 20 75 6e 77 69 6e 64 20 70 72 6f 74 | ;;.FIXME.-.we.should.unwind.prot |
| 18600 | 65 63 74 20 74 68 69 73 3f 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 66 | ect.this?.............(elnode--f |
| 18620 | 69 6c 74 65 72 20 68 74 74 70 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 72 65 71 29 0a 20 20 20 20 20 | ilter.http-connection.req)...... |
| 18640 | 20 20 20 20 20 20 20 3b 3b 20 4e 6f 77 20 77 65 20 73 6c 65 65 70 20 74 69 6c 6c 20 74 68 65 2d | .......;;.Now.we.sleep.till.the- |
| 18660 | 65 6e 64 20 69 73 20 74 72 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 | end.is.true.............(while.( |
| 18680 | 6e 6f 74 20 74 68 65 2d 65 6e 64 29 20 28 73 69 74 2d 66 6f 72 20 30 2e 31 29 29 0a 20 20 20 20 | not.the-end).(sit-for.0.1))..... |
| 186a0 | 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 74 68 65 2d 65 6e 64 0a 20 20 20 20 20 20 20 20 20 20 | ........(when.the-end........... |
| 186c0 | 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 72 65 73 70 6f 6e 73 65 2d 68 65 61 64 65 72 2d 74 6f 2d | ....(elnode--response-header-to- |
| 186e0 | 63 6f 6f 6b 69 65 2d 73 74 6f 72 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f | cookie-store................(pro |
| 18700 | 63 65 73 73 2d 67 65 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 74 74 70 2d 63 6f | cess-get.................http-co |
| 18720 | 6e 6e 65 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 65 6c 6e 6f 64 65 | nnection.................:elnode |
| 18740 | 2d 68 74 74 70 72 65 73 70 6f 6e 73 65 2d 68 65 61 64 65 72 29 29 0a 20 20 20 20 20 20 20 20 20 | -httpresponse-header)).......... |
| 18760 | 20 20 20 20 20 3b 3b 20 41 64 64 20 74 6f 20 74 68 65 20 63 6f 6f 6b 69 65 20 73 74 6f 72 65 3f | .....;;.Add.to.the.cookie.store? |
| 18780 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 75 6c 74 0a 20 20 20 20 | ...............(setq.result..... |
| 187a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 | ................(list........... |
| 187c0 | 20 20 20 20 20 20 20 20 20 20 20 3a 72 65 73 75 6c 74 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 | ...........:result-string....... |
| 187e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 | ...............(with-current-buf |
| 18800 | 66 65 72 20 28 66 61 6b 69 72 2d 67 65 74 2d 6f 75 74 70 75 74 2d 62 75 66 66 65 72 29 0a 20 20 | fer.(fakir-get-output-buffer)... |
| 18820 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 | .....................(buffer-sub |
| 18840 | 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 | string-no-properties.(point-min) |
| 18860 | 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .(point-max))).................. |
| 18880 | 20 20 20 20 3a 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ....:buffer..................... |
| 188a0 | 20 28 70 72 6f 63 65 73 73 2d 62 75 66 66 65 72 20 68 74 74 70 2d 63 6f 6e 6e 65 63 74 69 6f 6e | .(process-buffer.http-connection |
| 188c0 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 68 65 73 65 20 | )......................;;.These. |
| 188e0 | 70 72 6f 70 65 72 74 69 65 73 20 61 72 65 20 73 65 74 20 62 79 20 65 6c 6e 6f 64 65 2d 68 74 74 | properties.are.set.by.elnode-htt |
| 18900 | 70 2d 73 74 61 72 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 74 | p-start......................:st |
| 18920 | 61 74 75 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 | atus......................(proce |
| 18940 | 73 73 2d 67 65 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 74 74 | ss-get.......................htt |
| 18960 | 70 2d 63 6f 6e 6e 65 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | p-connection.................... |
| 18980 | 20 20 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 72 65 73 70 6f 6e 73 65 2d 73 74 61 74 75 73 29 0a | ...:elnode-httpresponse-status). |
| 189a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 65 61 64 65 72 0a 20 20 20 | .....................:header.... |
| 189c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 67 65 74 0a 20 | ..................(process-get.. |
| 189e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 74 74 70 2d 63 6f 6e 6e 65 63 | .....................http-connec |
| 18a00 | 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 65 6c 6e 6f | tion.......................:elno |
| 18a20 | 64 65 2d 68 74 74 70 72 65 73 70 6f 6e 73 65 2d 68 65 61 64 65 72 29 29 29 29 29 29 29 29 0a 20 | de-httpresponse-header)))))))).. |
| 18a40 | 20 20 20 3b 3b 20 46 69 6e 61 6c 6c 79 20 72 65 74 75 72 6e 20 74 68 65 20 72 65 73 75 6c 74 0a | ...;;.Finally.return.the.result. |
| 18a60 | 20 20 20 20 72 65 73 75 6c 74 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 2a 20 73 68 6f 75 6c 64 2d | ....result))..(defmacro*.should- |
| 18a80 | 65 6c 6e 6f 64 65 2d 72 65 73 70 6f 6e 73 65 20 28 63 61 6c 6c 0a 20 20 20 20 20 20 20 20 20 20 | elnode-response.(call........... |
| 18aa0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 26 6b 65 79 0a 20 20 | .........................&key... |
| 18ac0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
| 18ae0 | 20 73 74 61 74 75 73 2d 63 6f 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .status-code.................... |
| 18b00 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 2d 6e 61 6d 65 0a 20 20 20 20 | ................header-name..... |
| 18b20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 | ...............................h |
| 18b40 | 65 61 64 65 72 2d 76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | eader-value..................... |
| 18b60 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 2d 6c 69 73 74 0a 20 20 20 20 20 | ...............header-list...... |
| 18b80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 65 | ..............................he |
| 18ba0 | 61 64 65 72 2d 6c 69 73 74 2d 6d 61 74 63 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ader-list-match................. |
| 18bc0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 64 79 2d 6d 61 74 63 68 29 0a 20 | ...................body-match).. |
| 18be0 | 20 22 41 73 73 65 72 74 20 6f 6e 20 74 68 65 20 73 75 70 70 6c 69 65 64 20 52 45 53 50 4f 4e 53 | ."Assert.on.the.supplied.RESPONS |
| 18c00 | 45 2e 0a 0a 43 41 4c 4c 20 73 68 6f 75 6c 64 20 62 65 20 61 6e 20 60 65 6c 6e 6f 64 65 2d 74 65 | E...CALL.should.be.an.`elnode-te |
| 18c20 | 73 74 2d 63 61 6c 6c 27 2c 20 73 6f 6d 65 74 68 69 6e 67 20 74 68 61 74 20 63 61 6e 20 6d 61 6b | st-call',.something.that.can.mak |
| 18c40 | 65 20 61 0a 72 65 73 70 6f 6e 73 65 2e 20 20 41 73 73 65 72 74 69 6f 6e 73 20 61 72 65 20 64 6f | e.a.response...Assertions.are.do |
| 18c60 | 6e 65 20 62 79 20 63 68 65 63 6b 69 6e 67 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 76 61 6c | ne.by.checking.the.specified.val |
| 18c80 | 75 65 73 0a 6f 66 20 74 68 65 20 6f 74 68 65 72 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20 74 | ues.of.the.other.parameters.to.t |
| 18ca0 | 68 69 73 20 66 75 6e 63 74 69 6f 6e 2e 0a 0a 49 66 20 53 54 41 54 55 53 2d 43 4f 44 45 20 69 73 | his.function...If.STATUS-CODE.is |
| 18cc0 | 20 6e 6f 74 20 6e 69 6c 20 77 65 20 61 73 73 65 72 74 20 74 68 61 74 20 74 68 65 20 52 45 53 50 | .not.nil.we.assert.that.the.RESP |
| 18ce0 | 4f 4e 53 45 20 73 74 61 74 75 73 2d 63 6f 64 65 0a 69 73 20 65 71 75 61 6c 20 74 6f 20 74 68 65 | ONSE.status-code.is.equal.to.the |
| 18d00 | 20 53 54 41 54 55 53 2d 43 4f 44 45 2e 0a 0a 49 66 20 48 45 41 44 45 52 2d 4e 41 4d 45 20 69 73 | .STATUS-CODE...If.HEADER-NAME.is |
| 18d20 | 20 70 72 65 73 65 6e 74 20 74 68 65 6e 20 77 65 20 61 73 73 65 72 74 20 74 68 61 74 20 74 68 65 | .present.then.we.assert.that.the |
| 18d40 | 20 52 45 53 50 4f 4e 53 45 20 68 61 73 0a 74 68 65 20 68 65 61 64 65 72 20 61 6e 64 20 74 68 61 | .RESPONSE.has.the.header.and.tha |
| 18d60 | 74 20 69 74 73 20 76 61 6c 75 65 20 69 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 74 68 65 20 48 | t.its.value.is.the.same.as.the.H |
| 18d80 | 45 41 44 45 52 2d 56 41 4c 55 45 2e 0a 49 66 20 48 45 41 44 45 52 2d 56 41 4c 55 45 20 69 73 20 | EADER-VALUE..If.HEADER-VALUE.is. |
| 18da0 | 60 6e 69 6c 27 20 74 68 65 6e 20 77 65 20 61 73 73 65 72 74 20 74 68 61 74 20 74 68 65 20 48 45 | `nil'.then.we.assert.that.the.HE |
| 18dc0 | 41 44 45 52 2d 4e 41 4d 45 20 69 73 0a 4e 4f 54 20 70 72 65 73 65 6e 74 2e 0a 0a 49 66 20 48 45 | ADER-NAME.is.NOT.present...If.HE |
| 18de0 | 41 44 45 52 2d 4c 49 53 54 20 69 73 20 70 72 65 73 65 6e 74 20 74 68 65 6e 20 77 65 20 61 73 73 | ADER-LIST.is.present.then.we.ass |
| 18e00 | 65 72 74 20 74 68 61 74 20 61 6c 6c 20 74 68 6f 73 65 20 68 65 61 64 65 72 73 0a 61 72 65 20 70 | ert.that.all.those.headers.are.p |
| 18e20 | 72 65 73 65 6e 74 20 61 6e 64 20 60 65 71 75 61 6c 27 20 74 6f 20 74 68 65 20 76 61 6c 75 65 2e | resent.and.`equal'.to.the.value. |
| 18e40 | 0a 0a 49 66 20 48 45 41 44 45 52 2d 4c 49 53 54 2d 4d 41 54 43 48 20 69 73 20 70 72 65 73 65 6e | ..If.HEADER-LIST-MATCH.is.presen |
| 18e60 | 74 20 74 68 65 6e 20 77 65 20 61 73 73 65 72 74 20 74 68 61 74 20 61 6c 6c 20 74 68 6f 73 65 0a | t.then.we.assert.that.all.those. |
| 18e80 | 68 65 61 64 65 72 73 20 61 72 65 20 70 72 65 73 65 6e 74 20 61 6e 64 20 60 65 71 75 61 6c 27 20 | headers.are.present.and.`equal'. |
| 18ea0 | 74 6f 20 74 68 65 20 76 61 6c 75 65 2e 0a 0a 49 66 20 42 4f 44 59 2d 4d 41 54 43 48 20 69 73 20 | to.the.value...If.BODY-MATCH.is. |
| 18ec0 | 70 72 65 73 65 6e 74 20 74 68 65 6e 20 69 74 20 69 73 20 61 20 72 65 67 65 78 20 75 73 65 64 20 | present.then.it.is.a.regex.used. |
| 18ee0 | 74 6f 20 6d 61 74 63 68 20 74 68 65 0a 77 68 6f 6c 65 20 62 6f 64 79 20 6f 66 20 74 68 65 20 52 | to.match.the.whole.body.of.the.R |
| 18f00 | 45 53 50 4f 4e 53 45 2e 22 0a 20 20 28 6c 65 74 20 28 28 73 74 61 74 75 73 2d 63 6f 64 65 76 20 | ESPONSE."...(let.((status-codev. |
| 18f20 | 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 73 74 61 74 75 73 2d 63 6f 64 65 76 22 29 29 0a 20 20 | (make-symbol."status-codev"))... |
| 18f40 | 20 20 20 20 20 20 28 68 65 61 64 65 72 2d 6e 61 6d 65 76 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c | ......(header-namev.(make-symbol |
| 18f60 | 20 22 68 65 61 64 65 72 2d 6e 61 6d 65 76 22 29 29 0a 20 20 20 20 20 20 20 20 28 68 65 61 64 65 | ."header-namev")).........(heade |
| 18f80 | 72 2d 76 61 6c 75 65 76 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 68 65 61 64 65 72 2d 76 61 | r-valuev.(make-symbol."header-va |
| 18fa0 | 6c 75 65 76 22 29 29 0a 20 20 20 20 20 20 20 20 28 68 65 61 64 65 72 2d 6c 69 73 74 76 20 28 6d | luev")).........(header-listv.(m |
| 18fc0 | 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 68 65 61 64 65 72 2d 6c 69 73 74 76 22 29 29 0a 20 20 20 20 | ake-symbol."header-listv"))..... |
| 18fe0 | 20 20 20 20 28 68 65 61 64 65 72 2d 6c 69 73 74 2d 6d 61 74 63 68 76 20 28 6d 61 6b 65 2d 73 79 | ....(header-list-matchv.(make-sy |
| 19000 | 6d 62 6f 6c 20 22 68 65 61 64 65 72 2d 6c 69 73 74 2d 6d 61 74 63 68 22 29 29 0a 20 20 20 20 20 | mbol."header-list-match"))...... |
| 19020 | 20 20 20 28 62 6f 64 79 2d 6d 61 74 63 68 76 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 62 6f | ...(body-matchv.(make-symbol."bo |
| 19040 | 64 79 2d 6d 61 74 63 68 76 22 29 29 0a 20 20 20 20 20 20 20 20 28 72 65 73 70 6f 6e 73 65 76 20 | dy-matchv")).........(responsev. |
| 19060 | 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 72 65 73 70 6f 6e 73 65 76 22 29 29 29 0a 20 20 20 20 | (make-symbol."responsev")))..... |
| 19080 | 60 28 6c 65 74 20 28 28 2c 72 65 73 70 6f 6e 73 65 76 20 2c 63 61 6c 6c 29 0a 20 20 20 20 20 20 | `(let.((,responsev.,call)....... |
| 190a0 | 20 20 20 20 20 28 2c 73 74 61 74 75 73 2d 63 6f 64 65 76 20 2c 73 74 61 74 75 73 2d 63 6f 64 65 | .....(,status-codev.,status-code |
| 190c0 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 2c 68 65 61 64 65 72 2d 6e 61 6d 65 76 20 2c 68 65 61 | )............(,header-namev.,hea |
| 190e0 | 64 65 72 2d 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 2c 68 65 61 64 65 72 2d 76 61 | der-name)............(,header-va |
| 19100 | 6c 75 65 76 20 2c 68 65 61 64 65 72 2d 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 | luev.,header-value)............( |
| 19120 | 2c 68 65 61 64 65 72 2d 6c 69 73 74 76 20 2c 68 65 61 64 65 72 2d 6c 69 73 74 29 0a 20 20 20 20 | ,header-listv.,header-list)..... |
| 19140 | 20 20 20 20 20 20 20 28 2c 68 65 61 64 65 72 2d 6c 69 73 74 2d 6d 61 74 63 68 76 20 2c 68 65 61 | .......(,header-list-matchv.,hea |
| 19160 | 64 65 72 2d 6c 69 73 74 2d 6d 61 74 63 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 2c 62 6f 64 | der-list-match)............(,bod |
| 19180 | 79 2d 6d 61 74 63 68 76 20 2c 62 6f 64 79 2d 6d 61 74 63 68 29 29 0a 20 20 20 20 20 20 20 28 77 | y-matchv.,body-match))........(w |
| 191a0 | 68 65 6e 20 2c 73 74 61 74 75 73 2d 63 6f 64 65 76 0a 20 20 20 20 20 20 20 20 20 28 73 68 6f 75 | hen.,status-codev..........(shou |
| 191c0 | 6c 64 0a 20 20 20 20 20 20 20 20 20 20 28 65 71 75 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 2c | ld...........(equal............, |
| 191e0 | 73 74 61 74 75 73 2d 63 6f 64 65 76 0a 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 | status-codev............(plist-g |
| 19200 | 65 74 20 2c 72 65 73 70 6f 6e 73 65 76 20 3a 73 74 61 74 75 73 29 29 29 29 0a 20 20 20 20 20 20 | et.,responsev.:status))))....... |
| 19220 | 20 28 77 68 65 6e 20 28 6f 72 20 2c 68 65 61 64 65 72 2d 6e 61 6d 65 76 20 2c 68 65 61 64 65 72 | .(when.(or.,header-namev.,header |
| 19240 | 2d 6c 69 73 74 76 20 2c 68 65 61 64 65 72 2d 6c 69 73 74 2d 6d 61 74 63 68 76 29 0a 20 20 20 20 | -listv.,header-list-matchv)..... |
| 19260 | 20 20 20 20 20 28 6c 65 74 20 28 28 68 64 72 20 28 70 6c 69 73 74 2d 67 65 74 20 2c 72 65 73 70 | .....(let.((hdr.(plist-get.,resp |
| 19280 | 6f 6e 73 65 76 20 3a 68 65 61 64 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 77 68 65 | onsev.:header)))............(whe |
| 192a0 | 6e 20 2c 68 65 61 64 65 72 2d 6e 61 6d 65 76 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 | n.,header-namev..............(if |
| 192c0 | 20 2c 68 65 61 64 65 72 2d 76 61 6c 75 65 76 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .,header-valuev................. |
| 192e0 | 20 28 73 68 6f 75 6c 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 71 75 61 | .(should...................(equa |
| 19300 | 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 68 65 61 64 65 72 2d 76 61 6c | l....................,header-val |
| 19320 | 75 65 76 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 73 73 6f 63 2d 64 65 | uev....................(assoc-de |
| 19340 | 66 61 75 6c 74 20 2c 68 65 61 64 65 72 2d 6e 61 6d 65 76 20 68 64 72 29 29 29 0a 20 20 20 20 20 | fault.,header-namev.hdr)))...... |
| 19360 | 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 45 6c 73 65 20 77 65 20 77 61 6e 74 20 74 6f 20 65 | ............;;.Else.we.want.to.e |
| 19380 | 6e 73 75 72 65 20 74 68 65 20 68 65 61 64 65 72 20 69 73 6e 27 74 20 74 68 65 72 65 0a 20 20 20 | nsure.the.header.isn't.there.... |
| 193a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 68 6f 75 6c 64 0a 20 20 20 20 20 20 20 20 20 20 | ..............(should........... |
| 193c0 | 20 20 20 20 20 20 20 20 28 65 71 20 6e 69 6c 20 28 61 73 73 6f 63 2d 64 65 66 61 75 6c 74 20 2c | ........(eq.nil.(assoc-default., |
| 193e0 | 68 65 61 64 65 72 2d 6e 61 6d 65 76 20 68 64 72 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 | header-namev.hdr)))))........... |
| 19400 | 20 28 77 68 65 6e 20 2c 68 65 61 64 65 72 2d 6c 69 73 74 76 0a 20 20 20 20 20 20 20 20 20 20 20 | .(when.,header-listv............ |
| 19420 | 20 20 28 6c 6f 6f 70 20 66 6f 72 20 72 65 71 64 2d 68 64 72 20 69 6e 20 2c 68 65 61 64 65 72 2d | ..(loop.for.reqd-hdr.in.,header- |
| 19440 | 6c 69 73 74 76 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 28 73 68 6f 75 6c 64 | listv.................do.(should |
| 19460 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 71 75 61 6c 0a 20 20 20 20 | .....................(equal..... |
| 19480 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 73 73 6f 63 2d 64 65 66 61 75 6c 74 20 | .................(assoc-default. |
| 194a0 | 28 63 61 72 20 72 65 71 64 2d 68 64 72 29 20 68 64 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | (car.reqd-hdr).hdr)............. |
| 194c0 | 20 20 20 20 20 20 20 20 20 28 63 64 72 20 72 65 71 64 2d 68 64 72 29 29 29 29 29 0a 20 20 20 20 | .........(cdr.reqd-hdr)))))..... |
| 194e0 | 20 20 20 20 20 20 20 28 77 68 65 6e 20 2c 68 65 61 64 65 72 2d 6c 69 73 74 2d 6d 61 74 63 68 76 | .......(when.,header-list-matchv |
| 19500 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 6f 70 20 66 6f 72 20 72 65 71 64 2d 68 64 72 | ..............(loop.for.reqd-hdr |
| 19520 | 20 69 6e 20 2c 68 65 61 64 65 72 2d 6c 69 73 74 2d 6d 61 74 63 68 76 0a 20 20 20 20 20 20 20 20 | .in.,header-list-matchv......... |
| 19540 | 20 20 20 20 20 20 20 20 64 6f 20 28 73 68 6f 75 6c 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | ........do.(should.............. |
| 19560 | 20 20 20 20 20 20 20 28 3e 3d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .......(>=...................... |
| 19580 | 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | (string-match................... |
| 195a0 | 20 20 20 20 28 63 64 72 20 72 65 71 64 2d 68 64 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | ....(cdr.reqd-hdr).............. |
| 195c0 | 20 20 20 20 20 20 20 20 20 28 61 73 73 6f 63 2d 64 65 66 61 75 6c 74 20 28 63 61 72 20 72 65 71 | .........(assoc-default.(car.req |
| 195e0 | 64 2d 68 64 72 29 20 68 64 72 29 29 20 30 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 28 77 68 65 | d-hdr).hdr)).0))))))........(whe |
| 19600 | 6e 20 2c 62 6f 64 79 2d 6d 61 74 63 68 76 0a 20 20 20 20 20 20 20 20 20 28 73 68 6f 75 6c 64 2d | n.,body-matchv..........(should- |
| 19620 | 6d 61 74 63 68 0a 20 20 20 20 20 20 20 20 20 20 2c 62 6f 64 79 2d 6d 61 74 63 68 76 0a 20 20 20 | match...........,body-matchv.... |
| 19640 | 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 65 74 20 2c 72 65 73 70 6f 6e 73 65 76 20 3a 72 65 | .......(plist-get.,responsev.:re |
| 19660 | 73 75 6c 74 2d 73 74 72 69 6e 67 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 | sult-string))))))..(defun.elnode |
| 19680 | 2d 2d 6c 6f 67 2d 66 6e 20 28 73 65 72 76 65 72 20 63 6f 6e 20 6d 73 67 29 0a 20 20 22 4c 6f 67 | --log-fn.(server.con.msg)..."Log |
| 196a0 | 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 65 6c 6e 6f 64 65 2e 0a 0a 53 65 72 76 65 73 20 6f 6e | .function.for.elnode...Serves.on |
| 196c0 | 6c 79 20 74 6f 20 63 6f 6e 6e 65 63 74 20 74 68 65 20 73 65 72 76 65 72 20 70 72 6f 63 65 73 73 | ly.to.connect.the.server.process |
| 196e0 | 20 74 6f 20 74 68 65 20 63 6c 69 65 6e 74 20 70 72 6f 63 65 73 73 65 73 22 0a 20 20 28 70 72 6f | .to.the.client.processes"...(pro |
| 19700 | 63 65 73 73 2d 70 75 74 20 63 6f 6e 20 3a 73 65 72 76 65 72 20 73 65 72 76 65 72 29 29 0a 0a 28 | cess-put.con.:server.server))..( |
| 19720 | 64 65 66 76 61 72 20 65 6c 6e 6f 64 65 2d 68 61 6e 64 6c 65 72 2d 68 69 73 74 6f 72 79 20 27 28 | defvar.elnode-handler-history.'( |
| 19740 | 29 0a 20 20 22 54 68 65 20 68 69 73 74 6f 72 79 20 6f 66 20 68 61 6e 64 6c 65 72 73 20 62 6f 75 | )..."The.history.of.handlers.bou |
| 19760 | 6e 64 20 74 6f 20 73 65 72 76 65 72 73 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 65 6c 6e 6f 64 65 | nd.to.servers.")..(defvar.elnode |
| 19780 | 2d 70 6f 72 74 2d 68 69 73 74 6f 72 79 20 27 28 29 0a 20 20 22 54 68 65 20 68 69 73 74 6f 72 79 | -port-history.'()..."The.history |
| 197a0 | 20 6f 66 20 70 6f 72 74 73 20 74 68 61 74 20 73 65 72 76 65 72 73 20 61 72 65 20 73 74 61 72 74 | .of.ports.that.servers.are.start |
| 197c0 | 65 64 20 6f 6e 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 65 6c 6e 6f 64 65 2d 68 6f 73 74 2d 68 69 | ed.on.")..(defvar.elnode-host-hi |
| 197e0 | 73 74 6f 72 79 20 27 28 29 0a 20 20 22 54 68 65 20 68 69 73 74 6f 72 79 20 6f 66 20 68 6f 73 74 | story.'()..."The.history.of.host |
| 19800 | 73 20 74 68 61 74 20 73 65 72 76 65 72 73 20 61 72 65 20 73 74 61 72 74 65 64 20 6f 6e 2e 22 29 | s.that.servers.are.started.on.") |
| 19820 | 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 70 6f 72 74 73 20 28 29 0a 20 20 22 4c 69 73 74 | ..(defun.elnode-ports.()..."List |
| 19840 | 20 6f 66 20 61 6c 6c 20 70 6f 72 74 73 20 63 75 72 72 65 6e 74 6c 79 20 69 6e 20 75 73 65 20 62 | .of.all.ports.currently.in.use.b |
| 19860 | 79 20 65 6c 6e 6f 64 65 2e 22 0a 20 20 28 6d 61 70 63 61 72 20 27 63 61 72 20 65 6c 6e 6f 64 65 | y.elnode."...(mapcar.'car.elnode |
| 19880 | 2d 73 65 72 76 65 72 2d 73 6f 63 6b 65 74 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2f | -server-socket))..(defun.elnode/ |
| 198a0 | 6d 61 6b 65 2d 73 65 72 76 69 63 65 20 28 68 6f 73 74 20 70 6f 72 74 20 73 65 72 76 69 63 65 2d | make-service.(host.port.service- |
| 198c0 | 6d 61 70 70 69 6e 67 73 20 72 65 71 75 65 73 74 2d 68 61 6e 64 6c 65 72 20 64 65 66 65 72 2d 6d | mappings.request-handler.defer-m |
| 198e0 | 6f 64 65 29 0a 20 20 22 4d 61 6b 65 20 61 6e 20 61 63 74 75 61 6c 20 54 43 50 20 73 65 72 76 65 | ode)..."Make.an.actual.TCP.serve |
| 19900 | 72 2e 22 0a 20 20 28 6c 65 74 20 28 28 61 6e 2d 62 75 66 20 28 67 65 74 2d 62 75 66 66 65 72 2d | r."...(let.((an-buf.(get-buffer- |
| 19920 | 63 72 65 61 74 65 20 22 2a 65 6c 6e 6f 64 65 2d 77 65 62 73 65 72 76 65 72 2a 22 29 29 29 0a 20 | create."*elnode-webserver*"))).. |
| 19940 | 20 20 20 28 6d 61 6b 65 2d 6e 65 74 77 6f 72 6b 2d 70 72 6f 63 65 73 73 0a 20 20 20 20 20 3a 6e | ...(make-network-process......:n |
| 19960 | 61 6d 65 20 22 2a 65 6c 6e 6f 64 65 2d 77 65 62 73 65 72 76 65 72 2d 70 72 6f 63 2a 22 0a 20 20 | ame."*elnode-webserver-proc*"... |
| 19980 | 20 20 20 3a 62 75 66 66 65 72 20 61 6e 2d 62 75 66 0a 20 20 20 20 20 3a 73 65 72 76 65 72 20 74 | ...:buffer.an-buf......:server.t |
| 199a0 | 0a 20 20 20 20 20 3a 6e 6f 77 61 69 74 20 28 3c 20 65 6d 61 63 73 2d 6d 61 6a 6f 72 2d 76 65 72 | ......:nowait.(<.emacs-major-ver |
| 199c0 | 73 69 6f 6e 20 32 36 29 0a 20 20 20 20 20 3a 68 6f 73 74 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 | sion.26)......:host.(cond....... |
| 199e0 | 20 20 20 20 20 20 20 28 28 65 71 75 61 6c 20 68 6f 73 74 20 22 6c 6f 63 61 6c 68 6f 73 74 22 29 | .......((equal.host."localhost") |
| 19a00 | 20 27 6c 6f 63 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 65 71 75 61 6c 20 68 6f | .'local)..............((equal.ho |
| 19a20 | 73 74 20 22 2a 22 29 20 6e 69 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 68 6f 73 | st."*").nil)..............(t.hos |
| 19a40 | 74 29 29 0a 20 20 20 20 20 3a 73 65 72 76 69 63 65 20 70 6f 72 74 0a 20 20 20 20 20 3a 63 6f 64 | t))......:service.port......:cod |
| 19a60 | 69 6e 67 20 27 28 72 61 77 2d 74 65 78 74 2d 75 6e 69 78 20 2e 20 72 61 77 2d 74 65 78 74 2d 75 | ing.'(raw-text-unix...raw-text-u |
| 19a80 | 6e 69 78 29 0a 20 20 20 20 20 3a 66 61 6d 69 6c 79 20 27 69 70 76 34 0a 20 20 20 20 20 3a 66 69 | nix)......:family.'ipv4......:fi |
| 19aa0 | 6c 74 65 72 20 27 65 6c 6e 6f 64 65 2d 2d 66 69 6c 74 65 72 0a 20 20 20 20 20 3a 73 65 6e 74 69 | lter.'elnode--filter......:senti |
| 19ac0 | 6e 65 6c 20 27 65 6c 6e 6f 64 65 2d 2d 73 65 6e 74 69 6e 65 6c 0a 20 20 20 20 20 3a 6c 6f 67 20 | nel.'elnode--sentinel......:log. |
| 19ae0 | 27 65 6c 6e 6f 64 65 2d 2d 6c 6f 67 2d 66 6e 0a 20 20 20 20 20 3a 70 6c 69 73 74 20 28 6c 69 73 | 'elnode--log-fn......:plist.(lis |
| 19b00 | 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 65 6c 6e 6f 64 65 2d 73 65 72 76 69 63 65 2d 6d | t..............:elnode-service-m |
| 19b20 | 61 70 20 73 65 72 76 69 63 65 2d 6d 61 70 70 69 6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ap.service-mappings............. |
| 19b40 | 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 68 61 6e 64 6c 65 72 20 72 65 71 75 65 73 74 2d 68 61 | .:elnode-http-handler.request-ha |
| 19b60 | 6e 64 6c 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 65 6c 6e 6f 64 65 2d 64 65 66 65 72 | ndler..............:elnode-defer |
| 19b80 | 2d 6d 6f 64 65 20 64 65 66 65 72 2d 6d 6f 64 65 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f | -mode.defer-mode))))..;;;###auto |
| 19ba0 | 6c 6f 61 64 0a 28 64 65 66 75 6e 2a 20 65 6c 6e 6f 64 65 2d 73 74 61 72 74 20 28 72 65 71 75 65 | load.(defun*.elnode-start.(reque |
| 19bc0 | 73 74 2d 68 61 6e 64 6c 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | st-handler...................... |
| 19be0 | 20 26 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 6f 72 74 | .&key.......................port |
| 19c00 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 6f 73 74 20 22 6c 6f | .......................(host."lo |
| 19c20 | 63 61 6c 68 6f 73 74 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | calhost")....................... |
| 19c40 | 28 64 65 66 65 72 2d 6d 6f 64 65 20 3a 6d 61 6e 61 67 65 64 29 0a 20 20 20 20 20 20 20 20 20 20 | (defer-mode.:managed)........... |
| 19c60 | 20 20 20 20 20 20 20 20 20 20 20 20 73 65 72 76 69 63 65 2d 6d 61 70 70 69 6e 67 73 29 0a 20 20 | ............service-mappings)... |
| 19c80 | 22 53 74 61 72 74 20 61 20 73 65 72 76 65 72 20 75 73 69 6e 67 20 52 45 51 55 45 53 54 2d 48 41 | "Start.a.server.using.REQUEST-HA |
| 19ca0 | 4e 44 4c 45 52 2e 0a 0a 52 45 51 55 45 53 54 2d 48 41 4e 44 4c 45 52 20 77 69 6c 6c 20 68 61 6e | NDLER...REQUEST-HANDLER.will.han |
| 19cc0 | 64 6c 65 20 72 65 71 75 65 73 74 73 20 6f 6e 20 50 4f 52 54 20 6f 6e 20 48 4f 53 54 20 28 77 68 | dle.requests.on.PORT.on.HOST.(wh |
| 19ce0 | 69 63 68 20 69 73 0a 27 6c 6f 63 61 6c 68 6f 73 74 27 20 62 79 20 64 65 66 61 75 6c 74 29 2e 0a | ich.is.'localhost'.by.default).. |
| 19d00 | 0a 52 45 51 55 45 53 54 2d 48 41 4e 44 4c 45 52 20 69 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 77 | .REQUEST-HANDLER.is.a.function.w |
| 19d20 | 68 69 63 68 20 69 73 20 63 61 6c 6c 65 64 20 77 69 74 68 20 74 68 65 20 72 65 71 75 65 73 74 2e | hich.is.called.with.the.request. |
| 19d40 | 0a 54 68 65 20 66 75 6e 63 74 69 6f 6e 20 69 73 20 63 61 6c 6c 65 64 20 77 69 74 68 20 6f 6e 65 | .The.function.is.called.with.one |
| 19d60 | 20 61 72 67 75 6d 65 6e 74 2c 20 77 68 69 63 68 20 69 73 20 74 68 65 0a 68 74 74 70 2d 63 6f 6e | .argument,.which.is.the.http-con |
| 19d80 | 6e 65 63 74 69 6f 6e 2e 0a 0a 59 6f 75 20 63 61 6e 20 75 73 65 20 66 75 6e 63 74 69 6f 6e 73 20 | nection...You.can.use.functions. |
| 19da0 | 73 75 63 68 20 61 73 20 60 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 74 61 72 74 27 20 61 6e 64 0a | such.as.`elnode-http-start'.and. |
| 19dc0 | 60 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 65 6e 64 2d 62 6f 64 79 27 20 74 6f 20 73 65 6e 64 20 | `elnode-http-send-body'.to.send. |
| 19de0 | 74 68 65 20 68 74 74 70 20 72 65 73 70 6f 6e 73 65 2e 0a 0a 45 78 61 6d 70 6c 65 3a 0a 0a 20 20 | the.http.response...Example:.... |
| 19e00 | 28 64 65 66 75 6e 20 6e 69 63 2d 73 65 72 76 65 72 20 28 68 74 74 70 63 6f 6e 29 0a 20 20 20 20 | (defun.nic-server.(httpcon)..... |
| 19e20 | 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 74 61 72 74 20 68 74 74 70 63 6f 6e 20 32 30 30 20 27 | (elnode-http-start.httpcon.200.' |
| 19e40 | 28 5c 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 5c 22 20 2e 20 5c 22 74 65 78 74 2f 68 74 6d 6c 5c | (\"Content-Type\"...\"text/html\ |
| 19e60 | 22 29 29 0a 20 20 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 72 65 74 75 72 6e 20 68 74 74 70 | ")).....(elnode-http-return.http |
| 19e80 | 63 6f 6e 20 5c 22 3c 68 74 6d 6c 3e 3c 62 3e 42 49 47 21 3c 2f 62 3e 3c 2f 68 74 6d 6c 3e 5c 22 | con.\"<html><b>BIG!</b></html>\" |
| 19ea0 | 29 29 0a 20 20 28 65 6c 6e 6f 64 65 2d 73 74 61 72 74 20 27 6e 69 63 2d 73 65 72 76 65 72 29 0a | ))...(elnode-start.'nic-server). |
| 19ec0 | 0a 4e 6f 77 20 76 69 73 69 74 20 68 74 74 70 3a 2f 2f 31 32 37 2e 30 2e 30 2e 31 3a 38 30 30 30 | .Now.visit.http://127.0.0.1:8000 |
| 19ee0 | 0a 0a 49 66 20 50 4f 52 54 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 74 68 65 6e 20 72 75 6e 20 73 | ..If.PORT.is.non-nil,.then.run.s |
| 19f00 | 65 72 76 65 72 20 6f 6e 20 50 4f 52 54 2c 20 6f 74 68 65 72 77 69 73 65 20 64 65 66 61 75 6c 74 | erver.on.PORT,.otherwise.default |
| 19f20 | 20 74 6f 0a 38 30 30 30 2e 0a 0a 49 66 20 48 4f 53 54 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 74 | .to.8000...If.HOST.is.non-nil,.t |
| 19f40 | 68 65 6e 20 72 75 6e 20 74 68 65 20 73 65 72 76 65 72 20 6f 6e 20 74 68 65 20 73 70 65 63 69 66 | hen.run.the.server.on.the.specif |
| 19f60 | 69 65 64 20 6c 6f 63 61 6c 20 49 50 0a 61 64 64 72 65 73 73 2c 20 6f 74 68 65 72 77 69 73 65 20 | ied.local.IP.address,.otherwise. |
| 19f80 | 75 73 65 20 6c 6f 63 61 6c 68 6f 73 74 2e 20 20 41 20 66 65 77 20 6e 61 6d 65 73 20 61 72 65 20 | use.localhost...A.few.names.are. |
| 19fa0 | 70 72 65 64 65 66 69 6e 65 64 3a 0a 0a 20 20 5c 22 6c 6f 63 61 6c 68 6f 73 74 5c 22 20 69 73 20 | predefined:....\"localhost\".is. |
| 19fc0 | 31 32 37 2e 30 2e 30 2e 31 0a 20 20 5c 22 2a 5c 22 20 69 73 20 30 2e 30 2e 30 2e 30 0a 0a 41 64 | 127.0.0.1...\"*\".is.0.0.0.0..Ad |
| 19fe0 | 64 69 74 69 6f 6e 61 6c 6c 79 2c 20 79 6f 75 20 6d 61 79 20 73 70 65 63 69 66 69 79 20 61 6e 20 | ditionally,.you.may.specifiy.an. |
| 1a000 | 49 50 20 61 64 64 72 65 73 73 2c 20 65 2e 67 20 5c 22 31 2e 32 2e 33 2e 34 5c 22 0a 0a 4e 6f 74 | IP.address,.e.g.\"1.2.3.4\"..Not |
| 1a020 | 65 20 74 68 61 74 20 61 6c 74 68 6f 75 67 68 20 48 4f 53 54 20 6d 61 79 20 62 65 20 73 70 65 63 | e.that.although.HOST.may.be.spec |
| 1a040 | 69 66 69 65 64 2c 20 65 6c 6e 6f 64 65 20 64 6f 65 73 20 6e 6f 74 0a 64 69 73 61 6d 62 69 67 75 | ified,.elnode.does.not.disambigu |
| 1a060 | 61 74 65 20 6f 6e 20 72 75 6e 6e 69 6e 67 20 73 65 72 76 65 72 73 20 62 79 20 48 4f 53 54 2e 20 | ate.on.running.servers.by.HOST.. |
| 1a080 | 20 53 6f 20 79 6f 75 20 63 61 6e 6e 6f 74 20 73 74 61 72 74 20 74 77 6f 0a 65 6c 6e 6f 64 65 20 | .So.you.cannot.start.two.elnode. |
| 1a0a0 | 73 65 72 76 65 72 73 20 6f 6e 20 74 68 65 20 73 61 6d 65 20 70 6f 72 74 20 6f 6e 20 64 69 66 66 | servers.on.the.same.port.on.diff |
| 1a0c0 | 65 72 65 6e 74 20 68 6f 73 74 73 2e 0a 0a 44 45 46 45 52 2d 4d 4f 44 45 20 6d 61 79 20 62 65 20 | erent.hosts...DEFER-MODE.may.be. |
| 1a0e0 | 75 73 65 64 20 74 6f 20 63 6f 6e 74 72 6f 6c 20 68 6f 77 20 64 65 66 65 72 72 65 64 20 68 61 6e | used.to.control.how.deferred.han |
| 1a100 | 64 6c 65 72 73 20 61 72 65 0a 6d 61 6e 61 67 65 64 20 66 6f 72 20 74 68 69 73 20 73 65 72 76 65 | dlers.are.managed.for.this.serve |
| 1a120 | 72 2e 0a 0a 53 45 52 56 49 43 45 2d 4d 41 50 50 49 4e 47 53 20 69 73 20 61 6e 20 61 6c 69 73 74 | r...SERVICE-MAPPINGS.is.an.alist |
| 1a140 | 20 6f 66 20 73 65 72 76 69 63 65 20 72 65 73 6f 75 72 63 65 20 73 79 6d 62 6f 6c 73 20 6d 61 70 | .of.service.resource.symbols.map |
| 1a160 | 70 65 64 0a 74 6f 20 69 6e 74 65 67 65 72 20 70 6f 72 74 20 6e 75 6d 62 65 72 73 2e 20 20 54 68 | ped.to.integer.port.numbers...Th |
| 1a180 | 69 73 20 63 61 6e 20 62 65 20 73 75 70 70 6c 69 65 64 20 74 6f 20 65 6c 6e 6f 64 65 2d 73 74 61 | is.can.be.supplied.to.elnode-sta |
| 1a1a0 | 72 74 20 74 6f 0a 61 6c 6c 6f 77 20 69 74 20 74 6f 20 6d 61 70 20 73 65 72 76 69 63 65 20 72 65 | rt.to.allow.it.to.map.service.re |
| 1a1c0 | 73 6f 75 72 63 65 73 20 64 65 66 69 6e 65 64 20 62 79 20 68 61 6e 64 6c 65 72 73 20 74 6f 0a 64 | sources.defined.by.handlers.to.d |
| 1a1e0 | 69 66 66 65 72 65 6e 74 20 54 43 50 20 70 6f 72 74 73 20 61 6e 64 20 74 68 65 72 65 66 6f 72 65 | ifferent.TCP.ports.and.therefore |
| 1a200 | 20 64 69 66 66 65 72 65 6e 74 20 45 6d 61 63 73 20 69 6e 73 74 61 6e 63 65 73 2e 0a 0a 54 68 65 | .different.Emacs.instances...The |
| 1a220 | 20 6c 69 73 74 20 6f 66 20 53 45 52 56 49 43 45 2d 4d 41 50 50 49 4e 47 53 20 69 73 20 61 6c 73 | .list.of.SERVICE-MAPPINGS.is.als |
| 1a240 | 6f 20 75 73 65 64 20 74 6f 20 73 74 61 72 74 20 61 6e 63 69 6c 6c 69 61 72 79 0a 70 6f 72 74 20 | o.used.to.start.ancilliary.port. |
| 1a260 | 73 65 72 76 65 72 73 2e 20 20 41 6e 63 69 6c 6c 69 61 72 79 20 70 6f 72 74 20 73 65 72 76 65 72 | servers...Ancilliary.port.server |
| 1a280 | 73 20 73 68 6f 75 6c 64 20 62 65 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a 73 74 6f 70 70 65 | s.should.be.automatically.stoppe |
| 1a2a0 | 64 20 77 68 65 6e 20 74 68 65 20 6d 61 69 6e 20 73 65 72 76 65 72 20 69 73 20 73 74 6f 70 70 65 | d.when.the.main.server.is.stoppe |
| 1a2c0 | 64 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 0a 20 20 20 28 6c 65 74 20 28 28 68 61 6e | d."...(interactive....(let.((han |
| 1a2e0 | 64 6c 65 72 20 28 63 6f 6d 70 6c 65 74 69 6e 67 2d 72 65 61 64 20 22 48 61 6e 64 6c 65 72 20 66 | dler.(completing-read."Handler.f |
| 1a300 | 75 6e 63 74 69 6f 6e 3a 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | unction:."...................... |
| 1a320 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 61 72 72 61 79 20 27 66 62 6f 75 6e 64 70 20 74 | ..............obarray.'fboundp.t |
| 1a340 | 20 6e 69 6c 20 6e 69 6c 29 29 0a 20 20 20 20 20 20 20 20 20 28 70 6f 72 74 20 28 72 65 61 64 2d | .nil.nil))..........(port.(read- |
| 1a360 | 6e 75 6d 62 65 72 20 22 50 6f 72 74 3a 20 22 20 38 30 30 30 29 29 0a 20 20 20 20 20 20 20 20 20 | number."Port:.".8000)).......... |
| 1a380 | 28 68 6f 73 74 20 28 72 65 61 64 2d 73 74 72 69 6e 67 20 22 48 6f 73 74 3a 20 22 20 22 6c 6f 63 | (host.(read-string."Host:."."loc |
| 1a3a0 | 61 6c 68 6f 73 74 22 20 27 65 6c 6e 6f 64 65 2d 68 6f 73 74 2d 68 69 73 74 6f 72 79 29 29 29 0a | alhost".'elnode-host-history))). |
| 1a3c0 | 20 20 20 20 20 28 6c 69 73 74 20 28 69 6e 74 65 72 6e 20 68 61 6e 64 6c 65 72 29 20 3a 70 6f 72 | .....(list.(intern.handler).:por |
| 1a3e0 | 74 20 70 6f 72 74 20 3a 68 6f 73 74 20 68 6f 73 74 29 29 29 0a 20 20 28 6c 65 74 20 28 28 70 6f | t.port.:host.host)))...(let.((po |
| 1a400 | 72 74 20 28 6f 72 20 70 6f 72 74 20 38 30 30 30 29 29 0a 20 20 20 20 20 20 20 20 28 68 6f 73 74 | rt.(or.port.8000)).........(host |
| 1a420 | 20 28 6f 72 20 68 6f 73 74 20 22 6c 6f 63 61 6c 68 6f 73 74 22 29 29 29 0a 20 20 20 20 28 75 6e | .(or.host."localhost"))).....(un |
| 1a440 | 6c 65 73 73 20 28 61 73 73 6f 63 20 70 6f 72 74 20 65 6c 6e 6f 64 65 2d 73 65 72 76 65 72 2d 73 | less.(assoc.port.elnode-server-s |
| 1a460 | 6f 63 6b 65 74 29 0a 20 20 20 20 20 20 3b 3b 20 41 64 64 20 61 20 6e 65 77 20 73 65 72 76 65 72 | ocket).......;;.Add.a.new.server |
| 1a480 | 20 73 6f 63 6b 65 74 20 74 6f 20 74 68 65 20 6c 69 73 74 0a 20 20 20 20 20 20 28 73 65 74 71 20 | .socket.to.the.list.......(setq. |
| 1a4a0 | 65 6c 6e 6f 64 65 2d 73 65 72 76 65 72 2d 73 6f 63 6b 65 74 0a 20 20 20 20 20 20 20 20 20 20 20 | elnode-server-socket............ |
| 1a4c0 | 20 28 63 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 70 6f 72 74 0a 20 | .(cons..............(cons.port.. |
| 1a4e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 62 75 66 20 28 67 65 | ..................(let.((buf.(ge |
| 1a500 | 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 20 22 2a 65 6c 6e 6f 64 65 2d 77 65 62 73 65 72 76 | t-buffer-create."*elnode-webserv |
| 1a520 | 65 72 2a 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | er*")).......................... |
| 1a540 | 28 61 6e 63 69 6c 6c 69 61 72 79 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | (ancilliarys.................... |
| 1a560 | 20 20 20 20 20 20 20 28 6c 6f 6f 70 20 66 6f 72 20 28 72 65 73 6f 75 72 63 65 20 2e 20 70 6f 72 | .......(loop.for.(resource...por |
| 1a580 | 74 29 20 69 6e 20 73 65 72 76 69 63 65 2d 6d 61 70 70 69 6e 67 73 0a 20 20 20 20 20 20 20 20 20 | t).in.service-mappings.......... |
| 1a5a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 | ....................collect..... |
| 1a5c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f | ...........................(elno |
| 1a5e0 | 64 65 2f 6d 61 6b 65 2d 73 65 72 76 69 63 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | de/make-service................. |
| 1a600 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 74 20 70 6f 72 74 20 73 65 72 76 69 63 | ................host.port.servic |
| 1a620 | 65 2d 6d 61 70 70 69 6e 67 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | e-mappings...................... |
| 1a640 | 20 20 20 20 20 20 20 20 20 20 20 72 65 71 75 65 73 74 2d 68 61 6e 64 6c 65 72 20 64 65 66 65 72 | ...........request-handler.defer |
| 1a660 | 2d 6d 6f 64 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | -mode)))........................ |
| 1a680 | 20 20 28 6d 61 69 6e 20 28 65 6c 6e 6f 64 65 2f 6d 61 6b 65 2d 73 65 72 76 69 63 65 0a 20 20 20 | ..(main.(elnode/make-service.... |
| 1a6a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 6f 73 | .............................hos |
| 1a6c0 | 74 20 70 6f 72 74 20 73 65 72 76 69 63 65 2d 6d 61 70 70 69 6e 67 73 0a 20 20 20 20 20 20 20 20 | t.port.service-mappings......... |
| 1a6e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 71 75 65 73 74 2d | ........................request- |
| 1a700 | 68 61 6e 64 6c 65 72 20 64 65 66 65 72 2d 6d 6f 64 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 | handler.defer-mode)))........... |
| 1a720 | 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 41 64 64 20 74 68 65 20 6c 69 6e 6b 20 62 65 74 77 65 | ...........;;.Add.the.link.betwe |
| 1a740 | 65 6e 20 74 68 65 20 6d 61 69 6e 20 61 6e 64 20 74 68 65 20 61 6e 63 69 6c 6c 69 61 72 79 73 0a | en.the.main.and.the.ancilliarys. |
| 1a760 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 70 75 | .....................(process-pu |
| 1a780 | 74 20 6d 61 69 6e 20 3a 65 6c 6e 6f 64 65 2d 61 6e 63 69 6c 6c 69 61 72 79 73 20 61 6e 63 69 6c | t.main.:elnode-ancilliarys.ancil |
| 1a7a0 | 6c 69 61 72 79 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 61 69 | liarys)......................mai |
| 1a7c0 | 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 6e 6f 64 65 2d 73 65 72 76 65 72 2d 73 | n))..............elnode-server-s |
| 1a7e0 | 6f 63 6b 65 74 29 29 29 29 29 0a 0a 3b 3b 20 54 4f 44 4f 3a 20 6d 61 6b 65 20 74 68 69 73 20 74 | ocket)))))..;;.TODO:.make.this.t |
| 1a800 | 61 6b 65 20 61 6e 20 61 72 67 75 6d 65 6e 74 20 66 6f 72 20 74 68 65 0a 28 64 65 66 75 6e 20 65 | ake.an.argument.for.the.(defun.e |
| 1a820 | 6c 6e 6f 64 65 2d 73 74 6f 70 20 28 70 6f 72 74 29 0a 20 20 22 53 74 6f 70 20 74 68 65 20 65 6c | lnode-stop.(port)..."Stop.the.el |
| 1a840 | 6e 6f 64 65 20 73 65 72 76 65 72 20 61 74 74 61 63 68 65 64 20 74 6f 20 50 4f 52 54 2e 22 0a 20 | node.server.attached.to.PORT.".. |
| 1a860 | 20 28 69 6e 74 65 72 61 63 74 69 76 65 0a 20 20 20 28 6c 65 74 20 28 28 70 72 74 0a 20 20 20 20 | .(interactive....(let.((prt..... |
| 1a880 | 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 74 6f 2d 6e 75 6d 62 65 72 0a 20 20 20 20 20 20 20 20 | ......(string-to-number......... |
| 1a8a0 | 20 20 20 28 63 6f 6d 70 6c 65 74 69 6e 67 2d 72 65 61 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ...(completing-read............. |
| 1a8c0 | 22 50 6f 72 74 3a 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 61 72 20 28 6c 61 | "Port:.".............(mapcar.(la |
| 1a8e0 | 6d 62 64 61 20 28 6e 29 20 28 66 6f 72 6d 61 74 20 22 25 73 22 20 6e 29 29 0a 20 20 20 20 20 20 | mbda.(n).(format."%s".n))....... |
| 1a900 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 70 6f 72 74 73 29 29 29 29 29 | ..............(elnode-ports))))) |
| 1a920 | 29 0a 20 20 20 20 20 28 6c 69 73 74 20 70 72 74 29 29 29 0a 20 20 28 6c 65 74 2a 20 28 28 73 65 | )......(list.prt)))...(let*.((se |
| 1a940 | 72 76 65 72 0a 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 61 73 73 6f 63 20 70 6f 72 74 20 65 | rver...........(or.(assoc.port.e |
| 1a960 | 6c 6e 6f 64 65 2d 73 65 72 76 65 72 2d 73 6f 63 6b 65 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 | lnode-server-socket)............ |
| 1a980 | 20 20 20 28 61 73 73 6f 63 20 28 66 6f 72 6d 61 74 20 22 25 64 22 20 70 6f 72 74 29 20 65 6c 6e | ...(assoc.(format."%d".port).eln |
| 1a9a0 | 6f 64 65 2d 73 65 72 76 65 72 2d 73 6f 63 6b 65 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 70 | ode-server-socket)))..........(p |
| 1a9c0 | 6f 72 74 2d 74 6f 2d 6b 69 6c 6c 20 28 63 61 72 2d 73 61 66 65 20 73 65 72 76 65 72 29 29 29 0a | ort-to-kill.(car-safe.server))). |
| 1a9e0 | 20 20 20 20 28 77 68 65 6e 20 73 65 72 76 65 72 0a 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 | ....(when.server.......(message. |
| 1aa00 | 22 64 65 6c 65 74 69 6e 67 20 73 65 72 76 65 72 20 70 72 6f 63 65 73 73 22 29 0a 20 20 20 20 20 | "deleting.server.process")...... |
| 1aa20 | 20 28 6c 6f 6f 70 20 66 6f 72 20 61 6e 63 69 6c 6c 69 61 72 79 0a 20 20 20 20 20 20 20 20 20 69 | .(loop.for.ancilliary..........i |
| 1aa40 | 6e 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 28 63 64 72 20 73 65 72 76 65 72 29 20 3a 65 6c 6e | n.(process-get.(cdr.server).:eln |
| 1aa60 | 6f 64 65 2d 61 6e 63 69 6c 6c 69 61 72 79 73 29 0a 20 20 20 20 20 20 20 20 20 64 6f 20 28 64 65 | ode-ancilliarys)..........do.(de |
| 1aa80 | 6c 65 74 65 2d 70 72 6f 63 65 73 73 20 61 6e 63 69 6c 6c 69 61 72 79 29 29 0a 20 20 20 20 20 20 | lete-process.ancilliary))....... |
| 1aaa0 | 3b 3b 20 4e 6f 77 20 74 68 65 20 6d 61 69 6e 20 6f 6e 65 0a 20 20 20 20 20 20 28 64 65 6c 65 74 | ;;.Now.the.main.one.......(delet |
| 1aac0 | 65 2d 70 72 6f 63 65 73 73 20 28 63 64 72 20 73 65 72 76 65 72 29 29 0a 20 20 20 20 20 20 28 73 | e-process.(cdr.server)).......(s |
| 1aae0 | 65 74 71 20 65 6c 6e 6f 64 65 2d 73 65 72 76 65 72 2d 73 6f 63 6b 65 74 0a 20 20 20 20 20 20 20 | etq.elnode-server-socket........ |
| 1ab00 | 20 20 20 20 20 3b 3b 20 72 65 6d 6f 76 65 2d 69 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6c | .....;;.remove-if.............(l |
| 1ab20 | 65 74 20 28 28 74 65 73 74 20 28 6c 61 6d 62 64 61 20 28 65 6c 65 6d 29 0a 20 20 20 20 20 20 20 | et.((test.(lambda.(elem)........ |
| 1ab40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 71 75 61 6c 20 28 63 61 72 20 65 | ...................(equal.(car.e |
| 1ab60 | 6c 65 6d 29 20 70 6f 72 74 2d 74 6f 2d 6b 69 6c 6c 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 | lem).port-to-kill)))............ |
| 1ab80 | 20 20 20 20 20 20 20 28 6c 20 65 6c 6e 6f 64 65 2d 73 65 72 76 65 72 2d 73 6f 63 6b 65 74 29 0a | .......(l.elnode-server-socket). |
| 1aba0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 | ..................result)....... |
| 1abc0 | 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 63 61 72 20 6c 29 0a 20 20 20 20 20 20 20 20 20 | ........(while.(car.l).......... |
| 1abe0 | 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 70 20 28 70 6f 70 20 6c 29 29 0a 20 20 20 20 20 20 20 | .......(let.((p.(pop.l))........ |
| 1ac00 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 20 28 63 64 72 20 6c 29 29 29 0a 20 20 20 20 | ...............(r.(cdr.l)))..... |
| 1ac20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6e 6f 74 20 28 66 75 6e 63 61 6c 6c 20 | ..............(if.(not.(funcall. |
| 1ac40 | 74 65 73 74 20 70 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 | test.p)).......................( |
| 1ac60 | 73 65 74 71 20 72 65 73 75 6c 74 20 28 63 6f 6e 73 20 70 20 72 65 73 75 6c 74 29 29 29 29 29 0a | setq.result.(cons.p.result))))). |
| 1ac80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 29 29 29 29 29 0a 0a 28 64 65 66 75 | ..............result)))))..(defu |
| 1aca0 | 6e 20 65 6c 6e 6f 64 65 2d 66 69 6e 64 2d 66 72 65 65 2d 73 65 72 76 69 63 65 20 28 29 0a 20 20 | n.elnode-find-free-service.()... |
| 1acc0 | 22 52 65 74 75 72 6e 20 61 20 66 72 65 65 20 28 75 6e 75 73 65 64 29 20 54 43 50 20 70 6f 72 74 | "Return.a.free.(unused).TCP.port |
| 1ace0 | 2e 0a 0a 54 68 65 20 70 6f 72 74 20 69 73 20 63 68 6f 73 65 6e 20 72 61 6e 64 6f 6d 6c 79 20 66 | ...The.port.is.chosen.randomly.f |
| 1ad00 | 72 6f 6d 20 74 68 65 20 65 70 68 65 6d 65 72 61 6c 20 70 6f 72 74 73 2e 20 22 0a 20 20 28 6c 65 | rom.the.ephemeral.ports.."...(le |
| 1ad20 | 74 20 28 6d 79 73 65 72 76 65 72 0a 20 20 20 20 20 20 20 20 28 70 6f 72 74 20 35 30 30 30 30 29 | t.(myserver.........(port.50000) |
| 1ad40 | 29 20 3b 20 74 68 69 73 20 73 68 6f 75 6c 64 20 62 65 20 65 70 68 65 6d 65 72 61 6c 20 62 61 73 | ).;.this.should.be.ephemeral.bas |
| 1ad60 | 65 0a 20 20 20 20 28 77 68 69 6c 65 0a 20 20 20 20 20 20 20 20 28 6e 6f 74 0a 20 20 20 20 20 20 | e.....(while.........(not....... |
| 1ad80 | 20 20 20 28 70 72 6f 63 65 73 73 70 0a 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 69 74 69 6f | ...(processp...........(conditio |
| 1ada0 | 6e 2d 63 61 73 65 20 73 69 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6d | n-case.sig...............(setq.m |
| 1adc0 | 79 73 65 72 76 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 6b | yserver.....................(mak |
| 1ade0 | 65 2d 6e 65 74 77 6f 72 6b 2d 70 72 6f 63 65 73 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | e-network-process............... |
| 1ae00 | 20 20 20 20 20 20 20 3a 6e 61 6d 65 20 22 2a 74 65 73 74 2d 70 72 6f 63 2a 22 0a 20 20 20 20 20 | .......:name."*test-proc*"...... |
| 1ae20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 65 72 76 65 72 20 74 0a 20 20 20 20 20 20 | ................:server.t....... |
| 1ae40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6e 6f 77 61 69 74 20 28 3c 20 65 6d 61 63 73 2d | ...............:nowait.(<.emacs- |
| 1ae60 | 6d 61 6a 6f 72 2d 76 65 72 73 69 6f 6e 20 32 36 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | major-version.26)............... |
| 1ae80 | 20 20 20 20 20 20 20 3a 68 6f 73 74 20 27 6c 6f 63 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 | .......:host.'local............. |
| 1aea0 | 20 20 20 20 20 20 20 20 20 3a 73 65 72 76 69 63 65 20 70 6f 72 74 0a 20 20 20 20 20 20 20 20 20 | .........:service.port.......... |
| 1aec0 | 20 20 20 20 20 20 20 20 20 20 20 20 3a 66 61 6d 69 6c 79 20 27 69 70 76 34 29 29 0a 20 20 20 20 | ............:family.'ipv4))..... |
| 1aee0 | 20 20 20 20 20 20 20 20 28 66 69 6c 65 2d 65 72 72 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ........(file-error............. |
| 1af00 | 20 28 69 66 20 28 65 71 75 61 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43 | .(if.(equal..................."C |
| 1af20 | 61 6e 6e 6f 74 20 62 69 6e 64 20 73 65 72 76 65 72 20 73 6f 63 6b 65 74 20 61 64 64 72 65 73 73 | annot.bind.server.socket.address |
| 1af40 | 20 61 6c 72 65 61 64 79 20 69 6e 20 75 73 65 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .already.in.use"................ |
| 1af60 | 20 20 20 28 6d 61 70 63 6f 6e 63 61 74 20 27 69 64 65 6e 74 69 74 79 20 28 63 64 72 20 73 69 67 | ...(mapconcat.'identity.(cdr.sig |
| 1af80 | 29 20 22 20 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 70 | )."."))..................(setq.p |
| 1afa0 | 6f 72 74 20 28 2b 20 35 30 30 30 30 20 28 72 61 6e 64 6f 6d 20 35 30 30 30 29 29 29 29 29 29 29 | ort.(+.50000.(random.5000))))))) |
| 1afc0 | 29 29 0a 20 20 20 20 28 64 65 6c 65 74 65 2d 70 72 6f 63 65 73 73 20 6d 79 73 65 72 76 65 72 29 | )).....(delete-process.myserver) |
| 1afe0 | 0a 20 20 20 20 70 6f 72 74 29 29 0a 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 6c 69 73 74 | .....port))...(defun.elnode-list |
| 1b000 | 2d 62 75 66 66 65 72 73 20 28 29 0a 20 20 22 4c 69 73 74 20 74 68 65 20 63 75 72 72 65 6e 74 20 | -buffers.()..."List.the.current. |
| 1b020 | 62 75 66 66 65 72 73 20 62 65 69 6e 67 20 6d 61 6e 61 67 65 64 20 62 79 20 45 6c 6e 6f 64 65 2e | buffers.being.managed.by.Elnode. |
| 1b040 | 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 29 0a 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e | "...(interactive)...(with-curren |
| 1b060 | 74 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 20 22 2a 65 6c | t-buffer.(get-buffer-create."*el |
| 1b080 | 6e 6f 64 65 2d 62 75 66 66 65 72 73 2a 22 29 0a 20 20 20 20 28 65 72 61 73 65 2d 62 75 66 66 65 | node-buffers*").....(erase-buffe |
| 1b0a0 | 72 29 0a 20 20 20 20 28 6d 61 70 63 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 62 29 0a 20 20 | r).....(mapc......(lambda.(b)... |
| 1b0c0 | 20 20 20 20 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 28 69 | .....(save-excursion..........(i |
| 1b0e0 | 66 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 20 5c 5c 2a 65 6c 6e 6f 64 65 2d 2e 2a 22 20 | f.(string-match.".\\*elnode-.*". |
| 1b100 | 28 62 75 66 66 65 72 2d 6e 61 6d 65 20 62 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 | (buffer-name.b))..............(i |
| 1b120 | 6e 73 65 72 74 20 28 66 6f 72 6d 61 74 20 22 25 73 5c 6e 22 20 62 29 29 29 0a 20 20 20 20 20 20 | nsert.(format."%s\n".b)))....... |
| 1b140 | 20 29 29 0a 20 20 20 20 20 28 73 6f 72 74 20 28 62 75 66 66 65 72 2d 6c 69 73 74 29 0a 20 20 20 | .))......(sort.(buffer-list).... |
| 1b160 | 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 61 20 62 29 0a 20 20 20 20 20 20 20 20 20 20 | ........(lambda.(a.b)........... |
| 1b180 | 20 20 20 28 73 74 72 69 6e 67 2d 6c 65 73 73 70 20 28 62 75 66 66 65 72 2d 6e 61 6d 65 20 62 29 | ...(string-lessp.(buffer-name.b) |
| 1b1a0 | 20 28 62 75 66 66 65 72 2d 6e 61 6d 65 20 61 29 29 29 29 29 29 0a 20 20 28 64 69 73 70 6c 61 79 | .(buffer-name.a))))))...(display |
| 1b1c0 | 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66 66 65 72 20 22 2a 65 6c 6e 6f 64 65 2d 62 75 66 | -buffer.(get-buffer."*elnode-buf |
| 1b1e0 | 66 65 72 73 2a 22 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 74 69 6d 65 2d 65 6e | fers*")))..(defun.elnode-time-en |
| 1b200 | 63 6f 64 65 20 28 74 69 6d 65 2d 73 74 72 29 0a 20 20 22 42 61 73 69 63 20 54 49 4d 45 2d 53 54 | code.(time-str)..."Basic.TIME-ST |
| 1b220 | 52 20 74 6f 20 74 69 6d 65 20 65 6e 63 6f 64 69 6e 67 2e 22 0a 20 20 28 61 70 70 6c 79 20 27 65 | R.to.time.encoding."...(apply.'e |
| 1b240 | 6e 63 6f 64 65 2d 74 69 6d 65 20 28 70 61 72 73 65 2d 74 69 6d 65 2d 73 74 72 69 6e 67 20 74 69 | ncode-time.(parse-time-string.ti |
| 1b260 | 6d 65 2d 73 74 72 29 29 29 0a 0a 0a 3b 3b 20 48 54 54 50 20 41 50 49 20 6d 65 74 68 6f 64 73 0a | me-str)))...;;.HTTP.API.methods. |
| 1b280 | 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 68 64 72 20 28 68 74 74 70 63 6f | .(defun.elnode--http-hdr.(httpco |
| 1b2a0 | 6e 29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 68 65 61 64 65 72 20 63 6f 6e 73 20 66 6f 72 | n)..."Return.the.header.cons.for |
| 1b2c0 | 20 74 68 65 20 48 54 54 50 43 4f 4e 2e 0a 0a 54 68 65 20 73 74 61 74 75 73 2d 6c 69 6e 65 20 61 | .the.HTTPCON...The.status-line.a |
| 1b2e0 | 6e 64 20 74 68 65 20 68 65 61 64 65 72 20 61 6c 69 73 74 2e 22 0a 20 20 28 63 6f 6e 73 0a 20 20 | nd.the.header.alist."...(cons... |
| 1b300 | 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 68 74 | .(process-get.httpcon.:elnode-ht |
| 1b320 | 74 70 2d 73 74 61 74 75 73 29 0a 20 20 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 68 74 74 70 63 | tp-status)....(process-get.httpc |
| 1b340 | 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 68 65 61 64 65 72 29 29 29 0a 0a 28 64 65 66 75 | on.:elnode-http-header)))..(defu |
| 1b360 | 6e 20 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 68 65 61 64 65 72 73 20 28 68 74 74 70 63 6f 6e 29 0a | n.elnode-http-headers.(httpcon). |
| 1b380 | 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 61 6c 69 73 74 20 6f 66 20 68 65 61 64 65 72 73 20 66 | .."Return.the.alist.of.headers.f |
| 1b3a0 | 72 6f 6d 20 48 54 54 50 43 4f 4e 2e 22 0a 20 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 68 74 74 | rom.HTTPCON."...(process-get.htt |
| 1b3c0 | 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 68 65 61 64 65 72 29 29 0a 0a 28 64 65 66 | pcon.:elnode-http-header))..(def |
| 1b3e0 | 75 6e 20 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 68 65 61 64 65 72 20 28 68 74 74 70 63 6f 6e 20 6e | un.elnode-http-header.(httpcon.n |
| 1b400 | 61 6d 65 20 26 6f 70 74 69 6f 6e 61 6c 20 63 6f 6e 76 65 72 74 29 0a 20 20 22 47 65 74 20 74 68 | ame.&optional.convert)..."Get.th |
| 1b420 | 65 20 68 65 61 64 65 72 20 73 70 65 63 69 66 69 65 64 20 62 79 20 4e 41 4d 45 20 66 72 6f 6d 20 | e.header.specified.by.NAME.from. |
| 1b440 | 74 68 65 20 48 54 54 50 43 4f 4e 2e 0a 0a 48 45 41 44 45 52 20 6d 61 79 20 62 65 20 61 20 73 74 | the.HTTPCON...HEADER.may.be.a.st |
| 1b460 | 72 69 6e 67 20 6f 72 20 61 20 73 79 6d 62 6f 6c 2e 20 20 49 66 20 4e 41 4d 45 20 69 73 20 61 20 | ring.or.a.symbol...If.NAME.is.a. |
| 1b480 | 73 79 6d 62 6f 6c 20 69 74 20 69 73 0a 63 61 73 65 20 69 6e 73 65 6e 73 69 74 76 65 2e 0a 0a 49 | symbol.it.is.case.insensitve...I |
| 1b4a0 | 66 20 6f 70 74 69 6f 6e 61 6c 20 43 4f 4e 56 45 52 54 20 69 73 20 73 70 65 63 69 66 69 65 64 20 | f.optional.CONVERT.is.specified. |
| 1b4c0 | 69 74 20 6d 61 79 20 73 70 65 63 69 66 79 20 61 20 63 6f 6e 76 65 72 73 69 6f 6e 2c 0a 63 75 72 | it.may.specify.a.conversion,.cur |
| 1b4e0 | 72 65 6e 74 6c 79 20 73 75 70 70 6f 72 74 65 64 20 63 6f 6e 76 65 72 73 69 6f 6e 73 20 61 72 65 | rently.supported.conversions.are |
| 1b500 | 3a 0a 0a 20 3a 74 69 6d 65 20 2d 20 74 6f 20 63 6f 6e 76 65 72 74 20 61 20 74 69 6d 65 20 76 61 | :...:time.-.to.convert.a.time.va |
| 1b520 | 6c 75 65 20 70 72 6f 70 65 72 6c 79 22 0a 20 20 28 6c 65 74 2a 20 28 28 6b 65 79 20 28 69 66 20 | lue.properly"...(let*.((key.(if. |
| 1b540 | 28 73 79 6d 62 6f 6c 70 20 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | (symbolp.name).................. |
| 1b560 | 20 28 69 6e 74 65 72 6e 20 28 64 6f 77 6e 63 61 73 65 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 | .(intern.(downcase.(symbol-name. |
| 1b580 | 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65 29 29 0a 20 | name))).................name)).. |
| 1b5a0 | 20 20 20 20 20 20 20 20 28 68 64 72 20 28 70 72 6f 63 65 73 73 2d 67 65 74 0a 20 20 20 20 20 20 | ........(hdr.(process-get....... |
| 1b5c0 | 20 20 20 20 20 20 20 20 20 68 74 74 70 63 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .........httpcon................ |
| 1b5e0 | 28 69 66 20 28 73 79 6d 62 6f 6c 70 20 6b 65 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | (if.(symbolp.key)............... |
| 1b600 | 20 20 20 20 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 68 65 61 64 65 72 2d 73 79 6d 73 0a 20 20 | .....:elnode-http-header-syms... |
| 1b620 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 68 65 61 64 | ...............:elnode-http-head |
| 1b640 | 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 76 61 6c 20 28 63 64 72 20 28 61 73 73 6f 63 20 | er)))..........(val.(cdr.(assoc. |
| 1b660 | 6b 65 79 20 68 64 72 29 29 29 29 0a 20 20 20 20 28 63 61 73 65 20 63 6f 6e 76 65 72 74 0a 20 20 | key.hdr)))).....(case.convert... |
| 1b680 | 20 20 20 20 28 3a 74 69 6d 65 0a 20 20 20 20 20 20 20 28 77 68 65 6e 20 76 61 6c 0a 20 20 20 20 | ....(:time........(when.val..... |
| 1b6a0 | 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 74 69 6d 65 2d 65 6e 63 6f 64 65 20 76 61 6c 29 29 29 0a | .....(elnode-time-encode.val))). |
| 1b6c0 | 20 20 20 20 20 20 28 74 0a 20 20 20 20 20 20 20 76 61 6c 29 29 29 29 0a 0a 28 64 65 66 75 6e 2a | ......(t........val))))..(defun* |
| 1b6e0 | 20 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 68 6f 73 74 20 28 68 74 74 70 63 6f 6e 20 26 6b 65 79 20 | .elnode-http-host.(httpcon.&key. |
| 1b700 | 73 70 6c 69 74 20 6a 75 73 74 2d 68 6f 73 74 29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 48 | split.just-host)..."Return.the.H |
| 1b720 | 54 54 50 20 60 68 6f 73 74 27 20 6e 61 6d 65 20 68 65 61 64 65 72 2e 0a 0a 57 69 74 68 20 53 50 | TTP.`host'.name.header...With.SP |
| 1b740 | 4c 49 54 20 72 65 74 75 72 6e 20 61 20 6c 69 73 74 20 6f 66 20 74 68 65 20 68 6f 73 74 6e 61 6d | LIT.return.a.list.of.the.hostnam |
| 1b760 | 65 20 61 6e 64 20 61 6e 79 20 70 6f 72 74 20 70 61 72 74 20 28 74 68 65 0a 70 6f 72 74 20 70 61 | e.and.any.port.part.(the.port.pa |
| 1b780 | 72 74 20 6d 69 67 68 74 20 62 65 20 65 6d 70 74 79 20 69 66 20 6e 6f 74 20 73 70 65 63 69 66 69 | rt.might.be.empty.if.not.specifi |
| 1b7a0 | 63 61 6c 6c 79 20 73 70 65 63 69 66 69 65 64 29 2e 20 20 57 69 74 68 0a 4a 55 53 54 2d 48 4f 53 | cally.specified)...With.JUST-HOS |
| 1b7c0 | 54 20 72 65 74 75 72 6e 20 6a 75 73 74 20 74 68 65 20 68 6f 73 74 2d 6e 61 6d 65 20 70 61 72 74 | T.return.just.the.host-name.part |
| 1b7e0 | 2c 20 64 72 6f 70 70 69 6e 67 20 61 6e 79 20 70 6f 72 74 20 65 6e 74 69 72 65 6c 79 2e 22 0a 20 | ,.dropping.any.port.entirely.".. |
| 1b800 | 20 28 6c 65 74 20 28 28 68 6f 73 74 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 68 65 61 64 65 72 | .(let.((host.(elnode-http-header |
| 1b820 | 20 68 74 74 70 63 6f 6e 20 22 48 6f 73 74 22 29 29 29 0a 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 | .httpcon."Host"))).....(cond.... |
| 1b840 | 20 20 20 28 73 70 6c 69 74 0a 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 | ...(split........(string-match." |
| 1b860 | 5c 5c 28 5b 5e 3a 5d 2b 5c 5c 29 5c 5c 28 3a 5c 5c 28 5b 30 2d 39 5d 2b 5c 5c 29 5c 5c 29 2a 22 | \\([^:]+\\)\\(:\\([0-9]+\\)\\)*" |
| 1b880 | 20 68 6f 73 74 29 0a 20 20 20 20 20 20 20 28 6c 69 73 74 20 28 6d 61 74 63 68 2d 73 74 72 69 6e | .host)........(list.(match-strin |
| 1b8a0 | 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 31 20 68 6f 73 74 29 0a 20 20 20 20 20 20 20 20 | g-no-properties.1.host)......... |
| 1b8c0 | 20 20 20 20 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 | .....(match-string-no-properties |
| 1b8e0 | 20 33 20 68 6f 73 74 29 29 29 0a 20 20 20 20 20 20 28 6a 75 73 74 2d 68 6f 73 74 0a 20 20 20 20 | .3.host))).......(just-host..... |
| 1b900 | 20 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 5c 5c 28 5b 5e 3a 5d 2b 5c 5c 29 5c 5c 28 | ...(string-match."\\([^:]+\\)\\( |
| 1b920 | 3a 5c 5c 28 5b 30 2d 39 5d 2b 5c 5c 29 5c 5c 29 2a 22 20 68 6f 73 74 29 0a 20 20 20 20 20 20 20 | :\\([0-9]+\\)\\)*".host)........ |
| 1b940 | 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 31 20 68 6f | (match-string-no-properties.1.ho |
| 1b960 | 73 74 29 29 0a 20 20 20 20 20 20 28 74 0a 20 20 20 20 20 20 20 68 6f 73 74 29 29 29 29 0a 0a 28 | st)).......(t........host))))..( |
| 1b980 | 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 63 6f 6f 6b 69 65 73 20 28 68 74 74 70 63 | defun.elnode-http-cookies.(httpc |
| 1b9a0 | 6f 6e 29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 6c 69 73 74 20 6f 66 20 63 6f 6f 6b 69 65 | on)..."Return.the.list.of.cookie |
| 1b9c0 | 73 20 61 74 74 61 63 68 65 64 20 74 6f 20 74 68 69 73 20 48 54 54 50 43 4f 4e 2e 0a 0a 54 68 65 | s.attached.to.this.HTTPCON...The |
| 1b9e0 | 20 6c 69 73 74 20 6f 66 20 63 6f 6f 6b 69 65 73 20 69 73 20 61 6e 20 61 6c 69 73 74 2e 22 0a 20 | .list.of.cookies.is.an.alist.".. |
| 1ba00 | 20 28 6f 72 0a 20 20 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c | .(or....(process-get.httpcon.:el |
| 1ba20 | 6e 6f 64 65 2d 68 74 74 70 2d 63 6f 6f 6b 69 65 2d 6c 69 73 74 29 0a 20 20 20 28 6c 65 74 2a 20 | node-http-cookie-list)....(let*. |
| 1ba40 | 28 28 63 6f 6f 6b 69 65 2d 68 64 72 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 68 65 61 64 65 72 | ((cookie-hdr.(elnode-http-header |
| 1ba60 | 20 68 74 74 70 63 6f 6e 20 22 43 6f 6f 6b 69 65 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c | .httpcon."Cookie"))...........(l |
| 1ba80 | 73 74 20 28 77 68 65 6e 20 63 6f 6f 6b 69 65 2d 68 64 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 | st.(when.cookie-hdr............. |
| 1baa0 | 20 20 20 20 20 28 6b 76 61 6c 69 73 74 2d 73 6f 72 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | .....(kvalist-sort.............. |
| 1bac0 | 20 20 20 20 20 28 6d 61 70 63 61 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .....(mapcar.................... |
| 1bae0 | 28 6c 61 6d 62 64 61 20 28 70 61 69 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | (lambda.(pair).................. |
| 1bb00 | 20 20 20 20 28 63 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ....(cons....................... |
| 1bb20 | 28 75 72 6c 2d 75 6e 68 65 78 2d 73 74 72 69 6e 67 20 28 63 61 72 20 70 61 69 72 29 29 0a 20 20 | (url-unhex-string.(car.pair))... |
| 1bb40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 72 6c 2d 75 6e 68 65 78 2d 73 | ....................(url-unhex-s |
| 1bb60 | 74 72 69 6e 67 20 28 63 64 72 20 70 61 69 72 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | tring.(cdr.pair))))............. |
| 1bb80 | 20 20 20 20 20 20 20 28 75 72 6c 2d 70 61 72 73 65 2d 61 72 67 73 20 63 6f 6f 6b 69 65 2d 68 64 | .......(url-parse-args.cookie-hd |
| 1bba0 | 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 73 74 72 69 6e 67 2d 6c 65 | r))...................'string-le |
| 1bbc0 | 73 73 70 29 29 29 29 0a 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 70 75 74 20 68 74 74 70 63 6f | ssp))))......(process-put.httpco |
| 1bbe0 | 6e 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 63 6f 6f 6b 69 65 2d 6c 69 73 74 20 6c 73 74 29 0a | n.:elnode-http-cookie-list.lst). |
| 1bc00 | 20 20 20 20 20 6c 73 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 68 74 74 70 2d | .....lst)))..(defun.elnode-http- |
| 1bc20 | 63 6f 6f 6b 69 65 20 28 68 74 74 70 63 6f 6e 20 6e 61 6d 65 20 26 6f 70 74 69 6f 6e 61 6c 20 63 | cookie.(httpcon.name.&optional.c |
| 1bc40 | 6f 6f 6b 69 65 2d 6b 65 79 29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 63 6f 6f 6b 69 65 20 | ookie-key)..."Return.the.cookie. |
| 1bc60 | 76 61 6c 75 65 20 66 6f 72 20 48 54 54 50 43 4f 4e 20 73 70 65 63 69 66 69 65 64 20 62 79 20 4e | value.for.HTTPCON.specified.by.N |
| 1bc80 | 41 4d 45 2e 0a 0a 54 68 65 20 63 6f 6f 6b 69 65 20 69 73 20 61 20 63 6f 6e 73 3a 0a 0a 20 20 6e | AME...The.cookie.is.a.cons:....n |
| 1bca0 | 61 6d 65 20 2e 20 76 61 6c 75 65 0a 0a 49 66 20 43 4f 4f 4b 49 45 2d 4b 45 59 20 69 73 20 60 74 | ame...value..If.COOKIE-KEY.is.`t |
| 1bcc0 | 27 20 74 68 65 6e 20 6f 6e 6c 79 20 74 68 65 20 76 61 6c 75 65 20 69 73 20 72 65 74 75 72 6e 65 | '.then.only.the.value.is.returne |
| 1bce0 | 64 2c 20 65 6c 73 65 20 74 68 65 0a 63 6f 6e 73 20 69 73 20 72 65 74 75 72 6e 65 64 2e 22 0a 20 | d,.else.the.cons.is.returned.".. |
| 1bd00 | 20 28 6c 65 74 2a 20 28 28 63 6f 6f 6b 69 65 2d 6c 69 73 74 20 28 65 6c 6e 6f 64 65 2d 68 74 74 | .(let*.((cookie-list.(elnode-htt |
| 1bd20 | 70 2d 63 6f 6f 6b 69 65 73 20 68 74 74 70 63 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 6f | p-cookies.httpcon))..........(co |
| 1bd40 | 6f 6b 69 65 20 28 61 73 73 6f 63 2d 73 74 72 69 6e 67 20 6e 61 6d 65 20 63 6f 6f 6b 69 65 2d 6c | okie.(assoc-string.name.cookie-l |
| 1bd60 | 69 73 74 29 29 29 0a 20 20 20 20 28 69 66 20 63 6f 6f 6b 69 65 2d 6b 65 79 0a 20 20 20 20 20 20 | ist))).....(if.cookie-key....... |
| 1bd80 | 20 20 28 63 64 72 20 63 6f 6f 6b 69 65 29 0a 20 20 20 20 20 20 20 20 63 6f 6f 6b 69 65 29 29 29 | ..(cdr.cookie).........cookie))) |
| 1bda0 | 0a 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 70 61 72 73 65 2d 73 74 61 | ...(defun.elnode--http-parse-sta |
| 1bdc0 | 74 75 73 20 28 68 74 74 70 63 6f 6e 20 26 6f 70 74 69 6f 6e 61 6c 20 70 72 6f 70 65 72 74 79 29 | tus.(httpcon.&optional.property) |
| 1bde0 | 0a 20 20 22 50 61 72 73 65 20 74 68 65 20 73 74 61 74 75 73 20 6c 69 6e 65 20 6f 66 20 48 54 54 | ..."Parse.the.status.line.of.HTT |
| 1be00 | 50 43 4f 4e 2e 0a 0a 49 66 20 50 52 4f 50 45 52 54 59 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 74 | PCON...If.PROPERTY.is.non-nil,.t |
| 1be20 | 68 65 6e 20 72 65 74 75 72 6e 20 74 68 61 74 20 70 72 6f 70 65 72 74 79 2e 22 0a 20 20 28 6c 65 | hen.return.that.property."...(le |
| 1be40 | 74 2a 20 28 28 68 74 74 70 2d 6c 69 6e 65 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 68 74 74 70 | t*.((http-line.(process-get.http |
| 1be60 | 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 74 61 74 75 73 29 29 0a 20 20 20 20 20 20 | con.:elnode-http-status))....... |
| 1be80 | 20 20 20 28 6d 65 74 68 6f 64 2d 72 65 67 65 78 20 28 6d 61 70 63 6f 6e 63 61 74 0a 20 20 20 20 | ...(method-regex.(mapconcat..... |
| 1bea0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 69 64 65 6e 74 69 74 79 0a 20 20 | ....................'identity... |
| 1bec0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 22 47 45 54 | ......................(list."GET |
| 1bee0 | 22 20 22 50 4f 53 54 22 20 22 48 45 41 44 22 20 22 44 45 4c 45 54 45 22 20 22 50 55 54 22 29 0a | "."POST"."HEAD"."DELETE"."PUT"). |
| 1bf00 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 5c 7c 22 29 29 29 | ........................"\\|"))) |
| 1bf20 | 0a 20 20 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 20 20 28 73 74 72 | .....(save-match-data.......(str |
| 1bf40 | 69 6e 67 2d 6d 61 74 63 68 20 28 66 6f 72 6d 61 74 20 22 5c 5c 28 25 73 5c 5c 29 20 5c 5c 28 2e | ing-match.(format."\\(%s\\).\\(. |
| 1bf60 | 2a 5c 5c 29 20 48 54 54 50 2f 5c 5c 28 31 2e 5b 30 31 5d 5c 5c 29 22 0a 20 20 20 20 20 20 20 20 | *\\).HTTP/\\(1.[01]\\)"......... |
| 1bf80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 68 6f 64 2d 72 65 67 65 78 | ....................method-regex |
| 1bfa0 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 74 74 70 2d 6c 69 6e 65 29 | ).....................http-line) |
| 1bfc0 | 0a 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 70 75 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e | .......(process-put.httpcon.:eln |
| 1bfe0 | 6f 64 65 2d 68 74 74 70 2d 6d 65 74 68 6f 64 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 | ode-http-method.(match-string.1. |
| 1c000 | 68 74 74 70 2d 6c 69 6e 65 29 29 0a 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 70 75 74 20 68 | http-line)).......(process-put.h |
| 1c020 | 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 72 65 73 6f 75 72 63 65 20 28 6d 61 | ttpcon.:elnode-http-resource.(ma |
| 1c040 | 74 63 68 2d 73 74 72 69 6e 67 20 32 20 68 74 74 70 2d 6c 69 6e 65 29 29 0a 20 20 20 20 20 20 28 | tch-string.2.http-line)).......( |
| 1c060 | 70 72 6f 63 65 73 73 2d 70 75 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 | process-put.httpcon.:elnode-http |
| 1c080 | 2d 76 65 72 73 69 6f 6e 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 33 20 68 74 74 70 2d 6c 69 | -version.(match-string.3.http-li |
| 1c0a0 | 6e 65 29 29 29 0a 20 20 20 20 28 69 66 20 70 72 6f 70 65 72 74 79 0a 20 20 20 20 20 20 20 20 28 | ne))).....(if.property.........( |
| 1c0c0 | 70 72 6f 63 65 73 73 2d 67 65 74 20 68 74 74 70 63 6f 6e 20 70 72 6f 70 65 72 74 79 29 29 29 29 | process-get.httpcon.property)))) |
| 1c0e0 | 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 70 61 72 73 65 2d 72 65 73 6f | ..(defun.elnode--http-parse-reso |
| 1c100 | 75 72 63 65 20 28 68 74 74 70 63 6f 6e 20 26 6f 70 74 69 6f 6e 61 6c 20 70 72 6f 70 65 72 74 79 | urce.(httpcon.&optional.property |
| 1c120 | 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 72 65 73 6f 75 | )..."Convert.the.specified.resou |
| 1c140 | 72 63 65 20 74 6f 20 61 20 70 61 74 68 20 61 6e 64 20 61 20 71 75 65 72 79 2e 22 0a 20 20 28 6c | rce.to.a.path.and.a.query."...(l |
| 1c160 | 65 74 20 28 28 72 65 73 6f 75 72 63 65 0a 20 20 20 20 20 20 20 20 20 28 6f 72 0a 20 20 20 20 20 | et.((resource..........(or...... |
| 1c180 | 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 | .....(process-get.httpcon.:elnod |
| 1c1a0 | 65 2d 68 74 74 70 2d 72 65 73 6f 75 72 63 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f | e-http-resource)...........(elno |
| 1c1c0 | 64 65 2d 2d 68 74 74 70 2d 70 61 72 73 65 2d 73 74 61 74 75 73 0a 20 20 20 20 20 20 20 20 20 20 | de--http-parse-status........... |
| 1c1e0 | 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 72 65 73 6f 75 72 63 65 29 29 | .httpcon.:elnode-http-resource)) |
| 1c200 | 29 29 0a 20 20 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 20 20 28 69 | )).....(save-match-data.......(i |
| 1c220 | 66 20 28 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 72 6f 6f 74 20 70 61 74 74 65 72 6e | f.(or............;;.root.pattern |
| 1c240 | 20 77 69 74 68 20 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 | .with.............(string-match. |
| 1c260 | 22 5e 5c 5c 28 2f 5c 5c 29 5c 5c 28 5c 5c 3f 2e 2a 5c 5c 29 2a 24 22 20 72 65 73 6f 75 72 63 65 | "^\\(/\\)\\(\\?.*\\)*$".resource |
| 1c280 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 2f 73 6f 6d 65 70 61 74 68 20 6f 72 20 2f 73 6f | )............;;./somepath.or./so |
| 1c2a0 | 6d 65 70 61 74 68 2f 73 6f 6d 65 70 61 74 68 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 | mepath/somepath............(stri |
| 1c2c0 | 6e 67 2d 6d 61 74 63 68 20 22 5e 5c 5c 28 2f 5b 5e 3f 5d 2b 5c 5c 29 5c 5c 28 5c 5c 3f 2e 2a 5c | ng-match."^\\(/[^?]+\\)\\(\\?.*\ |
| 1c2e0 | 5c 29 2a 24 22 20 72 65 73 6f 75 72 63 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 | \)*$".resource))...........(let. |
| 1c300 | 28 28 70 61 74 68 20 28 75 72 6c 2d 75 6e 68 65 78 2d 73 74 72 69 6e 67 20 28 6d 61 74 63 68 2d | ((path.(url-unhex-string.(match- |
| 1c320 | 73 74 72 69 6e 67 20 31 20 72 65 73 6f 75 72 63 65 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 | string.1.resource))))........... |
| 1c340 | 20 20 28 70 72 6f 63 65 73 73 2d 70 75 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 68 | ..(process-put.httpcon.:elnode-h |
| 1c360 | 74 74 70 2d 70 61 74 68 69 6e 66 6f 20 70 61 74 68 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 | ttp-pathinfo.path).............( |
| 1c380 | 77 68 65 6e 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 32 20 72 65 73 6f 75 72 63 65 29 0a 20 | when.(match-string.2.resource).. |
| 1c3a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 71 75 65 72 79 20 28 6d 61 74 63 68 | .............(let.((query.(match |
| 1c3c0 | 2d 73 74 72 69 6e 67 20 32 20 72 65 73 6f 75 72 63 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 | -string.2.resource)))........... |
| 1c3e0 | 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 5c 5c 3f 5c 5c 28 2e 2b 5c 5c 29 | ......(string-match."\\?\\(.+\\) |
| 1c400 | 22 20 71 75 65 72 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6d 61 | ".query).................(if.(ma |
| 1c420 | 74 63 68 2d 73 74 72 69 6e 67 20 31 20 71 75 65 72 79 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | tch-string.1.query)............. |
| 1c440 | 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 70 75 74 0a 20 20 20 20 20 20 20 20 20 20 20 | ........(process-put............ |
| 1c460 | 20 20 20 20 20 20 20 20 20 20 68 74 74 70 63 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ..........httpcon............... |
| 1c480 | 20 20 20 20 20 20 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 71 75 65 72 79 0a 20 20 20 20 20 20 | .......:elnode-http-query....... |
| 1c4a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 71 | ...............(match-string.1.q |
| 1c4c0 | 75 65 72 79 29 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 45 6c 73 65 20 69 74 20 | uery))))))...........;;.Else.it. |
| 1c4e0 | 6d 69 67 68 74 20 62 65 20 61 20 6d 6f 72 65 20 65 78 6f 74 69 63 20 70 61 74 68 0a 20 20 20 20 | might.be.a.more.exotic.path..... |
| 1c500 | 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 70 75 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f | ......(process-put.httpcon.:elno |
| 1c520 | 64 65 2d 68 74 74 70 2d 70 61 74 68 69 6e 66 6f 20 72 65 73 6f 75 72 63 65 29 29 29 29 0a 20 20 | de-http-pathinfo.resource))))... |
| 1c540 | 28 69 66 20 70 72 6f 70 65 72 74 79 0a 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 | (if.property.......(process-get. |
| 1c560 | 68 74 74 70 63 6f 6e 20 70 72 6f 70 65 72 74 79 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f | httpcon.property)))..(defun.elno |
| 1c580 | 64 65 2d 68 74 74 70 2d 70 61 74 68 69 6e 66 6f 20 28 68 74 74 70 63 6f 6e 29 0a 20 20 22 47 65 | de-http-pathinfo.(httpcon)..."Ge |
| 1c5a0 | 74 20 74 68 65 20 50 41 54 48 49 4e 46 4f 20 6f 66 20 74 68 65 20 72 65 71 75 65 73 74 2e 0a 0a | t.the.PATHINFO.of.the.request... |
| 1c5c0 | 54 68 65 20 50 41 54 48 49 4e 46 4f 20 69 73 20 74 68 65 20 43 47 49 20 74 65 72 6d 20 66 6f 72 | The.PATHINFO.is.the.CGI.term.for |
| 1c5e0 | 20 74 68 65 20 70 61 72 74 20 6f 66 20 74 68 65 20 70 61 74 68 20 74 68 61 74 20 69 73 20 6e 6f | .the.part.of.the.path.that.is.no |
| 1c600 | 74 0a 74 68 65 20 68 6f 73 74 6e 61 6d 65 20 6f 72 20 74 68 65 20 71 75 65 72 79 3b 20 74 68 65 | t.the.hostname.or.the.query;.the |
| 1c620 | 20 70 61 72 74 20 74 68 61 74 20 72 65 6c 61 74 65 73 20 74 6f 20 74 68 65 20 70 61 74 68 2e 22 | .part.that.relates.to.the.path." |
| 1c640 | 0a 20 20 28 6f 72 0a 20 20 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 68 74 74 70 63 6f 6e 20 3a | ...(or....(process-get.httpcon.: |
| 1c660 | 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 70 61 74 68 69 6e 66 6f 29 0a 20 20 20 28 65 6c 6e 6f 64 65 | elnode-http-pathinfo)....(elnode |
| 1c680 | 2d 2d 68 74 74 70 2d 70 61 72 73 65 2d 72 65 73 6f 75 72 63 65 20 68 74 74 70 63 6f 6e 20 3a 65 | --http-parse-resource.httpcon.:e |
| 1c6a0 | 6c 6e 6f 64 65 2d 68 74 74 70 2d 70 61 74 68 69 6e 66 6f 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 | lnode-http-pathinfo)))..(defun.e |
| 1c6c0 | 6c 6e 6f 64 65 2d 68 74 74 70 2d 71 75 65 72 79 20 28 68 74 74 70 63 6f 6e 29 0a 20 20 22 47 65 | lnode-http-query.(httpcon)..."Ge |
| 1c6e0 | 74 20 74 68 65 20 51 55 45 52 59 20 6f 66 20 74 68 65 20 72 65 71 75 65 73 74 2e 22 0a 20 20 28 | t.the.QUERY.of.the.request."...( |
| 1c700 | 6f 72 0a 20 20 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f | or....(process-get.httpcon.:elno |
| 1c720 | 64 65 2d 68 74 74 70 2d 71 75 65 72 79 29 0a 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d | de-http-query)....(elnode--http- |
| 1c740 | 70 61 72 73 65 2d 72 65 73 6f 75 72 63 65 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 68 | parse-resource.httpcon.:elnode-h |
| 1c760 | 74 74 70 2d 71 75 65 72 79 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 68 74 74 | ttp-query)))..(defun.elnode--htt |
| 1c780 | 70 2d 70 61 72 61 6d 2d 70 61 72 74 2d 64 65 63 6f 64 65 20 28 70 61 72 61 6d 2d 74 68 69 6e 67 | p-param-part-decode.(param-thing |
| 1c7a0 | 29 0a 20 20 22 44 65 63 6f 64 65 20 61 6e 20 48 54 54 50 20 55 52 4c 20 70 61 72 61 6d 65 74 65 | )..."Decode.an.HTTP.URL.paramete |
| 1c7c0 | 72 20 70 61 72 74 2e 0a 0a 46 6f 72 20 65 78 61 6d 70 6c 65 20 69 6e 3a 0a 0a 20 68 74 74 70 3a | r.part...For.example.in:...http: |
| 1c7e0 | 2f 2f 6e 69 63 2e 66 65 72 72 69 65 72 2e 6d 65 2e 75 6b 2f 62 6c 6f 67 2f 65 6c 6e 6f 64 65 2f | //nic.ferrier.me.uk/blog/elnode/ |
| 1c800 | 3f 70 3d 31 30 26 61 2b 63 3d 32 30 26 64 3d 78 2b 79 26 7a 3d 74 68 69 73 25 32 30 69 73 25 30 | ?p=10&a+c=20&d=x+y&z=this%20is%0 |
| 1c820 | 39 6d 65 2b 61 6e 64 25 32 30 74 68 69 73 0a 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 72 | 9me+and%20this..The.following.ar |
| 1c840 | 65 20 70 61 72 61 6d 20 70 61 72 74 73 20 61 6e 64 20 74 68 65 20 64 65 63 6f 64 69 6e 67 20 74 | e.param.parts.and.the.decoding.t |
| 1c860 | 68 61 74 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 0a 77 69 6c 6c 20 64 6f 3a 0a 0a 20 5c 22 70 | hat.this.function.will.do:...\"p |
| 1c880 | 5c 22 20 2d 3e 20 20 5c 22 70 5c 22 0a 0a 20 5c 22 31 30 5c 22 20 2d 3e 20 5c 22 31 30 5c 22 0a | \".->..\"p\"...\"10\".->.\"10\". |
| 1c8a0 | 0a 20 5c 22 61 2b 63 5c 22 20 2d 3e 20 5c 22 61 20 63 5c 22 20 2d 20 61 6e 20 65 78 61 6d 70 6c | ..\"a+c\".->.\"a.c\".-.an.exampl |
| 1c8c0 | 65 20 6f 66 20 2b 20 65 6e 63 6f 64 69 6e 67 0a 0a 20 5c 22 64 5c 22 20 2d 3e 20 5c 22 64 5c 22 | e.of.+.encoding...\"d\".->.\"d\" |
| 1c8e0 | 0a 0a 20 5c 22 78 2b 79 5c 22 20 2d 3e 20 5c 22 78 20 79 5c 22 20 2d 20 61 6e 6f 74 68 65 72 20 | ...\"x+y\".->.\"x.y\".-.another. |
| 1c900 | 65 78 61 6d 70 6c 65 20 6f 66 20 2b 20 65 6e 63 6f 64 69 6e 67 2c 20 69 6e 20 61 20 70 61 72 61 | example.of.+.encoding,.in.a.para |
| 1c920 | 6d 65 74 65 72 20 6e 61 6d 65 0a 0a 20 5c 22 7a 5c 22 20 2d 3e 20 5c 22 7a 5c 22 0a 0a 20 5c 22 | meter.name...\"z\".->.\"z\"...\" |
| 1c940 | 74 68 69 73 25 32 30 69 73 25 30 39 6d 65 2b 61 6e 64 25 32 30 74 68 69 73 5c 22 20 2d 3e 20 5c | this%20is%09me+and%20this\".->.\ |
| 1c960 | 22 74 68 69 73 20 69 73 5c 74 6d 65 20 61 6e 64 20 74 68 69 73 5c 22 20 2d 0a 20 70 65 72 63 65 | "this.is\tme.and.this\".-..perce |
| 1c980 | 6e 74 20 65 6e 63 6f 64 69 6e 67 20 61 6e 64 20 70 6c 75 73 20 65 6e 63 6f 64 69 6e 67 22 0a 20 | nt.encoding.and.plus.encoding".. |
| 1c9a0 | 20 28 75 72 6c 2d 75 6e 68 65 78 2d 73 74 72 69 6e 67 20 28 72 65 70 6c 61 63 65 2d 72 65 67 65 | .(url-unhex-string.(replace-rege |
| 1c9c0 | 78 70 2d 69 6e 2d 73 74 72 69 6e 67 20 22 5c 5c 2b 22 20 22 20 22 20 70 61 72 61 6d 2d 74 68 69 | xp-in-string."\\+".".".param-thi |
| 1c9e0 | 6e 67 29 20 27 74 29 0a 20 20 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 68 74 74 70 | ng).'t)...)..(defun.elnode--http |
| 1ca00 | 2d 71 75 65 72 79 2d 74 6f 2d 61 6c 69 73 74 20 28 71 75 65 72 79 29 0a 20 20 22 43 72 61 70 20 | -query-to-alist.(query)..."Crap. |
| 1ca20 | 70 61 72 73 65 72 20 66 6f 72 20 48 54 54 50 20 51 55 45 52 59 20 64 61 74 61 2e 0a 0a 52 65 74 | parser.for.HTTP.QUERY.data...Ret |
| 1ca40 | 75 72 6e 73 20 61 6e 20 61 73 73 6f 63 69 61 74 69 6f 6e 20 6c 69 73 74 2e 22 0a 20 20 28 6c 65 | urns.an.association.list."...(le |
| 1ca60 | 74 20 28 28 61 6c 69 73 74 20 28 6d 61 70 63 61 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | t.((alist.(mapcar............... |
| 1ca80 | 20 20 28 6c 61 6d 62 64 61 20 28 6e 76 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ..(lambda.(nv).................. |
| 1caa0 | 20 28 69 66 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 5c 5c 28 5b 5e 3d 5d 2b 5c 5c 29 5c | .(if.(string-match."\\([^=]+\\)\ |
| 1cac0 | 5c 28 3d 5c 5c 28 2e 2a 5c 5c 29 5c 5c 29 2a 22 20 6e 76 29 0a 20 20 20 20 20 20 20 20 20 20 20 | \(=\\(.*\\)\\)*".nv)............ |
| 1cae0 | 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...........(cons................ |
| 1cb00 | 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 70 61 72 61 6d 2d 70 61 72 74 | ........(elnode--http-param-part |
| 1cb20 | 2d 64 65 63 6f 64 65 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 6e 76 29 29 0a 20 20 20 | -decode.(match-string.1.nv)).... |
| 1cb40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6d 61 74 63 68 2d 73 | ....................(if.(match-s |
| 1cb60 | 74 72 69 6e 67 20 32 20 6e 76 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | tring.2.nv)..................... |
| 1cb80 | 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 70 61 72 61 6d 2d 70 61 72 74 2d | .......(elnode--http-param-part- |
| 1cba0 | 64 65 63 6f 64 65 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 33 20 6e 76 29 29 0a 20 20 20 20 | decode.(match-string.3.nv))..... |
| 1cbc0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 69 6c 29 29 29 29 0a 20 20 20 | .....................nil)))).... |
| 1cbe0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 70 6c 69 74 2d 73 74 72 69 6e 67 20 71 75 65 72 79 | .............(split-string.query |
| 1cc00 | 20 22 26 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 29 0a 20 20 20 20 61 6c 69 | ."&"))................)).....ali |
| 1cc20 | 73 74 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 61 6c 69 73 74 2d 6d 65 72 67 65 | st))..(defun.elnode--alist-merge |
| 1cc40 | 20 28 61 20 62 20 26 6f 70 74 69 6f 6e 61 6c 20 6f 70 65 72 61 74 6f 72 29 0a 20 20 22 4d 65 72 | .(a.b.&optional.operator)..."Mer |
| 1cc60 | 67 65 20 74 77 6f 20 61 73 73 6f 63 69 61 74 69 6f 6e 20 6c 69 73 74 73 20 6e 6f 6e 2d 64 65 73 | ge.two.association.lists.non-des |
| 1cc80 | 74 72 75 63 74 69 76 65 6c 79 2e 0a 0a 41 20 69 73 20 63 6f 6e 73 69 64 65 72 65 64 20 74 68 65 | tructively...A.is.considered.the |
| 1cca0 | 20 70 72 69 6f 72 69 74 79 20 28 69 74 73 20 65 6c 65 6d 65 6e 74 73 20 67 6f 20 69 6e 20 66 69 | .priority.(its.elements.go.in.fi |
| 1ccc0 | 72 73 74 29 2e 22 0a 20 20 28 69 66 20 28 6e 6f 74 20 6f 70 65 72 61 74 6f 72 29 0a 20 20 20 20 | rst)."...(if.(not.operator)..... |
| 1cce0 | 20 20 28 73 65 74 71 20 6f 70 65 72 61 74 6f 72 20 27 61 73 73 71 29 29 0a 20 20 28 6c 65 74 2a | ..(setq.operator.'assq))...(let* |
| 1cd00 | 20 28 28 72 65 73 20 27 28 29 29 29 0a 20 20 20 20 28 6c 65 74 20 28 28 6c 73 74 20 28 61 70 70 | .((res.'())).....(let.((lst.(app |
| 1cd20 | 65 6e 64 20 61 20 62 29 29 29 0a 20 20 20 20 20 20 28 77 68 69 6c 65 20 6c 73 74 0a 20 20 20 20 | end.a.b))).......(while.lst..... |
| 1cd40 | 20 20 20 20 28 6c 65 74 20 28 28 69 74 65 6d 20 28 63 61 72 2d 73 61 66 65 20 6c 73 74 29 29 29 | ....(let.((item.(car-safe.lst))) |
| 1cd60 | 0a 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 6c 73 74 20 28 63 64 72 2d 73 61 66 65 20 6c | ...........(setq.lst.(cdr-safe.l |
| 1cd80 | 73 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 6b 65 79 20 28 63 61 72 20 | st))...........(let*.((key.(car. |
| 1cda0 | 69 74 65 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 76 61 6c 20 28 66 | item))..................(aval.(f |
| 1cdc0 | 75 6e 63 61 6c 6c 20 6f 70 65 72 61 74 6f 72 20 6b 65 79 20 61 29 29 0a 20 20 20 20 20 20 20 20 | uncall.operator.key.a))......... |
| 1cde0 | 20 20 20 20 20 20 20 20 20 28 62 76 61 6c 20 28 66 75 6e 63 61 6c 6c 20 6f 70 65 72 61 74 6f 72 | .........(bval.(funcall.operator |
| 1ce00 | 20 6b 65 79 20 62 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6e 6f 74 20 28 | .key.b))).............(if.(not.( |
| 1ce20 | 66 75 6e 63 61 6c 6c 20 6f 70 65 72 61 74 6f 72 20 6b 65 79 20 72 65 73 29 29 0a 20 20 20 20 20 | funcall.operator.key.res))...... |
| 1ce40 | 20 20 20 20 20 20 20 20 20 20 20 28 73 65 74 71 20 72 65 73 20 28 63 6f 6e 73 0a 20 20 20 20 20 | ...........(setq.res.(cons...... |
| 1ce60 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 61 6e 64 20 61 | ......................(if.(and.a |
| 1ce80 | 76 61 6c 20 62 76 61 6c 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | val.bval)....................... |
| 1cea0 | 20 20 20 20 20 20 20 20 20 3b 3b 20 74 68 65 20 69 74 65 6d 20 69 73 20 69 6e 20 62 6f 74 68 20 | .........;;.the.item.is.in.both. |
| 1cec0 | 6c 69 73 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | lists........................... |
| 1cee0 | 20 20 20 20 20 28 63 6f 6e 73 20 28 63 61 72 20 69 74 65 6d 29 0a 20 20 20 20 20 20 20 20 20 20 | .....(cons.(car.item)........... |
| 1cf00 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 | ...........................(list |
| 1cf20 | 20 28 63 64 72 20 61 76 61 6c 29 20 28 63 64 72 20 62 76 61 6c 29 29 29 0a 20 20 20 20 20 20 20 | .(cdr.aval).(cdr.bval)))........ |
| 1cf40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 74 65 6d 29 0a 20 20 20 20 | ......................item)..... |
| 1cf60 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 29 29 29 29 29 29 | .......................res)))))) |
| 1cf80 | 0a 20 20 20 20 20 20 20 20 72 65 73 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d | .........res)))..(defun.elnode-- |
| 1cfa0 | 68 74 74 70 2d 6d 70 2d 66 69 6e 64 2d 62 6f 75 6e 64 61 72 79 20 28 62 6f 75 6e 64 61 72 79 29 | http-mp-find-boundary.(boundary) |
| 1cfc0 | 0a 20 20 22 46 69 6e 64 20 74 68 65 20 62 6f 75 6e 64 61 72 79 20 73 74 72 69 6e 67 20 66 72 6f | ..."Find.the.boundary.string.fro |
| 1cfe0 | 6d 20 70 6f 69 6e 74 2e 22 0a 20 20 28 6c 65 74 20 28 28 62 6f 75 6e 64 61 72 79 2d 72 78 0a 20 | m.point."...(let.((boundary-rx.. |
| 1d000 | 20 20 20 20 20 20 20 20 28 72 78 2d 74 6f 2d 73 74 72 69 6e 67 20 60 28 73 65 71 20 22 5c 72 5c | ........(rx-to-string.`(seq."\r\ |
| 1d020 | 6e 2d 2d 22 20 2c 62 6f 75 6e 64 61 72 79 29 29 29 29 0a 20 20 20 20 28 73 61 76 65 2d 6d 61 74 | n--".,boundary)))).....(save-mat |
| 1d040 | 63 68 2d 64 61 74 61 0a 20 20 20 20 20 20 28 77 68 65 6e 20 28 72 65 2d 73 65 61 72 63 68 2d 66 | ch-data.......(when.(re-search-f |
| 1d060 | 6f 72 77 61 72 64 20 62 6f 75 6e 64 61 72 79 2d 72 78 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 | orward.boundary-rx.nil.t)....... |
| 1d080 | 20 20 28 6c 65 74 20 28 28 6d 70 74 20 28 6d 61 74 63 68 2d 62 65 67 69 6e 6e 69 6e 67 20 30 29 | ..(let.((mpt.(match-beginning.0) |
| 1d0a0 | 29 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 52 65 74 75 72 6e 20 73 74 61 74 75 73 20 69 6e | ))...........;;.Return.status.in |
| 1d0c0 | 64 69 63 61 74 6f 72 20 61 6e 64 20 74 68 65 20 73 74 61 72 74 20 6d 61 74 63 68 20 70 6f 69 6e | dicator.and.the.start.match.poin |
| 1d0e0 | 74 0a 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 66 | t...........(list............(if |
| 1d100 | 20 28 73 61 76 65 2d 65 78 63 75 72 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .(save-excursion................ |
| 1d120 | 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 6c 69 6e 65 2d 62 65 67 69 6e 6e 69 6e 67 2d 70 6f 73 | ..(goto-char.(line-beginning-pos |
| 1d140 | 69 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 6f 6b 69 6e | ition))..................(lookin |
| 1d160 | 67 2d 61 74 20 28 72 78 2d 74 6f 2d 73 74 72 69 6e 67 20 60 28 73 65 71 20 62 6f 6c 20 22 2d 2d | g-at.(rx-to-string.`(seq.bol."-- |
| 1d180 | 22 20 2c 62 6f 75 6e 64 61 72 79 20 22 2d 2d 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 | ".,boundary."--"))))............ |
| 1d1a0 | 20 20 20 20 3a 64 6f 6e 65 20 3a 63 6f 6e 74 69 6e 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 | ....:done.:continue)............ |
| 1d1c0 | 28 70 72 6f 67 6e 20 28 67 6f 74 6f 2d 63 68 61 72 20 6d 70 74 29 20 6d 70 74 29 29 29 29 29 29 | (progn.(goto-char.mpt).mpt)))))) |
| 1d1e0 | 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 6d 70 2d 64 65 63 6f 64 65 | )..(defun.elnode--http-mp-decode |
| 1d200 | 20 28 62 75 66 66 65 72 20 68 65 61 64 65 72 2d 65 6e 64 2d 70 74 20 62 6f 75 6e 64 61 72 79 29 | .(buffer.header-end-pt.boundary) |
| 1d220 | 0a 20 20 22 44 65 63 6f 64 65 20 61 20 6d 75 6c 74 69 70 61 72 74 2f 66 6f 72 6d 2d 64 61 74 61 | ..."Decode.a.multipart/form-data |
| 1d240 | 20 75 70 6c 6f 61 64 20 77 69 74 68 20 42 4f 55 4e 44 41 52 59 20 69 6e 20 42 55 46 46 45 52 2e | .upload.with.BOUNDARY.in.BUFFER. |
| 1d260 | 22 0a 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 62 75 66 66 65 72 0a | "...(with-current-buffer.buffer. |
| 1d280 | 20 20 20 20 28 67 6f 74 6f 2d 63 68 61 72 20 28 2d 20 68 65 61 64 65 72 2d 65 6e 64 2d 70 74 20 | ....(goto-char.(-.header-end-pt. |
| 1d2a0 | 32 29 29 20 3b 20 6d 6f 76 65 73 20 62 61 63 6b 20 6f 76 65 72 20 74 68 65 20 5c 72 5c 6e 0a 20 | 2)).;.moves.back.over.the.\r\n.. |
| 1d2c0 | 20 20 20 28 6c 6f 6f 70 20 77 68 69 6c 65 20 28 65 71 20 28 63 61 72 20 6e 65 78 74 2d 62 6f 75 | ...(loop.while.(eq.(car.next-bou |
| 1d2e0 | 6e 64 61 72 79 29 20 3a 63 6f 6e 74 69 6e 75 65 29 0a 20 20 20 20 20 20 20 77 69 74 68 20 6e 65 | ndary).:continue)........with.ne |
| 1d300 | 78 74 2d 62 6f 75 6e 64 61 72 79 20 3d 20 28 65 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 6d 70 2d 66 | xt-boundary.=.(elnode--http-mp-f |
| 1d320 | 69 6e 64 2d 62 6f 75 6e 64 61 72 79 20 62 6f 75 6e 64 61 72 79 29 0a 20 20 20 20 20 20 20 63 6f | ind-boundary.boundary)........co |
| 1d340 | 6c 6c 65 63 74 0a 20 20 20 20 20 20 20 20 20 28 64 65 73 74 72 75 63 74 75 72 69 6e 67 2d 62 69 | llect..........(destructuring-bi |
| 1d360 | 6e 64 20 28 6c 65 61 64 65 72 20 61 6c 69 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 | nd.(leader.alist)..............( |
| 1d380 | 65 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 70 61 72 73 65 2d 68 65 61 64 65 72 20 28 63 75 72 72 65 | elnode--http-parse-header.(curre |
| 1d3a0 | 6e 74 2d 62 75 66 66 65 72 29 20 28 70 6f 69 6e 74 29 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 | nt-buffer).(point).t)........... |
| 1d3c0 | 20 28 6c 65 74 2a 20 28 28 63 64 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .(let*.((cde.................... |
| 1d3e0 | 28 6d 61 69 6c 2d 68 65 61 64 65 72 2d 70 61 72 73 65 2d 63 6f 6e 74 65 6e 74 2d 64 69 73 70 6f | (mail-header-parse-content-dispo |
| 1d400 | 73 69 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6b 76 61 20 | sition.....................(kva. |
| 1d420 | 22 63 6f 6e 74 65 6e 74 2d 64 69 73 70 6f 73 69 74 69 6f 6e 22 20 61 6c 69 73 74 29 29 29 0a 20 | "content-disposition".alist))).. |
| 1d440 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 61 6d 65 20 28 61 6c 69 73 74 2d 67 65 | .................(name.(alist-ge |
| 1d460 | 74 20 27 6e 61 6d 65 20 28 63 64 72 20 63 64 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | t.'name.(cdr.cde)))............. |
| 1d480 | 20 20 20 20 20 20 28 66 69 6c 65 6e 61 6d 65 20 28 61 6c 69 73 74 2d 67 65 74 20 27 66 69 6c 65 | ......(filename.(alist-get.'file |
| 1d4a0 | 6e 61 6d 65 20 28 63 64 72 20 63 64 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | name.(cdr.cde)))................ |
| 1d4c0 | 20 20 20 28 70 74 20 28 70 6f 69 6e 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b | ...(pt.(point)))..............;; |
| 1d4e0 | 20 46 69 6e 64 20 74 68 65 20 6e 65 78 74 20 65 6e 64 20 70 6f 69 6e 74 0a 20 20 20 20 20 20 20 | .Find.the.next.end.point........ |
| 1d500 | 20 20 20 20 20 20 28 73 65 74 71 20 6e 65 78 74 2d 62 6f 75 6e 64 61 72 79 0a 20 20 20 20 20 20 | ......(setq.next-boundary....... |
| 1d520 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 6d 70 2d 66 69 | .............(elnode--http-mp-fi |
| 1d540 | 6e 64 2d 62 6f 75 6e 64 61 72 79 20 62 6f 75 6e 64 61 72 79 29 29 0a 20 20 20 20 20 20 20 20 20 | nd-boundary.boundary)).......... |
| 1d560 | 20 20 20 20 28 6c 65 74 2a 20 28 28 6c 62 70 20 28 6c 69 6e 65 2d 62 65 67 69 6e 6e 69 6e 67 2d | ....(let*.((lbp.(line-beginning- |
| 1d580 | 70 6f 73 69 74 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 | position)).....................( |
| 1d5a0 | 63 6f 6e 74 65 6e 74 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 70 74 20 28 63 61 | content.(buffer-substring.pt.(ca |
| 1d5c0 | 64 72 20 6e 65 78 74 2d 62 6f 75 6e 64 61 72 79 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | dr.next-boundary)))............. |
| 1d5e0 | 20 20 20 20 20 20 20 20 28 63 6f 6e 74 65 6e 74 2d 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 | ........(content-data........... |
| 1d600 | 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...........(cond................ |
| 1d620 | 20 20 20 20 20 20 20 20 28 28 6e 6f 74 20 66 69 6c 65 6e 61 6d 65 29 20 63 6f 6e 74 65 6e 74 29 | ........((not.filename).content) |
| 1d640 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 20 28 70 72 6f 70 | ........................(t.(prop |
| 1d660 | 65 72 74 69 7a 65 20 63 6f 6e 74 65 6e 74 20 3a 65 6c 6e 6f 64 65 2d 66 69 6c 65 6e 61 6d 65 20 | ertize.content.:elnode-filename. |
| 1d680 | 66 69 6c 65 6e 61 6d 65 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f | filename)))))................(co |
| 1d6a0 | 6e 73 20 6e 61 6d 65 20 63 6f 6e 74 65 6e 74 2d 64 61 74 61 29 29 29 29 29 29 29 0a 0a 28 64 65 | ns.name.content-data)))))))..(de |
| 1d6c0 | 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 70 6f 73 74 2d 6d 70 2d 64 65 63 6f 64 65 20 | fun.elnode--http-post-mp-decode. |
| 1d6e0 | 28 68 74 74 70 63 6f 6e 20 70 61 72 73 65 64 2d 63 6f 6e 74 65 6e 74 2d 74 79 70 65 29 0a 20 20 | (httpcon.parsed-content-type)... |
| 1d700 | 22 44 65 63 6f 64 65 20 74 68 65 20 48 54 54 50 20 50 4f 53 54 20 6d 75 6c 74 69 70 61 72 74 20 | "Decode.the.HTTP.POST.multipart. |
| 1d720 | 74 68 69 6e 67 20 6f 6e 20 48 54 54 50 43 4f 4e 2e 22 0a 20 20 28 6c 65 74 20 28 28 62 6f 75 6e | thing.on.HTTPCON."...(let.((boun |
| 1d740 | 64 61 72 79 20 28 61 6c 69 73 74 2d 67 65 74 20 27 62 6f 75 6e 64 61 72 79 20 28 63 64 72 20 70 | dary.(alist-get.'boundary.(cdr.p |
| 1d760 | 61 72 73 65 64 2d 63 6f 6e 74 65 6e 74 2d 74 79 70 65 29 29 29 0a 20 20 20 20 20 20 20 20 28 62 | arsed-content-type))).........(b |
| 1d780 | 75 66 20 28 70 72 6f 63 65 73 73 2d 62 75 66 66 65 72 20 68 74 74 70 63 6f 6e 29 29 0a 20 20 20 | uf.(process-buffer.httpcon)).... |
| 1d7a0 | 20 20 20 20 20 28 68 64 72 2d 65 6e 64 2d 70 74 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 68 74 | .....(hdr-end-pt.(process-get.ht |
| 1d7c0 | 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 68 65 61 64 65 72 2d 65 6e 64 29 29 29 0a 20 20 20 20 | tpcon.:elnode-header-end)))..... |
| 1d7e0 | 28 65 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 6d 70 2d 64 65 63 6f 64 65 20 62 75 66 20 68 64 72 2d | (elnode--http-mp-decode.buf.hdr- |
| 1d800 | 65 6e 64 2d 70 74 20 62 6f 75 6e 64 61 72 79 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 | end-pt.boundary)))..(defun.elnod |
| 1d820 | 65 2d 2d 68 74 74 70 2d 70 6f 73 74 2d 74 6f 2d 61 6c 69 73 74 20 28 68 74 74 70 63 6f 6e 29 0a | e--http-post-to-alist.(httpcon). |
| 1d840 | 20 20 22 50 61 72 73 65 20 74 68 65 20 50 4f 53 54 20 62 6f 64 79 2e 22 0a 20 20 3b 3b 20 46 49 | .."Parse.the.POST.body."...;;.FI |
| 1d860 | 58 4d 45 3a 20 74 68 69 73 20 69 73 20 4f 4e 4c 59 20 61 20 63 6f 6e 74 65 6e 74 20 6c 65 6e 67 | XME:.this.is.ONLY.a.content.leng |
| 1d880 | 74 68 20 68 65 61 64 65 72 20 70 61 72 73 65 72 20 2d 2d 20 69 74 20 73 68 6f 75 6c 64 0a 20 20 | th.header.parser.--.it.should... |
| 1d8a0 | 3b 3b 20 61 6c 73 6f 20 63 6f 70 65 20 77 69 74 68 20 74 72 61 6e 73 66 65 72 20 65 6e 63 6f 64 | ;;.also.cope.with.transfer.encod |
| 1d8c0 | 69 6e 67 73 2e 0a 20 20 28 6c 65 74 2a 20 28 28 63 6f 6e 74 65 6e 74 2d 74 79 70 65 20 28 65 6c | ings....(let*.((content-type.(el |
| 1d8e0 | 6e 6f 64 65 2d 68 74 74 70 2d 68 65 61 64 65 72 20 68 74 74 70 63 6f 6e 20 27 63 6f 6e 74 65 6e | node-http-header.httpcon.'conten |
| 1d900 | 74 2d 74 79 70 65 29 29 0a 20 20 20 20 20 20 20 20 20 28 70 61 72 73 65 64 2d 74 79 70 65 0a 20 | t-type))..........(parsed-type.. |
| 1d920 | 20 20 20 20 20 20 20 20 20 28 77 68 65 6e 20 63 6f 6e 74 65 6e 74 2d 74 79 70 65 0a 20 20 20 20 | .........(when.content-type..... |
| 1d940 | 20 20 20 20 20 20 20 20 28 6d 61 69 6c 2d 68 65 61 64 65 72 2d 70 61 72 73 65 2d 63 6f 6e 74 65 | ........(mail-header-parse-conte |
| 1d960 | 6e 74 2d 74 79 70 65 20 63 6f 6e 74 65 6e 74 2d 74 79 70 65 29 29 29 29 0a 20 20 20 20 28 69 66 | nt-type.content-type)))).....(if |
| 1d980 | 20 28 65 71 75 61 6c 20 22 6d 75 6c 74 69 70 61 72 74 2f 66 6f 72 6d 2d 64 61 74 61 22 20 28 63 | .(equal."multipart/form-data".(c |
| 1d9a0 | 61 72 20 70 61 72 73 65 64 2d 74 79 70 65 29 29 0a 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 | ar.parsed-type)).........(elnode |
| 1d9c0 | 2d 2d 68 74 74 70 2d 70 6f 73 74 2d 6d 70 2d 64 65 63 6f 64 65 20 68 74 74 70 63 6f 6e 20 70 61 | --http-post-mp-decode.httpcon.pa |
| 1d9e0 | 72 73 65 64 2d 74 79 70 65 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 45 6c 73 65 20 69 74 27 73 20 | rsed-type).........;;.Else.it's. |
| 1da00 | 61 20 6e 6f 6e 2d 6d 75 6c 74 69 70 61 72 74 20 72 65 71 75 65 73 74 0a 20 20 20 20 20 20 20 20 | a.non-multipart.request......... |
| 1da20 | 28 65 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 71 75 65 72 79 2d 74 6f 2d 61 6c 69 73 74 0a 20 20 20 | (elnode--http-query-to-alist.... |
| 1da40 | 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 20 28 70 72 6f 63 | ......(with-current-buffer.(proc |
| 1da60 | 65 73 73 2d 62 75 66 66 65 72 20 68 74 74 70 63 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 3b | ess-buffer.httpcon)............; |
| 1da80 | 3b 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 | ;.(buffer-substring.(point-min). |
| 1daa0 | 28 70 6f 69 6e 74 2d 6d 61 78 29 29 20 3b 64 65 62 75 67 0a 20 20 20 20 20 20 20 20 20 20 20 28 | (point-max)).;debug............( |
| 1dac0 | 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 | buffer-substring.............;;. |
| 1dae0 | 77 65 20 6d 69 67 68 74 20 68 61 76 65 20 74 6f 20 61 64 64 20 32 20 74 6f 20 74 68 69 73 20 62 | we.might.have.to.add.2.to.this.b |
| 1db00 | 65 63 61 75 73 65 20 6f 66 20 74 72 61 69 6c 69 6e 67 20 5c 72 5c 6e 0a 20 20 20 20 20 20 20 20 | ecause.of.trailing.\r\n......... |
| 1db20 | 20 20 20 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 | ....(process-get.httpcon.:elnode |
| 1db40 | 2d 68 65 61 64 65 72 2d 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6f 69 6e 74 2d | -header-end).............(point- |
| 1db60 | 6d 61 78 29 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 70 | max)))))))..(defun.elnode-http-p |
| 1db80 | 61 72 61 6d 73 20 28 68 74 74 70 63 6f 6e 20 26 72 65 73 74 20 6e 61 6d 65 73 29 0a 20 20 22 47 | arams.(httpcon.&rest.names)..."G |
| 1dba0 | 65 74 20 61 6e 20 61 6c 69 73 74 20 6f 66 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 20 69 6e | et.an.alist.of.the.parameters.in |
| 1dbc0 | 20 74 68 65 20 72 65 71 75 65 73 74 2e 0a 0a 49 66 20 74 68 65 20 6d 65 74 68 6f 64 20 69 73 20 | .the.request...If.the.method.is. |
| 1dbe0 | 61 20 47 45 54 20 74 68 65 6e 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 20 61 72 65 20 66 72 | a.GET.then.the.parameters.are.fr |
| 1dc00 | 6f 6d 20 74 68 65 20 75 72 6c 2e 20 20 49 66 0a 74 68 65 20 6d 65 74 68 6f 64 20 69 73 20 61 20 | om.the.url...If.the.method.is.a. |
| 1dc20 | 50 4f 53 54 20 74 68 65 6e 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 73 20 6d 61 79 20 63 6f 6d | POST.then.the.parameters.may.com |
| 1dc40 | 65 20 66 72 6f 6d 20 65 69 74 68 65 72 20 74 68 65 0a 75 72 6c 20 6f 72 20 74 68 65 20 50 4f 53 | e.from.either.the.url.or.the.POS |
| 1dc60 | 54 20 62 6f 64 79 20 6f 72 20 62 6f 74 68 3a 0a 0a 20 50 4f 53 54 20 2f 70 61 74 68 3f 61 3d 62 | T.body.or.both:...POST./path?a=b |
| 1dc80 | 26 78 3d 79 0a 20 61 3d 63 0a 0a 77 6f 75 6c 64 20 72 65 73 75 6c 74 20 69 6e 3a 0a 0a 20 27 28 | &x=y..a=c..would.result.in:...'( |
| 1dca0 | 28 5c 22 61 5c 22 20 5c 22 62 5c 22 20 5c 22 63 5c 22 29 28 5c 22 78 5c 22 20 2e 20 5c 22 79 5c | (\"a\".\"b\".\"c\")(\"x\"...\"y\ |
| 1dcc0 | 22 29 29 0a 0a 49 66 20 4e 41 4d 45 53 20 61 72 65 20 73 70 65 63 69 66 69 65 64 20 69 74 20 69 | "))..If.NAMES.are.specified.it.i |
| 1dce0 | 73 20 61 20 66 69 6c 74 65 72 20 6c 69 73 74 20 6f 66 20 73 79 6d 62 6f 6c 73 20 6f 72 20 73 74 | s.a.filter.list.of.symbols.or.st |
| 1dd00 | 72 69 6e 67 73 0a 77 68 69 63 68 20 77 69 6c 6c 20 62 65 20 72 65 74 75 72 6e 65 64 2e 0a 0a 46 | rings.which.will.be.returned...F |
| 1dd20 | 69 6c 65 20 75 70 6c 6f 61 64 20 77 69 74 68 20 4d 75 6c 74 69 70 61 72 74 2f 66 6f 72 6d 2d 64 | ile.upload.with.Multipart/form-d |
| 1dd40 | 61 74 61 20 69 73 20 73 75 70 70 6f 72 74 65 64 20 62 79 20 45 6c 6e 6f 64 65 2e 0a 55 70 6c 6f | ata.is.supported.by.Elnode..Uplo |
| 1dd60 | 61 64 65 64 20 66 69 6c 65 73 20 61 72 65 20 70 72 65 73 65 6e 74 20 69 6e 20 74 68 65 20 70 61 | aded.files.are.present.in.the.pa |
| 1dd80 | 72 61 6d 73 20 74 68 65 20 73 61 6d 65 20 61 73 20 61 6e 79 20 6f 74 68 65 72 0a 70 61 72 61 6d | rams.the.same.as.any.other.param |
| 1dda0 | 20 65 78 63 65 70 74 20 66 6f 72 20 74 68 65 20 66 61 63 74 20 74 68 61 74 20 75 70 6c 6f 61 64 | .except.for.the.fact.that.upload |
| 1ddc0 | 65 64 20 66 69 6c 65 20 70 61 72 61 6d 73 20 68 61 76 65 20 61 20 74 65 78 74 0a 70 72 6f 70 65 | ed.file.params.have.a.text.prope |
| 1dde0 | 72 74 79 20 3a 65 6c 6e 6f 64 65 2d 66 69 6c 65 6e 61 6d 65 20 6f 6e 20 74 68 65 6d 3a 0a 0a 20 | rty.:elnode-filename.on.them:... |
| 1de00 | 20 28 67 65 74 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 79 20 30 20 3a 65 6c 6e 6f 64 65 2d 66 69 | .(get-text-property.0.:elnode-fi |
| 1de20 | 6c 65 6e 61 6d 65 0a 20 20 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 70 61 72 61 6d 20 68 74 | lename.....(elnode-http-param.ht |
| 1de40 | 74 70 63 6f 6e 20 5c 22 6d 79 66 69 6c 65 5c 22 29 29 20 3d 3e 20 27 2f 73 6f 6d 65 66 69 6c 65 | tpcon.\"myfile\")).=>.'/somefile |
| 1de60 | 2e 74 78 74 27 0a 0a 54 68 65 20 76 61 6c 75 65 20 63 6f 6d 65 73 20 66 72 6f 6d 20 74 68 65 20 | .txt'..The.value.comes.from.the. |
| 1de80 | 5c 22 43 6f 6e 74 65 6e 74 2d 44 69 73 70 6f 73 69 74 69 6f 6e 5c 22 20 68 65 61 64 65 72 20 69 | \"Content-Disposition\".header.i |
| 1dea0 | 6e 20 74 68 65 0a 6d 75 6c 74 69 70 61 72 74 20 75 70 6c 6f 61 64 2e 22 0a 20 20 28 6c 6f 6f 70 | n.the.multipart.upload."...(loop |
| 1dec0 | 20 66 6f 72 20 70 61 69 72 20 69 6e 0a 20 20 20 20 20 20 20 28 6f 72 0a 20 20 20 20 20 20 20 20 | .for.pair.in........(or......... |
| 1dee0 | 28 70 72 6f 63 65 73 73 2d 67 65 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 | (process-get.httpcon.:elnode-htt |
| 1df00 | 70 2d 70 61 72 61 6d 73 29 0a 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 71 75 65 72 79 20 28 | p-params).........(let.((query.( |
| 1df20 | 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 71 75 65 72 79 20 68 74 74 70 63 6f 6e 29 29 29 0a 20 20 20 | elnode-http-query.httpcon))).... |
| 1df40 | 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 61 6c 69 73 74 20 28 69 66 20 71 75 65 72 79 0a 20 20 | .......(let.((alist.(if.query... |
| 1df60 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 | .........................(elnode |
| 1df80 | 2d 2d 68 74 74 70 2d 71 75 65 72 79 2d 74 6f 2d 61 6c 69 73 74 20 71 75 65 72 79 29 0a 20 20 20 | --http-query-to-alist.query).... |
| 1dfa0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 28 29 29 29 29 0a 20 | ........................'()))).. |
| 1dfc0 | 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 65 71 75 61 6c 20 22 50 4f 53 54 22 20 28 65 6c | ...........(if.(equal."POST".(el |
| 1dfe0 | 6e 6f 64 65 2d 68 74 74 70 2d 6d 65 74 68 6f 64 20 68 74 74 70 63 6f 6e 29 29 0a 20 20 20 20 20 | node-http-method.httpcon))...... |
| 1e000 | 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 49 66 20 77 65 27 72 65 20 61 20 50 4f 53 54 20 77 65 | ...........;;.If.we're.a.POST.we |
| 1e020 | 20 68 61 76 65 20 74 6f 20 6d 65 72 67 65 20 74 68 65 20 70 61 72 61 6d 73 0a 20 20 20 20 20 20 | .have.to.merge.the.params....... |
| 1e040 | 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ..........(progn................ |
| 1e060 | 20 20 20 28 73 65 74 71 20 61 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...(setq.alist.................. |
| 1e080 | 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 61 6c 69 73 74 2d 6d 65 72 67 65 0a 20 20 20 20 | .......(elnode--alist-merge..... |
| 1e0a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6c 69 73 74 0a 20 20 20 20 20 | .....................alist...... |
| 1e0c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 68 74 74 | ....................(elnode--htt |
| 1e0e0 | 70 2d 70 6f 73 74 2d 74 6f 2d 61 6c 69 73 74 20 68 74 74 70 63 6f 6e 29 0a 20 20 20 20 20 20 20 | p-post-to-alist.httpcon)........ |
| 1e100 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 61 73 73 6f 63 29 29 0a 20 20 20 20 20 | ..................'assoc))...... |
| 1e120 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 70 75 74 20 68 74 74 70 63 6f | .............(process-put.httpco |
| 1e140 | 6e 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 70 61 72 61 6d 73 20 61 6c 69 73 74 29 0a 20 20 20 | n.:elnode-http-params.alist).... |
| 1e160 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6c 69 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 | ...............alist)........... |
| 1e180 | 20 20 20 20 20 20 3b 3b 20 45 6c 73 65 20 6a 75 73 74 20 72 65 74 75 72 6e 20 74 68 65 20 71 75 | ......;;.Else.just.return.the.qu |
| 1e1a0 | 65 72 79 20 70 61 72 61 6d 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 | ery.params.................(proc |
| 1e1c0 | 65 73 73 2d 70 75 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 70 61 72 | ess-put.httpcon.:elnode-http-par |
| 1e1e0 | 61 6d 73 20 61 6c 69 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6c 69 73 74 | ams.alist).................alist |
| 1e200 | 29 29 29 29 0a 20 20 20 20 20 69 66 20 28 6f 72 20 28 6e 6f 74 20 6e 61 6d 65 73 29 0a 20 20 20 | ))))......if.(or.(not.names).... |
| 1e220 | 20 20 20 20 20 20 20 20 20 28 6d 65 6d 71 20 28 69 6e 74 65 72 6e 20 28 63 61 72 20 70 61 69 72 | .........(memq.(intern.(car.pair |
| 1e240 | 29 29 20 6e 61 6d 65 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 6d 62 65 72 20 28 63 | )).names).............(member.(c |
| 1e260 | 61 72 20 70 61 69 72 29 20 6e 61 6d 65 73 29 29 0a 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 70 61 | ar.pair).names))......collect.pa |
| 1e280 | 69 72 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 70 61 72 61 6d 20 28 | ir))..(defun.elnode-http-param.( |
| 1e2a0 | 68 74 74 70 63 6f 6e 20 6e 61 6d 65 20 26 6f 70 74 69 6f 6e 61 6c 20 64 65 66 61 75 6c 74 29 0a | httpcon.name.&optional.default). |
| 1e2c0 | 20 20 22 47 65 74 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20 6e 61 6d 65 64 20 4e 41 4d 45 20 | .."Get.the.parameter.named.NAME. |
| 1e2e0 | 66 72 6f 6d 20 74 68 65 20 72 65 71 75 65 73 74 2e 0a 0a 49 66 20 74 68 65 20 70 61 72 61 6d 65 | from.the.request...If.the.parame |
| 1e300 | 74 65 72 20 63 61 6d 65 20 66 72 6f 6d 20 61 20 66 69 6c 65 20 75 70 6c 6f 61 64 20 69 74 20 68 | ter.came.from.a.file.upload.it.h |
| 1e320 | 61 73 20 61 20 74 65 78 74 20 70 72 6f 70 65 72 74 79 0a 69 6e 64 69 63 61 74 69 6e 67 20 74 68 | as.a.text.property.indicating.th |
| 1e340 | 65 20 66 69 6c 65 6e 61 6d 65 3a 0a 0a 20 20 28 67 65 74 2d 74 65 78 74 2d 70 72 6f 70 65 72 74 | e.filename:....(get-text-propert |
| 1e360 | 79 20 30 20 3a 65 6c 6e 6f 64 65 2d 66 69 6c 65 6e 61 6d 65 0a 20 20 20 20 28 65 6c 6e 6f 64 65 | y.0.:elnode-filename.....(elnode |
| 1e380 | 2d 68 74 74 70 2d 70 61 72 61 6d 20 68 74 74 70 63 6f 6e 20 5c 22 6d 79 66 69 6c 65 5c 22 29 29 | -http-param.httpcon.\"myfile\")) |
| 1e3a0 | 20 3d 3e 20 27 2f 73 6f 6d 65 66 69 6c 65 2e 74 78 74 27 0a 0a 49 66 20 74 68 65 20 70 61 72 61 | .=>.'/somefile.txt'..If.the.para |
| 1e3c0 | 6d 65 74 65 72 20 69 73 20 6e 6f 74 20 70 72 65 73 65 6e 74 20 61 6e 64 20 44 45 46 41 55 4c 54 | meter.is.not.present.and.DEFAULT |
| 1e3e0 | 20 69 73 20 70 72 65 73 65 6e 74 20 74 68 65 6e 0a 72 65 74 75 72 6e 20 44 45 46 41 55 4c 54 20 | .is.present.then.return.DEFAULT. |
| 1e400 | 69 6e 73 74 65 61 64 20 6f 66 20 60 6e 69 6c 27 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 70 61 72 | instead.of.`nil'."...(let*.((par |
| 1e420 | 61 6d 73 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 70 61 72 61 6d 73 20 68 74 74 70 63 6f 6e 29 | ams.(elnode-http-params.httpcon) |
| 1e440 | 29 0a 20 20 20 20 20 20 20 20 20 28 70 61 72 61 6d 2d 70 61 69 72 0a 20 20 20 20 20 20 20 20 20 | )..........(param-pair.......... |
| 1e460 | 20 28 61 73 73 6f 63 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 73 79 6d 62 6f 6c 70 20 | .(assoc............(if.(symbolp. |
| 1e480 | 6e 61 6d 65 29 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 6e 61 6d 65 29 20 6e 61 6d 65 29 0a 20 | name).(symbol-name.name).name).. |
| 1e4a0 | 20 20 20 20 20 20 20 20 20 20 70 61 72 61 6d 73 29 29 29 0a 20 20 20 20 3b 3b 20 53 68 6f 75 6c | ..........params))).....;;.Shoul |
| 1e4c0 | 64 20 77 65 20 73 69 67 6e 61 6c 20 77 68 65 6e 20 77 65 20 64 6f 6e 27 74 20 68 61 76 65 20 61 | d.we.signal.when.we.don't.have.a |
| 1e4e0 | 20 70 61 72 61 6d 3f 0a 20 20 20 20 28 69 66 20 70 61 72 61 6d 2d 70 61 69 72 0a 20 20 20 20 20 | .param?.....(if.param-pair...... |
| 1e500 | 20 20 20 28 63 64 72 20 70 61 72 61 6d 2d 70 61 69 72 29 0a 20 20 20 20 20 20 20 20 64 65 66 61 | ...(cdr.param-pair).........defa |
| 1e520 | 75 6c 74 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 6d 65 74 68 6f | ult)))..(defun.elnode-http-metho |
| 1e540 | 64 20 28 68 74 74 70 63 6f 6e 29 0a 20 20 22 47 65 74 20 74 68 65 20 48 54 54 50 20 72 65 71 75 | d.(httpcon)..."Get.the.HTTP.requ |
| 1e560 | 65 73 74 20 6d 65 74 68 6f 64 20 28 47 45 54 2c 20 50 55 54 2c 20 65 74 63 2e 2e 2e 29 20 61 73 | est.method.(GET,.PUT,.etc...).as |
| 1e580 | 20 61 20 73 74 72 69 6e 67 2e 22 0a 20 20 28 6f 72 0a 20 20 20 28 70 72 6f 63 65 73 73 2d 67 65 | .a.string."...(or....(process-ge |
| 1e5a0 | 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 6d 65 74 68 6f 64 29 0a 20 | t.httpcon.:elnode-http-method).. |
| 1e5c0 | 20 20 28 65 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 70 61 72 73 65 2d 73 74 61 74 75 73 20 68 74 74 | ..(elnode--http-parse-status.htt |
| 1e5e0 | 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 6d 65 74 68 6f 64 29 29 29 0a 0a 28 64 65 | pcon.:elnode-http-method)))..(de |
| 1e600 | 66 75 6e 20 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 76 65 72 73 69 6f 6e 20 28 68 74 74 70 63 6f 6e | fun.elnode-http-version.(httpcon |
| 1e620 | 29 0a 20 20 22 47 65 74 20 74 68 65 20 50 41 54 48 49 4e 46 4f 20 6f 66 20 74 68 65 20 72 65 71 | )..."Get.the.PATHINFO.of.the.req |
| 1e640 | 75 65 73 74 2e 22 0a 20 20 28 6f 72 0a 20 20 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 68 74 74 | uest."...(or....(process-get.htt |
| 1e660 | 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 76 65 72 73 69 6f 6e 29 0a 20 20 20 28 65 | pcon.:elnode-http-version)....(e |
| 1e680 | 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 70 61 72 73 65 2d 73 74 61 74 75 73 20 68 74 74 70 63 6f 6e | lnode--http-parse-status.httpcon |
| 1e6a0 | 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 76 65 72 73 69 6f 6e 29 29 29 0a 0a 28 64 65 66 75 6e | .:elnode-http-version)))..(defun |
| 1e6c0 | 20 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 65 6e 64 2d 73 74 72 69 6e 67 20 28 68 74 74 70 63 6f | .elnode-http-send-string.(httpco |
| 1e6e0 | 6e 20 73 74 72 29 0a 20 20 22 53 65 6e 64 20 53 54 52 20 74 6f 20 48 54 54 50 43 4f 4e 2c 20 64 | n.str)..."Send.STR.to.HTTPCON,.d |
| 1e700 | 6f 69 6e 67 20 63 68 75 6e 6b 65 64 20 65 6e 63 6f 64 69 6e 67 2e 22 0a 20 20 28 69 66 20 65 6c | oing.chunked.encoding."...(if.el |
| 1e720 | 6e 6f 64 65 2d 2d 68 74 74 70 2d 73 65 6e 64 2d 73 74 72 69 6e 67 2d 64 65 62 75 67 0a 20 20 20 | node--http-send-string-debug.... |
| 1e740 | 20 20 20 28 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 0a 20 20 20 20 20 20 20 22 65 6c 6e 6f 64 65 2d | ...(elnode-error........"elnode- |
| 1e760 | 68 74 74 70 2d 73 65 6e 64 2d 73 74 72 69 6e 67 20 25 73 20 5b 5b 25 73 5d 5d 22 0a 20 20 20 20 | http-send-string.%s.[[%s]]"..... |
| 1e780 | 20 20 20 68 74 74 70 63 6f 6e 20 28 65 6c 6e 6f 64 65 2d 74 72 75 6e 63 20 73 74 72 29 29 29 0a | ...httpcon.(elnode-trunc.str))). |
| 1e7a0 | 20 20 28 6c 65 74 20 28 28 6c 65 6e 20 28 73 74 72 69 6e 67 2d 62 79 74 65 73 20 73 74 72 29 29 | ..(let.((len.(string-bytes.str)) |
| 1e7c0 | 29 0a 20 20 20 20 28 70 72 6f 63 65 73 73 2d 70 75 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f | ).....(process-put.httpcon.:elno |
| 1e7e0 | 64 65 2d 62 79 74 65 73 2d 77 72 69 74 74 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | de-bytes-written................ |
| 1e800 | 20 20 28 2b 20 6c 65 6e 20 28 6f 72 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 68 74 74 70 63 6f | ..(+.len.(or.(process-get.httpco |
| 1e820 | 6e 20 3a 65 6c 6e 6f 64 65 2d 62 79 74 65 73 2d 77 72 69 74 74 65 6e 29 20 30 29 29 29 0a 20 20 | n.:elnode-bytes-written).0)))... |
| 1e840 | 20 20 3b 3b 20 46 49 58 4d 45 20 45 72 72 6f 72 73 20 63 61 6e 20 68 61 70 70 65 6e 20 68 65 72 | ..;;.FIXME.Errors.can.happen.her |
| 1e860 | 65 2c 20 62 65 63 61 75 73 65 20 74 68 65 20 73 6f 63 6b 65 74 20 67 6f 65 73 20 61 77 61 79 2e | e,.because.the.socket.goes.away. |
| 1e880 | 2e 20 69 74 0a 20 20 20 20 3b 3b 20 77 6f 75 6c 64 20 62 65 20 6e 69 63 65 20 74 6f 20 74 72 61 | ..it.....;;.would.be.nice.to.tra |
| 1e8a0 | 70 20 74 68 65 6d 20 61 6e 64 20 72 65 70 6f 72 74 20 61 6e 64 20 74 68 65 6e 20 72 65 2d 72 61 | p.them.and.report.and.then.re-ra |
| 1e8c0 | 69 73 65 20 74 68 65 6d 2e 0a 20 20 20 20 28 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 73 74 72 69 | ise.them......(process-send-stri |
| 1e8e0 | 6e 67 20 68 74 74 70 63 6f 6e 20 28 66 6f 72 6d 61 74 20 22 25 78 5c 72 5c 6e 25 73 5c 72 5c 6e | ng.httpcon.(format."%x\r\n%s\r\n |
| 1e900 | 22 20 6c 65 6e 20 28 6f 72 20 73 74 72 20 22 22 29 29 29 29 29 0a 0a 28 64 65 66 63 6f 6e 73 74 | ".len.(or.str."")))))..(defconst |
| 1e920 | 20 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 63 6f 64 65 73 2d 61 6c 69 73 74 0a 20 20 28 6c 6f 6f 70 | .elnode-http-codes-alist...(loop |
| 1e940 | 20 66 6f 72 20 70 20 69 6e 20 27 28 28 32 30 30 20 2e 20 22 4f 6b 22 29 0a 20 20 20 20 20 20 20 | .for.p.in.'((200..."Ok")........ |
| 1e960 | 20 20 20 20 20 20 20 20 20 20 20 20 28 32 30 31 20 2e 20 22 43 72 65 61 74 65 64 22 29 0a 20 20 | ............(201..."Created")... |
| 1e980 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 33 30 32 20 2e 20 22 52 65 64 69 72 65 63 | .................(302..."Redirec |
| 1e9a0 | 74 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 34 30 30 20 2e 20 22 42 | t")....................(400..."B |
| 1e9c0 | 61 64 20 52 65 71 75 65 73 74 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ad.Request").................... |
| 1e9e0 | 28 34 30 31 20 2e 20 22 41 75 74 68 65 6e 74 69 63 61 74 65 22 29 0a 20 20 20 20 20 20 20 20 20 | (401..."Authenticate").......... |
| 1ea00 | 20 20 20 20 20 20 20 20 20 20 28 34 30 34 20 2e 20 22 4e 6f 74 20 46 6f 75 6e 64 22 29 0a 20 20 | ..........(404..."Not.Found")... |
| 1ea20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 35 30 30 20 2e 20 22 53 65 72 76 65 72 20 | .................(500..."Server. |
| 1ea40 | 45 72 72 6f 72 22 29 29 0a 20 20 20 20 20 3b 3b 20 61 64 64 20 61 6e 20 61 6c 69 73 74 20 65 6e | Error"))......;;.add.an.alist.en |
| 1ea60 | 74 72 79 20 77 69 74 68 20 61 6e 20 69 6e 74 65 67 65 72 20 6b 65 79 0a 20 20 20 20 20 63 6f 6c | try.with.an.integer.key......col |
| 1ea80 | 6c 65 63 74 20 70 0a 20 20 20 20 20 3b 3b 20 61 64 64 20 61 6e 20 61 6c 69 73 74 20 65 6e 74 72 | lect.p......;;.add.an.alist.entr |
| 1eaa0 | 79 20 77 69 74 68 20 61 20 73 74 72 69 6e 67 20 6b 65 79 0a 20 20 20 20 20 63 6f 6c 6c 65 63 74 | y.with.a.string.key......collect |
| 1eac0 | 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 20 28 6e 75 6d 62 65 72 2d 74 6f 2d 73 74 72 69 6e 67 20 | ........(cons.(number-to-string. |
| 1eae0 | 28 63 61 72 20 70 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 70 29 29 29 0a | (car.p))..............(cdr.p))). |
| 1eb00 | 20 20 22 48 54 54 50 20 63 6f 64 65 73 20 77 69 74 68 20 73 74 72 69 6e 67 20 6b 65 79 73 20 61 | .."HTTP.codes.with.string.keys.a |
| 1eb20 | 6e 64 20 69 6e 74 65 67 65 72 20 6b 65 79 73 2e 22 29 0a 0a 28 64 65 66 75 6e 2a 20 65 6c 6e 6f | nd.integer.keys.")..(defun*.elno |
| 1eb40 | 64 65 2d 68 74 74 70 2d 63 6f 6f 6b 69 65 2d 6d 61 6b 65 20 28 6e 61 6d 65 20 64 61 74 61 20 26 | de-http-cookie-make.(name.data.& |
| 1eb60 | 6b 65 79 20 65 78 70 69 72 79 20 70 61 74 68 29 0a 20 20 22 4d 61 6b 65 20 61 20 73 65 74 2d 63 | key.expiry.path)..."Make.a.set-c |
| 1eb80 | 6f 6f 6b 69 65 20 68 65 61 64 65 72 20 70 61 69 72 20 66 72 6f 6d 20 4e 41 4d 45 20 61 6e 64 20 | ookie.header.pair.from.NAME.and. |
| 1eba0 | 44 41 54 41 2e 0a 0a 44 41 54 41 20 73 68 6f 75 6c 64 20 62 65 20 61 20 73 74 72 69 6e 67 20 74 | DATA...DATA.should.be.a.string.t |
| 1ebc0 | 6f 20 62 65 20 75 73 65 64 20 61 73 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 63 6f | o.be.used.as.the.value.of.the.co |
| 1ebe0 | 6f 6b 69 65 2e 0a 0a 4f 74 68 65 72 20 6b 65 79 20 76 61 6c 75 65 73 20 61 72 65 20 73 74 61 6e | okie...Other.key.values.are.stan |
| 1ec00 | 64 61 72 64 20 63 6f 6f 6b 69 65 20 61 74 74 72 69 62 75 74 65 73 2e 0a 0a 55 73 65 20 74 68 69 | dard.cookie.attributes...Use.thi |
| 1ec20 | 73 20 77 69 74 68 20 60 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 74 61 72 74 27 20 74 6f 20 6d 61 | s.with.`elnode-http-start'.to.ma |
| 1ec40 | 6b 65 20 63 6f 6f 6b 69 65 20 68 65 61 64 65 72 73 3a 0a 0a 20 28 65 6c 6e 6f 64 65 2d 68 74 74 | ke.cookie.headers:...(elnode-htt |
| 1ec60 | 70 2d 73 74 61 72 74 0a 20 20 20 20 68 74 74 70 63 6f 6e 20 32 30 30 0a 20 20 20 20 27 28 63 6f | p-start.....httpcon.200.....'(co |
| 1ec80 | 6e 74 65 6e 74 2d 74 79 70 65 20 2e 20 5c 22 74 65 78 74 2f 68 74 6d 6c 5c 22 29 0a 20 20 20 20 | ntent-type...\"text/html\")..... |
| 1eca0 | 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 63 6f 6f 6b 69 65 2d 6d 61 6b 65 20 5c 22 70 69 5c 22 20 | (elnode-http-cookie-make.\"pi\". |
| 1ecc0 | 33 2e 31 34 35 37 39 29 0a 20 20 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 63 6f 6f 6b 69 65 | 3.14579).....(elnode-http-cookie |
| 1ece0 | 2d 6d 61 6b 65 20 5c 22 65 5c 22 20 31 2e 35 39 0a 20 20 20 20 20 20 20 3a 65 78 70 69 72 79 20 | -make.\"e\".1.59........:expiry. |
| 1ed00 | 5c 22 4d 6f 6e 2c 20 46 65 62 20 32 37 20 32 30 31 32 20 32 32 3a 31 30 3a 32 31 20 47 4d 54 3b | \"Mon,.Feb.27.2012.22:10:21.GMT; |
| 1ed20 | 5c 22 29 0a 0a 54 68 69 73 20 77 69 6c 6c 20 73 65 6e 64 20 74 77 6f 20 53 65 74 2d 43 6f 6f 6b | \")..This.will.send.two.Set-Cook |
| 1ed40 | 69 65 20 68 65 61 64 65 72 73 20 73 65 74 74 69 6e 67 20 74 68 65 20 63 6f 6f 6b 69 65 73 20 27 | ie.headers.setting.the.cookies.' |
| 1ed60 | 70 69 27 0a 61 6e 64 20 27 65 27 2e 0a 0a 54 68 65 20 72 65 74 75 72 6e 20 76 61 6c 75 65 20 69 | pi'.and.'e'...The.return.value.i |
| 1ed80 | 73 20 61 20 63 6f 6e 73 20 70 61 69 72 2e 22 0a 20 20 28 63 6f 6e 73 0a 20 20 20 22 53 65 74 2d | s.a.cons.pair."...(cons...."Set- |
| 1eda0 | 43 6f 6f 6b 69 65 22 0a 20 20 20 28 66 6f 72 6d 61 74 20 22 25 73 3d 25 73 3b 25 73 22 0a 20 20 | Cookie"....(format."%s=%s;%s"... |
| 1edc0 | 20 20 20 20 20 20 20 20 20 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 0a 20 20 | .........name............data... |
| 1ede0 | 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6e 6f 74 20 28 6f 72 20 65 78 70 69 72 79 0a 20 20 20 | .........(if.(not.(or.expiry.... |
| 1ee00 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 74 68 29 29 0a 20 20 20 20 | .....................path))..... |
| 1ee20 | 20 20 20 20 20 20 20 20 20 20 20 22 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f | ...........""................(lo |
| 1ee40 | 6f 70 20 66 6f 72 20 70 20 69 6e 20 60 28 28 65 78 70 69 72 65 73 20 2e 20 2c 65 78 70 69 72 79 | op.for.p.in.`((expires...,expiry |
| 1ee60 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | )............................... |
| 1ee80 | 20 20 28 70 61 74 68 20 2e 20 2c 70 61 74 68 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ..(path...,path))............... |
| 1eea0 | 20 20 20 20 69 66 20 28 63 64 72 20 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ....if.(cdr.p).................. |
| 1eec0 | 20 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 | .concat.....................(for |
| 1eee0 | 6d 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 20 25 73 3d 25 73 | mat......................".%s=%s |
| 1ef00 | 3b 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 70 69 74 61 6c | ;"......................(capital |
| 1ef20 | 69 7a 65 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 28 63 61 72 20 70 29 29 29 0a 20 20 20 20 20 | ize.(symbol-name.(car.p)))...... |
| 1ef40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 70 29 29 29 29 29 29 29 0a 0a 28 | ................(cdr.p)))))))..( |
| 1ef60 | 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 68 65 61 64 65 72 2d 73 65 74 20 28 68 74 | defun.elnode-http-header-set.(ht |
| 1ef80 | 74 70 63 6f 6e 20 68 65 61 64 65 72 20 26 6f 70 74 69 6f 6e 61 6c 20 76 61 6c 75 65 29 0a 20 20 | tpcon.header.&optional.value)... |
| 1efa0 | 22 53 65 74 73 20 74 68 65 20 48 45 41 44 45 52 20 66 6f 72 20 6c 61 74 65 72 20 70 72 6f 63 65 | "Sets.the.HEADER.for.later.proce |
| 1efc0 | 73 73 69 6e 67 2e 0a 0a 48 45 41 44 45 52 20 6d 61 79 20 62 65 20 61 20 70 61 69 72 20 6f 66 20 | ssing...HEADER.may.be.a.pair.of. |
| 1efe0 | 60 6e 61 6d 65 27 20 61 6e 64 20 60 76 61 6c 75 65 27 20 6f 72 20 69 74 20 6d 61 79 20 6a 75 73 | `name'.and.`value'.or.it.may.jus |
| 1f000 | 74 20 62 65 20 61 0a 53 74 72 69 6e 67 2c 20 6f 72 20 61 20 53 79 6d 62 6f 6c 20 69 6e 20 77 68 | t.be.a.String,.or.a.Symbol.in.wh |
| 1f020 | 69 63 68 20 63 61 73 65 20 74 68 65 20 56 41 4c 55 45 20 6d 75 73 74 20 62 65 20 73 70 65 63 69 | ich.case.the.VALUE.must.be.speci |
| 1f040 | 66 69 65 64 2e 0a 0a 49 66 20 48 45 41 44 45 52 20 69 73 20 61 20 70 61 69 72 20 61 6e 64 20 56 | fied...If.HEADER.is.a.pair.and.V |
| 1f060 | 41 4c 55 45 20 69 73 20 61 6c 73 6f 20 73 70 65 63 69 66 69 65 64 20 74 68 65 6e 20 56 41 4c 55 | ALUE.is.also.specified.then.VALU |
| 1f080 | 45 20 69 73 0a 69 67 6e 6f 72 65 64 2e 0a 0a 57 68 65 6e 20 74 68 65 20 48 54 54 50 20 72 65 73 | E.is.ignored...When.the.HTTP.res |
| 1f0a0 | 70 6f 6e 73 65 20 69 73 20 73 74 61 72 74 65 64 20 61 6e 79 20 73 65 74 20 68 65 61 64 65 72 73 | ponse.is.started.any.set.headers |
| 1f0c0 | 20 77 69 6c 6c 20 62 65 20 6d 65 72 67 65 64 0a 77 69 74 68 20 61 6e 79 20 72 65 71 75 65 73 74 | .will.be.merged.with.any.request |
| 1f0e0 | 65 64 20 68 65 61 64 65 72 73 20 61 6e 64 20 73 65 6e 74 2e 0a 0a 49 66 20 74 68 65 20 72 65 73 | ed.headers.and.sent...If.the.res |
| 1f100 | 70 6f 6e 73 65 20 68 61 73 20 62 65 65 6e 20 73 74 61 72 74 65 64 20 69 74 20 69 73 20 61 6e 20 | ponse.has.been.started.it.is.an. |
| 1f120 | 65 72 72 6f 72 20 74 6f 20 74 72 79 20 74 6f 20 73 65 74 20 61 0a 68 65 61 64 65 72 2e 20 20 54 | error.to.try.to.set.a.header...T |
| 1f140 | 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 77 69 6c 6c 20 6c 6f 67 20 74 68 65 20 65 72 72 6f 72 20 | his.function.will.log.the.error. |
| 1f160 | 61 6e 64 20 72 65 74 75 72 6e 20 60 6e 69 6c 27 2e 0a 0a 53 65 65 20 60 65 6c 6e 6f 64 65 2d 68 | and.return.`nil'...See.`elnode-h |
| 1f180 | 74 74 70 2d 73 74 61 72 74 27 2e 22 0a 20 20 28 69 66 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 | ttp-start'."...(if.(process-get. |
| 1f1a0 | 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 74 61 72 74 65 64 29 0a 20 20 | httpcon.:elnode-http-started)... |
| 1f1c0 | 20 20 20 20 28 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 20 22 63 61 6e 27 74 20 73 65 74 20 68 65 61 | ....(elnode-error."can't.set.hea |
| 1f1e0 | 64 65 72 2c 20 48 54 54 50 20 61 6c 72 65 61 64 79 20 73 74 61 72 74 65 64 20 6f 6e 20 25 73 22 | der,.HTTP.already.started.on.%s" |
| 1f200 | 20 68 74 74 70 63 6f 6e 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 68 65 61 64 65 72 73 20 28 | .httpcon).......(let.((headers.( |
| 1f220 | 70 72 6f 63 65 73 73 2d 67 65 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 68 65 61 64 | process-get.httpcon.:elnode-head |
| 1f240 | 65 72 73 2d 74 6f 2d 73 65 74 29 29 29 0a 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 70 | ers-to-set))).........(process-p |
| 1f260 | 75 74 0a 20 20 20 20 20 20 20 20 20 68 74 74 70 63 6f 6e 0a 20 20 20 20 20 20 20 20 20 3a 65 6c | ut..........httpcon..........:el |
| 1f280 | 6e 6f 64 65 2d 68 65 61 64 65 72 73 2d 74 6f 2d 73 65 74 0a 20 20 20 20 20 20 20 20 20 28 61 70 | node-headers-to-set..........(ap |
| 1f2a0 | 70 65 6e 64 20 68 65 61 64 65 72 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c | pend.headers..................(l |
| 1f2c0 | 69 73 74 20 28 69 66 20 28 63 6f 6e 73 70 20 68 65 61 64 65 72 29 0a 20 20 20 20 20 20 20 20 20 | ist.(if.(consp.header).......... |
| 1f2e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 | ..................header........ |
| 1f300 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 73 20 68 65 61 64 65 72 | ....................(cons.header |
| 1f320 | 20 76 61 6c 75 65 29 29 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 2a 20 65 6c 6e 6f 64 65 2d 68 | .value))))))))..(defun*.elnode-h |
| 1f340 | 74 74 70 2d 63 6f 6f 6b 69 65 2d 73 65 74 20 28 68 74 74 70 63 6f 6e 20 6e 61 6d 65 20 64 61 74 | ttp-cookie-set.(httpcon.name.dat |
| 1f360 | 61 20 26 6b 65 79 20 65 78 70 69 72 79 20 70 61 74 68 29 0a 20 20 22 4d 61 6b 65 20 61 20 63 6f | a.&key.expiry.path)..."Make.a.co |
| 1f380 | 6f 6b 69 65 20 61 6e 64 20 73 65 74 20 69 74 20 6f 6e 20 74 68 65 20 48 54 54 50 43 4f 4e 2e 0a | okie.and.set.it.on.the.HTTPCON.. |
| 1f3a0 | 0a 53 65 65 20 60 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 63 6f 6f 6b 69 65 2d 6d 61 6b 65 27 20 66 | .See.`elnode-http-cookie-make'.f |
| 1f3c0 | 6f 72 20 64 65 74 61 69 6c 73 20 61 62 6f 75 74 20 63 6f 6f 6b 69 65 20 6d 61 6b 69 6e 67 2e 22 | or.details.about.cookie.making." |
| 1f3e0 | 0a 20 20 28 6c 65 74 20 28 28 63 6f 6f 6b 69 65 2d 63 6f 6e 73 20 28 65 6c 6e 6f 64 65 2d 68 74 | ...(let.((cookie-cons.(elnode-ht |
| 1f400 | 74 70 2d 63 6f 6f 6b 69 65 2d 6d 61 6b 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | tp-cookie-make.................. |
| 1f420 | 20 20 20 20 20 6e 61 6d 65 20 64 61 74 61 20 3a 65 78 70 69 72 79 20 65 78 70 69 72 79 20 3a 70 | .....name.data.:expiry.expiry.:p |
| 1f440 | 61 74 68 20 70 61 74 68 29 29 29 0a 20 20 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 68 65 61 | ath.path))).....(elnode-http-hea |
| 1f460 | 64 65 72 2d 73 65 74 20 68 74 74 70 63 6f 6e 20 28 63 61 72 20 63 6f 6f 6b 69 65 2d 63 6f 6e 73 | der-set.httpcon.(car.cookie-cons |
| 1f480 | 29 20 28 63 64 72 20 63 6f 6f 6b 69 65 2d 63 6f 6e 73 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 | ).(cdr.cookie-cons))))..(defun.e |
| 1f4a0 | 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 72 65 73 75 6c 74 2d 68 65 61 64 65 72 20 28 68 64 72 2d 61 | lnode--http-result-header.(hdr-a |
| 1f4c0 | 6c 69 73 74 29 0a 20 20 22 54 75 72 6e 20 74 68 65 20 48 44 52 2d 41 4c 49 53 54 20 69 6e 74 6f | list)..."Turn.the.HDR-ALIST.into |
| 1f4e0 | 20 61 20 72 65 73 75 6c 74 20 68 65 61 64 65 72 20 73 74 72 69 6e 67 2e 0a 0a 54 68 65 20 48 44 | .a.result.header.string...The.HD |
| 1f500 | 52 2d 41 4c 49 53 54 20 69 73 20 61 6e 20 61 6c 69 73 74 20 6f 66 20 73 79 6d 62 6f 6c 20 6f 72 | R-ALIST.is.an.alist.of.symbol.or |
| 1f520 | 20 73 74 72 69 6e 67 20 6b 65 79 73 20 77 68 69 63 68 20 61 72 65 0a 68 65 61 64 65 72 20 6e 61 | .string.keys.which.are.header.na |
| 1f540 | 6d 65 73 2c 20 61 67 61 69 6e 73 74 20 76 61 6c 75 65 73 20 77 68 69 63 68 20 73 68 6f 75 6c 64 | mes,.against.values.which.should |
| 1f560 | 20 62 65 20 73 74 72 69 6e 67 73 2e 22 0a 20 20 28 6c 65 74 20 28 28 68 64 72 2d 70 61 69 72 73 | .be.strings."...(let.((hdr-pairs |
| 1f580 | 0a 20 20 20 20 20 20 20 20 20 28 61 70 70 65 6e 64 0a 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 | ..........(append...........(lis |
| 1f5a0 | 74 20 28 63 6f 6e 73 20 27 74 72 61 6e 73 66 65 72 2d 65 6e 63 6f 64 69 6e 67 20 22 63 68 75 6e | t.(cons.'transfer-encoding."chun |
| 1f5c0 | 6b 65 64 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 68 64 72 2d 61 6c 69 73 74 29 29 29 0a 20 20 | ked"))...........hdr-alist)))... |
| 1f5e0 | 20 20 28 6c 6f 6f 70 20 66 6f 72 20 70 20 69 6e 20 68 64 72 2d 70 61 69 72 73 0a 20 20 20 20 20 | ..(loop.for.p.in.hdr-pairs...... |
| 1f600 | 20 20 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 0a 20 20 20 20 20 20 | ..concat..........(format....... |
| 1f620 | 20 20 20 20 22 25 73 3a 20 25 73 5c 72 5c 6e 22 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 | ...."%s:.%s\r\n"...........(let. |
| 1f640 | 28 28 68 6e 61 6d 65 20 28 63 61 72 20 70 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 | ((hname.(car.p))).............(c |
| 1f660 | 61 70 69 74 61 6c 69 7a 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 | apitalize..............(cond.... |
| 1f680 | 20 20 20 20 20 20 20 20 20 20 20 20 28 28 73 79 6d 62 6f 6c 70 20 68 6e 61 6d 65 29 0a 20 20 20 | ............((symbolp.hname).... |
| 1f6a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 79 6d 62 6f 6c 2d 6e 61 6d 65 20 68 6e 61 6d 65 29 | .............(symbol-name.hname) |
| 1f6c0 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 73 74 72 69 6e 67 70 20 68 6e 61 6d 65 | )................((stringp.hname |
| 1f6e0 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 | ).................hname)........ |
| 1f700 | 20 20 20 20 20 20 20 20 28 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 72 72 6f | ........(t.................(erro |
| 1f720 | 72 20 22 75 6e 73 75 70 70 6f 72 74 65 64 20 68 65 61 64 65 72 20 74 79 70 65 22 29 29 29 29 29 | r."unsupported.header.type"))))) |
| 1f740 | 0a 20 20 20 20 20 20 20 20 20 20 28 63 64 72 20 70 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 | ...........(cdr.p)))))..(defun.e |
| 1f760 | 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 74 61 72 74 20 28 68 74 74 70 63 6f 6e 20 73 74 61 74 75 73 | lnode-http-start.(httpcon.status |
| 1f780 | 20 26 72 65 73 74 20 68 65 61 64 65 72 29 0a 20 20 22 53 74 61 72 74 20 74 68 65 20 68 74 74 70 | .&rest.header)..."Start.the.http |
| 1f7a0 | 20 72 65 73 70 6f 6e 73 65 20 6f 6e 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 68 74 74 70 20 | .response.on.the.specified.http. |
| 1f7c0 | 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0a 0a 48 54 54 50 43 4f 4e 20 69 73 20 74 68 65 20 48 54 54 50 | connection...HTTPCON.is.the.HTTP |
| 1f7e0 | 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 62 65 69 6e 67 20 68 61 6e 64 6c 65 64 2e 0a 0a 53 54 41 54 | .connection.being.handled...STAT |
| 1f800 | 55 53 20 69 73 20 74 68 65 20 48 54 54 50 20 73 74 61 74 75 73 2c 20 65 67 3a 20 32 30 30 20 6f | US.is.the.HTTP.status,.eg:.200.o |
| 1f820 | 72 20 34 30 34 3b 20 69 6e 74 65 67 65 72 73 20 6f 72 20 73 74 72 69 6e 67 73 0a 61 72 65 20 61 | r.404;.integers.or.strings.are.a |
| 1f840 | 63 63 65 70 74 61 62 6c 65 20 74 79 70 65 73 2e 0a 0a 48 45 41 44 45 52 20 69 73 20 61 20 73 65 | cceptable.types...HEADER.is.a.se |
| 1f860 | 71 75 65 6e 63 65 20 6f 66 20 28 60 68 65 61 64 65 72 2d 6e 61 6d 65 27 20 2e 20 60 76 61 6c 75 | quence.of.(`header-name'...`valu |
| 1f880 | 65 27 29 20 70 61 69 72 73 2e 0a 0a 46 6f 72 20 65 78 61 6d 70 6c 65 3a 0a 0a 20 28 65 6c 6e 6f | e').pairs...For.example:...(elno |
| 1f8a0 | 64 65 2d 68 74 74 70 2d 73 74 61 72 74 20 68 74 74 70 63 6f 6e 20 5c 22 32 30 30 5c 22 20 27 28 | de-http-start.httpcon.\"200\".'( |
| 1f8c0 | 5c 22 43 6f 6e 74 65 6e 74 2d 74 79 70 65 5c 22 20 2e 20 5c 22 74 65 78 74 2f 68 74 6d 6c 5c 22 | \"Content-type\"...\"text/html\" |
| 1f8e0 | 29 29 0a 0a 54 68 65 20 73 74 61 74 75 73 20 61 6e 64 20 74 68 65 20 68 65 61 64 65 72 20 61 72 | ))..The.status.and.the.header.ar |
| 1f900 | 65 20 61 6c 73 6f 20 73 74 6f 72 65 64 20 6f 6e 20 74 68 65 20 70 72 6f 63 65 73 73 20 61 73 20 | e.also.stored.on.the.process.as. |
| 1f920 | 6d 65 74 61 0a 64 61 74 61 2e 20 20 54 68 69 73 20 69 73 20 64 6f 6e 65 20 6d 61 69 6e 6c 79 20 | meta.data...This.is.done.mainly. |
| 1f940 | 66 6f 72 20 74 65 73 74 69 6e 67 20 69 6e 66 72 61 73 74 72 75 63 74 75 72 65 2e 22 0a 20 20 28 | for.testing.infrastructure."...( |
| 1f960 | 69 66 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d | if.(process-get.httpcon.:elnode- |
| 1f980 | 68 74 74 70 2d 73 74 61 72 74 65 64 29 0a 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 65 72 72 6f | http-started).......(elnode-erro |
| 1f9a0 | 72 20 22 48 74 74 70 20 61 6c 72 65 61 64 79 20 73 74 61 72 74 65 64 20 6f 6e 20 25 73 22 20 68 | r."Http.already.started.on.%s".h |
| 1f9c0 | 74 74 70 63 6f 6e 29 0a 20 20 20 20 3b 3b 20 53 65 6e 64 20 74 68 65 20 68 65 61 64 65 72 0a 20 | ttpcon).....;;.Send.the.header.. |
| 1f9e0 | 20 20 20 28 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 20 22 73 74 61 72 74 69 6e 67 20 48 54 54 50 20 | ...(elnode-error."starting.HTTP. |
| 1fa00 | 72 65 73 70 6f 6e 73 65 20 6f 6e 20 25 73 22 20 68 74 74 70 63 6f 6e 29 0a 20 20 20 20 28 6c 65 | response.on.%s".httpcon).....(le |
| 1fa20 | 74 20 28 28 68 65 61 64 65 72 2d 61 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 28 61 70 70 | t.((header-alist............(app |
| 1fa40 | 65 6e 64 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 | end.(process-get.httpcon.:elnode |
| 1fa60 | 2d 68 65 61 64 65 72 73 2d 74 6f 2d 73 65 74 29 20 68 65 61 64 65 72 29 29 0a 20 20 20 20 20 20 | -headers-to-set).header))....... |
| 1fa80 | 20 20 20 20 28 73 74 61 74 75 73 2d 63 6f 64 65 20 28 69 66 20 28 73 74 72 69 6e 67 70 20 73 74 | ....(status-code.(if.(stringp.st |
| 1faa0 | 61 74 75 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | atus)........................... |
| 1fac0 | 20 28 73 74 72 69 6e 67 2d 74 6f 2d 6e 75 6d 62 65 72 20 73 74 61 74 75 73 29 0a 20 20 20 20 20 | .(string-to-number.status)...... |
| 1fae0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 74 75 73 29 29 29 0a | ......................status))). |
| 1fb00 | 20 20 20 20 20 20 3b 3b 20 53 74 6f 72 65 20 74 68 65 20 6d 65 74 61 20 64 61 74 61 20 61 62 6f | ......;;.Store.the.meta.data.abo |
| 1fb20 | 75 74 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2e 0a 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d | ut.the.response........(process- |
| 1fb40 | 70 75 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 72 65 73 70 6f 6e 73 65 | put.httpcon.:elnode-httpresponse |
| 1fb60 | 2d 73 74 61 74 75 73 20 73 74 61 74 75 73 2d 63 6f 64 65 29 0a 20 20 20 20 20 20 28 70 72 6f 63 | -status.status-code).......(proc |
| 1fb80 | 65 73 73 2d 70 75 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 72 65 73 70 | ess-put.httpcon.:elnode-httpresp |
| 1fba0 | 6f 6e 73 65 2d 68 65 61 64 65 72 20 68 65 61 64 65 72 2d 61 6c 69 73 74 29 0a 20 20 20 20 20 20 | onse-header.header-alist)....... |
| 1fbc0 | 28 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 68 74 74 70 | (process-send-string........http |
| 1fbe0 | 63 6f 6e 0a 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 0a 20 20 20 20 20 20 20 20 22 48 54 54 50 | con........(format........."HTTP |
| 1fc00 | 2f 31 2e 31 20 25 64 20 25 73 5c 72 5c 6e 25 73 5c 72 5c 6e 22 0a 20 20 20 20 20 20 20 20 73 74 | /1.1.%d.%s\r\n%s\r\n".........st |
| 1fc20 | 61 74 75 73 2d 63 6f 64 65 0a 20 20 20 20 20 20 20 20 3b 3b 20 54 68 65 20 73 74 61 74 75 73 20 | atus-code.........;;.The.status. |
| 1fc40 | 74 65 78 74 0a 20 20 20 20 20 20 20 20 28 61 73 73 6f 63 2d 64 65 66 61 75 6c 74 20 73 74 61 74 | text.........(assoc-default.stat |
| 1fc60 | 75 73 2d 63 6f 64 65 20 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 63 6f 64 65 73 2d 61 6c 69 73 74 29 | us-code.elnode-http-codes-alist) |
| 1fc80 | 0a 20 20 20 20 20 20 20 20 3b 3b 20 54 68 65 20 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 20 28 | .........;;.The.header.........( |
| 1fca0 | 6f 72 0a 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 72 65 73 75 6c 74 | or..........(elnode--http-result |
| 1fcc0 | 2d 68 65 61 64 65 72 20 68 65 61 64 65 72 2d 61 6c 69 73 74 29 0a 20 20 20 20 20 20 20 20 20 22 | -header.header-alist).........." |
| 1fce0 | 5c 72 5c 6e 22 29 29 29 0a 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 70 75 74 20 68 74 74 70 | \r\n"))).......(process-put.http |
| 1fd00 | 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 74 61 72 74 65 64 20 27 74 29 29 29 29 0a | con.:elnode-http-started.'t)))). |
| 1fd20 | 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 65 6e 64 20 28 68 74 74 70 63 6f | .(defun.elnode--http-end.(httpco |
| 1fd40 | 6e 29 0a 20 20 22 57 65 20 6e 65 65 64 20 61 20 73 70 65 63 69 61 6c 20 65 6e 64 20 66 75 6e 63 | n)..."We.need.a.special.end.func |
| 1fd60 | 74 69 6f 6e 20 74 6f 20 64 6f 20 74 68 65 20 65 6d 61 63 73 20 63 6c 65 61 72 20 75 70 2e 0a 0a | tion.to.do.the.emacs.clear.up... |
| 1fd80 | 54 68 69 73 20 6d 61 6b 65 73 20 61 63 63 65 73 73 20 6c 6f 67 20 66 69 6c 65 20 63 61 6c 6c 73 | This.makes.access.log.file.calls |
| 1fda0 | 20 69 66 20 74 68 65 20 73 6f 63 6b 65 74 20 68 61 73 20 61 20 70 72 6f 70 65 72 74 79 0a 60 3a | .if.the.socket.has.a.property.`: |
| 1fdc0 | 65 6c 6e 6f 64 65 2d 61 63 63 65 73 73 2d 6c 6f 67 2d 6e 61 6d 65 27 2e 20 20 54 68 65 20 70 72 | elnode-access-log-name'...The.pr |
| 1fde0 | 6f 70 65 72 74 79 20 69 73 20 74 61 6b 65 6e 20 74 6f 20 62 65 20 74 68 65 20 6e 61 6d 65 0a 6f | operty.is.taken.to.be.the.name.o |
| 1fe00 | 66 20 61 20 62 75 66 66 65 72 2e 22 0a 20 20 28 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 20 22 65 6c | f.a.buffer."...(elnode-error."el |
| 1fe20 | 6e 6f 64 65 2d 2d 68 74 74 70 2d 65 6e 64 20 65 6e 64 69 6e 67 20 73 6f 63 6b 65 74 20 25 73 22 | node--http-end.ending.socket.%s" |
| 1fe40 | 20 68 74 74 70 63 6f 6e 29 0a 20 20 28 6c 65 74 20 28 28 61 63 63 65 73 73 2d 6c 6f 67 2d 6e 61 | .httpcon)...(let.((access-log-na |
| 1fe60 | 6d 65 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d | me.(process-get.httpcon.:elnode- |
| 1fe80 | 61 63 63 65 73 73 2d 6c 6f 67 2d 6e 61 6d 65 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 61 63 63 | access-log-name))).....(when.acc |
| 1fea0 | 65 73 73 2d 6c 6f 67 2d 6e 61 6d 65 0a 20 20 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 | ess-log-name.......(condition-ca |
| 1fec0 | 73 65 20 65 72 72 0a 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 61 63 63 | se.err...........(elnode-log-acc |
| 1fee0 | 65 73 73 20 61 63 63 65 73 73 2d 6c 6f 67 2d 6e 61 6d 65 20 68 74 74 70 63 6f 6e 29 0a 20 20 20 | ess.access-log-name.httpcon).... |
| 1ff00 | 20 20 20 20 20 28 65 72 72 6f 72 0a 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 0a 20 20 | .....(error..........(message... |
| 1ff20 | 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 22 65 6c 6e 6f | ........(concat............"elno |
| 1ff40 | 64 65 2d 2d 68 74 74 70 2d 65 6e 64 3a 20 61 6e 20 65 72 72 6f 72 20 6f 63 63 75 72 72 65 64 20 | de--http-end:.an.error.occurred. |
| 1ff60 | 22 0a 20 20 20 20 20 20 20 20 20 20 20 22 70 72 6f 63 65 73 73 69 6e 67 20 74 68 65 20 61 63 63 | "............"processing.the.acc |
| 1ff80 | 65 73 73 20 6c 6f 67 22 29 29 29 29 29 29 0a 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 | ess.log"))))))...(condition-case |
| 1ffa0 | 20 6e 69 6c 0a 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 65 6f 66 20 68 74 74 | .nil.......(process-send-eof.htt |
| 1ffc0 | 70 63 6f 6e 29 0a 20 20 20 20 28 65 72 72 6f 72 20 28 6d 65 73 73 61 67 65 20 22 65 6c 6e 6f 64 | pcon).....(error.(message."elnod |
| 1ffe0 | 65 2d 2d 68 74 74 70 2d 65 6e 64 20 63 6f 75 6c 64 20 6e 6f 74 20 73 65 6e 64 20 45 4f 46 22 29 | e--http-end.could.not.send.EOF") |
| 20000 | 29 29 0a 20 20 28 64 65 6c 65 74 65 2d 70 72 6f 63 65 73 73 20 68 74 74 70 63 6f 6e 29 0a 20 20 | ))...(delete-process.httpcon)... |
| 20020 | 28 6b 69 6c 6c 2d 62 75 66 66 65 72 20 28 70 72 6f 63 65 73 73 2d 62 75 66 66 65 72 20 68 74 74 | (kill-buffer.(process-buffer.htt |
| 20040 | 70 63 6f 6e 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 72 65 74 75 | pcon)))..(defun.elnode-http-retu |
| 20060 | 72 6e 20 28 68 74 74 70 63 6f 6e 20 26 6f 70 74 69 6f 6e 61 6c 20 64 61 74 61 29 0a 20 20 22 45 | rn.(httpcon.&optional.data)..."E |
| 20080 | 6e 64 20 74 68 65 20 72 65 73 70 6f 6e 73 65 20 6f 6e 20 48 54 54 50 43 4f 4e 20 6f 70 74 69 6f | nd.the.response.on.HTTPCON.optio |
| 200a0 | 6e 61 6c 6c 79 20 73 65 6e 64 69 6e 67 20 44 41 54 41 20 66 69 72 73 74 2e 0a 0a 48 54 54 50 43 | nally.sending.DATA.first...HTTPC |
| 200c0 | 4f 4e 20 69 73 20 74 68 65 20 68 74 74 70 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 77 68 69 63 68 20 | ON.is.the.http.connection.which. |
| 200e0 | 6d 75 73 74 20 68 61 76 65 20 68 61 64 20 74 68 65 20 68 65 61 64 65 72 73 0a 73 65 6e 74 20 77 | must.have.had.the.headers.sent.w |
| 20100 | 69 74 68 20 60 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 74 61 72 74 27 0a 0a 44 41 54 41 20 6d 75 | ith.`elnode-http-start'..DATA.mu |
| 20120 | 73 74 20 62 65 20 61 20 73 74 72 69 6e 67 2c 20 69 74 27 73 20 6a 75 73 74 20 70 61 73 73 65 64 | st.be.a.string,.it's.just.passed |
| 20140 | 20 74 6f 20 60 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 65 6e 64 27 2e 22 0a 20 20 28 69 66 20 28 | .to.`elnode-http-send'."...(if.( |
| 20160 | 6e 6f 74 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 | not.(process-get.httpcon.:elnode |
| 20180 | 2d 68 74 74 70 2d 73 74 61 72 74 65 64 29 29 0a 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 65 72 | -http-started)).......(elnode-er |
| 201a0 | 72 6f 72 20 22 48 74 74 70 20 6e 6f 74 20 73 74 61 72 74 65 64 22 29 0a 20 20 20 20 28 70 72 6f | ror."Http.not.started").....(pro |
| 201c0 | 67 6e 0a 20 20 20 20 20 20 28 69 66 20 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e | gn.......(if.data...........(eln |
| 201e0 | 6f 64 65 2d 68 74 74 70 2d 73 65 6e 64 2d 73 74 72 69 6e 67 20 68 74 74 70 63 6f 6e 20 64 61 74 | ode-http-send-string.httpcon.dat |
| 20200 | 61 29 29 0a 20 20 20 20 20 20 28 6c 65 74 20 28 28 65 6f 66 2d 66 75 6e 63 20 28 70 72 6f 63 65 | a)).......(let.((eof-func.(proce |
| 20220 | 73 73 2d 67 65 74 20 68 74 74 70 63 6f 6e 20 3a 73 65 6e 64 2d 65 6f 66 2d 66 75 6e 63 74 69 6f | ss-get.httpcon.:send-eof-functio |
| 20240 | 6e 29 29 29 0a 20 20 20 20 20 20 20 20 28 69 66 20 28 66 75 6e 63 74 69 6f 6e 70 20 65 6f 66 2d | n))).........(if.(functionp.eof- |
| 20260 | 66 75 6e 63 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 65 6f 66 2d 66 | func).............(funcall.eof-f |
| 20280 | 75 6e 63 20 68 74 74 70 63 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4e 65 65 64 | unc.httpcon).............;;.Need |
| 202a0 | 20 74 6f 20 63 6c 6f 73 65 20 74 68 65 20 63 68 75 6e 6b 65 64 20 65 6e 63 6f 64 69 6e 67 20 68 | .to.close.the.chunked.encoding.h |
| 202c0 | 65 72 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 65 6e | ere.............(elnode-http-sen |
| 202e0 | 64 2d 73 74 72 69 6e 67 20 68 74 74 70 63 6f 6e 20 22 22 29 29 29 29 29 29 0a 0a 28 64 65 66 75 | d-string.httpcon.""))))))..(defu |
| 20300 | 6e 20 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 68 74 6d 6c 20 28 68 74 74 70 63 6f 6e 20 68 74 6d 6c | n.elnode-send-html.(httpcon.html |
| 20320 | 29 0a 20 20 22 53 69 6d 70 6c 65 20 73 65 6e 64 20 66 6f 72 20 48 54 4d 4c 2e 0a 0a 55 73 65 20 | )..."Simple.send.for.HTML...Use. |
| 20340 | 74 68 69 73 20 66 6f 72 20 73 69 6d 70 6c 65 20 73 65 6e 64 69 6e 67 20 6f 66 20 61 20 66 75 6c | this.for.simple.sending.of.a.ful |
| 20360 | 6c 20 48 54 4d 4c 20 72 65 73 70 6f 6e 73 65 3a 0a 0a 20 28 64 65 66 75 6e 20 6d 79 2d 68 61 6e | l.HTML.response:...(defun.my-han |
| 20380 | 64 6c 65 72 20 28 68 74 74 70 63 6f 6e 29 0a 20 20 20 28 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 68 | dler.(httpcon)....(elnode-send-h |
| 203a0 | 74 6d 6c 20 68 74 74 70 63 6f 6e 20 5c 22 3c 68 74 6d 6c 3e 3c 68 31 3e 48 65 6c 6c 6f 21 3c 2f | tml.httpcon.\"<html><h1>Hello!</ |
| 203c0 | 68 31 3e 3c 2f 68 74 6d 6c 3e 5c 22 29 29 0a 0a 54 68 65 20 64 61 74 61 20 69 73 20 73 65 6e 74 | h1></html>\"))..The.data.is.sent |
| 203e0 | 20 77 69 74 68 20 63 6f 6e 74 65 6e 74 20 74 79 70 65 3a 20 74 65 78 74 2f 68 74 6d 6c 2e 22 0a | .with.content.type:.text/html.". |
| 20400 | 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 74 61 72 74 20 68 74 74 70 63 6f 6e 20 32 30 30 | ..(elnode-http-start.httpcon.200 |
| 20420 | 20 27 28 22 43 6f 6e 74 65 6e 74 2d 54 79 70 65 22 20 2e 20 22 74 65 78 74 2f 68 74 6d 6c 22 29 | .'("Content-Type"..."text/html") |
| 20440 | 29 0a 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 72 65 74 75 72 6e 20 68 74 74 70 63 6f 6e 20 | )...(elnode-http-return.httpcon. |
| 20460 | 68 74 6d 6c 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 6a 73 6f 6e 2d 66 69 78 20 28 | html))..(defun.elnode-json-fix.( |
| 20480 | 64 61 74 61 29 0a 20 20 22 46 69 78 20 4a 53 4f 4e 20 22 0a 20 20 28 6c 65 74 20 28 28 6a 73 6f | data)..."Fix.JSON."...(let.((jso |
| 204a0 | 6e 2d 74 6f 2d 73 65 6e 64 0a 20 20 20 20 20 20 20 20 20 28 6e 6f 66 6c 65 74 0a 20 20 20 20 20 | n-to-send..........(noflet...... |
| 204c0 | 20 20 20 20 20 20 20 20 28 28 6a 73 6f 6e 2d 61 6c 69 73 74 2d 70 20 28 6c 69 73 74 29 0a 20 20 | ........((json-alist-p.(list)... |
| 204e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 50 72 6f 70 65 72 20 63 68 65 63 6b 20 66 6f 72 20 | .............."Proper.check.for. |
| 20500 | 41 4c 49 53 54 2e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 68 69 6c 65 20 28 | ALIST.".................(while.( |
| 20520 | 63 6f 6e 73 70 20 6c 69 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 | consp.list)...................(s |
| 20540 | 65 74 71 20 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | etq.list........................ |
| 20560 | 20 28 69 66 20 28 61 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .(if.(and....................... |
| 20580 | 20 20 20 20 20 20 20 28 63 6f 6e 73 70 20 28 63 61 72 20 6c 69 73 74 29 29 0a 20 20 20 20 20 20 | .......(consp.(car.list))....... |
| 205a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 63 6f 6e | .......................(not.(con |
| 205c0 | 73 70 20 28 63 61 61 72 20 6c 69 73 74 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | sp.(caar.list)))................ |
| 205e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 74 20 28 76 65 63 74 6f 72 70 20 28 63 61 61 | ..............(not.(vectorp.(caa |
| 20600 | 72 20 6c 69 73 74 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | r.list))))...................... |
| 20620 | 20 20 20 20 20 20 20 28 63 64 72 20 6c 69 73 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .......(cdr.list)............... |
| 20640 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 6e 6f 74 2d 61 6c 69 73 74 29 29 29 0a 20 20 20 20 | ..............'not-alist)))..... |
| 20660 | 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 75 6c 6c 20 6c 69 73 74 29 29 29 0a 20 20 20 20 20 20 | ............(null.list)))....... |
| 20680 | 20 20 20 20 20 28 6a 73 6f 6e 2d 65 6e 63 6f 64 65 20 64 61 74 61 29 29 29 29 20 6a 73 6f 6e 2d | .....(json-encode.data)))).json- |
| 206a0 | 74 6f 2d 73 65 6e 64 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 72 65 | to-send))..(defun.elnode-send-re |
| 206c0 | 70 6f 72 74 20 28 68 74 74 70 63 6f 6e 29 0a 20 20 22 53 65 6e 64 20 62 61 63 6b 20 61 6e 20 48 | port.(httpcon)..."Send.back.an.H |
| 206e0 | 54 4d 4c 20 72 65 70 6f 72 74 20 6f 6e 20 74 68 65 20 72 65 71 75 65 73 74 2e 0a 0a 54 68 69 73 | TML.report.on.the.request...This |
| 20700 | 20 69 73 20 6f 66 74 65 6e 20 75 73 65 66 75 6c 20 66 6f 72 20 64 65 62 75 67 67 69 6e 67 2e 22 | .is.often.useful.for.debugging." |
| 20720 | 0a 20 20 28 6e 6f 66 6c 65 74 20 28 28 61 6c 69 73 74 2d 3e 68 74 6d 6c 20 28 61 6c 69 73 74 29 | ...(noflet.((alist->html.(alist) |
| 20740 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 61 70 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 | ..............(mapconcat........ |
| 20760 | 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 68 64 72 2d 70 61 69 72 29 0a 20 20 20 20 20 20 | .......(lambda.(hdr-pair)....... |
| 20780 | 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ..........(format............... |
| 207a0 | 20 20 20 22 25 73 20 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 72 | ..."%s.%s"..................(car |
| 207c0 | 20 68 64 72 2d 70 61 69 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 | .hdr-pair)..................(let |
| 207e0 | 20 28 28 76 20 28 63 64 72 20 68 64 72 2d 70 61 69 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 | .((v.(cdr.hdr-pair)))........... |
| 20800 | 20 20 20 20 20 20 20 20 20 28 69 66 20 28 61 6e 64 20 76 20 28 6e 6f 74 20 28 65 71 75 61 6c 20 | .........(if.(and.v.(not.(equal. |
| 20820 | 76 20 22 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 | v."")))........................( |
| 20840 | 66 6f 72 6d 61 74 20 22 25 53 22 20 76 29 20 22 22 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 | format."%S".v).""))))........... |
| 20860 | 20 20 20 20 61 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 6e 22 29 29 29 0a | ....alist..............."\n"))). |
| 20880 | 20 20 20 20 28 6c 65 74 2a 20 28 28 6d 65 74 68 6f 64 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d | ....(let*.((method.(elnode-http- |
| 208a0 | 6d 65 74 68 6f 64 20 68 74 74 70 63 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 70 61 72 | method.httpcon))............(par |
| 208c0 | 61 6d 74 65 72 73 20 28 61 6c 69 73 74 2d 3e 68 74 6d 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 | amters.(alist->html............. |
| 208e0 | 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 70 61 72 61 | ...........(or.(elnode-http-para |
| 20900 | 6d 73 20 68 74 74 70 63 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ms.httpcon)..................... |
| 20920 | 20 20 20 20 20 20 20 27 28 28 22 4e 6f 6e 65 22 2e 20 22 22 29 29 29 29 29 0a 20 20 20 20 20 20 | .......'(("None".."")))))....... |
| 20940 | 20 20 20 20 20 28 68 65 61 64 65 72 73 20 28 61 6c 69 73 74 2d 3e 68 74 6d 6c 20 28 65 6c 6e 6f | .....(headers.(alist->html.(elno |
| 20960 | 64 65 2d 68 74 74 70 2d 68 65 61 64 65 72 73 20 68 74 74 70 63 6f 6e 29 29 29 0a 20 20 20 20 20 | de-http-headers.httpcon)))...... |
| 20980 | 20 20 20 20 20 20 28 70 61 67 65 20 28 73 2d 6c 65 78 2d 66 6f 72 6d 61 74 20 22 3c 68 74 6d 6c | ......(page.(s-lex-format."<html |
| 209a0 | 3e 0a 3c 73 74 79 6c 65 3e 0a 62 6f 64 79 20 7b 20 66 6f 6e 74 2d 66 61 6d 69 6c 79 3a 20 73 61 | >.<style>.body.{.font-family:.sa |
| 209c0 | 6e 73 2d 73 65 72 69 66 3b 7d 0a 74 64 20 7b 0a 76 65 72 74 69 63 61 6c 2d 61 6c 69 67 6e 3a 20 | ns-serif;}.td.{.vertical-align:. |
| 209e0 | 74 6f 70 3b 0a 7d 0a 3c 2f 73 74 79 6c 65 3e 0a 3c 62 6f 64 79 3e 0a 3c 74 61 62 6c 65 3e 0a 3c | top;.}.</style>.<body>.<table>.< |
| 20a00 | 74 72 3e 3c 74 64 3e 6d 65 74 68 6f 64 3a 3c 2f 74 64 3e 3c 74 64 3e 24 7b 6d 65 74 68 6f 64 7d | tr><td>method:</td><td>${method} |
| 20a20 | 3c 2f 74 64 3e 3c 2f 74 72 3e 0a 3c 74 72 3e 3c 74 64 3e 70 61 72 61 6d 65 74 65 72 73 3a 3c 2f | </td></tr>.<tr><td>parameters:</ |
| 20a40 | 74 64 3e 3c 74 64 3e 3c 70 72 65 3e 24 7b 70 61 72 61 6d 74 65 72 73 7d 3c 2f 70 72 65 3e 3c 2f | td><td><pre>${paramters}</pre></ |
| 20a60 | 74 64 3e 3c 74 72 3e 0a 3c 74 72 3e 3c 74 64 3e 68 65 61 64 65 72 73 3a 3c 2f 74 64 3e 3c 74 64 | td><tr>.<tr><td>headers:</td><td |
| 20a80 | 3e 3c 70 72 65 3e 24 7b 68 65 61 64 65 72 73 7d 3c 2f 70 72 65 3e 3c 2f 74 64 3e 3c 74 72 3e 0a | ><pre>${headers}</pre></td><tr>. |
| 20aa0 | 3c 2f 74 61 62 6c 65 3e 0a 3c 2f 62 6f 64 79 3e 0a 3c 2f 68 74 6d 6c 3e 22 29 29 29 0a 20 20 20 | </table>.</body>.</html>"))).... |
| 20ac0 | 20 20 20 28 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 68 74 6d 6c 20 68 74 74 70 63 6f 6e 20 70 61 67 | ...(elnode-send-html.httpcon.pag |
| 20ae0 | 65 29 29 29 29 0a 0a 0a 28 64 65 66 75 6e 2a 20 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 6a 73 6f 6e | e))))...(defun*.elnode-send-json |
| 20b00 | 20 28 68 74 74 70 63 6f 6e 20 64 61 74 61 20 26 6b 65 79 20 63 6f 6e 74 65 6e 74 2d 74 79 70 65 | .(httpcon.data.&key.content-type |
| 20b20 | 20 6a 73 6f 6e 70 29 0a 20 20 22 43 6f 6e 76 65 72 74 20 44 41 54 41 20 74 6f 20 4a 53 4f 4e 20 | .jsonp)..."Convert.DATA.to.JSON. |
| 20b40 | 61 6e 64 20 73 65 6e 64 20 74 6f 20 74 68 65 20 48 54 54 50 43 4f 4e 20 77 69 74 68 20 61 20 32 | and.send.to.the.HTTPCON.with.a.2 |
| 20b60 | 30 30 20 5c 22 4f 6b 5c 22 2e 0a 0a 44 41 54 41 20 69 73 20 73 6f 6d 65 20 6c 69 73 70 20 6f 62 | 00.\"Ok\"...DATA.is.some.lisp.ob |
| 20b80 | 6a 65 63 74 2e 0a 0a 49 66 20 43 4f 4e 54 45 4e 54 2d 54 59 50 45 20 69 73 20 73 70 65 63 69 66 | ject...If.CONTENT-TYPE.is.specif |
| 20ba0 | 69 65 64 20 74 68 65 6e 20 69 74 20 69 73 20 75 73 65 64 20 61 73 20 74 68 65 20 48 54 54 50 20 | ied.then.it.is.used.as.the.HTTP. |
| 20bc0 | 43 6f 6e 74 65 6e 74 0a 54 79 70 65 20 6f 66 20 74 68 65 20 72 65 73 70 6f 6e 73 65 2e 0a 0a 49 | Content.Type.of.the.response...I |
| 20be0 | 66 20 4a 53 4f 4e 50 20 69 73 20 73 70 65 63 69 66 69 65 64 20 74 68 65 20 63 6f 6e 74 65 6e 74 | f.JSONP.is.specified.the.content |
| 20c00 | 20 69 73 20 73 65 6e 74 20 61 73 20 61 20 4a 53 4f 4e 2d 50 20 72 65 73 70 6f 6e 73 65 2e 0a 49 | .is.sent.as.a.JSON-P.response..I |
| 20c20 | 66 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 73 70 65 63 69 66 69 65 73 20 61 20 6e 61 6d 65 20 | f.the.variable.specifies.a.name. |
| 20c40 | 66 6f 72 20 74 68 65 20 4a 53 4f 4e 2d 50 20 63 61 6c 6c 62 61 63 6b 20 66 75 6e 63 74 69 6f 6e | for.the.JSON-P.callback.function |
| 20c60 | 0a 74 68 61 74 20 74 68 61 74 20 69 73 20 75 73 65 64 2e 20 20 41 6c 74 65 72 6e 61 74 65 6c 79 | .that.that.is.used...Alternately |
| 20c80 | 2c 20 69 66 20 74 68 65 20 4a 53 4f 4e 50 20 70 61 72 61 6d 65 74 65 72 20 64 6f 65 73 20 6e 6f | ,.if.the.JSONP.parameter.does.no |
| 20ca0 | 74 0a 73 70 65 63 69 66 79 20 61 20 6e 61 6d 65 2c 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 20 | t.specify.a.name,.the.parameter. |
| 20cc0 | 60 63 61 6c 6c 62 61 63 6b 27 20 69 73 20 6c 6f 6f 6b 65 64 20 75 70 20 6f 6e 20 74 68 65 0a 48 | `callback'.is.looked.up.on.the.H |
| 20ce0 | 54 54 50 43 4f 4e 20 61 6e 64 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 61 74 20 75 73 65 | TTPCON.and.the.value.of.that.use |
| 20d00 | 64 2e 20 20 49 66 20 6e 65 69 74 68 65 72 20 74 68 65 20 4a 53 4f 4e 50 0a 70 61 72 61 6d 65 74 | d...If.neither.the.JSONP.paramet |
| 20d20 | 65 72 2c 20 6e 6f 74 20 74 68 65 20 48 54 54 50 20 70 61 72 61 6d 65 74 65 72 20 60 63 61 6c 6c | er,.not.the.HTTP.parameter.`call |
| 20d40 | 62 61 63 6b 27 20 69 73 20 70 72 65 73 65 6e 74 20 74 68 61 74 20 74 68 65 0a 6e 61 6d 65 20 5c | back'.is.present.that.the.name.\ |
| 20d60 | 22 63 61 6c 6c 62 61 63 6b 5c 22 20 69 73 20 75 73 65 64 2e 22 0a 20 20 28 6c 65 74 20 28 28 6a | "callback\".is.used."...(let.((j |
| 20d80 | 73 6f 6e 2d 74 6f 2d 73 65 6e 64 20 28 65 6c 6e 6f 64 65 2d 6a 73 6f 6e 2d 66 69 78 20 64 61 74 | son-to-send.(elnode-json-fix.dat |
| 20da0 | 61 29 29 29 0a 20 20 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 74 61 72 74 0a 20 20 20 20 | a))).....(elnode-http-start..... |
| 20dc0 | 20 68 74 74 70 63 6f 6e 20 32 30 30 0a 20 20 20 20 20 60 28 22 43 6f 6e 74 65 6e 74 2d 74 79 70 | .httpcon.200......`("Content-typ |
| 20de0 | 65 22 20 2e 20 2c 28 6f 72 20 63 6f 6e 74 65 6e 74 2d 74 79 70 65 20 22 61 70 70 6c 69 63 61 74 | e"...,(or.content-type."applicat |
| 20e00 | 69 6f 6e 2f 6a 73 6f 6e 22 29 29 29 0a 20 20 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 72 65 | ion/json"))).....(elnode-http-re |
| 20e20 | 74 75 72 6e 0a 20 20 20 20 20 68 74 74 70 63 6f 6e 0a 20 20 20 20 20 28 69 66 20 6a 73 6f 6e 70 | turn......httpcon......(if.jsonp |
| 20e40 | 0a 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 0a 20 20 20 20 20 20 20 20 20 20 22 25 73 28 | ..........(format..........."%s( |
| 20e60 | 25 73 29 3b 22 0a 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 77 68 65 6e 20 28 73 74 72 69 6e | %s);"...........(or.(when.(strin |
| 20e80 | 67 70 20 6a 73 6f 6e 70 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6a 73 6f 6e 70 29 | gp.jsonp).................jsonp) |
| 20ea0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 70 61 72 61 | ...............(elnode-http-para |
| 20ec0 | 6d 20 68 74 74 70 63 6f 6e 20 22 63 61 6c 6c 62 61 63 6b 22 29 0a 20 20 20 20 20 20 20 20 20 20 | m.httpcon."callback")........... |
| 20ee0 | 20 20 20 20 22 63 61 6c 6c 62 61 63 6b 22 29 0a 20 20 20 20 20 20 20 20 20 20 6a 73 6f 6e 2d 74 | ...."callback")...........json-t |
| 20f00 | 6f 2d 73 65 6e 64 29 0a 20 20 20 20 20 20 20 20 20 6a 73 6f 6e 2d 74 6f 2d 73 65 6e 64 29 29 29 | o-send)..........json-to-send))) |
| 20f20 | 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 73 74 61 74 75 73 20 28 68 74 | )..(defun.elnode-send-status.(ht |
| 20f40 | 74 70 63 6f 6e 20 73 74 61 74 75 73 20 26 6f 70 74 69 6f 6e 61 6c 20 6d 73 67 29 0a 20 20 22 41 | tpcon.status.&optional.msg)..."A |
| 20f60 | 20 67 65 6e 65 72 69 63 20 68 61 6e 64 6c 65 72 20 74 6f 20 73 65 6e 64 20 53 54 41 54 55 53 20 | .generic.handler.to.send.STATUS. |
| 20f80 | 74 6f 20 48 54 54 50 43 4f 4e 2e 0a 0a 53 65 6e 64 73 20 61 6e 20 48 54 54 50 20 72 65 73 70 6f | to.HTTPCON...Sends.an.HTTP.respo |
| 20fa0 | 6e 73 65 20 77 69 74 68 20 53 54 41 54 55 53 20 74 6f 20 74 68 65 20 48 54 54 50 43 4f 4e 2e 20 | nse.with.STATUS.to.the.HTTPCON.. |
| 20fc0 | 20 41 6e 20 48 54 4d 4c 20 62 6f 64 79 0a 69 73 20 73 65 6e 74 20 62 79 20 6c 6f 6f 6b 69 6e 67 | .An.HTML.body.is.sent.by.looking |
| 20fe0 | 20 75 70 20 74 68 65 20 53 54 41 54 55 53 20 69 6e 20 74 68 65 20 60 65 6c 6e 6f 64 65 2d 64 65 | .up.the.STATUS.in.the.`elnode-de |
| 21000 | 66 61 75 6c 74 2d 72 65 73 70 6f 6e 73 65 27 0a 74 61 62 6c 65 2e 0a 0a 4f 70 74 69 6f 6e 61 6c | fault-response'.table...Optional |
| 21020 | 6c 79 20 69 6e 63 6c 75 64 65 20 4d 53 47 2e 22 0a 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d | ly.include.MSG."...(elnode-http- |
| 21040 | 73 74 61 72 74 20 68 74 74 70 63 6f 6e 20 73 74 61 74 75 73 20 27 28 22 43 6f 6e 74 65 6e 74 2d | start.httpcon.status.'("Content- |
| 21060 | 74 79 70 65 22 20 2e 20 22 74 65 78 74 2f 68 74 6d 6c 22 29 29 0a 20 20 28 65 6c 6e 6f 64 65 2d | type"..."text/html"))...(elnode- |
| 21080 | 68 74 74 70 2d 72 65 74 75 72 6e 20 68 74 74 70 63 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 | http-return.httpcon............. |
| 210a0 | 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 66 6f 72 6d 61 74 2d 72 65 73 70 6f 6e | ..........(elnode--format-respon |
| 210c0 | 73 65 20 73 74 61 74 75 73 20 6d 73 67 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d | se.status.msg)))..(defun.elnode- |
| 210e0 | 73 65 6e 64 2d 34 30 34 20 28 68 74 74 70 63 6f 6e 20 26 6f 70 74 69 6f 6e 61 6c 20 6d 73 67 29 | send-404.(httpcon.&optional.msg) |
| 21100 | 0a 20 20 22 53 65 6e 64 73 20 61 20 4e 6f 74 20 46 6f 75 6e 64 20 65 72 72 6f 72 20 74 6f 20 74 | ..."Sends.a.Not.Found.error.to.t |
| 21120 | 68 65 20 48 54 54 50 43 4f 4e 2e 0a 0a 4f 70 74 69 6f 6e 61 6c 6c 79 20 69 6e 63 6c 75 64 65 20 | he.HTTPCON...Optionally.include. |
| 21140 | 4d 53 47 2e 22 0a 20 20 28 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 73 74 61 74 75 73 20 68 74 74 70 | MSG."...(elnode-send-status.http |
| 21160 | 63 6f 6e 20 34 30 34 20 6d 73 67 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 73 65 6e | con.404.msg))..(defun.elnode-sen |
| 21180 | 64 2d 34 30 30 20 28 68 74 74 70 63 6f 6e 20 26 6f 70 74 69 6f 6e 61 6c 20 6d 73 67 29 0a 20 20 | d-400.(httpcon.&optional.msg)... |
| 211a0 | 22 53 65 6e 64 73 20 61 20 42 61 64 20 52 65 71 75 65 73 74 20 65 72 72 6f 72 20 74 6f 20 74 68 | "Sends.a.Bad.Request.error.to.th |
| 211c0 | 65 20 48 54 54 50 43 4f 4e 2e 0a 0a 4f 70 74 69 6f 6e 61 6c 6c 79 20 69 6e 63 6c 75 64 65 20 4d | e.HTTPCON...Optionally.include.M |
| 211e0 | 53 47 2e 22 0a 20 20 28 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 73 74 61 74 75 73 20 68 74 74 70 63 | SG."...(elnode-send-status.httpc |
| 21200 | 6f 6e 20 34 30 30 20 6d 73 67 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 73 65 6e 64 | on.400.msg))..(defun.elnode-send |
| 21220 | 2d 35 30 30 20 28 68 74 74 70 63 6f 6e 20 26 6f 70 74 69 6f 6e 61 6c 20 6d 73 67 29 0a 20 20 22 | -500.(httpcon.&optional.msg)..." |
| 21240 | 53 65 6e 64 73 20 61 20 53 65 72 76 65 72 20 45 72 72 6f 72 20 74 6f 20 74 68 65 20 48 54 54 50 | Sends.a.Server.Error.to.the.HTTP |
| 21260 | 43 4f 4e 2e 0a 0a 4f 70 74 69 6f 6e 61 6c 6c 79 20 69 6e 63 6c 75 64 65 20 4d 53 47 2e 22 0a 20 | CON...Optionally.include.MSG.".. |
| 21280 | 20 28 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 73 74 61 74 75 73 20 68 74 74 70 63 6f 6e 20 35 30 30 | .(elnode-send-status.httpcon.500 |
| 212a0 | 20 6d 73 67 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 72 65 64 69 72 | .msg))..(defun.elnode-send-redir |
| 212c0 | 65 63 74 20 28 68 74 74 70 63 6f 6e 20 6c 6f 63 61 74 69 6f 6e 20 26 6f 70 74 69 6f 6e 61 6c 20 | ect.(httpcon.location.&optional. |
| 212e0 | 74 79 70 65 29 0a 20 20 22 53 65 6e 64 73 20 61 20 72 65 64 69 72 65 63 74 20 74 6f 20 4c 4f 43 | type)..."Sends.a.redirect.to.LOC |
| 21300 | 41 54 49 4f 4e 2e 0a 0a 49 66 20 54 59 50 45 20 69 73 20 6e 6f 6e 2d 6e 69 6c 2c 20 75 73 65 20 | ATION...If.TYPE.is.non-nil,.use. |
| 21320 | 69 74 20 61 73 20 61 20 73 74 61 74 75 73 20 63 6f 64 65 2e 20 20 44 65 66 61 75 6c 74 73 20 74 | it.as.a.status.code...Defaults.t |
| 21340 | 6f 20 33 30 32 20 2d 0a 70 65 72 6d 61 6e 65 6e 74 20 72 65 64 69 72 65 63 74 2e 22 0a 20 20 28 | o.302.-.permanent.redirect."...( |
| 21360 | 6c 65 74 20 28 28 73 74 61 74 75 73 2d 63 6f 64 65 20 28 6f 72 20 74 79 70 65 20 33 30 32 29 29 | let.((status-code.(or.type.302)) |
| 21380 | 29 0a 20 20 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 74 61 72 74 20 68 74 74 70 63 6f 6e | ).....(elnode-http-start.httpcon |
| 213a0 | 20 73 74 61 74 75 73 2d 63 6f 64 65 20 60 28 22 4c 6f 63 61 74 69 6f 6e 22 20 2e 20 2c 6c 6f 63 | .status-code.`("Location"...,loc |
| 213c0 | 61 74 69 6f 6e 29 29 0a 20 20 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 72 65 74 75 72 6e 0a | ation)).....(elnode-http-return. |
| 213e0 | 20 20 20 20 20 68 74 74 70 63 6f 6e 0a 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 3c 68 31 3e 72 | .....httpcon......(format."<h1>r |
| 21400 | 65 64 69 72 65 63 74 69 6e 67 20 79 6f 75 20 74 6f 20 25 73 3c 2f 68 31 3e 5c 72 5c 6e 22 20 6c | edirecting.you.to.%s</h1>\r\n".l |
| 21420 | 6f 63 61 74 69 6f 6e 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 6e 6f 72 6d 61 | ocation))))..(defun.elnode-norma |
| 21440 | 6c 69 7a 65 2d 70 61 74 68 20 28 68 74 74 70 63 6f 6e 20 68 61 6e 64 6c 65 72 29 0a 20 20 22 41 | lize-path.(httpcon.handler)..."A |
| 21460 | 20 64 65 63 6f 72 61 74 6f 72 20 66 6f 72 20 48 41 4e 44 4c 45 52 20 74 68 61 74 20 6e 6f 72 6d | .decorator.for.HANDLER.that.norm |
| 21480 | 61 6c 69 7a 65 73 20 70 61 74 68 73 20 74 6f 20 68 61 76 65 20 61 20 74 72 61 69 6c 69 6e 67 20 | alizes.paths.to.have.a.trailing. |
| 214a0 | 73 6c 61 73 68 2e 0a 0a 54 68 69 73 20 63 68 65 63 6b 73 20 74 68 65 20 48 54 54 50 43 4f 4e 20 | slash...This.checks.the.HTTPCON. |
| 214c0 | 70 61 74 68 20 66 6f 72 20 61 20 74 72 61 69 6c 69 6e 67 20 73 6c 61 73 68 20 61 6e 64 20 73 65 | path.for.a.trailing.slash.and.se |
| 214e0 | 6e 64 73 20 61 20 33 30 32 0a 74 6f 20 74 68 65 20 73 6c 61 73 68 20 74 72 61 69 6c 65 64 20 75 | nds.a.302.to.the.slash.trailed.u |
| 21500 | 72 6c 20 69 66 20 74 68 65 72 65 20 69 73 20 6e 6f 6e 65 2e 0a 0a 4f 74 68 65 72 77 69 73 65 20 | rl.if.there.is.none...Otherwise. |
| 21520 | 69 74 20 63 61 6c 6c 73 20 48 41 4e 44 4c 45 52 2e 22 0a 20 20 28 6c 65 74 20 28 28 65 6e 64 73 | it.calls.HANDLER."...(let.((ends |
| 21540 | 2d 69 6e 2d 73 6c 61 73 68 2d 6f 72 2d 65 78 74 65 6e 73 69 6f 6e 2d 72 65 67 65 78 20 22 2e 2a | -in-slash-or-extension-regex.".* |
| 21560 | 5c 5c 28 2f 5c 5c 7c 2e 2a 5c 5c 2e 5b 5e 2f 5d 2a 5c 5c 29 24 22 29 0a 20 20 20 20 20 20 20 20 | \\(/\\|.*\\.[^/]*\\)$")......... |
| 21580 | 28 70 61 74 68 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 70 61 74 68 69 6e 66 6f 20 68 74 74 70 | (path.(elnode-http-pathinfo.http |
| 215a0 | 63 6f 6e 29 29 29 0a 20 20 20 20 28 69 66 20 28 6e 6f 74 20 28 73 61 76 65 2d 6d 61 74 63 68 2d | con))).....(if.(not.(save-match- |
| 215c0 | 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 | data................(string-matc |
| 215e0 | 68 20 65 6e 64 73 2d 69 6e 2d 73 6c 61 73 68 2d 6f 72 2d 65 78 74 65 6e 73 69 6f 6e 2d 72 65 67 | h.ends-in-slash-or-extension-reg |
| 21600 | 65 78 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ex.............................. |
| 21620 | 70 61 74 68 29 29 29 0a 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 72 65 64 | path))).........(elnode-send-red |
| 21640 | 69 72 65 63 74 0a 20 20 20 20 20 20 20 20 20 68 74 74 70 63 6f 6e 0a 20 20 20 20 20 20 20 20 20 | irect..........httpcon.......... |
| 21660 | 28 66 6f 72 6d 61 74 20 22 25 73 2f 22 20 70 61 74 68 29 29 0a 20 20 20 20 20 20 28 66 75 6e 63 | (format."%s/".path)).......(func |
| 21680 | 61 6c 6c 20 68 61 6e 64 6c 65 72 20 68 74 74 70 63 6f 6e 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 | all.handler.httpcon))))..(defun. |
| 216a0 | 65 6c 6e 6f 64 65 2d 2d 6d 61 70 70 65 72 2d 66 69 6e 64 2d 6d 61 74 63 68 2d 66 75 6e 63 20 28 | elnode--mapper-find-match-func.( |
| 216c0 | 6d 61 74 63 68 2d 70 61 74 68 20 6d 61 74 63 68 2d 70 61 69 72 29 0a 20 20 22 46 75 6e 74 69 6f | match-path.match-pair)..."Funtio |
| 216e0 | 6e 20 74 6f 20 74 65 73 74 20 4d 41 54 43 48 2d 50 41 54 48 20 61 67 61 69 6e 73 74 20 4d 41 54 | n.to.test.MATCH-PATH.against.MAT |
| 21700 | 43 48 2d 50 41 49 52 2e 22 0a 20 20 28 6c 65 74 20 28 28 6d 20 28 73 74 72 69 6e 67 2d 6d 61 74 | CH-PAIR."...(let.((m.(string-mat |
| 21720 | 63 68 20 28 63 61 72 20 6d 61 74 63 68 2d 70 61 69 72 29 20 6d 61 74 63 68 2d 70 61 74 68 29 29 | ch.(car.match-pair).match-path)) |
| 21740 | 29 0a 20 20 20 20 28 61 6e 64 20 6d 0a 20 20 20 20 20 20 20 20 20 28 6e 75 6d 62 65 72 70 20 6d | ).....(and.m..........(numberp.m |
| 21760 | 29 0a 20 20 20 20 20 20 20 20 20 28 3e 3d 20 6d 20 30 29 0a 20 20 20 20 20 20 20 20 20 6d 61 74 | )..........(>=.m.0)..........mat |
| 21780 | 63 68 2d 70 61 69 72 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 6d 61 70 70 65 | ch-pair)))..(defun.elnode--mappe |
| 217a0 | 72 2d 66 69 6e 64 2d 6d 61 70 70 69 6e 67 20 28 6d 61 74 63 68 2d 70 61 74 68 20 6d 61 70 70 69 | r-find-mapping.(match-path.mappi |
| 217c0 | 6e 67 2d 74 61 62 6c 65 29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 6d 61 70 70 69 6e 67 20 | ng-table)..."Return.the.mapping. |
| 217e0 | 74 68 61 74 20 6d 61 74 63 68 65 73 20 4d 41 54 43 48 2d 50 41 54 48 20 69 6e 20 4d 41 50 50 49 | that.matches.MATCH-PATH.in.MAPPI |
| 21800 | 4e 47 2d 54 41 42 4c 45 2e 22 0a 20 20 28 6c 6f 6f 70 20 66 6f 72 20 6d 61 70 70 69 6e 67 20 69 | NG-TABLE."...(loop.for.mapping.i |
| 21820 | 6e 20 6d 61 70 70 69 6e 67 2d 74 61 62 6c 65 0a 20 20 20 20 20 69 66 20 28 65 6c 6e 6f 64 65 2d | n.mapping-table......if.(elnode- |
| 21840 | 2d 6d 61 70 70 65 72 2d 66 69 6e 64 2d 6d 61 74 63 68 2d 66 75 6e 63 20 6d 61 74 63 68 2d 70 61 | -mapper-find-match-func.match-pa |
| 21860 | 74 68 20 6d 61 70 70 69 6e 67 29 0a 20 20 20 20 20 72 65 74 75 72 6e 20 6d 61 70 70 69 6e 67 29 | th.mapping)......return.mapping) |
| 21880 | 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 6d 61 70 70 65 72 2d 66 69 6e 64 20 28 68 | )..(defun.elnode--mapper-find.(h |
| 218a0 | 74 74 70 63 6f 6e 20 70 61 74 68 20 6d 61 70 70 69 6e 67 2d 74 61 62 6c 65 29 0a 20 20 22 54 72 | ttpcon.path.mapping-table)..."Tr |
| 218c0 | 79 20 61 6e 64 20 66 69 6e 64 20 74 68 65 20 50 41 54 48 20 69 6e 73 69 64 65 20 74 68 65 20 4d | y.and.find.the.PATH.inside.the.M |
| 218e0 | 41 50 50 49 4e 47 2d 54 41 42 4c 45 2e 0a 0a 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 65 78 70 | APPING-TABLE...This.function.exp |
| 21900 | 6f 73 65 73 20 69 74 73 20 60 6d 61 74 63 68 2d 64 61 74 61 27 20 6f 6e 20 74 68 65 20 27 70 61 | oses.its.`match-data'.on.the.'pa |
| 21920 | 74 68 27 20 76 61 72 69 61 62 6c 65 20 73 6f 0a 74 68 61 74 20 79 6f 75 20 63 61 6e 20 61 63 63 | th'.variable.so.that.you.can.acc |
| 21940 | 65 73 73 20 74 68 61 74 20 69 6e 20 79 6f 75 72 20 68 61 6e 64 6c 65 72 20 77 69 74 68 20 73 6f | ess.that.in.your.handler.with.so |
| 21960 | 6d 65 74 68 69 6e 67 20 6c 69 6b 65 3a 0a 0a 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 | mething.like:...(match-string.1. |
| 21980 | 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 70 61 74 68 69 6e 66 6f 20 68 74 74 70 63 6f 6e 29 29 0a | (elnode-http-pathinfo.httpcon)). |
| 219a0 | 0a 52 65 74 75 72 6e 73 20 74 68 65 20 68 61 6e 64 6c 65 72 20 66 75 6e 63 74 69 6f 6e 20 74 68 | .Returns.the.handler.function.th |
| 219c0 | 61 74 20 6d 61 70 70 65 64 2c 20 6f 72 20 60 6e 69 6c 27 2e 0a 0a 54 68 69 73 20 66 75 6e 63 74 | at.mapped,.or.`nil'...This.funct |
| 219e0 | 69 6f 6e 20 61 6c 73 6f 20 65 73 74 61 62 6c 69 73 68 65 73 20 74 68 65 20 60 3a 65 6c 6e 6f 64 | ion.also.establishes.the.`:elnod |
| 21a00 | 65 2d 68 74 74 70 2d 6d 61 70 70 69 6e 67 27 0a 70 72 6f 70 65 72 74 79 2c 20 61 64 64 69 6e 67 | e-http-mapping'.property,.adding |
| 21a20 | 20 69 74 20 74 6f 20 74 68 65 20 48 54 54 50 43 4f 4e 20 73 6f 20 69 74 20 63 61 6e 20 62 65 20 | .it.to.the.HTTPCON.so.it.can.be. |
| 21a40 | 61 63 63 65 73 73 65 64 20 66 72 6f 6d 0a 69 6e 73 69 64 65 20 79 6f 75 72 20 68 61 6e 64 6c 65 | accessed.from.inside.your.handle |
| 21a60 | 72 20 77 69 74 68 20 60 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 6d 61 70 70 69 6e 67 27 2e 22 0a 20 | r.with.`elnode-http-mapping'.".. |
| 21a80 | 20 3b 3b 20 46 69 72 73 74 20 66 69 6e 64 20 74 68 65 20 6d 61 70 70 69 6e 67 20 69 6e 20 74 68 | .;;.First.find.the.mapping.in.th |
| 21aa0 | 65 20 6d 61 70 70 69 6e 67 20 74 61 62 6c 65 0a 20 20 28 6c 65 74 2a 20 28 28 70 61 69 72 20 28 | e.mapping.table...(let*.((pair.( |
| 21ac0 | 65 6c 6e 6f 64 65 2d 2d 6d 61 70 70 65 72 2d 66 69 6e 64 2d 6d 61 70 70 69 6e 67 20 70 61 74 68 | elnode--mapper-find-mapping.path |
| 21ae0 | 20 6d 61 70 70 69 6e 67 2d 74 61 62 6c 65 29 29 0a 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 2d | .mapping-table))..........(func- |
| 21b00 | 69 74 65 6d 20 28 61 6e 64 20 70 61 69 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | item.(and.pair.................. |
| 21b20 | 20 20 20 20 20 20 20 20 28 6c 65 74 2a 20 28 28 76 20 28 63 64 72 20 70 61 69 72 29 29 29 0a 20 | ........(let*.((v.(cdr.pair))).. |
| 21b40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 61 | ..........................(or.(a |
| 21b60 | 6e 64 20 28 61 74 6f 6d 20 76 29 20 76 29 20 28 63 61 72 20 76 29 29 29 29 29 29 0a 20 20 20 20 | nd.(atom.v).v).(car.v))))))..... |
| 21b80 | 3b 3b 20 4e 6f 77 20 77 6f 72 6b 20 6f 75 74 20 69 66 20 77 65 20 66 6f 75 6e 64 20 6f 6e 65 20 | ;;.Now.work.out.if.we.found.one. |
| 21ba0 | 61 6e 64 20 77 68 61 74 20 69 74 20 77 61 73 20 6d 61 70 70 65 64 20 74 6f 0a 20 20 20 20 28 77 | and.what.it.was.mapped.to.....(w |
| 21bc0 | 68 65 6e 20 28 6f 72 20 28 66 75 6e 63 74 69 6f 6e 70 20 66 75 6e 63 2d 69 74 65 6d 29 0a 20 20 | hen.(or.(functionp.func-item)... |
| 21be0 | 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 74 69 6f 6e 70 20 28 61 6e 64 20 28 73 79 6d | ............(functionp.(and.(sym |
| 21c00 | 62 6f 6c 70 20 66 75 6e 63 2d 69 74 65 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | bolp.func-item)................. |
| 21c20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 79 6d 62 6f 6c 2d 76 61 6c 75 65 20 66 75 6e 63 | ..............(symbol-value.func |
| 21c40 | 2d 69 74 65 6d 29 29 29 29 0a 20 20 20 20 20 20 3b 3b 20 4d 61 6b 65 20 74 68 65 20 6d 61 74 63 | -item)))).......;;.Make.the.matc |
| 21c60 | 68 20 70 61 72 74 73 20 61 63 63 65 73 73 69 62 6c 65 0a 20 20 20 20 20 20 28 70 72 6f 63 65 73 | h.parts.accessible.......(proces |
| 21c80 | 73 2d 70 75 74 0a 20 20 20 20 20 20 20 68 74 74 70 63 6f 6e 0a 20 20 20 20 20 20 20 3a 65 6c 6e | s-put........httpcon........:eln |
| 21ca0 | 6f 64 65 2d 68 74 74 70 2d 6d 61 70 70 69 6e 67 0a 20 20 20 20 20 20 20 28 77 68 65 6e 20 28 73 | ode-http-mapping........(when.(s |
| 21cc0 | 74 72 69 6e 67 2d 6d 61 74 63 68 20 28 63 61 72 20 70 61 69 72 29 20 70 61 74 68 29 0a 20 20 20 | tring-match.(car.pair).path).... |
| 21ce0 | 20 20 20 20 20 20 28 6c 6f 6f 70 20 66 6f 72 20 69 20 66 72 6f 6d 20 30 20 74 6f 20 28 2d 20 28 | ......(loop.for.i.from.0.to.(-.( |
| 21d00 | 2f 20 28 6c 65 6e 67 74 68 20 28 6d 61 74 63 68 2d 64 61 74 61 20 70 61 74 68 29 29 20 32 29 20 | /.(length.(match-data.path)).2). |
| 21d20 | 31 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 28 6d 61 74 63 68 | 1)................collect.(match |
| 21d40 | 2d 73 74 72 69 6e 67 20 69 20 70 61 74 68 29 29 29 29 0a 20 20 20 20 20 20 3b 3b 20 52 65 74 75 | -string.i.path)))).......;;.Retu |
| 21d60 | 72 6e 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 20 66 75 6e 63 2d 69 74 65 6d 29 | rn.the.function.......func-item) |
| 21d80 | 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 6d 61 70 70 69 6e 67 2d | ))..(defun.elnode--http-mapping- |
| 21da0 | 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 28 68 74 74 70 63 6f 6e 20 26 6f 70 74 69 6f 6e 61 | implementation.(httpcon.&optiona |
| 21dc0 | 6c 20 70 61 72 74 29 0a 20 20 22 54 68 65 20 61 63 74 75 61 6c 20 69 6d 70 6c 65 6d 65 6e 74 61 | l.part)..."The.actual.implementa |
| 21de0 | 74 69 6f 6e 20 6f 66 20 60 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 6d 61 70 70 69 6e 67 2e 27 0a 0a | tion.of.`elnode-http-mapping.'.. |
| 21e00 | 54 68 69 73 20 69 73 20 68 65 72 65 20 73 6f 20 74 68 61 74 20 79 6f 75 20 66 6c 65 74 20 60 65 | This.is.here.so.that.you.flet.`e |
| 21e20 | 6c 6e 6f 64 65 2d 68 74 74 70 2d 6d 61 70 70 69 6e 67 27 20 61 6e 64 20 73 74 69 6c 6c 20 67 65 | lnode-http-mapping'.and.still.ge |
| 21e40 | 74 0a 61 74 20 74 68 65 20 72 65 61 6c 20 66 75 6e 63 74 69 6f 6e 61 6c 69 74 79 2e 22 0a 20 20 | t.at.the.real.functionality."... |
| 21e60 | 28 69 66 20 28 65 71 20 70 61 72 74 20 74 29 0a 20 20 20 20 20 20 28 6c 65 6e 67 74 68 20 28 70 | (if.(eq.part.t).......(length.(p |
| 21e80 | 72 6f 63 65 73 73 2d 67 65 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 2d | rocess-get.httpcon.:elnode-http- |
| 21ea0 | 6d 61 70 70 69 6e 67 29 29 0a 20 20 20 20 20 20 3b 3b 20 45 6c 73 65 20 69 74 27 73 20 61 20 73 | mapping)).......;;.Else.it's.a.s |
| 21ec0 | 70 65 63 69 66 69 63 20 70 61 72 74 0a 20 20 20 20 20 20 28 65 6c 74 0a 20 20 20 20 20 20 20 28 | pecific.part.......(elt........( |
| 21ee0 | 70 72 6f 63 65 73 73 2d 67 65 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 | process-get.httpcon.:elnode-http |
| 21f00 | 2d 6d 61 70 70 69 6e 67 29 0a 20 20 20 20 20 20 20 28 69 66 20 70 61 72 74 20 70 61 72 74 20 30 | -mapping)........(if.part.part.0 |
| 21f20 | 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 6d 61 70 70 69 6e 67 | ))))..(defun.elnode-http-mapping |
| 21f40 | 20 28 68 74 74 70 63 6f 6e 20 26 6f 70 74 69 6f 6e 61 6c 20 70 61 72 74 29 0a 20 20 22 52 65 74 | .(httpcon.&optional.part)..."Ret |
| 21f60 | 75 72 6e 20 74 68 65 20 6d 61 74 63 68 20 6f 6e 20 74 68 65 20 48 54 54 50 43 4f 4e 20 74 68 61 | urn.the.match.on.the.HTTPCON.tha |
| 21f80 | 74 20 72 65 73 75 6c 74 65 64 20 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 68 61 6e 64 6c 65 | t.resulted.in.the.current.handle |
| 21fa0 | 72 2e 0a 0a 57 69 74 68 20 50 41 52 54 20 69 74 20 72 65 74 75 72 6e 73 20 61 20 73 70 65 63 69 | r...With.PART.it.returns.a.speci |
| 21fc0 | 66 69 63 20 70 61 72 74 20 6f 66 20 74 68 65 20 6d 61 74 63 68 2c 20 62 79 20 64 65 66 61 75 6c | fic.part.of.the.match,.by.defaul |
| 21fe0 | 74 0a 50 41 52 54 20 69 73 20 30 2e 20 20 49 66 20 50 41 52 54 20 69 73 20 73 70 65 63 69 66 69 | t.PART.is.0...If.PART.is.specifi |
| 22000 | 65 64 20 61 73 20 60 74 27 20 74 68 65 6e 20 74 68 65 20 63 6f 75 6e 74 20 6f 66 20 70 61 72 74 | ed.as.`t'.then.the.count.of.part |
| 22020 | 73 0a 69 73 20 72 65 74 75 72 6e 65 64 2e 0a 0a 54 68 69 73 20 72 65 73 75 6c 74 73 20 6f 6e 6c | s.is.returned...This.results.onl |
| 22040 | 79 20 66 72 6f 6d 20 61 20 63 61 6c 6c 20 76 69 61 20 60 65 6c 6e 6f 64 65 2d 64 69 73 70 61 74 | y.from.a.call.via.`elnode-dispat |
| 22060 | 63 68 65 72 27 2e 0a 0a 49 74 20 72 65 74 75 72 6e 73 20 74 68 65 20 73 74 72 69 6e 67 20 77 68 | cher'...It.returns.the.string.wh |
| 22080 | 69 63 68 20 6d 61 74 63 68 65 64 20 79 6f 75 72 20 75 72 6c 2d 6d 61 70 70 69 6e 67 2c 20 77 69 | ich.matched.your.url-mapping,.wi |
| 220a0 | 74 68 20 74 68 65 0a 6d 61 74 63 68 2d 64 61 74 61 20 61 74 74 61 63 68 65 64 2e 20 53 6f 20 67 | th.the.match-data.attached..So.g |
| 220c0 | 69 76 65 6e 20 74 68 65 20 6d 61 70 70 69 6e 67 3a 0a 0a 20 28 5c 22 2f 73 74 61 74 69 63 2f 5c | iven.the.mapping:...(\"/static/\ |
| 220e0 | 5c 28 2e 2a 5c 5c 29 5c 22 20 2e 20 6d 79 2d 68 61 6e 64 6c 65 72 29 0a 0a 61 6e 64 20 74 68 65 | \(.*\\)\"...my-handler)..and.the |
| 22100 | 20 72 65 71 75 65 73 74 3a 0a 0a 20 2f 73 74 61 74 69 63 2f 73 6f 6d 65 64 69 72 2f 73 6f 6d 65 | .request:.../static/somedir/some |
| 22120 | 66 69 6c 65 2e 6a 70 67 0a 0a 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 69 73 20 74 72 75 65 20 | file.jpg..The.following.is.true. |
| 22140 | 69 6e 73 69 64 65 20 74 68 65 20 68 61 6e 64 6c 65 72 3a 0a 0a 20 28 65 71 75 61 6c 20 5c 22 2f | inside.the.handler:...(equal.\"/ |
| 22160 | 73 6f 6d 65 64 69 72 2f 73 6f 6d 65 66 69 6c 65 2e 6a 70 67 5c 22 0a 20 20 20 20 20 20 20 20 28 | somedir/somefile.jpg\".........( |
| 22180 | 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 6d 61 70 70 | match-string.1.(elnode-http-mapp |
| 221a0 | 69 6e 67 20 68 74 74 70 63 6f 6e 29 29 29 0a 0a 54 68 65 20 66 75 6e 63 74 69 6f 6e 20 60 65 6c | ing.httpcon)))..The.function.`el |
| 221c0 | 6e 6f 64 65 2d 74 65 73 74 2d 70 61 74 68 27 20 75 73 65 73 20 74 68 69 73 20 66 61 63 69 6c 69 | node-test-path'.uses.this.facili |
| 221e0 | 74 79 20 74 6f 20 77 6f 72 6b 20 6f 75 74 20 61 0a 74 61 72 67 65 74 20 70 61 74 68 2e 22 0a 20 | ty.to.work.out.a.target.path.".. |
| 22200 | 20 28 65 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 6d 61 70 70 69 6e 67 2d 69 6d 70 6c 65 6d 65 6e 74 | .(elnode--http-mapping-implement |
| 22220 | 61 74 69 6f 6e 20 68 74 74 70 63 6f 6e 20 70 61 72 74 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e | ation.httpcon.part))..(defun.eln |
| 22240 | 6f 64 65 2d 2d 73 74 72 69 70 2d 6c 65 61 64 69 6e 67 2d 73 6c 61 73 68 20 28 73 74 72 29 0a 20 | ode--strip-leading-slash.(str).. |
| 22260 | 20 22 53 74 72 69 70 20 61 6e 79 20 6c 65 61 64 69 6e 67 20 73 6c 61 73 68 20 66 72 6f 6d 20 53 | ."Strip.any.leading.slash.from.S |
| 22280 | 54 52 2e 0a 0a 49 66 20 74 68 65 72 65 20 69 73 20 6e 6f 20 6c 65 61 64 69 6e 67 20 73 6c 61 73 | TR...If.there.is.no.leading.slas |
| 222a0 | 68 20 74 68 65 6e 20 6a 75 73 74 20 72 65 74 75 72 6e 20 53 54 52 2e 22 0a 20 20 28 69 66 20 28 | h.then.just.return.STR."...(if.( |
| 222c0 | 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 5e 2f 5c 5c 28 2e 2a 5c 5c 29 22 20 73 74 72 29 0a 20 | string-match."^/\\(.*\\)".str).. |
| 222e0 | 20 20 20 20 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 73 74 72 29 0a 20 20 20 20 20 20 | .....(match-string.1.str)....... |
| 22300 | 73 74 72 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 67 65 74 2d 74 61 72 67 65 74 66 | str))..(defun.elnode-get-targetf |
| 22320 | 69 6c 65 20 28 68 74 74 70 63 6f 6e 20 64 6f 63 72 6f 6f 74 29 0a 20 20 22 47 65 74 20 74 68 65 | ile.(httpcon.docroot)..."Get.the |
| 22340 | 20 74 61 72 67 65 74 65 64 20 66 69 6c 65 20 66 72 6f 6d 20 74 68 65 20 48 54 54 50 43 4f 4e 2e | .targeted.file.from.the.HTTPCON. |
| 22360 | 0a 0a 41 74 74 65 6d 70 74 73 20 74 6f 20 72 65 73 6f 6c 76 65 20 74 68 65 20 6d 61 74 63 68 65 | ..Attempts.to.resolve.the.matche |
| 22380 | 64 20 70 61 74 68 20 6f 66 20 74 68 65 20 48 54 54 50 43 4f 4e 20 61 67 61 69 6e 73 74 20 74 68 | d.path.of.the.HTTPCON.against.th |
| 223a0 | 65 0a 44 4f 43 52 4f 4f 54 2e 20 20 49 66 20 74 68 61 74 20 64 6f 65 73 6e 27 74 20 77 6f 72 6b | e.DOCROOT...If.that.doesn't.work |
| 223c0 | 20 74 68 65 6e 20 69 74 20 61 74 74 65 6d 70 74 73 20 74 6f 20 75 73 65 20 6a 75 73 74 20 74 68 | .then.it.attempts.to.use.just.th |
| 223e0 | 65 0a 70 61 74 68 69 6e 66 6f 20 6f 66 20 74 68 65 20 72 65 71 75 65 73 74 2e 0a 0a 54 68 65 20 | e.pathinfo.of.the.request...The. |
| 22400 | 72 65 73 75 6c 74 69 6e 67 20 66 69 6c 65 20 69 73 20 4e 4f 54 20 63 68 65 63 6b 65 64 20 66 6f | resulting.file.is.NOT.checked.fo |
| 22420 | 72 20 65 78 69 73 74 65 6e 63 65 20 6f 72 20 73 61 66 65 74 79 2e 22 0a 20 20 28 6c 65 74 2a 20 | r.existence.or.safety."...(let*. |
| 22440 | 28 28 70 61 74 68 69 6e 66 6f 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 70 61 74 68 69 6e 66 6f | ((pathinfo.(elnode-http-pathinfo |
| 22460 | 20 68 74 74 70 63 6f 6e 29 29 0a 20 20 20 20 20 20 20 20 20 28 70 61 74 68 20 28 65 6c 6e 6f 64 | .httpcon))..........(path.(elnod |
| 22480 | 65 2d 68 74 74 70 2d 6d 61 70 70 69 6e 67 20 68 74 74 70 63 6f 6e 20 31 29 29 0a 20 20 20 20 20 | e-http-mapping.httpcon.1))...... |
| 224a0 | 20 20 20 20 28 74 61 72 67 65 74 66 69 6c 65 0a 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 | ....(targetfile...........(elnod |
| 224c0 | 65 2d 6a 6f 69 6e 0a 20 20 20 20 20 20 20 20 20 20 20 28 65 78 70 61 6e 64 2d 66 69 6c 65 2d 6e | e-join............(expand-file-n |
| 224e0 | 61 6d 65 20 64 6f 63 72 6f 6f 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d | ame.docroot)............(elnode- |
| 22500 | 2d 73 74 72 69 70 2d 6c 65 61 64 69 6e 67 2d 73 6c 61 73 68 0a 20 20 20 20 20 20 20 20 20 20 20 | -strip-leading-slash............ |
| 22520 | 20 28 6f 72 20 70 61 74 68 20 70 61 74 68 69 6e 66 6f 29 29 29 29 29 0a 20 20 20 20 74 61 72 67 | .(or.path.pathinfo))))).....targ |
| 22540 | 65 74 66 69 6c 65 29 29 0a 0a 0a 3b 3b 20 57 65 20 6e 65 65 64 20 74 6f 20 64 65 63 6c 61 72 65 | etfile))...;;.We.need.to.declare |
| 22560 | 20 74 68 69 73 20 62 65 66 6f 72 65 20 74 68 65 20 64 69 73 70 61 74 63 68 65 72 20 73 74 75 66 | .this.before.the.dispatcher.stuf |
| 22580 | 66 2c 20 77 68 69 63 68 20 75 73 65 73 20 69 74 2e 0a 28 64 65 66 76 61 72 20 65 6c 6e 6f 64 65 | f,.which.uses.it..(defvar.elnode |
| 225a0 | 2d 2d 64 65 66 69 6e 65 64 2d 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 2d 73 63 68 65 6d 65 73 | --defined-authentication-schemes |
| 225c0 | 0a 20 20 28 6d 61 6b 65 2d 68 61 73 68 2d 74 61 62 6c 65 20 3a 74 65 73 74 20 27 65 71 75 61 6c | ...(make-hash-table.:test.'equal |
| 225e0 | 29 0a 20 20 22 54 68 65 20 68 61 73 68 20 6f 66 20 64 65 66 69 6e 65 64 20 61 75 74 68 65 6e 74 | )..."The.hash.of.defined.authent |
| 22600 | 69 63 61 74 69 6f 6e 20 73 63 68 65 6d 65 73 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 65 6c 6e 6f | ication.schemes.")..(defvar.elno |
| 22620 | 64 65 2d 2d 64 6f 2d 61 63 63 65 73 73 2d 6c 6f 67 67 69 6e 67 2d 6f 6e 2d 64 69 73 70 61 74 63 | de--do-access-logging-on-dispatc |
| 22640 | 68 20 74 0a 20 20 22 4e 65 65 64 65 64 20 74 6f 20 73 75 70 70 72 65 73 73 20 6c 6f 67 67 69 6e | h.t..."Needed.to.suppress.loggin |
| 22660 | 67 20 69 6e 20 74 65 73 74 69 6e 67 2e 22 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d | g.in.testing.")..(defun.elnode-- |
| 22680 | 61 75 74 68 2d 65 6e 74 72 79 2d 3e 64 69 73 70 61 74 63 68 2d 74 61 62 6c 65 20 28 61 75 74 68 | auth-entry->dispatch-table.(auth |
| 226a0 | 2d 73 63 68 65 6d 65 20 26 6f 70 74 69 6f 6e 61 6c 20 68 6f 73 74 70 61 74 68 29 0a 20 20 22 4d | -scheme.&optional.hostpath)..."M |
| 226c0 | 61 6b 65 20 61 20 64 69 73 70 61 74 63 68 20 74 61 62 6c 65 20 66 72 6f 6d 20 74 68 65 20 41 55 | ake.a.dispatch.table.from.the.AU |
| 226e0 | 54 48 2d 53 43 48 45 4d 45 2e 0a 0a 49 66 20 48 4f 53 54 50 41 54 48 20 69 73 20 73 70 65 63 69 | TH-SCHEME...If.HOSTPATH.is.speci |
| 22700 | 66 69 65 64 20 74 68 65 6e 20 74 68 65 20 72 65 73 75 6c 74 69 6e 67 20 6d 61 74 63 68 20 73 70 | fied.then.the.resulting.match.sp |
| 22720 | 65 63 20 69 73 20 6f 66 20 74 68 65 0a 60 68 6f 73 74 70 61 74 68 27 20 74 79 70 65 20 66 6f 72 | ec.is.of.the.`hostpath'.type.for |
| 22740 | 20 75 73 65 20 77 69 74 68 20 60 65 6c 6e 6f 64 65 2d 68 6f 73 74 70 61 74 68 2d 64 69 73 70 61 | .use.with.`elnode-hostpath-dispa |
| 22760 | 74 63 68 65 72 27 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 61 75 74 68 2d 73 63 68 65 6d 65 20 28 | tcher'."...(let*.((auth-scheme.( |
| 22780 | 67 65 74 68 61 73 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 | gethash........................a |
| 227a0 | 75 74 68 2d 73 63 68 65 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | uth-scheme...................... |
| 227c0 | 20 20 65 6c 6e 6f 64 65 2d 2d 64 65 66 69 6e 65 64 2d 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e | ..elnode--defined-authentication |
| 227e0 | 2d 73 63 68 65 6d 65 73 29 29 0a 20 20 20 20 20 20 20 20 20 28 72 65 64 69 72 65 63 74 20 28 70 | -schemes))..........(redirect.(p |
| 22800 | 6c 69 73 74 2d 67 65 74 20 61 75 74 68 2d 73 63 68 65 6d 65 20 3a 72 65 64 69 72 65 63 74 29 29 | list-get.auth-scheme.:redirect)) |
| 22820 | 0a 20 20 20 20 20 20 20 20 20 28 6c 6f 67 69 6e 2d 68 61 6e 64 6c 65 72 20 28 70 6c 69 73 74 2d | ..........(login-handler.(plist- |
| 22840 | 67 65 74 20 61 75 74 68 2d 73 63 68 65 6d 65 20 3a 6c 6f 67 69 6e 2d 68 61 6e 64 6c 65 72 29 29 | get.auth-scheme.:login-handler)) |
| 22860 | 29 0a 20 20 20 20 28 77 68 65 6e 20 72 65 64 69 72 65 63 74 0a 20 20 20 20 20 20 28 6c 69 73 74 | ).....(when.redirect.......(list |
| 22880 | 0a 20 20 20 20 20 20 20 28 63 6f 6e 73 0a 20 20 20 20 20 20 20 20 28 63 6f 6e 63 61 74 20 28 69 | ........(cons.........(concat.(i |
| 228a0 | 66 20 68 6f 73 74 70 61 74 68 20 22 5e 2e 2a 2f 22 20 22 5e 22 29 20 72 65 64 69 72 65 63 74 20 | f.hostpath."^.*/"."^").redirect. |
| 228c0 | 22 24 22 29 0a 20 20 20 20 20 20 20 20 6c 6f 67 69 6e 2d 68 61 6e 64 6c 65 72 29 29 29 29 29 0a | "$").........login-handler))))). |
| 228e0 | 0a 28 64 65 66 75 6e 2a 20 65 6c 6e 6f 64 65 2d 2d 64 69 73 70 61 74 63 68 2d 70 72 6f 63 20 28 | .(defun*.elnode--dispatch-proc.( |
| 22900 | 68 74 74 70 63 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | httpcon......................... |
| 22920 | 20 20 20 20 20 20 70 61 74 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ......path...................... |
| 22940 | 20 20 20 20 20 20 20 20 20 75 72 6c 2d 6d 61 70 70 69 6e 67 2d 74 61 62 6c 65 0a 20 20 20 20 20 | .........url-mapping-table...... |
| 22960 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 26 6b 65 79 0a 20 20 | .........................&key... |
| 22980 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e | ............................(fun |
| 229a0 | 63 74 69 6f 6e 2d 34 30 34 20 27 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 34 30 34 29 0a 20 20 20 20 | ction-404.'elnode-send-404)..... |
| 229c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 67 2d 6e | ..........................(log-n |
| 229e0 | 61 6d 65 20 22 65 6c 6e 6f 64 65 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ame."elnode")................... |
| 22a00 | 20 20 20 20 20 20 20 20 20 20 20 20 65 78 74 72 61 2d 74 61 62 6c 65 29 0a 20 20 22 44 69 73 70 | ............extra-table)..."Disp |
| 22a20 | 61 74 63 68 20 74 6f 20 74 68 65 20 6d 61 74 63 68 65 64 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 | atch.to.the.matched.handler.for. |
| 22a40 | 74 68 65 20 50 41 54 48 20 6f 6e 20 74 68 65 20 48 54 54 50 43 4f 4e 2e 0a 54 68 65 20 68 61 6e | the.PATH.on.the.HTTPCON..The.han |
| 22a60 | 64 6c 65 72 20 66 6f 72 20 50 41 54 48 20 69 73 20 6d 61 74 63 68 65 64 20 69 6e 20 74 68 65 20 | dler.for.PATH.is.matched.in.the. |
| 22a80 | 55 52 4c 2d 4d 41 50 50 49 4e 47 2d 54 41 42 4c 45 20 76 69 61 0a 60 65 6c 6e 6f 64 65 2d 2d 6d | URL-MAPPING-TABLE.via.`elnode--m |
| 22aa0 | 61 70 70 65 72 2d 66 69 6e 64 27 2e 0a 0a 49 66 20 6e 6f 20 68 61 6e 64 6c 65 72 20 69 73 20 66 | apper-find'...If.no.handler.is.f |
| 22ac0 | 6f 75 6e 64 20 74 68 65 6e 20 61 20 34 30 34 20 69 73 20 61 74 74 65 6d 70 74 65 64 20 76 69 61 | ound.then.a.404.is.attempted.via |
| 22ae0 | 20 46 55 4e 43 54 49 4f 4e 2d 34 30 34 2c 0a 69 66 20 69 74 27 73 20 66 6f 75 6e 64 20 74 6f 20 | .FUNCTION-404,.if.it's.found.to. |
| 22b00 | 62 65 20 61 20 66 75 6e 63 74 69 6f 6e 2c 20 6f 72 20 61 73 20 61 20 6c 61 73 74 20 72 65 73 6f | be.a.function,.or.as.a.last.reso |
| 22b20 | 72 74 0a 60 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 34 30 34 27 2e 0a 0a 54 68 65 20 66 75 6e 63 74 | rt.`elnode-send-404'...The.funct |
| 22b40 | 69 6f 6e 20 61 6c 73 6f 20 73 75 70 70 6f 72 74 73 20 74 68 65 20 73 65 61 72 63 68 69 6e 67 20 | ion.also.supports.the.searching. |
| 22b60 | 6f 66 20 74 68 65 20 6d 61 70 20 70 72 6f 76 69 64 65 64 20 62 79 0a 61 6e 20 45 58 54 52 41 2d | of.the.map.provided.by.an.EXTRA- |
| 22b80 | 54 41 42 4c 45 2e 20 20 54 68 69 73 20 69 73 20 75 73 65 66 75 6c 20 66 6f 72 20 61 75 74 68 65 | TABLE...This.is.useful.for.authe |
| 22ba0 | 6e 74 69 63 61 74 69 6f 6e 20 61 6e 64 20 6f 74 68 65 72 0a 77 72 61 70 70 65 72 73 2e 20 20 49 | ntication.and.other.wrappers...I |
| 22bc0 | 66 20 69 74 20 69 73 20 73 70 65 63 69 66 69 65 64 20 69 74 20 69 73 20 73 65 61 72 63 68 65 64 | f.it.is.specified.it.is.searched |
| 22be0 | 20 66 69 72 73 74 2e 22 0a 20 20 28 6c 65 74 20 28 28 68 61 6e 64 6c 65 72 2d 66 75 6e 63 0a 20 | .first."...(let.((handler-func.. |
| 22c00 | 20 20 20 20 20 20 20 20 28 6f 72 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 45 69 74 68 65 72 20 | ........(or...........;;.Either. |
| 22c20 | 61 20 6d 61 74 63 68 20 66 72 6f 6d 20 65 78 74 72 61 2d 74 61 62 6c 65 20 2e 2e 2e 0a 20 20 20 | a.match.from.extra-table........ |
| 22c40 | 20 20 20 20 20 20 20 28 61 6e 64 20 65 78 74 72 61 2d 74 61 62 6c 65 0a 20 20 20 20 20 20 20 20 | .......(and.extra-table......... |
| 22c60 | 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 6d 61 70 70 65 72 2d 66 69 6e 64 0a 20 20 20 20 | .......(elnode--mapper-find..... |
| 22c80 | 20 20 20 20 20 20 20 20 20 20 20 20 68 74 74 70 63 6f 6e 20 70 61 74 68 20 65 78 74 72 61 2d 74 | ............httpcon.path.extra-t |
| 22ca0 | 61 62 6c 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 3b 3b 20 2e 2e 2e 20 6f 72 20 66 72 6f 6d 20 | able))...........;;.....or.from. |
| 22cc0 | 74 68 65 20 73 74 61 6e 64 61 72 64 20 75 72 6c 2d 6d 61 70 70 69 6e 67 2d 74 61 62 6c 65 0a 20 | the.standard.url-mapping-table.. |
| 22ce0 | 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 6d 61 70 70 65 72 2d 66 69 6e 64 0a 20 20 | .........(elnode--mapper-find... |
| 22d00 | 20 20 20 20 20 20 20 20 20 68 74 74 70 63 6f 6e 20 70 61 74 68 20 75 72 6c 2d 6d 61 70 70 69 6e | .........httpcon.path.url-mappin |
| 22d20 | 67 2d 74 61 62 6c 65 29 29 29 29 0a 20 20 20 20 28 77 68 65 6e 20 65 6c 6e 6f 64 65 2d 2d 64 6f | g-table)))).....(when.elnode--do |
| 22d40 | 2d 61 63 63 65 73 73 2d 6c 6f 67 67 69 6e 67 2d 6f 6e 2d 64 69 73 70 61 74 63 68 0a 20 20 20 20 | -access-logging-on-dispatch..... |
| 22d60 | 20 20 28 70 72 6f 63 65 73 73 2d 70 75 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 61 | ..(process-put.httpcon.:elnode-a |
| 22d80 | 63 63 65 73 73 2d 6c 6f 67 2d 6e 61 6d 65 20 6c 6f 67 2d 6e 61 6d 65 29 29 0a 20 20 20 20 28 63 | ccess-log-name.log-name)).....(c |
| 22da0 | 6f 6e 64 0a 20 20 20 20 20 3b 3b 20 49 66 20 77 65 20 68 61 76 65 20 61 20 68 61 6e 64 6c 65 72 | ond......;;.If.we.have.a.handler |
| 22dc0 | 2c 20 75 73 65 20 69 74 2e 0a 20 20 20 20 20 28 28 66 75 6e 63 74 69 6f 6e 70 20 68 61 6e 64 6c | ,.use.it.......((functionp.handl |
| 22de0 | 65 72 2d 66 75 6e 63 29 0a 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 68 61 6e 64 6c 65 72 2d | er-func).......(funcall.handler- |
| 22e00 | 66 75 6e 63 20 68 74 74 70 63 6f 6e 29 29 0a 20 20 20 20 20 28 74 0a 20 20 20 20 20 20 28 66 75 | func.httpcon))......(t.......(fu |
| 22e20 | 6e 63 61 6c 6c 20 66 75 6e 63 74 69 6f 6e 2d 34 30 34 20 68 74 74 70 63 6f 6e 29 29 29 29 29 0a | ncall.function-404.httpcon))))). |
| 22e40 | 0a 28 64 65 66 75 6e 2a 20 65 6c 6e 6f 64 65 2d 64 69 73 70 61 74 63 68 65 72 20 28 68 74 74 70 | .(defun*.elnode-dispatcher.(http |
| 22e60 | 63 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 | con............................u |
| 22e80 | 72 6c 2d 6d 61 70 70 69 6e 67 2d 74 61 62 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | rl-mapping-table................ |
| 22ea0 | 20 20 20 20 20 20 20 20 20 20 20 20 26 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ............&key................ |
| 22ec0 | 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 74 69 6f 6e 2d 34 30 34 20 27 65 6c 6e 6f 64 | ............(function-404.'elnod |
| 22ee0 | 65 2d 73 65 6e 64 2d 34 30 34 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | e-send-404)..................... |
| 22f00 | 20 20 20 20 20 20 20 61 75 74 68 2d 73 63 68 65 6d 65 29 0a 20 20 22 44 69 73 70 61 74 63 68 20 | .......auth-scheme)..."Dispatch. |
| 22f20 | 48 54 54 50 43 4f 4e 20 74 6f 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 6d 61 70 70 65 64 20 69 | HTTPCON.to.the.function.mapped.i |
| 22f40 | 6e 20 55 52 4c 2d 4d 41 50 50 49 4e 47 2d 54 41 42 4c 45 2e 0a 0a 55 52 4c 2d 4d 41 50 50 49 4e | n.URL-MAPPING-TABLE...URL-MAPPIN |
| 22f60 | 47 2d 54 41 42 4c 45 20 69 73 20 61 6e 20 61 6c 69 73 74 20 6f 66 3a 0a 0a 20 28 75 72 6c 2d 72 | G-TABLE.is.an.alist.of:...(url-r |
| 22f80 | 65 67 65 78 20 2e 20 66 75 6e 63 74 69 6f 6e 2d 74 6f 2d 64 69 73 70 61 74 63 68 29 0a 0a 54 6f | egex...function-to-dispatch)..To |
| 22fa0 | 20 6d 61 70 20 74 68 65 20 72 6f 6f 74 20 75 72 6c 20 79 6f 75 20 73 68 6f 75 6c 64 20 75 73 65 | .map.the.root.url.you.should.use |
| 22fc0 | 3a 0a 0a 20 20 5c 22 5e 2f 24 5c 22 0a 0a 54 6f 20 65 6e 73 75 72 65 20 70 61 74 68 73 20 65 6e | :....\"^/$\"..To.ensure.paths.en |
| 22fe0 | 64 20 69 6e 20 2f 2c 20 60 65 6c 6e 6f 64 65 2d 64 69 73 70 61 74 63 68 65 72 27 20 75 73 65 73 | d.in./,.`elnode-dispatcher'.uses |
| 23000 | 0a 60 65 6c 6e 6f 64 65 2d 6e 6f 72 6d 61 6c 69 7a 65 2d 70 61 74 68 27 2e 20 20 54 6f 20 6d 61 | .`elnode-normalize-path'...To.ma |
| 23020 | 70 20 61 6e 6f 74 68 65 72 20 75 72 6c 20 79 6f 75 20 73 68 6f 75 6c 64 20 75 73 65 3a 0a 0a 20 | p.another.url.you.should.use:... |
| 23040 | 20 5c 22 5e 2f 70 61 74 68 2f 24 5c 22 20 6f 72 20 5c 22 5e 2f 70 61 74 68 2f 73 75 62 2d 70 61 | .\"^/path/$\".or.\"^/path/sub-pa |
| 23060 | 74 68 2f 24 5c 22 0a 0a 41 6e 20 65 78 61 6d 70 6c 65 20 73 65 72 76 65 72 20 73 65 74 75 70 3a | th/$\"..An.example.server.setup: |
| 23080 | 0a 0a 20 20 28 64 65 66 75 6e 20 6d 79 2d 73 65 72 76 65 72 20 28 68 74 74 70 63 6f 6e 29 0a 20 | ....(defun.my-server.(httpcon).. |
| 230a0 | 20 20 20 28 65 6c 6e 6f 64 65 2d 64 69 73 70 61 74 63 68 65 72 0a 20 20 20 20 20 68 74 74 70 63 | ...(elnode-dispatcher......httpc |
| 230c0 | 6f 6e 0a 20 20 20 20 20 27 28 28 5c 22 5e 2f 24 5c 22 20 2e 20 72 6f 6f 74 2d 76 69 65 77 29 0a | on......'((\"^/$\"...root-view). |
| 230e0 | 20 20 20 20 20 20 20 28 5c 22 5e 2f 31 2f 24 5c 22 20 2e 20 76 69 65 77 2d 31 29 29 29 29 0a 0a | .......(\"^/1/$\"...view-1)))).. |
| 23100 | 49 66 20 46 55 4e 43 54 49 4f 4e 2d 34 30 34 20 69 73 20 73 70 65 63 69 66 69 65 64 20 69 74 20 | If.FUNCTION-404.is.specified.it. |
| 23120 | 69 73 20 63 61 6c 6c 65 64 20 77 68 65 6e 20 6e 6f 20 72 65 67 65 78 70 20 69 73 0a 6d 61 74 63 | is.called.when.no.regexp.is.matc |
| 23140 | 68 65 64 2c 20 6f 74 68 65 72 77 69 73 65 20 60 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 34 30 34 27 | hed,.otherwise.`elnode-send-404' |
| 23160 | 20 69 73 20 75 73 65 64 2e 0a 0a 41 55 54 48 2d 53 43 48 45 4d 45 20 69 73 20 61 6e 20 6f 70 74 | .is.used...AUTH-SCHEME.is.an.opt |
| 23180 | 69 6f 6e 61 6c 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 73 63 68 65 6d 65 2c 20 64 65 66 | ional.authentication.scheme,.def |
| 231a0 | 69 6e 65 64 20 77 69 74 68 0a 60 65 6c 6e 6f 64 65 2d 64 65 66 61 75 74 68 27 2c 20 77 68 69 63 | ined.with.`elnode-defauth',.whic |
| 231c0 | 68 20 73 70 65 63 69 66 69 65 73 20 61 20 72 65 64 69 72 65 63 74 20 6d 61 70 70 69 6e 67 20 66 | h.specifies.a.redirect.mapping.f |
| 231e0 | 6f 72 0a 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 73 2e 22 0a 20 20 28 65 6c 6e 6f 64 65 2d 6e | or.authentications."...(elnode-n |
| 23200 | 6f 72 6d 61 6c 69 7a 65 2d 70 61 74 68 0a 20 20 20 68 74 74 70 63 6f 6e 0a 20 20 20 28 6c 61 6d | ormalize-path....httpcon....(lam |
| 23220 | 62 64 61 20 28 68 74 74 70 63 6f 6e 29 0a 20 20 20 20 20 3b 3b 20 47 65 74 20 70 61 74 68 69 6e | bda.(httpcon)......;;.Get.pathin |
| 23240 | 66 6f 20 61 67 61 69 6e 20 62 65 63 61 75 73 65 20 77 65 20 6d 61 79 20 68 61 76 65 20 72 65 64 | fo.again.because.we.may.have.red |
| 23260 | 69 72 65 63 74 65 64 2e 0a 20 20 20 20 20 28 6c 65 74 20 28 28 70 61 74 68 69 6e 66 6f 20 28 65 | irected.......(let.((pathinfo.(e |
| 23280 | 6c 6e 6f 64 65 2d 68 74 74 70 2d 70 61 74 68 69 6e 66 6f 20 68 74 74 70 63 6f 6e 29 29 0a 20 20 | lnode-http-pathinfo.httpcon))... |
| 232a0 | 20 20 20 20 20 20 20 20 20 28 65 78 74 72 61 2d 74 61 62 6c 65 0a 20 20 20 20 20 20 20 20 20 20 | .........(extra-table........... |
| 232c0 | 20 20 28 65 6c 6e 6f 64 65 2d 2d 61 75 74 68 2d 65 6e 74 72 79 2d 3e 64 69 73 70 61 74 63 68 2d | ..(elnode--auth-entry->dispatch- |
| 232e0 | 74 61 62 6c 65 20 61 75 74 68 2d 73 63 68 65 6d 65 29 29 29 0a 20 20 20 20 20 20 20 28 65 6c 6e | table.auth-scheme)))........(eln |
| 23300 | 6f 64 65 2d 2d 64 69 73 70 61 74 63 68 2d 70 72 6f 63 0a 20 20 20 20 20 20 20 20 68 74 74 70 63 | ode--dispatch-proc.........httpc |
| 23320 | 6f 6e 0a 20 20 20 20 20 20 20 20 70 61 74 68 69 6e 66 6f 0a 20 20 20 20 20 20 20 20 75 72 6c 2d | on.........pathinfo.........url- |
| 23340 | 6d 61 70 70 69 6e 67 2d 74 61 62 6c 65 0a 20 20 20 20 20 20 20 20 3a 66 75 6e 63 74 69 6f 6e 2d | mapping-table.........:function- |
| 23360 | 34 30 34 20 66 75 6e 63 74 69 6f 6e 2d 34 30 34 0a 20 20 20 20 20 20 20 20 3a 65 78 74 72 61 2d | 404.function-404.........:extra- |
| 23380 | 74 61 62 6c 65 20 65 78 74 72 61 2d 74 61 62 6c 65 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 | table.extra-table)))))..(defun.e |
| 233a0 | 6c 6e 6f 64 65 2d 2d 68 6f 73 74 70 61 74 68 20 28 68 6f 73 74 20 70 61 74 68 29 0a 20 20 22 54 | lnode--hostpath.(host.path)..."T |
| 233c0 | 75 72 6e 20 74 68 65 20 68 6f 73 74 20 61 6e 64 20 70 61 74 68 20 69 6e 74 6f 20 61 20 68 6f 73 | urn.the.host.and.path.into.a.hos |
| 233e0 | 74 70 61 74 68 2e 22 0a 20 20 28 66 6f 72 6d 61 74 0a 20 20 20 22 25 73 2f 25 73 22 0a 20 20 20 | tpath."...(format...."%s/%s".... |
| 23400 | 28 6c 65 74 20 28 28 68 6f 73 74 2d 6e 61 6d 65 20 28 6f 72 20 68 6f 73 74 20 22 22 29 29 29 0a | (let.((host-name.(or.host.""))). |
| 23420 | 20 20 20 20 20 3b 3b 20 53 65 70 61 72 61 74 65 20 74 68 65 20 68 6f 73 74 6e 61 6d 65 20 66 72 | .....;;.Separate.the.hostname.fr |
| 23440 | 6f 6d 20 61 6e 79 20 70 6f 72 74 20 69 6e 20 74 68 65 20 68 6f 73 74 20 68 65 61 64 65 72 0a 20 | om.any.port.in.the.host.header.. |
| 23460 | 20 20 20 20 28 73 61 76 65 2d 6d 61 74 63 68 2d 64 61 74 61 0a 20 20 20 20 20 20 20 28 69 66 20 | ....(save-match-data........(if. |
| 23480 | 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 5c 5c 28 5b 5e 3a 5d 2b 5c 5c 29 5c 5c 28 3a 5b 30 | (string-match."\\([^:]+\\)\\(:[0 |
| 234a0 | 2d 39 5d 2b 2e 2a 5c 5c 29 2a 22 20 68 6f 73 74 2d 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 | -9]+.*\\)*".host-name).......... |
| 234c0 | 20 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 68 6f 73 74 2d 6e 61 6d 65 29 0a 20 20 20 | ..(match-string.1.host-name).... |
| 234e0 | 20 20 20 20 20 20 20 20 22 22 29 29 29 0a 20 20 20 70 61 74 68 29 29 0a 0a 28 64 65 66 75 6e 2a | ........"")))....path))..(defun* |
| 23500 | 20 65 6c 6e 6f 64 65 2d 68 6f 73 74 70 61 74 68 2d 64 69 73 70 61 74 63 68 65 72 20 28 68 74 74 | .elnode-hostpath-dispatcher.(htt |
| 23520 | 70 63 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | pcon............................ |
| 23540 | 20 20 20 20 20 20 20 20 68 6f 73 74 70 61 74 68 2d 6d 61 70 70 69 6e 67 2d 74 61 62 6c 65 0a 20 | ........hostpath-mapping-table.. |
| 23560 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
| 23580 | 20 20 26 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ..&key.......................... |
| 235a0 | 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 74 69 6f 6e 2d 34 30 34 20 27 65 6c 6e 6f 64 65 2d | ..........(function-404.'elnode- |
| 235c0 | 73 65 6e 64 2d 34 30 34 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | send-404)....................... |
| 235e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 67 2d 6e 61 6d 65 20 22 65 6c 6e 6f 64 65 22 29 | .............(log-name."elnode") |
| 23600 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
| 23620 | 20 20 20 20 61 75 74 68 2d 73 63 68 65 6d 65 29 0a 20 20 22 44 69 73 70 61 74 63 68 20 48 54 54 | ....auth-scheme)..."Dispatch.HTT |
| 23640 | 50 43 4f 4e 20 74 6f 20 61 20 68 61 6e 64 6c 65 72 20 62 61 73 65 64 20 6f 6e 20 74 68 65 20 48 | PCON.to.a.handler.based.on.the.H |
| 23660 | 4f 53 54 50 41 54 48 2d 4d 41 50 50 49 4e 47 2d 54 41 42 4c 45 2e 0a 0a 48 4f 53 54 50 41 54 48 | OSTPATH-MAPPING-TABLE...HOSTPATH |
| 23680 | 2d 4d 41 50 50 49 4e 47 2d 54 41 42 4c 45 20 68 61 73 20 72 65 67 65 78 73 20 6f 66 20 74 68 65 | -MAPPING-TABLE.has.regexs.of.the |
| 236a0 | 20 68 6f 73 74 20 61 6e 64 20 74 68 65 20 70 61 74 68 20 64 6f 75 62 6c 65 0a 73 6c 61 73 68 20 | .host.and.the.path.double.slash. |
| 236c0 | 73 65 70 61 72 61 74 65 64 2c 20 74 68 75 73 3a 0a 0a 20 28 5c 22 5e 6c 6f 63 61 6c 68 6f 73 74 | separated,.thus:...(\"^localhost |
| 236e0 | 2f 2f 70 61 73 74 65 62 69 6e 2e 2a 5c 22 20 2e 20 70 61 73 74 65 62 69 6e 2d 68 61 6e 64 6c 65 | //pastebin.*\"...pastebin-handle |
| 23700 | 72 29 0a 0a 46 55 4e 43 54 49 4f 4e 2d 34 30 34 20 73 68 6f 75 6c 64 20 62 65 20 61 20 34 30 34 | r)..FUNCTION-404.should.be.a.404 |
| 23720 | 20 68 61 6e 64 6c 69 6e 67 20 66 75 6e 63 74 69 6f 6e 2c 20 62 79 20 64 65 66 61 75 6c 74 20 69 | .handling.function,.by.default.i |
| 23740 | 74 27 73 0a 60 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 34 30 34 27 2e 0a 0a 4c 4f 47 2d 4e 41 4d 45 | t's.`elnode-send-404'...LOG-NAME |
| 23760 | 20 69 73 20 61 6e 20 6f 70 74 69 6f 6e 61 6c 20 6c 6f 67 2d 6e 61 6d 65 2e 0a 0a 41 55 54 48 2d | .is.an.optional.log-name...AUTH- |
| 23780 | 53 43 48 45 4d 45 20 69 73 20 61 6e 20 6f 70 74 69 6f 6e 61 6c 20 61 75 74 68 65 6e 74 69 63 61 | SCHEME.is.an.optional.authentica |
| 237a0 | 74 69 6f 6e 20 73 63 68 65 6d 65 2c 20 64 65 66 69 6e 65 64 20 77 69 74 68 0a 60 65 6c 6e 6f 64 | tion.scheme,.defined.with.`elnod |
| 237c0 | 65 2d 64 65 66 61 75 74 68 27 2c 20 77 68 69 63 68 20 73 70 65 63 69 66 69 65 73 20 61 20 72 65 | e-defauth',.which.specifies.a.re |
| 237e0 | 64 69 72 65 63 74 20 6d 61 70 70 69 6e 67 20 66 6f 72 0a 61 75 74 68 65 6e 74 69 63 61 74 69 6f | direct.mapping.for.authenticatio |
| 23800 | 6e 73 2e 22 0a 20 20 28 6c 65 74 20 28 28 68 6f 73 74 70 61 74 68 20 28 65 6c 6e 6f 64 65 2d 2d | ns."...(let.((hostpath.(elnode-- |
| 23820 | 68 6f 73 74 70 61 74 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e | hostpath....................(eln |
| 23840 | 6f 64 65 2d 68 74 74 70 2d 68 65 61 64 65 72 20 68 74 74 70 63 6f 6e 20 22 48 6f 73 74 22 29 0a | ode-http-header.httpcon."Host"). |
| 23860 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d | ...................(elnode-http- |
| 23880 | 70 61 74 68 69 6e 66 6f 20 68 74 74 70 63 6f 6e 29 29 29 0a 20 20 20 20 20 20 20 20 28 65 78 74 | pathinfo.httpcon))).........(ext |
| 238a0 | 72 61 2d 74 61 62 6c 65 0a 20 20 20 20 20 20 20 20 20 3b 3b 20 4d 61 6b 65 20 73 75 72 65 20 69 | ra-table..........;;.Make.sure.i |
| 238c0 | 74 27 73 20 61 20 68 6f 73 74 70 61 74 68 20 74 79 70 65 0a 20 20 20 20 20 20 20 20 20 28 65 6c | t's.a.hostpath.type..........(el |
| 238e0 | 6e 6f 64 65 2d 2d 61 75 74 68 2d 65 6e 74 72 79 2d 3e 64 69 73 70 61 74 63 68 2d 74 61 62 6c 65 | node--auth-entry->dispatch-table |
| 23900 | 20 61 75 74 68 2d 73 63 68 65 6d 65 20 74 29 29 29 0a 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 64 | .auth-scheme.t))).....(elnode--d |
| 23920 | 69 73 70 61 74 63 68 2d 70 72 6f 63 0a 20 20 20 20 20 68 74 74 70 63 6f 6e 0a 20 20 20 20 20 68 | ispatch-proc......httpcon......h |
| 23940 | 6f 73 74 70 61 74 68 0a 20 20 20 20 20 68 6f 73 74 70 61 74 68 2d 6d 61 70 70 69 6e 67 2d 74 61 | ostpath......hostpath-mapping-ta |
| 23960 | 62 6c 65 0a 20 20 20 20 20 3a 66 75 6e 63 74 69 6f 6e 2d 34 30 34 20 66 75 6e 63 74 69 6f 6e 2d | ble......:function-404.function- |
| 23980 | 34 30 34 0a 20 20 20 20 20 3a 6c 6f 67 2d 6e 61 6d 65 20 6c 6f 67 2d 6e 61 6d 65 0a 20 20 20 20 | 404......:log-name.log-name..... |
| 239a0 | 20 3a 65 78 74 72 61 2d 74 61 62 6c 65 20 65 78 74 72 61 2d 74 61 62 6c 65 29 29 29 0a 0a 3b 3b | .:extra-table.extra-table)))..;; |
| 239c0 | 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 63 75 73 74 6f 6d 20 65 6c 6e 6f 64 65 2d 68 | ;###autoload.(defcustom.elnode-h |
| 239e0 | 6f 73 74 70 61 74 68 2d 64 65 66 61 75 6c 74 2d 74 61 62 6c 65 0a 20 20 27 28 28 22 5b 5e 2f 5d | ostpath-default-table...'(("[^/] |
| 23a00 | 2b 2f 2f 77 69 6b 69 2f 5c 5c 28 2e 2a 5c 5c 29 22 20 2e 20 65 6c 6e 6f 64 65 2d 77 69 6b 69 73 | +//wiki/\\(.*\\)"...elnode-wikis |
| 23a20 | 65 72 76 65 72 29 0a 20 20 20 20 28 22 5b 5e 2f 5d 2b 2f 2f 5c 5c 28 2e 2a 5c 5c 29 22 20 2e 20 | erver).....("[^/]+//\\(.*\\)"... |
| 23a40 | 65 6c 6e 6f 64 65 2d 77 65 62 73 65 72 76 65 72 29 29 0a 20 20 22 44 65 66 69 6e 65 73 20 6d 61 | elnode-webserver))..."Defines.ma |
| 23a60 | 70 70 69 6e 67 73 20 66 6f 72 20 60 65 6c 6e 6f 64 65 2d 68 6f 73 74 70 61 74 68 2d 64 65 66 61 | ppings.for.`elnode-hostpath-defa |
| 23a80 | 75 6c 74 2d 68 61 6e 64 6c 65 72 27 2e 0a 0a 54 68 69 73 20 69 73 20 74 68 65 20 64 65 66 61 75 | ult-handler'...This.is.the.defau |
| 23aa0 | 6c 74 20 6d 61 70 70 69 6e 67 20 74 61 62 6c 65 20 66 6f 72 20 45 6c 6e 6f 64 65 2c 20 6f 75 74 | lt.mapping.table.for.Elnode,.out |
| 23ac0 | 20 6f 66 20 74 68 65 20 62 6f 78 2e 20 49 66 0a 79 6f 75 20 63 75 73 74 6f 6d 69 7a 65 20 74 68 | .of.the.box..If.you.customize.th |
| 23ae0 | 69 73 20 74 68 65 6e 20 65 6c 6e 6f 64 65 20 77 69 6c 6c 20 73 65 72 76 65 20 74 68 65 73 65 20 | is.then.elnode.will.serve.these. |
| 23b00 | 68 6f 73 74 70 61 74 68 20 6d 61 70 70 69 6e 67 73 0a 62 79 20 6a 75 73 74 20 6c 6f 61 64 69 6e | hostpath.mappings.by.just.loadin |
| 23b20 | 67 20 45 6c 6e 6f 64 65 2e 0a 0a 42 79 20 64 65 66 61 75 6c 74 20 74 68 65 20 74 61 62 6c 65 20 | g.Elnode...By.default.the.table. |
| 23b40 | 6d 61 70 73 20 65 76 65 72 79 74 68 69 6e 67 20 74 6f 0a 60 65 6c 6e 6f 64 65 2d 77 65 62 73 65 | maps.everything.to.`elnode-webse |
| 23b60 | 72 76 65 72 27 2e 20 55 6e 6c 65 73 73 20 79 6f 75 27 72 65 20 68 61 70 70 79 20 77 69 74 68 20 | rver'..Unless.you're.happy.with. |
| 23b80 | 74 68 65 20 64 65 66 61 75 6c 74 20 79 6f 75 0a 73 68 6f 75 6c 64 20 70 72 6f 62 61 62 6c 79 20 | the.default.you.should.probably. |
| 23ba0 | 67 65 74 20 72 69 64 20 6f 66 20 74 68 65 20 65 76 65 72 79 74 68 69 6e 67 20 70 61 74 68 20 62 | get.rid.of.the.everything.path.b |
| 23bc0 | 65 63 61 75 73 65 20 69 74 20 77 69 6c 6c 0a 69 6e 74 65 72 66 65 72 65 20 77 69 74 68 20 61 6e | ecause.it.will.interfere.with.an |
| 23be0 | 79 20 6f 74 68 65 72 20 6d 61 70 70 69 6e 67 73 20 79 6f 75 20 61 64 64 2e 22 0a 20 20 3a 67 72 | y.other.mappings.you.add."...:gr |
| 23c00 | 6f 75 70 20 27 65 6c 6e 6f 64 65 0a 20 20 3a 74 79 70 65 20 27 28 61 6c 69 73 74 20 3a 6b 65 79 | oup.'elnode...:type.'(alist.:key |
| 23c20 | 2d 74 79 70 65 20 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 76 61 | -type.string.................:va |
| 23c40 | 6c 75 65 2d 74 79 70 65 20 73 79 6d 62 6f 6c 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 | lue-type.symbol))..(defun.elnode |
| 23c60 | 2d 68 6f 73 74 70 61 74 68 2d 64 65 66 61 75 6c 74 2d 68 61 6e 64 6c 65 72 20 28 68 74 74 70 63 | -hostpath-default-handler.(httpc |
| 23c80 | 6f 6e 29 0a 20 20 22 41 20 64 65 66 61 75 6c 74 20 68 6f 73 74 70 61 74 68 20 68 61 6e 64 6c 65 | on)..."A.default.hostpath.handle |
| 23ca0 | 72 2e 0a 0a 54 68 69 73 20 75 73 65 73 20 74 68 65 20 60 65 6c 6e 6f 64 65 2d 68 6f 73 74 70 61 | r...This.uses.the.`elnode-hostpa |
| 23cc0 | 74 68 2d 64 65 66 61 75 6c 74 2d 74 61 62 6c 65 27 20 66 6f 72 20 74 68 65 20 6d 61 74 63 68 0a | th-default-table'.for.the.match. |
| 23ce0 | 74 61 62 6c 65 2e 20 20 49 74 20 63 61 6c 6c 73 20 60 65 6c 6e 6f 64 65 2d 68 6f 73 74 70 61 74 | table...It.calls.`elnode-hostpat |
| 23d00 | 68 2d 64 69 73 70 61 74 63 68 65 72 27 20 77 69 74 68 0a 60 65 6c 6e 6f 64 65 2d 68 6f 73 74 70 | h-dispatcher'.with.`elnode-hostp |
| 23d20 | 61 74 68 2d 64 65 66 61 75 6c 74 2d 74 61 62 6c 65 27 2e 22 0a 20 20 28 65 6c 6e 6f 64 65 2d 68 | ath-default-table'."...(elnode-h |
| 23d40 | 6f 73 74 70 61 74 68 2d 64 69 73 70 61 74 63 68 65 72 20 68 74 74 70 63 6f 6e 20 65 6c 6e 6f 64 | ostpath-dispatcher.httpcon.elnod |
| 23d60 | 65 2d 68 6f 73 74 70 61 74 68 2d 64 65 66 61 75 6c 74 2d 74 61 62 6c 65 29 29 0a 0a 0a 3b 3b 20 | e-hostpath-default-table))...;;. |
| 23d80 | 41 73 79 6e 63 20 68 61 6e 64 6c 69 6e 67 20 73 74 75 66 66 0a 0a 28 64 65 66 6d 61 63 72 6f 20 | Async.handling.stuff..(defmacro. |
| 23da0 | 77 69 74 68 2d 73 74 64 6f 75 74 2d 74 6f 2d 65 6c 6e 6f 64 65 20 28 68 74 74 70 63 6f 6e 20 26 | with-stdout-to-elnode.(httpcon.& |
| 23dc0 | 72 65 73 74 20 62 6f 64 79 29 0a 20 20 22 45 78 65 63 75 74 65 20 42 4f 44 59 20 73 6f 20 74 68 | rest.body)..."Execute.BODY.so.th |
| 23de0 | 61 74 20 61 6e 79 20 6f 75 74 70 75 74 20 67 65 74 73 20 73 65 6e 74 20 74 6f 20 48 54 54 50 43 | at.any.output.gets.sent.to.HTTPC |
| 23e00 | 4f 4e 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 0a 20 20 20 28 64 65 62 75 67 20 28 73 65 78 70 20 | ON."...(declare....(debug.(sexp. |
| 23e20 | 26 72 65 73 74 20 66 6f 72 6d 29 29 0a 20 20 20 28 69 6e 64 65 6e 74 20 64 65 66 75 6e 29 29 0a | &rest.form))....(indent.defun)). |
| 23e40 | 20 20 28 6c 65 74 20 28 28 68 76 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 68 74 74 70 63 6f | ..(let.((hv.(make-symbol."httpco |
| 23e60 | 6e 76 61 72 22 29 29 0a 20 20 20 20 20 20 20 20 28 76 61 6c 20 28 6d 61 6b 65 2d 73 79 6d 62 6f | nvar")).........(val.(make-symbo |
| 23e80 | 6c 20 22 76 61 6c 75 65 22 29 29 29 0a 20 20 20 20 60 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 | l."value"))).....`(with-temp-buf |
| 23ea0 | 66 65 72 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 2c 68 76 20 2c 68 74 74 70 63 6f 6e 29 0a | fer........(let.((,hv.,httpcon). |
| 23ec0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 74 61 6e 64 61 72 64 2d 6f 75 74 70 75 74 20 28 63 | .............(standard-output.(c |
| 23ee0 | 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 | urrent-buffer)))..........(let.( |
| 23f00 | 28 2c 76 61 6c 20 28 70 72 6f 67 6e 20 2c 40 62 6f 64 79 29 29 29 0a 20 20 20 20 20 20 20 20 20 | (,val.(progn.,@body))).......... |
| 23f20 | 20 20 3b 3b 20 46 49 58 4d 45 20 2d 20 4e 65 65 64 20 61 20 6c 6f 6f 70 20 68 65 72 65 0a 20 20 | ..;;.FIXME.-.Need.a.loop.here... |
| 23f40 | 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 65 6e 64 2d 73 74 72 69 6e | .........(elnode-http-send-strin |
| 23f60 | 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 2c 68 76 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 62 | g.............,hv.............(b |
| 23f80 | 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 20 28 70 6f 69 | uffer-substring.(point-min).(poi |
| 23fa0 | 6e 74 2d 6d 61 78 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 | nt-max)))............(elnode-htt |
| 23fc0 | 70 2d 72 65 74 75 72 6e 20 2c 68 76 29 29 29 29 29 29 0a 0a 0a 3b 3b 20 45 6c 6e 6f 64 65 20 63 | p-return.,hv))))))...;;.Elnode.c |
| 23fe0 | 68 69 6c 64 20 70 72 6f 63 65 73 73 20 66 75 6e 63 74 69 6f 6e 73 0a 0a 28 64 65 66 63 75 73 74 | hild.process.functions..(defcust |
| 24000 | 6f 6d 20 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 77 6f 72 6b 65 72 2d 65 6c 69 73 70 20 6e 69 6c 0a 20 | om.elnode-log-worker-elisp.nil.. |
| 24020 | 20 22 49 66 20 74 72 75 65 20 74 68 65 6e 20 77 6f 72 6b 65 72 20 45 6c 69 73 70 20 28 45 6c 69 | ."If.true.then.worker.Elisp.(Eli |
| 24040 | 73 70 20 72 75 6e 20 69 6e 20 61 20 63 68 69 6c 64 2d 45 6d 61 63 73 20 70 72 6f 63 65 73 73 29 | sp.run.in.a.child-Emacs.process) |
| 24060 | 20 69 73 20 6c 6f 67 67 65 64 2e 0a 0a 54 68 65 20 62 75 66 66 65 72 20 27 2a 20 65 6c 6e 6f 64 | .is.logged...The.buffer.'*.elnod |
| 24080 | 65 2d 77 6f 72 6b 65 72 2d 65 6c 69 73 70 20 2a 27 20 69 73 20 75 73 65 64 20 66 6f 72 20 74 68 | e-worker-elisp.*'.is.used.for.th |
| 240a0 | 65 20 6c 6f 67 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 65 6c 6e 6f 64 65 0a 20 20 3a 74 79 70 65 | e.log."...:group.'elnode...:type |
| 240c0 | 20 27 28 62 6f 6f 6c 65 61 6e 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 65 6c 6e 6f 64 65 2d | .'(boolean))..(defcustom.elnode- |
| 240e0 | 6c 6f 67 2d 77 6f 72 6b 65 72 2d 72 65 73 70 6f 6e 73 65 73 20 6e 69 6c 0a 20 20 22 49 66 20 74 | log-worker-responses.nil..."If.t |
| 24100 | 72 75 65 20 74 68 65 6e 20 77 6f 72 6b 65 72 20 45 6c 69 73 70 20 6c 6f 67 73 20 72 65 73 70 6f | rue.then.worker.Elisp.logs.respo |
| 24120 | 6e 73 65 73 20 69 6e 20 61 20 62 75 66 66 65 72 2e 0a 0a 54 68 65 20 62 75 66 66 65 72 20 27 2a | nses.in.a.buffer...The.buffer.'* |
| 24140 | 20 65 6c 6e 6f 64 65 2d 77 6f 72 6b 65 72 2d 72 65 73 70 6f 6e 73 65 20 2a 27 20 69 73 20 75 73 | .elnode-worker-response.*'.is.us |
| 24160 | 65 64 20 66 6f 72 20 74 68 65 20 6c 6f 67 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 65 6c 6e 6f 64 | ed.for.the.log."...:group.'elnod |
| 24180 | 65 0a 20 20 3a 74 79 70 65 20 27 28 62 6f 6f 6c 65 61 6e 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c | e...:type.'(boolean))..(defun.el |
| 241a0 | 6e 6f 64 65 2d 2d 77 6f 72 6b 65 72 2d 66 69 6c 74 65 72 2d 68 65 6c 70 65 72 20 28 70 72 6f 63 | node--worker-filter-helper.(proc |
| 241c0 | 65 73 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ess............................. |
| 241e0 | 20 20 20 20 20 20 20 20 20 64 61 74 61 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .........data................... |
| 24200 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 68 69 6c 64 2d 6c 69 73 70 0a 20 20 | ...................child-lisp... |
| 24220 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
| 24240 | 20 20 20 6f 75 74 2d 73 74 72 65 61 6d 29 0a 20 20 22 41 20 68 65 6c 70 65 72 20 66 75 6e 63 74 | ...out-stream)..."A.helper.funct |
| 24260 | 69 6f 6e 20 66 6f 72 20 60 65 6c 6e 6f 64 65 2d 77 6f 72 6b 65 72 2d 65 6c 69 73 70 27 2e 0a 0a | ion.for.`elnode-worker-elisp'... |
| 24280 | 53 65 6e 64 73 20 44 41 54 41 20 62 65 69 6e 67 20 73 65 6e 74 20 66 72 6f 6d 20 50 52 4f 43 45 | Sends.DATA.being.sent.from.PROCE |
| 242a0 | 53 53 20 74 6f 20 4f 55 54 2d 53 54 52 45 41 4d 2e 0a 0a 43 48 49 4c 44 2d 4c 49 53 50 20 69 73 | SS.to.OUT-STREAM...CHILD-LISP.is |
| 242c0 | 20 73 65 6e 74 20 69 6e 20 72 65 73 70 6f 6e 73 65 20 74 6f 20 45 6d 61 63 73 27 20 71 75 65 72 | .sent.in.response.to.Emacs'.quer |
| 242e0 | 79 20 66 6f 72 20 74 68 65 20 4c 69 73 70 20 6f 6e 20 73 74 64 69 6e 2e 22 0a 20 20 28 69 66 20 | y.for.the.Lisp.on.stdin."...(if. |
| 24300 | 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 77 6f 72 6b 65 72 2d 72 65 73 70 6f 6e 73 65 73 0a 20 20 20 20 | elnode-log-worker-responses..... |
| 24320 | 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 | ..(with-current-buffer.......... |
| 24340 | 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 20 22 2a 20 65 6c 6e 6f 64 65 2d 77 6f | .(get-buffer-create."*.elnode-wo |
| 24360 | 72 6b 65 72 2d 72 65 73 70 6f 6e 73 65 20 2a 22 29 0a 20 20 20 20 20 20 20 20 28 67 6f 74 6f 2d | rker-response.*").........(goto- |
| 24380 | 63 68 61 72 20 28 70 6f 69 6e 74 2d 6d 61 78 29 29 0a 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 | char.(point-max)).........(inser |
| 243a0 | 74 20 64 61 74 61 29 29 29 0a 0a 20 20 3b 3b 20 53 70 69 74 20 6f 75 74 20 61 20 62 69 74 20 6f | t.data)))....;;.Spit.out.a.bit.o |
| 243c0 | 66 20 74 68 65 20 64 61 74 61 20 28 74 72 75 6e 63 61 74 65 64 29 0a 20 20 28 65 6c 6e 6f 64 65 | f.the.data.(truncated)...(elnode |
| 243e0 | 2d 65 72 72 6f 72 0a 20 20 20 22 65 6c 6e 6f 64 65 2d 2d 77 6f 72 6b 65 72 2d 66 69 6c 74 65 72 | -error...."elnode--worker-filter |
| 24400 | 2d 68 65 6c 70 65 72 20 64 61 74 61 20 25 73 2e 2e 2e 20 25 73 22 0a 20 20 20 28 65 6c 6e 6f 64 | -helper.data.%s....%s"....(elnod |
| 24420 | 65 2d 74 72 75 6e 63 20 64 61 74 61 29 0a 20 20 20 6f 75 74 2d 73 74 72 65 61 6d 29 0a 0a 20 20 | e-trunc.data)....out-stream).... |
| 24440 | 3b 3b 20 57 65 20 67 65 74 20 74 68 69 73 20 61 73 20 61 20 73 69 67 6e 61 6c 20 74 6f 20 72 65 | ;;.We.get.this.as.a.signal.to.re |
| 24460 | 61 64 20 61 20 6c 69 73 70 20 65 78 70 72 65 73 73 69 6f 6e 0a 20 20 28 69 66 20 28 65 71 75 61 | ad.a.lisp.expression...(if.(equa |
| 24480 | 6c 20 64 61 74 61 20 22 4c 69 73 70 20 65 78 70 72 65 73 73 69 6f 6e 3a 20 22 29 0a 20 20 20 20 | l.data."Lisp.expression:.")..... |
| 244a0 | 20 20 28 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 73 74 72 69 6e 67 20 70 72 6f 63 65 73 73 20 63 | ..(process-send-string.process.c |
| 244c0 | 68 69 6c 64 2d 6c 69 73 70 29 0a 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 28 28 62 75 66 66 | hild-lisp).....(cond......((buff |
| 244e0 | 65 72 70 20 6f 75 74 2d 73 74 72 65 61 6d 29 0a 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 | erp.out-stream).......(with-curr |
| 24500 | 65 6e 74 2d 62 75 66 66 65 72 20 6f 75 74 2d 73 74 72 65 61 6d 0a 20 20 20 20 20 20 20 20 28 69 | ent-buffer.out-stream.........(i |
| 24520 | 6e 73 65 72 74 20 64 61 74 61 29 29 29 0a 20 20 20 20 20 28 28 66 75 6e 63 74 69 6f 6e 70 20 6f | nsert.data)))......((functionp.o |
| 24540 | 75 74 2d 73 74 72 65 61 6d 29 0a 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 6f 75 74 2d 73 74 | ut-stream).......(funcall.out-st |
| 24560 | 72 65 61 6d 20 70 72 6f 63 65 73 73 20 64 61 74 61 29 29 0a 20 20 20 20 20 28 28 70 72 6f 63 65 | ream.process.data))......((proce |
| 24580 | 73 73 70 20 6f 75 74 2d 73 74 72 65 61 6d 29 0a 20 20 20 20 20 20 28 69 66 20 28 6e 6f 74 20 28 | ssp.out-stream).......(if.(not.( |
| 245a0 | 65 71 75 61 6c 20 22 63 6c 6f 73 65 64 22 20 28 70 72 6f 63 65 73 73 2d 73 74 61 74 75 73 20 70 | equal."closed".(process-status.p |
| 245c0 | 72 6f 63 65 73 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 0a 20 20 20 | rocess)))...........(funcall.... |
| 245e0 | 20 20 20 20 20 20 20 20 3b 3b 20 44 6f 65 73 20 74 68 65 20 6f 75 74 70 75 74 2d 73 74 72 65 61 | ........;;.Does.the.output-strea |
| 24600 | 6d 20 68 61 76 65 20 61 20 73 70 65 63 69 66 69 63 20 66 75 6e 63 74 69 6f 6e 3f 0a 20 20 20 20 | m.have.a.specific.function?..... |
| 24620 | 20 20 20 20 20 20 20 28 6f 72 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 6f 75 74 2d 73 74 72 65 | .......(or.(process-get.out-stre |
| 24640 | 61 6d 20 3a 73 65 6e 64 2d 73 74 72 69 6e 67 2d 66 75 6e 63 74 69 6f 6e 29 0a 20 20 20 20 20 20 | am.:send-string-function)....... |
| 24660 | 20 20 20 20 20 20 20 20 20 27 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 73 74 72 69 6e 67 29 0a 20 | .........'process-send-string).. |
| 24680 | 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 68 65 20 64 61 74 61 20 74 6f 20 73 65 6e 74 20 74 6f | ..........;;.The.data.to.sent.to |
| 246a0 | 20 74 68 65 20 6f 75 74 70 75 74 2d 73 74 72 65 61 6d 20 70 72 6f 63 65 73 73 0a 20 20 20 20 20 | .the.output-stream.process...... |
| 246c0 | 20 20 20 20 20 20 6f 75 74 2d 73 74 72 65 61 6d 20 64 61 74 61 29 29 29 29 29 29 0a 0a 28 64 65 | ......out-stream.data))))))..(de |
| 246e0 | 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 77 6f 72 6b 65 72 2d 6c 69 73 70 2d 68 65 6c 70 65 72 20 28 | fun.elnode--worker-lisp-helper.( |
| 24700 | 63 68 69 6c 64 2d 6c 69 73 70 29 0a 20 20 22 43 61 6c 6c 65 64 20 77 69 74 68 20 43 48 49 4c 44 | child-lisp)..."Called.with.CHILD |
| 24720 | 2d 4c 49 53 50 20 69 74 20 72 65 74 75 72 6e 73 20 61 20 76 65 72 73 69 6f 6e 20 6f 66 20 43 48 | -LISP.it.returns.a.version.of.CH |
| 24740 | 49 4c 44 2d 4c 49 53 50 2e 0a 0a 42 79 20 64 65 66 61 75 6c 74 20 74 68 69 73 20 66 75 6e 63 74 | ILD-LISP...By.default.this.funct |
| 24760 | 69 6f 6e 20 64 6f 65 73 20 6e 6f 74 68 69 6e 67 20 65 78 63 65 70 74 20 72 65 74 75 72 6e 20 69 | ion.does.nothing.except.return.i |
| 24780 | 74 27 73 20 61 72 67 75 6d 65 6e 74 2e 0a 0a 54 68 65 20 66 75 6e 63 74 69 6f 6e 20 65 78 69 73 | t's.argument...The.function.exis |
| 247a0 | 74 73 20 73 6f 20 74 68 61 74 20 6f 74 68 65 72 20 66 75 6e 63 74 69 6f 6e 73 20 43 41 4e 20 66 | ts.so.that.other.functions.CAN.f |
| 247c0 | 6c 65 74 20 69 74 20 61 6e 64 20 74 68 75 73 0a 6f 76 65 72 72 69 64 65 20 74 68 65 20 4c 69 73 | let.it.and.thus.override.the.Lis |
| 247e0 | 70 20 62 65 69 6e 67 20 70 61 73 73 65 64 20 74 6f 20 74 68 65 20 63 68 69 6c 64 20 45 6d 61 63 | p.being.passed.to.the.child.Emac |
| 24800 | 73 2e 22 0a 20 20 63 68 69 6c 64 2d 6c 69 73 70 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 65 6c 6e | s."...child-lisp)..(defmacro.eln |
| 24820 | 6f 64 65 2d 77 6f 72 6b 65 72 2d 65 6c 69 73 70 20 28 6f 75 74 70 75 74 2d 73 74 72 65 61 6d 20 | ode-worker-elisp.(output-stream. |
| 24840 | 62 69 6e 64 69 6e 67 73 20 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20 22 45 76 61 6c 75 61 74 65 | bindings.&rest.body)..."Evaluate |
| 24860 | 20 74 68 65 20 42 4f 44 59 20 69 6e 20 61 20 63 68 69 6c 64 20 45 6d 61 63 73 20 63 6f 6e 6e 65 | .the.BODY.in.a.child.Emacs.conne |
| 24880 | 63 74 65 64 20 74 6f 20 4f 55 54 50 55 54 2d 53 54 52 45 41 4d 2e 0a 0a 54 68 65 20 42 49 4e 44 | cted.to.OUTPUT-STREAM...The.BIND |
| 248a0 | 49 4e 47 53 20 61 72 65 20 6c 65 74 2d 66 6f 72 6d 20 76 61 72 69 61 62 6c 65 20 61 73 73 69 67 | INGS.are.let-form.variable.assig |
| 248c0 | 6e 6d 65 6e 74 73 20 77 68 69 63 68 20 61 72 65 0a 73 65 72 69 61 6c 69 7a 65 64 20 66 6f 72 20 | nments.which.are.serialized.for. |
| 248e0 | 74 68 65 20 63 68 69 6c 64 20 45 6d 61 63 73 2e 20 20 55 6e 6c 65 73 73 20 61 20 76 61 72 69 61 | the.child.Emacs...Unless.a.varia |
| 24900 | 62 6c 65 20 66 72 6f 6d 20 74 68 65 0a 70 61 72 65 6e 74 20 69 73 20 65 78 70 6c 69 63 69 74 6c | ble.from.the.parent.is.explicitl |
| 24920 | 79 20 73 74 61 74 65 64 20 68 65 72 65 20 69 74 20 77 69 6c 6c 20 4e 4f 54 20 62 65 20 61 63 63 | y.stated.here.it.will.NOT.be.acc |
| 24940 | 65 73 73 69 62 6c 65 20 69 6e 20 74 68 65 0a 63 68 69 6c 64 20 45 6d 61 63 73 2e 0a 0a 54 68 65 | essible.in.the.child.Emacs...The |
| 24960 | 20 63 68 69 6c 64 20 45 6d 61 63 73 20 68 61 73 20 61 20 60 6c 6f 61 64 2d 70 61 74 68 27 20 65 | .child.Emacs.has.a.`load-path'.e |
| 24980 | 78 61 63 74 6c 79 20 61 73 20 74 68 65 20 60 6c 6f 61 64 2d 70 61 74 68 27 20 6f 66 0a 74 68 65 | xactly.as.the.`load-path'.of.the |
| 249a0 | 20 70 61 72 65 6e 74 20 45 6d 61 63 73 20 61 74 20 65 78 65 63 75 74 69 6f 6e 2e 0a 0a 54 68 65 | .parent.Emacs.at.execution...The |
| 249c0 | 20 63 72 65 61 74 65 64 20 63 68 69 6c 64 20 45 6d 61 63 73 20 70 72 6f 63 65 73 73 20 69 73 20 | .created.child.Emacs.process.is. |
| 249e0 | 72 65 74 75 72 6e 65 64 2e 20 20 49 74 27 73 20 70 6f 73 73 69 62 6c 65 20 74 6f 0a 6b 69 6c 6c | returned...It's.possible.to.kill |
| 24a00 | 20 74 68 65 20 63 68 69 6c 64 20 45 6d 61 63 73 20 70 72 6f 63 65 73 73 20 6f 72 20 64 6f 20 6f | .the.child.Emacs.process.or.do.o |
| 24a20 | 74 68 65 72 20 74 68 69 6e 67 73 20 74 6f 20 69 74 20 64 69 72 65 63 74 6c 79 2e 0a 54 68 69 73 | ther.things.to.it.directly..This |
| 24a40 | 20 63 6f 75 6c 64 20 62 65 20 76 65 72 79 20 64 61 6e 67 65 72 6f 75 73 20 68 6f 77 65 76 65 72 | .could.be.very.dangerous.however |
| 24a60 | 2c 20 79 6f 75 20 73 68 6f 75 6c 64 20 6b 6e 6f 77 20 77 68 61 74 20 79 6f 75 0a 61 72 65 20 64 | ,.you.should.know.what.you.are.d |
| 24a80 | 6f 69 6e 67 20 62 65 66 6f 72 65 20 61 74 74 65 6d 70 74 69 6e 67 20 69 74 2e 0a 0a 54 68 65 20 | oing.before.attempting.it...The. |
| 24aa0 | 4f 55 54 50 55 54 2d 53 54 52 45 41 4d 20 63 6f 75 6c 64 20 62 65 20 61 20 62 75 66 66 65 72 2c | OUTPUT-STREAM.could.be.a.buffer, |
| 24ac0 | 20 61 20 66 75 6e 63 74 69 6f 6e 20 6f 72 20 61 6e 6f 74 68 65 72 0a 70 72 6f 63 65 73 73 2e 0a | .a.function.or.another.process.. |
| 24ae0 | 0a 49 66 20 74 68 65 20 4f 55 54 50 55 54 2d 53 54 52 45 41 4d 20 69 73 20 61 6e 6f 74 68 65 72 | .If.the.OUTPUT-STREAM.is.another |
| 24b00 | 20 70 72 6f 63 65 73 73 20 69 74 20 6d 61 79 20 68 61 76 65 20 61 20 70 72 6f 63 65 73 73 0a 70 | .process.it.may.have.a.process.p |
| 24b20 | 72 6f 70 65 72 74 79 20 60 3a 73 65 6e 64 2d 73 74 72 69 6e 67 2d 66 75 6e 63 74 69 6f 6e 27 20 | roperty.`:send-string-function'. |
| 24b40 | 65 76 61 6c 75 61 74 69 6e 67 20 74 6f 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 6f 20 73 65 6e 64 | evaluating.to.a.function.to.send |
| 24b60 | 0a 64 61 74 61 20 74 6f 20 74 68 61 74 20 70 72 6f 63 65 73 73 2e 20 20 54 68 65 20 66 75 6e 63 | .data.to.that.process...The.func |
| 24b80 | 74 69 6f 6e 20 73 68 6f 75 6c 64 20 74 61 6b 65 20 74 68 65 20 73 61 6d 65 0a 61 72 67 75 6d 65 | tion.should.take.the.same.argume |
| 24ba0 | 6e 74 73 20 61 73 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 45 6d 61 63 73 20 4c 69 73 70 20 60 | nts.as.the.standard.Emacs.Lisp.` |
| 24bc0 | 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 73 74 72 69 6e 67 27 2e 0a 0a 46 75 72 74 68 65 72 6d 6f | process-send-string'...Furthermo |
| 24be0 | 72 65 2c 20 69 66 20 74 68 65 20 4f 55 54 50 55 54 2d 53 54 52 45 41 4d 20 69 73 20 61 6e 6f 74 | re,.if.the.OUTPUT-STREAM.is.anot |
| 24c00 | 68 65 72 20 70 72 6f 63 65 73 73 2c 20 77 68 65 6e 20 74 68 65 0a 63 68 69 6c 64 20 45 6d 61 63 | her.process,.when.the.child.Emac |
| 24c20 | 73 20 66 69 6e 69 73 68 65 73 20 61 6e 20 45 4f 46 20 69 73 20 73 65 6e 74 20 74 6f 20 74 68 61 | s.finishes.an.EOF.is.sent.to.tha |
| 24c40 | 74 20 70 72 6f 63 65 73 73 2e 20 20 49 66 20 74 68 65 0a 4f 55 54 50 55 54 2d 53 54 52 45 41 4d | t.process...If.the.OUTPUT-STREAM |
| 24c60 | 20 70 72 6f 63 65 73 73 20 68 61 73 20 61 20 70 72 6f 63 65 73 73 20 70 72 6f 70 65 72 74 79 20 | .process.has.a.process.property. |
| 24c80 | 60 3a 73 65 6e 64 2d 65 6f 66 2d 66 75 6e 63 74 69 6f 6e 27 0a 74 68 65 6e 20 74 68 61 74 20 69 | `:send-eof-function'.then.that.i |
| 24ca0 | 73 20 75 73 65 64 20 74 6f 20 73 65 6e 64 20 74 68 65 20 45 4f 46 2e 20 20 54 68 65 20 66 75 6e | s.used.to.send.the.EOF...The.fun |
| 24cc0 | 63 74 69 6f 6e 20 73 68 6f 75 6c 64 20 74 61 6b 65 20 74 68 65 0a 73 61 6d 65 20 61 72 67 75 6d | ction.should.take.the.same.argum |
| 24ce0 | 65 6e 74 73 20 61 73 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 45 6d 61 63 73 20 4c 69 73 70 20 | ents.as.the.standard.Emacs.Lisp. |
| 24d00 | 60 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 65 6f 66 27 2e 0a 0a 41 6e 20 65 78 61 6d 70 6c 65 3a | `process-send-eof'...An.example: |
| 24d20 | 0a 0a 20 28 65 6c 6e 6f 64 65 2d 77 6f 72 6b 65 72 2d 65 6c 69 73 70 20 68 74 74 70 2d 63 6f 6e | ...(elnode-worker-elisp.http-con |
| 24d40 | 6e 65 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 | nection.......................(( |
| 24d60 | 70 61 74 68 20 28 70 61 74 68 2d 66 75 6e 63 74 69 6f 6e 29 29 29 0a 20 20 20 28 72 65 71 75 69 | path.(path-function)))....(requi |
| 24d80 | 72 65 20 27 63 72 65 6f 6c 65 29 0a 20 20 20 28 63 72 65 6f 6c 65 2d 77 69 6b 69 20 70 61 74 68 | re.'creole)....(creole-wiki.path |
| 24da0 | 29 29 0a 0a 50 72 65 73 75 6d 69 6e 67 20 68 74 74 70 2d 63 6f 6e 6e 65 63 74 69 6f 6e 20 69 73 | ))..Presuming.http-connection.is |
| 24dc0 | 20 61 20 70 72 6f 63 65 73 73 20 28 69 6e 20 74 68 65 20 6d 61 6e 6e 65 72 20 6f 66 20 45 6c 6e | .a.process.(in.the.manner.of.Eln |
| 24de0 | 6f 64 65 2c 0a 66 6f 72 20 65 78 61 6d 70 6c 65 29 20 74 68 69 73 20 77 69 6c 6c 20 63 61 75 73 | ode,.for.example).this.will.caus |
| 24e00 | 65 20 61 20 63 68 69 6c 64 20 45 6d 61 63 73 20 74 6f 20 62 65 20 63 72 65 61 74 65 64 2c 20 77 | e.a.child.Emacs.to.be.created,.w |
| 24e20 | 69 74 68 69 6e 0a 77 68 69 63 68 20 60 70 61 74 68 27 20 28 77 68 69 63 68 20 69 73 20 73 65 72 | ithin.which.`path'.(which.is.ser |
| 24e40 | 69 61 6c 69 7a 65 64 20 66 72 6f 6d 20 74 68 65 20 76 61 6c 75 65 20 6f 66 20 74 68 65 20 70 61 | ialized.from.the.value.of.the.pa |
| 24e60 | 72 65 6e 74 0a 45 6d 61 63 73 27 20 60 70 61 74 68 2d 66 75 6e 63 74 69 6f 6e 27 29 20 77 69 6c | rent.Emacs'.`path-function').wil |
| 24e80 | 6c 20 62 65 20 6c 6f 61 64 65 64 20 61 6e 64 20 63 6f 6e 76 65 72 74 65 64 20 66 72 6f 6d 0a 57 | l.be.loaded.and.converted.from.W |
| 24ea0 | 69 6b 69 43 72 65 6f 6c 65 20 74 6f 20 48 54 4d 4c 20 61 6e 64 20 74 68 65 6e 20 73 65 6e 74 20 | ikiCreole.to.HTML.and.then.sent. |
| 24ec0 | 74 6f 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 6f 75 74 70 75 74 20 73 74 72 65 61 6d 2e 0a 54 | to.the.standard.output.stream..T |
| 24ee0 | 68 65 20 63 68 69 6c 64 27 73 20 73 74 61 6e 64 61 72 64 20 6f 75 74 70 75 74 20 73 74 72 65 61 | he.child's.standard.output.strea |
| 24f00 | 6d 20 69 73 20 63 6f 6e 6e 65 63 74 65 64 20 64 69 72 65 63 74 6c 79 20 74 6f 20 74 68 65 0a 60 | m.is.connected.directly.to.the.` |
| 24f20 | 68 74 74 70 2d 63 6f 6e 6e 65 63 74 69 6f 6e 27 2e 20 20 49 6e 20 74 68 69 73 20 63 61 73 65 2c | http-connection'...In.this.case, |
| 24f40 | 20 70 72 65 73 75 6d 61 62 6c 79 20 74 68 65 0a 60 68 74 74 70 2d 63 6f 6e 6e 65 63 74 69 6f 6e | .presumably.the.`http-connection |
| 24f60 | 27 20 77 6f 75 6c 64 20 68 61 76 65 20 66 75 6e 63 74 69 6f 6e 73 20 61 74 74 61 63 68 65 64 20 | '.would.have.functions.attached. |
| 24f80 | 74 6f 20 74 68 65 20 70 72 6f 70 65 72 74 69 65 73 0a 60 3a 73 65 6e 64 2d 73 74 72 69 6e 67 2d | to.the.properties.`:send-string- |
| 24fa0 | 66 75 6e 63 74 69 6f 6e 27 20 61 6e 64 20 60 3a 73 65 6e 64 2d 65 6f 66 2d 66 75 6e 63 74 69 6f | function'.and.`:send-eof-functio |
| 24fc0 | 6e 27 20 74 6f 20 64 6f 20 48 54 54 50 0a 63 68 75 6e 6b 20 65 6e 63 6f 64 69 6e 67 20 61 6e 64 | n'.to.do.HTTP.chunk.encoding.and |
| 24fe0 | 20 74 6f 20 65 6e 64 20 74 68 65 20 48 54 54 50 20 63 6f 6e 6e 65 63 74 69 6f 6e 20 63 6f 72 72 | .to.end.the.HTTP.connection.corr |
| 25000 | 65 63 74 6c 79 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 0a 20 20 20 28 69 6e 64 65 6e 74 20 32 29 | ectly."...(declare....(indent.2) |
| 25020 | 0a 20 20 20 28 64 65 62 75 67 0a 20 20 20 20 28 73 65 78 70 0a 20 20 20 20 20 28 26 72 65 73 74 | ....(debug.....(sexp......(&rest |
| 25040 | 0a 20 20 20 20 20 20 26 6f 72 20 73 79 6d 62 6f 6c 70 20 28 67 61 74 65 20 73 79 6d 62 6f 6c 70 | .......&or.symbolp.(gate.symbolp |
| 25060 | 20 26 6f 70 74 69 6f 6e 61 6c 20 66 6f 72 6d 29 29 0a 20 20 20 20 20 26 72 65 73 74 20 66 6f 72 | .&optional.form))......&rest.for |
| 25080 | 6d 29 29 29 0a 20 20 28 6c 65 74 20 28 28 6c 6f 61 64 70 61 74 68 76 61 72 20 28 6d 61 6b 65 2d | m)))...(let.((loadpathvar.(make- |
| 250a0 | 73 79 6d 62 6f 6c 20 22 6c 6f 61 64 2d 70 61 74 68 2d 66 6f 72 6d 22 29 29 0a 20 20 20 20 20 20 | symbol."load-path-form"))....... |
| 250c0 | 20 20 28 62 69 6e 64 69 6e 67 73 76 61 72 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 62 69 6e | ..(bindingsvar.(make-symbol."bin |
| 250e0 | 64 69 6e 67 73 22 29 29 0a 20 20 20 20 20 20 20 20 28 63 68 69 6c 64 6c 69 73 70 76 61 72 20 28 | dings")).........(childlispvar.( |
| 25100 | 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 63 68 69 6c 64 2d 6c 69 73 70 22 29 29 0a 20 20 20 20 20 | make-symbol."child-lisp"))...... |
| 25120 | 20 20 20 28 63 68 69 6c 64 6c 69 73 70 66 69 6c 65 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 | ...(childlispfile.(make-symbol." |
| 25140 | 63 68 69 6c 64 2d 6c 69 73 70 2d 66 69 6c 65 22 29 29 0a 20 20 20 20 20 20 20 20 28 66 69 6c 74 | child-lisp-file")).........(filt |
| 25160 | 65 72 76 61 72 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 66 69 6c 74 65 72 2d 66 75 6e 63 74 | ervar.(make-symbol."filter-funct |
| 25180 | 69 6f 6e 22 29 29 0a 20 20 20 20 20 20 20 20 28 63 6d 64 76 61 72 20 28 6d 61 6b 65 2d 73 79 6d | ion")).........(cmdvar.(make-sym |
| 251a0 | 62 6f 6c 20 22 63 6f 6d 6d 61 6e 64 22 29 29 0a 20 20 20 20 20 20 20 20 28 70 72 6f 63 76 61 72 | bol."command")).........(procvar |
| 251c0 | 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 70 72 6f 63 65 73 73 22 29 29 0a 20 20 20 20 20 20 | .(make-symbol."process"))....... |
| 251e0 | 20 20 28 6e 61 6d 65 76 61 72 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 70 72 6f 63 65 73 73 | ..(namevar.(make-symbol."process |
| 25200 | 2d 6e 61 6d 65 22 29 29 0a 20 20 20 20 20 20 20 20 28 62 75 66 76 61 72 20 28 6d 61 6b 65 2d 73 | -name")).........(bufvar.(make-s |
| 25220 | 79 6d 62 6f 6c 20 22 62 75 66 66 65 72 22 29 29 0a 20 20 20 20 20 20 20 20 28 6f 75 74 76 61 72 | ymbol."buffer")).........(outvar |
| 25240 | 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 6f 75 74 70 75 74 2d 73 74 72 65 61 6d 22 29 29 29 | .(make-symbol."output-stream"))) |
| 25260 | 0a 20 20 20 20 60 28 6c 65 74 2a 20 28 28 2c 6f 75 74 76 61 72 20 2c 6f 75 74 70 75 74 2d 73 74 | .....`(let*.((,outvar.,output-st |
| 25280 | 72 65 61 6d 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 2c 63 68 69 6c 64 6c 69 73 70 76 61 72 | ream).............(,childlispvar |
| 252a0 | 20 20 3b 20 74 68 65 20 6c 69 73 70 20 74 6f 20 72 75 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ..;.the.lisp.to.run............. |
| 252c0 | 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 54 68 65 72 65 20 | .(concat...............;;.There. |
| 252e0 | 69 73 20 61 20 76 65 72 79 20 73 74 72 61 6e 67 65 20 74 68 69 6e 67 20 77 69 74 68 20 73 65 6e | is.a.very.strange.thing.with.sen |
| 25300 | 64 69 6e 67 20 6c 69 73 70 20 74 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 28 72 | ding.lisp.to...............;;.(r |
| 25320 | 65 61 64 29 20 6f 76 65 72 20 61 20 70 69 70 65 64 20 73 74 72 65 61 6d 2e 2e 2e 20 28 72 65 61 | ead).over.a.piped.stream....(rea |
| 25340 | 64 29 20 63 61 6e 27 74 20 63 6f 70 65 20 77 69 74 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | d).can't.cope.with.............. |
| 25360 | 20 3b 3b 20 6d 75 6c 74 69 70 6c 65 20 6c 69 6e 65 73 3b 20 73 6f 20 77 65 20 65 6e 63 6f 64 65 | .;;.multiple.lines;.so.we.encode |
| 25380 | 20 6e 65 77 6c 69 6e 65 20 68 65 72 65 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 | .newline.here................(re |
| 253a0 | 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 | place-regexp-in-string.......... |
| 253c0 | 20 20 20 20 20 20 22 5c 6e 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 5c 5c 5c 5c 6e | ......"\n"................"\\\\n |
| 253e0 | 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 28 70 72 6f 67 6e | "................(format."(progn |
| 25400 | 20 28 73 65 74 71 20 6c 6f 61 64 2d 70 61 74 68 20 28 71 75 6f 74 65 20 25 53 29 29 20 28 6c 65 | .(setq.load-path.(quote.%S)).(le |
| 25420 | 74 20 25 53 20 25 53 29 29 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | t.%S.%S))"...................... |
| 25440 | 20 20 6c 6f 61 64 2d 70 61 74 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ..load-path..................... |
| 25460 | 20 20 20 28 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...(list........................ |
| 25480 | 20 2c 40 28 6c 6f 6f 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .,@(loop........................ |
| 254a0 | 20 20 20 20 66 6f 72 20 66 20 69 6e 20 62 69 6e 64 69 6e 67 73 20 63 6f 6c 6c 65 63 74 0a 20 20 | ....for.f.in.bindings.collect... |
| 254c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 20 27 | .........................(list.' |
| 254e0 | 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | list............................ |
| 25500 | 20 20 20 20 20 20 60 28 71 75 6f 74 65 20 2c 28 63 61 72 20 66 29 29 0a 20 20 20 20 20 20 20 20 | ......`(quote.,(car.f))......... |
| 25520 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 66 6f 72 6d 61 | .........................`(forma |
| 25540 | 74 20 22 25 73 22 20 2c 28 63 61 64 72 20 66 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 | t."%s".,(cadr.f)))))............ |
| 25560 | 20 20 20 20 20 20 20 20 20 20 20 20 27 28 70 72 6f 67 6e 20 2c 40 28 65 6c 6e 6f 64 65 2d 2d 77 | ............'(progn.,@(elnode--w |
| 25580 | 6f 72 6b 65 72 2d 6c 69 73 70 2d 68 65 6c 70 65 72 20 62 6f 64 79 29 29 29 29 0a 20 20 20 20 20 | orker-lisp-helper.body))))...... |
| 255a0 | 20 20 20 20 20 20 20 20 20 22 5c 6e 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 2c 63 68 | ........."\n")).............(,ch |
| 255c0 | 69 6c 64 6c 69 73 70 66 69 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 | ildlispfile..............(let.(( |
| 255e0 | 2c 63 68 69 6c 64 6c 69 73 70 66 69 6c 65 20 28 6d 61 6b 65 2d 74 65 6d 70 2d 66 69 6c 65 20 22 | ,childlispfile.(make-temp-file." |
| 25600 | 65 6c 6e 6f 64 65 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d | elnode")))................(with- |
| 25620 | 74 65 6d 70 2d 66 69 6c 65 20 2c 63 68 69 6c 64 6c 69 73 70 66 69 6c 65 0a 20 20 20 20 20 20 20 | temp-file.,childlispfile........ |
| 25640 | 20 20 20 20 20 20 20 20 20 20 28 69 6e 73 65 72 74 20 2c 63 68 69 6c 64 6c 69 73 70 76 61 72 29 | ..........(insert.,childlispvar) |
| 25660 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 63 68 69 6c 64 6c 69 73 70 66 69 6c 65 29 | )................,childlispfile) |
| 25680 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 2c 63 6d 64 76 61 72 0a 20 20 20 20 20 20 20 20 20 | ).............(,cmdvar.......... |
| 256a0 | 20 20 20 20 28 63 6f 6e 63 61 74 20 22 65 6d 61 63 73 20 2d 71 20 2d 62 61 74 63 68 20 22 0a 20 | ....(concat."emacs.-q.-batch.".. |
| 256c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 2d 2d 73 63 72 69 70 74 20 22 20 | ...................."--script.". |
| 256e0 | 2c 63 68 69 6c 64 6c 69 73 70 66 69 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ,childlispfile.................. |
| 25700 | 20 20 20 20 29 29 3b 3b 22 20 32 3e 20 2f 64 65 76 2f 6e 75 6c 6c 22 29 29 0a 20 20 20 20 20 20 | ....));;".2>./dev/null"))....... |
| 25720 | 20 20 20 20 20 20 28 2c 6e 61 6d 65 76 61 72 20 28 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 | ......(,namevar.(concat......... |
| 25740 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6e 75 6d 62 65 72 2d 74 6f 2d 73 74 72 69 6e 67 | ...............(number-to-string |
| 25760 | 20 28 72 61 6e 64 6f 6d 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .(random))...................... |
| 25780 | 20 20 28 6e 75 6d 62 65 72 2d 74 6f 2d 73 74 72 69 6e 67 20 28 66 6c 6f 61 74 2d 74 69 6d 65 29 | ..(number-to-string.(float-time) |
| 257a0 | 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 57 65 20 68 61 76 65 20 74 6f 20 6d 61 | ))).............;;.We.have.to.ma |
| 257c0 | 6b 65 20 61 20 62 75 66 66 65 72 20 75 6e 6c 65 73 73 20 74 68 65 20 6f 75 74 70 75 74 2d 73 74 | ke.a.buffer.unless.the.output-st |
| 257e0 | 72 65 61 6d 20 69 73 20 61 20 62 75 66 66 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 2c 62 | ream.is.a.buffer.............(,b |
| 25800 | 75 66 76 61 72 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ufvar.(cond..................... |
| 25820 | 20 20 28 28 62 75 66 66 65 72 70 20 2c 6f 75 74 76 61 72 29 20 2c 6f 75 74 76 61 72 29 0a 20 20 | ..((bufferp.,outvar).,outvar)... |
| 25840 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 0a 20 20 20 20 20 20 20 20 20 | ....................(t.......... |
| 25860 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 | ..............(get-buffer-create |
| 25880 | 20 28 66 6f 72 6d 61 74 20 22 2a 20 25 73 20 2a 22 20 2c 6e 61 6d 65 76 61 72 29 29 29 29 29 0a | .(format."*.%s.*".,namevar))))). |
| 258a0 | 20 20 20 20 20 20 20 20 20 20 20 20 28 2c 70 72 6f 63 76 61 72 20 28 73 74 61 72 74 2d 70 72 6f | ............(,procvar.(start-pro |
| 258c0 | 63 65 73 73 2d 73 68 65 6c 6c 2d 63 6f 6d 6d 61 6e 64 20 2c 6e 61 6d 65 76 61 72 20 2c 62 75 66 | cess-shell-command.,namevar.,buf |
| 258e0 | 76 61 72 20 2c 63 6d 64 76 61 72 29 29 29 0a 20 20 20 20 20 20 20 3b 3b 20 4c 6f 67 20 74 68 65 | var.,cmdvar)))........;;.Log.the |
| 25900 | 20 6c 69 73 70 0a 20 20 20 20 20 20 20 28 69 66 20 65 6c 6e 6f 64 65 2d 6c 6f 67 2d 77 6f 72 6b | .lisp........(if.elnode-log-work |
| 25920 | 65 72 2d 65 6c 69 73 70 0a 20 20 20 20 20 20 20 20 20 20 20 28 77 69 74 68 2d 63 75 72 72 65 6e | er-elisp............(with-curren |
| 25940 | 74 2d 62 75 66 66 65 72 20 28 67 65 74 2d 62 75 66 66 65 72 2d 63 72 65 61 74 65 20 22 2a 20 65 | t-buffer.(get-buffer-create."*.e |
| 25960 | 6c 6e 6f 64 65 2d 77 6f 72 6b 65 72 2d 65 6c 69 73 70 20 2a 22 29 0a 20 20 20 20 20 20 20 20 20 | lnode-worker-elisp.*").......... |
| 25980 | 20 20 20 20 28 69 6e 73 65 72 74 20 2c 63 68 69 6c 64 6c 69 73 70 76 61 72 29 29 29 0a 20 20 20 | ....(insert.,childlispvar))).... |
| 259a0 | 20 20 20 20 3b 3b 20 53 65 74 75 70 20 61 20 66 69 6c 74 65 72 20 66 75 6e 63 69 6f 6e 20 6f 6e | ....;;.Setup.a.filter.funcion.on |
| 259c0 | 20 74 68 65 20 63 68 69 6c 64 20 6c 69 73 70 20 74 6f 20 6d 61 70 20 6f 75 74 70 75 74 20 62 61 | .the.child.lisp.to.map.output.ba |
| 259e0 | 63 6b 0a 20 20 20 20 20 20 20 3b 3b 20 74 6f 20 77 68 61 74 65 76 65 72 20 74 68 65 20 6f 75 74 | ck........;;.to.whatever.the.out |
| 25a00 | 70 75 74 20 69 73 0a 20 20 20 20 20 20 20 28 73 65 74 2d 70 72 6f 63 65 73 73 2d 66 69 6c 74 65 | put.is........(set-process-filte |
| 25a20 | 72 0a 20 20 20 20 20 20 20 20 2c 70 72 6f 63 76 61 72 0a 20 20 20 20 20 20 20 20 28 6c 61 6d 62 | r.........,procvar.........(lamb |
| 25a40 | 64 61 20 28 70 72 6f 63 65 73 73 20 64 61 74 61 29 0a 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e | da.(process.data)...........(eln |
| 25a60 | 6f 64 65 2d 2d 77 6f 72 6b 65 72 2d 66 69 6c 74 65 72 2d 68 65 6c 70 65 72 0a 20 20 20 20 20 20 | ode--worker-filter-helper....... |
| 25a80 | 20 20 20 20 20 70 72 6f 63 65 73 73 0a 20 20 20 20 20 20 20 20 20 20 20 64 61 74 61 0a 20 20 20 | .....process............data.... |
| 25aa0 | 20 20 20 20 20 20 20 20 2c 63 68 69 6c 64 6c 69 73 70 76 61 72 0a 20 20 20 20 20 20 20 20 20 20 | ........,childlispvar........... |
| 25ac0 | 20 2c 6f 75 74 76 61 72 29 29 29 0a 20 20 20 20 20 20 20 3b 3b 20 4e 6f 77 20 73 65 74 75 70 20 | .,outvar)))........;;.Now.setup. |
| 25ae0 | 74 68 65 20 73 65 6e 74 69 6e 65 6c 0a 20 20 20 20 20 20 20 28 73 65 74 2d 70 72 6f 63 65 73 73 | the.sentinel........(set-process |
| 25b00 | 2d 73 65 6e 74 69 6e 65 6c 0a 20 20 20 20 20 20 20 20 2c 70 72 6f 63 76 61 72 0a 20 20 20 20 20 | -sentinel.........,procvar...... |
| 25b20 | 20 20 20 28 6c 61 6d 62 64 61 20 28 70 72 6f 63 65 73 73 20 73 74 61 74 75 73 29 0a 20 20 20 20 | ...(lambda.(process.status)..... |
| 25b40 | 20 20 20 20 20 20 3b 3b 20 43 68 6f 6f 73 65 20 6f 72 20 66 61 6b 65 20 61 20 73 65 6e 64 2d 65 | ......;;.Choose.or.fake.a.send-e |
| 25b60 | 6f 66 20 66 75 6e 63 0a 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 20 | of.func...........(elnode-error. |
| 25b80 | 22 65 6c 6e 6f 64 65 2d 77 6f 72 6b 65 72 2d 65 6c 69 73 70 20 73 65 6e 74 69 6e 65 6c 20 66 6f | "elnode-worker-elisp.sentinel.fo |
| 25ba0 | 72 20 25 73 22 20 2c 6e 61 6d 65 76 61 72 29 0a 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 | r.%s".,namevar)...........(let.( |
| 25bc0 | 28 73 65 6e 64 2d 65 6f 66 2d 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | (send-eof-function.............. |
| 25be0 | 20 20 20 20 28 6f 72 20 28 61 6e 64 20 28 70 72 6f 63 65 73 73 70 20 2c 6f 75 74 76 61 72 29 0a | ....(or.(and.(processp.,outvar). |
| 25c00 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 28 70 | ..........................(or.(p |
| 25c20 | 72 6f 63 65 73 73 2d 67 65 74 20 2c 6f 75 74 76 61 72 20 3a 73 65 6e 64 2d 65 6f 66 2d 66 75 6e | rocess-get.,outvar.:send-eof-fun |
| 25c40 | 63 74 69 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ction).......................... |
| 25c60 | 20 20 20 20 20 27 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 65 6f 66 29 29 0a 20 20 20 20 20 20 20 | .....'process-send-eof))........ |
| 25c80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 63 6f 6e 29 0a 20 20 20 20 | ..............(lambda.(con)..... |
| 25ca0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 | ...................(elnode-error |
| 25cc0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 65 6c 6e 6f 64 65 | ........................."elnode |
| 25ce0 | 2d 77 6f 72 6b 65 72 2d 65 6c 69 73 70 20 66 61 6b 65 20 65 6f 66 20 66 75 6e 63 20 25 73 22 0a | -worker-elisp.fake.eof.func.%s". |
| 25d00 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 6e 61 6d 65 76 61 72 | ........................,namevar |
| 25d20 | 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 | ))))).............(cond......... |
| 25d40 | 20 20 20 20 20 3b 3b 20 4e 6f 72 6d 61 6c 20 65 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | .....;;.Normal.end.............. |
| 25d60 | 28 28 65 71 75 61 6c 20 73 74 61 74 75 73 20 22 66 69 6e 69 73 68 65 64 5c 6e 22 29 0a 20 20 20 | ((equal.status."finished\n").... |
| 25d80 | 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 0a 20 20 20 20 20 20 20 | ...........(elnode-error........ |
| 25da0 | 20 20 20 20 20 20 20 20 22 65 6c 6e 6f 64 65 2d 77 6f 72 6b 65 72 2d 65 6c 69 73 70 20 25 73 20 | ........"elnode-worker-elisp.%s. |
| 25dc0 | 63 6f 6d 70 6c 65 74 65 64 20 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 6e 61 | completed.%s"................,na |
| 25de0 | 6d 65 76 61 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 6f 75 74 76 61 72 29 0a 20 20 | mevar................,outvar)... |
| 25e00 | 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 73 65 6e 64 2d 65 6f 66 2d 66 75 | ............(funcall.send-eof-fu |
| 25e20 | 6e 63 74 69 6f 6e 20 2c 6f 75 74 76 61 72 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b | nction.,outvar))..............;; |
| 25e40 | 20 45 72 72 6f 72 20 65 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 73 74 72 69 6e 67 | .Error.end..............((string |
| 25e60 | 2d 6d 61 74 63 68 20 22 65 78 69 74 65 64 20 61 62 6e 6f 72 6d 61 6c 6c 79 20 77 69 74 68 20 63 | -match."exited.abnormally.with.c |
| 25e80 | 6f 64 65 20 5c 5c 28 5b 30 2d 39 5d 2b 5c 5c 29 5c 6e 22 20 73 74 61 74 75 73 29 0a 20 20 20 20 | ode.\\([0-9]+\\)\n".status)..... |
| 25ea0 | 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 0a 20 20 20 20 20 20 20 20 | ..........(elnode-error......... |
| 25ec0 | 20 20 20 20 20 20 20 22 65 6c 6e 6f 64 65 2d 77 6f 72 6b 65 72 2d 65 6c 69 73 70 20 25 73 20 63 | ......."elnode-worker-elisp.%s.c |
| 25ee0 | 6f 6d 70 6c 65 74 65 64 20 77 69 74 68 20 61 6e 20 65 72 72 6f 72 3a 20 25 73 22 0a 20 20 20 20 | ompleted.with.an.error:.%s"..... |
| 25f00 | 20 20 20 20 20 20 20 20 20 20 20 2c 6e 61 6d 65 76 61 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ...........,namevar............. |
| 25f20 | 20 20 20 73 74 61 74 75 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c | ...status)...............(funcal |
| 25f40 | 6c 20 73 65 6e 64 2d 65 6f 66 2d 66 75 6e 63 74 69 6f 6e 20 2c 6f 75 74 76 61 72 29 0a 20 20 20 | l.send-eof-function.,outvar).... |
| 25f60 | 20 20 20 20 20 20 20 20 20 20 20 28 64 65 6c 65 74 65 2d 70 72 6f 63 65 73 73 20 70 72 6f 63 65 | ...........(delete-process.proce |
| 25f80 | 73 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 75 6e 6c 65 73 73 20 28 62 75 66 66 65 | ss)...............(unless.(buffe |
| 25fa0 | 72 70 20 2c 6f 75 74 76 61 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6b 69 6c | rp.,outvar).................(kil |
| 25fc0 | 6c 2d 62 75 66 66 65 72 20 28 70 72 6f 63 65 73 73 2d 62 75 66 66 65 72 20 70 72 6f 63 65 73 73 | l-buffer.(process-buffer.process |
| 25fe0 | 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 41 6e 79 20 6f 74 68 65 72 20 73 | ))))..............;;.Any.other.s |
| 26000 | 69 67 6e 61 6c 20 73 74 61 74 75 73 20 69 73 20 69 67 6e 6f 72 65 64 0a 20 20 20 20 20 20 20 20 | ignal.status.is.ignored......... |
| 26020 | 20 20 20 20 20 28 74 29 29 29 29 29 0a 20 20 20 20 20 20 20 2c 70 72 6f 63 76 61 72 29 29 29 0a | .....(t)))))........,procvar))). |
| 26040 | 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 77 61 69 74 2d 66 6f 72 2d 65 78 69 74 20 28 70 72 | .(defun.elnode-wait-for-exit.(pr |
| 26060 | 6f 63 65 73 73 29 0a 20 20 22 57 61 69 74 20 66 6f 72 20 50 52 4f 43 45 53 53 20 73 74 61 74 75 | ocess)..."Wait.for.PROCESS.statu |
| 26080 | 73 20 74 6f 20 67 6f 20 74 6f 20 27 65 78 69 74 2e 22 0a 20 20 28 77 68 69 6c 65 20 28 6e 6f 74 | s.to.go.to.'exit."...(while.(not |
| 260a0 | 20 28 65 71 20 28 70 72 6f 63 65 73 73 2d 73 74 61 74 75 73 20 70 72 6f 63 65 73 73 29 20 27 65 | .(eq.(process-status.process).'e |
| 260c0 | 78 69 74 29 29 0a 20 20 20 20 28 73 6c 65 65 70 2d 66 6f 72 20 31 29 29 29 0a 0a 0a 3b 3b 20 54 | xit)).....(sleep-for.1)))...;;.T |
| 260e0 | 4f 44 4f 3a 20 68 61 6e 64 6c 65 20 65 72 72 6f 72 73 20 62 65 74 74 65 72 20 74 68 61 6e 20 6d | ODO:.handle.errors.better.than.m |
| 26100 | 65 73 73 61 67 69 6e 67 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 63 68 69 6c 64 2d 70 72 | essaging.(defun.elnode--child-pr |
| 26120 | 6f 63 65 73 73 2d 73 65 6e 74 69 6e 65 6c 20 28 70 72 6f 63 65 73 73 20 73 74 61 74 75 73 29 0a | ocess-sentinel.(process.status). |
| 26140 | 20 20 22 41 20 73 65 6e 74 69 6e 65 6c 20 66 6f 72 20 45 6c 6e 6f 64 65 20 63 68 69 6c 64 20 50 | .."A.sentinel.for.Elnode.child.P |
| 26160 | 52 4f 43 45 53 53 2e 0a 0a 45 6c 6e 6f 64 65 20 63 68 69 6c 64 20 70 72 6f 63 65 73 73 65 73 20 | ROCESS...Elnode.child.processes. |
| 26180 | 61 72 65 20 6a 75 73 74 20 45 6d 61 63 73 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 20 70 72 6f 63 | are.just.Emacs.asynchronous.proc |
| 261a0 | 65 73 73 65 73 20 74 68 61 74 0a 73 65 6e 64 20 74 68 65 69 72 20 6f 75 74 70 75 74 20 74 6f 20 | esses.that.send.their.output.to. |
| 261c0 | 61 6e 20 45 6c 6e 6f 64 65 20 48 54 54 50 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 0a 0a 54 68 65 20 | an.Elnode.HTTP.connection...The. |
| 261e0 | 6d 61 69 6e 20 6a 6f 62 20 6f 66 20 74 68 69 73 20 73 65 6e 74 69 6e 65 6c 20 69 73 20 74 6f 20 | main.job.of.this.sentinel.is.to. |
| 26200 | 6d 6f 6e 69 74 6f 72 20 77 68 65 6e 20 74 68 65 20 53 54 41 54 55 53 20 6f 66 0a 50 52 4f 43 45 | monitor.when.the.STATUS.of.PROCE |
| 26220 | 53 53 20 69 6e 64 69 63 61 74 65 73 20 74 68 65 20 65 6e 64 20 6f 66 20 74 68 65 20 50 52 4f 43 | SS.indicates.the.end.of.the.PROC |
| 26240 | 45 53 53 20 61 6e 64 20 74 6f 20 64 6f 0a 60 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 65 6e 64 27 20 | ESS.and.to.do.`elnode-http-end'. |
| 26260 | 6f 6e 20 74 68 65 20 61 73 73 6f 63 69 61 74 65 64 20 48 54 54 50 20 63 6f 6e 6e 65 63 74 69 6f | on.the.associated.HTTP.connectio |
| 26280 | 6e 20 77 68 65 6e 20 74 68 61 74 0a 68 61 70 70 65 6e 73 2e 22 0a 20 20 28 63 6f 6e 64 0a 20 20 | n.when.that.happens."...(cond... |
| 262a0 | 20 28 28 65 71 75 61 6c 20 73 74 61 74 75 73 20 22 66 69 6e 69 73 68 65 64 5c 6e 22 29 0a 20 20 | .((equal.status."finished\n")... |
| 262c0 | 20 20 28 6c 65 74 20 28 28 68 74 74 70 63 6f 6e 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 70 72 | ..(let.((httpcon.(process-get.pr |
| 262e0 | 6f 63 65 73 73 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 63 6f 6e 29 29 29 0a 20 20 20 20 20 20 28 | ocess.:elnode-httpcon))).......( |
| 26300 | 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 0a 20 20 20 20 20 20 20 22 45 6c 6e 6f 64 65 2d 63 68 69 6c | elnode-error........"Elnode-chil |
| 26320 | 64 2d 70 72 6f 63 65 73 73 2d 73 65 6e 74 69 6e 65 6c 20 53 74 61 74 75 73 20 40 20 66 69 6e 69 | d-process-sentinel.Status.@.fini |
| 26340 | 73 68 65 64 3a 20 25 73 20 2d 3e 20 25 73 20 6f 6e 20 25 73 22 0a 20 20 20 20 20 20 20 28 70 72 | shed:.%s.->.%s.on.%s"........(pr |
| 26360 | 6f 63 65 73 73 2d 73 74 61 74 75 73 20 68 74 74 70 63 6f 6e 29 0a 20 20 20 20 20 20 20 28 70 72 | ocess-status.httpcon)........(pr |
| 26380 | 6f 63 65 73 73 2d 73 74 61 74 75 73 20 70 72 6f 63 65 73 73 29 0a 20 20 20 20 20 20 20 68 74 74 | ocess-status.process)........htt |
| 263a0 | 70 63 6f 6e 29 0a 20 20 20 20 20 20 28 69 66 20 28 6e 6f 74 20 28 65 71 20 27 63 6c 6f 73 65 64 | pcon).......(if.(not.(eq.'closed |
| 263c0 | 20 28 70 72 6f 63 65 73 73 2d 73 74 61 74 75 73 20 68 74 74 70 63 6f 6e 29 29 29 0a 20 20 20 20 | .(process-status.httpcon)))..... |
| 263e0 | 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 | ......(progn.............(elnode |
| 26400 | 2d 68 74 74 70 2d 73 65 6e 64 2d 73 74 72 69 6e 67 20 68 74 74 70 63 6f 6e 20 20 22 22 29 0a 20 | -http-send-string.httpcon.."").. |
| 26420 | 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 73 74 72 69 6e 67 20 | ...........(process-send-string. |
| 26440 | 68 74 74 70 63 6f 6e 20 22 5c 72 5c 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e | httpcon."\r\n").............(eln |
| 26460 | 6f 64 65 2d 2d 68 74 74 70 2d 65 6e 64 20 68 74 74 70 63 6f 6e 29 29 29 29 29 0a 20 20 20 28 28 | ode--http-end.httpcon)))))....(( |
| 26480 | 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 65 78 69 74 65 64 20 61 62 6e 6f 72 6d 61 6c 6c 79 20 | string-match."exited.abnormally. |
| 264a0 | 77 69 74 68 20 63 6f 64 65 20 5c 5c 28 5b 30 2d 39 5d 2b 5c 5c 29 5c 6e 22 20 73 74 61 74 75 73 | with.code.\\([0-9]+\\)\n".status |
| 264c0 | 29 0a 20 20 20 20 28 6c 65 74 20 28 28 68 74 74 70 63 6f 6e 20 28 70 72 6f 63 65 73 73 2d 67 65 | ).....(let.((httpcon.(process-ge |
| 264e0 | 74 20 70 72 6f 63 65 73 73 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 63 6f 6e 29 29 29 0a 20 20 20 | t.process.:elnode-httpcon))).... |
| 26500 | 20 20 20 28 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 20 22 45 6c 6e 6f 64 65 2d 63 68 69 6c 64 2d 70 | ...(elnode-error."Elnode-child-p |
| 26520 | 72 6f 63 65 73 73 2d 73 65 6e 74 69 6e 65 6c 3a 20 25 73 20 6f 6e 20 25 73 22 20 73 74 61 74 75 | rocess-sentinel:.%s.on.%s".statu |
| 26540 | 73 20 68 74 74 70 63 6f 6e 29 0a 20 20 20 20 20 20 28 69 66 20 28 6e 6f 74 20 28 65 71 20 27 63 | s.httpcon).......(if.(not.(eq.'c |
| 26560 | 6c 6f 73 65 64 20 28 70 72 6f 63 65 73 73 2d 73 74 61 74 75 73 20 68 74 74 70 63 6f 6e 29 29 29 | losed.(process-status.httpcon))) |
| 26580 | 0a 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 65 | ...........(progn.............(e |
| 265a0 | 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 65 6e 64 2d 73 74 72 69 6e 67 20 68 74 74 70 63 6f 6e 20 22 | lnode-http-send-string.httpcon." |
| 265c0 | 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d 73 65 6e 64 2d 73 74 72 | ").............(process-send-str |
| 265e0 | 69 6e 67 20 68 74 74 70 63 6f 6e 20 22 5c 72 5c 6e 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ing.httpcon."\r\n")............. |
| 26600 | 28 65 6c 6e 6f 64 65 2d 2d 68 74 74 70 2d 65 6e 64 20 68 74 74 70 63 6f 6e 29 29 29 0a 20 20 20 | (elnode--http-end.httpcon))).... |
| 26620 | 20 20 20 28 64 65 6c 65 74 65 2d 70 72 6f 63 65 73 73 20 70 72 6f 63 65 73 73 29 0a 20 20 20 20 | ...(delete-process.process)..... |
| 26640 | 20 20 28 6b 69 6c 6c 2d 62 75 66 66 65 72 20 28 70 72 6f 63 65 73 73 2d 62 75 66 66 65 72 20 70 | ..(kill-buffer.(process-buffer.p |
| 26660 | 72 6f 63 65 73 73 29 29 29 29 0a 20 20 20 28 74 0a 20 20 20 20 28 65 6c 6e 6f 64 65 2d 65 72 72 | rocess))))....(t.....(elnode-err |
| 26680 | 6f 72 20 22 45 6c 6e 6f 64 65 2d 63 68 6c 69 6c 64 2d 70 72 6f 63 65 73 73 2d 73 65 6e 74 69 6e | or."Elnode-chlild-process-sentin |
| 266a0 | 65 6c 3a 20 25 73 20 6f 6e 20 25 73 22 20 73 74 61 74 75 73 20 70 72 6f 63 65 73 73 29 29 29 29 | el:.%s.on.%s".status.process)))) |
| 266c0 | 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 63 68 69 6c 64 2d 70 72 6f 63 65 73 73 2d 66 | ..(defun.elnode--child-process-f |
| 266e0 | 69 6c 74 65 72 20 28 70 72 6f 63 65 73 73 20 64 61 74 61 29 0a 20 20 22 41 20 67 65 6e 65 72 69 | ilter.(process.data)..."A.generi |
| 26700 | 63 20 66 69 6c 74 65 72 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 65 6c 6e 6f 64 65 20 63 68 69 | c.filter.function.for.elnode.chi |
| 26720 | 6c 64 20 70 72 6f 63 65 73 73 65 73 2e 0a 0a 65 6c 6e 6f 64 65 20 63 68 69 6c 64 20 70 72 6f 63 | ld.processes...elnode.child.proc |
| 26740 | 65 73 73 65 73 20 61 72 65 20 6a 75 73 74 20 65 6d 61 63 73 20 61 73 79 6e 63 68 72 6f 6e 6f 75 | esses.are.just.emacs.asynchronou |
| 26760 | 73 20 70 72 6f 63 65 73 73 65 73 20 74 68 61 74 0a 73 65 6e 64 20 74 68 65 69 72 20 6f 75 74 70 | s.processes.that.send.their.outp |
| 26780 | 75 74 20 74 6f 20 61 6e 20 65 6c 6e 6f 64 65 20 68 74 74 70 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e | ut.to.an.elnode.http.connection. |
| 267a0 | 0a 0a 54 68 69 73 20 66 69 6c 74 65 72 20 66 75 6e 63 74 69 6f 6e 20 64 6f 65 73 20 74 68 65 20 | ..This.filter.function.does.the. |
| 267c0 | 6a 6f 62 20 6f 66 20 74 61 6b 69 6e 67 20 74 68 65 20 6f 75 74 70 75 74 20 66 72 6f 6d 20 74 68 | job.of.taking.the.output.from.th |
| 267e0 | 65 0a 61 73 79 6e 63 20 70 72 6f 63 65 73 73 20 61 6e 64 20 66 69 6e 64 69 6e 67 20 74 68 65 20 | e.async.process.and.finding.the. |
| 26800 | 61 73 73 6f 63 69 61 74 65 64 20 65 6c 6e 6f 64 65 20 68 74 74 70 20 63 6f 6e 6e 65 63 74 69 6f | associated.elnode.http.connectio |
| 26820 | 6e 0a 61 6e 64 20 73 65 6e 64 69 6e 67 20 74 68 65 20 64 61 74 61 20 74 68 65 72 65 2e 22 0a 20 | n.and.sending.the.data.there.".. |
| 26840 | 20 28 6c 65 74 20 28 28 68 74 74 70 63 6f 6e 20 28 70 72 6f 63 65 73 73 2d 67 65 74 20 70 72 6f | .(let.((httpcon.(process-get.pro |
| 26860 | 63 65 73 73 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 63 6f 6e 29 29 29 0a 20 20 20 20 28 65 6c 6e | cess.:elnode-httpcon))).....(eln |
| 26880 | 6f 64 65 2d 65 72 72 6f 72 0a 20 20 20 20 20 22 45 6c 6e 6f 64 65 2d 63 68 69 6c 64 2d 70 72 6f | ode-error......"Elnode-child-pro |
| 268a0 | 63 65 73 73 2d 66 69 6c 74 65 72 20 68 74 74 70 20 73 74 61 74 65 3a 20 25 73 20 64 61 74 61 20 | cess-filter.http.state:.%s.data. |
| 268c0 | 6c 65 6e 67 74 68 3a 20 25 73 20 6f 6e 20 25 73 22 0a 20 20 20 20 20 28 70 72 6f 63 65 73 73 2d | length:.%s.on.%s"......(process- |
| 268e0 | 73 74 61 74 75 73 20 68 74 74 70 63 6f 6e 29 0a 20 20 20 20 20 28 6c 65 6e 67 74 68 20 64 61 74 | status.httpcon)......(length.dat |
| 26900 | 61 29 0a 20 20 20 20 20 68 74 74 70 63 6f 6e 29 0a 20 20 20 20 28 69 66 20 28 6e 6f 74 20 28 65 | a)......httpcon).....(if.(not.(e |
| 26920 | 71 20 27 63 6c 6f 73 65 64 20 28 70 72 6f 63 65 73 73 2d 73 74 61 74 75 73 20 68 74 74 70 63 6f | q.'closed.(process-status.httpco |
| 26940 | 6e 29 29 29 0a 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 65 6e 64 2d 73 | n))).........(elnode-http-send-s |
| 26960 | 74 72 69 6e 67 20 68 74 74 70 63 6f 6e 20 64 61 74 61 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 | tring.httpcon.data))))..(defun.e |
| 26980 | 6c 6e 6f 64 65 2d 63 68 69 6c 64 2d 70 72 6f 63 65 73 73 20 28 68 74 74 70 63 6f 6e 20 70 72 6f | lnode-child-process.(httpcon.pro |
| 269a0 | 67 72 61 6d 20 26 72 65 73 74 20 61 72 67 73 29 0a 20 20 22 52 75 6e 20 74 68 65 20 73 70 65 63 | gram.&rest.args)..."Run.the.spec |
| 269c0 | 69 66 69 65 64 20 50 52 4f 47 52 41 4d 20 61 73 79 6e 63 68 72 6f 6e 6f 75 73 6c 79 20 73 65 6e | ified.PROGRAM.asynchronously.sen |
| 269e0 | 64 69 6e 67 20 6f 75 74 70 75 74 20 74 6f 20 48 54 54 50 43 4f 4e 2e 0a 0a 50 52 4f 47 52 41 4d | ding.output.to.HTTPCON...PROGRAM |
| 26a00 | 20 69 73 20 74 68 65 20 70 61 74 68 20 74 6f 20 74 68 65 20 70 72 6f 67 72 61 6d 20 74 6f 20 72 | .is.the.path.to.the.program.to.r |
| 26a20 | 75 6e 2c 20 74 6f 20 62 65 20 72 65 73 6f 6c 76 65 64 20 62 79 0a 60 73 74 61 72 74 2d 70 72 6f | un,.to.be.resolved.by.`start-pro |
| 26a40 | 63 65 73 73 27 20 69 6e 20 74 68 65 20 75 73 75 61 6c 20 77 61 79 2e 0a 0a 41 52 47 53 20 69 73 | cess'.in.the.usual.way...ARGS.is |
| 26a60 | 20 61 20 6c 69 73 74 20 6f 66 20 61 72 67 75 6d 65 6e 74 73 20 74 6f 20 70 61 73 73 20 74 6f 20 | .a.list.of.arguments.to.pass.to. |
| 26a80 | 74 68 65 20 70 72 6f 67 72 61 6d 2e 0a 0a 49 74 20 69 73 20 4e 4f 54 20 50 4f 53 53 49 42 4c 45 | the.program...It.is.NOT.POSSIBLE |
| 26aa0 | 20 74 6f 20 72 75 6e 20 6d 6f 72 65 20 74 68 61 6e 20 6f 6e 65 20 70 72 6f 63 65 73 73 20 61 74 | .to.run.more.than.one.process.at |
| 26ac0 | 20 61 20 74 69 6d 65 0a 64 69 72 65 63 74 65 64 20 61 74 20 74 68 65 20 73 61 6d 65 20 68 74 74 | .a.time.directed.at.the.same.htt |
| 26ae0 | 70 20 63 6f 6e 6e 65 63 74 69 6f 6e 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 61 72 67 73 0a 20 20 | p.connection."...(let*.((args... |
| 26b00 | 20 20 20 20 20 20 20 20 28 61 70 70 65 6e 64 0a 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 | ........(append............(list |
| 26b20 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 25 73 2d 25 73 22 20 28 70 72 | .............(format."%s-%s".(pr |
| 26b40 | 6f 63 65 73 73 2d 6e 61 6d 65 20 68 74 74 70 63 6f 6e 29 20 70 72 6f 67 72 61 6d 29 0a 20 20 20 | ocess-name.httpcon).program).... |
| 26b60 | 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 20 25 73 2d 25 73 22 20 28 70 72 6f 63 65 | .........(format.".%s-%s".(proce |
| 26b80 | 73 73 2d 6e 61 6d 65 20 68 74 74 70 63 6f 6e 29 20 70 72 6f 67 72 61 6d 29 0a 20 20 20 20 20 20 | ss-name.httpcon).program)....... |
| 26ba0 | 20 20 20 20 20 20 70 72 6f 67 72 61 6d 29 20 61 72 67 73 29 29 0a 20 20 20 20 20 20 20 20 20 28 | ......program).args))..........( |
| 26bc0 | 70 20 28 6c 65 74 20 28 28 70 72 6f 63 65 73 73 2d 63 6f 6e 6e 65 63 74 69 6f 6e 2d 74 79 70 65 | p.(let.((process-connection-type |
| 26be0 | 20 6e 69 6c 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 70 70 6c 79 20 27 73 74 61 | .nil))...............(apply.'sta |
| 26c00 | 72 74 2d 70 72 6f 63 65 73 73 20 61 72 67 73 29 29 29 29 0a 20 20 20 20 28 73 65 74 2d 70 72 6f | rt-process.args)))).....(set-pro |
| 26c20 | 63 65 73 73 2d 63 6f 64 69 6e 67 2d 73 79 73 74 65 6d 20 70 20 27 72 61 77 2d 74 65 78 74 2d 75 | cess-coding-system.p.'raw-text-u |
| 26c40 | 6e 69 78 29 0a 20 20 20 20 3b 3b 20 42 69 6e 64 20 74 68 65 20 68 74 74 70 20 63 6f 6e 6e 65 63 | nix).....;;.Bind.the.http.connec |
| 26c60 | 74 69 6f 6e 20 74 6f 20 74 68 65 20 70 72 6f 63 65 73 73 0a 20 20 20 20 28 70 72 6f 63 65 73 73 | tion.to.the.process.....(process |
| 26c80 | 2d 70 75 74 20 70 20 3a 65 6c 6e 6f 64 65 2d 68 74 74 70 63 6f 6e 20 68 74 74 70 63 6f 6e 29 0a | -put.p.:elnode-httpcon.httpcon). |
| 26ca0 | 20 20 20 20 3b 3b 20 42 69 6e 64 20 74 68 65 20 70 72 6f 63 65 73 73 20 74 6f 20 74 68 65 20 68 | ....;;.Bind.the.process.to.the.h |
| 26cc0 | 74 74 70 20 63 6f 6e 6e 65 63 74 69 6f 6e 0a 20 20 20 20 3b 3b 0a 20 20 20 20 3b 3b 20 57 41 52 | ttp.connection.....;;.....;;.WAR |
| 26ce0 | 4e 49 4e 47 3a 20 74 68 69 73 20 6d 65 61 6e 73 20 79 6f 75 20 63 61 6e 20 6f 6e 6c 79 20 68 61 | NING:.this.means.you.can.only.ha |
| 26d00 | 76 65 20 31 20 63 68 69 6c 64 20 70 72 6f 63 65 73 73 20 61 74 20 61 20 74 69 6d 65 0a 20 20 20 | ve.1.child.process.at.a.time.... |
| 26d20 | 20 28 70 72 6f 63 65 73 73 2d 70 75 74 20 68 74 74 70 63 6f 6e 20 3a 65 6c 6e 6f 64 65 2d 63 68 | .(process-put.httpcon.:elnode-ch |
| 26d40 | 69 6c 64 2d 70 72 6f 63 65 73 73 20 70 29 0a 20 20 20 20 3b 3b 20 53 65 74 75 70 20 74 68 65 20 | ild-process.p).....;;.Setup.the. |
| 26d60 | 66 69 6c 74 65 72 20 61 6e 64 20 74 68 65 20 73 65 6e 74 69 6e 65 6c 20 74 6f 20 64 6f 20 74 68 | filter.and.the.sentinel.to.do.th |
| 26d80 | 65 20 72 69 67 68 74 20 74 68 69 6e 67 20 77 69 74 68 0a 20 20 20 20 3b 3b 20 69 6e 63 6f 6d 6d | e.right.thing.with.....;;.incomm |
| 26da0 | 69 6e 67 20 64 61 74 61 20 61 6e 64 20 73 69 67 6e 61 6c 73 0a 20 20 20 20 28 73 65 74 2d 70 72 | ing.data.and.signals.....(set-pr |
| 26dc0 | 6f 63 65 73 73 2d 66 69 6c 74 65 72 20 70 20 27 65 6c 6e 6f 64 65 2d 2d 63 68 69 6c 64 2d 70 72 | ocess-filter.p.'elnode--child-pr |
| 26de0 | 6f 63 65 73 73 2d 66 69 6c 74 65 72 29 0a 20 20 20 20 28 73 65 74 2d 70 72 6f 63 65 73 73 2d 73 | ocess-filter).....(set-process-s |
| 26e00 | 65 6e 74 69 6e 65 6c 20 70 20 27 65 6c 6e 6f 64 65 2d 2d 63 68 69 6c 64 2d 70 72 6f 63 65 73 73 | entinel.p.'elnode--child-process |
| 26e20 | 2d 73 65 6e 74 69 6e 65 6c 29 0a 20 20 20 20 28 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 20 22 45 6c | -sentinel).....(elnode-error."El |
| 26e40 | 6e 6f 64 65 2d 63 68 69 6c 64 2d 70 72 6f 63 65 73 73 20 69 6e 69 74 20 25 73 22 20 68 74 74 70 | node-child-process.init.%s".http |
| 26e60 | 63 6f 6e 29 29 29 0a 0a 0a 3b 3b 20 46 69 6c 65 20 6d 61 6e 61 67 65 6d 65 6e 74 0a 0a 28 64 65 | con)))...;;.File.management..(de |
| 26e80 | 66 63 75 73 74 6f 6d 20 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 66 69 6c 65 2d 70 72 6f 67 72 61 6d | fcustom.elnode-send-file-program |
| 26ea0 | 20 22 2f 62 69 6e 2f 63 61 74 22 0a 20 20 22 54 68 65 20 70 72 6f 67 72 61 6d 20 74 6f 20 75 73 | ."/bin/cat"..."The.program.to.us |
| 26ec0 | 65 20 66 6f 72 20 73 65 6e 64 69 6e 67 20 66 69 6c 65 73 2e 0a 0a 41 6c 74 65 72 69 6e 67 20 74 | e.for.sending.files...Altering.t |
| 26ee0 | 68 69 73 20 69 73 20 6e 6f 74 20 72 65 63 6f 6d 65 6e 64 65 64 20 62 75 74 20 69 74 20 6d 61 79 | his.is.not.recomended.but.it.may |
| 26f00 | 20 62 65 20 61 20 67 6f 6f 64 20 68 6f 6f 6b 20 66 6f 72 0a 63 65 72 74 61 69 6e 20 74 79 70 65 | .be.a.good.hook.for.certain.type |
| 26f20 | 73 20 6f 66 20 64 65 62 75 67 67 69 6e 67 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 65 6c 6e 6f 64 | s.of.debugging."...:group.'elnod |
| 26f40 | 65 0a 20 20 3a 74 79 70 65 20 27 28 73 74 72 69 6e 67 29 29 0a 0a 28 64 65 66 76 61 72 20 65 6c | e...:type.'(string))..(defvar.el |
| 26f60 | 6e 6f 64 65 2d 72 65 70 6c 61 63 65 6d 65 6e 74 73 2d 70 61 74 74 65 72 6e 20 22 3c 21 23 23 45 | node-replacements-pattern."<!##E |
| 26f80 | 20 5c 5c 28 2e 2a 3f 5c 5c 29 20 45 23 23 21 3e 22 0a 20 20 22 54 68 65 20 72 65 67 65 78 20 75 | .\\(.*?\\).E##!>"..."The.regex.u |
| 26fa0 | 73 65 64 20 66 6f 72 20 72 65 70 6c 61 63 69 6e 67 20 74 68 69 6e 67 73 2e 0a 0a 54 68 65 20 64 | sed.for.replacing.things...The.d |
| 26fc0 | 65 66 61 75 6c 74 20 72 65 67 65 78 20 69 73 20 72 61 74 68 65 72 20 62 61 72 6f 71 75 65 2e 20 | efault.regex.is.rather.baroque.. |
| 26fe0 | 20 54 68 69 73 20 69 73 20 62 65 63 61 75 73 65 20 69 74 20 6e 65 65 64 73 20 74 6f 0a 62 65 20 | .This.is.because.it.needs.to.be. |
| 27000 | 71 75 69 74 65 20 75 6e 69 71 75 65 20 61 6e 64 20 74 68 65 72 65 20 61 72 65 20 61 20 6c 6f 74 | quite.unique.and.there.are.a.lot |
| 27020 | 20 6f 66 20 64 69 66 66 65 72 65 6e 74 20 73 6f 72 74 73 20 6f 66 20 74 68 69 6e 67 73 0a 6c 69 | .of.different.sorts.of.things.li |
| 27040 | 6b 65 20 74 68 69 73 20 74 6f 20 62 65 20 75 6e 69 71 75 65 20 66 72 6f 6d 2e 22 29 0a 0a 28 64 | ke.this.to.be.unique.from.")..(d |
| 27060 | 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 62 75 66 66 65 72 2d 74 65 6d 70 6c 61 74 65 20 28 66 69 | efun.elnode--buffer-template.(fi |
| 27080 | 6c 65 2d 62 75 66 20 72 65 70 6c 61 63 65 6d 65 6e 74 73 29 0a 20 20 22 54 65 6d 70 6c 61 74 65 | le-buf.replacements)..."Template |
| 270a0 | 20 72 65 6e 64 65 72 20 61 20 62 75 66 66 65 72 20 61 6e 64 20 72 65 74 75 72 6e 20 61 20 63 6f | .render.a.buffer.and.return.a.co |
| 270c0 | 70 79 2e 0a 0a 46 49 4c 45 2d 42 55 46 20 69 73 20 74 68 65 20 73 6f 75 72 63 65 20 62 75 66 66 | py...FILE-BUF.is.the.source.buff |
| 270e0 | 65 72 20 74 6f 20 75 73 65 2c 20 74 65 6d 70 6c 61 74 65 20 73 65 63 74 69 6f 6e 73 20 6d 61 72 | er.to.use,.template.sections.mar |
| 27100 | 6b 65 64 20 75 70 20 6c 69 6b 65 3a 0a 0a 20 3c 21 23 23 45 20 5c 5c 28 2e 2a 3f 5c 5c 29 20 45 | ked.up.like:...<!##E.\\(.*?\\).E |
| 27120 | 23 23 21 3e 0a 0a 77 69 6c 6c 20 62 65 20 72 65 70 6c 61 63 65 64 20 77 69 74 68 20 61 20 76 61 | ##!>..will.be.replaced.with.a.va |
| 27140 | 6c 75 65 20 6c 6f 6f 6b 65 64 20 75 70 20 69 6e 20 52 45 50 4c 41 43 45 4d 45 4e 54 53 2e 0a 0a | lue.looked.up.in.REPLACEMENTS... |
| 27160 | 52 45 50 4c 41 43 45 4d 45 4e 54 53 20 69 73 20 65 69 74 68 65 72 20 61 20 68 61 73 68 74 61 62 | REPLACEMENTS.is.either.a.hashtab |
| 27180 | 6c 65 20 6f 72 20 61 6e 20 61 73 73 6f 63 69 61 74 69 6f 6e 20 6c 69 73 74 2e 0a 0a 46 6f 72 20 | le.or.an.association.list...For. |
| 271a0 | 65 78 61 6d 70 6c 65 3a 0a 0a 20 3c 74 69 74 6c 65 3e 3c 21 23 23 45 20 6d 79 2d 74 69 74 6c 65 | example:...<title><!##E.my-title |
| 271c0 | 20 45 23 23 21 3e 3c 2f 74 69 74 6c 65 3e 0a 20 3c 70 3e 42 79 20 3c 21 23 23 45 20 6d 79 2d 6e | .E##!></title>..<p>By.<!##E.my-n |
| 271e0 | 61 6d 65 20 45 23 23 21 3e 2e 3c 2f 70 3e 0a 0a 77 69 74 68 20 74 68 65 20 52 45 50 4c 41 43 45 | ame.E##!>.</p>..with.the.REPLACE |
| 27200 | 4d 45 4e 54 53 20 62 65 69 6e 67 3a 0a 0a 20 20 6d 79 2d 74 69 74 6c 65 20 3d 3e 20 41 6c 6c 20 | MENTS.being:....my-title.=>.All. |
| 27220 | 74 68 69 6e 67 73 20 45 6c 6e 6f 64 65 21 0a 20 20 6d 79 2d 6e 61 6d 65 20 3d 3e 20 4e 69 63 20 | things.Elnode!...my-name.=>.Nic. |
| 27240 | 46 65 72 72 69 65 72 0a 0a 77 6f 75 6c 64 20 72 65 73 75 6c 74 20 69 6e 20 74 68 65 20 73 74 72 | Ferrier..would.result.in.the.str |
| 27260 | 69 6e 67 3a 0a 0a 20 20 3c 74 69 74 6c 65 3e 41 6c 6c 20 74 68 69 6e 67 73 20 45 6c 6e 6f 64 65 | ing:....<title>All.things.Elnode |
| 27280 | 21 3c 2f 74 69 74 6c 65 3e 0a 20 20 3c 70 3e 42 79 20 4e 69 63 20 46 65 72 72 69 65 72 3c 2f 70 | !</title>...<p>By.Nic.Ferrier</p |
| 272a0 | 3e 0a 0a 62 65 69 6e 67 20 72 65 74 75 72 6e 65 64 2e 22 0a 20 20 28 77 69 74 68 2d 63 75 72 72 | >..being.returned."...(with-curr |
| 272c0 | 65 6e 74 2d 62 75 66 66 65 72 20 66 69 6c 65 2d 62 75 66 0a 20 20 20 20 28 72 65 70 6c 61 63 65 | ent-buffer.file-buf.....(replace |
| 272e0 | 2d 72 65 67 65 78 70 2d 69 6e 2d 73 74 72 69 6e 67 0a 20 20 20 20 20 65 6c 6e 6f 64 65 2d 72 65 | -regexp-in-string......elnode-re |
| 27300 | 70 6c 61 63 65 6d 65 6e 74 73 2d 70 61 74 74 65 72 6e 0a 20 20 20 20 20 28 6c 61 6d 62 64 61 20 | placements-pattern......(lambda. |
| 27320 | 28 6d 61 74 63 68 65 64 29 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 6d 61 74 63 68 2d 76 61 | (matched)........(let.((match-va |
| 27340 | 72 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 2d 6e 6f 2d 70 72 6f 70 65 72 74 69 65 73 20 31 20 | r.(match-string-no-properties.1. |
| 27360 | 6d 61 74 63 68 65 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a 20 20 20 20 20 20 | matched)))..........(cond....... |
| 27380 | 20 20 20 20 20 28 28 68 61 73 68 2d 74 61 62 6c 65 2d 70 20 72 65 70 6c 61 63 65 6d 65 6e 74 73 | .....((hash-table-p.replacements |
| 273a0 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 74 68 61 73 68 20 6d 61 74 63 68 2d 76 61 72 | ).............(gethash.match-var |
| 273c0 | 20 72 65 70 6c 61 63 65 6d 65 6e 74 73 20 22 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 74 | .replacements.""))............(t |
| 273e0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 50 72 65 73 75 6d 65 20 69 74 27 73 20 61 6e 20 | .............;;.Presume.it's.an. |
| 27400 | 61 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 0a 20 20 20 20 20 20 20 20 20 20 | alist.............(or........... |
| 27420 | 20 20 20 28 61 73 73 6f 63 2d 64 65 66 61 75 6c 74 20 6d 61 74 63 68 2d 76 61 72 20 72 65 70 6c | ...(assoc-default.match-var.repl |
| 27440 | 61 63 65 6d 65 6e 74 73 20 6e 69 6c 20 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 22 22 29 | acements.nil.t).............."") |
| 27460 | 29 29 29 29 0a 20 20 20 20 20 28 62 75 66 66 65 72 2d 73 75 62 73 74 72 69 6e 67 2d 6e 6f 2d 70 | ))))......(buffer-substring-no-p |
| 27480 | 72 6f 70 65 72 74 69 65 73 20 28 70 6f 69 6e 74 2d 6d 69 6e 29 28 70 6f 69 6e 74 2d 6d 61 78 29 | roperties.(point-min)(point-max) |
| 274a0 | 29 29 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 65 6c 6e 6f 64 65 2d 77 65 62 73 65 72 76 65 | ))))..(defcustom.elnode-webserve |
| 274c0 | 72 2d 76 69 73 69 74 2d 66 69 6c 65 20 28 65 71 20 73 79 73 74 65 6d 2d 74 79 70 65 20 27 77 69 | r-visit-file.(eq.system-type.'wi |
| 274e0 | 6e 64 6f 77 73 2d 6e 74 29 0a 20 20 22 57 68 65 74 68 65 72 20 74 68 65 20 77 65 62 73 65 72 76 | ndows-nt)..."Whether.the.webserv |
| 27500 | 65 72 20 72 65 61 64 73 20 66 69 6c 65 73 20 62 79 20 76 69 73 69 74 69 6e 67 20 62 75 66 66 65 | er.reads.files.by.visiting.buffe |
| 27520 | 72 73 20 6f 72 20 6e 6f 74 2e 0a 0a 57 68 65 6e 20 73 65 74 20 74 6f 20 60 74 27 20 66 69 6c 65 | rs.or.not...When.set.to.`t'.file |
| 27540 | 73 20 74 6f 20 62 65 20 73 65 6e 74 20 77 69 74 68 20 74 68 65 20 60 65 6c 6e 6f 64 65 2d 73 65 | s.to.be.sent.with.the.`elnode-se |
| 27560 | 6e 64 2d 66 69 6c 65 27 20 61 72 65 0a 72 65 61 64 20 69 6e 74 6f 20 45 6d 61 63 73 20 75 73 69 | nd-file'.are.read.into.Emacs.usi |
| 27580 | 6e 67 20 60 66 69 6e 64 2d 66 69 6c 65 27 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 65 6c 6e 6f 64 | ng.`find-file'."...:group.'elnod |
| 275a0 | 65 0a 20 20 3a 74 79 70 65 20 27 62 6f 6f 6c 65 61 6e 29 0a 0a 28 64 65 66 76 61 72 20 65 6c 6e | e...:type.'boolean)..(defvar.eln |
| 275c0 | 6f 64 65 2d 72 65 70 6c 61 63 65 6d 65 6e 74 73 2d 68 74 74 70 63 6f 6e 20 6e 69 6c 0a 20 20 22 | ode-replacements-httpcon.nil..." |
| 275e0 | 54 68 69 73 20 69 73 20 62 6f 75 6e 64 20 62 79 20 60 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 66 69 | This.is.bound.by.`elnode-send-fi |
| 27600 | 6c 65 27 20 77 68 65 6e 20 64 6f 69 6e 67 20 72 65 70 6c 61 63 65 6d 65 6e 74 73 2e 0a 0a 49 74 | le'.when.doing.replacements...It |
| 27620 | 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 75 73 65 64 20 6f 74 68 65 72 77 69 73 65 2e 22 29 | .should.not.be.used.otherwise.") |
| 27640 | 0a 0a 28 64 65 66 76 61 72 20 65 6c 6e 6f 64 65 2d 72 65 70 6c 61 63 65 6d 65 6e 74 73 2d 74 61 | ..(defvar.elnode-replacements-ta |
| 27660 | 72 67 65 74 66 69 6c 65 20 6e 69 6c 0a 20 20 22 54 68 69 73 20 69 73 20 62 6f 75 6e 64 20 62 79 | rgetfile.nil..."This.is.bound.by |
| 27680 | 20 60 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 66 69 6c 65 27 20 77 68 65 6e 20 64 6f 69 6e 67 20 72 | .`elnode-send-file'.when.doing.r |
| 276a0 | 65 70 6c 61 63 65 6d 65 6e 74 73 2e 0a 0a 49 74 20 73 68 6f 75 6c 64 20 6e 6f 74 20 62 65 20 75 | eplacements...It.should.not.be.u |
| 276c0 | 73 65 64 20 6f 74 68 65 72 77 69 73 65 2e 22 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d | sed.otherwise.")..(defun.elnode- |
| 276e0 | 2d 72 66 63 31 31 32 33 2d 64 61 74 65 20 28 74 69 6d 65 29 0a 20 20 22 52 65 74 75 72 6e 20 54 | -rfc1123-date.(time)..."Return.T |
| 27700 | 49 4d 45 20 69 6e 20 52 46 43 31 31 32 33 20 66 6f 72 6d 61 74 2c 20 73 75 69 74 61 62 6c 65 20 | IME.in.RFC1123.format,.suitable. |
| 27720 | 66 6f 72 20 48 54 54 50 20 64 61 74 65 73 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 64 61 79 2d 6e | for.HTTP.dates."...(let*.((day-n |
| 27740 | 61 6d 65 73 20 27 28 22 53 75 6e 22 20 22 4d 6f 6e 22 20 22 54 75 65 22 20 22 57 65 64 22 20 22 | ames.'("Sun"."Mon"."Tue"."Wed"." |
| 27760 | 54 68 75 22 20 22 46 72 69 22 20 22 53 61 74 22 29 29 0a 09 20 28 6d 6f 6e 74 68 2d 6e 61 6d 65 | Thu"."Fri"."Sat"))...(month-name |
| 27780 | 73 20 27 28 22 4a 61 6e 22 20 22 46 65 62 22 20 22 4d 61 72 22 20 22 41 70 72 22 20 22 4d 61 79 | s.'("Jan"."Feb"."Mar"."Apr"."May |
| 277a0 | 22 20 22 4a 75 6e 22 0a 09 09 09 22 4a 75 6c 22 20 22 41 75 67 22 20 22 53 65 70 22 20 22 4f 63 | "."Jun"...."Jul"."Aug"."Sep"."Oc |
| 277c0 | 74 22 20 22 4e 6f 76 22 20 22 44 65 63 22 29 29 0a 09 20 28 64 65 63 6f 64 65 64 2d 74 69 6d 65 | t"."Nov"."Dec"))...(decoded-time |
| 277e0 | 20 28 64 65 63 6f 64 65 2d 74 69 6d 65 20 74 69 6d 65 29 29 0a 09 20 28 64 61 79 20 28 6e 74 68 | .(decode-time.time))...(day.(nth |
| 27800 | 20 28 6e 74 68 20 36 20 64 65 63 6f 64 65 64 2d 74 69 6d 65 29 20 64 61 79 2d 6e 61 6d 65 73 29 | .(nth.6.decoded-time).day-names) |
| 27820 | 29 0a 09 20 28 6d 6f 6e 74 68 20 28 6e 74 68 20 28 2d 20 28 6e 74 68 20 34 20 64 65 63 6f 64 65 | )...(month.(nth.(-.(nth.4.decode |
| 27840 | 64 2d 74 69 6d 65 29 20 31 29 20 6d 6f 6e 74 68 2d 6e 61 6d 65 73 29 29 29 0a 20 20 20 20 28 66 | d-time).1).month-names))).....(f |
| 27860 | 6f 72 6d 61 74 20 22 25 73 2c 20 25 73 20 25 73 20 25 73 22 0a 09 20 20 20 20 64 61 79 0a 09 20 | ormat."%s,.%s.%s.%s"......day... |
| 27880 | 20 20 20 28 66 6f 72 6d 61 74 2d 74 69 6d 65 2d 73 74 72 69 6e 67 20 22 25 64 22 20 74 69 6d 65 | ...(format-time-string."%d".time |
| 278a0 | 20 74 29 0a 09 20 20 20 20 6d 6f 6e 74 68 0a 09 20 20 20 20 28 66 6f 72 6d 61 74 2d 74 69 6d 65 | .t)......month......(format-time |
| 278c0 | 2d 73 74 72 69 6e 67 20 22 25 59 20 25 48 3a 25 4d 3a 25 53 20 47 4d 54 22 20 74 69 6d 65 20 74 | -string."%Y.%H:%M:%S.GMT".time.t |
| 278e0 | 29 29 29 29 0a 0a 28 64 65 66 61 6c 69 61 73 20 27 65 6c 6e 6f 64 65 2d 72 66 63 31 31 32 33 2d | ))))..(defalias.'elnode-rfc1123- |
| 27900 | 64 61 74 65 20 27 65 6c 6e 6f 64 65 2d 2d 72 66 63 31 31 32 33 2d 64 61 74 65 29 0a 0a 28 64 65 | date.'elnode--rfc1123-date)..(de |
| 27920 | 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 66 69 6c 65 2d 6d 6f 64 69 66 69 65 64 2d 74 69 6d 65 20 28 | fun.elnode--file-modified-time.( |
| 27940 | 66 69 6c 65 29 0a 20 20 22 47 65 74 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 74 69 6d 65 20 66 | file)..."Get.modification.time.f |
| 27960 | 6f 72 20 46 49 4c 45 2e 22 0a 20 20 28 6e 74 68 20 35 20 28 66 69 6c 65 2d 61 74 74 72 69 62 75 | or.FILE."...(nth.5.(file-attribu |
| 27980 | 74 65 73 20 66 69 6c 65 29 29 29 0a 0a 28 64 65 66 61 6c 69 61 73 20 27 65 6c 6e 6f 64 65 2d 66 | tes.file)))..(defalias.'elnode-f |
| 279a0 | 69 6c 65 2d 6d 6f 64 69 66 69 65 64 2d 74 69 6d 65 20 27 65 6c 6e 6f 64 65 2d 2d 66 69 6c 65 2d | ile-modified-time.'elnode--file- |
| 279c0 | 6d 6f 64 69 66 69 65 64 2d 74 69 6d 65 29 0a 0a 28 64 65 66 75 6e 2a 20 65 6c 6e 6f 64 65 2d 73 | modified-time)..(defun*.elnode-s |
| 279e0 | 65 6e 64 2d 66 69 6c 65 20 28 68 74 74 70 63 6f 6e 20 74 61 72 67 65 74 66 69 6c 65 0a 20 20 20 | end-file.(httpcon.targetfile.... |
| 27a00 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 26 | ...............................& |
| 27a20 | 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | key............................. |
| 27a40 | 20 20 20 20 20 20 70 72 65 61 6d 62 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ......preamble.................. |
| 27a60 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 69 6d 65 2d 74 79 70 65 73 0a 20 20 20 20 | .................mime-types..... |
| 27a80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 | ..............................re |
| 27aa0 | 70 6c 61 63 65 6d 65 6e 74 73 29 0a 20 20 22 53 65 6e 64 20 74 68 65 20 54 41 52 47 45 54 46 49 | placements)..."Send.the.TARGETFI |
| 27ac0 | 4c 45 20 74 6f 20 74 68 65 20 48 54 54 50 43 4f 4e 2e 0a 0a 49 66 20 74 68 65 20 54 41 52 47 45 | LE.to.the.HTTPCON...If.the.TARGE |
| 27ae0 | 54 46 49 4c 45 20 69 73 20 72 65 6c 61 74 69 76 65 20 74 68 65 6e 20 72 65 73 6f 6c 76 65 20 69 | TFILE.is.relative.then.resolve.i |
| 27b00 | 74 20 76 69 61 20 74 68 65 20 63 75 72 72 65 6e 74 0a 60 6c 6f 61 64 2d 66 69 6c 65 2d 6e 61 6d | t.via.the.current.`load-file-nam |
| 27b20 | 65 27 20 6f 72 20 60 62 75 66 66 65 72 2d 66 69 6c 65 2d 6e 61 6d 65 27 20 6f 72 20 60 64 65 66 | e'.or.`buffer-file-name'.or.`def |
| 27b40 | 61 75 6c 74 2d 64 69 72 65 63 74 6f 72 79 27 2e 0a 0a 57 41 52 4e 49 4e 47 3a 20 74 68 69 73 20 | ault-directory'...WARNING:.this. |
| 27b60 | 72 65 73 6f 6c 75 74 69 6f 6e 20 6f 72 64 65 72 20 69 73 20 6c 69 6b 65 6c 79 20 74 6f 20 63 68 | resolution.order.is.likely.to.ch |
| 27b80 | 61 6e 67 65 20 62 65 63 61 75 73 65 2c 0a 65 73 70 65 63 69 61 6c 6c 79 20 77 68 65 6e 20 64 65 | ange.because,.especially.when.de |
| 27ba0 | 76 65 6c 6f 70 69 6e 67 20 60 64 65 66 61 75 6c 74 2d 64 69 72 65 63 74 6f 72 79 27 20 63 61 6e | veloping.`default-directory'.can |
| 27bc0 | 20 62 65 20 71 75 69 74 65 0a 72 61 6e 64 6f 6d 20 28 63 68 61 6e 67 65 20 62 75 66 66 65 72 2c | .be.quite.random.(change.buffer, |
| 27be0 | 20 63 68 61 6e 67 65 20 60 64 65 66 61 75 6c 74 2d 64 69 72 65 63 74 6f 72 79 27 29 2e 0a 0a 4f | .change.`default-directory')...O |
| 27c00 | 70 74 69 6f 6e 61 6c 6c 79 20 79 6f 75 20 6d 61 79 20 73 70 65 63 69 66 79 20 65 78 74 72 61 20 | ptionally.you.may.specify.extra. |
| 27c20 | 6b 65 79 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 3a 74 0a 0a 3a 50 52 45 41 4d 42 4c 45 20 61 | keyword.arguments:t..:PREAMBLE.a |
| 27c40 | 20 73 74 72 69 6e 67 20 6f 66 20 64 61 74 61 20 74 6f 20 73 65 6e 64 20 62 65 66 6f 72 65 20 74 | .string.of.data.to.send.before.t |
| 27c60 | 68 65 20 66 69 6c 65 2e 0a 0a 3a 50 52 45 41 4d 42 4c 45 20 69 73 20 6d 6f 73 74 20 75 73 65 66 | he.file...:PREAMBLE.is.most.usef |
| 27c80 | 75 6c 20 66 6f 72 20 70 72 65 66 69 78 69 6e 67 20 73 79 6e 74 61 78 20 74 6f 20 73 6f 6d 65 20 | ul.for.prefixing.syntax.to.some. |
| 27ca0 | 6f 74 68 65 72 20 66 69 6c 65 2c 0a 66 6f 72 20 65 78 61 6d 70 6c 65 20 79 6f 75 20 63 6f 75 6c | other.file,.for.example.you.coul |
| 27cc0 | 64 20 70 72 65 66 69 78 20 61 6e 20 58 4d 4c 20 66 69 6c 65 20 77 69 74 68 20 58 53 4c 20 74 72 | d.prefix.an.XML.file.with.XSL.tr |
| 27ce0 | 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 0a 73 74 61 74 65 6d 65 6e 74 73 20 73 6f 20 61 20 63 6f 6d | ansformation.statements.so.a.com |
| 27d00 | 70 6c 69 61 6e 74 20 75 73 65 72 2d 61 67 65 6e 74 20 77 69 6c 6c 20 74 72 61 6e 73 66 6f 72 6d | pliant.user-agent.will.transform |
| 27d20 | 20 74 68 65 20 58 4d 4c 2e 0a 0a 3a 4d 49 4d 45 2d 54 59 50 45 53 20 69 73 20 61 6e 20 6f 70 74 | .the.XML...:MIME-TYPES.is.an.opt |
| 27d40 | 69 6f 6e 61 6c 20 61 6c 69 73 74 20 6f 66 20 4d 49 4d 45 20 74 79 70 65 20 6d 61 70 70 69 6e 67 | ional.alist.of.MIME.type.mapping |
| 27d60 | 73 20 74 6f 20 68 65 6c 70 0a 72 65 73 6f 6c 76 65 20 74 68 65 20 74 79 70 65 20 6f 66 20 61 20 | s.to.help.resolve.the.type.of.a. |
| 27d80 | 66 69 6c 65 2e 0a 0a 49 66 20 3a 52 45 50 4c 41 43 45 4d 45 4e 54 53 20 69 73 20 73 70 65 63 69 | file...If.:REPLACEMENTS.is.speci |
| 27da0 | 66 69 65 64 20 69 74 20 73 68 6f 75 6c 64 20 62 65 20 61 20 68 61 73 68 2d 74 61 62 6c 65 20 6f | fied.it.should.be.a.hash-table.o |
| 27dc0 | 72 20 61 6e 0a 61 73 73 6f 63 69 61 74 69 6f 6e 20 6c 69 73 74 20 75 73 65 64 20 74 6f 20 73 75 | r.an.association.list.used.to.su |
| 27de0 | 70 70 6c 79 20 76 61 6c 75 65 73 20 66 6f 72 20 74 65 6d 70 6c 61 74 69 6e 67 2e 20 20 57 68 65 | pply.values.for.templating...Whe |
| 27e00 | 6e 0a 74 65 6d 70 6c 61 74 69 6e 67 20 69 73 20 73 70 65 63 69 66 69 65 64 20 74 68 65 20 74 61 | n.templating.is.specified.the.ta |
| 27e20 | 72 67 65 74 66 69 6c 65 20 69 73 20 6e 6f 74 20 73 65 6e 74 20 64 69 72 65 63 74 6c 79 20 62 75 | rgetfile.is.not.sent.directly.bu |
| 27e40 | 74 0a 6f 70 65 6e 65 64 20 69 6e 20 45 6d 61 63 73 20 61 73 20 61 20 62 75 66 66 65 72 20 61 6e | t.opened.in.Emacs.as.a.buffer.an |
| 27e60 | 64 20 74 72 61 6e 73 66 6f 72 6d 65 64 20 74 68 72 6f 75 67 68 20 74 68 65 0a 74 65 6d 70 6c 61 | d.transformed.through.the.templa |
| 27e80 | 74 69 6e 67 20 73 79 73 74 65 6d 20 62 65 66 6f 72 65 20 62 65 69 6e 67 20 73 65 6e 74 2e 20 20 | ting.system.before.being.sent... |
| 27ea0 | 53 65 65 0a 60 65 6c 6e 6f 64 65 2d 2d 62 75 66 66 65 72 2d 74 65 6d 70 6c 61 74 65 27 20 66 6f | See.`elnode--buffer-template'.fo |
| 27ec0 | 72 20 64 65 74 61 69 6c 73 20 6f 66 20 74 65 6d 70 6c 61 74 69 6e 67 2e 0a 0a 52 45 50 4c 41 43 | r.details.of.templating...REPLAC |
| 27ee0 | 45 4d 45 4e 54 53 20 63 61 6e 20 6f 70 74 69 6f 6e 61 6c 6c 79 20 62 65 20 61 20 66 75 6e 63 74 | EMENTS.can.optionally.be.a.funct |
| 27f00 | 69 6f 6e 20 69 6e 20 77 68 69 63 68 20 63 61 73 65 20 74 68 65 0a 72 65 74 75 72 6e 20 76 61 6c | ion.in.which.case.the.return.val |
| 27f20 | 75 65 20 69 73 20 65 78 70 65 63 74 65 64 20 74 6f 20 62 65 20 74 68 65 20 68 61 73 68 2d 74 61 | ue.is.expected.to.be.the.hash-ta |
| 27f40 | 62 6c 65 20 6f 72 20 61 6c 69 73 74 20 66 6f 72 20 74 68 65 0a 76 61 72 69 61 62 6c 65 73 2e 20 | ble.or.alist.for.the.variables.. |
| 27f60 | 20 54 68 65 20 66 75 6e 63 74 69 6f 6e 20 73 68 6f 75 6c 64 20 68 61 76 65 20 6e 6f 20 61 72 67 | .The.function.should.have.no.arg |
| 27f80 | 75 6d 65 6e 74 73 20 62 75 74 20 74 77 6f 0a 76 61 72 69 61 62 6c 65 73 20 61 72 65 20 62 6f 75 | uments.but.two.variables.are.bou |
| 27fa0 | 6e 64 20 64 75 72 69 6e 67 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 27 73 20 65 78 65 63 75 74 69 | nd.during.the.function's.executi |
| 27fc0 | 6f 6e 0a 60 65 6c 6e 6f 64 65 2d 72 65 70 6c 61 63 65 6d 65 6e 74 73 2d 68 74 74 70 63 6f 6e 27 | on.`elnode-replacements-httpcon' |
| 27fe0 | 20 69 73 20 74 68 65 20 60 68 74 74 70 63 6f 6e 27 20 61 6e 64 0a 60 65 6c 6e 6f 64 65 2d 72 65 | .is.the.`httpcon'.and.`elnode-re |
| 28000 | 70 6c 61 63 65 6d 65 6e 74 73 2d 74 61 72 67 65 74 66 69 6c 65 27 20 69 73 20 74 68 65 20 74 61 | placements-targetfile'.is.the.ta |
| 28020 | 72 67 65 74 66 69 6c 65 20 74 6f 20 62 65 0a 64 65 6c 69 76 65 72 65 64 2e 22 0a 20 20 28 6c 65 | rgetfile.to.be.delivered."...(le |
| 28040 | 74 20 28 28 66 69 6c 65 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6e 6f 74 20 28 | t.((filename..........(if.(not.( |
| 28060 | 66 69 6c 65 2d 6e 61 6d 65 2d 61 62 73 6f 6c 75 74 65 2d 70 20 74 61 72 67 65 74 66 69 6c 65 29 | file-name-absolute-p.targetfile) |
| 28080 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 69 6c 65 2d 72 65 6c 61 74 69 76 65 2d 6e 61 | )..............(file-relative-na |
| 280a0 | 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61 72 67 65 74 66 69 6c 65 0a 20 20 20 20 | me...............targetfile..... |
| 280c0 | 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 64 69 72 20 28 6f 72 20 6c 6f 61 64 2d 66 69 | ..........(let.((dir.(or.load-fi |
| 280e0 | 6c 65 2d 6e 61 6d 65 20 62 75 66 66 65 72 2d 66 69 6c 65 2d 6e 61 6d 65 29 29 29 0a 20 20 20 20 | le-name.buffer-file-name)))..... |
| 28100 | 20 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 64 69 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ............(if.dir............. |
| 28120 | 20 20 20 20 20 20 20 20 28 64 69 72 65 63 74 6f 72 79 2d 66 69 6c 65 2d 6e 61 6d 65 20 64 69 72 | ........(directory-file-name.dir |
| 28140 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 2d 64 69 72 65 | )...................default-dire |
| 28160 | 63 74 6f 72 79 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 74 61 72 67 65 74 66 69 6c 65 29 29 | ctory)))............targetfile)) |
| 28180 | 29 0a 20 20 20 20 28 69 66 20 28 6e 6f 74 20 28 66 69 6c 65 2d 65 78 69 73 74 73 2d 70 20 66 69 | ).....(if.(not.(file-exists-p.fi |
| 281a0 | 6c 65 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 46 49 58 4d 45 3a 20 54 68 69 73 20 | lename)).........;;.FIXME:.This. |
| 281c0 | 6e 65 65 64 73 20 69 6d 70 72 6f 76 69 6e 67 20 73 6f 20 77 65 20 63 61 6e 20 68 61 6e 64 6c 65 | needs.improving.so.we.can.handle |
| 281e0 | 20 74 68 65 20 34 30 34 0a 20 20 20 20 20 20 20 20 3b 3b 20 54 68 69 73 20 66 75 6e 63 74 69 6f | .the.404.........;;.This.functio |
| 28200 | 6e 20 73 68 6f 75 6c 64 20 72 61 69 73 65 20 61 6e 20 65 78 63 65 70 74 69 6f 6e 3f 0a 20 20 20 | n.should.raise.an.exception?.... |
| 28220 | 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 34 30 34 20 68 74 74 70 63 6f 6e 29 0a 20 | .....(elnode-send-404.httpcon).. |
| 28240 | 20 20 20 20 20 28 6c 65 74 20 28 28 6d 69 6d 65 74 79 70 65 0a 20 20 20 20 20 20 20 20 20 20 20 | .....(let.((mimetype............ |
| 28260 | 20 20 28 6f 72 20 28 77 68 65 6e 20 28 6c 69 73 74 70 20 6d 69 6d 65 2d 74 79 70 65 73 29 0a 20 | ..(or.(when.(listp.mime-types).. |
| 28280 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 72 20 28 72 61 73 73 6f 63 0a 20 | ..................(car.(rassoc.. |
| 282a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 69 6c 65 2d 6e 61 | ........................(file-na |
| 282c0 | 6d 65 2d 65 78 74 65 6e 73 69 6f 6e 20 74 61 72 67 65 74 66 69 6c 65 29 0a 20 20 20 20 20 20 20 | me-extension.targetfile)........ |
| 282e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 69 6d 65 2d 74 79 70 65 73 29 29 29 0a | ..................mime-types))). |
| 28300 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6d 6d 2d 64 65 66 61 75 6c 74 2d 66 69 6c | .................(mm-default-fil |
| 28320 | 65 2d 65 6e 63 6f 64 69 6e 67 20 74 61 72 67 65 74 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 20 | e-encoding.targetfile).......... |
| 28340 | 20 20 20 20 20 20 20 20 22 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6f 63 74 65 74 2d 73 74 72 65 61 | ........"application/octet-strea |
| 28360 | 6d 22 29 29 29 0a 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 74 61 72 74 | m"))).........(elnode-http-start |
| 28380 | 0a 20 20 20 20 20 20 20 20 20 68 74 74 70 63 6f 6e 20 32 30 30 0a 20 20 20 20 20 20 20 20 20 60 | ..........httpcon.200..........` |
| 283a0 | 28 22 43 6f 6e 74 65 6e 74 2d 74 79 70 65 22 20 2e 20 2c 6d 69 6d 65 74 79 70 65 29 0a 20 20 20 | ("Content-type"...,mimetype).... |
| 283c0 | 20 20 20 20 20 20 60 28 22 4c 61 73 74 2d 4d 6f 64 69 66 69 65 64 22 20 2e 20 2c 28 65 6c 6e 6f | ......`("Last-Modified"...,(elno |
| 283e0 | 64 65 2d 2d 72 66 63 31 31 32 33 2d 64 61 74 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | de--rfc1123-date................ |
| 28400 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 66 69 6c 65 2d 6d 6f | ................(elnode--file-mo |
| 28420 | 64 69 66 69 65 64 2d 74 69 6d 65 20 74 61 72 67 65 74 66 69 6c 65 29 29 29 29 0a 20 20 20 20 20 | dified-time.targetfile))))...... |
| 28440 | 20 20 20 28 77 68 65 6e 20 70 72 65 61 6d 62 6c 65 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 | ...(when.preamble.(elnode-http-s |
| 28460 | 65 6e 64 2d 73 74 72 69 6e 67 20 68 74 74 70 63 6f 6e 20 70 72 65 61 6d 62 6c 65 29 29 0a 20 20 | end-string.httpcon.preamble))... |
| 28480 | 20 20 20 20 20 20 28 69 66 20 28 6f 72 20 65 6c 6e 6f 64 65 2d 77 65 62 73 65 72 76 65 72 2d 76 | ......(if.(or.elnode-webserver-v |
| 284a0 | 69 73 69 74 2d 66 69 6c 65 20 72 65 70 6c 61 63 65 6d 65 6e 74 73 29 0a 20 20 20 20 20 20 20 20 | isit-file.replacements)......... |
| 284c0 | 20 20 20 20 28 6c 65 74 20 28 28 66 69 6c 65 2d 62 75 66 20 28 66 69 6e 64 2d 66 69 6c 65 2d 6e | ....(let.((file-buf.(find-file-n |
| 284e0 | 6f 73 65 6c 65 63 74 20 66 69 6c 65 6e 61 6d 65 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | oselect.filename)))............. |
| 28500 | 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 72 65 74 75 72 6e 0a 20 20 20 20 20 20 20 20 20 20 | ..(elnode-http-return........... |
| 28520 | 20 20 20 20 20 68 74 74 70 63 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e | .....httpcon................(eln |
| 28540 | 6f 64 65 2d 2d 62 75 66 66 65 72 2d 74 65 6d 70 6c 61 74 65 0a 20 20 20 20 20 20 20 20 20 20 20 | ode--buffer-template............ |
| 28560 | 20 20 20 20 20 66 69 6c 65 2d 62 75 66 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b | .....file-buf.................;; |
| 28580 | 20 52 65 70 6c 61 63 65 6d 65 6e 74 73 20 68 61 6e 64 6c 69 6e 67 0a 20 20 20 20 20 20 20 20 20 | .Replacements.handling.......... |
| 285a0 | 20 20 20 20 20 20 20 28 69 66 20 28 66 75 6e 63 74 69 6f 6e 70 20 72 65 70 6c 61 63 65 6d 65 6e | .......(if.(functionp.replacemen |
| 285c0 | 74 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 65 | ts).....................(let.((e |
| 285e0 | 6c 6e 6f 64 65 2d 72 65 70 6c 61 63 65 6d 65 6e 74 73 2d 68 74 74 70 63 6f 6e 20 68 74 74 70 63 | lnode-replacements-httpcon.httpc |
| 28600 | 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 | on)...........................(e |
| 28620 | 6c 6e 6f 64 65 2d 72 65 70 6c 61 63 65 6d 65 6e 74 73 2d 74 61 72 67 65 74 66 69 6c 65 20 74 61 | lnode-replacements-targetfile.ta |
| 28640 | 72 67 65 74 66 69 6c 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | rgetfile))...................... |
| 28660 | 20 28 66 75 6e 63 61 6c 6c 20 72 65 70 6c 61 63 65 6d 65 6e 74 73 29 29 0a 20 20 20 20 20 20 20 | .(funcall.replacements))........ |
| 28680 | 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 70 6c 61 63 65 6d 65 6e 74 73 29 29 29 29 0a 20 20 | .............replacements))))... |
| 286a0 | 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 63 68 69 6c 64 2d 70 72 6f 63 65 73 73 0a | ..........(elnode-child-process. |
| 286c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 68 74 74 70 63 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 | .............httpcon............ |
| 286e0 | 20 20 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 66 69 6c 65 2d 70 72 6f 67 72 61 6d 0a 20 20 20 20 20 | ..elnode-send-file-program...... |
| 28700 | 20 20 20 20 20 20 20 20 28 65 78 70 61 6e 64 2d 66 69 6c 65 2d 6e 61 6d 65 20 74 61 72 67 65 74 | ........(expand-file-name.target |
| 28720 | 66 69 6c 65 29 29 29 29 29 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 65 6c 6e 6f 64 65 2d 6d 65 | file)))))))..(defmacro.elnode-me |
| 28740 | 74 68 6f 64 20 28 68 74 74 70 63 6f 6e 20 26 72 65 73 74 20 6d 65 74 68 6f 64 2d 6d 61 70 70 69 | thod.(httpcon.&rest.method-mappi |
| 28760 | 6e 67 73 29 0a 20 20 22 4d 61 70 20 74 68 65 20 48 54 54 50 20 6d 65 74 68 6f 64 2e 0a 0a 57 72 | ngs)..."Map.the.HTTP.method...Wr |
| 28780 | 69 74 65 20 63 6f 64 65 20 6c 69 6b 65 20 74 68 69 73 3a 0a 0a 20 28 65 6c 6e 6f 64 65 2d 6d 65 | ite.code.like.this:...(elnode-me |
| 287a0 | 74 68 6f 64 0a 20 20 28 47 45 54 0a 20 20 20 28 63 6f 64 65 29 0a 20 20 20 28 6d 6f 72 65 20 63 | thod...(GET....(code)....(more.c |
| 287c0 | 6f 64 65 29 29 0a 20 20 28 50 4f 53 54 0a 20 20 20 28 64 69 66 66 65 72 65 6e 74 20 63 6f 64 65 | ode))...(POST....(different.code |
| 287e0 | 29 0a 20 20 20 28 65 76 65 6e 6d 6f 72 65 63 6f 64 65 29 29 29 22 0a 20 20 28 64 65 63 6c 61 72 | )....(evenmorecode)))"...(declar |
| 28800 | 65 0a 20 20 20 28 64 65 62 75 67 20 28 73 65 78 70 20 26 72 65 73 74 20 28 73 65 78 70 20 26 72 | e....(debug.(sexp.&rest.(sexp.&r |
| 28820 | 65 73 74 20 66 6f 72 6d 29 29 29 0a 20 20 20 28 69 6e 64 65 6e 74 20 31 29 29 0a 20 20 28 6c 65 | est.form)))....(indent.1))...(le |
| 28840 | 74 2a 20 28 28 76 61 72 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 76 22 29 29 0a 20 20 20 20 | t*.((var.(make-symbol."v"))..... |
| 28860 | 20 20 20 20 20 28 63 6f 6e 76 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 63 6f 6e 22 29 29 29 | .....(conv.(make-symbol."con"))) |
| 28880 | 0a 20 20 20 20 20 60 28 6c 65 74 2a 20 28 28 2c 63 6f 6e 76 20 2c 68 74 74 70 63 6f 6e 29 0a 20 | ......`(let*.((,conv.,httpcon).. |
| 288a0 | 20 20 20 20 20 20 20 20 20 20 20 20 28 2c 76 61 72 20 28 69 6e 74 65 72 6e 20 28 65 6c 6e 6f 64 | ............(,var.(intern.(elnod |
| 288c0 | 65 2d 68 74 74 70 2d 6d 65 74 68 6f 64 20 2c 63 6f 6e 76 29 29 29 29 0a 20 20 20 20 20 20 20 28 | e-http-method.,conv))))........( |
| 288e0 | 63 6f 6e 64 0a 20 20 20 20 20 20 20 20 2c 40 28 6c 6f 6f 70 0a 20 20 20 20 20 20 20 20 20 20 20 | cond.........,@(loop............ |
| 28900 | 66 6f 72 20 64 20 69 6e 20 6d 65 74 68 6f 64 2d 6d 61 70 70 69 6e 67 73 0a 20 20 20 20 20 20 20 | for.d.in.method-mappings........ |
| 28920 | 20 20 20 20 75 6e 6c 65 73 73 20 28 65 71 20 28 63 61 72 20 64 29 20 74 29 0a 20 20 20 20 20 20 | ....unless.(eq.(car.d).t)....... |
| 28940 | 20 20 20 20 20 63 6f 6c 6c 65 63 74 20 60 28 28 65 71 20 2c 76 61 72 20 28 71 75 6f 74 65 20 2c | .....collect.`((eq.,var.(quote., |
| 28960 | 28 63 61 72 20 64 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c | (car.d)))......................, |
| 28980 | 40 28 63 64 72 20 64 29 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 49 66 20 77 65 20 64 6f 6e 27 | @(cdr.d))).........;;.If.we.don' |
| 289a0 | 74 20 6d 61 70 20 74 68 65 6e 20 73 65 6e 64 20 61 6e 20 65 72 72 6f 72 0a 20 20 20 20 20 20 20 | t.map.then.send.an.error........ |
| 289c0 | 20 3b 3b 0a 20 20 20 20 20 20 20 20 3b 3b 20 70 72 6f 62 61 62 6c 79 20 73 68 6f 75 6c 64 20 62 | .;;.........;;.probably.should.b |
| 289e0 | 65 20 34 30 35 0a 20 20 20 20 20 20 20 20 28 74 0a 20 20 20 20 20 20 20 20 20 2c 40 28 6f 72 20 | e.405.........(t..........,@(or. |
| 28a00 | 28 63 64 72 20 28 61 73 73 6f 63 20 74 20 6d 65 74 68 6f 64 2d 6d 61 70 70 69 6e 67 73 29 29 0a | (cdr.(assoc.t.method-mappings)). |
| 28a20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 60 28 28 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 35 30 | ...............`((elnode-send-50 |
| 28a40 | 30 20 2c 63 6f 6e 76 29 29 29 29 29 29 29 29 0a 0a 0a 3b 3b 20 4d 61 6b 65 20 73 69 6d 70 6c 65 | 0.,conv))))))))...;;.Make.simple |
| 28a60 | 20 68 61 6e 64 6c 65 72 73 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 0a 0a 28 64 65 66 75 6e 20 | .handlers.automatically..(defun. |
| 28a80 | 65 6c 6e 6f 64 65 2d 6d 61 6b 65 2d 72 65 64 69 72 65 63 74 65 72 20 28 6c 6f 63 61 74 69 6f 6e | elnode-make-redirecter.(location |
| 28aa0 | 20 26 6f 70 74 69 6f 6e 61 6c 20 74 79 70 65 29 0a 20 20 22 4d 61 6b 65 20 61 20 68 61 6e 64 6c | .&optional.type)..."Make.a.handl |
| 28ac0 | 65 72 20 74 68 61 74 20 77 69 6c 6c 20 72 65 64 69 72 65 63 74 20 74 6f 20 4c 4f 43 41 54 49 4f | er.that.will.redirect.to.LOCATIO |
| 28ae0 | 4e 2e 0a 0a 4f 70 74 69 6f 6e 61 6c 6c 79 2c 20 75 73 65 20 74 68 65 20 73 70 65 63 69 66 69 65 | N...Optionally,.use.the.specifie |
| 28b00 | 64 20 54 59 50 45 20 61 73 20 74 68 65 20 73 74 61 74 75 73 20 63 6f 64 65 2c 20 65 67 3a 0a 0a | d.TYPE.as.the.status.code,.eg:.. |
| 28b20 | 20 28 65 6c 6e 6f 64 65 2d 6d 61 6b 65 2d 72 65 64 69 72 65 63 74 20 5c 22 68 74 74 70 3a 2f 2f | .(elnode-make-redirect.\"http:// |
| 28b40 | 73 6f 6d 65 68 6f 73 74 2e 63 6f 6d 2f 5c 22 20 33 30 31 29 22 0a 20 20 28 6c 61 6d 62 64 61 20 | somehost.com/\".301)"...(lambda. |
| 28b60 | 28 68 74 74 70 63 6f 6e 29 0a 20 20 20 20 28 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 72 65 64 69 72 | (httpcon).....(elnode-send-redir |
| 28b80 | 65 63 74 20 68 74 74 70 63 6f 6e 20 6c 6f 63 61 74 69 6f 6e 20 74 79 70 65 29 29 29 0a 0a 28 64 | ect.httpcon.location.type)))..(d |
| 28ba0 | 65 66 75 6e 2a 20 65 6c 6e 6f 64 65 2d 6d 61 6b 65 2d 73 65 6e 64 2d 66 69 6c 65 20 20 28 66 69 | efun*.elnode-make-send-file..(fi |
| 28bc0 | 6c 65 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | lename.......................... |
| 28be0 | 20 20 20 20 20 20 20 26 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .......&key..................... |
| 28c00 | 20 20 20 20 20 20 20 20 20 20 20 20 70 72 65 61 6d 62 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 | ............preamble............ |
| 28c20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d 69 6d 65 2d 74 79 70 65 73 0a | .....................mime-types. |
| 28c40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
| 28c60 | 72 65 70 6c 61 63 65 6d 65 6e 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | replacements.................... |
| 28c80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 70 6c 61 63 65 6d 65 6e 74 73 2d 70 61 74 74 65 72 | .............replacements-patter |
| 28ca0 | 6e 29 0a 20 20 22 4d 61 6b 65 20 61 20 68 61 6e 64 6c 65 72 20 74 68 61 74 20 77 69 6c 6c 20 73 | n)..."Make.a.handler.that.will.s |
| 28cc0 | 65 72 76 65 20 61 20 73 69 6e 67 6c 65 20 46 49 4c 45 4e 41 4d 45 2e 0a 0a 49 66 20 74 68 65 20 | erve.a.single.FILENAME...If.the. |
| 28ce0 | 46 49 4c 45 4e 41 4d 45 20 69 73 20 72 65 6c 61 74 69 76 65 20 74 68 65 6e 20 69 74 20 69 73 20 | FILENAME.is.relative.then.it.is. |
| 28d00 | 72 65 73 6f 6c 76 65 64 20 61 67 61 69 6e 73 74 20 74 68 65 0a 70 61 63 6b 61 67 65 27 73 20 60 | resolved.against.the.package's.` |
| 28d20 | 6c 6f 61 64 2d 66 69 6c 65 2d 6e 61 6d 65 27 2e 0a 0a 4f 70 74 69 6f 6e 61 6c 6c 79 20 4d 49 4d | load-file-name'...Optionally.MIM |
| 28d40 | 45 2d 54 59 50 45 53 20 61 6e 64 20 6f 74 68 65 72 20 61 64 64 69 74 69 6f 6e 61 6c 20 6b 65 79 | E-TYPES.and.other.additional.key |
| 28d60 | 77 6f 72 64 20 61 72 67 75 6d 65 6e 74 73 20 6d 61 79 20 62 65 0a 73 70 65 63 69 66 69 65 64 20 | word.arguments.may.be.specified. |
| 28d80 | 61 6e 64 20 61 72 65 20 70 61 73 73 65 64 20 74 68 72 6f 75 67 68 2c 20 73 65 65 20 60 65 6c 6e | and.are.passed.through,.see.`eln |
| 28da0 | 6f 64 65 2d 73 65 6e 64 2d 66 69 6c 65 27 20 66 6f 72 0a 64 65 74 61 69 6c 73 2e 0a 0a 54 68 65 | ode-send-file'.for.details...The |
| 28dc0 | 20 52 45 50 4c 41 43 45 4d 45 4e 54 53 20 70 61 72 61 6d 65 74 65 72 20 63 61 6e 20 62 65 20 61 | .REPLACEMENTS.parameter.can.be.a |
| 28de0 | 20 66 75 6e 63 74 69 6f 6e 20 74 68 61 74 20 72 65 74 75 72 6e 73 20 61 0a 68 61 73 68 2d 74 61 | .function.that.returns.a.hash-ta |
| 28e00 | 62 6c 65 20 6f 72 20 61 6c 69 73 74 2c 20 74 68 69 73 20 69 73 20 76 65 72 79 20 75 73 65 66 75 | ble.or.alist,.this.is.very.usefu |
| 28e20 | 6c 20 66 6f 72 20 74 68 69 73 20 66 75 6e 63 74 69 6f 6e 0a 62 65 63 61 75 73 65 20 69 74 20 61 | l.for.this.function.because.it.a |
| 28e40 | 6c 6c 6f 77 73 20 64 79 6e 61 6d 69 63 20 76 61 72 69 61 62 6c 65 73 20 74 6f 20 62 65 20 64 65 | llows.dynamic.variables.to.be.de |
| 28e60 | 66 69 6e 65 64 2e 20 20 41 67 61 69 6e 2c 20 73 65 65 0a 60 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d | fined...Again,.see.`elnode-send- |
| 28e80 | 66 69 6c 65 27 20 66 6f 72 20 66 75 6c 6c 20 64 6f 63 75 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 | file'.for.full.documentation.of. |
| 28ea0 | 74 68 69 73 20 66 65 61 74 75 72 65 2e 0a 0a 54 68 65 20 52 45 50 4c 41 43 45 4d 45 4e 54 53 2d | this.feature...The.REPLACEMENTS- |
| 28ec0 | 50 41 54 54 45 52 4e 20 63 61 6e 20 62 65 20 75 73 65 64 20 74 6f 20 73 65 74 20 74 68 65 20 72 | PATTERN.can.be.used.to.set.the.r |
| 28ee0 | 65 67 65 78 20 75 73 65 64 20 74 6f 0a 6d 61 74 63 68 20 72 65 70 6c 61 63 65 6d 65 6e 74 73 2e | egex.used.to.match.replacements. |
| 28f00 | 20 20 53 65 65 20 60 65 6c 6e 6f 64 65 2d 72 65 70 6c 61 63 65 6d 65 6e 74 73 2d 70 61 74 74 65 | ..See.`elnode-replacements-patte |
| 28f20 | 72 6e 27 2e 22 0a 20 20 28 6c 61 6d 62 64 61 20 28 68 74 74 70 63 6f 6e 29 0a 20 20 20 20 28 6c | rn'."...(lambda.(httpcon).....(l |
| 28f40 | 65 74 20 28 28 65 6c 6e 6f 64 65 2d 72 65 70 6c 61 63 65 6d 65 6e 74 73 2d 70 61 74 74 65 72 6e | et.((elnode-replacements-pattern |
| 28f60 | 0a 20 20 20 20 20 20 20 20 20 20 20 28 6f 72 20 72 65 70 6c 61 63 65 6d 65 6e 74 73 2d 70 61 74 | ............(or.replacements-pat |
| 28f80 | 74 65 72 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 6e 6f 64 65 2d 72 65 70 6c 61 | tern................elnode-repla |
| 28fa0 | 63 65 6d 65 6e 74 73 2d 70 61 74 74 65 72 6e 29 29 29 0a 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 | cements-pattern))).......(elnode |
| 28fc0 | 2d 73 65 6e 64 2d 66 69 6c 65 0a 20 20 20 20 20 20 20 68 74 74 70 63 6f 6e 0a 20 20 20 20 20 20 | -send-file........httpcon....... |
| 28fe0 | 20 66 69 6c 65 6e 61 6d 65 0a 20 20 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 6d 69 6d | .filename........:mime-types.mim |
| 29000 | 65 2d 74 79 70 65 73 0a 20 20 20 20 20 20 20 3a 70 72 65 61 6d 62 6c 65 20 70 72 65 61 6d 62 6c | e-types........:preamble.preambl |
| 29020 | 65 0a 20 20 20 20 20 20 20 3a 72 65 70 6c 61 63 65 6d 65 6e 74 73 20 72 65 70 6c 61 63 65 6d 65 | e........:replacements.replaceme |
| 29040 | 6e 74 73 29 29 29 29 0a 0a 0a 3b 3b 20 44 6f 63 72 6f 6f 74 20 70 72 6f 74 65 63 74 69 6f 6e 0a | nts))))...;;.Docroot.protection. |
| 29060 | 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 2d 75 6e 64 65 72 2d 64 6f 63 72 6f 6f 74 2d 70 20 | .(defun.elnode--under-docroot-p. |
| 29080 | 28 74 61 72 67 65 74 2d 66 69 6c 65 20 64 6f 63 2d 72 6f 6f 74 20 26 6f 70 74 69 6f 6e 61 6c 20 | (target-file.doc-root.&optional. |
| 290a0 | 69 67 6e 6f 72 65 2d 6d 69 73 73 69 6e 67 29 0a 20 20 22 49 73 20 74 68 65 20 54 41 52 47 45 54 | ignore-missing)..."Is.the.TARGET |
| 290c0 | 2d 46 49 4c 45 20 75 6e 64 65 72 20 74 68 65 20 44 4f 43 2d 52 4f 4f 54 3f 0a 4f 70 74 69 6f 6e | -FILE.under.the.DOC-ROOT?.Option |
| 290e0 | 61 6c 20 61 72 67 75 6d 65 6e 74 20 49 47 4e 4f 52 45 2d 4d 49 53 53 49 4e 47 20 77 69 6c 6c 20 | al.argument.IGNORE-MISSING.will. |
| 29100 | 69 6e 68 69 62 69 74 20 63 68 65 63 6b 73 20 66 6f 72 20 6d 69 73 73 69 6e 67 20 66 69 6c 65 73 | inhibit.checks.for.missing.files |
| 29120 | 2e 22 0a 20 20 28 6c 65 74 20 28 28 64 6f 63 72 6f 6f 74 0a 20 20 20 20 20 20 20 20 20 28 64 69 | ."...(let.((docroot..........(di |
| 29140 | 72 65 63 74 6f 72 79 2d 66 69 6c 65 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 28 65 78 70 | rectory-file-name...........(exp |
| 29160 | 61 6e 64 2d 66 69 6c 65 2d 6e 61 6d 65 20 64 6f 63 2d 72 6f 6f 74 29 29 29 29 0a 20 20 20 20 28 | and-file-name.doc-root)))).....( |
| 29180 | 61 6e 64 0a 20 20 20 20 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 0a 20 20 20 20 20 20 28 66 6f | and......(string-match.......(fo |
| 291a0 | 72 6d 61 74 20 22 5e 25 73 5c 5c 28 24 5c 5c 7c 2f 5c 5c 29 22 20 64 6f 63 72 6f 6f 74 29 0a 20 | rmat."^%s\\($\\|/\\)".docroot).. |
| 291c0 | 20 20 20 20 20 74 61 72 67 65 74 2d 66 69 6c 65 29 0a 20 20 20 20 20 28 6f 72 20 69 67 6e 6f 72 | .....target-file)......(or.ignor |
| 291e0 | 65 2d 6d 69 73 73 69 6e 67 20 28 66 69 6c 65 2d 65 78 69 73 74 73 2d 70 20 74 61 72 67 65 74 2d | e-missing.(file-exists-p.target- |
| 29200 | 66 69 6c 65 29 29 29 29 29 0a 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 6e 6f 74 2d 66 6f | file)))))...(defun.elnode-not-fo |
| 29220 | 75 6e 64 20 28 68 74 74 70 63 6f 6e 20 74 61 72 67 65 74 2d 66 69 6c 65 29 0a 20 20 22 60 65 6c | und.(httpcon.target-file)..."`el |
| 29240 | 6e 6f 64 65 2d 64 6f 63 72 6f 6f 74 2d 66 6f 72 27 20 63 61 6c 6c 73 20 74 68 69 73 20 77 68 65 | node-docroot-for'.calls.this.whe |
| 29260 | 6e 20 74 68 65 20 64 6f 63 20 77 61 73 20 6e 6f 74 20 66 6f 75 6e 64 2e 0a 0a 59 6f 75 20 63 61 | n.the.doc.was.not.found...You.ca |
| 29280 | 6e 20 6f 76 65 72 72 69 64 65 20 74 68 69 73 20 69 6e 20 74 65 73 74 73 20 74 6f 20 68 61 76 65 | n.override.this.in.tests.to.have |
| 292a0 | 20 69 6e 74 65 72 65 73 74 69 6e 67 20 65 66 66 65 63 74 73 2e 20 20 42 79 0a 64 65 66 61 75 6c | .interesting.effects...By.defaul |
| 292c0 | 74 20 69 74 20 6a 75 73 74 20 63 61 6c 6c 73 20 60 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 34 30 34 | t.it.just.calls.`elnode-send-404 |
| 292e0 | 27 2e 22 0a 20 20 28 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 34 30 34 20 68 74 74 70 63 6f 6e 29 29 | '."...(elnode-send-404.httpcon)) |
| 29300 | 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 6d 6f 64 69 66 69 65 64 2d 73 69 6e 63 65 20 28 | ..(defun.elnode-modified-since.( |
| 29320 | 68 74 74 70 63 6f 6e 20 6d 6f 64 69 66 69 65 64 2d 74 69 6d 65 29 0a 20 20 22 49 6d 70 6c 65 6d | httpcon.modified-time)..."Implem |
| 29340 | 65 6e 74 20 74 68 65 20 48 54 54 50 20 49 66 2d 4d 6f 64 69 66 69 65 64 2d 53 69 6e 63 65 20 74 | ent.the.HTTP.If-Modified-Since.t |
| 29360 | 65 73 74 2e 0a 0a 4d 4f 44 49 46 49 45 44 2d 54 49 4d 45 20 69 73 20 74 68 65 20 74 69 6d 65 20 | est...MODIFIED-TIME.is.the.time. |
| 29380 | 74 68 65 20 72 65 73 6f 75 72 63 65 20 77 61 73 20 6d 6f 64 69 66 69 65 64 2c 20 66 6f 72 20 65 | the.resource.was.modified,.for.e |
| 293a0 | 78 61 6d 70 6c 65 0a 61 20 66 69 6c 65 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 74 69 6d 65 2e | xample.a.file.modification.time. |
| 293c0 | 22 0a 20 20 28 6c 65 74 2a 20 28 28 6d 6f 64 69 66 69 65 64 2d 73 69 6e 63 65 0a 20 20 20 20 20 | "...(let*.((modified-since...... |
| 293e0 | 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 68 65 61 64 65 72 0a 20 20 20 20 20 20 20 | .....(elnode-http-header........ |
| 29400 | 20 20 20 20 68 74 74 70 63 6f 6e 20 27 69 66 2d 6d 6f 64 69 66 69 65 64 2d 73 69 6e 63 65 20 3a | ....httpcon.'if-modified-since.: |
| 29420 | 74 69 6d 65 29 29 29 0a 20 20 20 20 28 61 6e 64 0a 20 20 20 20 20 6d 6f 64 69 66 69 65 64 2d 73 | time))).....(and......modified-s |
| 29440 | 69 6e 63 65 0a 20 20 20 20 20 28 74 69 6d 65 2d 6c 65 73 73 2d 70 20 6d 6f 64 69 66 69 65 64 2d | ince......(time-less-p.modified- |
| 29460 | 74 69 6d 65 20 6d 6f 64 69 66 69 65 64 2d 73 69 6e 63 65 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 | time.modified-since))))..(defun. |
| 29480 | 65 6c 6e 6f 64 65 2d 63 61 63 68 65 64 2d 70 20 28 68 74 74 70 63 6f 6e 20 74 61 72 67 65 74 2d | elnode-cached-p.(httpcon.target- |
| 294a0 | 66 69 6c 65 29 0a 20 20 22 49 73 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20 54 41 52 47 45 54 | file)..."Is.the.specified.TARGET |
| 294c0 | 2d 46 49 4c 45 20 6f 6c 64 65 72 20 74 68 61 6e 20 74 68 65 20 48 54 54 50 43 4f 4e 3f 0a 0a 54 | -FILE.older.than.the.HTTPCON?..T |
| 294e0 | 68 69 73 20 75 73 65 73 20 60 65 6c 6e 6f 64 65 2d 6d 6f 64 69 66 69 65 64 2d 73 69 6e 63 65 27 | his.uses.`elnode-modified-since' |
| 29500 | 2e 22 0a 20 20 28 65 6c 6e 6f 64 65 2d 6d 6f 64 69 66 69 65 64 2d 73 69 6e 63 65 0a 20 20 20 68 | ."...(elnode-modified-since....h |
| 29520 | 74 74 70 63 6f 6e 20 28 65 6c 6e 6f 64 65 2d 2d 66 69 6c 65 2d 6d 6f 64 69 66 69 65 64 2d 74 69 | ttpcon.(elnode--file-modified-ti |
| 29540 | 6d 65 20 74 61 72 67 65 74 2d 66 69 6c 65 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 | me.target-file)))..(defun.elnode |
| 29560 | 2d 63 61 63 68 65 64 20 28 68 74 74 70 63 6f 6e 29 0a 20 20 22 60 65 6c 6e 6f 64 65 2d 64 6f 63 | -cached.(httpcon)..."`elnode-doc |
| 29580 | 72 6f 6f 74 2d 66 6f 72 27 20 63 61 6c 6c 73 20 74 68 69 73 20 77 68 65 6e 20 74 68 65 20 72 65 | root-for'.calls.this.when.the.re |
| 295a0 | 73 6f 75 72 63 65 73 20 77 61 73 20 63 61 63 68 65 64 2e 0a 0a 42 79 20 64 65 66 61 75 6c 74 20 | sources.was.cached...By.default. |
| 295c0 | 69 74 20 6a 75 73 74 20 63 61 6c 6c 73 20 60 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 73 74 61 74 75 | it.just.calls.`elnode-send-statu |
| 295e0 | 73 27 20 77 69 74 68 20 33 30 34 2e 22 0a 20 20 28 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 73 74 61 | s'.with.304."...(elnode-send-sta |
| 29600 | 74 75 73 20 68 74 74 70 63 6f 6e 20 33 30 34 29 29 0a 0a 28 64 65 66 76 61 72 20 65 6c 6e 6f 64 | tus.httpcon.304))..(defvar.elnod |
| 29620 | 65 2d 64 6f 63 72 6f 6f 74 2d 66 6f 72 2d 6e 6f 2d 34 30 34 20 6e 69 6c 0a 20 20 22 57 68 65 6e | e-docroot-for-no-404.nil..."When |
| 29640 | 20 73 65 74 20 74 6f 20 74 72 75 65 20 60 65 6c 6e 6f 64 65 2d 64 6f 63 72 6f 6f 74 2d 66 6f 72 | .set.to.true.`elnode-docroot-for |
| 29660 | 27 20 64 6f 65 73 6e 27 74 20 63 68 65 63 6b 20 66 6f 72 20 6d 69 73 73 69 6e 67 20 66 69 6c 65 | '.doesn't.check.for.missing.file |
| 29680 | 73 2e 22 29 0a 0a 28 64 65 66 76 61 72 20 65 6c 6e 6f 64 65 2d 64 6f 63 72 6f 6f 74 2d 66 6f 72 | s.")..(defvar.elnode-docroot-for |
| 296a0 | 2d 6e 6f 2d 63 61 63 68 65 20 6e 69 6c 0a 20 20 22 57 68 65 6e 20 73 65 74 20 74 6f 20 74 72 75 | -no-cache.nil..."When.set.to.tru |
| 296c0 | 65 20 60 65 6c 6e 6f 64 65 2d 64 6f 63 72 6f 6f 74 2d 66 6f 72 27 20 64 6f 65 73 6e 27 74 20 63 | e.`elnode-docroot-for'.doesn't.c |
| 296e0 | 68 65 63 6b 20 66 6f 72 20 63 61 63 68 65 64 20 66 69 6c 65 73 2e 22 29 0a 0a 28 64 65 66 6d 61 | heck.for.cached.files.")..(defma |
| 29700 | 63 72 6f 20 65 6c 6e 6f 64 65 2d 64 6f 63 72 6f 6f 74 2d 66 6f 72 20 28 64 6f 63 2d 72 6f 6f 74 | cro.elnode-docroot-for.(doc-root |
| 29720 | 20 77 69 74 68 20 74 61 72 67 65 74 2d 66 69 6c 65 2d 76 61 72 0a 20 20 20 20 20 20 20 20 20 20 | .with.target-file-var........... |
| 29740 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 6e 20 | .............................on. |
| 29760 | 68 74 74 70 63 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | httpcon......................... |
| 29780 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 20 26 72 65 73 74 20 68 61 6e 64 6c 69 6e 67 | ...............do.&rest.handling |
| 297a0 | 29 0a 20 20 22 44 6f 63 72 6f 6f 74 20 70 72 6f 74 65 63 74 69 6f 6e 20 66 6f 72 20 45 6c 6e 6f | )..."Docroot.protection.for.Elno |
| 297c0 | 64 65 20 68 61 6e 64 6c 65 72 73 2e 0a 0a 54 65 73 74 20 74 68 65 20 70 61 74 68 20 72 65 71 75 | de.handlers...Test.the.path.requ |
| 297e0 | 65 73 74 65 64 20 69 6e 20 48 54 54 50 43 4f 4e 20 69 73 20 73 61 66 65 6c 79 20 75 6e 64 65 72 | ested.in.HTTPCON.is.safely.under |
| 29800 | 20 74 68 65 20 44 4f 43 2d 52 4f 4f 54 0a 73 70 65 63 69 66 69 65 64 2c 20 62 69 6e 64 20 74 68 | .the.DOC-ROOT.specified,.bind.th |
| 29820 | 65 20 54 41 52 47 45 54 2d 46 49 4c 45 2d 56 41 52 20 74 6f 20 74 68 65 20 72 65 73 75 6c 74 69 | e.TARGET-FILE-VAR.to.the.resulti |
| 29840 | 6e 67 20 65 78 70 61 6e 64 65 64 0a 66 69 6c 65 20 6e 61 6d 65 20 61 6e 64 20 65 78 65 63 75 74 | ng.expanded.file.name.and.execut |
| 29860 | 65 20 74 68 65 20 48 41 4e 44 4c 49 4e 47 20 63 6f 64 65 2e 0a 0a 46 6f 72 20 65 78 61 6d 70 6c | e.the.HANDLING.code...For.exampl |
| 29880 | 65 3a 0a 0a 20 20 28 65 6c 6e 6f 64 65 2d 64 6f 63 72 6f 6f 74 2d 66 6f 72 0a 20 20 20 20 20 20 | e:....(elnode-docroot-for....... |
| 298a0 | 20 20 5c 22 7e 2f 77 6f 72 6b 5c 22 0a 20 20 20 20 20 20 20 20 77 69 74 68 20 66 69 6c 65 2d 76 | ..\"~/work\".........with.file-v |
| 298c0 | 61 72 0a 20 20 20 20 20 20 20 20 6f 6e 20 68 74 74 70 63 6f 6e 0a 20 20 20 20 20 20 20 20 64 6f | ar.........on.httpcon.........do |
| 298e0 | 0a 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 66 69 6c 65 20 68 74 74 70 63 | .........(elnode-send-file.httpc |
| 29900 | 6f 6e 20 66 69 6c 65 2d 76 61 72 29 29 0a 0a 63 68 65 63 6b 73 20 61 6e 79 20 72 65 73 6f 75 72 | on.file-var))..checks.any.resour |
| 29920 | 63 65 20 72 65 71 75 65 73 74 65 64 20 69 6e 20 48 54 54 50 43 4f 4e 20 69 73 20 61 20 66 69 6c | ce.requested.in.HTTPCON.is.a.fil |
| 29940 | 65 20 75 6e 64 65 72 20 74 68 65 0a 64 6f 63 2d 72 6f 6f 74 20 5c 22 7e 2f 77 6f 72 6b 5c 22 20 | e.under.the.doc-root.\"~/work\". |
| 29960 | 61 6e 64 20 69 66 20 69 74 20 69 73 2c 20 62 69 6e 64 73 20 74 68 65 20 72 65 73 75 6c 74 69 6e | and.if.it.is,.binds.the.resultin |
| 29980 | 67 20 66 69 6c 65 20 6e 61 6d 65 0a 74 6f 20 46 49 4c 45 2d 56 41 52 20 61 6e 64 20 63 61 6c 6c | g.file.name.to.FILE-VAR.and.call |
| 299a0 | 73 20 74 68 65 20 63 6f 64 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 44 4f 20 28 77 68 69 63 68 20 73 | s.the.code.following.DO.(which.s |
| 299c0 | 65 6e 64 73 20 74 68 65 20 66 69 6c 65 0a 74 6f 20 74 68 65 20 48 54 54 50 43 4f 4e 29 2e 0a 0a | ends.the.file.to.the.HTTPCON)... |
| 299e0 | 57 68 65 6e 20 61 20 66 69 6c 65 20 69 73 20 6e 6f 74 20 66 6f 75 6e 64 20 28 6f 72 20 6e 6f 74 | When.a.file.is.not.found.(or.not |
| 29a00 | 20 73 61 66 65 20 74 6f 20 72 65 74 75 72 6e 29 20 60 65 6c 6e 6f 64 65 2d 6e 6f 74 2d 66 6f 75 | .safe.to.return).`elnode-not-fou |
| 29a20 | 6e 64 27 20 69 73 20 63 61 6c 6c 65 64 2e 0a 0a 57 68 65 6e 20 61 20 66 69 6c 65 20 69 73 20 63 | nd'.is.called...When.a.file.is.c |
| 29a40 | 61 63 68 65 64 20 6f 6e 20 74 68 65 20 63 6c 69 65 6e 74 20 28 77 68 65 6e 20 61 20 63 6c 69 65 | ached.on.the.client.(when.a.clie |
| 29a60 | 6e 74 20 73 65 6e 64 73 20 61 0a 63 6f 6e 64 69 74 69 6f 6e 61 6c 20 47 45 54 20 66 6f 72 20 74 | nt.sends.a.conditional.GET.for.t |
| 29a80 | 68 65 20 66 69 6c 65 20 74 68 61 74 20 73 68 6f 77 73 20 74 68 65 20 63 6c 69 65 6e 74 20 68 61 | he.file.that.shows.the.client.ha |
| 29aa0 | 73 20 61 6e 20 75 70 20 74 6f 0a 64 61 74 65 20 63 6f 70 79 29 20 74 68 65 6e 20 60 65 6c 6e 6f | s.an.up.to.date.copy).then.`elno |
| 29ac0 | 64 65 2d 63 61 63 68 65 64 27 20 69 73 20 63 61 6c 6c 65 64 2e 22 0a 20 20 28 64 65 63 6c 61 72 | de-cached'.is.called."...(declar |
| 29ae0 | 65 0a 20 20 20 28 64 65 62 75 67 20 28 73 65 78 70 20 22 77 69 74 68 22 20 73 65 78 70 20 22 6f | e....(debug.(sexp."with".sexp."o |
| 29b00 | 6e 22 20 73 65 78 70 20 22 64 6f 22 20 26 72 65 73 74 20 66 6f 72 6d 29 29 0a 20 20 20 28 69 6e | n".sexp."do".&rest.form))....(in |
| 29b20 | 64 65 6e 74 20 64 65 66 75 6e 29 29 0a 20 20 28 6c 65 74 20 28 28 64 72 20 28 6d 61 6b 65 2d 73 | dent.defun))...(let.((dr.(make-s |
| 29b40 | 79 6d 62 6f 6c 20 22 64 6f 63 72 6f 6f 74 22 29 29 0a 20 20 20 20 20 20 20 20 28 63 6f 6e 20 28 | ymbol."docroot")).........(con.( |
| 29b60 | 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 68 74 74 70 63 6f 6e 22 29 29 29 0a 20 20 20 20 28 61 73 | make-symbol."httpcon"))).....(as |
| 29b80 | 73 65 72 74 20 28 6f 72 20 28 65 71 20 77 69 74 68 20 27 77 69 74 68 29 20 28 65 71 20 77 69 74 | sert.(or.(eq.with.'with).(eq.wit |
| 29ba0 | 68 20 3a 77 69 74 68 29 29 29 0a 20 20 20 20 28 61 73 73 65 72 74 20 28 6f 72 20 28 65 71 20 6f | h.:with))).....(assert.(or.(eq.o |
| 29bc0 | 6e 20 27 6f 6e 29 20 20 20 20 20 28 65 71 20 6f 6e 20 3a 6f 6e 29 29 29 0a 20 20 20 20 28 61 73 | n.'on).....(eq.on.:on))).....(as |
| 29be0 | 73 65 72 74 20 28 6f 72 20 28 65 71 20 64 6f 20 27 64 6f 29 20 20 20 20 20 28 65 71 20 64 6f 20 | sert.(or.(eq.do.'do).....(eq.do. |
| 29c00 | 3a 64 6f 29 29 29 0a 20 20 20 20 60 28 6c 65 74 20 28 28 2c 64 72 20 2c 64 6f 63 2d 72 6f 6f 74 | :do))).....`(let.((,dr.,doc-root |
| 29c20 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 2c 63 6f 6e 20 2c 68 74 74 70 63 6f 6e 29 29 0a 20 20 | )............(,con.,httpcon))... |
| 29c40 | 20 20 20 20 20 28 6c 65 74 20 28 28 2c 74 61 72 67 65 74 2d 66 69 6c 65 2d 76 61 72 20 28 65 6c | .....(let.((,target-file-var.(el |
| 29c60 | 6e 6f 64 65 2d 67 65 74 2d 74 61 72 67 65 74 66 69 6c 65 20 2c 63 6f 6e 20 2c 64 72 29 29 29 0a | node-get-targetfile.,con.,dr))). |
| 29c80 | 20 20 20 20 20 20 20 20 20 28 69 66 20 28 6e 6f 74 20 28 65 6c 6e 6f 64 65 2d 2d 75 6e 64 65 72 | .........(if.(not.(elnode--under |
| 29ca0 | 2d 64 6f 63 72 6f 6f 74 2d 70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 74 | -docroot-p....................,t |
| 29cc0 | 61 72 67 65 74 2d 66 69 6c 65 2d 76 61 72 20 2c 64 72 20 65 6c 6e 6f 64 65 2d 64 6f 63 72 6f 6f | arget-file-var.,dr.elnode-docroo |
| 29ce0 | 74 2d 66 6f 72 2d 6e 6f 2d 34 30 34 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e | t-for-no-404))..............(eln |
| 29d00 | 6f 64 65 2d 6e 6f 74 2d 66 6f 75 6e 64 20 2c 63 6f 6e 20 2c 74 61 72 67 65 74 2d 66 69 6c 65 2d | ode-not-found.,con.,target-file- |
| 29d20 | 76 61 72 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 66 20 28 61 6e 64 20 28 6e 6f 74 20 65 6c | var)............(if.(and.(not.el |
| 29d40 | 6e 6f 64 65 2d 64 6f 63 72 6f 6f 74 2d 66 6f 72 2d 6e 6f 2d 63 61 63 68 65 29 0a 20 20 20 20 20 | node-docroot-for-no-cache)...... |
| 29d60 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 63 61 63 68 65 64 2d 70 20 | ...............(elnode-cached-p. |
| 29d80 | 2c 63 6f 6e 20 2c 74 61 72 67 65 74 2d 66 69 6c 65 2d 76 61 72 29 29 0a 20 20 20 20 20 20 20 20 | ,con.,target-file-var))......... |
| 29da0 | 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 63 61 63 68 65 64 20 2c 63 6f 6e 29 0a 20 20 20 20 | .......(elnode-cached.,con)..... |
| 29dc0 | 20 20 20 20 20 20 20 20 20 2c 40 68 61 6e 64 6c 69 6e 67 29 29 29 29 29 29 0a 0a 0a 3b 3b 20 57 | .........,@handling))))))...;;.W |
| 29de0 | 65 62 73 65 72 76 65 72 20 73 74 75 66 66 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 | ebserver.stuff..;;;###autoload.( |
| 29e00 | 64 65 66 63 6f 6e 73 74 20 65 6c 6e 6f 64 65 2d 63 6f 6e 66 69 67 2d 64 69 72 65 63 74 6f 72 79 | defconst.elnode-config-directory |
| 29e20 | 0a 20 20 28 65 78 70 61 6e 64 2d 66 69 6c 65 2d 6e 61 6d 65 20 28 63 6f 6e 63 61 74 20 75 73 65 | ...(expand-file-name.(concat.use |
| 29e40 | 72 2d 65 6d 61 63 73 2d 64 69 72 65 63 74 6f 72 79 20 22 65 6c 6e 6f 64 65 2f 22 29 29 0a 20 20 | r-emacs-directory."elnode/"))... |
| 29e60 | 22 54 68 65 20 63 6f 6e 66 69 67 20 64 69 72 65 63 74 6f 72 79 20 66 6f 72 20 65 6c 6e 6f 64 65 | "The.config.directory.for.elnode |
| 29e80 | 20 74 6f 20 73 74 6f 72 65 20 70 65 72 69 70 68 65 72 61 6c 20 66 69 6c 65 73 2e 0a 0a 54 68 69 | .to.store.peripheral.files...Thi |
| 29ea0 | 73 20 69 73 20 75 73 65 64 20 61 73 20 61 20 62 61 73 65 20 66 6f 72 20 6f 74 68 65 72 20 63 6f | s.is.used.as.a.base.for.other.co |
| 29ec0 | 6e 73 74 61 6e 74 20 64 69 72 65 63 74 6f 72 79 20 6f 72 20 66 69 6c 65 0a 6e 61 6d 65 73 20 28 | nstant.directory.or.file.names.( |
| 29ee0 | 74 68 65 20 65 6c 6e 6f 64 65 20 61 75 74 68 20 64 61 74 61 62 61 73 65 20 69 73 20 61 20 66 69 | the.elnode.auth.database.is.a.fi |
| 29f00 | 6c 65 20 69 6e 20 74 68 69 73 20 64 69 72 65 63 74 6f 72 79 2c 20 74 68 65 0a 65 6c 6e 6f 64 65 | le.in.this.directory,.the.elnode |
| 29f20 | 20 77 65 62 73 65 72 76 65 72 20 68 61 73 20 61 20 64 6f 63 72 6f 6f 74 20 64 69 72 65 63 74 6f | .webserver.has.a.docroot.directo |
| 29f40 | 72 79 20 69 6e 20 74 68 69 73 20 64 69 72 65 63 74 6f 72 79 29 2e 0a 0a 49 74 20 69 73 20 62 61 | ry.in.this.directory)...It.is.ba |
| 29f60 | 73 65 64 20 6f 6e 20 74 68 65 20 60 75 73 65 72 2d 65 6d 61 63 73 2d 64 69 72 65 63 74 6f 72 79 | sed.on.the.`user-emacs-directory |
| 29f80 | 27 20 77 68 69 63 68 20 61 6c 77 61 79 73 20 73 65 65 6d 73 20 74 6f 0a 62 65 20 73 65 74 2c 20 | '.which.always.seems.to.be.set,. |
| 29fa0 | 65 76 65 6e 20 77 68 65 6e 20 65 6d 61 63 73 20 69 73 20 73 74 61 72 74 65 64 20 77 69 74 68 20 | even.when.emacs.is.started.with. |
| 29fc0 | 2d 51 2e 22 29 0a 0a 28 64 65 66 63 6f 6e 73 74 20 65 6c 6e 6f 64 65 2d 77 65 62 73 65 72 76 65 | -Q.")..(defconst.elnode-webserve |
| 29fe0 | 72 2d 64 6f 63 72 6f 6f 74 2d 64 65 66 61 75 6c 74 0a 20 20 28 65 78 70 61 6e 64 2d 66 69 6c 65 | r-docroot-default...(expand-file |
| 2a000 | 2d 6e 61 6d 65 20 28 63 6f 6e 63 61 74 20 65 6c 6e 6f 64 65 2d 63 6f 6e 66 69 67 2d 64 69 72 65 | -name.(concat.elnode-config-dire |
| 2a020 | 63 74 6f 72 79 20 22 70 75 62 6c 69 63 5f 68 74 6d 6c 2f 22 29 29 0a 20 20 22 54 68 65 20 64 65 | ctory."public_html/"))..."The.de |
| 2a040 | 66 61 75 6c 74 20 6c 6f 63 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 77 65 62 73 69 74 65 2e 0a 0a | fault.location.of.the.website... |
| 2a060 | 54 68 69 73 20 69 73 20 75 73 65 64 20 74 6f 20 64 65 74 65 63 74 20 77 68 65 74 68 65 72 20 65 | This.is.used.to.detect.whether.e |
| 2a080 | 6c 6e 6f 64 65 20 6e 65 65 64 73 20 74 6f 20 63 72 65 61 74 65 20 74 68 69 73 0a 64 69 72 65 63 | lnode.needs.to.create.this.direc |
| 2a0a0 | 74 6f 72 79 20 6f 72 20 6e 6f 74 2e 22 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 65 6c 6e 6f 64 | tory.or.not.")..(defcustom.elnod |
| 2a0c0 | 65 2d 77 65 62 73 65 72 76 65 72 2d 64 6f 63 72 6f 6f 74 0a 20 20 65 6c 6e 6f 64 65 2d 77 65 62 | e-webserver-docroot...elnode-web |
| 2a0e0 | 73 65 72 76 65 72 2d 64 6f 63 72 6f 6f 74 2d 64 65 66 61 75 6c 74 0a 20 20 22 54 68 65 20 64 6f | server-docroot-default..."The.do |
| 2a100 | 63 75 6d 65 6e 74 20 72 6f 6f 74 20 6f 66 20 74 68 65 20 77 65 62 73 65 72 76 65 72 2e 0a 0a 57 | cument.root.of.the.webserver...W |
| 2a120 | 65 62 73 65 72 76 65 72 20 66 75 6e 63 74 69 6f 6e 73 20 61 72 65 20 66 72 65 65 20 74 6f 20 75 | ebserver.functions.are.free.to.u |
| 2a140 | 73 65 20 74 68 69 73 20 6f 72 20 6e 6f 74 2e 20 20 54 68 65 0a 60 65 6c 6e 6f 64 65 2d 77 65 62 | se.this.or.not...The.`elnode-web |
| 2a160 | 73 65 72 76 65 72 27 20 66 75 6e 63 74 69 6f 6e 20 64 6f 65 73 20 75 73 65 20 69 74 2e 22 0a 20 | server'.function.does.use.it.".. |
| 2a180 | 20 3a 67 72 6f 75 70 20 27 65 6c 6e 6f 64 65 0a 20 20 3a 74 79 70 65 20 27 66 69 6c 65 29 0a 0a | .:group.'elnode...:type.'file).. |
| 2a1a0 | 28 64 65 66 63 75 73 74 6f 6d 20 65 6c 6e 6f 64 65 2d 77 65 62 73 65 72 76 65 72 2d 65 78 74 72 | (defcustom.elnode-webserver-extr |
| 2a1c0 | 61 2d 6d 69 6d 65 74 79 70 65 73 0a 20 20 27 28 28 22 74 65 78 74 2f 70 6c 61 69 6e 22 20 2e 20 | a-mimetypes...'(("text/plain"... |
| 2a1e0 | 22 63 72 65 6f 6c 65 22 29 0a 20 20 20 20 28 22 74 65 78 74 2f 70 6c 61 69 6e 22 20 2e 20 22 65 | "creole").....("text/plain"..."e |
| 2a200 | 6c 22 29 29 0a 20 20 22 45 78 74 72 61 20 6d 69 6d 65 20 74 79 70 65 73 20 74 6f 20 69 64 65 6e | l"))..."Extra.mime.types.to.iden |
| 2a220 | 74 69 66 79 20 73 70 65 63 69 61 6c 20 66 69 6c 65 20 74 79 70 65 73 2e 0a 0a 54 68 69 73 20 69 | tify.special.file.types...This.i |
| 2a240 | 73 20 6a 75 73 74 20 61 20 77 61 79 20 6f 66 20 68 61 63 6b 69 6e 67 20 74 68 65 20 6d 69 6d 65 | s.just.a.way.of.hacking.the.mime |
| 2a260 | 20 74 79 70 65 20 64 69 73 63 6f 76 65 72 79 20 73 6f 20 77 65 20 63 61 6e 0a 61 64 64 20 6d 6f | .type.discovery.so.we.can.add.mo |
| 2a280 | 72 65 20 66 69 6c 65 20 6d 61 70 70 69 6e 67 73 20 6d 6f 72 65 20 65 61 73 69 6c 79 20 74 68 61 | re.file.mappings.more.easily.tha |
| 2a2a0 | 6e 20 65 64 69 74 69 6e 67 20 60 2f 65 74 63 2f 6d 69 6d 65 2e 74 79 70 65 73 27 2e 22 0a 20 20 | n.editing.`/etc/mime.types'."... |
| 2a2c0 | 3a 67 72 6f 75 70 20 27 65 6c 6e 6f 64 65 0a 20 20 3a 74 79 70 65 20 27 28 61 6c 69 73 74 20 3a | :group.'elnode...:type.'(alist.: |
| 2a2e0 | 6b 65 79 2d 74 79 70 65 20 73 74 72 69 6e 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | key-type.string................. |
| 2a300 | 3a 76 61 6c 75 65 2d 74 79 70 65 20 73 74 72 69 6e 67 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d | :value-type.string))..(defcustom |
| 2a320 | 20 65 6c 6e 6f 64 65 2d 77 65 62 73 65 72 76 65 72 2d 69 6e 64 65 78 20 27 28 22 69 6e 64 65 78 | .elnode-webserver-index.'("index |
| 2a340 | 2e 68 74 6d 6c 22 20 22 69 6e 64 65 78 2e 68 74 6d 22 29 0a 20 20 22 41 20 6c 69 73 74 20 6f 66 | .html"."index.htm")..."A.list.of |
| 2a360 | 20 70 6f 73 73 69 62 6c 65 20 69 6e 64 65 78 20 66 69 6c 65 6e 61 6d 65 73 2e 0a 0a 41 6e 79 6f | .possible.index.filenames...Anyo |
| 2a380 | 6e 65 20 6f 66 20 74 68 65 20 76 61 6c 75 65 73 20 6f 66 20 74 68 69 73 20 6c 69 73 74 20 6d 61 | ne.of.the.values.of.this.list.ma |
| 2a3a0 | 79 20 62 65 20 70 69 63 6b 65 64 20 61 73 20 74 68 65 20 69 6e 64 65 78 20 70 61 67 65 0a 66 6f | y.be.picked.as.the.index.page.fo |
| 2a3c0 | 72 20 61 20 64 69 72 65 63 74 6f 72 79 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 65 6c 6e 6f 64 65 | r.a.directory."...:group.'elnode |
| 2a3e0 | 0a 20 20 3a 74 79 70 65 20 27 28 72 65 70 65 61 74 20 73 74 72 69 6e 67 29 29 0a 0a 28 64 65 66 | ...:type.'(repeat.string))..(def |
| 2a400 | 75 6e 20 65 6c 6e 6f 64 65 2d 2d 77 65 62 73 65 72 76 65 72 2d 73 65 74 75 70 20 28 29 0a 20 20 | un.elnode--webserver-setup.()... |
| 2a420 | 22 53 65 74 75 70 20 74 68 65 20 45 6c 6e 6f 64 65 20 77 65 62 73 65 72 76 65 72 20 62 79 20 6d | "Setup.the.Elnode.webserver.by.m |
| 2a440 | 61 6b 69 6e 67 20 61 20 64 65 66 61 75 6c 74 20 70 75 62 6c 69 63 5f 68 74 6d 6c 20 64 69 72 2e | aking.a.default.public_html.dir. |
| 2a460 | 0a 0a 54 68 65 20 73 65 72 76 65 72 20 68 61 73 20 61 20 73 69 6e 67 6c 65 20 60 74 65 73 74 2e | ..The.server.has.a.single.`test. |
| 2a480 | 68 74 6d 6c 27 20 66 69 6c 65 2c 20 74 68 69 73 20 69 73 20 73 6f 20 77 65 20 63 61 6e 20 73 68 | html'.file,.this.is.so.we.can.sh |
| 2a4a0 | 6f 77 0a 6f 66 66 20 74 68 65 20 73 74 61 6e 64 61 72 64 20 77 65 62 73 65 72 76 65 72 20 69 6e | ow.off.the.standard.webserver.in |
| 2a4c0 | 64 65 78 69 6e 67 20 69 6e 20 65 6c 6e 6f 64 65 27 73 20 77 65 62 73 65 72 76 65 72 2e 22 0a 20 | dexing.in.elnode's.webserver.".. |
| 2a4e0 | 20 28 65 6c 6e 6f 64 65 2d 2d 64 69 72 2d 73 65 74 75 70 20 65 6c 6e 6f 64 65 2d 77 65 62 73 65 | .(elnode--dir-setup.elnode-webse |
| 2a500 | 72 76 65 72 2d 64 6f 63 72 6f 6f 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | rver-docroot.................... |
| 2a520 | 20 20 65 6c 6e 6f 64 65 2d 77 65 62 73 65 72 76 65 72 2d 64 6f 63 72 6f 6f 74 2d 64 65 66 61 75 | ..elnode-webserver-docroot-defau |
| 2a540 | 6c 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 64 65 66 61 75 6c 74 | lt......................"default |
| 2a560 | 2d 77 65 62 73 65 72 76 65 72 2d 74 65 73 74 2e 68 74 6d 6c 22 0a 20 20 20 20 20 20 20 20 20 20 | -webserver-test.html"........... |
| 2a580 | 20 20 20 20 20 20 20 20 20 20 20 22 74 65 73 74 2e 68 74 6d 6c 22 0a 20 20 20 20 20 20 20 20 20 | ..........."test.html".......... |
| 2a5a0 | 20 20 20 20 20 20 20 20 20 20 20 20 22 64 65 66 61 75 6c 74 2d 77 65 62 73 65 72 76 65 72 2d 69 | ............"default-webserver-i |
| 2a5c0 | 6d 61 67 65 2e 70 6e 67 22 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 75 72 6c 2d 65 | mage.png"))..(defun.elnode-url-e |
| 2a5e0 | 6e 63 6f 64 65 2d 70 61 74 68 20 28 70 61 74 68 29 0a 20 20 22 52 65 74 75 72 6e 20 61 20 75 72 | ncode-path.(path)..."Return.a.ur |
| 2a600 | 6c 20 65 6e 63 6f 64 65 64 20 76 65 72 73 69 6f 6e 20 6f 66 20 50 41 54 48 2e 0a 0a 54 68 69 73 | l.encoded.version.of.PATH...This |
| 2a620 | 20 69 73 20 6c 69 6b 65 20 60 75 72 6c 2d 68 65 78 69 66 79 2d 73 74 72 69 6e 67 27 20 62 75 74 | .is.like.`url-hexify-string'.but |
| 2a640 | 20 69 74 20 68 61 6e 64 6c 65 73 20 74 68 65 20 70 61 72 74 73 20 6f 66 20 74 68 65 0a 50 41 54 | .it.handles.the.parts.of.the.PAT |
| 2a660 | 48 20 70 72 6f 70 65 72 6c 79 2e 20 20 49 74 20 61 6c 73 6f 20 68 65 78 69 66 69 65 73 20 73 69 | H.properly...It.also.hexifies.si |
| 2a680 | 6e 67 6c 65 20 71 75 6f 74 65 2e 22 0a 20 20 28 72 65 70 6c 61 63 65 2d 72 65 67 65 78 70 2d 69 | ngle.quote."...(replace-regexp-i |
| 2a6a0 | 6e 2d 73 74 72 69 6e 67 0a 20 20 20 22 27 22 20 22 25 32 37 22 0a 20 20 20 28 6d 61 70 63 6f 6e | n-string...."'"."%27"....(mapcon |
| 2a6c0 | 63 61 74 0a 20 20 20 20 27 69 64 65 6e 74 69 74 79 0a 20 20 20 20 28 6c 6f 6f 70 0a 20 20 20 20 | cat.....'identity.....(loop..... |
| 2a6e0 | 20 20 20 66 6f 72 20 70 61 72 74 20 69 6e 20 28 73 70 6c 69 74 2d 73 74 72 69 6e 67 20 70 61 74 | ...for.part.in.(split-string.pat |
| 2a700 | 68 20 22 2f 22 29 0a 20 20 20 20 20 20 20 63 6f 6c 6c 65 63 74 0a 20 20 20 20 20 20 20 20 20 28 | h."/")........collect..........( |
| 2a720 | 63 6f 6e 63 61 74 0a 20 20 20 20 20 20 20 20 20 20 28 75 72 6c 2d 68 65 78 69 66 79 2d 73 74 72 | concat...........(url-hexify-str |
| 2a740 | 69 6e 67 20 70 61 72 74 29 29 29 0a 20 20 20 20 22 2f 22 29 29 29 0a 0a 28 64 65 66 63 75 73 74 | ing.part)))....."/")))..(defcust |
| 2a760 | 6f 6d 20 65 6c 6e 6f 64 65 2d 77 65 62 73 65 72 76 65 72 2d 69 6e 64 65 78 2d 70 61 67 65 2d 74 | om.elnode-webserver-index-page-t |
| 2a780 | 65 6d 70 6c 61 74 65 20 22 3c 68 74 6d 6c 3e 0a 20 3c 68 65 61 64 3e 0a 20 20 3c 74 69 74 6c 65 | emplate."<html>..<head>...<title |
| 2a7a0 | 3e 25 73 3c 2f 74 69 74 6c 65 3e 0a 20 3c 2f 68 65 61 64 3e 0a 20 3c 62 6f 64 79 3e 0a 20 20 3c | >%s</title>..</head>..<body>...< |
| 2a7c0 | 68 31 3e 25 73 3c 2f 68 31 3e 0a 20 20 3c 64 69 76 3e 25 73 3c 2f 64 69 76 3e 0a 20 3c 2f 62 6f | h1>%s</h1>...<div>%s</div>..</bo |
| 2a7e0 | 64 79 3e 0a 3c 2f 68 74 6d 6c 3e 0a 22 0a 20 20 22 54 68 65 20 70 61 67 65 20 74 65 6d 70 6c 61 | dy>.</html>."..."The.page.templa |
| 2a800 | 74 65 20 75 73 65 64 20 74 6f 20 72 65 6e 64 65 72 20 61 6e 20 69 6e 64 65 78 20 70 61 67 65 2e | te.used.to.render.an.index.page. |
| 2a820 | 0a 0a 54 68 65 20 6f 72 64 65 72 20 6f 66 20 74 68 65 20 76 61 72 69 61 62 6c 65 73 20 69 73 3a | ..The.order.of.the.variables.is: |
| 2a840 | 0a 0a 2d 20 74 68 65 20 74 69 74 6c 65 20 6f 66 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 0a 2d 20 | ..-.the.title.of.the.document.-. |
| 2a860 | 74 68 65 20 74 69 74 6c 65 20 6f 66 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 0a 2d 20 74 68 65 20 | the.title.of.the.document.-.the. |
| 2a880 | 48 54 4d 4c 20 66 6f 72 6d 61 74 74 65 64 20 6c 69 73 74 20 6f 66 20 66 69 6c 65 73 2e 22 0a 20 | HTML.formatted.list.of.files.".. |
| 2a8a0 | 20 3a 67 72 6f 75 70 20 27 65 6c 6e 6f 64 65 0a 20 20 3a 74 79 70 65 20 27 28 73 74 72 69 6e 67 | .:group.'elnode...:type.'(string |
| 2a8c0 | 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 65 6c 6e 6f 64 65 2d 77 65 62 73 65 72 76 65 72 2d | ))..(defcustom.elnode-webserver- |
| 2a8e0 | 69 6e 64 65 78 2d 66 69 6c 65 2d 74 65 6d 70 6c 61 74 65 20 22 3c 61 20 68 72 65 66 3d 27 25 73 | index-file-template."<a.href='%s |
| 2a900 | 27 3e 25 73 3c 2f 61 3e 3c 62 72 2f 3e 5c 72 5c 6e 22 0a 20 20 22 54 68 65 20 74 65 6d 70 6c 61 | '>%s</a><br/>\r\n"..."The.templa |
| 2a920 | 74 65 20 66 6f 72 20 65 61 63 68 20 66 69 6c 65 20 69 6e 20 74 68 65 20 77 65 62 73 65 72 76 65 | te.for.each.file.in.the.webserve |
| 2a940 | 72 20 69 6e 64 65 78 2e 0a 0a 54 68 69 73 20 69 73 20 75 73 65 64 20 74 6f 20 64 69 73 70 6c 61 | r.index...This.is.used.to.displa |
| 2a960 | 79 20 65 61 63 68 20 66 69 6c 65 20 69 6e 20 61 6e 20 61 75 74 6f 6d 61 74 65 64 20 64 69 72 65 | y.each.file.in.an.automated.dire |
| 2a980 | 63 74 6f 72 79 20 69 6e 64 65 78 2e 0a 0a 49 74 20 69 73 20 65 78 70 65 63 74 65 64 20 74 68 65 | ctory.index...It.is.expected.the |
| 2a9a0 | 20 74 65 6d 70 6c 61 74 65 20 68 61 73 20 32 20 25 73 20 76 61 72 69 61 62 6c 65 73 20 69 6e 20 | .template.has.2.%s.variables.in. |
| 2a9c0 | 69 74 2c 20 74 68 65 20 66 69 72 73 74 0a 69 73 20 74 68 65 20 75 72 6c 20 74 6f 20 6c 69 6e 6b | it,.the.first.is.the.url.to.link |
| 2a9e0 | 20 74 6f 20 61 6e 64 20 74 68 65 20 73 65 63 6f 6e 64 20 69 73 20 74 68 65 20 63 6f 6e 74 65 6e | .to.and.the.second.is.the.conten |
| 2aa00 | 74 20 6f 66 20 74 68 65 20 6c 69 6e 6b 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 65 6c 6e 6f 64 65 | t.of.the.link."...:group.'elnode |
| 2aa20 | 0a 20 20 3a 74 79 70 65 20 27 28 73 74 72 69 6e 67 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f | ...:type.'(string))..(defun.elno |
| 2aa40 | 64 65 2d 2d 77 65 62 73 65 72 76 65 72 2d 69 6e 64 65 78 20 28 64 6f 63 72 6f 6f 74 20 74 61 72 | de--webserver-index.(docroot.tar |
| 2aa60 | 67 65 74 66 69 6c 65 20 70 61 74 68 69 6e 66 6f 20 26 6f 70 74 69 6f 6e 61 6c 20 6d 61 74 63 68 | getfile.pathinfo.&optional.match |
| 2aa80 | 29 0a 20 20 22 43 6f 6e 73 74 72 75 63 74 73 20 69 6e 64 65 78 20 64 6f 63 75 6d 65 6e 74 73 2e | )..."Constructs.index.documents. |
| 2aaa0 | 0a 0a 54 68 65 20 69 6e 64 65 78 20 69 73 20 6d 61 64 65 20 66 6f 72 20 74 68 65 20 44 4f 43 52 | ..The.index.is.made.for.the.DOCR |
| 2aac0 | 4f 4f 54 20 61 6e 64 20 54 41 52 47 45 54 46 49 4c 45 2e 20 54 68 65 20 77 65 62 20 70 61 74 68 | OOT.and.TARGETFILE..The.web.path |
| 2aae0 | 20 69 73 0a 50 41 54 48 49 4e 46 4f 2e 0a 0a 4f 70 74 69 6f 6e 61 6c 20 4d 41 54 43 48 20 69 73 | .is.PATHINFO...Optional.MATCH.is |
| 2ab00 | 20 70 61 73 73 65 64 20 64 69 72 65 63 74 6c 79 20 74 68 72 6f 75 67 68 20 74 6f 0a 60 64 69 72 | .passed.directly.through.to.`dir |
| 2ab20 | 65 63 74 6f 72 79 2d 66 69 6c 65 73 2d 61 6e 64 2d 61 74 74 72 69 62 75 74 65 73 27 2e 22 0a 20 | ectory-files-and-attributes'.".. |
| 2ab40 | 20 3b 3b 20 54 4f 44 4f 20 6d 61 6b 65 20 74 68 69 73 20 75 73 61 62 6c 65 20 62 79 20 70 65 6f | .;;.TODO.make.this.usable.by.peo |
| 2ab60 | 70 6c 65 20 67 65 6e 65 72 61 6c 6c 79 0a 20 20 28 6c 65 74 20 28 28 64 69 72 6c 69 73 74 20 28 | ple.generally...(let.((dirlist.( |
| 2ab80 | 64 69 72 65 63 74 6f 72 79 2d 66 69 6c 65 73 2d 61 6e 64 2d 61 74 74 72 69 62 75 74 65 73 20 74 | directory-files-and-attributes.t |
| 2aba0 | 61 72 67 65 74 66 69 6c 65 20 6e 69 6c 20 6d 61 74 63 68 29 29 29 0a 20 20 20 20 3b 3b 20 54 4f | argetfile.nil.match))).....;;.TO |
| 2abc0 | 44 4f 20 6d 61 6b 65 20 73 6f 6d 65 20 74 65 6d 70 6c 61 74 69 6e 67 20 68 65 72 65 20 73 6f 20 | DO.make.some.templating.here.so. |
| 2abe0 | 70 65 6f 70 6c 65 20 63 61 6e 20 63 68 61 6e 67 65 20 74 68 69 73 0a 20 20 20 20 28 66 6f 72 6d | people.can.change.this.....(form |
| 2ac00 | 61 74 0a 20 20 20 20 20 65 6c 6e 6f 64 65 2d 77 65 62 73 65 72 76 65 72 2d 69 6e 64 65 78 2d 70 | at......elnode-webserver-index-p |
| 2ac20 | 61 67 65 2d 74 65 6d 70 6c 61 74 65 0a 20 20 20 20 20 70 61 74 68 69 6e 66 6f 0a 20 20 20 20 20 | age-template......pathinfo...... |
| 2ac40 | 70 61 74 68 69 6e 66 6f 0a 20 20 20 20 20 28 6c 6f 6f 70 20 66 6f 72 20 64 69 72 2d 65 6e 74 72 | pathinfo......(loop.for.dir-entr |
| 2ac60 | 79 20 69 6e 20 64 69 72 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 63 61 74 0a 20 | y.in.dirlist............concat.. |
| 2ac80 | 20 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 65 6e 74 72 79 0a 20 20 20 20 20 20 20 20 20 | ..........(let.((entry.......... |
| 2aca0 | 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .........(format................ |
| 2acc0 | 20 20 20 20 22 25 73 2f 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 | ...."%s/%s"....................( |
| 2ace0 | 69 66 20 28 65 71 75 61 6c 20 70 61 74 68 69 6e 66 6f 20 22 2f 22 29 20 20 22 22 20 70 61 74 68 | if.(equal.pathinfo."/").."".path |
| 2ad00 | 69 6e 66 6f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 72 20 64 69 | info)....................(car.di |
| 2ad20 | 72 2d 65 6e 74 72 79 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 | r-entry))))..............(format |
| 2ad40 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 6e 6f 64 65 2d 77 65 62 73 65 72 76 65 72 2d | ...............elnode-webserver- |
| 2ad60 | 69 6e 64 65 78 2d 66 69 6c 65 2d 74 65 6d 70 6c 61 74 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 | index-file-template............. |
| 2ad80 | 20 20 28 65 6c 6e 6f 64 65 2d 75 72 6c 2d 65 6e 63 6f 64 65 2d 70 61 74 68 20 65 6e 74 72 79 29 | ..(elnode-url-encode-path.entry) |
| 2ada0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 61 72 20 64 69 72 2d 65 6e 74 72 79 29 29 29 | ...............(car.dir-entry))) |
| 2adc0 | 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 6e 20 65 6c 6e 6f | ))))..;;;###autoload.(defun.elno |
| 2ade0 | 64 65 2d 2d 77 65 62 73 65 72 76 65 72 2d 68 61 6e 64 6c 65 72 2d 70 72 6f 63 20 28 68 74 74 70 | de--webserver-handler-proc.(http |
| 2ae00 | 63 6f 6e 20 64 6f 63 72 6f 6f 74 20 6d 69 6d 65 2d 74 79 70 65 73 29 0a 20 20 22 41 63 74 75 61 | con.docroot.mime-types)..."Actua |
| 2ae20 | 6c 20 77 65 62 73 65 72 76 65 72 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 2e 0a 0a 44 6f 20 | l.webserver.implementation...Do. |
| 2ae40 | 77 65 62 73 65 72 76 69 6e 67 20 74 6f 20 48 54 54 50 43 4f 4e 20 66 72 6f 6d 20 74 68 65 20 44 | webserving.to.HTTPCON.from.the.D |
| 2ae60 | 4f 43 52 4f 4f 54 20 75 73 69 6e 67 20 74 68 65 20 4d 49 4d 45 2d 54 59 50 45 53 0a 66 6f 72 20 | OCROOT.using.the.MIME-TYPES.for. |
| 2ae80 | 6d 65 74 61 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 2e 0a 0a 54 68 69 73 20 69 73 20 6e 6f 74 20 61 | meta.information...This.is.not.a |
| 2aea0 | 20 72 65 61 6c 20 68 61 6e 64 6c 65 72 20 28 62 65 63 61 75 73 65 20 69 74 20 74 61 6b 65 73 20 | .real.handler.(because.it.takes. |
| 2aec0 | 6d 6f 72 65 20 74 68 61 6e 20 74 68 65 0a 48 54 54 50 43 4f 4e 29 20 62 75 74 20 69 74 20 69 73 | more.than.the.HTTPCON).but.it.is |
| 2aee0 | 20 63 61 6c 6c 65 64 20 64 69 72 65 63 74 6c 79 20 62 79 20 74 68 65 20 72 65 61 6c 20 77 65 62 | .called.directly.by.the.real.web |
| 2af00 | 73 65 72 76 65 72 0a 68 61 6e 64 6c 65 72 73 2e 22 0a 20 20 28 65 6c 6e 6f 64 65 2d 64 6f 63 72 | server.handlers."...(elnode-docr |
| 2af20 | 6f 6f 74 2d 66 6f 72 20 64 6f 63 72 6f 6f 74 0a 20 20 20 20 77 69 74 68 20 74 61 72 67 65 74 66 | oot-for.docroot.....with.targetf |
| 2af40 | 69 6c 65 0a 20 20 20 20 6f 6e 20 68 74 74 70 63 6f 6e 0a 20 20 20 20 64 6f 0a 20 20 20 20 28 6c | ile.....on.httpcon.....do.....(l |
| 2af60 | 65 74 20 28 28 70 61 74 68 69 6e 66 6f 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 70 61 74 68 69 | et.((pathinfo.(elnode-http-pathi |
| 2af80 | 6e 66 6f 20 68 74 74 70 63 6f 6e 29 29 29 0a 20 20 20 20 20 20 28 69 66 20 28 66 69 6c 65 2d 64 | nfo.httpcon))).......(if.(file-d |
| 2afa0 | 69 72 65 63 74 6f 72 79 2d 70 20 74 61 72 67 65 74 66 69 6c 65 29 0a 20 20 20 20 20 20 20 20 20 | irectory-p.targetfile).......... |
| 2afc0 | 20 3b 3b 20 55 73 65 20 61 6e 20 65 78 69 73 74 69 6e 67 20 69 6e 64 65 78 20 66 69 6c 65 20 6f | .;;.Use.an.existing.index.file.o |
| 2afe0 | 72 20 73 65 6e 64 20 61 20 64 69 72 65 63 74 6f 72 79 20 69 6e 64 65 78 0a 20 20 20 20 20 20 20 | r.send.a.directory.index........ |
| 2b000 | 20 20 20 28 6c 65 74 2a 20 28 28 69 6e 64 65 78 66 69 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 | ...(let*.((indexfile............ |
| 2b020 | 20 20 20 20 20 20 20 28 6c 6f 6f 70 20 66 6f 72 20 69 20 69 6e 20 65 6c 6e 6f 64 65 2d 77 65 62 | .......(loop.for.i.in.elnode-web |
| 2b040 | 73 65 72 76 65 72 2d 69 6e 64 65 78 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | server-index.................... |
| 2b060 | 20 20 20 20 20 69 66 20 28 6d 65 6d 62 65 72 20 69 20 28 64 69 72 65 63 74 6f 72 79 2d 66 69 6c | .....if.(member.i.(directory-fil |
| 2b080 | 65 73 20 74 61 72 67 65 74 66 69 6c 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | es.targetfile))................. |
| 2b0a0 | 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ........return.i)))............. |
| 2b0c0 | 28 69 66 20 69 6e 64 65 78 66 69 6c 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 | (if.indexfile.................(e |
| 2b0e0 | 6c 6e 6f 64 65 2d 73 65 6e 64 2d 66 69 6c 65 20 68 74 74 70 63 6f 6e 20 28 63 6f 6e 63 61 74 20 | lnode-send-file.httpcon.(concat. |
| 2b100 | 74 61 72 67 65 74 66 69 6c 65 20 22 2f 22 20 69 6e 64 65 78 66 69 6c 65 29 29 0a 20 20 20 20 20 | targetfile."/".indexfile))...... |
| 2b120 | 20 20 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 69 6e 64 65 78 20 28 65 6c 6e 6f 64 65 2d 2d 77 | .........(let.((index.(elnode--w |
| 2b140 | 65 62 73 65 72 76 65 72 2d 69 6e 64 65 78 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ebserver-index.................. |
| 2b160 | 20 20 20 20 20 20 20 20 20 20 20 64 6f 63 72 6f 6f 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...........docroot.............. |
| 2b180 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 61 72 67 65 74 66 69 6c 65 0a 20 20 20 20 20 20 | ...............targetfile....... |
| 2b1a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 74 68 69 6e 66 6f 29 29 | ......................pathinfo)) |
| 2b1c0 | 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 | ).................(elnode-http-s |
| 2b1e0 | 74 61 72 74 20 68 74 74 70 63 6f 6e 20 32 30 30 20 27 28 22 43 6f 6e 74 65 6e 74 2d 74 79 70 65 | tart.httpcon.200.'("Content-type |
| 2b200 | 22 20 2e 20 22 74 65 78 74 2f 68 74 6d 6c 22 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | "..."text/html"))............... |
| 2b220 | 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 72 65 74 75 72 6e 20 68 74 74 70 63 6f 6e 20 69 6e | ..(elnode-http-return.httpcon.in |
| 2b240 | 64 65 78 29 29 29 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 53 65 6e 64 20 61 20 66 69 6c 65 2e 0a | dex)))).........;;.Send.a.file.. |
| 2b260 | 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 66 69 6c 65 0a 20 20 20 20 20 20 | ........(elnode-send-file....... |
| 2b280 | 20 20 20 68 74 74 70 63 6f 6e 0a 20 20 20 20 20 20 20 20 20 74 61 72 67 65 74 66 69 6c 65 0a 20 | ...httpcon..........targetfile.. |
| 2b2a0 | 20 20 20 20 20 20 20 20 3a 6d 69 6d 65 2d 74 79 70 65 73 20 6d 69 6d 65 2d 74 79 70 65 73 29 29 | ........:mime-types.mime-types)) |
| 2b2c0 | 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 77 65 62 73 65 72 76 65 72 2d 68 61 6e | )))..(defun.elnode-webserver-han |
| 2b2e0 | 64 6c 65 72 2d 6d 61 6b 65 72 20 28 26 6f 70 74 69 6f 6e 61 6c 20 64 6f 63 72 6f 6f 74 20 65 78 | dler-maker.(&optional.docroot.ex |
| 2b300 | 74 72 61 2d 6d 69 6d 65 2d 74 79 70 65 73 29 0a 20 20 22 4d 61 6b 65 20 61 20 77 65 62 73 65 72 | tra-mime-types)..."Make.a.webser |
| 2b320 | 76 65 72 20 68 61 6e 64 6c 65 72 20 70 6f 73 73 69 62 6c 79 20 77 69 74 68 20 74 68 65 20 44 4f | ver.handler.possibly.with.the.DO |
| 2b340 | 43 52 4f 4f 54 20 61 6e 64 20 45 58 54 52 41 2d 4d 49 4d 45 2d 54 59 50 45 53 2e 0a 0a 52 65 74 | CROOT.and.EXTRA-MIME-TYPES...Ret |
| 2b360 | 75 72 6e 73 20 61 20 70 72 6f 63 20 77 68 69 63 68 20 69 73 20 74 68 65 20 68 61 6e 64 6c 65 72 | urns.a.proc.which.is.the.handler |
| 2b380 | 2e 20 54 68 65 20 68 61 6e 64 6c 65 72 20 73 65 72 76 65 73 20 66 69 6c 65 73 20 6f 75 74 0a 6f | ..The.handler.serves.files.out.o |
| 2b3a0 | 66 20 74 68 65 20 64 6f 63 72 6f 6f 74 20 61 6e 64 20 6d 61 72 6b 73 20 74 68 65 6d 20 77 69 74 | f.the.docroot.and.marks.them.wit |
| 2b3c0 | 68 20 74 68 65 20 63 6f 6e 74 65 6e 74 20 74 79 70 65 73 20 74 68 61 74 20 45 6d 61 63 73 0a 6b | h.the.content.types.that.Emacs.k |
| 2b3e0 | 6e 6f 77 73 20 61 62 6f 75 74 2e 20 59 6f 75 20 63 61 6e 20 61 64 64 20 65 78 74 72 61 20 63 6f | nows.about..You.can.add.extra.co |
| 2b400 | 6e 74 65 6e 74 20 74 79 70 65 73 20 66 6f 72 20 74 68 65 20 77 65 62 73 65 72 76 65 72 0a 6a 75 | ntent.types.for.the.webserver.ju |
| 2b420 | 73 74 20 62 79 20 73 75 70 70 6c 79 69 6e 67 20 61 6e 20 61 6c 69 73 74 20 6f 66 20 6d 69 6d 65 | st.by.supplying.an.alist.of.mime |
| 2b440 | 2d 74 79 70 65 73 20 61 6e 64 20 65 78 74 65 6e 73 69 6f 6e 73 20 66 6f 72 0a 45 58 54 52 41 2d | -types.and.extensions.for.EXTRA- |
| 2b460 | 4d 49 4d 45 2d 54 59 50 45 53 2e 0a 0a 54 68 65 20 77 65 62 73 65 72 76 65 72 20 68 61 6e 64 6c | MIME-TYPES...The.webserver.handl |
| 2b480 | 65 72 20 61 6c 73 6f 20 63 72 65 61 74 65 73 20 66 69 6c 65 20 69 6e 64 65 78 65 73 2e 0a 0a 54 | er.also.creates.file.indexes...T |
| 2b4a0 | 68 65 20 77 65 62 73 65 72 76 65 72 20 75 73 65 73 20 60 65 6c 6e 6f 64 65 2d 74 65 73 74 2d 70 | he.webserver.uses.`elnode-test-p |
| 2b4c0 | 61 74 68 27 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 74 68 61 74 20 74 68 65 0a 72 65 71 75 65 | ath'.to.make.sure.that.the.reque |
| 2b4e0 | 73 74 20 64 6f 65 73 20 6e 6f 74 20 67 6f 20 61 62 6f 76 65 20 74 68 65 20 44 4f 43 52 4f 4f 54 | st.does.not.go.above.the.DOCROOT |
| 2b500 | 2e 22 0a 20 20 28 6c 65 74 20 28 28 6d 79 2d 64 6f 63 72 6f 6f 74 20 28 6f 72 20 64 6f 63 72 6f | ."...(let.((my-docroot.(or.docro |
| 2b520 | 6f 74 20 65 6c 6e 6f 64 65 2d 77 65 62 73 65 72 76 65 72 2d 64 6f 63 72 6f 6f 74 29 29 0a 20 20 | ot.elnode-webserver-docroot))... |
| 2b540 | 20 20 20 20 20 20 28 6d 79 2d 6d 69 6d 65 2d 74 79 70 65 73 20 28 6f 72 20 65 78 74 72 61 2d 6d | ......(my-mime-types.(or.extra-m |
| 2b560 | 69 6d 65 2d 74 79 70 65 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ime-types....................... |
| 2b580 | 20 20 20 20 20 65 6c 6e 6f 64 65 2d 77 65 62 73 65 72 76 65 72 2d 65 78 74 72 61 2d 6d 69 6d 65 | .....elnode-webserver-extra-mime |
| 2b5a0 | 74 79 70 65 73 29 29 29 0a 20 20 20 20 28 6c 61 6d 62 64 61 20 28 68 74 74 70 63 6f 6e 29 0a 20 | types))).....(lambda.(httpcon).. |
| 2b5c0 | 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 77 65 62 73 65 72 76 65 72 2d 68 61 6e 64 6c 65 72 2d | .....(elnode--webserver-handler- |
| 2b5e0 | 70 72 6f 63 0a 20 20 20 20 20 20 20 68 74 74 70 63 6f 6e 20 6d 79 2d 64 6f 63 72 6f 6f 74 20 6d | proc........httpcon.my-docroot.m |
| 2b600 | 79 2d 6d 69 6d 65 2d 74 79 70 65 73 29 29 29 29 0a 0a 0a 28 64 65 66 76 61 72 20 65 6c 6e 6f 64 | y-mime-types))))...(defvar.elnod |
| 2b620 | 65 2d 2d 6d 61 6b 65 2d 77 65 62 73 65 72 76 65 72 2d 73 74 6f 72 65 20 6e 69 6c 0a 20 20 22 41 | e--make-webserver-store.nil..."A |
| 2b640 | 6c 69 73 74 20 6f 66 20 77 65 62 73 65 72 76 65 72 73 20 6d 61 64 65 20 62 79 20 60 65 6c 6e 6f | list.of.webservers.made.by.`elno |
| 2b660 | 64 65 2d 6d 61 6b 65 2d 77 65 62 73 65 72 76 65 72 27 2e 0a 0a 53 74 6f 72 65 64 20 61 73 20 60 | de-make-webserver'...Stored.as.` |
| 2b680 | 64 6f 63 72 6f 6f 74 27 20 2e 20 60 77 65 62 73 65 72 76 65 72 27 2e 22 29 0a 0a 3b 3b 3b 23 23 | docroot'...`webserver'.")..;;;## |
| 2b6a0 | 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 6d 61 6b 65 2d 77 65 62 | #autoload.(defun.elnode-make-web |
| 2b6c0 | 73 65 72 76 65 72 20 28 64 6f 63 72 6f 6f 74 20 70 6f 72 74 20 26 6f 70 74 69 6f 6e 61 6c 20 68 | server.(docroot.port.&optional.h |
| 2b6e0 | 6f 73 74 29 0a 20 20 22 4d 61 6b 65 20 61 20 77 65 62 73 65 72 76 65 72 20 69 6e 74 65 72 61 63 | ost)..."Make.a.webserver.interac |
| 2b700 | 74 69 76 65 6c 79 2c 20 66 6f 72 20 44 4f 43 52 4f 4f 54 20 6f 6e 20 50 4f 52 54 2e 0a 0a 41 6e | tively,.for.DOCROOT.on.PORT...An |
| 2b720 | 20 65 61 73 79 20 77 61 79 20 66 6f 72 20 61 20 75 73 65 72 20 74 6f 20 6d 61 6b 65 20 61 20 77 | .easy.way.for.a.user.to.make.a.w |
| 2b740 | 65 62 73 65 72 76 65 72 20 66 6f 72 20 61 20 70 61 72 74 69 63 75 6c 61 72 0a 64 69 72 65 63 74 | ebserver.for.a.particular.direct |
| 2b760 | 6f 72 79 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 0a 20 20 20 28 6c 65 74 20 28 28 64 | ory."...(interactive....(let.((d |
| 2b780 | 6f 63 72 6f 6f 74 20 28 72 65 61 64 2d 64 69 72 65 63 74 6f 72 79 2d 6e 61 6d 65 20 22 44 6f 63 | ocroot.(read-directory-name."Doc |
| 2b7a0 | 72 6f 6f 74 3a 20 22 20 6e 69 6c 20 6e 69 6c 20 74 29 29 0a 20 20 20 20 20 20 20 20 20 28 70 6f | root:.".nil.nil.t))..........(po |
| 2b7c0 | 72 74 20 28 72 65 61 64 2d 66 72 6f 6d 2d 6d 69 6e 69 62 75 66 66 65 72 20 22 50 6f 72 74 3a 20 | rt.(read-from-minibuffer."Port:. |
| 2b7e0 | 22 29 29 0a 20 20 20 20 20 20 20 20 20 28 68 6f 73 74 20 28 69 66 20 63 75 72 72 65 6e 74 2d 70 | "))..........(host.(if.current-p |
| 2b800 | 72 65 66 69 78 2d 61 72 67 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 72 65 | refix-arg....................(re |
| 2b820 | 61 64 2d 66 72 6f 6d 2d 6d 69 6e 69 62 75 66 66 65 72 20 22 48 6f 73 74 3a 20 22 29 0a 20 20 20 | ad-from-minibuffer."Host:.").... |
| 2b840 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 6e 6f 64 65 2d 69 6e 69 74 2d 68 6f 73 74 | ................elnode-init-host |
| 2b860 | 29 29 29 0a 20 20 20 20 20 28 6c 69 73 74 20 64 6f 63 72 6f 6f 74 20 70 6f 72 74 20 68 6f 73 74 | )))......(list.docroot.port.host |
| 2b880 | 29 29 29 0a 20 20 28 6c 65 74 20 28 28 77 65 62 73 65 72 76 65 72 2d 70 72 6f 63 20 28 65 6c 6e | )))...(let.((webserver-proc.(eln |
| 2b8a0 | 6f 64 65 2d 77 65 62 73 65 72 76 65 72 2d 68 61 6e 64 6c 65 72 2d 6d 61 6b 65 72 20 64 6f 63 72 | ode-webserver-handler-maker.docr |
| 2b8c0 | 6f 6f 74 29 29 29 0a 20 20 20 20 28 61 64 64 2d 74 6f 2d 6c 69 73 74 0a 20 20 20 20 20 27 65 6c | oot))).....(add-to-list......'el |
| 2b8e0 | 6e 6f 64 65 2d 2d 6d 61 6b 65 2d 77 65 62 73 65 72 76 65 72 2d 73 74 6f 72 65 0a 20 20 20 20 20 | node--make-webserver-store...... |
| 2b900 | 28 63 6f 6e 73 20 64 6f 63 72 6f 6f 74 20 77 65 62 73 65 72 76 65 72 2d 70 72 6f 63 29 29 0a 20 | (cons.docroot.webserver-proc)).. |
| 2b920 | 20 20 20 28 65 6c 6e 6f 64 65 2d 73 74 61 72 74 0a 20 20 20 20 20 77 65 62 73 65 72 76 65 72 2d | ...(elnode-start......webserver- |
| 2b940 | 70 72 6f 63 0a 20 20 20 20 20 3a 70 6f 72 74 20 28 73 74 72 69 6e 67 2d 74 6f 2d 6e 75 6d 62 65 | proc......:port.(string-to-numbe |
| 2b960 | 72 20 28 66 6f 72 6d 61 74 20 22 25 73 22 20 70 6f 72 74 29 29 0a 20 20 20 20 20 3a 68 6f 73 74 | r.(format."%s".port))......:host |
| 2b980 | 20 68 6f 73 74 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 6e 20 | .host)))..;;;###autoload.(defun. |
| 2b9a0 | 65 6c 6e 6f 64 65 2d 77 65 62 73 65 72 76 65 72 20 28 68 74 74 70 63 6f 6e 29 0a 20 20 22 41 20 | elnode-webserver.(httpcon)..."A. |
| 2b9c0 | 73 69 6d 70 6c 65 20 77 65 62 73 65 72 76 65 72 20 74 68 61 74 20 73 65 72 76 65 73 20 64 6f 63 | simple.webserver.that.serves.doc |
| 2b9e0 | 75 6d 65 6e 74 73 20 6f 75 74 20 6f 66 20 60 65 6c 6e 6f 64 65 2d 77 65 62 73 65 72 76 65 72 2d | uments.out.of.`elnode-webserver- |
| 2ba00 | 64 6f 63 72 6f 6f 74 27 2e 0a 0a 54 68 69 73 20 69 73 20 6a 75 73 74 20 61 6e 20 65 78 61 6d 70 | docroot'...This.is.just.an.examp |
| 2ba20 | 6c 65 20 6f 66 20 61 6e 20 65 6c 6e 6f 64 65 20 77 65 62 73 65 72 76 65 72 2c 20 62 75 74 20 69 | le.of.an.elnode.webserver,.but.i |
| 2ba40 | 74 20 6d 61 79 20 62 65 20 61 6c 6c 0a 74 68 61 74 20 69 73 20 6e 65 65 64 65 64 20 6d 6f 73 74 | t.may.be.all.that.is.needed.most |
| 2ba60 | 20 6f 66 20 74 68 65 20 74 69 6d 65 2e 0a 0a 53 65 65 20 60 65 6c 6e 6f 64 65 2d 77 65 62 73 65 | .of.the.time...See.`elnode-webse |
| 2ba80 | 72 76 65 72 2d 68 61 6e 64 6c 65 72 2d 6d 61 6b 65 72 27 20 66 6f 72 20 6d 6f 72 65 20 70 6f 73 | rver-handler-maker'.for.more.pos |
| 2baa0 | 73 69 62 69 6c 69 74 69 65 73 20 66 6f 72 0a 6d 61 6b 69 6e 67 20 77 65 62 73 65 72 76 65 72 20 | sibilities.for.making.webserver. |
| 2bac0 | 66 75 6e 63 74 69 6f 6e 73 2e 0a 0a 48 54 54 50 43 4f 4e 20 69 73 20 74 68 65 20 48 54 54 50 20 | functions...HTTPCON.is.the.HTTP. |
| 2bae0 | 63 6f 6e 6e 65 63 74 69 6f 6e 20 74 6f 20 74 68 65 20 75 73 65 72 20 61 67 65 6e 74 2e 22 0a 20 | connection.to.the.user.agent.".. |
| 2bb00 | 20 28 65 6c 6e 6f 64 65 2d 2d 77 65 62 73 65 72 76 65 72 2d 73 65 74 75 70 29 0a 20 20 28 6c 65 | .(elnode--webserver-setup)...(le |
| 2bb20 | 74 20 28 75 73 65 2d 77 65 62 73 65 72 76 65 72 2d 68 61 6e 64 6c 65 72 2d 6d 61 6b 65 72 29 0a | t.(use-webserver-handler-maker). |
| 2bb40 | 20 20 20 20 28 69 66 20 75 73 65 2d 77 65 62 73 65 72 76 65 72 2d 68 61 6e 64 6c 65 72 2d 6d 61 | ....(if.use-webserver-handler-ma |
| 2bb60 | 6b 65 72 0a 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 77 65 62 73 65 72 76 65 72 2d 68 | ker.........(elnode--webserver-h |
| 2bb80 | 61 6e 64 6c 65 72 2d 70 72 6f 63 0a 20 20 20 20 20 20 20 20 20 68 74 74 70 63 6f 6e 0a 20 20 20 | andler-proc..........httpcon.... |
| 2bba0 | 20 20 20 20 20 20 65 6c 6e 6f 64 65 2d 77 65 62 73 65 72 76 65 72 2d 64 6f 63 72 6f 6f 74 0a 20 | ......elnode-webserver-docroot.. |
| 2bbc0 | 20 20 20 20 20 20 20 20 65 6c 6e 6f 64 65 2d 77 65 62 73 65 72 76 65 72 2d 65 78 74 72 61 2d 6d | ........elnode-webserver-extra-m |
| 2bbe0 | 69 6d 65 74 79 70 65 73 29 0a 20 20 20 20 20 20 20 20 3b 3b 20 4f 74 68 65 72 77 69 73 65 20 44 | imetypes).........;;.Otherwise.D |
| 2bc00 | 4f 20 75 73 65 20 74 68 65 20 68 61 6e 64 6c 65 72 20 6d 61 6b 65 72 2e 2e 2e 0a 20 20 20 20 20 | O.use.the.handler.maker......... |
| 2bc20 | 20 20 20 28 6c 65 74 20 28 28 77 65 62 73 65 72 76 65 72 20 28 65 6c 6e 6f 64 65 2d 77 65 62 73 | ...(let.((webserver.(elnode-webs |
| 2bc40 | 65 72 76 65 72 2d 68 61 6e 64 6c 65 72 2d 6d 61 6b 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 | erver-handler-maker............. |
| 2bc60 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 6e 6f 64 65 2d 77 65 62 73 65 72 76 65 72 2d 64 | ..............elnode-webserver-d |
| 2bc80 | 6f 63 72 6f 6f 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ocroot.......................... |
| 2bca0 | 20 65 6c 6e 6f 64 65 2d 77 65 62 73 65 72 76 65 72 2d 65 78 74 72 61 2d 6d 69 6d 65 74 79 70 65 | .elnode-webserver-extra-mimetype |
| 2bcc0 | 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 77 65 62 73 65 72 76 65 | s)))...........(funcall.webserve |
| 2bce0 | 72 20 68 74 74 70 63 6f 6e 29 29 29 29 29 0a 0a 3b 3b 20 44 65 66 61 75 6c 74 20 65 6c 6e 6f 64 | r.httpcon)))))..;;.Default.elnod |
| 2bd00 | 65 20 61 75 74 68 20 64 61 74 61 62 61 73 65 73 0a 0a 28 64 65 66 63 6f 6e 73 74 20 65 6c 6e 6f | e.auth.databases..(defconst.elno |
| 2bd20 | 64 65 2d 61 75 74 68 2d 64 62 2d 73 70 65 63 2d 64 65 66 61 75 6c 74 0a 20 20 60 28 64 62 2d 68 | de-auth-db-spec-default...`(db-h |
| 2bd40 | 61 73 68 0a 20 20 20 20 3a 66 69 6c 65 6e 61 6d 65 0a 20 20 20 20 2c 28 65 78 70 61 6e 64 2d 66 | ash.....:filename.....,(expand-f |
| 2bd60 | 69 6c 65 2d 6e 61 6d 65 20 28 63 6f 6e 63 61 74 20 65 6c 6e 6f 64 65 2d 63 6f 6e 66 69 67 2d 64 | ile-name.(concat.elnode-config-d |
| 2bd80 | 69 72 65 63 74 6f 72 79 20 22 65 6c 6e 6f 64 65 2d 61 75 74 68 22 29 29 29 0a 20 20 22 54 68 65 | irectory."elnode-auth")))..."The |
| 2bda0 | 20 64 65 66 61 75 6c 74 20 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 64 62 20 73 70 65 63 69 66 69 63 | .default.elnode-auth-db.specific |
| 2bdc0 | 61 74 69 6f 6e 2e 22 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 65 6c 6e 6f 64 65 2d 61 75 74 68 | ation.")..(defcustom.elnode-auth |
| 2bde0 | 2d 64 62 2d 73 70 65 63 0a 20 20 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 64 62 2d 73 70 65 63 2d 64 | -db-spec...elnode-auth-db-spec-d |
| 2be00 | 65 66 61 75 6c 74 0a 20 20 22 54 68 65 20 60 64 62 27 20 73 70 65 63 69 66 69 63 61 74 69 6f 6e | efault..."The.`db'.specification |
| 2be20 | 20 6f 66 20 77 68 65 72 65 20 74 68 65 20 61 75 74 68 20 64 62 20 69 73 2e 22 0a 20 20 3a 67 72 | .of.where.the.auth.db.is."...:gr |
| 2be40 | 6f 75 70 20 27 65 6c 6e 6f 64 65 0a 20 20 3a 74 79 70 65 20 27 28 6c 69 73 74 20 73 79 6d 62 6f | oup.'elnode...:type.'(list.symbo |
| 2be60 | 6c 20 73 79 6d 62 6f 6c 20 73 74 72 69 6e 67 29 29 0a 0a 28 64 65 66 76 61 72 20 65 6c 6e 6f 64 | l.symbol.string))..(defvar.elnod |
| 2be80 | 65 2d 61 75 74 68 2d 64 62 0a 20 20 28 64 62 2d 6d 61 6b 65 20 65 6c 6e 6f 64 65 2d 61 75 74 68 | e-auth-db...(db-make.elnode-auth |
| 2bea0 | 2d 64 62 2d 73 70 65 63 29 0a 20 20 22 41 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 64 61 74 61 | -db-spec)..."Authentication.data |
| 2bec0 | 62 61 73 65 2e 0a 0a 54 68 69 73 20 69 73 20 74 68 65 20 64 61 74 61 20 73 74 72 75 63 74 75 72 | base...This.is.the.data.structur |
| 2bee0 | 65 20 73 74 6f 72 69 6e 67 20 68 61 73 68 65 64 20 70 61 73 73 77 6f 72 64 73 20 61 67 61 69 6e | e.storing.hashed.passwords.again |
| 2bf00 | 73 74 0a 75 73 65 72 6e 61 6d 65 20 6b 65 79 73 2e 0a 0a 49 74 20 69 73 20 61 6e 20 65 6c 6e 6f | st.username.keys...It.is.an.elno |
| 2bf20 | 64 65 20 64 61 74 61 62 61 73 65 20 77 68 69 63 68 20 63 61 6e 20 62 65 20 6f 6e 65 20 6f 66 20 | de.database.which.can.be.one.of. |
| 2bf40 | 73 65 76 65 72 61 6c 0a 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73 2e 22 29 0a 0a 28 64 65 66 | several.implementations.")..(def |
| 2bf60 | 76 61 72 20 65 6c 6e 6f 64 65 2d 73 65 63 72 65 74 2d 6b 65 79 20 22 73 65 63 72 65 74 22 0a 20 | var.elnode-secret-key."secret".. |
| 2bf80 | 20 22 53 65 63 72 65 74 20 6b 65 79 20 75 73 65 64 20 74 6f 20 68 61 73 68 20 73 65 63 72 65 74 | ."Secret.key.used.to.hash.secret |
| 2bfa0 | 73 20 6c 69 6b 65 20 70 61 73 73 77 6f 72 64 73 2e 22 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f | s.like.passwords.")..(defun.elno |
| 2bfc0 | 64 65 2d 2d 61 75 74 68 2d 6d 61 6b 65 2d 68 61 73 68 20 28 75 73 65 72 6e 61 6d 65 20 70 61 73 | de--auth-make-hash.(username.pas |
| 2bfe0 | 73 77 6f 72 64 29 0a 20 20 22 48 61 73 68 20 74 68 65 20 73 65 63 72 65 74 20 6b 65 79 20 61 6e | sword)..."Hash.the.secret.key.an |
| 2c000 | 64 20 74 68 65 20 55 53 45 52 4e 41 4d 45 20 61 6e 64 20 50 41 53 53 57 4f 52 44 2e 22 0a 20 20 | d.the.USERNAME.and.PASSWORD."... |
| 2c020 | 28 73 68 61 31 20 28 66 6f 72 6d 61 74 20 22 25 73 3a 25 73 3a 25 73 22 0a 20 20 20 20 20 20 20 | (sha1.(format."%s:%s:%s"........ |
| 2c040 | 20 20 20 20 20 20 20 20 20 65 6c 6e 6f 64 65 2d 73 65 63 72 65 74 2d 6b 65 79 0a 20 20 20 20 20 | .........elnode-secret-key...... |
| 2c060 | 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ...........username............. |
| 2c080 | 20 20 20 20 70 61 73 73 77 6f 72 64 29 29 29 0a 0a 28 64 65 66 76 61 72 20 65 6c 6e 6f 64 65 2d | ....password)))..(defvar.elnode- |
| 2c0a0 | 2d 61 75 74 68 2d 75 73 65 72 2d 61 64 64 2d 64 61 74 61 62 61 73 65 73 2d 68 69 73 74 6f 72 79 | -auth-user-add-databases-history |
| 2c0c0 | 20 6e 69 6c 0a 20 20 22 54 68 65 20 68 69 73 74 6f 72 79 20 6f 66 20 73 79 6d 62 6f 6c 73 20 75 | .nil..."The.history.of.symbols.u |
| 2c0e0 | 73 65 64 20 66 6f 72 20 61 75 74 68 20 64 61 74 61 62 61 73 65 73 2e 22 29 0a 0a 28 64 65 66 76 | sed.for.auth.databases.")..(defv |
| 2c100 | 61 72 20 65 6c 6e 6f 64 65 2d 2d 61 75 74 68 2d 75 73 65 72 2d 61 64 64 2d 75 73 65 72 6e 61 6d | ar.elnode--auth-user-add-usernam |
| 2c120 | 65 2d 68 69 73 74 6f 72 79 20 6e 69 6c 0a 20 20 22 54 68 65 20 68 69 73 74 6f 72 79 20 6f 66 20 | e-history.nil..."The.history.of. |
| 2c140 | 75 73 65 72 6e 61 6d 65 73 20 75 73 65 64 20 66 6f 72 20 61 75 74 68 20 64 61 74 61 62 61 73 65 | usernames.used.for.auth.database |
| 2c160 | 73 2e 22 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 75 73 65 72 2d 61 64 | s.")..(defun.elnode-auth-user-ad |
| 2c180 | 64 20 28 75 73 65 72 6e 61 6d 65 20 70 61 73 73 77 6f 72 64 20 26 6f 70 74 69 6f 6e 61 6c 20 61 | d.(username.password.&optional.a |
| 2c1a0 | 75 74 68 2d 64 62 29 0a 20 20 22 43 6f 6d 6d 61 6e 64 20 74 6f 20 61 64 64 20 61 20 75 73 65 72 | uth-db)..."Command.to.add.a.user |
| 2c1c0 | 20 74 6f 20 74 68 65 20 69 6e 74 65 72 6e 61 6c 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 | .to.the.internal.authentication. |
| 2c1e0 | 64 61 74 61 62 61 73 65 2e 0a 0a 57 69 74 68 20 70 72 65 66 69 78 2d 61 72 67 20 61 6c 73 6f 20 | database...With.prefix-arg.also. |
| 2c200 | 72 65 71 75 65 73 74 20 74 68 65 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 64 61 74 61 62 | request.the.authentication.datab |
| 2c220 | 61 73 65 20 76 61 72 69 61 62 6c 65 0a 6e 61 6d 65 2e 20 20 54 68 65 20 61 75 74 68 65 6e 74 69 | ase.variable.name...The.authenti |
| 2c240 | 63 61 74 69 6f 6e 20 64 61 74 61 62 61 73 65 20 6d 75 73 74 20 65 78 69 73 74 2e 20 20 42 79 20 | cation.database.must.exist...By. |
| 2c260 | 64 65 66 61 75 6c 74 20 74 68 65 0a 6d 61 69 6e 20 60 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 64 62 | default.the.main.`elnode-auth-db |
| 2c280 | 27 20 69 73 20 75 73 65 64 2e 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 76 65 0a 20 20 20 28 6c | '.is.used."...(interactive....(l |
| 2c2a0 | 69 73 74 20 28 72 65 61 64 2d 66 72 6f 6d 2d 6d 69 6e 69 62 75 66 66 65 72 0a 20 20 20 20 20 20 | ist.(read-from-minibuffer....... |
| 2c2c0 | 20 20 20 20 22 75 73 65 72 6e 61 6d 65 3a 20 22 20 6e 69 6c 20 6e 69 6c 20 6e 69 6c 0a 20 20 20 | ...."username:.".nil.nil.nil.... |
| 2c2e0 | 20 20 20 20 20 20 20 27 65 6c 6e 6f 64 65 2d 2d 61 75 74 68 2d 75 73 65 72 2d 61 64 64 2d 75 73 | .......'elnode--auth-user-add-us |
| 2c300 | 65 72 6e 61 6d 65 2d 68 69 73 74 6f 72 79 29 0a 20 20 20 20 20 20 20 20 20 28 72 65 61 64 2d 70 | ername-history)..........(read-p |
| 2c320 | 61 73 73 77 64 20 22 70 61 73 73 77 6f 72 64 3a 20 22 29 0a 20 20 20 20 20 20 20 20 20 28 77 68 | asswd."password:.")..........(wh |
| 2c340 | 65 6e 20 63 75 72 72 65 6e 74 2d 70 72 65 66 69 78 2d 61 72 67 0a 20 20 20 20 20 20 20 20 20 20 | en.current-prefix-arg........... |
| 2c360 | 20 28 69 6e 74 65 72 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6d 70 6c 65 74 69 6e 67 | .(intern.............(completing |
| 2c380 | 2d 72 65 61 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 22 61 75 74 68 20 64 61 74 61 62 61 73 | -read.............."auth.databas |
| 2c3a0 | 65 20 76 61 72 69 61 62 6c 65 20 28 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 75 73 65 72 2d 64 62 29 | e.variable.(elnode-auth-user-db) |
| 2c3c0 | 3a 20 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 61 72 72 61 79 0a 20 20 20 20 20 20 20 | :."..............obarray........ |
| 2c3e0 | 20 20 20 20 20 20 6e 69 6c 20 74 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 27 65 6c | ......nil.t.nil..............'el |
| 2c400 | 6e 6f 64 65 2d 2d 61 75 74 68 2d 75 73 65 72 2d 61 64 64 2d 64 61 74 61 62 61 73 65 73 2d 68 69 | node--auth-user-add-databases-hi |
| 2c420 | 73 74 6f 72 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 27 65 6c 6e 6f 64 65 2d 61 75 74 68 2d | story..............'elnode-auth- |
| 2c440 | 64 62 29 29 29 29 29 0a 20 20 28 75 6e 6c 65 73 73 20 61 75 74 68 2d 64 62 0a 20 20 20 20 28 73 | db)))))...(unless.auth-db.....(s |
| 2c460 | 65 74 71 20 61 75 74 68 2d 64 62 20 27 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 64 62 29 29 0a 20 20 | etq.auth-db.'elnode-auth-db))... |
| 2c480 | 28 64 62 2d 70 75 74 0a 20 20 20 75 73 65 72 6e 61 6d 65 0a 20 20 20 60 28 28 22 74 6f 6b 65 6e | (db-put....username....`(("token |
| 2c4a0 | 22 20 2e 20 2c 28 65 6c 6e 6f 64 65 2d 2d 61 75 74 68 2d 6d 61 6b 65 2d 68 61 73 68 0a 20 20 20 | "...,(elnode--auth-make-hash.... |
| 2c4c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 6e 61 6d 65 20 70 61 73 73 77 6f 72 64 | ...............username.password |
| 2c4e0 | 29 29 0a 20 20 20 20 20 28 22 75 73 65 72 6e 61 6d 65 22 20 2e 20 2c 75 73 65 72 6e 61 6d 65 29 | ))......("username"...,username) |
| 2c500 | 29 0a 20 20 20 28 73 79 6d 62 6f 6c 2d 76 61 6c 75 65 20 61 75 74 68 2d 64 62 29 29 0a 20 20 28 | )....(symbol-value.auth-db))...( |
| 2c520 | 6d 65 73 73 61 67 65 20 22 75 73 65 72 6e 61 6d 65 20 69 73 20 25 73 22 20 75 73 65 72 6e 61 6d | message."username.is.%s".usernam |
| 2c540 | 65 29 29 0a 0a 28 64 65 66 75 6e 2a 20 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 75 73 65 72 2d 70 20 | e))..(defun*.elnode-auth-user-p. |
| 2c560 | 28 75 73 65 72 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | (username....................... |
| 2c580 | 20 20 20 20 20 20 70 61 73 73 77 6f 72 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ......password.................. |
| 2c5a0 | 20 20 20 20 20 20 20 20 20 20 20 26 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...........&key................. |
| 2c5c0 | 20 20 20 20 20 20 20 20 20 20 20 20 61 75 74 68 2d 74 65 73 74 29 0a 20 20 22 44 6f 65 73 20 74 | ............auth-test)..."Does.t |
| 2c5e0 | 68 65 20 41 55 54 48 2d 54 45 53 54 20 70 61 73 73 3f 0a 0a 54 68 65 20 70 61 73 73 77 6f 72 64 | he.AUTH-TEST.pass?..The.password |
| 2c600 | 20 69 73 20 73 74 6f 72 65 64 20 69 6e 20 74 68 65 20 64 62 20 68 61 73 68 65 64 20 6b 65 79 65 | .is.stored.in.the.db.hashed.keye |
| 2c620 | 64 20 62 79 20 74 68 65 20 55 53 45 52 4e 41 4d 45 2c 0a 74 68 69 73 20 6c 6f 6f 6b 73 20 75 70 | d.by.the.USERNAME,.this.looks.up |
| 2c640 | 20 61 6e 64 20 74 65 73 74 73 20 74 68 65 20 68 61 73 68 2e 0a 0a 54 68 65 20 41 55 54 48 2d 44 | .and.tests.the.hash...The.AUTH-D |
| 2c660 | 42 20 69 73 20 61 6e 20 60 64 62 27 2c 20 62 79 20 64 65 66 61 75 6c 74 20 69 74 20 69 73 0a 60 | B.is.an.`db',.by.default.it.is.` |
| 2c680 | 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 64 62 27 22 0a 20 20 28 6c 65 74 20 28 28 74 6f 6b 65 6e 20 | elnode-auth-db'"...(let.((token. |
| 2c6a0 | 28 65 6c 6e 6f 64 65 2d 2d 61 75 74 68 2d 6d 61 6b 65 2d 68 61 73 68 20 75 73 65 72 6e 61 6d 65 | (elnode--auth-make-hash.username |
| 2c6c0 | 20 70 61 73 73 77 6f 72 64 29 29 29 0a 20 20 20 20 28 65 71 75 61 6c 20 74 6f 6b 65 6e 20 28 66 | .password))).....(equal.token.(f |
| 2c6e0 | 75 6e 63 61 6c 6c 20 61 75 74 68 2d 74 65 73 74 20 75 73 65 72 6e 61 6d 65 29 29 29 29 0a 0a 0a | uncall.auth-test.username))))... |
| 2c700 | 28 64 65 66 76 61 72 20 65 6c 6e 6f 64 65 2d 6c 6f 67 67 65 64 69 6e 2d 64 62 20 28 6d 61 6b 65 | (defvar.elnode-loggedin-db.(make |
| 2c720 | 2d 68 61 73 68 2d 74 61 62 6c 65 20 3a 74 65 73 74 20 27 65 71 75 61 6c 29 0a 20 20 22 53 74 6f | -hash-table.:test.'equal)..."Sto |
| 2c740 | 72 65 73 20 6c 6f 67 69 6e 73 20 2d 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 73 65 73 73 | res.logins.-.authentication.sess |
| 2c760 | 69 6f 6e 73 2e 0a 0a 53 65 65 20 60 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 6c 6f 67 69 6e 27 20 66 | ions...See.`elnode-auth-login'.f |
| 2c780 | 6f 72 20 68 6f 77 20 74 68 69 73 20 69 73 20 75 70 64 61 74 65 64 2e 22 29 0a 0a 0a 28 70 72 6f | or.how.this.is.updated.")...(pro |
| 2c7a0 | 67 6e 0a 20 20 3b 3b 20 53 65 74 73 20 75 70 20 74 68 65 20 65 6c 6e 6f 64 65 20 61 75 74 68 20 | gn...;;.Sets.up.the.elnode.auth. |
| 2c7c0 | 65 72 72 6f 72 73 0a 20 20 28 70 75 74 20 27 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 63 72 65 64 65 | errors...(put.'elnode-auth-crede |
| 2c7e0 | 6e 74 69 61 6c 73 0a 20 20 20 20 20 20 20 27 65 72 72 6f 72 2d 63 6f 6e 64 69 74 69 6f 6e 73 0a | ntials........'error-conditions. |
| 2c800 | 20 20 20 20 20 20 20 27 28 65 72 72 6f 72 20 65 6c 6e 6f 64 65 20 65 6c 6e 6f 64 65 2d 61 75 74 | .......'(error.elnode.elnode-aut |
| 2c820 | 68 20 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 63 72 65 64 65 6e 74 69 61 6c 73 29 29 0a 20 20 28 70 | h.elnode-auth-credentials))...(p |
| 2c840 | 75 74 20 27 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 63 72 65 64 65 6e 74 69 61 6c 73 0a 20 20 20 20 | ut.'elnode-auth-credentials..... |
| 2c860 | 20 20 20 27 65 72 72 6f 72 2d 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 22 45 6c 6e 6f 64 65 | ...'error-message........"Elnode |
| 2c880 | 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 66 61 69 6c 65 64 22 29 0a 0a 20 20 3b 3b 20 46 | .authentication.failed")....;;.F |
| 2c8a0 | 6f 72 20 66 61 69 6c 69 6e 67 20 63 6f 6f 6b 69 65 73 0a 20 20 28 70 75 74 20 27 65 6c 6e 6f 64 | or.failing.cookies...(put.'elnod |
| 2c8c0 | 65 2d 61 75 74 68 2d 74 6f 6b 65 6e 0a 20 20 20 20 20 20 20 27 65 72 72 6f 72 2d 63 6f 6e 64 69 | e-auth-token........'error-condi |
| 2c8e0 | 74 69 6f 6e 73 0a 20 20 20 20 20 20 20 27 28 65 72 72 6f 72 20 65 6c 6e 6f 64 65 20 65 6c 6e 6f | tions........'(error.elnode.elno |
| 2c900 | 64 65 2d 61 75 74 68 20 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 74 6f 6b 65 6e 29 29 0a 20 20 28 70 | de-auth.elnode-auth-token))...(p |
| 2c920 | 75 74 20 27 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 74 6f 6b 65 6e 0a 20 20 20 20 20 20 20 27 65 72 | ut.'elnode-auth-token........'er |
| 2c940 | 72 6f 72 2d 6d 65 73 73 61 67 65 0a 20 20 20 20 20 20 20 22 45 6c 6e 6f 64 65 20 61 75 74 68 65 | ror-message........"Elnode.authe |
| 2c960 | 6e 74 69 63 61 74 69 6f 6e 20 66 61 69 6c 65 64 22 29 29 0a 0a 28 64 65 66 75 6e 2a 20 65 6c 6e | ntication.failed"))..(defun*.eln |
| 2c980 | 6f 64 65 2d 61 75 74 68 2d 6c 6f 67 69 6e 20 28 75 73 65 72 6e 61 6d 65 0a 20 20 20 20 20 20 20 | ode-auth-login.(username........ |
| 2c9a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73 73 77 6f 72 64 0a 20 20 20 | ....................password.... |
| 2c9c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 26 6b 65 79 0a 20 20 20 | ........................&key.... |
| 2c9e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 75 74 68 2d 74 65 73 | ........................auth-tes |
| 2ca00 | 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f | t............................(lo |
| 2ca20 | 67 67 65 64 69 6e 2d 64 62 20 65 6c 6e 6f 64 65 2d 6c 6f 67 67 65 64 69 6e 2d 64 62 29 29 0a 20 | ggedin-db.elnode-loggedin-db)).. |
| 2ca40 | 20 22 4c 6f 67 20 61 20 75 73 65 72 20 69 6e 2e 0a 0a 43 68 65 63 6b 20 74 68 65 20 55 53 45 52 | ."Log.a.user.in...Check.the.USER |
| 2ca60 | 4e 41 4d 45 20 61 6e 64 20 50 41 53 53 57 4f 52 44 20 77 69 74 68 20 60 65 6c 6e 6f 64 65 2d 61 | NAME.and.PASSWORD.with.`elnode-a |
| 2ca80 | 75 74 68 2d 75 73 65 72 2d 70 27 20 61 6e 64 0a 74 68 65 6e 20 75 70 64 61 74 65 20 60 65 6c 6e | uth-user-p'.and.then.update.`eln |
| 2caa0 | 6f 64 65 2d 6c 6f 67 67 65 64 69 6e 2d 64 62 27 20 77 69 74 68 20 74 68 65 20 75 73 65 72 6e 61 | ode-loggedin-db'.with.the.userna |
| 2cac0 | 6d 65 20 61 6e 64 20 74 68 65 20 6c 6f 67 69 6e 0a 72 65 63 6f 72 64 2e 0a 0a 54 61 6b 65 73 20 | me.and.the.login.record...Takes. |
| 2cae0 | 6f 70 74 69 6f 6e 61 6c 20 41 55 54 48 2d 44 42 20 77 68 69 63 68 20 69 73 20 74 68 65 20 64 61 | optional.AUTH-DB.which.is.the.da |
| 2cb00 | 74 61 62 61 73 65 20 76 61 72 69 61 62 6c 65 20 74 6f 0a 75 73 65 20 28 77 68 69 63 68 20 69 73 | tabase.variable.to.use.(which.is |
| 2cb20 | 20 60 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 64 62 27 20 62 79 20 64 65 66 61 75 6c 74 29 20 61 6e | .`elnode-auth-db'.by.default).an |
| 2cb40 | 64 20 4c 4f 47 47 45 44 49 4e 2d 44 42 20 77 68 69 63 68 0a 69 73 20 74 68 65 20 6c 6f 67 67 65 | d.LOGGEDIN-DB.which.is.the.logge |
| 2cb60 | 64 2d 69 6e 20 73 74 61 74 65 20 64 61 74 61 62 61 73 65 20 74 6f 20 75 73 65 20 61 6e 64 20 77 | d-in.state.database.to.use.and.w |
| 2cb80 | 68 69 63 68 20 69 73 0a 60 65 6c 6e 6f 64 65 2d 6c 6f 67 67 65 64 69 6e 2d 64 62 27 20 62 79 20 | hich.is.`elnode-loggedin-db'.by. |
| 2cba0 | 64 65 66 61 75 6c 74 2e 22 0a 20 20 3b 3b 20 46 49 58 4d 45 20 2d 20 70 61 73 73 20 69 6e 20 74 | default."...;;.FIXME.-.pass.in.t |
| 2cbc0 | 68 65 20 74 65 73 74 20 66 75 6e 63 74 69 6f 6e 0a 20 20 28 69 66 20 28 65 6c 6e 6f 64 65 2d 61 | he.test.function...(if.(elnode-a |
| 2cbe0 | 75 74 68 2d 75 73 65 72 2d 70 20 75 73 65 72 6e 61 6d 65 20 70 61 73 73 77 6f 72 64 20 3a 61 75 | uth-user-p.username.password.:au |
| 2cc00 | 74 68 2d 74 65 73 74 20 61 75 74 68 2d 74 65 73 74 29 0a 20 20 20 20 20 20 28 6c 65 74 2a 20 28 | th-test.auth-test).......(let*.( |
| 2cc20 | 28 72 6e 64 73 74 72 20 28 66 6f 72 6d 61 74 20 22 25 64 22 20 28 72 61 6e 64 6f 6d 29 29 29 0a | (rndstr.(format."%d".(random))). |
| 2cc40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 68 61 73 68 20 28 73 68 61 31 20 28 66 6f 72 6d 61 74 | .............(hash.(sha1.(format |
| 2cc60 | 20 22 25 73 3a 25 73 3a 25 73 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ."%s:%s:%s"..................... |
| 2cc80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 | .............username........... |
| 2cca0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 6e 64 73 74 72 0a 20 20 | .......................rndstr... |
| 2ccc0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 | ...............................e |
| 2cce0 | 6c 6e 6f 64 65 2d 73 65 63 72 65 74 2d 6b 65 79 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | lnode-secret-key)))............. |
| 2cd00 | 20 28 75 73 65 72 2d 72 65 63 6f 72 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 | .(user-record...............(lis |
| 2cd20 | 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 75 73 65 72 20 75 73 65 72 6e 61 6d 65 0a | t................:user.username. |
| 2cd40 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 74 6f 6b 65 6e 20 72 6e 64 73 74 72 0a 20 20 20 | ...............:token.rndstr.... |
| 2cd60 | 20 20 20 20 20 20 20 20 20 20 20 20 3a 68 61 73 68 20 68 61 73 68 29 29 29 0a 20 20 20 20 20 20 | ............:hash.hash)))....... |
| 2cd80 | 20 20 28 70 75 74 68 61 73 68 20 75 73 65 72 6e 61 6d 65 20 75 73 65 72 2d 72 65 63 6f 72 64 20 | ..(puthash.username.user-record. |
| 2cda0 | 6c 6f 67 67 65 64 69 6e 2d 64 62 29 0a 20 20 20 20 20 20 20 20 68 61 73 68 29 0a 20 20 20 20 20 | loggedin-db).........hash)...... |
| 2cdc0 | 20 3b 3b 20 45 6c 73 65 20 69 74 20 77 61 73 20 62 61 64 20 73 6f 20 74 68 72 6f 77 20 61 6e 20 | .;;.Else.it.was.bad.so.throw.an. |
| 2cde0 | 65 72 72 6f 72 2e 0a 20 20 20 20 20 20 28 73 69 67 6e 61 6c 20 27 65 6c 6e 6f 64 65 2d 61 75 74 | error........(signal.'elnode-aut |
| 2ce00 | 68 2d 63 72 65 64 65 6e 74 69 61 6c 73 20 28 6c 69 73 74 20 75 73 65 72 6e 61 6d 65 20 70 61 73 | h-credentials.(list.username.pas |
| 2ce20 | 73 77 6f 72 64 29 29 29 29 0a 0a 28 64 65 66 75 6e 2a 20 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 63 | sword))))..(defun*.elnode-auth-c |
| 2ce40 | 68 65 63 6b 2d 70 20 28 75 73 65 72 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | heck-p.(username................ |
| 2ce60 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ..............token............. |
| 2ce80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 26 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 | .................&key........... |
| 2cea0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 67 67 65 64 69 6e 2d 64 62 20 | ...................(loggedin-db. |
| 2cec0 | 65 6c 6e 6f 64 65 2d 6c 6f 67 67 65 64 69 6e 2d 64 62 29 29 0a 20 20 22 43 68 65 63 6b 20 6c 6f | elnode-loggedin-db))..."Check.lo |
| 2cee0 | 67 69 6e 20 73 74 61 74 75 73 20 6f 66 20 74 68 65 20 55 53 45 52 4e 41 4d 45 20 61 67 61 69 6e | gin.status.of.the.USERNAME.again |
| 2cf00 | 73 74 20 74 68 65 20 68 61 73 68 65 64 20 54 4f 4b 45 4e 2e 0a 0a 4f 70 74 69 6f 6e 61 6c 6c 79 | st.the.hashed.TOKEN...Optionally |
| 2cf20 | 20 75 73 65 20 74 68 65 20 4c 4f 47 47 45 44 49 4e 2d 44 42 20 73 75 70 70 6c 69 65 64 2e 20 20 | .use.the.LOGGEDIN-DB.supplied... |
| 2cf40 | 42 79 20 64 65 66 61 75 6c 74 20 74 68 69 73 20 69 73 0a 60 65 6c 6e 6f 64 65 2d 6c 6f 67 67 65 | By.default.this.is.`elnode-logge |
| 2cf60 | 64 69 6e 2d 64 62 27 2e 22 0a 20 20 28 6c 65 74 20 28 28 72 65 63 6f 72 64 20 28 67 65 74 68 61 | din-db'."...(let.((record.(getha |
| 2cf80 | 73 68 20 75 73 65 72 6e 61 6d 65 20 6c 6f 67 67 65 64 69 6e 2d 64 62 29 29 29 0a 20 20 20 20 28 | sh.username.loggedin-db))).....( |
| 2cfa0 | 65 71 75 61 6c 20 74 6f 6b 65 6e 20 28 70 6c 69 73 74 2d 67 65 74 20 72 65 63 6f 72 64 20 3a 68 | equal.token.(plist-get.record.:h |
| 2cfc0 | 61 73 68 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 63 6f 6f 6b | ash))))..(defun.elnode-auth-cook |
| 2cfe0 | 69 65 2d 64 65 63 6f 64 65 20 28 63 6f 6f 6b 69 65 2d 76 61 6c 75 65 29 0a 20 20 22 44 65 63 6f | ie-decode.(cookie-value)..."Deco |
| 2d000 | 64 65 20 61 6e 20 65 6e 63 6f 64 65 64 20 65 6c 6e 6f 64 65 20 61 75 74 68 20 43 4f 4f 4b 49 45 | de.an.encoded.elnode.auth.COOKIE |
| 2d020 | 2d 56 41 4c 55 45 2e 22 0a 20 20 28 77 68 65 6e 20 28 73 74 72 69 6e 67 2d 6d 61 74 63 68 20 22 | -VALUE."...(when.(string-match." |
| 2d040 | 5c 5c 28 2e 2a 5c 5c 29 3a 3a 5c 5c 28 2e 2a 5c 5c 29 22 20 63 6f 6f 6b 69 65 2d 76 61 6c 75 65 | \\(.*\\)::\\(.*\\)".cookie-value |
| 2d060 | 29 0a 20 20 20 20 28 63 6f 6e 73 20 28 6d 61 74 63 68 2d 73 74 72 69 6e 67 20 31 20 63 6f 6f 6b | ).....(cons.(match-string.1.cook |
| 2d080 | 69 65 2d 76 61 6c 75 65 29 0a 20 20 20 20 20 20 20 20 20 20 28 6d 61 74 63 68 2d 73 74 72 69 6e | ie-value)...........(match-strin |
| 2d0a0 | 67 20 32 20 63 6f 6f 6b 69 65 2d 76 61 6c 75 65 29 29 29 29 0a 0a 28 64 65 66 75 6e 2a 20 65 6c | g.2.cookie-value))))..(defun*.el |
| 2d0c0 | 6e 6f 64 65 2d 61 75 74 68 2d 67 65 74 2d 63 6f 6f 6b 69 65 2d 76 61 6c 75 65 20 28 68 74 74 70 | node-auth-get-cookie-value.(http |
| 2d0e0 | 63 6f 6e 20 26 6b 65 79 20 28 63 6f 6f 6b 69 65 2d 6e 61 6d 65 20 22 65 6c 6e 6f 64 65 2d 61 75 | con.&key.(cookie-name."elnode-au |
| 2d100 | 74 68 22 29 29 0a 20 20 22 52 65 74 75 72 6e 20 74 68 65 20 64 65 63 6f 64 65 64 20 76 61 6c 75 | th"))..."Return.the.decoded.valu |
| 2d120 | 65 20 66 6f 72 20 43 4f 4f 4b 49 45 2d 4e 41 4d 45 2e 0a 0a 42 79 20 64 65 66 61 75 6c 74 20 69 | e.for.COOKIE-NAME...By.default.i |
| 2d140 | 74 27 73 20 5c 22 65 6c 6e 6f 64 65 2d 61 75 74 68 5c 22 20 62 75 74 20 79 6f 75 20 73 68 6f 75 | t's.\"elnode-auth\".but.you.shou |
| 2d160 | 6c 64 20 75 73 65 20 77 68 61 74 65 76 65 72 0a 63 6f 6f 6b 69 65 2d 6e 61 6d 65 20 79 6f 75 27 | ld.use.whatever.cookie-name.you' |
| 2d180 | 72 65 20 75 73 69 6e 67 20 66 6f 72 20 79 6f 75 72 20 61 70 70 2e 22 0a 20 20 28 6c 65 74 2a 20 | re.using.for.your.app."...(let*. |
| 2d1a0 | 28 28 63 6f 6f 6b 69 65 2d 76 61 6c 75 65 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 63 6f 6f 6b | ((cookie-value.(elnode-http-cook |
| 2d1c0 | 69 65 20 68 74 74 70 63 6f 6e 20 63 6f 6f 6b 69 65 2d 6e 61 6d 65 20 74 29 29 0a 20 20 20 20 20 | ie.httpcon.cookie-name.t))...... |
| 2d1e0 | 20 20 20 20 28 64 65 63 6f 64 65 64 2d 63 6f 6e 73 20 28 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 63 | ....(decoded-cons.(elnode-auth-c |
| 2d200 | 6f 6f 6b 69 65 2d 64 65 63 6f 64 65 20 28 6f 72 20 63 6f 6f 6b 69 65 2d 76 61 6c 75 65 20 22 22 | ookie-decode.(or.cookie-value."" |
| 2d220 | 29 29 29 29 0a 20 20 20 20 64 65 63 6f 64 65 64 2d 63 6f 6e 73 29 29 0a 0a 28 64 65 66 75 6e 2a | )))).....decoded-cons))..(defun* |
| 2d240 | 20 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 63 6f 6f 6b 69 65 2d 63 68 65 63 6b 2d 70 20 28 68 74 74 | .elnode-auth-cookie-check-p.(htt |
| 2d260 | 70 63 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | pcon............................ |
| 2d280 | 20 20 20 20 20 20 20 20 20 26 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .........&key................... |
| 2d2a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6f 6b 69 65 2d 6e 61 6d 65 20 22 | ..................(cookie-name." |
| 2d2c0 | 65 6c 6e 6f 64 65 2d 61 75 74 68 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | elnode-auth")................... |
| 2d2e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 67 67 65 64 69 6e 2d 64 62 20 65 | ..................(loggedin-db.e |
| 2d300 | 6c 6e 6f 64 65 2d 6c 6f 67 67 65 64 69 6e 2d 64 62 29 29 0a 20 20 22 43 68 65 63 6b 20 74 68 61 | lnode-loggedin-db))..."Check.tha |
| 2d320 | 74 20 74 68 65 20 75 73 65 72 20 69 73 20 6c 6f 67 67 65 64 69 6e 20 61 63 63 6f 72 64 69 6e 67 | t.the.user.is.loggedin.according |
| 2d340 | 20 74 6f 20 74 68 65 20 63 6f 6f 6b 69 65 2e 0a 0a 54 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 | .to.the.cookie...The.name.of.the |
| 2d360 | 20 63 6f 6f 6b 69 65 20 63 61 6e 20 62 65 20 73 75 70 70 6c 69 65 64 20 77 69 74 68 20 3a 43 4f | .cookie.can.be.supplied.with.:CO |
| 2d380 | 4f 4b 49 45 2d 4e 41 4d 45 20 2d 20 62 79 0a 64 65 66 61 75 6c 74 20 69 73 20 69 73 20 5c 22 65 | OKIE-NAME.-.by.default.is.is.\"e |
| 2d3a0 | 6c 6e 6f 64 65 2d 61 75 74 68 5c 22 2e 0a 0a 4c 4f 47 47 45 44 49 4e 2d 44 42 20 63 61 6e 20 62 | lnode-auth\"...LOGGEDIN-DB.can.b |
| 2d3c0 | 65 20 61 20 6c 6f 67 67 65 64 69 6e 20 73 74 61 74 65 20 64 61 74 61 62 61 73 65 20 77 68 69 63 | e.a.loggedin.state.database.whic |
| 2d3e0 | 68 20 69 73 20 65 78 70 65 63 74 65 64 20 74 6f 0a 62 65 20 61 20 60 64 62 27 2e 20 20 42 79 20 | h.is.expected.to.be.a.`db'...By. |
| 2d400 | 64 65 66 61 75 6c 74 20 69 74 20 69 73 20 60 65 6c 6e 6f 64 65 2d 6c 6f 67 67 65 64 69 6e 2d 64 | default.it.is.`elnode-loggedin-d |
| 2d420 | 62 27 2e 22 0a 20 20 28 6c 65 74 20 28 28 63 6f 6f 6b 69 65 2d 63 6f 6e 73 20 28 65 6c 6e 6f 64 | b'."...(let.((cookie-cons.(elnod |
| 2d440 | 65 2d 61 75 74 68 2d 67 65 74 2d 63 6f 6f 6b 69 65 2d 76 61 6c 75 65 0a 20 20 20 20 20 20 20 20 | e-auth-get-cookie-value......... |
| 2d460 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 74 74 70 63 6f 6e 20 3a 63 6f 6f 6b 69 65 2d 6e 61 | ..............httpcon.:cookie-na |
| 2d480 | 6d 65 20 63 6f 6f 6b 69 65 2d 6e 61 6d 65 29 29 29 0a 20 20 20 20 28 69 66 20 28 6e 6f 74 20 63 | me.cookie-name))).....(if.(not.c |
| 2d4a0 | 6f 6f 6b 69 65 2d 63 6f 6e 73 29 0a 20 20 20 20 20 20 20 20 28 73 69 67 6e 61 6c 20 27 65 6c 6e | ookie-cons).........(signal.'eln |
| 2d4c0 | 6f 64 65 2d 61 75 74 68 2d 74 6f 6b 65 6e 20 63 6f 6f 6b 69 65 2d 6e 61 6d 65 29 0a 20 20 20 20 | ode-auth-token.cookie-name)..... |
| 2d4e0 | 20 20 20 20 28 6c 65 74 20 28 28 75 73 65 72 6e 61 6d 65 20 28 63 61 72 20 63 6f 6f 6b 69 65 2d | ....(let.((username.(car.cookie- |
| 2d500 | 63 6f 6e 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 6f 6b 65 6e 20 28 63 64 72 | cons))...............(token.(cdr |
| 2d520 | 20 63 6f 6f 6b 69 65 2d 63 6f 6e 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 | .cookie-cons)))...........(elnod |
| 2d540 | 65 2d 61 75 74 68 2d 63 68 65 63 6b 2d 70 0a 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 6e 61 | e-auth-check-p............userna |
| 2d560 | 6d 65 20 74 6f 6b 65 6e 20 3a 6c 6f 67 67 65 64 69 6e 2d 64 62 20 6c 6f 67 67 65 64 69 6e 2d 64 | me.token.:loggedin-db.loggedin-d |
| 2d580 | 62 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 2a 20 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 63 6f 6f 6b | b)))))..(defun*.elnode-auth-cook |
| 2d5a0 | 69 65 2d 63 68 65 63 6b 20 28 68 74 74 70 63 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ie-check.(httpcon............... |
| 2d5c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 26 6b 65 79 0a 20 20 20 20 20 20 20 | ....................&key........ |
| 2d5e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6f 6b | ...........................(cook |
| 2d600 | 69 65 2d 6e 61 6d 65 20 22 65 6c 6e 6f 64 65 2d 61 75 74 68 22 29 0a 20 20 20 20 20 20 20 20 20 | ie-name."elnode-auth").......... |
| 2d620 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 67 67 65 64 | .........................(logged |
| 2d640 | 69 6e 2d 64 62 20 65 6c 6e 6f 64 65 2d 6c 6f 67 67 65 64 69 6e 2d 64 62 29 29 0a 20 20 22 53 69 | in-db.elnode-loggedin-db))..."Si |
| 2d660 | 67 6e 61 6c 20 6f 6e 20 63 6f 6f 6b 69 65 20 66 61 69 6c 75 72 65 2e 0a 0a 53 65 65 20 60 65 6c | gnal.on.cookie.failure...See.`el |
| 2d680 | 6e 6f 64 65 2d 61 75 74 68 2d 63 6f 6f 6b 69 65 2d 63 68 65 63 6b 2d 70 27 20 66 6f 72 20 6d 6f | node-auth-cookie-check-p'.for.mo |
| 2d6a0 | 72 65 20 64 65 74 61 69 6c 73 2e 22 0a 20 20 28 75 6e 6c 65 73 73 20 28 65 6c 6e 6f 64 65 2d 61 | re.details."...(unless.(elnode-a |
| 2d6c0 | 75 74 68 2d 63 6f 6f 6b 69 65 2d 63 68 65 63 6b 2d 70 0a 20 20 20 20 20 20 20 20 20 20 20 68 74 | uth-cookie-check-p............ht |
| 2d6e0 | 74 70 63 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f 6f 6b 69 65 2d 6e 61 6d 65 20 63 6f | tpcon............:cookie-name.co |
| 2d700 | 6f 6b 69 65 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 3a 6c 6f 67 67 65 64 69 6e 2d 64 | okie-name............:loggedin-d |
| 2d720 | 62 20 6c 6f 67 67 65 64 69 6e 2d 64 62 29 0a 20 20 20 20 3b 3b 20 4e 6f 74 20 73 75 72 65 20 74 | b.loggedin-db).....;;.Not.sure.t |
| 2d740 | 68 69 73 20 69 73 20 74 68 65 20 63 6f 72 72 65 63 74 20 74 6f 6b 65 6e 2e 2e 2e 0a 20 20 20 20 | his.is.the.correct.token........ |
| 2d760 | 28 73 69 67 6e 61 6c 20 27 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 74 6f 6b 65 6e 20 3a 6e 6f 74 2d | (signal.'elnode-auth-token.:not- |
| 2d780 | 6c 6f 67 67 65 64 2d 69 6e 29 29 29 0a 0a 28 64 65 66 76 61 72 20 65 6c 6e 6f 64 65 2d 61 75 74 | logged-in)))..(defvar.elnode-aut |
| 2d7a0 | 68 2d 68 74 74 70 63 6f 6e 20 6e 69 6c 0a 20 20 22 44 79 6e 61 6d 69 63 20 73 63 6f 70 65 20 76 | h-httpcon.nil..."Dynamic.scope.v |
| 2d7c0 | 61 72 69 61 62 6c 65 20 66 6f 72 20 48 54 54 50 20 63 6f 6e 20 77 68 69 6c 65 20 77 65 20 61 75 | ariable.for.HTTP.con.while.we.au |
| 2d7e0 | 74 68 2e 22 29 0a 0a 28 64 65 66 75 6e 2a 20 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 68 74 74 70 2d | th.")..(defun*.elnode-auth-http- |
| 2d800 | 6c 6f 67 69 6e 20 28 68 74 74 70 63 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | login.(httpcon.................. |
| 2d820 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 6e 61 6d 65 20 70 61 73 73 77 6f 72 64 | ...............username.password |
| 2d840 | 20 6c 6f 67 67 65 64 2d 69 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .logged-in...................... |
| 2d860 | 20 20 20 20 20 20 20 20 20 20 20 26 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...........&key................. |
| 2d880 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6f 6b 69 65 2d 6e 61 6d 65 20 22 65 6c | ................(cookie-name."el |
| 2d8a0 | 6e 6f 64 65 61 75 74 68 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | nodeauth")...................... |
| 2d8c0 | 20 20 20 20 20 20 20 20 20 20 20 61 75 74 68 2d 74 65 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 | ...........auth-test............ |
| 2d8e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 6f 67 67 65 64 69 6e 2d 64 | .....................(loggedin-d |
| 2d900 | 62 20 65 6c 6e 6f 64 65 2d 6c 6f 67 67 65 64 69 6e 2d 64 62 29 29 0a 20 20 22 4c 6f 67 20 74 68 | b.elnode-loggedin-db))..."Log.th |
| 2d920 | 65 20 55 53 45 52 4e 41 4d 45 20 69 6e 20 6f 6e 20 74 68 65 20 48 54 54 50 43 4f 4e 20 69 66 20 | e.USERNAME.in.on.the.HTTPCON.if. |
| 2d940 | 50 41 53 53 57 4f 52 44 20 69 73 20 63 6f 72 72 65 63 74 2e 0a 0a 49 66 20 61 75 74 68 65 6e 74 | PASSWORD.is.correct...If.authent |
| 2d960 | 69 63 61 74 69 6f 6e 20 73 75 63 63 65 65 64 73 20 73 65 74 20 74 68 65 20 72 65 6c 65 76 61 6e | ication.succeeds.set.the.relevan |
| 2d980 | 74 20 63 6f 6f 6b 69 65 20 61 6e 64 20 72 65 64 69 72 65 63 74 0a 74 68 65 20 75 73 65 72 20 74 | t.cookie.and.redirect.the.user.t |
| 2d9a0 | 6f 20 4c 4f 47 47 45 44 2d 49 4e 2e 0a 0a 41 63 74 75 61 6c 6c 79 20 75 73 65 73 20 60 65 6c 6e | o.LOGGED-IN...Actually.uses.`eln |
| 2d9c0 | 6f 64 65 2d 61 75 74 68 2d 6c 6f 67 69 6e 27 20 74 6f 20 64 6f 20 74 68 65 20 61 73 73 65 72 74 | ode-auth-login'.to.do.the.assert |
| 2d9e0 | 69 6f 6e 2e 0a 60 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 63 72 65 64 65 6e 74 69 61 6c 73 27 20 69 | ion..`elnode-auth-credentials'.i |
| 2da00 | 73 20 73 69 67 6e 61 6c 65 64 20 62 79 20 74 68 61 74 20 69 66 20 74 68 65 20 61 73 73 65 72 74 | s.signaled.by.that.if.the.assert |
| 2da20 | 69 6f 6e 20 66 61 69 6c 73 2e 0a 0a 41 55 54 48 2d 44 42 20 69 73 20 61 20 64 61 74 61 62 61 73 | ion.fails...AUTH-DB.is.a.databas |
| 2da40 | 65 2c 20 62 79 20 64 65 66 61 75 6c 74 20 60 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 64 62 27 2c 20 | e,.by.default.`elnode-auth-db',. |
| 2da60 | 69 74 27 73 20 70 61 73 73 65 64 0a 74 6f 20 60 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 6c 6f 67 69 | it's.passed.to.`elnode-auth-logi |
| 2da80 | 6e 27 2e 22 0a 20 20 28 6c 65 74 2a 20 28 28 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 68 74 74 70 63 | n'."...(let*.((elnode-auth-httpc |
| 2daa0 | 6f 6e 20 68 74 74 70 63 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 28 68 61 73 68 0a 20 20 20 20 20 | on.httpcon)..........(hash...... |
| 2dac0 | 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 6c 6f 67 69 6e 0a 20 20 20 20 20 20 20 20 | .....(elnode-auth-login......... |
| 2dae0 | 20 20 20 75 73 65 72 6e 61 6d 65 20 70 61 73 73 77 6f 72 64 0a 20 20 20 20 20 20 20 20 20 20 20 | ...username.password............ |
| 2db00 | 3a 61 75 74 68 2d 74 65 73 74 20 61 75 74 68 2d 74 65 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 | :auth-test.auth-test............ |
| 2db20 | 3a 6c 6f 67 67 65 64 69 6e 2d 64 62 20 6c 6f 67 67 65 64 69 6e 2d 64 62 29 29 29 0a 20 20 20 20 | :loggedin-db.loggedin-db)))..... |
| 2db40 | 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 68 65 61 64 65 72 2d 73 65 74 0a 20 20 20 20 20 68 74 74 | (elnode-http-header-set......htt |
| 2db60 | 70 63 6f 6e 0a 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 63 6f 6f 6b 69 65 2d 6d 61 | pcon......(elnode-http-cookie-ma |
| 2db80 | 6b 65 0a 20 20 20 20 20 20 63 6f 6f 6b 69 65 2d 6e 61 6d 65 0a 20 20 20 20 20 20 28 66 6f 72 6d | ke.......cookie-name.......(form |
| 2dba0 | 61 74 20 22 25 73 3a 3a 25 73 22 20 75 73 65 72 6e 61 6d 65 20 68 61 73 68 29 0a 20 20 20 20 20 | at."%s::%s".username.hash)...... |
| 2dbc0 | 20 3a 70 61 74 68 20 22 2f 22 29 29 0a 20 20 20 20 28 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 72 65 | .:path."/")).....(elnode-send-re |
| 2dbe0 | 64 69 72 65 63 74 20 68 74 74 70 63 6f 6e 20 28 6f 72 20 6c 6f 67 67 65 64 2d 69 6e 20 22 2f 22 | direct.httpcon.(or.logged-in."/" |
| 2dc00 | 29 29 29 29 0a 0a 28 64 65 66 63 75 73 74 6f 6d 20 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 6c 6f 67 | ))))..(defcustom.elnode-auth-log |
| 2dc20 | 69 6e 2d 70 61 67 65 20 22 3c 68 74 6d 6c 3e 0a 3c 62 6f 64 79 3e 0a 3c 66 6f 72 6d 20 6d 65 74 | in-page."<html>.<body>.<form.met |
| 2dc40 | 68 6f 64 3d 27 50 4f 53 54 27 20 61 63 74 69 6f 6e 3d 27 3c 21 23 23 45 20 74 61 72 67 65 74 20 | hod='POST'.action='<!##E.target. |
| 2dc60 | 45 23 23 21 3e 27 3e 0a 3c 69 6e 70 75 74 20 74 79 70 65 3d 27 68 69 64 64 65 6e 27 20 6e 61 6d | E##!>'>.<input.type='hidden'.nam |
| 2dc80 | 65 3d 27 72 65 64 69 72 65 63 74 27 20 76 61 6c 75 65 3d 27 3c 21 23 23 45 20 72 65 64 69 72 65 | e='redirect'.value='<!##E.redire |
| 2dca0 | 63 74 20 45 23 23 21 3e 27 2f 3e 0a 75 73 65 72 6e 61 6d 65 3a 20 3c 69 6e 70 75 74 20 74 79 70 | ct.E##!>'/>.username:.<input.typ |
| 2dcc0 | 65 3d 27 74 65 78 74 27 20 6e 61 6d 65 3d 27 75 73 65 72 6e 61 6d 65 27 2f 3e 3c 62 72 2f 3e 0a | e='text'.name='username'/><br/>. |
| 2dce0 | 70 61 73 73 77 6f 72 64 3a 20 3c 69 6e 70 75 74 20 74 79 70 65 3d 27 70 61 73 73 77 6f 72 64 27 | password:.<input.type='password' |
| 2dd00 | 20 6e 61 6d 65 3d 27 70 61 73 73 77 6f 72 64 27 2f 3e 3c 62 72 2f 3e 0a 3c 69 6e 70 75 74 20 74 | .name='password'/><br/>.<input.t |
| 2dd20 | 79 70 65 3d 27 73 75 62 6d 69 74 27 20 6e 61 6d 65 3d 27 6c 6f 67 69 6e 27 2f 3e 0a 3c 2f 66 6f | ype='submit'.name='login'/>.</fo |
| 2dd40 | 72 6d 3e 0a 3c 2f 62 6f 64 79 3e 0a 3c 2f 68 74 6d 6c 3e 22 0a 20 20 22 41 20 73 74 61 6e 64 61 | rm>.</body>.</html>"..."A.standa |
| 2dd60 | 72 64 20 6c 6f 67 69 6e 20 70 61 67 65 2c 20 75 73 65 64 20 62 79 20 60 65 6c 6e 6f 64 65 2d 61 | rd.login.page,.used.by.`elnode-a |
| 2dd80 | 75 74 68 2d 6c 6f 67 69 6e 2d 73 65 6e 64 65 72 27 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 65 6c | uth-login-sender'."...:group.'el |
| 2dda0 | 6e 6f 64 65 0a 20 20 3a 74 79 70 65 20 27 28 73 74 72 69 6e 67 29 29 0a 0a 28 64 65 66 75 6e 20 | node...:type.'(string))..(defun. |
| 2ddc0 | 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 6c 6f 67 69 6e 2d 73 65 6e 64 65 72 20 28 68 74 74 70 63 6f | elnode-auth-login-sender.(httpco |
| 2dde0 | 6e 20 74 61 72 67 65 74 20 72 65 64 69 72 65 63 74 29 0a 20 20 22 53 65 6e 64 20 74 68 65 20 6c | n.target.redirect)..."Send.the.l |
| 2de00 | 6f 67 69 6e 20 70 61 67 65 20 66 6f 72 20 61 75 74 68 20 74 6f 20 48 54 54 50 43 4f 4e 2e 0a 0a | ogin.page.for.auth.to.HTTPCON... |
| 2de20 | 54 68 65 20 6c 6f 67 69 6e 20 70 61 67 65 20 77 69 6c 6c 20 73 65 6e 64 20 69 74 73 20 61 75 74 | The.login.page.will.send.its.aut |
| 2de40 | 68 65 6e 74 69 63 61 74 69 6f 6e 20 72 65 71 75 65 73 74 20 74 6f 20 54 41 52 47 45 54 2e 0a 0a | hentication.request.to.TARGET... |
| 2de60 | 54 68 65 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 77 69 6c 6c 20 69 6e 63 6c 75 64 65 20 | The.authentication.will.include. |
| 2de80 | 75 73 65 72 6e 61 6d 65 2c 20 70 61 73 73 77 6f 72 64 20 41 4e 44 20 52 45 44 49 52 45 43 54 2c | username,.password.AND.REDIRECT, |
| 2dea0 | 0a 77 68 69 63 68 20 69 73 20 74 68 65 20 55 52 4c 20 74 6f 20 72 65 64 69 72 65 63 74 20 74 6f | .which.is.the.URL.to.redirect.to |
| 2dec0 | 20 77 68 65 6e 20 6c 6f 67 69 6e 20 69 73 20 73 75 63 63 65 73 73 66 75 6c 2e 0a 0a 54 68 69 73 | .when.login.is.successful...This |
| 2dee0 | 20 66 75 6e 63 74 69 6f 6e 20 73 65 6e 64 73 20 74 68 65 20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 | .function.sends.the.contents.of. |
| 2df00 | 74 68 65 20 63 75 73 74 6f 6d 20 76 61 72 69 61 62 6c 65 0a 60 65 6c 6e 6f 64 65 2d 61 75 74 68 | the.custom.variable.`elnode-auth |
| 2df20 | 2d 6c 6f 67 69 6e 2d 70 61 67 65 27 20 61 66 74 65 72 20 74 65 6d 70 6c 61 74 69 6e 67 20 69 74 | -login-page'.after.templating.it |
| 2df40 | 2e 22 0a 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 73 74 61 72 74 20 68 74 74 70 63 6f 6e 20 | ."...(elnode-http-start.httpcon. |
| 2df60 | 32 30 30 20 60 28 22 43 6f 6e 74 65 6e 74 2d 74 79 70 65 22 20 2e 20 22 74 65 78 74 2f 68 74 6d | 200.`("Content-type"..."text/htm |
| 2df80 | 6c 22 29 29 0a 20 20 3b 3b 20 49 74 20 77 6f 75 6c 64 20 62 65 20 6e 69 63 65 20 74 6f 20 73 75 | l"))...;;.It.would.be.nice.to.su |
| 2dfa0 | 70 70 6f 72 74 20 70 72 65 61 6d 62 6c 65 73 2e 2e 2e 20 6e 6f 74 20 73 75 72 65 20 68 6f 77 2e | pport.preambles....not.sure.how. |
| 2dfc0 | 0a 20 20 3b 3b 20 20 28 77 68 65 6e 20 70 72 65 61 6d 62 6c 65 20 28 65 6c 6e 6f 64 65 2d 68 74 | ...;;..(when.preamble.(elnode-ht |
| 2dfe0 | 74 70 2d 73 65 6e 64 2d 73 74 72 69 6e 67 20 68 74 74 70 63 6f 6e 20 70 72 65 61 6d 62 6c 65 29 | tp-send-string.httpcon.preamble) |
| 2e000 | 29 0a 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 72 65 74 75 72 6e 0a 20 20 20 68 74 74 70 63 | )...(elnode-http-return....httpc |
| 2e020 | 6f 6e 0a 20 20 20 28 77 69 74 68 2d 74 65 6d 70 2d 62 75 66 66 65 72 0a 20 20 20 20 20 28 69 6e | on....(with-temp-buffer......(in |
| 2e040 | 73 65 72 74 20 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 6c 6f 67 69 6e 2d 70 61 67 65 29 0a 20 20 20 | sert.elnode-auth-login-page).... |
| 2e060 | 20 20 28 65 6c 6e 6f 64 65 2d 2d 62 75 66 66 65 72 2d 74 65 6d 70 6c 61 74 65 0a 20 20 20 20 20 | ..(elnode--buffer-template...... |
| 2e080 | 20 28 63 75 72 72 65 6e 74 2d 62 75 66 66 65 72 29 0a 20 20 20 20 20 20 60 28 28 22 74 61 72 67 | .(current-buffer).......`(("targ |
| 2e0a0 | 65 74 22 20 2e 20 2c 74 61 72 67 65 74 29 0a 20 20 20 20 20 20 20 20 28 22 72 65 64 69 72 65 63 | et"...,target).........("redirec |
| 2e0c0 | 74 22 20 2e 20 2c 72 65 64 69 72 65 63 74 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 2a 20 65 6c | t"...,redirect))))))..(defun*.el |
| 2e0e0 | 6e 6f 64 65 2d 61 75 74 68 2d 2d 6c 6f 67 69 6e 2d 68 61 6e 64 6c 65 72 20 28 68 74 74 70 63 6f | node-auth--login-handler.(httpco |
| 2e100 | 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | n............................... |
| 2e120 | 20 20 20 20 20 20 73 65 6e 64 65 72 20 74 61 72 67 65 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 | ......sender.target............. |
| 2e140 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 26 6b 65 79 0a 20 20 20 | ........................&key.... |
| 2e160 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
| 2e180 | 20 61 75 74 68 2d 74 65 73 74 20 3b 20 61 73 73 65 72 74 20 6e 6f 74 20 6e 69 6c 3f 0a 20 20 20 | .auth-test.;.assert.not.nil?.... |
| 2e1a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
| 2e1c0 | 20 28 63 6f 6f 6b 69 65 2d 6e 61 6d 65 20 22 65 6c 6e 6f 64 65 61 75 74 68 22 29 0a 20 20 20 20 | .(cookie-name."elnodeauth")..... |
| 2e1e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ................................ |
| 2e200 | 28 6c 6f 67 67 65 64 69 6e 2d 64 62 20 65 6c 6e 6f 64 65 2d 6c 6f 67 67 65 64 69 6e 2d 64 62 29 | (loggedin-db.elnode-loggedin-db) |
| 2e220 | 29 0a 20 20 22 54 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 6c | )..."The.implementation.of.the.l |
| 2e240 | 6f 67 69 6e 20 68 61 6e 64 6c 65 72 20 66 6f 72 20 61 75 74 68 20 74 65 73 74 69 6e 67 2e 0a 0a | ogin.handler.for.auth.testing... |
| 2e260 | 54 68 69 73 20 69 73 20 74 68 65 20 68 61 6e 64 6c 65 72 20 74 68 61 74 20 69 73 20 6d 61 70 70 | This.is.the.handler.that.is.mapp |
| 2e280 | 65 64 20 74 6f 20 2f 6c 6f 67 69 6e 2f 20 28 77 68 69 63 68 20 69 73 20 74 68 65 0a 64 65 66 61 | ed.to./login/.(which.is.the.defa |
| 2e2a0 | 75 6c 74 20 6c 6f 67 69 6e 20 70 61 74 68 29 20 6f 72 20 77 68 61 74 65 76 65 72 20 79 6f 75 20 | ult.login.path).or.whatever.you. |
| 2e2c0 | 77 61 6e 74 20 74 68 65 20 6c 6f 67 69 6e 20 70 61 74 68 20 74 6f 20 62 65 2e 0a 0a 53 45 4e 44 | want.the.login.path.to.be...SEND |
| 2e2e0 | 45 52 20 69 73 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 20 77 68 69 63 68 20 77 69 6c 6c 20 73 65 | ER.is.the.function.which.will.se |
| 2e300 | 6e 64 20 74 68 65 20 6c 6f 67 69 6e 20 70 61 67 65 20 74 6f 20 74 68 65 0a 75 73 65 72 2c 20 69 | nd.the.login.page.to.the.user,.i |
| 2e320 | 74 20 74 61 6b 65 73 20 61 6e 20 48 54 54 50 43 4f 4e 2e 20 20 49 74 20 6d 75 73 74 20 73 65 6e | t.takes.an.HTTPCON...It.must.sen |
| 2e340 | 64 20 61 20 27 75 73 65 72 6e 61 6d 65 27 20 61 6e 64 0a 27 70 61 73 73 77 6f 72 64 27 20 48 54 | d.a.'username'.and.'password'.HT |
| 2e360 | 54 50 20 70 61 72 61 6d 65 74 65 72 73 20 74 6f 20 74 68 69 73 20 68 61 6e 64 6c 65 72 2e 0a 0a | TP.parameters.to.this.handler... |
| 2e380 | 54 41 52 47 45 54 20 69 73 20 74 68 65 20 70 61 74 68 20 74 68 61 74 20 77 69 6c 6c 20 62 65 20 | TARGET.is.the.path.that.will.be. |
| 2e3a0 | 75 73 65 64 20 61 73 20 74 68 65 20 6c 6f 67 69 6e 20 68 61 6e 64 6c 65 72 0a 70 61 74 68 20 28 | used.as.the.login.handler.path.( |
| 2e3c0 | 74 68 65 20 70 61 74 68 20 74 6f 20 63 61 6c 6c 20 74 68 69 73 20 68 61 6e 64 6c 65 72 29 2e 22 | the.path.to.call.this.handler)." |
| 2e3e0 | 0a 20 20 28 65 6c 6e 6f 64 65 2d 6d 65 74 68 6f 64 20 68 74 74 70 63 6f 6e 0a 20 20 20 20 20 20 | ...(elnode-method.httpcon....... |
| 2e400 | 28 47 45 54 0a 20 20 20 20 20 20 20 28 6c 65 74 20 28 28 74 6f 20 28 6f 72 0a 20 20 20 20 20 20 | (GET........(let.((to.(or....... |
| 2e420 | 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 70 61 72 61 6d 20 68 | ............(elnode-http-param.h |
| 2e440 | 74 74 70 63 6f 6e 20 22 72 65 64 69 72 65 63 74 22 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | ttpcon."redirect").............. |
| 2e460 | 20 20 20 20 20 22 2f 22 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 73 65 | ....."/")))..........(funcall.se |
| 2e480 | 6e 64 65 72 20 68 74 74 70 63 6f 6e 20 74 61 72 67 65 74 20 74 6f 29 29 29 0a 20 20 20 20 28 50 | nder.httpcon.target.to))).....(P |
| 2e4a0 | 4f 53 54 0a 20 20 20 20 20 28 6c 65 74 20 28 28 75 73 65 72 6e 61 6d 65 20 28 65 6c 6e 6f 64 65 | OST......(let.((username.(elnode |
| 2e4c0 | 2d 68 74 74 70 2d 70 61 72 61 6d 20 68 74 74 70 63 6f 6e 20 22 75 73 65 72 6e 61 6d 65 22 29 29 | -http-param.httpcon."username")) |
| 2e4e0 | 0a 20 20 20 20 20 20 20 20 20 20 20 28 70 61 73 73 77 6f 72 64 20 28 65 6c 6e 6f 64 65 2d 68 74 | ............(password.(elnode-ht |
| 2e500 | 74 70 2d 70 61 72 61 6d 20 68 74 74 70 63 6f 6e 20 22 70 61 73 73 77 6f 72 64 22 29 29 0a 20 20 | tp-param.httpcon."password"))... |
| 2e520 | 20 20 20 20 20 20 20 20 20 28 6c 6f 67 67 65 64 2d 69 6e 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 | .........(logged-in.(elnode-http |
| 2e540 | 2d 70 61 72 61 6d 20 68 74 74 70 63 6f 6e 20 22 72 65 64 69 72 65 63 74 22 29 29 29 0a 20 20 20 | -param.httpcon."redirect"))).... |
| 2e560 | 20 20 20 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 65 72 72 0a 20 20 20 20 20 20 20 20 | ....(condition-case.err......... |
| 2e580 | 20 20 20 28 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 68 74 74 70 2d 6c 6f 67 69 6e 0a 20 20 20 20 20 | ...(elnode-auth-http-login...... |
| 2e5a0 | 20 20 20 20 20 20 20 68 74 74 70 63 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 6e | .......httpcon.............usern |
| 2e5c0 | 61 6d 65 20 70 61 73 73 77 6f 72 64 20 6c 6f 67 67 65 64 2d 69 6e 0a 20 20 20 20 20 20 20 20 20 | ame.password.logged-in.......... |
| 2e5e0 | 20 20 20 3a 61 75 74 68 2d 74 65 73 74 20 61 75 74 68 2d 74 65 73 74 0a 20 20 20 20 20 20 20 20 | ...:auth-test.auth-test......... |
| 2e600 | 20 20 20 20 3a 63 6f 6f 6b 69 65 2d 6e 61 6d 65 20 63 6f 6f 6b 69 65 2d 6e 61 6d 65 29 0a 20 20 | ....:cookie-name.cookie-name)... |
| 2e620 | 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 63 72 65 64 65 6e 74 69 61 6c 73 0a | .......(elnode-auth-credentials. |
| 2e640 | 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 73 65 6e 64 2d 72 65 64 69 72 65 63 74 0a | ..........(elnode-send-redirect. |
| 2e660 | 20 20 20 20 20 20 20 20 20 20 20 68 74 74 70 63 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 28 69 | ...........httpcon............(i |
| 2e680 | 66 20 28 6e 6f 74 20 6c 6f 67 67 65 64 2d 69 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | f.(not.logged-in)............... |
| 2e6a0 | 20 74 61 72 67 65 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 20 22 | .target................(format." |
| 2e6c0 | 25 73 3f 72 65 64 69 72 65 63 74 3d 25 73 22 20 74 61 72 67 65 74 20 6c 6f 67 67 65 64 2d 69 6e | %s?redirect=%s".target.logged-in |
| 2e6e0 | 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 28 74 20 28 65 6c 6e 6f 64 65 2d 65 72 72 6f 72 0a 20 | ))))..........(t.(elnode-error.. |
| 2e700 | 20 20 20 20 20 20 20 20 20 20 20 20 22 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 2d 6c 6f 67 69 6e 2d | ............"elnode-auth--login- |
| 2e720 | 68 61 6e 64 6c 65 72 3a 20 75 6e 65 78 70 65 63 74 65 64 20 65 72 72 6f 72 3a 20 25 53 22 0a 20 | handler:.unexpected.error:.%S".. |
| 2e740 | 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 29 29 29 29 29 29 29 0a 0a 28 64 65 66 75 6e 20 65 | ............err)))))))..(defun.e |
| 2e760 | 6c 6e 6f 64 65 2d 61 75 74 68 2d 64 65 66 61 75 6c 74 2d 74 65 73 74 2d 76 30 30 31 20 28 75 73 | lnode-auth-default-test-v001.(us |
| 2e780 | 65 72 6e 61 6d 65 20 64 61 74 61 62 61 73 65 29 0a 20 20 22 54 68 65 20 66 69 72 73 74 20 74 65 | ername.database)..."The.first.te |
| 2e7a0 | 73 74 20 66 75 6e 63 74 69 6f 6e 20 75 73 65 64 20 66 6f 72 20 45 6c 6e 6f 64 65 20 61 75 74 68 | st.function.used.for.Elnode.auth |
| 2e7c0 | 2e 0a 0a 54 68 69 73 20 75 73 65 73 20 6a 75 73 74 20 74 68 65 20 6b 65 79 65 64 20 76 61 6c 75 | ...This.uses.just.the.keyed.valu |
| 2e7e0 | 65 20 6f 66 20 74 68 65 20 75 73 65 72 6e 61 6d 65 20 61 73 20 74 68 65 20 74 6f 6b 65 6e 2e 20 | e.of.the.username.as.the.token.. |
| 2e800 | 20 57 65 0a 6e 6f 20 6c 6f 6e 67 65 72 20 73 74 6f 72 65 20 64 61 74 61 62 61 73 65 73 20 6c 69 | .We.no.longer.store.databases.li |
| 2e820 | 6b 65 20 74 68 61 74 20 62 79 20 64 65 66 61 75 6c 74 2e 22 0a 20 20 28 64 62 2d 67 65 74 20 75 | ke.that.by.default."...(db-get.u |
| 2e840 | 73 65 72 6e 61 6d 65 20 64 61 74 61 62 61 73 65 29 29 0a 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 | sername.database))..(defun.elnod |
| 2e860 | 65 2d 61 75 74 68 2d 64 65 66 61 75 6c 74 2d 74 65 73 74 20 28 75 73 65 72 6e 61 6d 65 20 64 61 | e-auth-default-test.(username.da |
| 2e880 | 74 61 62 61 73 65 29 0a 20 20 22 54 68 65 20 64 65 66 61 75 6c 74 20 74 65 73 74 20 66 75 6e 63 | tabase)..."The.default.test.func |
| 2e8a0 | 74 69 6f 6e 20 75 73 65 64 20 66 6f 72 20 45 6c 6e 6f 64 65 20 61 75 74 68 2e 0a 0a 49 73 20 75 | tion.used.for.Elnode.auth...Is.u |
| 2e8c0 | 73 65 73 20 61 20 73 74 6f 72 65 64 20 61 6c 69 73 74 20 61 67 61 69 6e 73 74 20 55 53 45 52 4e | ses.a.stored.alist.against.USERN |
| 2e8e0 | 41 4d 45 2c 20 74 68 65 20 61 6c 69 73 74 20 73 68 6f 75 6c 64 20 63 6f 6e 74 61 69 6e 0a 74 68 | AME,.the.alist.should.contain.th |
| 2e900 | 65 20 6b 65 79 20 5c 22 74 6f 6b 65 6e 5c 22 20 77 69 74 68 20 61 20 75 73 65 72 27 73 20 74 6f | e.key.\"token\".with.a.user's.to |
| 2e920 | 6b 65 6e 2e 20 20 57 68 61 74 65 76 65 72 20 65 6c 73 65 20 74 68 65 20 61 6c 69 73 74 0a 63 6f | ken...Whatever.else.the.alist.co |
| 2e940 | 6e 74 61 69 6e 73 20 69 73 20 69 72 72 65 6c 65 76 61 6e 74 2e 22 0a 20 20 28 6c 65 74 20 28 28 | ntains.is.irrelevant."...(let.(( |
| 2e960 | 75 73 65 72 20 28 64 62 2d 67 65 74 20 75 73 65 72 6e 61 6d 65 20 64 61 74 61 62 61 73 65 29 29 | user.(db-get.username.database)) |
| 2e980 | 29 0a 20 20 20 20 28 77 68 65 6e 20 75 73 65 72 0a 20 20 20 20 20 20 28 61 6c 69 73 74 2d 67 65 | ).....(when.user.......(alist-ge |
| 2e9a0 | 74 20 22 74 6f 6b 65 6e 22 20 75 73 65 72 20 6e 69 6c 20 6e 69 6c 20 27 65 71 75 61 6c 29 29 29 | t."token".user.nil.nil.'equal))) |
| 2e9c0 | 29 0a 0a 28 64 65 66 75 6e 2a 20 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 2d 6d 61 6b 65 2d 6c 6f 67 | )..(defun*.elnode-auth--make-log |
| 2e9e0 | 69 6e 2d 68 61 6e 64 6c 65 72 0a 20 20 20 20 28 26 6b 65 79 0a 20 20 20 20 20 28 73 65 6e 64 65 | in-handler.....(&key......(sende |
| 2ea00 | 72 20 27 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 6c 6f 67 69 6e 2d 73 65 6e 64 65 72 29 0a 20 20 20 | r.'elnode-auth-login-sender).... |
| 2ea20 | 20 20 28 74 61 72 67 65 74 20 22 2f 6c 6f 67 69 6e 2f 22 29 0a 20 20 20 20 20 61 75 74 68 2d 74 | ..(target."/login/")......auth-t |
| 2ea40 | 65 73 74 0a 20 20 20 20 20 28 61 75 74 68 2d 64 62 20 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 64 62 | est......(auth-db.elnode-auth-db |
| 2ea60 | 29 20 3b 20 6f 6e 6c 79 20 75 73 65 64 20 69 66 20 74 68 65 20 61 75 74 68 2d 74 65 73 74 20 69 | ).;.only.used.if.the.auth-test.i |
| 2ea80 | 73 20 6e 6f 74 20 70 72 65 73 65 6e 74 0a 20 20 20 20 20 28 63 6f 6f 6b 69 65 2d 6e 61 6d 65 20 | s.not.present......(cookie-name. |
| 2eaa0 | 22 65 6c 6e 6f 64 65 61 75 74 68 22 29 0a 20 20 20 20 20 28 6c 6f 67 67 65 64 69 6e 2d 64 62 20 | "elnodeauth")......(loggedin-db. |
| 2eac0 | 65 6c 6e 6f 64 65 2d 6c 6f 67 67 65 64 69 6e 2d 64 62 29 29 0a 20 20 22 4d 61 6b 65 20 61 6e 20 | elnode-loggedin-db))..."Make.an. |
| 2eae0 | 60 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 2d 6c 6f 67 69 6e 2d 68 61 6e 64 6c 65 72 27 2c 20 62 69 | `elnode-auth--login-handler',.bi |
| 2eb00 | 6e 64 69 6e 67 20 70 61 72 61 6d 65 74 65 72 73 2e 22 0a 20 20 28 6c 61 6d 62 64 61 20 28 68 74 | nding.parameters."...(lambda.(ht |
| 2eb20 | 74 70 63 6f 6e 29 0a 20 20 20 20 28 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 2d 6c 6f 67 69 6e 2d 68 | tpcon).....(elnode-auth--login-h |
| 2eb40 | 61 6e 64 6c 65 72 0a 20 20 20 20 20 68 74 74 70 63 6f 6e 0a 20 20 20 20 20 73 65 6e 64 65 72 20 | andler......httpcon......sender. |
| 2eb60 | 74 61 72 67 65 74 0a 20 20 20 20 20 3b 3b 20 4d 61 6b 65 20 61 20 74 65 73 74 20 66 75 6e 63 74 | target......;;.Make.a.test.funct |
| 2eb80 | 69 6f 6e 20 69 66 20 77 65 20 64 6f 6e 27 74 20 68 61 76 65 20 6f 6e 65 0a 20 20 20 20 20 3a 61 | ion.if.we.don't.have.one......:a |
| 2eba0 | 75 74 68 2d 74 65 73 74 20 28 69 66 20 28 66 75 6e 63 74 69 6f 6e 70 20 61 75 74 68 2d 74 65 73 | uth-test.(if.(functionp.auth-tes |
| 2ebc0 | 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 75 74 68 2d 74 65 73 74 | t).....................auth-test |
| 2ebe0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 61 6d 62 64 61 20 28 75 73 | .....................(lambda.(us |
| 2ec00 | 65 72 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 | ername).......................(e |
| 2ec20 | 6c 6e 6f 64 65 2d 61 75 74 68 2d 64 65 66 61 75 6c 74 2d 74 65 73 74 20 75 73 65 72 6e 61 6d 65 | lnode-auth-default-test.username |
| 2ec40 | 20 61 75 74 68 2d 64 62 29 29 29 0a 20 20 20 20 20 3a 63 6f 6f 6b 69 65 2d 6e 61 6d 65 20 63 6f | .auth-db)))......:cookie-name.co |
| 2ec60 | 6f 6b 69 65 2d 6e 61 6d 65 0a 20 20 20 20 20 3a 6c 6f 67 67 65 64 69 6e 2d 64 62 20 6c 6f 67 67 | okie-name......:loggedin-db.logg |
| 2ec80 | 65 64 69 6e 2d 64 62 29 29 29 0a 0a 28 64 65 66 75 6e 2a 20 65 6c 6e 6f 64 65 2d 64 65 66 61 75 | edin-db)))..(defun*.elnode-defau |
| 2eca0 | 74 68 20 28 73 63 68 65 6d 65 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | th.(scheme-name................. |
| 2ecc0 | 20 20 20 20 20 20 20 20 26 6b 65 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ........&key.................... |
| 2ece0 | 20 20 20 20 20 28 74 65 73 74 20 3a 63 6f 6f 6b 69 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 | .....(test.:cookie)............. |
| 2ed00 | 20 20 20 20 20 20 20 20 20 20 20 20 61 75 74 68 2d 74 65 73 74 0a 20 20 20 20 20 20 20 20 20 20 | ............auth-test........... |
| 2ed20 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 61 75 74 68 2d 64 62 20 27 65 6c 6e 6f 64 65 2d 61 | ..............(auth-db.'elnode-a |
| 2ed40 | 75 74 68 2d 64 62 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | uth-db)......................... |
| 2ed60 | 28 63 6f 6f 6b 69 65 2d 6e 61 6d 65 20 22 65 6c 6e 6f 64 65 61 75 74 68 22 29 0a 20 20 20 20 20 | (cookie-name."elnodeauth")...... |
| 2ed80 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 66 61 69 6c 75 72 65 2d 74 79 70 65 | ...................(failure-type |
| 2eda0 | 20 3a 72 65 64 69 72 65 63 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .:redirect)..................... |
| 2edc0 | 20 20 20 20 28 72 65 64 69 72 65 63 74 20 22 2f 6c 6f 67 69 6e 2f 22 29 0a 20 20 20 20 20 20 20 | ....(redirect."/login/")........ |
| 2ede0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 73 65 6e 64 65 72 20 27 65 6c 6e 6f 64 65 | .................(sender.'elnode |
| 2ee00 | 2d 61 75 74 68 2d 6c 6f 67 69 6e 2d 73 65 6e 64 65 72 29 29 0a 20 20 22 44 65 66 69 6e 65 20 61 | -auth-login-sender))..."Define.a |
| 2ee20 | 6e 20 45 6c 6e 6f 64 65 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 73 63 68 65 6d 65 2e 0a | n.Elnode.authentication.scheme.. |
| 2ee40 | 0a 41 6e 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 73 63 68 65 6d 65 20 63 6f 6e 73 69 73 | .An.authentication.scheme.consis |
| 2ee60 | 74 73 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 61 74 74 72 69 62 75 74 65 73 3a 0a | ts.of.the.following.attributes:. |
| 2ee80 | 0a 54 45 53 54 20 77 68 61 74 20 73 6f 72 74 20 6f 66 20 74 65 73 74 20 69 73 20 75 73 65 64 20 | .TEST.what.sort.of.test.is.used. |
| 2eea0 | 74 6f 20 74 65 73 74 20 74 68 65 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 2c 20 62 79 0a 64 | to.test.the.authentication,.by.d |
| 2eec0 | 65 66 61 75 6c 74 20 74 68 69 73 20 69 73 20 60 3a 63 6f 6f 6b 69 65 27 2e 20 20 4e 6f 20 6f 74 | efault.this.is.`:cookie'...No.ot |
| 2eee0 | 68 65 72 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 74 65 73 74 73 20 61 72 65 0a 70 6f 73 | her.authentication.tests.are.pos |
| 2ef00 | 73 69 62 6c 65 20 72 69 67 68 74 20 6e 6f 77 20 62 75 74 20 69 6e 20 74 68 65 20 66 75 74 75 72 | sible.right.now.but.in.the.futur |
| 2ef20 | 65 20 74 68 65 72 65 20 6d 69 67 68 74 20 62 65 20 6d 61 6e 79 20 28 74 68 65 72 65 0a 6d 69 67 | e.there.might.be.many.(there.mig |
| 2ef40 | 68 74 20 61 6c 73 6f 20 62 65 20 61 20 67 65 6e 65 72 61 6c 20 60 3a 66 75 6e 63 74 69 6f 6e 27 | ht.also.be.a.general.`:function' |
| 2ef60 | 20 74 65 73 74 20 74 68 61 74 20 61 6c 6c 6f 77 73 20 63 61 6c 6c 69 6e 67 20 6f 66 20 61 0a 66 | .test.that.allows.calling.of.a.f |
| 2ef80 | 75 6e 63 74 69 6f 6e 20 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65 20 74 65 73 74 29 2e 0a | unction.to.implement.the.test).. |
| 2efa0 | 0a 43 4f 4f 4b 49 45 2d 4e 41 4d 45 20 69 73 20 75 73 65 64 20 77 68 65 6e 20 74 68 65 20 54 45 | .COOKIE-NAME.is.used.when.the.TE |
| 2efc0 | 53 54 20 69 73 20 60 3a 63 6f 6f 6b 69 65 27 2e 20 20 49 74 20 69 73 20 74 68 65 20 6e 61 6d 65 | ST.is.`:cookie'...It.is.the.name |
| 2efe0 | 0a 6f 66 20 74 68 65 20 63 6f 6f 6b 69 65 20 74 6f 20 75 73 65 20 66 6f 72 20 61 75 74 68 65 6e | .of.the.cookie.to.use.for.authen |
| 2f000 | 74 69 63 61 74 69 6f 6e 2e 20 20 42 79 20 64 65 66 61 75 6c 74 20 74 68 69 73 20 69 73 0a 60 65 | tication...By.default.this.is.`e |
| 2f020 | 6c 6e 6f 64 65 2d 61 75 74 68 27 2e 20 20 49 74 20 6d 75 73 74 20 62 65 20 73 70 65 63 69 66 69 | lnode-auth'...It.must.be.specifi |
| 2f040 | 65 64 20 61 73 20 61 20 73 74 72 69 6e 67 2e 0a 0a 41 55 54 48 2d 44 42 20 69 73 20 74 68 65 20 | ed.as.a.string...AUTH-DB.is.the. |
| 2f060 | 60 64 62 27 20 75 73 65 64 20 66 6f 72 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 69 6e 66 | `db'.used.for.authentication.inf |
| 2f080 | 6f 72 6d 61 74 69 6f 6e 2e 0a 49 74 20 69 73 20 75 73 65 64 20 61 73 20 74 68 65 20 61 75 74 68 | ormation..It.is.used.as.the.auth |
| 2f0a0 | 6f 72 69 74 79 20 6f 66 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 6f 6e 20 75 73 65 72 73 2e 20 20 | ority.of.information.on.users... |
| 2f0c0 | 42 79 20 64 65 66 61 75 6c 74 0a 74 68 69 73 20 69 73 20 60 65 6c 6e 6f 64 65 2d 61 75 74 68 2d | By.default.this.is.`elnode-auth- |
| 2f0e0 | 64 62 27 2e 0a 0a 41 55 54 48 2d 54 45 53 54 20 69 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 74 6f | db'...AUTH-TEST.is.a.function.to |
| 2f100 | 20 69 6d 70 6c 65 6d 65 6e 74 20 72 65 74 72 69 65 76 61 6c 20 6f 66 20 75 73 65 72 73 2e 20 20 | .implement.retrieval.of.users... |
| 2f120 | 49 74 20 69 73 0a 75 73 65 64 20 69 6e 20 70 72 65 66 65 72 65 6e 63 65 20 74 6f 20 41 55 54 48 | It.is.used.in.preference.to.AUTH |
| 2f140 | 2d 44 42 20 62 75 74 20 63 61 6e 20 62 65 20 6e 69 6c 20 69 6e 20 77 68 69 63 68 20 63 61 73 65 | -DB.but.can.be.nil.in.which.case |
| 2f160 | 20 61 0a 64 65 66 61 75 6c 74 20 62 61 73 65 64 20 6f 6e 20 41 55 54 48 2d 44 42 20 77 69 6c 6c | .a.default.based.on.AUTH-DB.will |
| 2f180 | 20 62 65 20 75 73 65 64 2e 0a 0a 46 41 49 4c 55 52 45 2d 54 59 50 45 20 69 73 20 77 68 61 74 20 | .be.used...FAILURE-TYPE.is.what. |
| 2f1a0 | 74 6f 20 64 6f 20 69 66 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 66 61 69 6c 73 2e 20 20 | to.do.if.authentication.fails... |
| 2f1c0 | 43 75 72 72 65 6e 74 6c 79 0a 6f 6e 6c 79 20 60 3a 72 65 64 69 72 65 63 74 27 20 69 73 20 73 75 | Currently.only.`:redirect'.is.su |
| 2f1e0 | 70 70 6f 72 74 65 64 2e 20 20 54 6f 20 72 65 64 69 72 65 63 74 20 6f 6e 20 66 61 69 6c 75 72 65 | pported...To.redirect.on.failure |
| 2f200 | 20 6d 65 61 6e 73 20 74 6f 0a 73 65 6e 64 20 61 20 33 30 32 20 77 69 74 68 20 61 20 6c 6f 63 61 | .means.to.send.a.302.with.a.loca |
| 2f220 | 74 69 6f 6e 20 74 6f 20 76 69 73 69 74 20 61 20 6c 6f 67 69 6e 20 70 61 67 65 2e 20 20 3a 46 41 | tion.to.visit.a.login.page...:FA |
| 2f240 | 49 4c 55 52 45 2d 54 59 50 45 0a 69 73 20 60 3a 72 65 64 69 72 65 63 74 27 20 62 79 20 64 65 66 | ILURE-TYPE.is.`:redirect'.by.def |
| 2f260 | 61 75 6c 74 2e 0a 0a 52 45 44 49 52 45 43 54 20 69 73 20 77 68 65 72 65 20 74 6f 20 72 65 64 69 | ault...REDIRECT.is.where.to.redi |
| 2f280 | 72 65 63 74 20 74 6f 20 69 66 20 46 41 49 4c 55 52 45 2d 54 59 50 45 20 69 73 20 60 3a 72 65 64 | rect.to.if.FAILURE-TYPE.is.`:red |
| 2f2a0 | 69 72 65 63 74 27 2e 0a 42 79 20 64 65 66 61 75 6c 74 20 74 68 69 73 20 69 73 20 5c 22 2f 6c 6f | irect'..By.default.this.is.\"/lo |
| 2f2c0 | 67 69 6e 2f 5c 22 2e 20 20 49 66 20 53 45 4e 44 45 52 20 69 73 20 6e 6f 74 20 6e 69 6c 20 74 68 | gin/\"...If.SENDER.is.not.nil.th |
| 2f2e0 | 65 6e 20 61 0a 64 69 73 70 61 74 63 68 65 72 20 74 6f 6c 64 20 61 62 6f 75 74 20 74 68 69 73 20 | en.a.dispatcher.told.about.this. |
| 2f300 | 61 75 74 68 20 73 63 68 65 6d 65 20 77 69 6c 6c 20 64 69 73 70 61 74 63 68 20 61 20 70 61 74 68 | auth.scheme.will.dispatch.a.path |
| 2f320 | 0a 6e 61 6d 69 6e 67 20 52 45 44 49 52 45 43 54 20 74 6f 20 53 45 4e 44 45 52 2e 0a 0a 53 45 4e | .naming.REDIRECT.to.SENDER...SEN |
| 2f340 | 44 45 52 20 69 73 20 61 6e 20 45 6c 6e 6f 64 65 20 68 61 6e 64 6c 65 72 20 74 61 6b 69 6e 67 20 | DER.is.an.Elnode.handler.taking. |
| 2f360 | 61 64 64 69 74 69 6f 6e 61 6c 20 70 61 72 61 6d 65 74 65 72 73 20 6f 66 0a 60 74 61 72 67 65 74 | additional.parameters.of.`target |
| 2f380 | 27 20 61 6e 64 20 60 72 65 64 69 72 65 63 74 27 2e 20 20 42 79 20 64 65 66 61 75 6c 74 20 74 68 | '.and.`redirect'...By.default.th |
| 2f3a0 | 69 73 20 69 73 20 74 68 65 20 66 75 6e 63 74 69 6f 6e 0a 60 65 6c 6e 6f 64 65 2d 61 75 74 68 2d | is.is.the.function.`elnode-auth- |
| 2f3c0 | 6c 6f 67 69 6e 2d 73 65 6e 64 65 72 27 2e 20 20 53 70 65 63 69 66 79 20 61 20 64 69 66 66 65 72 | login-sender'...Specify.a.differ |
| 2f3e0 | 65 6e 74 20 66 75 6e 63 74 69 6f 6e 20 69 66 20 79 6f 75 0a 77 61 6e 74 20 74 6f 20 74 6f 74 61 | ent.function.if.you.want.to.tota |
| 2f400 | 6c 6c 79 20 63 68 61 6e 67 65 20 74 68 65 20 6c 6f 67 69 6e 20 70 61 67 65 2e 22 0a 20 20 28 6c | lly.change.the.login.page."...(l |
| 2f420 | 65 74 2a 20 28 28 6c 6f 67 69 6e 2d 68 61 6e 64 6c 65 72 20 28 65 6c 6e 6f 64 65 2d 61 75 74 68 | et*.((login-handler.(elnode-auth |
| 2f440 | 2d 2d 6d 61 6b 65 2d 6c 6f 67 69 6e 2d 68 61 6e 64 6c 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 | --make-login-handler............ |
| 2f460 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 73 65 6e 64 65 72 20 73 65 6e 64 65 72 0a 20 20 20 | ..............:sender.sender.... |
| 2f480 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 74 61 72 67 65 74 20 72 65 | ......................:target.re |
| 2f4a0 | 64 69 72 65 63 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | direct.......................... |
| 2f4c0 | 3a 61 75 74 68 2d 74 65 73 74 20 61 75 74 68 2d 74 65 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 | :auth-test.auth-test............ |
| 2f4e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 61 75 74 68 2d 64 62 20 61 75 74 68 2d 64 62 0a 20 | ..............:auth-db.auth-db.. |
| 2f500 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f 6f 6b 69 65 2d | ........................:cookie- |
| 2f520 | 6e 61 6d 65 20 63 6f 6f 6b 69 65 2d 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 28 61 75 74 | name.cookie-name))..........(aut |
| 2f540 | 68 2d 73 63 68 65 6d 65 20 28 6c 69 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | h-scheme.(list.................. |
| 2f560 | 20 20 20 20 20 20 3a 74 65 73 74 20 74 65 73 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | ......:test.test................ |
| 2f580 | 20 20 20 20 20 20 20 20 3a 63 6f 6f 6b 69 65 2d 6e 61 6d 65 20 63 6f 6f 6b 69 65 2d 6e 61 6d 65 | ........:cookie-name.cookie-name |
| 2f5a0 | 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 66 61 69 6c 75 72 65 | ........................:failure |
| 2f5c0 | 2d 74 79 70 65 20 66 61 69 6c 75 72 65 2d 74 79 70 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | -type.failure-type.............. |
| 2f5e0 | 20 20 20 20 20 20 20 20 20 20 3a 72 65 64 69 72 65 63 74 20 72 65 64 69 72 65 63 74 0a 20 20 20 | ..........:redirect.redirect.... |
| 2f600 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 6c 6f 67 69 6e 2d 68 61 6e 64 6c | ....................:login-handl |
| 2f620 | 65 72 20 6c 6f 67 69 6e 2d 68 61 6e 64 6c 65 72 29 29 29 0a 20 20 20 20 28 70 75 74 68 61 73 68 | er.login-handler))).....(puthash |
| 2f640 | 20 73 63 68 65 6d 65 2d 6e 61 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 61 75 74 68 2d 73 | .scheme-name..............auth-s |
| 2f660 | 63 68 65 6d 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 6e 6f 64 65 2d 2d 64 65 66 69 6e | cheme..............elnode--defin |
| 2f680 | 65 64 2d 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 2d 73 63 68 65 6d 65 73 29 29 29 0a 0a 28 64 | ed-authentication-schemes)))..(d |
| 2f6a0 | 65 66 6d 61 63 72 6f 20 65 6c 6e 6f 64 65 2d 61 75 74 68 2d 64 69 73 70 61 74 63 68 65 72 20 28 | efmacro.elnode-auth-dispatcher.( |
| 2f6c0 | 68 74 74 70 63 6f 6e 20 61 75 74 68 2d 73 63 68 65 6d 65 20 26 72 65 73 74 20 62 6f 64 79 29 0a | httpcon.auth-scheme.&rest.body). |
| 2f6e0 | 20 20 22 44 69 73 70 61 74 63 68 20 48 54 54 50 43 4f 4e 20 74 6f 20 41 55 54 48 2d 53 43 48 45 | .."Dispatch.HTTPCON.to.AUTH-SCHE |
| 2f700 | 4d 45 27 73 20 68 61 6e 64 6c 65 72 20 69 66 20 69 74 20 6d 61 74 63 68 65 73 2e 0a 0a 4f 74 68 | ME's.handler.if.it.matches...Oth |
| 2f720 | 65 72 77 69 73 65 20 64 6f 20 42 4f 44 59 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 0a 20 20 20 28 | erwise.do.BODY."...(declare....( |
| 2f740 | 64 65 62 75 67 20 28 73 65 78 70 20 73 65 78 70 20 26 72 65 73 74 20 66 6f 72 6d 29 29 0a 20 20 | debug.(sexp.sexp.&rest.form))... |
| 2f760 | 20 28 69 6e 64 65 6e 74 20 32 29 29 0a 20 20 28 6c 65 74 20 28 28 68 74 74 70 63 6f 6e 2d 76 20 | .(indent.2))...(let.((httpcon-v. |
| 2f780 | 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 68 74 74 70 63 6f 6e 2d 76 22 29 29 0a 20 20 20 20 20 | (make-symbol."httpcon-v"))...... |
| 2f7a0 | 20 20 20 28 61 75 74 68 2d 73 63 68 65 6d 65 2d 76 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 | ...(auth-scheme-v.(make-symbol." |
| 2f7c0 | 61 75 74 68 2d 73 63 68 65 6d 65 2d 76 22 29 29 0a 20 20 20 20 20 20 20 20 28 72 65 64 69 72 65 | auth-scheme-v")).........(redire |
| 2f7e0 | 63 74 2d 76 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 72 65 64 69 72 65 63 74 2d 76 22 29 29 | ct-v.(make-symbol."redirect-v")) |
| 2f800 | 0a 20 20 20 20 20 20 20 20 28 68 61 6e 64 6c 65 72 2d 76 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c | .........(handler-v.(make-symbol |
| 2f820 | 20 22 68 61 6e 64 6c 65 72 2d 76 22 29 29 29 0a 20 20 20 20 60 28 6c 65 74 2a 20 28 28 2c 68 74 | ."handler-v"))).....`(let*.((,ht |
| 2f840 | 74 70 63 6f 6e 2d 76 20 2c 68 74 74 70 63 6f 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 2c | tpcon-v.,httpcon).............(, |
| 2f860 | 61 75 74 68 2d 73 63 68 65 6d 65 2d 76 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 74 68 | auth-scheme-v..............(geth |
| 2f880 | 61 73 68 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 61 75 74 68 2d 73 63 68 65 6d 65 0a 20 | ash...............,auth-scheme.. |
| 2f8a0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 6e 6f 64 65 2d 2d 64 65 66 69 6e 65 64 2d 61 75 74 | .............elnode--defined-aut |
| 2f8c0 | 68 65 6e 74 69 63 61 74 69 6f 6e 2d 73 63 68 65 6d 65 73 29 29 0a 20 20 20 20 20 20 20 20 20 20 | hentication-schemes))........... |
| 2f8e0 | 20 20 28 2c 72 65 64 69 72 65 63 74 2d 76 20 28 70 6c 69 73 74 2d 67 65 74 20 2c 61 75 74 68 2d | ..(,redirect-v.(plist-get.,auth- |
| 2f900 | 73 63 68 65 6d 65 2d 76 20 3a 72 65 64 69 72 65 63 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 | scheme-v.:redirect))............ |
| 2f920 | 20 28 2c 68 61 6e 64 6c 65 72 2d 76 20 28 70 6c 69 73 74 2d 67 65 74 20 2c 61 75 74 68 2d 73 63 | .(,handler-v.(plist-get.,auth-sc |
| 2f940 | 68 65 6d 65 2d 76 20 3a 6c 6f 67 69 6e 2d 68 61 6e 64 6c 65 72 29 29 29 0a 20 20 20 20 20 20 20 | heme-v.:login-handler)))........ |
| 2f960 | 28 69 66 20 28 65 6c 6e 6f 64 65 2d 2d 6d 61 70 70 65 72 2d 66 69 6e 64 2d 6d 61 74 63 68 2d 66 | (if.(elnode--mapper-find-match-f |
| 2f980 | 75 6e 63 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 70 61 74 | unc.............(elnode-http-pat |
| 2f9a0 | 68 69 6e 66 6f 20 2c 68 74 74 70 63 6f 6e 2d 76 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 63 | hinfo.,httpcon-v).............(c |
| 2f9c0 | 6f 6e 73 20 2c 72 65 64 69 72 65 63 74 2d 76 20 2c 68 61 6e 64 6c 65 72 2d 76 29 29 0a 20 20 20 | ons.,redirect-v.,handler-v)).... |
| 2f9e0 | 20 20 20 20 20 20 20 20 3b 3b 20 49 66 20 74 68 65 20 63 75 72 72 65 6e 74 20 70 61 74 68 20 6d | ........;;.If.the.current.path.m |
| 2fa00 | 61 74 63 68 65 73 20 63 61 6c 6c 20 74 68 65 20 61 75 74 68 20 68 61 6e 64 6c 65 72 0a 20 20 20 | atches.call.the.auth.handler.... |
| 2fa20 | 20 20 20 20 20 20 20 20 28 66 75 6e 63 61 6c 6c 20 2c 68 61 6e 64 6c 65 72 2d 76 20 2c 68 74 74 | ........(funcall.,handler-v.,htt |
| 2fa40 | 70 63 6f 6e 2d 76 29 0a 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 45 6c 73 65 20 64 6f 20 77 68 | pcon-v)............;;.Else.do.wh |
| 2fa60 | 61 74 65 76 65 72 20 74 68 65 20 62 6f 64 79 20 77 61 73 0a 20 20 20 20 20 20 20 20 20 20 20 2c | atever.the.body.was............, |
| 2fa80 | 40 62 6f 64 79 29 29 29 29 0a 0a 28 64 65 66 6d 61 63 72 6f 20 69 66 2d 65 6c 6e 6f 64 65 2d 61 | @body))))..(defmacro.if-elnode-a |
| 2faa0 | 75 74 68 20 28 68 74 74 70 63 6f 6e 20 73 63 68 65 6d 65 20 61 75 74 68 64 20 26 72 65 73 74 20 | uth.(httpcon.scheme.authd.&rest. |
| 2fac0 | 61 6e 6f 6e 79 6d 6f 75 73 29 0a 20 20 22 43 68 65 63 6b 20 74 68 65 20 48 54 54 50 43 4f 4e 20 | anonymous)..."Check.the.HTTPCON. |
| 2fae0 | 66 6f 72 20 53 43 48 45 4d 45 20 61 75 74 68 20 61 6e 64 20 65 76 61 6c 20 41 55 54 48 44 2e 0a | for.SCHEME.auth.and.eval.AUTHD.. |
| 2fb00 | 0a 49 66 20 74 68 65 20 61 75 74 68 20 66 61 69 6c 73 20 74 68 65 6e 20 65 76 61 6c 75 61 74 65 | .If.the.auth.fails.then.evaluate |
| 2fb20 | 20 41 4e 4f 4e 59 4d 4f 55 53 20 69 6e 73 74 65 61 64 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 0a | .ANONYMOUS.instead."...(declare. |
| 2fb40 | 20 20 20 28 64 65 62 75 67 20 28 73 65 78 70 20 73 65 78 70 20 73 65 78 70 20 26 72 65 73 74 20 | ...(debug.(sexp.sexp.sexp.&rest. |
| 2fb60 | 66 6f 72 6d 29 29 0a 20 20 20 28 69 6e 64 65 6e 74 20 32 29 29 0a 20 20 28 6c 65 74 20 28 28 68 | form))....(indent.2))...(let.((h |
| 2fb80 | 74 74 70 63 6f 6e 76 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 68 74 74 70 63 6f 6e 76 22 29 | ttpconv.(make-symbol."httpconv") |
| 2fba0 | 29 29 0a 20 20 20 20 60 28 6c 65 74 20 28 28 2c 68 74 74 70 63 6f 6e 76 20 2c 68 74 74 70 63 6f | )).....`(let.((,httpconv.,httpco |
| 2fbc0 | 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 73 63 68 65 6d 65 2d 6c 69 73 74 0a 20 20 20 20 20 | n)............(scheme-list...... |
| 2fbe0 | 20 20 20 20 20 20 20 28 67 65 74 68 61 73 68 20 2c 73 63 68 65 6d 65 0a 20 20 20 20 20 20 20 20 | .......(gethash.,scheme......... |
| 2fc00 | 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 6e 6f 64 65 2d 2d 64 65 66 69 6e 65 64 2d 61 75 74 | .............elnode--defined-aut |
| 2fc20 | 68 65 6e 74 69 63 61 74 69 6f 6e 2d 73 63 68 65 6d 65 73 29 29 29 0a 20 20 20 20 20 20 20 28 69 | hentication-schemes)))........(i |
| 2fc40 | 66 20 28 65 71 20 3a 63 6f 6f 6b 69 65 20 28 70 6c 69 73 74 2d 67 65 74 20 73 63 68 65 6d 65 2d | f.(eq.:cookie.(plist-get.scheme- |
| 2fc60 | 6c 69 73 74 20 3a 74 65 73 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 69 74 69 | list.:test))............(conditi |
| 2fc80 | 6f 6e 2d 63 61 73 65 20 74 6f 6b 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 | on-case.token................(pr |
| 2fca0 | 6f 67 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 61 75 74 | ogn..................(elnode-aut |
| 2fcc0 | 68 2d 63 6f 6f 6b 69 65 2d 63 68 65 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | h-cookie-check.................. |
| 2fce0 | 20 2c 68 74 74 70 63 6f 6e 76 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 63 6f | .,httpconv...................:co |
| 2fd00 | 6f 6b 69 65 2d 6e 61 6d 65 20 28 70 6c 69 73 74 2d 67 65 74 20 73 63 68 65 6d 65 2d 6c 69 73 74 | okie-name.(plist-get.scheme-list |
| 2fd20 | 20 3a 63 6f 6f 6b 69 65 2d 6e 61 6d 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .:cookie-name))................. |
| 2fd40 | 20 3b 3b 20 44 6f 20 77 68 61 74 65 76 65 72 20 74 68 65 20 63 6f 64 65 20 77 61 73 20 6e 6f 77 | .;;.Do.whatever.the.code.was.now |
| 2fd60 | 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2c 61 75 74 68 64 29 0a 20 20 20 20 20 | ...................,authd)...... |
| 2fd80 | 20 20 20 20 20 20 20 20 3b 3b 20 4f 6e 20 61 75 74 68 20 66 61 69 6c 75 72 65 20 64 6f 20 74 68 | ........;;.On.auth.failure.do.th |
| 2fda0 | 65 20 45 4c 53 45 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 61 75 74 68 | e.ELSE..............(elnode-auth |
| 2fdc0 | 2d 74 6f 6b 65 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 72 6f 67 6e 20 2c 40 61 6e | -token...............(progn.,@an |
| 2fde0 | 6f 6e 79 6d 6f 75 73 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 4e 6f 74 20 61 20 63 | onymous)))............;;.Not.a.c |
| 2fe00 | 6f 6f 6b 69 65 20 74 65 73 74 20 2d 20 6e 6f 74 20 73 75 72 65 20 77 68 61 74 20 74 6f 20 64 6f | ookie.test.-.not.sure.what.to.do |
| 2fe20 | 2e 2e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 28 6d 65 73 73 61 67 65 20 22 45 4c 4e 4f 44 45 20 | ...............(message."ELNODE. |
| 2fe40 | 41 55 54 48 20 49 46 20 2d 20 4e 4f 54 20 43 4f 4f 4b 49 45 21 22 29 29 29 29 29 0a 0a 28 64 65 | AUTH.IF.-.NOT.COOKIE!")))))..(de |
| 2fe60 | 66 6d 61 63 72 6f 20 77 69 74 68 2d 65 6c 6e 6f 64 65 2d 61 75 74 68 20 28 68 74 74 70 63 6f 6e | fmacro.with-elnode-auth.(httpcon |
| 2fe80 | 20 73 63 68 65 6d 65 20 26 72 65 73 74 20 62 6f 64 79 29 0a 20 20 22 50 72 6f 74 65 63 74 20 63 | .scheme.&rest.body)..."Protect.c |
| 2fea0 | 6f 64 65 20 77 69 74 68 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 75 73 69 6e 67 20 48 54 | ode.with.authentication.using.HT |
| 2fec0 | 54 50 43 4f 4e 20 61 6e 64 20 53 43 48 45 4d 45 2e 0a 0a 54 68 69 73 20 6d 61 63 72 6f 20 70 72 | TPCON.and.SCHEME...This.macro.pr |
| 2fee0 | 6f 74 65 63 74 73 20 63 6f 64 65 20 69 6e 20 61 20 68 61 6e 64 6c 65 72 20 77 69 74 68 20 61 20 | otects.code.in.a.handler.with.a. |
| 2ff00 | 63 68 65 63 6b 20 66 6f 72 20 61 6e 0a 61 75 74 68 65 6e 74 69 63 61 74 65 64 20 72 65 71 75 65 | check.for.an.authenticated.reque |
| 2ff20 | 73 74 20 28 74 68 65 20 63 68 65 63 6b 20 69 73 20 63 6f 6e 66 69 67 75 72 61 62 6c 65 29 2e 20 | st.(the.check.is.configurable).. |
| 2ff40 | 20 49 66 20 74 68 65 20 63 68 65 63 6b 0a 66 61 69 6c 73 20 74 68 65 6e 20 61 6e 20 61 70 70 72 | .If.the.check.fails.then.an.appr |
| 2ff60 | 6f 70 72 69 61 74 65 20 61 63 74 69 6f 6e 20 69 73 20 74 61 6b 65 6e 3b 20 66 6f 72 20 65 78 61 | opriate.action.is.taken;.for.exa |
| 2ff80 | 6d 70 6c 65 2c 20 73 65 6e 64 69 6e 67 20 61 0a 6c 6f 67 69 6e 20 70 61 67 65 2e 0a 0a 53 43 48 | mple,.sending.a.login.page...SCH |
| 2ffa0 | 45 4d 45 20 69 73 20 74 68 65 20 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 20 73 63 68 65 6d 65 | EME.is.the.authentication.scheme |
| 2ffc0 | 20 74 6f 20 75 73 65 20 61 73 20 64 65 66 69 6e 65 64 20 62 79 0a 60 65 6c 6e 6f 64 65 2d 61 75 | .to.use.as.defined.by.`elnode-au |
| 2ffe0 | 74 68 2d 64 65 66 69 6e 65 2d 73 63 68 65 6d 65 27 2e 22 0a 20 20 28 64 65 63 6c 61 72 65 0a 20 | th-define-scheme'."...(declare.. |
| 30000 | 20 20 28 64 65 62 75 67 20 28 73 65 78 70 20 73 65 78 70 20 26 72 65 73 74 20 66 6f 72 6d 29 29 | ..(debug.(sexp.sexp.&rest.form)) |
| 30020 | 0a 20 20 20 28 69 6e 64 65 6e 74 20 32 29 29 0a 20 20 28 6c 65 74 20 28 28 68 74 74 70 63 6f 6e | ....(indent.2))...(let.((httpcon |
| 30040 | 76 20 28 6d 61 6b 65 2d 73 79 6d 62 6f 6c 20 22 68 74 74 70 63 6f 6e 76 22 29 29 29 0a 20 20 20 | v.(make-symbol."httpconv"))).... |
| 30060 | 20 60 28 6c 65 74 20 28 28 2c 68 74 74 70 63 6f 6e 76 20 2c 68 74 74 70 63 6f 6e 29 29 0a 20 20 | .`(let.((,httpconv.,httpcon))... |
| 30080 | 20 20 20 20 20 28 69 66 2d 65 6c 6e 6f 64 65 2d 61 75 74 68 20 2c 68 74 74 70 63 6f 6e 76 20 2c | .....(if-elnode-auth.,httpconv., |
| 300a0 | 73 63 68 65 6d 65 0a 20 20 20 20 20 20 20 20 20 2c 40 62 6f 64 79 0a 20 20 20 20 20 20 20 20 20 | scheme..........,@body.......... |
| 300c0 | 28 6c 65 74 20 28 28 74 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 63 6f 6e 64 0a | (let.((to.................(cond. |
| 300e0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 3b 3b 20 57 65 20 68 61 76 65 20 61 20 | ..................(;;.We.have.a. |
| 30100 | 77 72 61 70 70 65 72 2e 2e 2e 20 6f 74 68 65 72 20 6c 69 73 74 73 20 6f 74 68 65 72 0a 20 20 20 | wrapper....other.lists.other.... |
| 30120 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 74 68 61 6e 20 77 72 61 70 70 65 72 73 | ................;;.than.wrappers |
| 30140 | 20 61 72 65 20 70 72 6f 62 61 62 6c 79 20 70 6f 73 73 69 62 6c 65 3b 20 77 65 0a 20 20 20 20 20 | .are.probably.possible;.we...... |
| 30160 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b 3b 20 73 68 6f 75 6c 64 20 71 75 61 6c 69 66 79 20 | ..............;;.should.qualify. |
| 30180 | 74 68 65 20 74 65 73 74 20 68 65 72 65 20 74 6f 20 62 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 | the.test.here.to.be............. |
| 301a0 | 20 20 20 20 20 20 20 3b 3b 20 77 72 61 70 70 65 72 20 73 70 65 63 69 66 69 63 0a 20 20 20 20 20 | .......;;.wrapper.specific...... |
| 301c0 | 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 6c 69 73 74 70 20 28 70 6c 69 73 74 2d 67 65 74 20 | ..............(listp.(plist-get. |
| 301e0 | 73 63 68 65 6d 65 2d 6c 69 73 74 20 3a 72 65 64 69 72 65 63 74 29 29 0a 20 20 20 20 20 20 20 20 | scheme-list.:redirect))......... |
| 30200 | 20 20 20 20 20 20 20 20 20 20 20 28 66 6f 72 6d 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 | ...........(format.............. |
| 30220 | 20 20 20 20 20 20 20 22 25 73 3f 72 65 64 69 72 65 63 74 3d 25 73 22 0a 20 20 20 20 20 20 20 20 | ......."%s?redirect=%s"......... |
| 30240 | 20 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 74 20 28 70 6c 69 73 74 2d 67 65 74 20 73 63 68 65 | ............(elt.(plist-get.sche |
| 30260 | 6d 65 2d 6c 69 73 74 20 3a 72 65 64 69 72 65 63 74 29 20 33 29 0a 20 20 20 20 20 20 20 20 20 20 | me-list.:redirect).3)........... |
| 30280 | 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 68 74 74 70 2d 70 61 74 68 69 6e 66 6f 20 | ..........(elnode-http-pathinfo. |
| 302a0 | 2c 68 74 74 70 63 6f 6e 76 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3b | ,httpconv)))...................; |
| 302c0 | 3b 20 41 20 70 6c 61 69 6e 20 73 74 72 69 6e 67 20 63 61 6e 20 62 65 20 75 73 65 64 20 64 69 72 | ;.A.plain.string.can.be.used.dir |
| 302e0 | 65 63 74 6c 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 28 73 74 72 69 6e 67 | ectly...................((string |
| 30300 | 70 20 28 70 6c 69 73 74 2d 67 65 74 20 73 63 68 65 6d 65 2d 6c 69 73 74 20 3a 72 65 64 69 72 65 | p.(plist-get.scheme-list.:redire |
| 30320 | 63 74 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 70 6c 69 73 74 2d 67 | ct))....................(plist-g |
| 30340 | 65 74 20 73 63 68 65 6d 65 2d 6c 69 73 74 20 3a 72 65 64 69 72 65 63 74 29 29 0a 20 20 20 20 20 | et.scheme-list.:redirect))...... |
| 30360 | 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | .............(t................. |
| 30380 | 20 20 20 28 65 72 72 6f 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 3a | ...(error.....................": |
| 303a0 | 72 65 64 69 72 65 63 74 20 4d 55 53 54 20 62 65 20 20 61 20 6c 69 73 74 20 6f 72 20 61 20 73 74 | redirect.MUST.be..a.list.or.a.st |
| 303c0 | 72 69 6e 67 22 29 29 29 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 73 65 | ring")))))............(elnode-se |
| 303e0 | 6e 64 2d 72 65 64 69 72 65 63 74 20 2c 68 74 74 70 63 6f 6e 76 20 74 6f 29 29 29 29 29 29 0a 0a | nd-redirect.,httpconv.to)))))).. |
| 30400 | 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 2d 74 65 73 74 2d 6c 6f 67 69 6e 20 28 61 75 74 68 20 74 | (defun.elnode-test-login.(auth.t |
| 30420 | 61 72 67 65 74 20 75 73 65 72 6e 61 6d 65 20 70 61 73 73 77 6f 72 64 29 0a 20 20 22 53 65 6e 64 | arget.username.password)..."Send |
| 30440 | 20 61 20 74 65 73 74 20 6c 6f 67 69 6e 20 74 6f 20 45 6c 6e 6f 64 65 2e 22 0a 20 20 3b 3b 20 46 | .a.test.login.to.Elnode."...;;.F |
| 30460 | 49 58 4d 45 20 2d 20 75 73 65 20 41 55 54 48 20 61 73 20 61 20 72 65 66 65 72 65 6e 63 65 20 74 | IXME.-.use.AUTH.as.a.reference.t |
| 30480 | 6f 20 61 6e 20 65 6c 6e 6f 64 65 2d 61 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 0a 20 20 3b 3b 20 | o.an.elnode-authentication...;;. |
| 304a0 | 64 65 63 6c 61 72 61 74 69 6f 6e 20 61 6e 64 20 70 75 6c 6c 20 74 68 69 6e 67 73 20 6c 69 6b 65 | declaration.and.pull.things.like |
| 304c0 | 20 2f 6c 6f 67 69 6e 2f 20 66 72 6f 6d 20 69 74 0a 20 20 28 65 6c 6e 6f 64 65 2d 74 65 73 74 2d | ./login/.from.it...(elnode-test- |
| 304e0 | 63 61 6c 6c 0a 20 20 20 28 66 6f 72 6d 61 74 20 22 2f 6c 6f 67 69 6e 2f 3f 72 65 64 69 72 65 63 | call....(format."/login/?redirec |
| 30500 | 74 3d 25 73 22 20 74 61 72 67 65 74 29 0a 20 20 20 3a 6d 65 74 68 6f 64 20 22 50 4f 53 54 22 0a | t=%s".target)....:method."POST". |
| 30520 | 20 20 20 3a 70 61 72 61 6d 65 74 65 72 73 20 28 6c 69 73 74 20 28 63 6f 6e 73 20 22 75 73 65 72 | ...:parameters.(list.(cons."user |
| 30540 | 6e 61 6d 65 22 20 75 73 65 72 6e 61 6d 65 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | name".username)................. |
| 30560 | 20 20 20 20 20 28 63 6f 6e 73 20 22 70 61 73 73 77 6f 72 64 22 20 70 61 73 73 77 6f 72 64 29 29 | .....(cons."password".password)) |
| 30580 | 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 75 6e 20 65 6c 6e 6f 64 65 | ))..;;;###autoload.(defun.elnode |
| 305a0 | 2d 69 6e 69 74 20 28 29 0a 20 20 22 42 6f 6f 74 73 74 72 61 70 73 20 74 68 65 20 65 6c 6e 6f 64 | -init.()..."Bootstraps.the.elnod |
| 305c0 | 65 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 77 68 65 6e 20 74 68 65 20 4c 69 73 70 20 69 73 20 6c | e.environment.when.the.Lisp.is.l |
| 305e0 | 6f 61 64 65 64 2e 0a 0a 49 74 27 73 20 75 73 65 66 75 6c 20 74 6f 20 68 61 76 65 20 65 6c 6e 6f | oaded...It's.useful.to.have.elno |
| 30600 | 64 65 20 73 74 61 72 74 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 2e 2e 2e 20 6f 6e 20 4c 69 73 | de.start.automatically....on.Lis |
| 30620 | 70 0a 6c 6f 61 64 2e 20 20 49 66 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 60 65 6c 6e 6f 64 65 | p.load...If.the.variable.`elnode |
| 30640 | 2d 69 6e 69 74 2d 70 6f 72 74 27 20 69 73 20 73 65 74 20 74 68 65 6e 20 74 68 69 73 0a 66 75 6e | -init-port'.is.set.then.this.fun |
| 30660 | 63 74 69 6f 6e 20 77 69 6c 6c 20 6c 61 75 6e 63 68 20 61 20 73 65 72 76 65 72 20 6f 6e 20 69 74 | ction.will.launch.a.server.on.it |
| 30680 | 2e 0a 0a 54 68 65 20 73 65 72 76 65 72 20 69 73 20 73 74 61 72 74 65 64 20 77 69 74 68 20 60 65 | ...The.server.is.started.with.`e |
| 306a0 | 6c 6e 6f 64 65 2d 68 6f 73 74 70 61 74 68 2d 64 65 66 61 75 6c 74 2d 68 61 6e 64 6c 65 72 27 20 | lnode-hostpath-default-handler'. |
| 306c0 | 61 73 0a 74 68 65 20 68 61 6e 64 6c 65 72 20 61 6e 64 20 6c 69 73 74 65 6e 69 6e 67 20 6f 6e 20 | as.the.handler.and.listening.on. |
| 306e0 | 60 65 6c 6e 6f 64 65 2d 69 6e 69 74 2d 68 6f 73 74 27 22 0a 20 20 28 69 6e 74 65 72 61 63 74 69 | `elnode-init-host'"...(interacti |
| 30700 | 76 65 29 0a 20 20 28 69 66 20 65 6c 6e 6f 64 65 2d 69 6e 69 74 2d 70 6f 72 74 0a 20 20 20 20 20 | ve)...(if.elnode-init-port...... |
| 30720 | 20 28 63 6f 6e 64 69 74 69 6f 6e 2d 63 61 73 65 20 6e 69 6c 0a 20 20 20 20 20 20 20 20 20 20 28 | .(condition-case.nil...........( |
| 30740 | 65 6c 6e 6f 64 65 2d 73 74 61 72 74 0a 20 20 20 20 20 20 20 20 20 20 20 27 65 6c 6e 6f 64 65 2d | elnode-start............'elnode- |
| 30760 | 68 6f 73 74 70 61 74 68 2d 64 65 66 61 75 6c 74 2d 68 61 6e 64 6c 65 72 0a 20 20 20 20 20 20 20 | hostpath-default-handler........ |
| 30780 | 20 20 20 20 3a 70 6f 72 74 20 65 6c 6e 6f 64 65 2d 69 6e 69 74 2d 70 6f 72 74 0a 20 20 20 20 20 | ....:port.elnode-init-port...... |
| 307a0 | 20 20 20 20 20 20 3a 68 6f 73 74 20 65 6c 6e 6f 64 65 2d 69 6e 69 74 2d 68 6f 73 74 29 0a 20 20 | ......:host.elnode-init-host)... |
| 307c0 | 20 20 20 20 20 20 28 65 72 72 6f 72 0a 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 65 72 | ......(error..........(elnode-er |
| 307e0 | 72 6f 72 0a 20 20 20 20 20 20 20 20 20 20 22 65 6c 6e 6f 64 65 2d 69 6e 69 74 3a 20 63 61 6e 27 | ror..........."elnode-init:.can' |
| 30800 | 74 20 73 74 61 72 74 20 2d 20 70 6f 72 74 20 25 64 20 68 61 73 20 73 6f 6d 65 74 68 69 6e 67 20 | t.start.-.port.%d.has.something. |
| 30820 | 61 74 74 61 63 68 65 64 20 61 6c 72 65 61 64 79 22 0a 20 20 20 20 20 20 20 20 20 20 65 6c 6e 6f | attached.already"...........elno |
| 30840 | 64 65 2d 69 6e 69 74 2d 70 6f 72 74 29 29 29 29 0a 20 20 3b 3b 20 54 75 72 6e 20 6f 6e 20 74 68 | de-init-port))))...;;.Turn.on.th |
| 30860 | 65 20 64 65 66 65 72 20 71 75 65 75 65 20 70 72 6f 63 65 73 73 6f 72 20 69 66 20 77 65 20 6e 65 | e.defer.queue.processor.if.we.ne |
| 30880 | 65 64 20 74 6f 0a 20 20 28 69 66 20 65 6c 6e 6f 64 65 2d 64 65 66 65 72 2d 6f 6e 0a 20 20 20 20 | ed.to...(if.elnode-defer-on..... |
| 308a0 | 20 20 28 69 66 20 28 6e 6f 74 20 65 6c 6e 6f 64 65 2d 2d 64 65 66 65 72 2d 74 69 6d 65 72 29 0a | ..(if.(not.elnode--defer-timer). |
| 308c0 | 20 20 20 20 20 20 20 20 20 20 28 65 6c 6e 6f 64 65 2d 2d 69 6e 69 74 2d 64 65 66 65 72 72 69 6e | ..........(elnode--init-deferrin |
| 308e0 | 67 29 29 29 29 0a 0a 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 64 65 66 63 75 73 74 6f 6d | g))))..;;;###autoload.(defcustom |
| 30900 | 20 65 6c 6e 6f 64 65 2d 64 6f 2d 69 6e 69 74 20 6e 69 6c 0a 20 20 22 53 68 6f 75 6c 64 20 65 6c | .elnode-do-init.nil..."Should.el |
| 30920 | 6e 6f 64 65 20 73 74 61 72 74 20 61 20 73 65 72 76 65 72 20 6f 6e 20 6c 6f 61 64 3f 0a 0a 54 68 | node.start.a.server.on.load?..Th |
| 30940 | 65 20 73 65 72 76 65 72 20 74 68 61 74 20 69 73 20 73 74 61 72 74 65 64 20 69 73 20 63 6f 6e 74 | e.server.that.is.started.is.cont |
| 30960 | 72 6f 6c 6c 65 64 20 62 79 20 6d 6f 72 65 20 65 6c 6e 6f 64 65 0a 63 75 73 74 6f 6d 69 7a 61 74 | rolled.by.more.elnode.customizat |
| 30980 | 69 6f 6e 73 2e 0a 0a 60 65 6c 6e 6f 64 65 2d 68 6f 73 74 70 61 74 68 2d 64 65 66 61 75 6c 74 2d | ions...`elnode-hostpath-default- |
| 309a0 | 74 61 62 6c 65 27 20 64 65 66 69 6e 65 73 20 74 68 65 20 6d 61 70 70 69 6e 67 73 20 66 72 6f 6d | table'.defines.the.mappings.from |
| 309c0 | 0a 68 6f 73 74 70 61 74 68 20 72 65 67 65 78 73 20 74 6f 20 68 61 6e 64 6c 65 72 20 66 75 6e 63 | .hostpath.regexs.to.handler.func |
| 309e0 | 74 69 6f 6e 73 2e 20 42 79 20 64 65 66 61 75 6c 74 20 65 6c 6e 6f 64 65 20 73 68 69 70 73 0a 77 | tions..By.default.elnode.ships.w |
| 30a00 | 69 74 68 20 74 68 69 73 20 63 75 73 74 6f 6d 69 7a 61 74 69 6f 6e 20 73 65 74 75 70 20 74 6f 20 | ith.this.customization.setup.to. |
| 30a20 | 73 65 72 76 65 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 20 72 6f 6f 74 20 64 65 66 69 6e 65 64 0a | serve.the.document.root.defined. |
| 30a40 | 69 6e 20 60 65 6c 6e 6f 64 65 2d 77 65 62 73 65 72 76 65 72 2d 64 6f 63 72 6f 6f 74 27 2c 20 77 | in.`elnode-webserver-docroot',.w |
| 30a60 | 68 69 63 68 20 62 79 20 64 65 66 61 75 6c 74 20 69 73 20 7e 2f 70 75 62 6c 69 63 5f 68 74 6d 6c | hich.by.default.is.~/public_html |
| 30a80 | 2e 22 0a 20 20 3a 67 72 6f 75 70 20 27 65 6c 6e 6f 64 65 0a 20 20 3a 74 79 70 65 20 27 28 62 6f | ."...:group.'elnode...:type.'(bo |
| 30aa0 | 6f 6c 65 61 6e 29 29 0a 0a 28 64 65 66 76 61 72 20 65 6c 6e 6f 64 65 2d 2d 69 6e 69 74 65 64 20 | olean))..(defvar.elnode--inited. |
| 30ac0 | 6e 69 6c 0a 20 20 22 52 65 63 6f 72 64 73 20 77 68 65 6e 20 65 6c 6e 6f 64 65 20 69 73 20 69 6e | nil..."Records.when.elnode.is.in |
| 30ae0 | 69 74 69 61 6c 69 7a 65 64 2e 0a 0a 54 68 69 73 20 69 73 20 61 75 74 6f 6c 6f 61 64 69 6e 67 20 | itialized...This.is.autoloading. |
| 30b00 | 6d 65 63 68 61 6e 69 63 73 2c 20 73 65 65 20 74 68 65 20 65 76 61 6c 2d 61 66 74 65 72 2d 6c 6f | mechanics,.see.the.eval-after-lo |
| 30b20 | 61 64 20 66 6f 72 20 64 6f 69 6e 67 0a 69 6e 69 74 2e 22 29 0a 0a 3b 3b 20 41 75 74 6f 20 73 74 | ad.for.doing.init.")..;;.Auto.st |
| 30b40 | 61 72 74 20 65 6c 6e 6f 64 65 20 69 66 20 77 65 27 72 65 20 65 76 65 72 20 6c 6f 61 64 65 64 0a | art.elnode.if.we're.ever.loaded. |
| 30b60 | 3b 3b 3b 23 23 23 61 75 74 6f 6c 6f 61 64 0a 28 65 76 61 6c 2d 61 66 74 65 72 2d 6c 6f 61 64 20 | ;;;###autoload.(eval-after-load. |
| 30b80 | 27 65 6c 6e 6f 64 65 0a 20 20 27 28 69 66 20 28 61 6e 64 20 28 62 6f 75 6e 64 70 20 27 65 6c 6e | 'elnode...'(if.(and.(boundp.'eln |
| 30ba0 | 6f 64 65 2d 64 6f 2d 69 6e 69 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 65 6c 6e 6f 64 65 2d 64 | ode-do-init)............elnode-d |
| 30bc0 | 6f 2d 69 6e 69 74 0a 09 20 20 20 28 6f 72 20 28 6e 6f 74 20 28 62 6f 75 6e 64 70 20 27 65 6c 6e | o-init.....(or.(not.(boundp.'eln |
| 30be0 | 6f 64 65 2d 2d 69 6e 69 74 65 64 29 29 0a 09 20 20 20 20 20 20 20 28 6e 6f 74 20 65 6c 6e 6f 64 | ode--inited)).........(not.elnod |
| 30c00 | 65 2d 2d 69 6e 69 74 65 64 29 29 29 0a 20 20 20 20 20 20 28 70 72 6f 67 6e 0a 20 20 20 20 20 20 | e--inited))).......(progn....... |
| 30c20 | 20 20 28 65 6c 6e 6f 64 65 2d 69 6e 69 74 29 0a 20 20 20 20 20 20 20 20 28 73 65 74 71 20 65 6c | ..(elnode-init).........(setq.el |
| 30c40 | 6e 6f 64 65 2d 2d 69 6e 69 74 65 64 20 6e 69 6c 29 29 29 29 0a 0a 28 70 72 6f 76 69 64 65 20 27 | node--inited.nil))))..(provide.' |
| 30c60 | 65 6c 6e 6f 64 65 29 0a 0a 3b 3b 3b 20 65 6c 6e 6f 64 65 2e 65 6c 20 65 6e 64 73 20 68 65 72 65 | elnode)..;;;.elnode.el.ends.here |
| 30c80 | 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30ca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30cc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30ce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30d00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30d20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30d40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30d60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30e00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30e20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30e40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30e60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30e80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30ea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30ec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30ee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30f00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30f20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30f40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30f60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30f80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30fa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30fc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 30fe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31000 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31020 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31060 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31080 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 310a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 310c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 310e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31100 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31120 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31140 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31180 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 311a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 311c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 311e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31200 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31220 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31260 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31280 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 312a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 312c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 312e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31300 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31320 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31340 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31360 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31380 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 313a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 313c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 313e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31400 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31420 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31440 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31460 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31480 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 314a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 314c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 314e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31500 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31520 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31540 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31560 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31580 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 315a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 315c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 315e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31600 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31620 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31640 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31660 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31680 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 316a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 316c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 316e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31700 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31720 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31740 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31760 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31780 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 317a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 317c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 317e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31800 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31820 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31840 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31860 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31880 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 318a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 318c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 318e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31900 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31920 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31940 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31960 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31980 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 319a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 319c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 319e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31a00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31a20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31a40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31a60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31a80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31aa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31ac0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31ae0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31b00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31b20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31b40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31b60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31b80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31ba0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31bc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31be0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31c00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31c20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31c40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31c60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31c80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31ca0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31cc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31ce0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31d00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31d20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31d40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31d60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31d80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31da0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31dc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31de0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31e00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31e20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31e40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31e60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31e80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31ea0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31ec0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31ee0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31f00 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31f20 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31f40 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31f60 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31f80 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31fa0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31fc0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |
| 31fe0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................................ |