Thu, 23 Mar 2023 15:30:32 +0000
Remove dependency on util.iterators
I mistakenly thought it was bundled with verse.
12 | 1 | package.preload['util.encodings']=(function(...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3 | local function a(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
11 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
12 | end |
12 | 13 | local function e() |
14 | error("Function not implemented"); | |
15 | end | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
16 | local e=require"mime"; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
17 | a"encodings" |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
18 | idna={}; |
12 | 19 | stringprep={}; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
20 | base64={encode=e.b64,decode=e.unb64}; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
21 | utf8={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
22 | valid=(utf8 and utf8.len)and function(e)return not not utf8.len(e);end or function()return true;end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
23 | }; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
24 | return _M; |
12 | 25 | end) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
26 | package.preload['util.sha1']=(function(...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
27 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
28 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
29 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
30 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
31 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
32 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
33 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
34 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
35 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
36 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
37 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
38 | local m=string.len |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
39 | local o=string.char |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
40 | local k=string.byte |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
41 | local q=string.sub |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
42 | local c=math.floor |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
43 | local t=require"bit" |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
44 | local j=t.bnot |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
45 | local e=t.band |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
46 | local y=t.bor |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
47 | local n=t.bxor |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
48 | local a=t.lshift |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
49 | local i=t.rshift |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
50 | local u,r,l,d,h |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
51 | local function p(t,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
52 | return a(t,e)+i(t,32-e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
53 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
54 | local function s(i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
55 | local t,a |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
56 | local t="" |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
57 | for n=1,8 do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
58 | a=e(i,15) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
59 | if(a<10)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
60 | t=o(a+48)..t |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
61 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
62 | t=o(a+87)..t |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
63 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
64 | i=c(i/16) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
65 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
66 | return t |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
67 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
68 | local function g(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
69 | local i,a |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
70 | local n="" |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
71 | i=m(t)*8 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
72 | t=t..o(128) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
73 | a=56-e(m(t),63) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
74 | if(a<0)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
75 | a=a+64 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
76 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
77 | for e=1,a do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
78 | t=t..o(0) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
79 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
80 | for t=1,8 do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
81 | n=o(e(i,255))..n |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
82 | i=c(i/256) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
83 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
84 | return t..n |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
85 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
86 | local function b(w) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
87 | local m,t,o,a,f,s,c,v |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
88 | local i,i |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
89 | local i={} |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
90 | while(w~="")do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
91 | for e=0,15 do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
92 | i[e]=0 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
93 | for t=1,4 do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
94 | i[e]=i[e]*256+k(w,e*4+t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
95 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
96 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
97 | for e=16,79 do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
98 | i[e]=p(n(n(i[e-3],i[e-8]),n(i[e-14],i[e-16])),1) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
99 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
100 | m=u |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
101 | t=r |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
102 | o=l |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
103 | a=d |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
104 | f=h |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
105 | for h=0,79 do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
106 | if(h<20)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
107 | s=y(e(t,o),e(j(t),a)) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
108 | c=1518500249 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
109 | elseif(h<40)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
110 | s=n(n(t,o),a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
111 | c=1859775393 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
112 | elseif(h<60)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
113 | s=y(y(e(t,o),e(t,a)),e(o,a)) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
114 | c=2400959708 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
115 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
116 | s=n(n(t,o),a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
117 | c=3395469782 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
118 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
119 | v=p(m,5)+s+f+c+i[h] |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
120 | f=a |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
121 | a=o |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
122 | o=p(t,30) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
123 | t=m |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
124 | m=v |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
125 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
126 | u=e(u+m,4294967295) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
127 | r=e(r+t,4294967295) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
128 | l=e(l+o,4294967295) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
129 | d=e(d+a,4294967295) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
130 | h=e(h+f,4294967295) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
131 | w=q(w,65) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
132 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
133 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
134 | local function a(e,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
135 | e=g(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
136 | u=1732584193 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
137 | r=4023233417 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
138 | l=2562383102 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
139 | d=271733878 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
140 | h=3285377520 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
141 | b(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
142 | local e=s(u)..s(r)..s(l) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
143 | ..s(d)..s(h); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
144 | if t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
145 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
146 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
147 | return(e:gsub("..",function(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
148 | return string.char(tonumber(e,16)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
149 | end)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
150 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
151 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
152 | _G.sha1={sha1=a}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
153 | return _G.sha1; |
12 | 154 | end) |
155 | package.preload['lib.adhoc']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
156 | local _ENV=_ENV; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
157 | local function d(t,...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
158 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
159 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
160 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
161 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
162 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
163 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
164 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
165 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
166 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
167 | local s,l=require"util.stanza",require"util.id".short; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
168 | local r="http://jabber.org/protocol/commands"; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
169 | local n={} |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
170 | local h={}; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
171 | local function i(o,e,t,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
172 | local e=s.stanza("command",{xmlns=r,node=o.node,status=e}); |
12 | 173 | if t then e.attr.sessionid=t;end |
174 | if a then e.attr.action=a;end | |
175 | return e; | |
176 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
177 | function h.new(e,o,a,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
178 | return{name=e,node=o,handler=a,cmdtag=i,permission=(t or"user")}; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
179 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
180 | function h.handle_cmd(o,h,t) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
181 | local e=t.tags[1].attr.sessionid or l(); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
182 | local a={}; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
183 | a.to=t.attr.to; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
184 | a.from=t.attr.from; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
185 | a.action=t.tags[1].attr.action or"execute"; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
186 | a.form=t.tags[1]:child_with_ns("jabber:x:data"); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
187 | local a,i=o:handler(a,n[e]); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
188 | n[e]=i; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
189 | local i=s.reply(t); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
190 | local t; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
191 | if a.status=="completed"then |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
192 | n[e]=nil; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
193 | t=o:cmdtag("completed",e); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
194 | elseif a.status=="canceled"then |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
195 | n[e]=nil; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
196 | t=o:cmdtag("canceled",e); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
197 | elseif a.status=="error"then |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
198 | n[e]=nil; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
199 | i=s.error_reply(i,a.error.type,a.error.condition,a.error.message); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
200 | h.send(i); |
12 | 201 | return true; |
202 | else | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
203 | t=o:cmdtag("executing",e); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
204 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
205 | for a,e in pairs(a)do |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
206 | if a=="info"then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
207 | t:tag("note",{type="info"}):text(e):up(); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
208 | elseif a=="warn"then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
209 | t:tag("note",{type="warn"}):text(e):up(); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
210 | elseif a=="error"then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
211 | t:tag("note",{type="error"}):text(e.message):up(); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
212 | elseif a=="actions"then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
213 | local a=s.stanza("actions"); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
214 | for i,e in ipairs(e)do |
12 | 215 | if(e=="prev")or(e=="next")or(e=="complete")then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
216 | a:tag(e):up(); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
217 | else |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
218 | d:log("error",'Command "'..o.name.. |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
219 | '" at node "'..o.node..'" provided an invalid action "'..e..'"'); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
220 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
221 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
222 | t:add_child(a); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
223 | elseif a=="form"then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
224 | t:add_child((e.layout or e):form(e.values)); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
225 | elseif a=="result"then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
226 | t:add_child((e.layout or e):form(e.values,"result")); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
227 | elseif a=="other"then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
228 | t:add_child(e); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
229 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
230 | end |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
231 | i:add_child(t); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
232 | h.send(i); |
12 | 233 | return true; |
234 | end | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
235 | return h; |
12 | 236 | end) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
237 | package.preload['util.table']=(function(...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
238 | local _ENV=_ENV; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
239 | local function e(t,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
240 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
241 | package.loaded[t]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
242 | for t=1,select("#",...)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
243 | (select(t,...))(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
244 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
245 | _ENV=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
246 | _M=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
247 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
248 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
249 | return{pack=function(...)return{n=select("#",...);...}end;create=function()return{}end} |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
250 | end) |
12 | 251 | package.preload['util.stanza']=(function(...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
252 | local _ENV=_ENV; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
253 | local function e(t,...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
254 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
255 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
256 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
257 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
258 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
259 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
260 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
261 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
262 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
263 | local a=error; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
264 | local o=table.insert; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
265 | local l=table.remove; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
266 | local m=table.concat; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
267 | local d=string.match; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
268 | local f=tostring; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
269 | local u=setmetatable; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
270 | local x=getmetatable; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
271 | local h=pairs; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
272 | local s=ipairs; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
273 | local t=type; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
274 | local j=string.gsub; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
275 | local y=string.sub; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
276 | local r=string.find; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
277 | local c=table.move or require"util.table".move; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
278 | local b=require"util.table".create; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
279 | local v=require"util.encodings".utf8.valid; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
280 | local q,p=pcall(require,"util.termcolours"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
281 | local g="urn:ietf:params:xml:ns:xmpp-stanzas"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
282 | local k={xmlns=g}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
283 | local _ENV=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
284 | local e={__name="stanza"}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
285 | e.__index=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
286 | local function i(t,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
287 | return not r(t,e and"[^\1\9\10\13\20-\255]"or"[^\9\10\13\20-\255]"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
288 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
289 | local function n(o,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
290 | if t(o)~="string"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
291 | a("invalid "..e.." name: expected string, got "..t(o)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
292 | elseif#o==0 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
293 | a("invalid "..e.." name: empty string"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
294 | elseif r(o,"[<>& '\"]")then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
295 | a("invalid "..e.." name: contains invalid characters"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
296 | elseif not i(o,e=="attribute")then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
297 | a("invalid "..e.." name: contains control characters"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
298 | elseif not v(o)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
299 | a("invalid "..e.." name: contains invalid utf8"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
300 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
301 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
302 | local function w(e,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
303 | if t(e)~="string"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
304 | a("invalid "..o.." value: expected string, got "..t(e)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
305 | elseif not i(e,false)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
306 | a("invalid "..o.." value: contains control characters"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
307 | elseif not v(e)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
308 | a("invalid "..o.." value: contains invalid utf8"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
309 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
310 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
311 | local function v(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
312 | if e~=nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
313 | if t(e)~="table"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
314 | a("invalid attributes: expected table, got "..t(e)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
315 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
316 | for t,e in h(e)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
317 | n(t,"attribute"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
318 | w(e,"attribute"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
319 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
320 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
321 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
322 | local function i(t,a,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
323 | n(t,"tag"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
324 | v(a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
325 | local t={name=t,attr=a or{},namespaces=o,tags={}}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
326 | return u(t,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
327 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
328 | local function n(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
329 | return x(t)==e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
330 | end |
12 | 331 | function e:query(e) |
332 | return self:tag("query",{xmlns=e}); | |
333 | end | |
334 | function e:body(t,e) | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
335 | return self:text_tag("body",t,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
336 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
337 | function e:text_tag(e,t,o,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
338 | return self:tag(e,o,a):text(t):up(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
339 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
340 | function e:tag(t,e,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
341 | local t=i(t,e,a); |
12 | 342 | local e=self.last_add; |
343 | if not e then e={};self.last_add=e;end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
344 | (e[#e]or self):add_direct_child(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
345 | o(e,t); |
12 | 346 | return self; |
347 | end | |
348 | function e:text(t) | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
349 | if t~=nil and t~=""then |
12 | 350 | local e=self.last_add; |
351 | (e and e[#e]or self):add_direct_child(t); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
352 | end |
12 | 353 | return self; |
354 | end | |
355 | function e:up() | |
356 | local e=self.last_add; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
357 | if e then l(e);end |
12 | 358 | return self; |
359 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
360 | function e:at_top() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
361 | return self.last_add==nil or#self.last_add==0 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
362 | end |
12 | 363 | function e:reset() |
364 | self.last_add=nil; | |
365 | return self; | |
366 | end | |
367 | function e:add_direct_child(e) | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
368 | if n(e)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
369 | o(self.tags,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
370 | o(self,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
371 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
372 | w(e,"text"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
373 | o(self,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
374 | end |
12 | 375 | end |
376 | function e:add_child(t) | |
377 | local e=self.last_add; | |
378 | (e and e[#e]or self):add_direct_child(t); | |
379 | return self; | |
380 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
381 | function e:remove_children(a,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
382 | e=e or self.attr.xmlns; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
383 | return self:maptags(function(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
384 | if(not a or t.name==a)and t.attr.xmlns==e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
385 | return nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
386 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
387 | return t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
388 | end); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
389 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
390 | function e:get_child(a,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
391 | for o,e in s(self.tags)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
392 | if(not a or e.name==a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
393 | and((not t and self.attr.xmlns==e.attr.xmlns) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
394 | or e.attr.xmlns==t)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
395 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
396 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
397 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
398 | return nil; |
12 | 399 | end |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
400 | function e:get_child_text(e,t) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
401 | local e=self:get_child(e,t); |
12 | 402 | if e then |
403 | return e:get_text(); | |
404 | end | |
405 | return nil; | |
406 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
407 | function e:get_child_attr(e,a,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
408 | local e=self:get_child(e,a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
409 | if e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
410 | return e.attr[t]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
411 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
412 | return nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
413 | end |
12 | 414 | function e:child_with_name(t) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
415 | for a,e in s(self.tags)do |
12 | 416 | if e.name==t then return e;end |
417 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
418 | return nil; |
12 | 419 | end |
420 | function e:child_with_ns(t) | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
421 | for a,e in s(self.tags)do |
12 | 422 | if e.attr.xmlns==t then return e;end |
423 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
424 | return nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
425 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
426 | function e:get_child_with_attr(e,i,t,o,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
427 | for e in self:childtags(e,i)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
428 | if(a and a(e.attr[t])or e.attr[t])==o then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
429 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
430 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
431 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
432 | return nil; |
12 | 433 | end |
434 | function e:children() | |
435 | local e=0; | |
436 | return function(t) | |
437 | e=e+1 | |
438 | return t[e]; | |
439 | end,self,e; | |
440 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
441 | function e:childtags(o,a) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
442 | local e=self.tags; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
443 | local i,t=1,#e; |
12 | 444 | return function() |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
445 | for t=i,t do |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
446 | local e=e[t]; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
447 | if(not o or e.name==o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
448 | and((not a and self.attr.xmlns==e.attr.xmlns) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
449 | or e.attr.xmlns==a)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
450 | i=t+1; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
451 | return e; |
12 | 452 | end |
453 | end | |
454 | end; | |
455 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
456 | function e:maptags(h) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
457 | local o,t=self.tags,1; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
458 | local n,i=#self,#o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
459 | local s=n+1; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
460 | local e=1; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
461 | while t<=i and i>0 do |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
462 | if self[e]==o[t]then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
463 | local a=h(self[e]); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
464 | if a==nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
465 | l(self,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
466 | l(o,t); |
12 | 467 | n=n-1; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
468 | i=i-1; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
469 | e=e-1; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
470 | t=t-1; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
471 | else |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
472 | self[e]=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
473 | o[t]=a; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
474 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
475 | t=t+1; |
12 | 476 | end |
477 | e=e+1; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
478 | if e>s then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
479 | a("Invalid stanza state! Please report this error."); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
480 | end |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
481 | end |
12 | 482 | return self; |
483 | end | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
484 | function e:find(a) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
485 | local e=1; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
486 | local s=#a+1; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
487 | repeat |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
488 | local o,t,i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
489 | local n=y(a,e,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
490 | if n=="@"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
491 | return self.attr[y(a,e+1)]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
492 | elseif n=="{"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
493 | o,e=d(a,"^([^}]+)}()",e+1); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
494 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
495 | t,i,e=d(a,"^([^@/#]*)([/#]?)()",e); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
496 | t=t~=""and t or nil; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
497 | if e==s then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
498 | if i=="#"then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
499 | return self:get_child_text(t,o); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
500 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
501 | return self:get_child(t,o); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
502 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
503 | self=self:get_child(t,o); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
504 | until not self |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
505 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
506 | local function l(t,s) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
507 | local n={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
508 | for t,e in h(t.attr)do n[t]=e;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
509 | local a,i=t.namespaces; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
510 | if a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
511 | i={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
512 | for e,t in h(a)do i[e]=t;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
513 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
514 | local o,a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
515 | if s then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
516 | o={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
517 | a={name=t.name,attr=n,namespaces=i,tags=o}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
518 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
519 | o=b(#t.tags,0); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
520 | a=b(#t,4); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
521 | a.name=t.name; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
522 | a.attr=n; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
523 | a.namespaces=i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
524 | a.tags=o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
525 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
526 | u(a,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
527 | if not s then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
528 | c(t,1,#t,1,a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
529 | c(t.tags,1,#t.tags,1,o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
530 | a:maptags(l); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
531 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
532 | return a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
533 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
534 | local function u(e,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
535 | if not n(e)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
536 | a("bad argument to clone: expected stanza, got "..t(e)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
537 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
538 | return l(e,o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
539 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
540 | local l={["'"]="'",["\""]=""",["<"]="<",[">"]=">",["&"]="&"}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
541 | local function c(e)return(j(e,"['&<>\"]",l));end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
542 | local function l(a,e,s,t,u) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
543 | local i=0; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
544 | local l=a.name |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
545 | o(e,"<"..l); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
546 | for a,n in h(a.attr)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
547 | if r(a,"\1",1,true)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
548 | local s,a=d(a,"^([^\1]*)\1?(.*)$"); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
549 | i=i+1; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
550 | o(e," xmlns:ns"..i.."='"..t(s).."' ".."ns"..i..":"..a.."='"..t(n).."'"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
551 | elseif not(a=="xmlns"and n==u)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
552 | o(e," "..a.."='"..t(n).."'"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
553 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
554 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
555 | local i=#a; |
12 | 556 | if i==0 then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
557 | o(e,"/>"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
558 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
559 | o(e,">"); |
12 | 560 | for i=1,i do |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
561 | local i=a[i]; |
12 | 562 | if i.name then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
563 | s(i,e,s,t,a.attr.xmlns); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
564 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
565 | o(e,t(i)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
566 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
567 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
568 | o(e,"</"..l..">"); |
12 | 569 | end |
570 | end | |
571 | function e.__tostring(t) | |
572 | local e={}; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
573 | l(t,e,l,c,nil); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
574 | return m(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
575 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
576 | function e.top_tag(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
577 | local e=u(e,true); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
578 | return f(e):sub(1,-3)..">"; |
12 | 579 | end |
580 | function e.get_text(e) | |
581 | if#e.tags==0 then | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
582 | return m(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
583 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
584 | return nil; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
585 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
586 | function e.get_error(e) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
587 | local i,t,a,o; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
588 | local e=e:get_child("error"); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
589 | if not e then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
590 | return nil,nil,nil,nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
591 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
592 | i=e.attr.type; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
593 | for i,e in s(e.tags)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
594 | if e.attr.xmlns==g then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
595 | if not a and e.name=="text"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
596 | a=e:get_text(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
597 | elseif not t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
598 | t=e.name; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
599 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
600 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
601 | o=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
602 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
603 | if t and a and o then |
12 | 604 | break; |
605 | end | |
606 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
607 | return i,t or"undefined-condition",a,o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
608 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
609 | function e.add_error(o,a,s,h,i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
610 | local e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
611 | if t(a)=="table"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
612 | if t(a.extra)=="table"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
613 | e=a.extra; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
614 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
615 | if t(a.context)=="table"and t(a.context.by)=="string"then i=a.context.by;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
616 | a,s,h=a.type,a.condition,a.text; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
617 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
618 | if o.attr.from==i then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
619 | i=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
620 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
621 | o:tag("error",{type=a,by=i}) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
622 | :tag(s,k); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
623 | if e and s=="gone"and t(e.uri)=="string"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
624 | o:text(e.uri); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
625 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
626 | o:up(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
627 | if h then o:text_tag("text",h,k);end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
628 | if e and n(e.tag)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
629 | o:add_child(e.tag); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
630 | elseif e and e.namespace and e.condition then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
631 | o:tag(e.condition,{xmlns=e.namespace}):up(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
632 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
633 | return o:up(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
634 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
635 | local function l(a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
636 | local i={name=a.name,attr=a.attr}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
637 | for a,e in s(a)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
638 | if t(e)=="table"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
639 | o(i,l(e)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
640 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
641 | o(i,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
642 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
643 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
644 | return i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
645 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
646 | e.__freeze=l; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
647 | local function m(a) |
12 | 648 | if a then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
649 | local e=a.attr; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
650 | local o={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
651 | for e,a in h(e)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
652 | if t(e)=="string"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
653 | if r(e,"|",1,true)and not r(e,"\1",1,true)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
654 | local e,t=d(e,"^([^|]+)|(.+)$"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
655 | o[e.."\1"..t]=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
656 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
657 | o[e]=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
658 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
659 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
660 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
661 | local o=i(a.name,o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
662 | for a,e in s(a)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
663 | if t(e)=="table"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
664 | o:add_direct_child(m(e)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
665 | elseif t(e)=="string"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
666 | o:add_direct_child(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
667 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
668 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
669 | return o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
670 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
671 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
672 | local function y(e,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
673 | if not t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
674 | return i("message",e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
675 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
676 | return i("message",e):text_tag("body",t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
677 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
678 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
679 | local function v(e) |
12 | 680 | if not e then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
681 | a("iq stanzas require id and type attributes"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
682 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
683 | if not e.id then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
684 | a("iq stanzas require an id attribute"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
685 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
686 | if not e.type then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
687 | a("iq stanzas require a type attribute"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
688 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
689 | return i("iq",e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
690 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
691 | local function r(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
692 | if not n(e)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
693 | a("bad argument to reply: expected stanza, got "..t(e)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
694 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
695 | return i(e.name, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
696 | { |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
697 | to=e.attr.from, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
698 | from=e.attr.to, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
699 | id=e.attr.id, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
700 | type=((e.name=="iq"and"result")or e.attr.type) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
701 | }); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
702 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
703 | local function w(e,s,h,i,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
704 | if not n(e)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
705 | a("bad argument to error_reply: expected stanza, got "..t(e)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
706 | elseif e.attr.type=="error"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
707 | a("bad argument to error_reply: got stanza of type error which must not be replied to"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
708 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
709 | local e=r(e); |
12 | 710 | e.attr.type="error"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
711 | e:add_error(s,h,i,o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
712 | e.last_add={e[1]}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
713 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
714 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
715 | local function d(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
716 | return i("presence",e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
717 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
718 | local s; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
719 | if q then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
720 | local a,t=p.getstyle,p.getstring; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
721 | local n=a("1b3967"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
722 | local r=a("13b5ea"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
723 | local o=a("439639"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
724 | local i=a("a0ce67"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
725 | local h=a("d9541e"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
726 | local a=a("e96d1f"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
727 | local h=( |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
728 | t(i,"%1").. |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
729 | t(o,"%2").. |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
730 | t(h,"%3").. |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
731 | t(a,"%4").. |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
732 | t(h,"%5") |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
733 | ); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
734 | local d=( |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
735 | t(o,"%1").. |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
736 | t(i,"%2").. |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
737 | t(o,"%3") |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
738 | ); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
739 | function s(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
740 | return(e:gsub("(<[?/]?)([^ >/?]*)(.-)([?/]?>)([^<]*)",function(o,e,a,i,s) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
741 | return t(n,o)..t(r,e).. |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
742 | a:gsub("([^=]+)(=)([\"'])(.-)([\"'])",h).. |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
743 | t(n,i).. |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
744 | s:gsub("(&#?)(%w+)(;)",d); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
745 | end,100)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
746 | end |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
747 | function e.pretty_print(e) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
748 | return s(f(e)); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
749 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
750 | function e.pretty_top_tag(e) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
751 | return s(e:top_tag()); |
12 | 752 | end |
753 | else | |
754 | e.pretty_print=e.__tostring; | |
755 | e.pretty_top_tag=e.top_tag; | |
756 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
757 | function e.indent(i,o,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
758 | if#i==0 or(#i==1 and t(i[1])=="string")then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
759 | return i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
760 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
761 | a=a or"\t"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
762 | o=o or 1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
763 | local e=u(i,true); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
764 | for i in i:children()do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
765 | if t(i)=="string"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
766 | if i:find("%S")then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
767 | e:text("\n"..a:rep(o)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
768 | e:text(i); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
769 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
770 | elseif n(i)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
771 | e:text("\n"..a:rep(o)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
772 | e:add_direct_child(i:indent(o+1,a)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
773 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
774 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
775 | e:text("\n"..a:rep((o-1))); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
776 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
777 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
778 | return{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
779 | stanza_mt=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
780 | stanza=i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
781 | is_stanza=n; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
782 | preserialize=l; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
783 | deserialize=m; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
784 | clone=u; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
785 | message=y; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
786 | iq=v; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
787 | reply=r; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
788 | error_reply=w; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
789 | presence=d; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
790 | xml_escape=c; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
791 | pretty_print=s; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
792 | }; |
12 | 793 | end) |
794 | package.preload['util.timer']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
795 | local _ENV=_ENV; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
796 | local function e(t,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
797 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
798 | package.loaded[t]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
799 | for t=1,select("#",...)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
800 | (select(t,...))(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
801 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
802 | _ENV=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
803 | _M=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
804 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
805 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
806 | local a=require"util.indexedbheap"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
807 | local t=require"util.logger".init("timer"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
808 | local e=require"net.server"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
809 | local d=require"util.time".now |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
810 | local l=type; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
811 | local h=debug.traceback; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
812 | local i=tostring; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
813 | local c=require"util.xpcall".xpcall; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
814 | local f=math.max; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
815 | local m=pairs; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
816 | if e.timer then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
817 | return e.timer; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
818 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
819 | local _ENV=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
820 | local r=e.add_task; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
821 | local o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
822 | local s=0; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
823 | local a=a.create(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
824 | local n={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
825 | local e=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
826 | local function u(e)t("error","Traceback[timer]: %s",h(i(e),2));end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
827 | local function h(i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
828 | local t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
829 | local o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
830 | while true do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
831 | t=a:peek(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
832 | if t==nil or t>i then break;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
833 | local t,a,e=a:pop(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
834 | local s=n[e]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
835 | n[e]=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
836 | local h,t=c(a,u,i,e,s); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
837 | if h and l(t)=="number"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
838 | if o then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
839 | o[e]={a,t+i}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
840 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
841 | o={[e]={a,t+i}}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
842 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
843 | n[e]=s; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
844 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
845 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
846 | if o then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
847 | for o,e in m(o)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
848 | a:insert(e[1],e[2],o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
849 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
850 | t=a:peek(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
851 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
852 | if t~=nil and s>1 and t==e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
853 | t=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
854 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
855 | e=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
856 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
857 | if t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
858 | return t-i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
859 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
860 | s=s-1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
861 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
862 | local function u(t,u,l) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
863 | local i=d(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
864 | local t=i+t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
865 | local a=a:insert(u,t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
866 | n[a]=l; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
867 | if e==nil or t<e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
868 | e=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
869 | if o then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
870 | o:close(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
871 | o=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
872 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
873 | s=s+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
874 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
875 | o=r(e-i,h); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
876 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
877 | return a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
878 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
879 | local function l(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
880 | n[t]=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
881 | local s,i,n=a:remove(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
882 | local t=a:peek(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
883 | if t~=e and o then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
884 | e=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
885 | o:close(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
886 | if e~=nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
887 | o=r(f(e-d(),0),h); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
888 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
889 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
890 | return s,i,n; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
891 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
892 | local function s(o,n) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
893 | local i=d(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
894 | local t=i+n; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
895 | a:reprioritize(o,n); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
896 | if e==nil or t<e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
897 | e=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
898 | r(e-i,h); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
899 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
900 | return o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
901 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
902 | return{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
903 | add_task=u; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
904 | stop=l; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
905 | reschedule=s; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
906 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
907 | end) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
908 | package.preload['util.termcolours']=(function(...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
909 | local _ENV=_ENV; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
910 | local function e(t,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
911 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
912 | package.loaded[t]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
913 | for t=1,select("#",...)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
914 | (select(t,...))(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
915 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
916 | _ENV=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
917 | _M=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
918 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
919 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
920 | local s,h=table.concat,table.insert; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
921 | local a,r=string.char,string.format; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
922 | local o=tonumber; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
923 | local m=ipairs; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
924 | local u=io.write; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
925 | local i=math.floor; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
926 | local l=type; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
927 | local d=setmetatable; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
928 | local c=pairs; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
929 | local t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
930 | if os.getenv("WINDIR")then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
931 | t=require"util.windows"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
932 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
933 | local n=t and t.get_consolecolor and t.get_consolecolor(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
934 | local _ENV=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
935 | local e={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
936 | reset=0;bright=1,dim=2,underscore=4,blink=5,reverse=7,hidden=8; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
937 | black=30;red=31;green=32;yellow=33;blue=34;magenta=35;cyan=36;white=37; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
938 | ["black background"]=40;["red background"]=41;["green background"]=42;["yellow background"]=43; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
939 | ["blue background"]=44;["magenta background"]=45;["cyan background"]=46;["white background"]=47; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
940 | bold=1,dark=2,underline=4,underlined=4,normal=0; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
941 | } |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
942 | local w={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
943 | ["0"]=n, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
944 | ["1"]=7+8, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
945 | ["1;33"]=2+4+8, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
946 | ["1;31"]=4+8 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
947 | } |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
948 | local y={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
949 | [1]="font-weight: bold",[2]="opacity: 0.5",[4]="text-decoration: underline",[8]="visibility: hidden", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
950 | [30]="color:black",[31]="color:red",[32]="color:green",[33]="color:#FFD700", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
951 | [34]="color:blue",[35]="color: magenta",[36]="color:cyan",[37]="color: white", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
952 | [40]="background-color:black",[41]="background-color:red",[42]="background-color:green", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
953 | [43]="background-color:yellow",[44]="background-color:blue",[45]="background-color: magenta", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
954 | [46]="background-color:cyan",[47]="background-color: white"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
955 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
956 | local a=a(27).."[%sm%s"..a(27).."[0m"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
957 | local function p(e,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
958 | if e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
959 | return r(a,e,t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
960 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
961 | return t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
962 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
963 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
964 | local function v(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
965 | return i(e*3/32)+232; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
966 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
967 | local function f(t,e,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
968 | if t==e and e==a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
969 | return v(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
970 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
971 | t=i(t*3/128); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
972 | e=i(e*3/128); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
973 | a=i(a*3/128); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
974 | return 16+(t*36)+(e*6)+(a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
975 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
976 | local function i(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
977 | local a=o(e:sub(1,2),16); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
978 | local t=o(e:sub(3,4),16); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
979 | local e=o(e:sub(5,6),16); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
980 | return a,t,e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
981 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
982 | d(e,{__index=function(t,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
983 | if l(e)=="string"and e:find("%x%x%x%x%x%x")==1 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
984 | local t=e:sub(7)==" background"and"48;5;"or"38;5;"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
985 | return r("%s%d",t,f(i(e))); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
986 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
987 | end}); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
988 | local a={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
989 | red="ff0000";fuchsia="ff00ff";green="008000";white="ffffff"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
990 | lime="00ff00";yellow="ffff00";purple="800080";blue="0000ff"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
991 | aqua="00ffff";olive="808000";black="000000";navy="000080"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
992 | teal="008080";silver="c0c0c0";maroon="800000";gray="808080"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
993 | } |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
994 | for t,a in c(a)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
995 | e[t]=e[t]or e[a]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
996 | t,a=t.." background",a.." background" |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
997 | e[t]=e[t]or e[a]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
998 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
999 | local function r(...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1000 | local t,a={...},{}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1001 | for o,t in m(t)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1002 | t=e[t]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1003 | if t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1004 | h(a,t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1005 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1006 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1007 | return s(a,";"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1008 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1009 | local a="0"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1010 | local function i(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1011 | e=e or"0"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1012 | if e~=a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1013 | u("\27["..e.."m"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1014 | a=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1015 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1016 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1017 | if t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1018 | function i(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1019 | e=e or"0"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1020 | if e~=a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1021 | t.set_consolecolor(w[e]or n); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1022 | a=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1023 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1024 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1025 | if not n then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1026 | function i()end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1027 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1028 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1029 | local function a(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1030 | if t=="0"then return"</span>";end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1031 | local e={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1032 | for t in t:gmatch("[^;]+")do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1033 | h(e,y[o(t)]); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1034 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1035 | return"</span><span style='"..s(e,";").."'>"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1036 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1037 | local function t(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1038 | return e:gsub("\027%[(.-)m",a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1039 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1040 | return{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1041 | getstring=p; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1042 | getstyle=r; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1043 | setstyle=i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1044 | tohtml=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1045 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1046 | end) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1047 | package.preload['util.uuid']=(function(...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1048 | local _ENV=_ENV; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1049 | local function e(t,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1050 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1051 | package.loaded[t]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1052 | for t=1,select("#",...)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1053 | (select(t,...))(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1054 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1055 | _ENV=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1056 | _M=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1057 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1058 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1059 | local a=require"util.random"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1060 | local t=a.bytes; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1061 | local i=require"util.hex".encode; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1062 | local o=math.ceil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1063 | local function e(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1064 | return i(t(o(e/2))):sub(1,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1065 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1066 | local function o() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1067 | return("%x"):format(t(1):byte()%4+8); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1068 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1069 | local function t() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1070 | return e(8).."-"..e(4).."-4"..e(3).."-"..(o())..e(3).."-"..e(12); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1071 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1072 | return{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1073 | get_nibbles=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1074 | generate=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1075 | seed=a.seed; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1076 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1077 | end) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1078 | package.preload['util.time']=(function(...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1079 | local _ENV=_ENV; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1080 | local function e(t,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1081 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1082 | package.loaded[t]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1083 | for t=1,select("#",...)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1084 | (select(t,...))(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1085 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1086 | _ENV=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1087 | _M=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1088 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1089 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1090 | local o=require"socket".gettime; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1091 | local e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1092 | local t,a=pcall(require,"system"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1093 | if t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1094 | e=a.monotime; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1095 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1096 | return{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1097 | now=o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1098 | monotonic=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1099 | } |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1100 | end) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1101 | package.preload['util.envload']=(function(...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1102 | local _ENV=_ENV; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1103 | local function e(t,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1104 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1105 | package.loaded[t]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1106 | for t=1,select("#",...)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1107 | (select(t,...))(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1108 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1109 | _ENV=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1110 | _M=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1111 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1112 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1113 | local t=load; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1114 | local i=io.open; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1115 | local function s(o,a,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1116 | return t(o,a,nil,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1117 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1118 | local function h(a,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1119 | local e,i,n=i(a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1120 | if not e then return e,i,n;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1121 | local a,t=t(e:lines(2048),"@"..a,nil,o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1122 | e:close(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1123 | return a,t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1124 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1125 | return{envload=s,envloadfile=h}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1126 | end) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1127 | package.preload['util.id']=(function(...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1128 | local _ENV=_ENV; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1129 | local function e(t,...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1130 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1131 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1132 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1133 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1134 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1135 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1136 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1137 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1138 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1139 | local t=string.gsub; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1140 | local o=require"util.random".bytes; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1141 | local a=require"util.encodings".base64.encode; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1142 | local i={["+"]="-",["/"]="_",["="]=""}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1143 | local function e(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1144 | return(t(a(o(e)),"[+/=]",i)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1145 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1146 | return{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1147 | tiny=function()return e(3);end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1148 | short=function()return e(9);end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1149 | medium=function()return e(18);end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1150 | long=function()return e(27);end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1151 | custom=function(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1152 | return function()return e(t);end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1153 | end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1154 | } |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1155 | end) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1156 | package.preload['util.serialization']=(function(...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1157 | local _ENV=_ENV; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1158 | local function e(t,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1159 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1160 | package.loaded[t]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1161 | for t=1,select("#",...)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1162 | (select(t,...))(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1163 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1164 | _ENV=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1165 | _M=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1166 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1167 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1168 | local _=getmetatable; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1169 | local t,a=next,type; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1170 | local n=string.format; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1171 | local z=string.gsub; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1172 | local c=string.rep; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1173 | local o=string.char; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1174 | local k=string.match; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1175 | local q=table.concat; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1176 | local g=require"util.hex".to; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1177 | local p=pcall; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1178 | local v=require"util.envload".envload; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1179 | if not math.type then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1180 | require"util.mathcompat" |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1181 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1182 | local b,j=math.huge,-math.huge; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1183 | local x=math.type; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1184 | local function h(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1185 | return t,e,nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1186 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1187 | local function s(t,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1188 | error("Can't serialize "..a(t)..(e and": "..e or"")); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1189 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1190 | local function t(e,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1191 | return n("{__type=%q,__error=%q}",a(e),t or"fail"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1192 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1193 | local r={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1194 | ['\a']=[[\a]];['\b']=[[\b]]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1195 | ['\f']=[[\f]];['\n']=[[\n]]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1196 | ['\r']=[[\r]];['\t']=[[\t]]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1197 | ['\v']=[[\v]];['\\']=[[\\]]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1198 | ['\"']=[[\"]];['\'']=[[\']]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1199 | } |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1200 | for t=0,255 do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1201 | local e=o(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1202 | if not r[e]then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1203 | r[e]=n("\\%03d",t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1204 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1205 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1206 | local o={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1207 | ["do"]=true;["and"]=true;["else"]=true;["break"]=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1208 | ["if"]=true;["end"]=true;["goto"]=true;["false"]=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1209 | ["in"]=true;["for"]=true;["then"]=true;["local"]=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1210 | ["or"]=true;["nil"]=true;["true"]=true;["until"]=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1211 | ["elseif"]=true;["function"]=true;["not"]=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1212 | ["repeat"]=true;["return"]=true;["while"]=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1213 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1214 | local function u(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1215 | if a(e)~="table"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1216 | e={preset=e}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1217 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1218 | local i={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1219 | table=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1220 | string=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1221 | number=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1222 | boolean=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1223 | ["nil"]=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1224 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1225 | if e.preset=="debug"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1226 | e.preset="oneline"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1227 | e.freeze=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1228 | e.fatal=false; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1229 | e.fallback=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1230 | e.unquoted=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1231 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1232 | if e.preset=="oneline"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1233 | e.indentwith=e.indentwith or""; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1234 | e.itemstart=e.itemstart or" "; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1235 | e.itemlast=e.itemlast or""; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1236 | e.tend=e.tend or" }"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1237 | elseif e.preset=="compact"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1238 | e.indentwith=e.indentwith or""; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1239 | e.itemstart=e.itemstart or""; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1240 | e.itemlast=e.itemlast or""; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1241 | e.equals=e.equals or"="; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1242 | e.unquoted=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1243 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1244 | local s=e.fallback or e.fatal==false and t or s; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1245 | local function l(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1246 | return(i[a(e)]or s)(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1247 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1248 | local p=e.keywords or o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1249 | local y=e.indentwith or"\t"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1250 | local v=e.itemstart or"\n"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1251 | local I=e.itemsep or";"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1252 | local N=e.itemlast or";\n"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1253 | local O=e.tstart or"{"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1254 | local E=e.tend or"}"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1255 | local T=e.kstart or"["; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1256 | local A=e.kend or"]"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1257 | local f=e.equals or" = "; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1258 | local w=e.unquoted==true and"^[%a_][%w_]*$"or e.unquoted; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1259 | local d=e.hex; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1260 | local S=e.freeze; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1261 | local m=e.maxdepth or 127; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1262 | local H=e.multiref; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1263 | local R=e.table_iterator or h; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1264 | local function u(o,t,e,i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1265 | if t[o]then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1266 | t[e],e=s(o,"table has multiple references"),e+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1267 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1268 | elseif i>m then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1269 | t[e],e=s(o,"max table depth reached"),e+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1270 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1271 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1272 | local m=o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1273 | t[o]=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1274 | t[m]=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1275 | if S==true then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1276 | local i=_(o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1277 | if a(i)=="table"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1278 | local n=i.__name; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1279 | local i=i.__freeze; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1280 | if a(i)=="function"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1281 | o=i(o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1282 | if a(o)=="string"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1283 | t[e],e=o,e+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1284 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1285 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1286 | if a(n)=="string"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1287 | t[e],e=n,e+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1288 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1289 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1290 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1291 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1292 | t[e],e=O,e+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1293 | local b=c(y,i); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1294 | local s=1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1295 | local h,r; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1296 | local d=false; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1297 | for o,n in R(o)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1298 | d=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1299 | t[e],e=v,e+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1300 | t[e],e=b,e+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1301 | h,r=a(o),a(n); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1302 | if o==s then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1303 | s=s+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1304 | elseif w and h=="string"and |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1305 | not p[o]and k(o,w)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1306 | t[e],e=o,e+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1307 | t[e],e=f,e+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1308 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1309 | t[e],e=T,e+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1310 | if h=="table"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1311 | e=u(o,t,e,i+1); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1312 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1313 | t[e],e=l(o),e+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1314 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1315 | t[e],t[e+1],e=A,f,e+2; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1316 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1317 | if r=="table"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1318 | e=u(n,t,e,i+1); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1319 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1320 | t[e],e=l(n),e+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1321 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1322 | t[e],e=I,e+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1323 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1324 | if d then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1325 | t[e-1]=N; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1326 | t[e],e=c(y,i-1),e+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1327 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1328 | t[e],e=E,e+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1329 | if H then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1330 | t[o]=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1331 | t[m]=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1332 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1333 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1334 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1335 | function i.table(t) |
12 | 1336 | local e={}; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1337 | u(t,e,1,1); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1338 | return q(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1339 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1340 | local function t(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1341 | return'"'..z(e,"[%z\1-\31\"\'\\\127-\255]",r)..'"'; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1342 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1343 | if a(d)=="string"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1344 | function i.string(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1345 | local t=t(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1346 | if#t>(#e*2+2+#d)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1347 | return d..'"'..g(e)..'"'; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1348 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1349 | return t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1350 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1351 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1352 | i.string=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1353 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1354 | function i.number(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1355 | if x(e)=="integer"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1356 | return n("%d",e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1357 | elseif e==b then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1358 | return"(1/0)"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1359 | elseif e==j then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1360 | return"(-1/0)"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1361 | elseif e~=e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1362 | return"(0/0)"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1363 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1364 | return n("%.18g",e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1365 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1366 | i["nil"]=function() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1367 | return"nil"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1368 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1369 | function i.boolean(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1370 | return e and"true"or"false"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1371 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1372 | return l; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1373 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1374 | local function o(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1375 | if a(e)~="string"then return nil;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1376 | e="return "..e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1377 | local e,t=v(e,"=serialized data",{}); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1378 | if not e then return nil,t;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1379 | local t,e=p(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1380 | if not t then return nil,e;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1381 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1382 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1383 | local a=u(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1384 | return{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1385 | new=u; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1386 | serialize=function(e,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1387 | if t==nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1388 | return a(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1389 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1390 | return u(t)(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1391 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1392 | end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1393 | deserialize=o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1394 | }; |
12 | 1395 | end) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1396 | package.preload['util.indexedbheap']=(function(...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1397 | local _ENV=_ENV; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1398 | local function e(t,...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1399 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1400 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1401 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1402 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1403 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1404 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1405 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1406 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1407 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1408 | local d=setmetatable; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1409 | local r=math.floor; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1410 | local i=table.remove; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1411 | local function l(t,s,o,n,i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1412 | local e=#t+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1413 | while true do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1414 | local a=r(e/2); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1415 | if a==0 or s>t[a]then break;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1416 | t[e]=t[a]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1417 | o[e]=o[a]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1418 | i[o[e]]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1419 | e=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1420 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1421 | t[e]=s; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1422 | o[e]=n; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1423 | i[n]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1424 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1425 | local function h(a,e,t,i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1426 | local n=a[e]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1427 | local s=t[e]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1428 | while e~=1 do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1429 | local o=r(e/2); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1430 | if n>=a[o]then break;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1431 | a[e]=a[o]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1432 | t[e]=t[o]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1433 | i[t[e]]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1434 | e=o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1435 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1436 | a[e]=n; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1437 | t[e]=s; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1438 | i[s]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1439 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1440 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1441 | local function n(a,e,o,h) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1442 | local s=a[e]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1443 | local n=o[e]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1444 | local i=#a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1445 | local t=2*e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1446 | while 2*e<=i do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1447 | if t~=i and a[t]>a[t+1]then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1448 | t=t+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1449 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1450 | if s>a[t]then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1451 | a[e]=a[t]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1452 | o[e]=o[t]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1453 | h[o[e]]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1454 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1455 | break; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1456 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1457 | e=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1458 | t=2*e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1459 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1460 | a[e]=s; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1461 | o[e]=n; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1462 | h[n]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1463 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1464 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1465 | local function r(e,t,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1466 | local h=#e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1467 | if h==0 then return nil;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1468 | local s=e[1]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1469 | local a=t[1]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1470 | o[a]=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1471 | if h==1 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1472 | e[1]=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1473 | t[1]=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1474 | return s,a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1475 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1476 | e[1]=i(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1477 | t[1]=i(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1478 | o[t[1]]=1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1479 | n(e,1,t,o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1480 | return s,a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1481 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1482 | local t={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1483 | function t:insert(t,a,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1484 | if e==nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1485 | e=self.current_id; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1486 | self.current_id=e+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1487 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1488 | self.items[e]=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1489 | l(self.priorities,a,self.ids,e,self.index); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1490 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1491 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1492 | function t:pop() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1493 | local a,e=r(self.priorities,self.ids,self.index); |
12 | 1494 | if e then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1495 | local t=self.items[e]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1496 | self.items[e]=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1497 | return a,t,e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1498 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1499 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1500 | function t:peek() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1501 | return self.priorities[1]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1502 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1503 | function t:reprioritize(e,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1504 | local e=self.index[e]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1505 | if e==nil then return;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1506 | self.priorities[e]=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1507 | e=h(self.priorities,e,self.ids,self.index); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1508 | n(self.priorities,e,self.ids,self.index); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1509 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1510 | function t:remove_index(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1511 | local o=self.priorities[e]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1512 | if o==nil then return;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1513 | local t=self.ids[e]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1514 | local s=self.items[t]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1515 | local a=#self.priorities; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1516 | self.priorities[e]=self.priorities[a]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1517 | self.ids[e]=self.ids[a]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1518 | self.index[self.ids[e]]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1519 | i(self.priorities); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1520 | i(self.ids); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1521 | self.index[t]=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1522 | self.items[t]=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1523 | if a>e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1524 | e=h(self.priorities,e,self.ids,self.index); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1525 | n(self.priorities,e,self.ids,self.index); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1526 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1527 | return o,s,t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1528 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1529 | function t:remove(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1530 | return self:remove_index(self.index[e]); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1531 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1532 | local e={__index=t}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1533 | local e={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1534 | create=function() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1535 | return d({ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1536 | ids={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1537 | items={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1538 | priorities={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1539 | index={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1540 | current_id=1.5 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1541 | },e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1542 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1543 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1544 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1545 | end) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1546 | package.preload['util.xpcall']=(function(...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1547 | local _ENV=_ENV; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1548 | local function e(t,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1549 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1550 | package.loaded[t]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1551 | for t=1,select("#",...)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1552 | (select(t,...))(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1553 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1554 | _ENV=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1555 | _M=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1556 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1557 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1558 | local e=xpcall; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1559 | if select(2,e(function(e)return e end,function()end,"test"))~="test"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1560 | e=require"util.compat".xpcall; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1561 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1562 | return{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1563 | xpcall=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1564 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1565 | end) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1566 | package.preload['util.array']=(function(...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1567 | local _ENV=_ENV; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1568 | local function e(t,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1569 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1570 | package.loaded[t]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1571 | for t=1,select("#",...)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1572 | (select(t,...))(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1573 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1574 | _ENV=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1575 | _M=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1576 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1577 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1578 | local r,l,u,f |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1579 | =table.insert,table.sort,table.remove,table.concat; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1580 | local h=require"util.table".move; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1581 | local s=setmetatable; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1582 | local a=getmetatable; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1583 | local d=math.random; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1584 | local c=math.floor; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1585 | local y,p=pairs,ipairs; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1586 | local w=tostring; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1587 | local m=type; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1588 | local i={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1589 | local t={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1590 | local e={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1591 | local o={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1592 | __index=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1593 | __name="array"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1594 | __tostring=function(e)return"{"..e:concat(", ").."}";end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1595 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1596 | function o:__freeze()return self;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1597 | local function n(i,e,a,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1598 | if m(e)=="function"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1599 | e=i.collect(e,a,t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1600 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1601 | return s(e or{},o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1602 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1603 | function o.__add(t,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1604 | local e=n(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1605 | return e:append(t):append(a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1606 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1607 | function o.__eq(e,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1608 | if a(e)~=o or a(t)~=o then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1609 | return false; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1610 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1611 | if#e==#t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1612 | for a=1,#e do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1613 | if e[a]~=t[a]then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1614 | return false; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1615 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1616 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1617 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1618 | return false; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1619 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1620 | return true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1621 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1622 | function o.__div(t,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1623 | local a=n(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1624 | local e=0; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1625 | for i=1,#t do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1626 | local t=o(t[i]); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1627 | if t~=nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1628 | e=e+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1629 | a[e]=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1630 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1631 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1632 | return a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1633 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1634 | s(i,{__call=n}); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1635 | function e:random() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1636 | return self[d(1,#self)]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1637 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1638 | function e:random_other(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1639 | local e=#self; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1640 | return self[((math.random(1,e-1)+(t-1))%e)+1]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1641 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1642 | function t.map(e,t,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1643 | for t,o in p(t)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1644 | e[t]=a(o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1645 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1646 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1647 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1648 | function t.filter(t,o,n) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1649 | local i,a=o==t,#o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1650 | local e=1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1651 | for a=1,a do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1652 | local a=o[a]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1653 | if n(a)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1654 | t[e]=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1655 | e=e+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1656 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1657 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1658 | if i and e<=a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1659 | for e=e,a do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1660 | t[e]=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1661 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1662 | end |
12 | 1663 | return t; |
1664 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1665 | function t.slice(a,t,o,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1666 | if e==nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1667 | e=-1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1668 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1669 | if e<0 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1670 | e=#t+(e+1); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1671 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1672 | if o<0 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1673 | o=#t+(o+1); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1674 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1675 | if o<1 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1676 | o=1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1677 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1678 | if e>#t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1679 | e=#t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1680 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1681 | if o>e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1682 | for e=1,#a do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1683 | a[e]=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1684 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1685 | return a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1686 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1687 | h(t,o,e,1,a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1688 | if t==a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1689 | h(t,#a+1,#a*2,2+e-o,t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1690 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1691 | return a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1692 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1693 | function t.sort(e,t,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1694 | if t~=e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1695 | e:append(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1696 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1697 | l(e,...); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1698 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1699 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1700 | function t.unique(o,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1701 | local e={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1702 | return t.filter(o,a,function(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1703 | if e[t]then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1704 | return false; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1705 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1706 | e[t]=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1707 | return true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1708 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1709 | end); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1710 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1711 | function t.pluck(a,e,o,i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1712 | for t=1,#e do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1713 | local e=e[t][o]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1714 | if e==nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1715 | e=i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1716 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1717 | a[t]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1718 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1719 | return a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1720 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1721 | function t.reverse(e,i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1722 | local t=#i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1723 | if i==e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1724 | local a=c(t/2); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1725 | t=t+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1726 | local o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1727 | for a=1,a do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1728 | o=t-a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1729 | e[a],e[o]=e[o],e[a]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1730 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1731 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1732 | local a=t+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1733 | for t=1,t do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1734 | e[t]=i[a-t]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1735 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1736 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1737 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1738 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1739 | function e:shuffle() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1740 | local t=#self; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1741 | for e=1,#self do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1742 | local t=d(e,t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1743 | self[e],self[t]=self[t],self[e]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1744 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1745 | return self; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1746 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1747 | function e:append(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1748 | h(e,1,#e,#self+1,self); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1749 | return self; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1750 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1751 | function e:push(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1752 | r(self,t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1753 | return self; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1754 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1755 | e.pop=u; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1756 | function e:concat(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1757 | return f(i.map(self,w),e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1758 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1759 | function e:length() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1760 | return#self; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1761 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1762 | function i.collect(i,a,e) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1763 | local t={}; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1764 | while true do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1765 | e=i(a,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1766 | if e==nil then break;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1767 | r(t,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1768 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1769 | return s(t,o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1770 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1771 | for t,a in y(t)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1772 | local a=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1773 | i[t]=function(t,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1774 | local o=n(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1775 | return a(o,t,...); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1776 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1777 | e[t]=function(e,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1778 | return a(e,e,...); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1779 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1780 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1781 | return i; |
12 | 1782 | end) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1783 | package.preload['util.format']=(function(...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1784 | local _ENV=_ENV; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1785 | local function e(t,...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1786 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1787 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1788 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1789 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1790 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1791 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1792 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1793 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1794 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1795 | local n=tostring; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1796 | local m=table.unpack; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1797 | local e=table.pack; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1798 | local c=require"util.encodings".utf8.valid; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1799 | local i=type; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1800 | local l=require"util.serialization".new("debug"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1801 | local r=math.type; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1802 | local u={c=true,d=true,i=true,o=true,u=true,X=true,x=true,}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1803 | local f={o=true;u=true;x=true;X=true}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1804 | local d={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1805 | ["\000"]="\226\144\128",["\001"]="\226\144\129",["\002"]="\226\144\130", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1806 | ["\003"]="\226\144\131",["\004"]="\226\144\132",["\005"]="\226\144\133", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1807 | ["\006"]="\226\144\134",["\007"]="\226\144\135",["\008"]="\226\144\136", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1808 | ["\009"]="\226\144\137",["\010"]="\226\144\138",["\011"]="\226\144\139", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1809 | ["\012"]="\226\144\140",["\013"]="\226\144\141",["\014"]="\226\144\142", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1810 | ["\015"]="\226\144\143",["\016"]="\226\144\144",["\017"]="\226\144\145", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1811 | ["\018"]="\226\144\146",["\019"]="\226\144\147",["\020"]="\226\144\148", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1812 | ["\021"]="\226\144\149",["\022"]="\226\144\150",["\023"]="\226\144\151", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1813 | ["\024"]="\226\144\152",["\025"]="\226\144\153",["\026"]="\226\144\154", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1814 | ["\027"]="\226\144\155",["\028"]="\226\144\156",["\029"]="\226\144\157", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1815 | ["\030"]="\226\144\158",["\031"]="\226\144\159",["\127"]="\226\144\161", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1816 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1817 | local y=pcall(string.format,"%p",""); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1818 | local function w(h,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1819 | local o=e(...); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1820 | local w=o.n; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1821 | local a=0; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1822 | h=h:gsub("%%[^cdiouxXaAeEfgGpqs%%]*[cdiouxXaAeEfgGpqs%%]",function(s) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1823 | if s=="%%"then return end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1824 | a=a+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1825 | local e=o[a]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1826 | if e==nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1827 | o[a]="nil"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1828 | return"(%s)"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1829 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1830 | local t=s:sub(-1); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1831 | local i=i(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1832 | if t=="s"and i=="string"and not e:find("[%z\1-\31\128-\255]")then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1833 | return |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1834 | elseif i=="number"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1835 | if t=="g"or(t=="d"and r(e)=="integer")then return end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1836 | elseif t=="s"and i~="string"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1837 | e=n(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1838 | i="string"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1839 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1840 | if t~="s"and t~="q"and t~="p"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1841 | if i~="number"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1842 | e=n(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1843 | t="s"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1844 | s="[%s]"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1845 | i="string"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1846 | elseif u[t]and r(e)~="integer"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1847 | o[a]=n(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1848 | return"[%s]"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1849 | elseif f[t]and e<0 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1850 | o[a]=n(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1851 | return"[%s]"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1852 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1853 | return |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1854 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1855 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1856 | if t=="p"and not y then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1857 | e=n(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1858 | t="s"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1859 | s="[%s]"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1860 | i="string"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1861 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1862 | if i=="string"and t~="p"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1863 | if not c(e)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1864 | t="q"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1865 | elseif t~="q"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1866 | o[a]=e:gsub("[%z\1-\8\11-\31\127]",d):gsub("\n\t?","\n\t"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1867 | return s; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1868 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1869 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1870 | if t=="q"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1871 | o[a]=l(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1872 | return"%s"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1873 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1874 | if t=="p"and(i=="boolean"or i=="number")then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1875 | o[a]=n(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1876 | return"[%s]"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1877 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1878 | end); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1879 | while a<w do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1880 | a=a+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1881 | local e=o[a]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1882 | if e==nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1883 | o[a]="(nil)"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1884 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1885 | o[a]=n(e):gsub("[%z\1-\8\11-\31\127]",d):gsub("\n\t?","\n\t"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1886 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1887 | h=h.." [%s]" |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1888 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1889 | return h:format(m(o)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1890 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1891 | return{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1892 | format=w; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1893 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1894 | end) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1895 | package.preload['util.promise']=(function(...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1896 | local _ENV=_ENV; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1897 | local function e(t,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1898 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1899 | package.loaded[t]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1900 | for t=1,select("#",...)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1901 | (select(t,...))(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1902 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1903 | _ENV=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1904 | _M=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1905 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1906 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1907 | local o={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1908 | local a={__name="promise",__index=o}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1909 | local n=require"util.xpcall".xpcall; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1910 | local l=table.unpack; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1911 | function a:__tostring() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1912 | return"promise ("..(self._state or"invalid")..")"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1913 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1914 | local function i(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1915 | local e=getmetatable(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1916 | return e==a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1917 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1918 | local function e(e,t,o,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1919 | if not e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1920 | return a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1921 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1922 | return function(a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1923 | local a,e=n(e,debug.traceback,a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1924 | if a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1925 | t(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1926 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1927 | o(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1928 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1929 | return true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1930 | end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1931 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1932 | local function u(o,i,n,a,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1933 | table.insert(o._pending_on_fulfilled,e(i,a,t,a)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1934 | table.insert(o._pending_on_rejected,e(n,a,t,t)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1935 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1936 | local function r(a,o,n,t,i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1937 | e(o,t,i,t)(a.value); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1938 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1939 | local function d(i,n,o,a,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1940 | e(o,a,t,t)(i.reason); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1941 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1942 | local function h(e,i,o,t,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1943 | if e._state~="pending"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1944 | return; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1945 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1946 | e._state=i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1947 | e._next=o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1948 | for o,t in ipairs(t)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1949 | t(a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1950 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1951 | e._pending_on_fulfilled=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1952 | e._pending_on_rejected=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1953 | return true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1954 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1955 | local function s(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1956 | local function a(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1957 | if i(t)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1958 | t:next(s(e)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1959 | elseif h(e,"fulfilled",r,e._pending_on_fulfilled,t)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1960 | e.value=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1961 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1962 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1963 | local function o(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1964 | if h(e,"rejected",d,e._pending_on_rejected,t)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1965 | e.reason=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1966 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1967 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1968 | return a,o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1969 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1970 | local d=function(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1971 | e(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1972 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1973 | local function e(o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1974 | local e=setmetatable({_state="pending",_next=u,_pending_on_fulfilled={},_pending_on_rejected={}},a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1975 | if o then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1976 | d(function() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1977 | local a,t=s(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1978 | local o,a=n(o,debug.traceback,a,t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1979 | if not o and e._state=="pending"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1980 | t(a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1981 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1982 | end); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1983 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1984 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1985 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1986 | local function r(o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1987 | return e(function(n,r) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1988 | local e,a,s=0,{},false; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
1989 | local t=0; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1990 | for h,o in pairs(o)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1991 | if i(o)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1992 | t=t+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1993 | o:next(function(o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1994 | a[h]=o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1995 | e=e+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1996 | if e==t and s then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1997 | n(a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1998 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
1999 | end,r); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2000 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2001 | a[h]=o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2002 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2003 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2004 | s=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2005 | if e==t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2006 | n(a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2007 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2008 | end); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2009 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2010 | local function u(n) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2011 | return e(function(h) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2012 | local e,t,o=0,{},false; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2013 | local a=0; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2014 | for s,n in pairs(n)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2015 | if i(n)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2016 | a=a+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2017 | n:next(function(i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2018 | t[s]={status="fulfilled",value=i}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2019 | e=e+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2020 | if e==a and o then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2021 | h(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2022 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2023 | end,function(i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2024 | t[s]={status="rejected",reason=i}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2025 | e=e+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2026 | if e==a and o then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2027 | h(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2028 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2029 | end); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2030 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2031 | t[s]=n; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2032 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2033 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2034 | o=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2035 | if e==a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2036 | h(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2037 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2038 | end); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2039 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2040 | local function n(e,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2041 | local t,a={...},select("#",...); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2042 | return r(t):next(function(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2043 | return e(l(t,1,a)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2044 | end); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2045 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2046 | local function s(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2047 | return e(function(e,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2048 | for o=1,#t do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2049 | t[o]:next(e,a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2050 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2051 | end); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2052 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2053 | local function t(t) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2054 | return e(function(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2055 | e(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2056 | end); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2057 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2058 | local function a(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2059 | return e(function(a,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2060 | e(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2061 | end); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2062 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2063 | local function h(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2064 | return t():next(function()return e();end); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2065 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2066 | function o:next(o,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2067 | return e(function(e,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2068 | self:_next(o,a,e,t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2069 | end); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2070 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2071 | function o:catch(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2072 | return self:next(nil,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2073 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2074 | function o:finally(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2075 | local function t(t)e();return t;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2076 | local function o(t)e();return a(t);end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2077 | return self:next(t,o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2078 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2079 | return{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2080 | new=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2081 | resolve=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2082 | join=n; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2083 | reject=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2084 | all=r; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2085 | all_settled=u; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2086 | race=s; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2087 | try=h; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2088 | is_promise=i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2089 | set_nexttick=function(e)d=e;end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2090 | } |
12 | 2091 | end) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2092 | package.preload['net.adns']=(function(...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2093 | local _ENV=_ENV; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2094 | local function e(t,...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2095 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2096 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2097 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2098 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2099 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2100 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2101 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2102 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2103 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2104 | local o=setmetatable; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2105 | local c=tostring; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2106 | local k=table.concat; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2107 | local n=string.format; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2108 | local q=string.lower; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2109 | local d=string.upper; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2110 | local i=function()end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2111 | local w=require"util.logger"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2112 | local l=w.init("unbound"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2113 | local p=require"net.server"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2114 | local m=require"lunbound"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2115 | local g=require"util.promise"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2116 | local b=require"util.id".short; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2117 | local y=require"socket".gettime; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2118 | local e=require"util.dns"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2119 | local h,s,u=e.classes,e.types,e.errors; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2120 | local v=e.parsers; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2121 | local t={hoststxt=false} |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2122 | local function r(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2123 | e=e or{}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2124 | for t,a in pairs(t)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2125 | if e[t]==nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2126 | e[t]=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2127 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2128 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2129 | for t,a in pairs(m.config)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2130 | if e[t]==nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2131 | e[t]=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2132 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2133 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2134 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2135 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2136 | local a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2137 | if prosody then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2138 | local e=require"core.configmanager"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2139 | a=r(e.get("*","unbound")); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2140 | prosody.events.add_handler("config-reloaded",function() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2141 | a=r(e.get("*","unbound")); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2142 | end); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2143 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2144 | local function r(e,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2145 | l("debug","Setting up net.server event handling for %s",e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2146 | return t.watchfd(e,function() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2147 | l("debug","Processing queries for %s",e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2148 | e:process() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2149 | end); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2150 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2151 | local t,f; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2152 | local function l() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2153 | t=m.new(a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2154 | f=r(t,p); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2155 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2156 | if prosody then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2157 | prosody.events.add_handler("server-started",l); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2158 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2159 | local n={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2160 | __tostring=function(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2161 | if e._string then return e._string end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2162 | local t=n("Status: %s",u[e.status]); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2163 | if e.secure then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2164 | t=t..", Secure"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2165 | elseif e.bogus then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2166 | t=t..n(", Bogus: %s",e.bogus); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2167 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2168 | local t={t}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2169 | for a=1,#e do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2170 | t[a+1]=e.qname.."\t"..h[e.qclass].."\t"..s[e.qtype].."\t"..c(e[a]); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2171 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2172 | local t=k(t,"\n"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2173 | e._string=t; |
12 | 2174 | return t; |
2175 | end; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2176 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2177 | local r={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2178 | local function p(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2179 | if not e then return end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2180 | local a=u[e.rcode]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2181 | local i=h[e.qclass]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2182 | local t=s[e.qtype]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2183 | e.status,e.class,e.type=a,i,t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2184 | local a=q(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2185 | local i={__index=e,__tostring=function(e)return c(e[a])end}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2186 | local s=v[t]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2187 | for t=1,#e do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2188 | if e.bogus then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2189 | e[t]=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2190 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2191 | e[t]=o({[a]=s(e[t])},i); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2192 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2193 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2194 | return o(e,n); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2195 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2196 | local function m(m,u,o,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2197 | if not t then l();end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2198 | o=o and d(o)or"A"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2199 | a=a and d(a)or"IN"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2200 | local l,h=s[o],h[a]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2201 | local d=y(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2202 | local n; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2203 | local i=w.init("unbound.query"..b()); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2204 | local function s(e,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2205 | local s=y(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2206 | r[n]=nil; |
12 | 2207 | if e then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2208 | p(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2209 | i("debug","Results for %s %s %s: %s (%s, %f sec)",u,a,o,e.rcode==0 and(#e.." items")or e.status, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2210 | e.secure and"Secure"or e.bogus or"Insecure",s-d); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2211 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2212 | i("error","Results for %s %s %s: %s",u,a,o,c(t)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2213 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2214 | local t,e=pcall(m,e,t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2215 | if not t then i("error","Error in callback: %s",e);end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2216 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2217 | i("debug","Resolve %s %s %s",u,a,o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2218 | local e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2219 | n,e=t:resolve_async(s,u,l,h); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2220 | if n then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2221 | r[n]=m; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2222 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2223 | i("error","Resolver error: %s",e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2224 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2225 | return n,e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2226 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2227 | local function o(o,a,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2228 | if not t then l();end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2229 | a=a and d(a)or"A"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2230 | e=e and d(e)or"IN"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2231 | local e,a=s[a],h[e]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2232 | local e,t=t:resolve(o,e,a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2233 | if not e then return e,t;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2234 | return p(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2235 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2236 | local function e(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2237 | local a=r[e]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2238 | t:cancel(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2239 | if a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2240 | a(nil,"canceled"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2241 | r[e]=nil; |
12 | 2242 | end |
2243 | return true; | |
2244 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2245 | local function t() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2246 | for t in pairs(r)do e(t);end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2247 | if f then f:close();end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2248 | l(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2249 | return true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2250 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2251 | local function a() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2252 | error"not implemented"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2253 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2254 | local a={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2255 | lookup=m; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2256 | cancel=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2257 | new_async_socket=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2258 | dns={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2259 | lookup=o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2260 | cancel=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2261 | cache=i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2262 | socket_wrapper_set=i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2263 | settimeout=i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2264 | query=i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2265 | purge=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2266 | random=i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2267 | peek=i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2268 | types=s; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2269 | classes=h; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2270 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2271 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2272 | local function n(e,i,a,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2273 | return g.new(function(n,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2274 | local function s(a,e) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2275 | if e then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2276 | return t(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2277 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2278 | return n(a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2279 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2280 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2281 | local e,a=m(s,i,a,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2282 | if not e then t(a);end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2283 | end); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2284 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2285 | local e={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2286 | lookup=function(i,e,t,a,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2287 | return m(e,t,a,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2288 | end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2289 | lookup_promise=n; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2290 | _resolver={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2291 | settimeout=function()end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2292 | closeall=function()end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2293 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2294 | } |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2295 | function a.resolver()return e;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2296 | return a; |
12 | 2297 | end) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2298 | package.preload['util.dns']=(function(...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2299 | local _ENV=_ENV; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2300 | local function e(t,...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2301 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2302 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2303 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2304 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2305 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2306 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2307 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2308 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2309 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2310 | local t=setmetatable; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2311 | local e=table; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2312 | local s=e.concat; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2313 | local n=e.insert; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2314 | local o=string.byte; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2315 | local i=string.format; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2316 | local r=string.sub; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2317 | local h=require"util.dnsregistry"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2318 | local c=require"util.hex".encode; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2319 | local d=require"util.net".ntop; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2320 | local e={}; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2321 | local function a(a,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2322 | if o(a,t)==0 then return".",t+1;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2323 | local d,h,i=#a,{}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2324 | t=t or 1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2325 | repeat |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2326 | i=o(a,t)or 0; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2327 | n(h,r(a,t+1,t+i)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2328 | t=t+i+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2329 | until i==0 or t>=d; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2330 | return s(h,"."),t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2331 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2332 | e.CNAME=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2333 | e.NS=a |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2334 | e.PTR=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2335 | local x={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2336 | __tostring=function(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2337 | return i("%s %s %d %d %d %d %d",e.mname,e.rname,e.serial,e.refresh,e.retry,e.expire,e.minimum); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2338 | end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2339 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2340 | function e.SOA(n) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2341 | local s,h,i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2342 | s,i=a(n,1); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2343 | h,i=a(n,i); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2344 | local |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2345 | j,q,g,k, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2346 | b,l,r,d, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2347 | n,a,o,i, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2348 | u,w,c,p, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2349 | v,y,m,f |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2350 | =o(n,i,i+19); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2351 | return t({ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2352 | mname=s; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2353 | rname=h; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2354 | serial=j*16777216+q*65536+g*256+k; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2355 | refresh=b*16777216+l*65536+r*256+d; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2356 | retry=n*16777216+a*65536+o*256+i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2357 | expire=u*16777216+w*65536+c*256+p; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2358 | minimum=v*16777216+y*65536+m*256+f; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2359 | },x); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2360 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2361 | e.A=d; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2362 | e.AAAA=d; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2363 | local d={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2364 | __tostring=function(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2365 | return i("%d %s",e.pref,e.mx) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2366 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2367 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2368 | function e.MX(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2369 | local i=a(e,3); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2370 | local a,e=o(e,1,2); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2371 | return t({ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2372 | pref=a*256+e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2373 | mx=i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2374 | },d); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2375 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2376 | local d={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2377 | __tostring=function(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2378 | return i("%d %d %d %s",e.priority,e.weight,e.port,e.target); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2379 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2380 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2381 | function e.SRV(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2382 | local i=a(e,7); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2383 | local e,a,o,n,h,s=o(e,1,6); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2384 | return t({ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2385 | priority=e*256+a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2386 | weight=o*256+n; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2387 | port=h*256+s; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2388 | target=i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2389 | },d); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2390 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2391 | local d={__tostring=s}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2392 | function e.TXT(s) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2393 | local l=#s; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2394 | local h,a,i={},1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2395 | repeat |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2396 | i=o(s,a)or 0; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2397 | n(h,r(s,a+1,a+i)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2398 | a=a+i+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2399 | until a>=l; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2400 | return t(h,d); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2401 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2402 | e.SPF=e.TXT; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2403 | local d={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2404 | [0]="PKIX-CA"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2405 | [1]="PKIX-EE"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2406 | [2]="DANE-TA"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2407 | [3]="DANE-EE"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2408 | [255]="PrivCert"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2409 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2410 | local u={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2411 | [0]="Cert", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2412 | [1]="SPKI", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2413 | [255]="PrivSel", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2414 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2415 | local l={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2416 | [0]="Full", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2417 | [1]="SHA2-256", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2418 | [2]="SHA2-512", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2419 | [255]="PrivMatch", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2420 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2421 | local m={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2422 | __tostring=function(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2423 | return i("%s %s %s %s", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2424 | d[e.use]or e.use, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2425 | u[e.select]or e.select, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2426 | l[e.match]or e.match, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2427 | c(e.data)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2428 | end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2429 | __index={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2430 | getUsage=function(e)return d[e.use]end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2431 | getSelector=function(e)return u[e.select]end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2432 | getMatchType=function(e)return l[e.match]end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2433 | } |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2434 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2435 | function e.TLSA(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2436 | local i,o,a=o(e,1,3); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2437 | return t({ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2438 | use=i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2439 | select=o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2440 | match=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2441 | data=r(e,4); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2442 | },m); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2443 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2444 | local o={"alpn";"no-default-alpn";"port";"ipv4hint";"ech";"ipv6hint"}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2445 | t(o,{__index=function(t,e)return"key"..tostring(e);end}); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2446 | local m={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2447 | __tostring=function(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2448 | local t={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2449 | for a=1,#e.fields do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2450 | n(t,i("%s=%q",o[e.fields[a].key],tostring(e.fields[a].value))); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2451 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2452 | return i("%d %s %s",e.prio,e.name,s(t," ")); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2453 | end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2454 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2455 | local r={__tostring=function(e)return s(e,", ");end} |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2456 | function e.SVCB(i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2457 | local o,s=i:byte(1,2); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2458 | local u=o*256+s; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2459 | local l,o=a(i,3); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2460 | local d={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2461 | while#i>o do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2462 | local s,l=i:byte(o+0,o+1); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2463 | local h,a=i:byte(o+2,o+3); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2464 | local s=s*256+l; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2465 | local h=h*256+a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2466 | local a=i:sub(o+4,o+4-1+h) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2467 | if s==1 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2468 | a=t(e.TXT(a),r); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2469 | elseif s==3 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2470 | local e,t=a:byte(1,2); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2471 | local e=e*256+t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2472 | a=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2473 | elseif s==4 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2474 | local o={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2475 | for t=1,#a,4 do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2476 | n(o,e.A(a:sub(t,t+3))); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2477 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2478 | a=t(o,r); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2479 | elseif s==6 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2480 | local o={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2481 | for t=1,#a,16 do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2482 | n(o,e.AAAA(a:sub(t,t+15))); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2483 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2484 | a=t(o,r); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2485 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2486 | n(d,{key=s,value=a,len=h}); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2487 | o=o+h+4; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2488 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2489 | return t({ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2490 | prio=u,name=l,fields=d, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2491 | },m); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2492 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2493 | e.HTTPS=e.SVCB; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2494 | local o={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2495 | TLSA={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2496 | use=d; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2497 | select=u; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2498 | match=l; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2499 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2500 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2501 | local a={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2502 | __tostring=function(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2503 | return i([[\# %d %s]],#e.raw,c(e.raw)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2504 | end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2505 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2506 | local function i(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2507 | return t({raw=e},a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2508 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2509 | t(e,{__index=function()return i end}); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2510 | return{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2511 | parsers=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2512 | classes=h.classes; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2513 | types=h.types; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2514 | errors=h.errors; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2515 | params=o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2516 | }; |
12 | 2517 | end) |
2518 | package.preload['net.server']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2519 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2520 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2521 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2522 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2523 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2524 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2525 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2526 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2527 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2528 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2529 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2530 | local f=function(e) |
12 | 2531 | return _G[e] |
2532 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2533 | local V,e=require("util.logger").init("socket"),table.concat; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2534 | local n=function(...)return V("debug",e{...});end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2535 | local j=function(...)return V("warn",e{...});end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2536 | local ie=1 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2537 | local w=f"type" |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2538 | local q=f"pairs" |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2539 | local oe=f"ipairs" |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2540 | local b=f"tonumber" |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2541 | local u=f"tostring" |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2542 | local t=f"table" |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2543 | local a=f"string" |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2544 | local e=f"coroutine" |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2545 | local W=math.min |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2546 | local te=math.huge |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2547 | local ye=t.concat |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2548 | local ae=t.insert |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2549 | local be=a.sub |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2550 | local pe=e.wrap |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2551 | local ke=e.yield |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2552 | local x=f"socket"or require"socket" |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2553 | local P=x.gettime |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2554 | local e=require"util.net"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2555 | local ge=e.pton; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2556 | local ve=require"util.sslconfig"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2557 | local Y,fe=pcall(require,"net.tls_luasec"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2558 | local ue=x.bind |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2559 | local we=x.select |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2560 | local U |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2561 | local Z |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2562 | local ce |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2563 | local me |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2564 | local ee |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2565 | local l |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2566 | local de |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2567 | local J |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2568 | local K |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2569 | local le |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2570 | local re |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2571 | local ne |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2572 | local Q |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2573 | local h |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2574 | local se |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2575 | local G |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2576 | local he |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2577 | local p |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2578 | local i |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2579 | local F |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2580 | local r |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2581 | local s |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2582 | local R |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2583 | local v |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2584 | local y |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2585 | local k |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2586 | local T |
12 | 2587 | local a |
2588 | local o | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2589 | local g |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2590 | local C |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2591 | local M |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2592 | local D |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2593 | local _ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2594 | local H |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2595 | local B |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2596 | local d |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2597 | local S |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2598 | local I |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2599 | local O |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2600 | local N |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2601 | local L |
12 | 2602 | local z |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2603 | local E |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2604 | local A |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2605 | p={} |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2606 | i={} |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2607 | r={} |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2608 | F={} |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2609 | s={} |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2610 | v={} |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2611 | y={} |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2612 | R={} |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2613 | k={} |
12 | 2614 | a=0 |
2615 | o=0 | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2616 | g=0 |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2617 | C=0 |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2618 | M=0 |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2619 | D=1 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2620 | _=128 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2621 | H=10 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2622 | S=51e3*1024 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2623 | I=25e3*1024 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2624 | O=30 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2625 | N=6e4 |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2626 | L=14*60 |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2627 | local e=package.config:sub(1,1)=="\\" |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2628 | E=(e and math.huge)or x._SETSIZE or 1024 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2629 | z=x._SETSIZE or 1024 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2630 | A=30 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2631 | re=function(w,t,m,c,q,y,v) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2632 | if t:getfd()>=E then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2633 | j("server.lua: Disallowed FD number: "..t:getfd()) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2634 | t:close() |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2635 | return nil,"fd-too-large" |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2636 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2637 | local f=0 |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2638 | local b,e=w.onconnect,w.ondisconnect |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2639 | local g=t.accept |
12 | 2640 | local e={} |
2641 | e.shutdown=function()end | |
2642 | e.ssl=function() | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2643 | return y~=nil |
12 | 2644 | end |
2645 | e.sslctx=function() | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2646 | return y |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2647 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2648 | e.hosts={} |
12 | 2649 | e.remove=function() |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2650 | f=f-1 |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2651 | if e then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2652 | e.resume() |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2653 | end |
12 | 2654 | end |
2655 | e.close=function() | |
2656 | t:close() | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2657 | o=h(r,t,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2658 | a=h(i,t,a) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2659 | p[m..":"..c]=nil; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2660 | s[t]=nil |
12 | 2661 | e=nil |
2662 | t=nil | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2663 | n"server.lua: closed server handler and removed sockets from list" |
12 | 2664 | end |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2665 | e.pause=function(o) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2666 | if not e.paused then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2667 | a=h(i,t,a) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2668 | if o then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2669 | s[t]=nil |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2670 | t:close() |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2671 | t=nil; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2672 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2673 | e.paused=true; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2674 | n("server.lua: server [",m,"]:",c," paused") |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2675 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2676 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2677 | e.resume=function() |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2678 | if e.paused then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2679 | if not t then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2680 | t=ue(m,c,_); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2681 | t:settimeout(0) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2682 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2683 | a=l(i,t,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2684 | s[t]=e |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2685 | k[e]=nil |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2686 | e.paused=false; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2687 | n("server.lua: server [",m,"]:",c," resumed") |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2688 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2689 | end |
12 | 2690 | e.ip=function() |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2691 | return m |
12 | 2692 | end |
2693 | e.serverport=function() | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2694 | return c |
12 | 2695 | end |
2696 | e.socket=function() | |
2697 | return t | |
2698 | end | |
2699 | e.readbuffer=function() | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2700 | if a>=z or o>=z then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2701 | e.pause() |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2702 | k[e]=d |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2703 | n("server.lua: refused new client connection: server full") |
12 | 2704 | return false |
2705 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2706 | local t,o=g(t) |
12 | 2707 | if t then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2708 | local a,o=t:getpeername() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2709 | local e,i,t=G(e,w,t,a,c,o,q,y,v) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2710 | if t then |
12 | 2711 | return false |
2712 | end | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2713 | f=f+1 |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2714 | n("server.lua: accepted new client connection from ",u(a),":",u(o)," to ",u(c)) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2715 | if b and not v then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2716 | return b(e); |
12 | 2717 | end |
2718 | return; | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2719 | elseif o then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2720 | n("server.lua: error with new client connection: ",u(o)) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2721 | e.pause() |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2722 | k[e]=d |
12 | 2723 | return false |
2724 | end | |
2725 | end | |
2726 | return e | |
2727 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2728 | G=function(q,c,t,H,ee,L,D,w,te,P) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2729 | if t:getfd()>=E then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2730 | j("server.lua: Disallowed FD number: "..t:getfd()) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2731 | t:close() |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2732 | if q then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2733 | k[q]=d |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2734 | q.pause() |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2735 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2736 | return nil,nil,"fd-too-large" |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2737 | end |
12 | 2738 | t:settimeout(0) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2739 | local b |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2740 | local N |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2741 | local z |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2742 | local B |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2743 | local x |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2744 | local K=c.onincoming |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2745 | local G=c.onstatus |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2746 | local k=c.ondisconnect |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2747 | local J=c.onpredrain |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2748 | local X=c.ondrain |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2749 | local ae=c.onreadtimeout; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2750 | local Q=c.ondetach |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2751 | local g={} |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2752 | local m=0 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2753 | local Z |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2754 | local V |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2755 | local f=0 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2756 | local p=false |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2757 | local E=false |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2758 | local W,F=0,0 |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2759 | local _=S |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2760 | local O=I |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2761 | local e=g |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2762 | e.extra=P |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2763 | if P then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2764 | e.servername=P.servername |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2765 | end |
12 | 2766 | e.dispatch=function() |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2767 | return K |
12 | 2768 | end |
2769 | e.disconnect=function() | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2770 | return k |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2771 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2772 | e.onreadtimeout=ae; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2773 | e.setlistener=function(a,t,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2774 | if Q then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2775 | Q(a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2776 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2777 | K=t.onincoming |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2778 | k=t.ondisconnect |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2779 | G=t.onstatus |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2780 | J=t.onpredrain |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2781 | X=t.ondrain |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2782 | e.onreadtimeout=t.onreadtimeout |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2783 | Q=t.ondetach |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2784 | if t.onattach then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2785 | t.onattach(a,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2786 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2787 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2788 | e._setpending=function() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2789 | x=true |
12 | 2790 | end |
2791 | e.getstats=function() | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2792 | return F,W |
12 | 2793 | end |
2794 | e.ssl=function() | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2795 | return B |
12 | 2796 | end |
2797 | e.sslctx=function() | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2798 | return w |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2799 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2800 | e.ssl_info=function() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2801 | return t.info and t:info() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2802 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2803 | e.ssl_peercertificate=function() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2804 | if not t.getpeercertificate then return nil,"not-implemented";end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2805 | return t:getpeercertificate() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2806 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2807 | e.ssl_peerverification=function() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2808 | if not t.getpeerverification then return nil,{{"Chain verification not supported"}};end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2809 | return t:getpeerverification(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2810 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2811 | e.ssl_peerfinished=function() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2812 | if not t.getpeerfinished then return nil,"not-implemented";end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2813 | return t:getpeerfinished(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2814 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2815 | e.send=function(n,i,a,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2816 | return b(t,i,a,o) |
12 | 2817 | end |
2818 | e.receive=function(o,a) | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2819 | return N(t,o,a) |
12 | 2820 | end |
2821 | e.shutdown=function(a) | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2822 | return z(t,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2823 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2824 | e.setoption=function(i,o,a) |
12 | 2825 | if t.setoption then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2826 | return t:setoption(o,a); |
12 | 2827 | end |
2828 | return false,"setoption not implemented"; | |
2829 | end | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2830 | e.force_close=function(t,a) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2831 | if m~=0 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2832 | n("server.lua: discarding unwritten data for ",u(H),":",u(L)) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2833 | m=0; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2834 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2835 | return t:close(a); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2836 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2837 | e.close=function(l,d) |
12 | 2838 | if not e then return true;end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2839 | a=h(i,t,a) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2840 | v[e]=nil |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2841 | if m~=0 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2842 | e:sendbuffer() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2843 | if m~=0 then |
12 | 2844 | if e then |
2845 | e.write=nil | |
2846 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2847 | Z=true |
12 | 2848 | return false |
2849 | end | |
2850 | end | |
2851 | if t then | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2852 | T=z and z(t) |
12 | 2853 | t:close() |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2854 | o=h(r,t,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2855 | s[t]=nil |
12 | 2856 | t=nil |
2857 | else | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2858 | n"server.lua: socket already closed" |
12 | 2859 | end |
2860 | if e then | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2861 | y[e]=nil |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2862 | R[e]=nil |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2863 | local t=e; |
12 | 2864 | e=nil |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2865 | if k then |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2866 | k(t,d or false); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2867 | k=nil |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2868 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2869 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2870 | if q then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2871 | q.remove() |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2872 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2873 | n"server.lua: closed client handler and removed socket from list" |
12 | 2874 | return true |
2875 | end | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2876 | e.server=function() |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2877 | return q |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2878 | end |
12 | 2879 | e.ip=function() |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2880 | return H |
12 | 2881 | end |
2882 | e.serverport=function() | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2883 | return ee |
12 | 2884 | end |
2885 | e.clientport=function() | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2886 | return L |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2887 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2888 | e.port=e.clientport |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2889 | local k=function(i,a) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2890 | if not e then return false end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2891 | f=f+#a |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2892 | if f>_ then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2893 | R[e]="send buffer exceeded" |
12 | 2894 | return false |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2895 | elseif not E and t and not r[t]then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2896 | o=l(r,t,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2897 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2898 | m=m+1 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2899 | g[m]=a |
12 | 2900 | if e then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2901 | y[e]=y[e]or d |
12 | 2902 | end |
2903 | return true | |
2904 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2905 | e.write=k |
12 | 2906 | e.bufferqueue=function(t) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2907 | return g |
12 | 2908 | end |
2909 | e.socket=function(a) | |
2910 | return t | |
2911 | end | |
2912 | e.set_mode=function(a,t) | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2913 | D=t or D |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2914 | return D |
12 | 2915 | end |
2916 | e.set_send=function(a,t) | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2917 | b=t or b |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2918 | return b |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2919 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2920 | e.bufferlen=function(o,a,t) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2921 | _=t or _ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2922 | O=a or O |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2923 | return f,O,_ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2924 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2925 | e.lock_read=function(a,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2926 | j("server.lua, lock_read() is deprecated, use pause() and resume()") |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2927 | if t==true then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2928 | return a:pause() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2929 | elseif t==false then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2930 | return a:resume() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2931 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2932 | return p |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2933 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2934 | e.pause=function(o) |
12 | 2935 | local o=a |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2936 | a=h(i,t,a) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2937 | v[e]=nil |
12 | 2938 | if a~=o then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2939 | p=true |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2940 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2941 | return p; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2942 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2943 | e.resume=function(o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2944 | if p then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2945 | p=false |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2946 | a=l(i,t,a) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2947 | v[e]=d |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
2948 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2949 | return p; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2950 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2951 | e.lock=function(t,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2952 | j("server.lua, lock() is deprecated") |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2953 | e.lock_read(t,a) |
12 | 2954 | if a==true then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2955 | e.pause_writes(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2956 | elseif a==false then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2957 | e.resume_writes(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2958 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2959 | return p,E |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2960 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2961 | e.pause_writes=function(a) |
12 | 2962 | local a=o |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2963 | o=h(r,t,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2964 | y[e]=nil |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2965 | E=true |
12 | 2966 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2967 | e.resume_writes=function(e) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2968 | E=false |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2969 | if f>0 and t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2970 | o=l(r,t,o) |
12 | 2971 | end |
2972 | end | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
2973 | local v=function() |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2974 | local o,t,a=N(t,D) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2975 | if not t or(t=="wantread"or t=="timeout")then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2976 | local a=o or a or"" |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2977 | local o=#a |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2978 | if o>O then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2979 | e:close("receive buffer exceeded") |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2980 | return false |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2981 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2982 | local o=o*ie |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2983 | F=F+o |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2984 | M=M+o |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2985 | v[e]=d |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2986 | if x then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2987 | x=nil |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2988 | if c.onconnect then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2989 | c.onconnect(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2990 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2991 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2992 | return K(e,a,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2993 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2994 | n("server.lua: client ",u(H),":",u(L)," read error: ",u(t)) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2995 | T=e and e:force_close(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2996 | return false |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2997 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2998 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
2999 | local p=function() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3000 | local w,a,i,s,l; |
12 | 3001 | if t then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3002 | if x then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3003 | x=nil |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3004 | if c.onconnect then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3005 | c.onconnect(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3006 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3007 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3008 | if J then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3009 | J(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3010 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3011 | s=ye(g,"",1,m) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3012 | w,a,i=b(t,s,1,f) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3013 | l=(w or i or 0)*ie |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3014 | W=W+l |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3015 | C=C+l |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3016 | for e=m,1,-1 do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3017 | g[e]=nil |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3018 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3019 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3020 | w,a,l=false,"unexpected close",0; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3021 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3022 | if w then |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3023 | m=0 |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3024 | f=0 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3025 | o=h(r,t,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3026 | y[e]=nil |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3027 | if X then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3028 | X(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3029 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3030 | T=V and e:starttls(nil) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3031 | T=Z and e:force_close() |
12 | 3032 | return true |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3033 | elseif i and(a=="timeout"or a=="wantwrite")then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3034 | s=be(s,i+1,f) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3035 | g[1]=s |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3036 | m=1 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3037 | f=f-i |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3038 | y[e]=d |
12 | 3039 | return true |
3040 | else | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3041 | n("server.lua: client ",u(H),":",u(L)," write error: ",u(a)) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3042 | T=e and e:force_close(a) |
12 | 3043 | return false |
3044 | end | |
3045 | end | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3046 | local d; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3047 | function e.set_sslctx(y,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3048 | w=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3049 | local u,f |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3050 | d=pe(function(s) |
12 | 3051 | local t |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3052 | for d=1,A do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3053 | o=(f and h(r,s,o))or o |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3054 | a=(u and h(i,s,a))or a |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3055 | u,f=nil,nil |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3056 | d,t=s:dohandshake() |
12 | 3057 | if not t then |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3058 | n("server.lua: ssl handshake done") |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3059 | e.readbuffer=v |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3060 | e.sendbuffer=p |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3061 | d=G and G(e,"ssl-handshake-complete") |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3062 | if y.autostart_ssl and c.onconnect then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3063 | c.onconnect(y); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3064 | if m~=0 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3065 | o=l(r,s,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3066 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3067 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3068 | a=l(i,s,a) |
12 | 3069 | return true |
3070 | else | |
3071 | if t=="wantwrite"then | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3072 | o=l(r,s,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3073 | f=true |
12 | 3074 | elseif t=="wantread"then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3075 | a=l(i,s,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3076 | u=true |
12 | 3077 | else |
3078 | break; | |
3079 | end | |
3080 | t=nil; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3081 | ke() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3082 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3083 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3084 | t=(t or"handshake too long"); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3085 | n("server.lua: ",t); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3086 | T=e and e:force_close(t) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3087 | return false,t |
12 | 3088 | end |
3089 | ) | |
3090 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3091 | if Y then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3092 | e.starttls=function(f,c) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3093 | if c then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3094 | e:set_sslctx(c); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3095 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3096 | if m>0 then |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3097 | n"server.lua: we need to do tls, but delaying until send buffer empty" |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3098 | V=true |
12 | 3099 | return |
3100 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3101 | n("server.lua: attempting to start tls on "..u(t)) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3102 | local m,c=t |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3103 | t,c=w:wrap(t) |
12 | 3104 | if not t then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3105 | n("server.lua: error while starting tls on client: ",u(c or"unknown error")) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3106 | return nil,c |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3107 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3108 | if t.sni then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3109 | if f.servername then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3110 | t:sni(f.servername); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3111 | elseif next(w._sni_contexts)~=nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3112 | t:sni(w._sni_contexts,true); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3113 | end |
12 | 3114 | end |
3115 | t:settimeout(0) | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3116 | b=t.send |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3117 | N=t.receive |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3118 | z=U |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3119 | s[t]=e |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3120 | a=l(i,t,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3121 | a=h(i,m,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3122 | o=h(r,m,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3123 | s[m]=nil |
12 | 3124 | e.starttls=nil |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3125 | V=nil |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3126 | B=true |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3127 | e.readbuffer=d |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3128 | e.sendbuffer=d |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3129 | return d(t) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3130 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3131 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3132 | e.readbuffer=v |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3133 | e.sendbuffer=p |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3134 | b=t.send |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3135 | N=t.receive |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3136 | z=(B and U)or t.shutdown |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3137 | s[t]=e |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3138 | a=l(i,t,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3139 | if w and te and Y then |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3140 | n"server.lua: auto-starting ssl negotiation..." |
12 | 3141 | e.autostart_ssl=true; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3142 | local t,e=e:starttls(w); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3143 | if t==false then |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3144 | return nil,nil,e |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3145 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3146 | end |
12 | 3147 | return e,t |
3148 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3149 | U=function() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3150 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3151 | me=function() |
12 | 3152 | return false |
3153 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3154 | l=function(a,t,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3155 | if not a[t]then |
12 | 3156 | e=e+1 |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3157 | a[e]=t |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3158 | a[t]=e |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3159 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3160 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3161 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3162 | h=function(e,i,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3163 | local o=e[i] |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3164 | if o then |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3165 | e[i]=nil |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3166 | local a=e[t] |
12 | 3167 | e[t]=nil |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3168 | if a~=i then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3169 | e[a]=o |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3170 | e[o]=a |
12 | 3171 | end |
3172 | return t-1 | |
3173 | end | |
3174 | return t | |
3175 | end | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3176 | Q=function(e) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3177 | o=h(r,e,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3178 | a=h(i,e,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3179 | s[e]=nil |
12 | 3180 | e:close() |
3181 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3182 | local function c(e,t,o) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3183 | local a; |
12 | 3184 | local i=t.sendbuffer; |
3185 | function t.sendbuffer() | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3186 | i(t); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3187 | if a and t.bufferlen()<o then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3188 | e:lock_read(false); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3189 | a=nil; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3190 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3191 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3192 | local i=e.readbuffer; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3193 | function e.readbuffer() |
12 | 3194 | i(); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3195 | if not a and t.bufferlen()>=o then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3196 | a=true; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3197 | e:lock_read(true); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3198 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3199 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3200 | e:set_mode("*a"); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3201 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3202 | J=function(e,t,d,h) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3203 | e=e or"*" |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3204 | h=h or{} |
12 | 3205 | local o |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3206 | local r=h.tls_ctx; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3207 | local c=h.tls_direct; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3208 | local u=h.read_size; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3209 | if w(d)~="table"then |
12 | 3210 | o="invalid listener table" |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3211 | elseif w(e)~="string"then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3212 | o="invalid address" |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3213 | elseif w(t)~="number"or not(t>=0 and t<=65535)then |
12 | 3214 | o="invalid port" |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3215 | elseif p[e..":"..t]then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3216 | o="listeners on '["..e.."]:"..t.."' already exist" |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3217 | elseif r and not Y then |
12 | 3218 | o="luasec not found" |
3219 | end | |
3220 | if o then | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3221 | j("server.lua, [",e,"]:",t,": ",o) |
12 | 3222 | return nil,o |
3223 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3224 | local o,h=ue(e,t,_) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3225 | if h then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3226 | j("server.lua, [",e,"]:",t,": ",h) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3227 | return nil,h |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3228 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3229 | local h,d=re(d,o,e,t,u,r,c) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3230 | if not h then |
12 | 3231 | o:close() |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3232 | return nil,d |
12 | 3233 | end |
3234 | o:settimeout(0) | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3235 | a=l(i,o,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3236 | p[e..":"..t]=h |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3237 | s[o]=h |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3238 | n("server.lua: new "..(r and"ssl "or"").."server listener on '[",e,"]:",t,"'") |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3239 | return h |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3240 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3241 | de=function(i,o,t,a,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3242 | return J(i,o,t,{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3243 | read_size=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3244 | tls_ctx=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3245 | tls_direct=e and true or false; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3246 | }); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3247 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3248 | le=function(e,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3249 | return p[e..":"..t]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3250 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3251 | se=function(e,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3252 | local a=p[e..":"..t] |
12 | 3253 | if not a then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3254 | return nil,"no server found on '["..e.."]:"..u(t).."'" |
12 | 3255 | end |
3256 | a:close() | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3257 | p[e..":"..t]=nil |
12 | 3258 | return true |
3259 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3260 | ee=function() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3261 | for t,e in q(s)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3262 | e:close() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3263 | s[t]=nil |
12 | 3264 | end |
3265 | a=0 | |
3266 | o=0 | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3267 | g=0 |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3268 | p={} |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3269 | i={} |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3270 | r={} |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3271 | F={} |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3272 | s={} |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3273 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3274 | ne=function() |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3275 | return{ |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3276 | select_timeout=D; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3277 | tcp_backlog=_; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3278 | max_send_buffer_size=S; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3279 | max_receive_buffer_size=I; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3280 | select_idle_check_interval=O; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3281 | send_timeout=N; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3282 | read_timeout=L; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3283 | max_connections=z; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3284 | max_ssl_handshake_roundtrips=A; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3285 | highest_allowed_fd=E; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3286 | accept_retry_interval=H; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3287 | } |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3288 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3289 | he=function(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3290 | if w(e)~="table"then |
12 | 3291 | return nil,"invalid settings table" |
3292 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3293 | D=b(e.select_timeout)or D |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3294 | S=b(e.max_send_buffer_size)or S |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3295 | I=b(e.max_receive_buffer_size)or I |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3296 | O=b(e.select_idle_check_interval)or O |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3297 | _=b(e.tcp_backlog)or _ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3298 | N=b(e.send_timeout)or N |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3299 | L=b(e.read_timeout)or L |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3300 | H=b(e.accept_retry_interval)or H |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3301 | z=e.max_connections or z |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3302 | A=e.max_ssl_handshake_roundtrips or A |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3303 | E=e.highest_allowed_fd or E |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3304 | return true |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3305 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3306 | K=function(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3307 | if w(e)~="function"then |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3308 | return nil,"invalid listener function" |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3309 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3310 | g=g+1 |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3311 | F[g]=e |
12 | 3312 | return true |
3313 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3314 | local u do |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3315 | local a={}; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3316 | local t={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3317 | function u(e,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3318 | local o=P(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3319 | e=e+o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3320 | if e>=o then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3321 | ae(t,{e,a}); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3322 | else |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3323 | local e=a(o); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3324 | if e and w(e)=="number"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3325 | return u(e,a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3326 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3327 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3328 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3329 | K(function(o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3330 | if#t>0 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3331 | for o,e in q(t)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3332 | ae(a,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3333 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3334 | t={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3335 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3336 | local e=te; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3337 | for s,t in q(a)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3338 | local n,i=t[1],t[2]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3339 | if n<=o then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3340 | a[s]=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3341 | local t=i(o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3342 | if w(t)=="number"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3343 | u(t,i); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3344 | e=W(e,t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3345 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3346 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3347 | e=W(e,n-o); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3348 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3349 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3350 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3351 | end); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3352 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3353 | ce=function() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3354 | return M,C,a,o,g |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3355 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3356 | local e; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3357 | local function b(t) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3358 | e=t; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3359 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3360 | Z=function(t) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3361 | if e then return"quitting";end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3362 | if t then e="once";end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3363 | d=P() |
12 | 3364 | repeat |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3365 | local t=te; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3366 | for e=1,g do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3367 | local e=F[e](d) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3368 | if e then t=W(t,e);end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3369 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3370 | local t,a,o=we(i,r,W(D,t)) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3371 | for t,e in oe(t)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3372 | local t=s[e] |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3373 | if t then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3374 | t:readbuffer() |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3375 | else |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3376 | Q(e) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3377 | n"server.lua: found no handler and closed socket (readlist)" |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3378 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3379 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3380 | for e,t in oe(a)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3381 | local e=s[t] |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3382 | if e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3383 | e:sendbuffer() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3384 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3385 | Q(t) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3386 | n"server.lua: found no handler and closed socket (writelist)" |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3387 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3388 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3389 | for e,t in q(R)do |
12 | 3390 | e.disconnect()(e,t) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3391 | e:force_close() |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3392 | R[e]=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3393 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3394 | d=P() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3395 | if d-B>O then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3396 | B=d |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3397 | for e,t in q(y)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3398 | if d-t>N then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3399 | e.disconnect()(e,"send timeout") |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3400 | e:force_close() |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3401 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3402 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3403 | for e,t in q(v)do |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3404 | if d-t>L then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3405 | if not(e.onreadtimeout)or e:onreadtimeout()~=true then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3406 | e.disconnect()(e,"read timeout") |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3407 | e:close() |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3408 | else |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3409 | v[e]=d |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3410 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3411 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3412 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3413 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3414 | for e,t in q(k)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3415 | if d-t>H then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3416 | k[e]=nil; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3417 | e.resume(); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3418 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3419 | end |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3420 | until e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3421 | if e=="once"then e=nil;return;end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3422 | ee(); |
12 | 3423 | return"quitting" |
3424 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3425 | local function p() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3426 | return Z(true); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3427 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3428 | local function m() |
12 | 3429 | return"select"; |
3430 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3431 | local d=function(e,t,h,d,c,n,u) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3432 | local t,e,h=G(nil,d,e,t,h,"clientport",c,n,n,u) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3433 | if not t then return nil,h end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3434 | s[e]=t |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3435 | if not n then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3436 | t._setpending() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3437 | a=l(i,e,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3438 | o=l(r,e,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3439 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3440 | return t,e |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3441 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3442 | local g=function(o,t,i,r,n,a,s) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3443 | local e |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3444 | if w(i)~="table"then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3445 | e="invalid listener table" |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3446 | elseif w(o)~="string"then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3447 | e="invalid address" |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3448 | elseif w(t)~="number"or not(t>=0 and t<=65535)then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3449 | e="invalid port" |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3450 | elseif n and not Y then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3451 | e="luasec not found" |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3452 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3453 | if not a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3454 | local e=ge(o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3455 | if not e then return nil,"invalid-ip";end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3456 | if#e==16 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3457 | a="tcp6"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3458 | elseif#e==4 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3459 | a="tcp4"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3460 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3461 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3462 | local a=x[a]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3463 | if w(a)~="function"then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3464 | e="invalid socket type" |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3465 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3466 | if e then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3467 | j("server.lua, addclient: ",e) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3468 | return nil,e |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3469 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3470 | local e,a=a() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3471 | if a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3472 | return nil,a |
12 | 3473 | end |
3474 | e:settimeout(0) | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3475 | local h,a=e:setpeername(o,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3476 | if h or a=="timeout"or a=="Operation already in progress"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3477 | return d(e,o,t,i,r,n,s) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3478 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3479 | return nil,a |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3480 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3481 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3482 | local k=function(e) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3483 | local e=e.conn; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3484 | o=h(r,e,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3485 | a=h(i,e,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3486 | s[e]=nil |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3487 | end; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3488 | local i=function(d,n,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3489 | local e=d.conn |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3490 | s[e]=d |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3491 | if n~=nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3492 | if n then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3493 | a=l(i,e,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3494 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3495 | o=h(r,e,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3496 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3497 | end |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3498 | if t~=nil then |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3499 | if t then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3500 | o=l(r,e,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3501 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3502 | a=h(i,e,a) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3503 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3504 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3505 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3506 | local t=function(e,o,a) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3507 | local t=e |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3508 | if w(e)=="number"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3509 | t={getfd=function()return e;end} |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3510 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3511 | local e={ |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3512 | conn=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3513 | readbuffer=o or U; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3514 | sendbuffer=a or U; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3515 | close=k; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3516 | setflags=i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3517 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3518 | i(e,o,a) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3519 | return e |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3520 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3521 | f"setmetatable"(s,{__mode="k"}) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3522 | f"setmetatable"(v,{__mode="k"}) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3523 | f"setmetatable"(y,{__mode="k"}) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3524 | B=P() |
12 | 3525 | local function a(e) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3526 | local t=V; |
12 | 3527 | if e then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3528 | V=e; |
12 | 3529 | end |
3530 | return t; | |
3531 | end | |
3532 | return{ | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3533 | _addtimer=K, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3534 | add_task=u; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3535 | addclient=g, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3536 | wrapclient=d, |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3537 | watchfd=t, |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3538 | loop=Z, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3539 | link=c, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3540 | step=p, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3541 | stats=ce, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3542 | closeall=ee, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3543 | addserver=de, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3544 | listen=J, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3545 | getserver=le, |
12 | 3546 | setlogger=a, |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3547 | getsettings=ne, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3548 | setquitting=b, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3549 | removeserver=se, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3550 | get_backend=m, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3551 | changesettings=he, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3552 | tls_builder=function(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3553 | return ve._new(fe.new_context,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3554 | end, |
12 | 3555 | } |
3556 | end) | |
3557 | package.preload['util.xmppstream']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3558 | local _ENV=_ENV; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3559 | local function e(t,...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3560 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3561 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3562 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3563 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3564 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3565 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3566 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3567 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3568 | end |
12 | 3569 | local e=require"lxp"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3570 | local g=require"util.stanza"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3571 | local y=g.stanza_mt; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3572 | local w=error; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3573 | local t=tostring; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3574 | local d=table.insert; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3575 | local b=table.concat; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3576 | local E=table.remove; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3577 | local p=setmetatable; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3578 | local T=pcall(e.new,{StartDoctypeDecl=false}); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3579 | local _=pcall(e.new,{XmlDecl=false}); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3580 | local a=not not e.new({}).getcurrentbytecount; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3581 | local x=1024*1024*1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3582 | local _ENV=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3583 | local v=e.new; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3584 | local j={ |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3585 | ["http://www.w3.org/XML/1998/namespace\1lang"]="xml:lang"; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3586 | ["http://www.w3.org/XML/1998/namespace\1space"]="xml:space"; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3587 | ["http://www.w3.org/XML/1998/namespace\1base"]="xml:base"; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3588 | ["http://www.w3.org/XML/1998/namespace\1id"]="xml:id"; |
12 | 3589 | }; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3590 | local h="http://etherx.jabber.org/streams"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3591 | local r="\1"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3592 | local k="^([^"..r.."]*)"..r.."?(.*)$"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3593 | local function o()end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3594 | local function q(n,e,s) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3595 | local i={}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3596 | local g=e.streamopened; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3597 | local v=e.streamclosed; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3598 | local l=e.error or |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3599 | function(o,a,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3600 | w("XML stream error: "..t(a)..(e and": "..t(e)or""),2); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3601 | end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3602 | local x=e.handlestanza; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3603 | s=s or o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3604 | local t=e.stream_ns or h; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3605 | local m=e.stream_tag or"stream"; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3606 | if t~=""then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3607 | m=t..r..m; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3608 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3609 | local z=t..r..(e.error_tag or"error"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3610 | local q=e.default_ns; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3611 | local f="en"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3612 | local u={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3613 | local h,e={}; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3614 | local t=0; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3615 | local r=0; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3616 | function i:StartElement(c,o) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3617 | if e and#h>0 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3618 | d(e,b(h)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3619 | h={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3620 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3621 | local h,i=c:match(k); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3622 | if i==""then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3623 | h,i="",h; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3624 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3625 | if h~=q or r>0 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3626 | o.xmlns=h; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3627 | r=r+1; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3628 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3629 | for t=1,#o do |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3630 | local e=o[t]; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3631 | o[t]=nil; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3632 | local t=j[e]; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3633 | if t then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3634 | o[t]=o[e]; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3635 | o[e]=nil; |
12 | 3636 | end |
3637 | end | |
3638 | if not e then | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3639 | if a then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3640 | t=self:getcurrentbytecount(); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3641 | end |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3642 | if n.notopen then |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3643 | if c==m then |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3644 | r=0; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3645 | f=o["xml:lang"]or f; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3646 | if g then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3647 | if a then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3648 | s(t); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3649 | t=0; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3650 | end |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3651 | g(n,o); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3652 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3653 | else |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3654 | l(n,"no-stream",c); |
12 | 3655 | end |
3656 | return; | |
3657 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3658 | if h=="jabber:client"and i~="iq"and i~="presence"and i~="message"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3659 | l(n,"invalid-top-level-element"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3660 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3661 | e=p({name=i,attr=o,tags={}},y); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3662 | else |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3663 | if a then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3664 | t=t+self:getcurrentbytecount(); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3665 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3666 | d(u,e); |
12 | 3667 | local t=e; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3668 | e=p({name=i,attr=o,tags={}},y); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3669 | d(t,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3670 | d(t.tags,e); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3671 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3672 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3673 | function i:StartCdataSection() |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3674 | if a then |
12 | 3675 | if e then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3676 | t=t+self:getcurrentbytecount(); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3677 | else |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3678 | s(self:getcurrentbytecount()); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3679 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3680 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3681 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3682 | function i:EndCdataSection() |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3683 | if a then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3684 | if e then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3685 | t=t+self:getcurrentbytecount(); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3686 | else |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3687 | s(self:getcurrentbytecount()); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3688 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3689 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3690 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3691 | function i:CharacterData(o) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3692 | if e then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3693 | if a then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3694 | t=t+self:getcurrentbytecount(); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3695 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3696 | d(h,o); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3697 | elseif a then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3698 | s(self:getcurrentbytecount()); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3699 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3700 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3701 | function i:EndElement(o) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3702 | if a then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3703 | t=t+self:getcurrentbytecount() |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3704 | end |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3705 | if r>0 then |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3706 | r=r-1; |
12 | 3707 | end |
3708 | if e then | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3709 | if#h>0 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3710 | d(e,b(h)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3711 | h={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3712 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3713 | if#u==0 then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3714 | if a then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3715 | s(t); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3716 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3717 | t=0; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3718 | if e.attr["xml:lang"]==nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3719 | e.attr["xml:lang"]=f; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3720 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3721 | if o~=z then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3722 | x(n,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3723 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3724 | l(n,"stream-error",e); |
12 | 3725 | end |
3726 | e=nil; | |
3727 | else | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3728 | e=E(u); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3729 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3730 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3731 | if a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3732 | s(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3733 | end |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3734 | if v then |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3735 | v(n); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3736 | end |
12 | 3737 | end |
3738 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3739 | local function o(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3740 | l(n,"parse-error","restricted-xml","Restricted XML, see RFC 6120 section 11.1."); |
12 | 3741 | if not e.stop or not e:stop()then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3742 | w("Failed to abort parsing"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3743 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3744 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3745 | if _ then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3746 | function i:XmlDecl(e,t,i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3747 | if a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3748 | s(self:getcurrentbytecount()); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3749 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3750 | if(t and t:lower()~="utf-8") |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3751 | or(i=="no") |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3752 | or(e and e~="1.0")then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3753 | return o(self); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3754 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3755 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3756 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3757 | if T then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3758 | i.StartDoctypeDecl=o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3759 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3760 | i.Comment=o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3761 | i.ProcessingInstruction=o; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3762 | local function a() |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3763 | e,h,t=nil,{},0; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3764 | u={}; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3765 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3766 | local function e(t,e) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3767 | n=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3768 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3769 | return i,{reset=a,set_session=e}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3770 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3771 | local function l(e,h,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3772 | local t=0; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3773 | local i; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3774 | if a then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3775 | function i(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3776 | t=t-e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3777 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3778 | o=o or x; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3779 | elseif o then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3780 | w("Stanza size limits are not supported on this version of LuaExpat") |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3781 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3782 | local n,d=q(e,h,i); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3783 | local i=v(n,r,false); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3784 | local s=i.parse; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3785 | function e.open_stream(e,o,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3786 | local i=e.sends2s or e.send; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3787 | local t={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3788 | ["xmlns:stream"]="http://etherx.jabber.org/streams", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3789 | ["xml:lang"]="en", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3790 | xmlns=h.default_ns, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3791 | version=e.version and(e.version>0 and"1.0"or nil), |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3792 | id=e.streamid or"", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3793 | from=o or e.host,to=a, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3794 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3795 | if e.stream_attrs then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3796 | e:stream_attrs(o,a,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3797 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3798 | i("<?xml version='1.0'?>"..g.stanza("stream:stream",t):top_tag()); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3799 | return true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3800 | end |
12 | 3801 | return{ |
3802 | reset=function() | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3803 | i=v(n,r,false); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3804 | s=i.parse; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3805 | t=0; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3806 | d.reset(); |
12 | 3807 | end, |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3808 | feed=function(e,n) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3809 | if a then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3810 | t=t+#n; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3811 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3812 | local e=i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3813 | local n,s=s(e,n); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3814 | if a and t>o then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3815 | return nil,"stanza-too-large"; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
3816 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3817 | if i~=e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3818 | e:parse(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3819 | e:close(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3820 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3821 | return n,s; |
12 | 3822 | end, |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3823 | set_session=d.set_session; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3824 | set_stanza_size_limit=function(t,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3825 | o=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3826 | end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3827 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3828 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3829 | return{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3830 | ns_separator=r; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3831 | ns_pattern=k; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3832 | new_sax_handlers=q; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3833 | new=l; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3834 | }; |
12 | 3835 | end) |
3836 | package.preload['util.jid']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3837 | local _ENV=_ENV; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3838 | local function e(t,...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3839 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3840 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3841 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3842 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3843 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3844 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3845 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3846 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3847 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3848 | local i=select; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3849 | local a,h=string.match,string.sub; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3850 | local u=require"util.encodings".stringprep.nodeprep; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3851 | local l=require"util.encodings".stringprep.nameprep; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3852 | local d=require"util.encodings".stringprep.resourceprep; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3853 | local o={ |
12 | 3854 | [" "]="\\20";['"']="\\22"; |
3855 | ["&"]="\\26";["'"]="\\27"; | |
3856 | ["/"]="\\2f";[":"]="\\3a"; | |
3857 | ["<"]="\\3c";[">"]="\\3e"; | |
3858 | ["@"]="\\40";["\\"]="\\5c"; | |
3859 | }; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3860 | local n={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3861 | local s={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3862 | for t,e in pairs(o)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3863 | n[e]=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3864 | s[e]=e:gsub("\\",o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3865 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3866 | local _ENV=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3867 | local function t(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3868 | if e==nil then return;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3869 | local i,t=a(e,"^([^@/]+)@()"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3870 | local t,o=a(e,"^([^@/]+)()",t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3871 | local a=t and a(e,"^/(.+)$",o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3872 | if(t==nil)or((a==nil)and#e>=o)then return nil,nil,nil;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3873 | return i,t,a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3874 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3875 | local function m(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3876 | local t,e=t(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3877 | if t~=nil and e~=nil then |
12 | 3878 | return t.."@"..e; |
3879 | end | |
3880 | return e; | |
3881 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3882 | local function r(e,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3883 | local a,e,t=t(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3884 | if e~=nil and e~="."then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3885 | if h(e,-1,-1)=="."then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3886 | e=h(e,1,-2); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3887 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3888 | e=l(e,o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3889 | if e==nil then return;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3890 | if a~=nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3891 | a=u(a,o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3892 | if a==nil then return;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3893 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3894 | if t~=nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3895 | t=d(t,o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3896 | if t==nil then return;end |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3897 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3898 | return a,e,t; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3899 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3900 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3901 | local function h(t,e,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3902 | if e==nil then return end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3903 | if t~=nil and a~=nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3904 | return t.."@"..e.."/"..a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3905 | elseif t~=nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3906 | return t.."@"..e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3907 | elseif a~=nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3908 | return e.."/"..a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3909 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3910 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3911 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3912 | local function c(e,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3913 | local e,a,t=r(e,t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3914 | return h(e,a,t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3915 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3916 | local function f(a,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3917 | local i,n,o=t(a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3918 | local a,t,e=t(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3919 | if(a==nil or a==i)and |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3920 | (t==nil or t==n)and |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3921 | (e==nil or e==o)then |
12 | 3922 | return true |
3923 | end | |
3924 | return false | |
3925 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3926 | local function u(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3927 | return(i(1,t(e))); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3928 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3929 | local function l(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3930 | return(i(2,t(e))); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3931 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3932 | local function d(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3933 | return(i(3,t(e))); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3934 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3935 | local function a(e)return e and(e:gsub("\\%x%x",s):gsub("[\"&'/:<>@ ]",o));end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3936 | local function o(e)return e and(e:gsub("\\%x%x",n));end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3937 | return{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3938 | split=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3939 | bare=m; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3940 | prepped_split=r; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3941 | join=h; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3942 | prep=c; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3943 | compare=f; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3944 | node=u; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3945 | host=l; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3946 | resource=d; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3947 | escape=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3948 | unescape=o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3949 | }; |
12 | 3950 | end) |
3951 | package.preload['util.events']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3952 | local _ENV=_ENV; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3953 | local function e(t,...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3954 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3955 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3956 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3957 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3958 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3959 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3960 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3961 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
3962 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3963 | local a=pairs; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3964 | local d=table.insert; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3965 | local w=table.remove; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3966 | local u=table.sort; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3967 | local l=setmetatable; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3968 | local h=next; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3969 | local _ENV=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3970 | local function f() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3971 | local o={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3972 | local t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3973 | local n={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3974 | local i={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3975 | local s=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3976 | local function r(n,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3977 | local e=i[o]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3978 | if not e or h(e)==nil then return;end |
12 | 3979 | local t={}; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3980 | for e in a(e)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3981 | d(t,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3982 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3983 | u(t,function(a,t)return e[a]>e[t];end); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3984 | n[o]=t; |
12 | 3985 | return t; |
3986 | end; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3987 | l(o,{__index=r}); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3988 | local function l(t,n,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3989 | local e=i[t]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3990 | if e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3991 | e[n]=a or 0; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3992 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3993 | e={[n]=a or 0}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3994 | i[t]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3995 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3996 | o[t]=nil; |
12 | 3997 | end; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3998 | local function d(e,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
3999 | local t=i[e]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4000 | if t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4001 | t[a]=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4002 | o[e]=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4003 | if h(t)==nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4004 | i[e]=nil; |
12 | 4005 | end |
4006 | end | |
4007 | end; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4008 | local function c(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4009 | return o[e]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4010 | end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4011 | local function u(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4012 | for e,t in a(e)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4013 | l(e,t); |
12 | 4014 | end |
4015 | end; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4016 | local function m(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4017 | for t,e in a(e)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4018 | d(t,e); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4019 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4020 | end; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4021 | local function r(a,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4022 | local e=o[a]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4023 | if e and not s then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4024 | for a=1,#e do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4025 | local e=e[a](t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4026 | if e~=nil then return e;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4027 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4028 | elseif e and s then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4029 | for o=1,#e do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4030 | local e=s(e[o],a,t); |
12 | 4031 | if e~=nil then return e;end |
4032 | end | |
4033 | end | |
4034 | end; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4035 | local function f(s,h) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4036 | local e=n[s]or t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4037 | if e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4038 | local a=#e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4039 | local function i(o,n) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4040 | a=a-1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4041 | if a==0 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4042 | if t==nil or e==t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4043 | return r(o,n); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4044 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4045 | e,a=t,#t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4046 | return e[a](i,o,n); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4047 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4048 | return e[a](i,o,n); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4049 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4050 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4051 | return e[a](i,s,h); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4052 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4053 | return r(s,h); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4054 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4055 | local function r(a,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4056 | local e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4057 | if a==false then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4058 | e=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4059 | if not e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4060 | e={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4061 | t=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4062 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4063 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4064 | e=n[a]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4065 | if not e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4066 | e={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4067 | n[a]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4068 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4069 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4070 | e[#e+1]=o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4071 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4072 | local function h(a,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4073 | local e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4074 | if a==false then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4075 | e=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4076 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4077 | e=n[a]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4078 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4079 | if not e then return;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4080 | for t=#e,1,-1 do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4081 | if e[t]==o then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4082 | w(e,t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4083 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4084 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4085 | if#e==0 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4086 | if a==false then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4087 | t=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4088 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4089 | n[a]=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4090 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4091 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4092 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4093 | local function a(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4094 | local e=s; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4095 | s=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4096 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4097 | end |
12 | 4098 | return{ |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4099 | add_handler=l; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4100 | remove_handler=d; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4101 | add_handlers=u; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4102 | remove_handlers=m; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4103 | get_handlers=c; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4104 | wrappers={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4105 | add_handler=r; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4106 | remove_handler=h; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4107 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4108 | add_wrapper=r; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4109 | remove_wrapper=h; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4110 | set_debug_hook=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4111 | fire_event=f; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4112 | _handlers=o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4113 | _event_map=i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4114 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4115 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4116 | return{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4117 | new=f; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4118 | }; |
12 | 4119 | end) |
4120 | package.preload['util.dataforms']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4121 | local _ENV=_ENV; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4122 | local function e(t,...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4123 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4124 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4125 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4126 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4127 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4128 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4129 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4130 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4131 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4132 | local e=setmetatable; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4133 | local n=ipairs; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4134 | local s,p=type,next; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4135 | local u=tonumber; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4136 | local r=tostring; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4137 | local l=table.concat; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4138 | local c=require"util.stanza"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4139 | local m=require"util.jid".prep; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4140 | local _ENV=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4141 | local y='jabber:x:data'; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4142 | local f='http://jabber.org/protocol/xdata-validate'; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4143 | local d={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4144 | local t={__index=d}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4145 | local function w(a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4146 | return e(a,t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4147 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4148 | local function v(e) |
12 | 4149 | local o={ |
4150 | title=e:get_child_text("title"); | |
4151 | instructions=e:get_child_text("instructions"); | |
4152 | }; | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4153 | for t in e:childtags("field")do |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4154 | local e={ |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4155 | name=t.attr.var; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4156 | label=t.attr.label; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4157 | type=t.attr.type; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4158 | required=t:get_child("required")and true or nil; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4159 | value=t:get_child_text("value"); |
12 | 4160 | }; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4161 | o[#o+1]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4162 | if e.type then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4163 | local a={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4164 | if e.type:match"list%-"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4165 | for e in t:childtags("option")do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4166 | a[#a+1]={label=e.attr.label,value=e:get_child_text("value")}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4167 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4168 | for e in t:childtags("value")do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4169 | a[#a+1]={label=e.attr.label,value=e:get_text(),default=true}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4170 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4171 | elseif e.type:match"%-multi"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4172 | for e in t:childtags("value")do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4173 | a[#a+1]=e.attr.label and{label=e.attr.label,value=e:get_text()}or e:get_text(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4174 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4175 | if e.type=="text-multi"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4176 | e.value=l(a,"\n"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4177 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4178 | e.value=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4179 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4180 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4181 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4182 | local t=t:get_child("validate",f); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4183 | if t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4184 | e.datatype=datatype.attr.datatype; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4185 | local t=t:get_child("range"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4186 | if t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4187 | e.range_min=u(t.attr.min); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4188 | e.range_max=u(t.attr.max); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4189 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4190 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4191 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4192 | return w(o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4193 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4194 | function d.form(t,h,i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4195 | if not i then i="form"end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4196 | local e=c.stanza("x",{xmlns=y,type=i}); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4197 | if i=="cancel"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4198 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4199 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4200 | if i~="submit"then |
12 | 4201 | if t.title then |
4202 | e:tag("title"):text(t.title):up(); | |
4203 | end | |
4204 | if t.instructions then | |
4205 | e:tag("instructions"):text(t.instructions):up(); | |
4206 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4207 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4208 | for t,a in n(t)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4209 | local o=a.type or"text-single"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4210 | e:tag("field",{type=o,var=a.var or a.name,label=i~="submit"and a.label or nil}); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4211 | if i~="submit"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4212 | if a.desc then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4213 | e:text_tag("desc",a.desc); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4214 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4215 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4216 | if i=="form"and a.datatype then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4217 | e:tag("validate",{xmlns=f,datatype=a.datatype}); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4218 | if a.range_min or a.range_max then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4219 | e:tag("range",{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4220 | min=a.range_min and r(a.range_min), |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4221 | max=a.range_max and r(a.range_max), |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4222 | }):up(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4223 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4224 | e:up(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4225 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4226 | local t=a.value; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4227 | local r=a.options; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4228 | if h and h[a.name]~=nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4229 | t=h[a.name]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4230 | if i=="form"and s(t)=="table" |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4231 | and(o=="list-single"or o=="list-multi")then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4232 | r,t=t,nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4233 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4234 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4235 | if i=="form"and r then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4236 | local a={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4237 | for o,t in n(r)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4238 | if s(t)=="table"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4239 | e:tag("option",{label=t.label}):tag("value"):text(t.value):up():up(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4240 | if t.default then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4241 | a[#a+1]=t.value; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4242 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4243 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4244 | e:tag("option",{label=t}):tag("value"):text(t):up():up(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4245 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4246 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4247 | if not t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4248 | if o=="list-single"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4249 | t=a[1]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4250 | elseif o=="list-multi"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4251 | t=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4252 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4253 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4254 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4255 | if t~=nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4256 | if s(t)=="number"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4257 | t=("%g"):format(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4258 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4259 | if o=="hidden"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4260 | if s(t)=="table"then |
12 | 4261 | e:tag("value") |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4262 | :add_child(t) |
12 | 4263 | :up(); |
4264 | else | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4265 | e:tag("value"):text(t):up(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4266 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4267 | elseif o=="boolean"then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4268 | e:tag("value"):text((t and"1")or"0"):up(); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4269 | elseif o=="fixed"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4270 | e:tag("value"):text(t):up(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4271 | elseif o=="jid-multi"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4272 | for a,t in n(t)do |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4273 | e:tag("value"):text(t):up(); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4274 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4275 | elseif o=="jid-single"then |
12 | 4276 | e:tag("value"):text(t):up(); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4277 | elseif o=="text-single"or o=="text-private"then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4278 | e:tag("value"):text(t):up(); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4279 | elseif o=="text-multi"then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4280 | for t in t:gmatch("([^\r\n]+)\r?\n*")do |
12 | 4281 | e:tag("value"):text(t):up(); |
4282 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4283 | elseif o=="list-single"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4284 | e:tag("value"):text(t):up(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4285 | elseif o=="list-multi"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4286 | for a,t in n(t)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4287 | e:tag("value"):text(t):up(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4288 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4289 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4290 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4291 | local t=a.media; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4292 | if t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4293 | e:tag("media",{xmlns="urn:xmpp:media-element",height=("%g"):format(t.height),width=("%g"):format(t.width)}); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4294 | for a,t in n(t)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4295 | e:tag("uri",{type=t.type}):text(t.uri):up() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4296 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4297 | e:up(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4298 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4299 | if i=="form"and a.required then |
12 | 4300 | e:tag("required"):up(); |
4301 | end | |
4302 | e:up(); | |
4303 | end | |
4304 | return e; | |
4305 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4306 | local t={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4307 | local h={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4308 | function d.data(e,r,i) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4309 | local o={}; |
12 | 4310 | local a={}; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4311 | local s={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4312 | for n,e in n(e)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4313 | local n; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4314 | for t in r:childtags("field")do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4315 | if(e.var or e.name)==t.attr.var then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4316 | n=t; |
12 | 4317 | break; |
4318 | end | |
4319 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4320 | if not n then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4321 | if i and i[e.name]~=nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4322 | o[e.name]=i[e.name]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4323 | elseif e.required then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4324 | a[e.name]="Required value missing"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4325 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4326 | elseif e.name then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4327 | s[e.name]=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4328 | local t=t[e.type]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4329 | if t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4330 | local t,i=t(n,e.required); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4331 | local n=e.datatype and h[e.datatype]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4332 | if t~=nil and n then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4333 | local o,a=n(t,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4334 | if o then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4335 | t=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4336 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4337 | t,i=nil,a or("Invalid value for data of type "..e.datatype); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4338 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4339 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4340 | o[e.name],a[e.name]=t,i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4341 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4342 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4343 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4344 | if p(a)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4345 | return o,a,s; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4346 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4347 | return o,nil,s; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4348 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4349 | local function e(e,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4350 | local e=e:get_child_text("value"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4351 | if a and(e==nil or e=="")then |
12 | 4352 | return nil,"Required value missing"; |
4353 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4354 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4355 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4356 | t["text-single"]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4357 | t["text-private"]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4358 | t["jid-single"]= |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4359 | function(o,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4360 | local e,a=e(o,a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4361 | if not e then return e,a;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4362 | local a=m(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4363 | if not a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4364 | return nil,"Invalid JID: "..e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4365 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4366 | return a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4367 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4368 | t["jid-multi"]= |
12 | 4369 | function(o,i) |
4370 | local a={}; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4371 | local e={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4372 | for t in o:childtags("value")do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4373 | local t=t:get_text(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4374 | local o=m(t); |
12 | 4375 | a[#a+1]=o; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4376 | if t and not o then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4377 | e[#e+1]=("Invalid JID: "..t); |
12 | 4378 | end |
4379 | end | |
4380 | if#a>0 then | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4381 | return a,(#e>0 and l(e,"\n")or nil); |
12 | 4382 | elseif i then |
4383 | return nil,"Required value missing"; | |
4384 | end | |
4385 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4386 | t["list-multi"]= |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4387 | function(o,a) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4388 | local e={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4389 | for t in o:childtags("value")do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4390 | e[#e+1]=t:get_text(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4391 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4392 | if#e>0 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4393 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4394 | elseif a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4395 | return nil,"Required value missing"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4396 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4397 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4398 | t["text-multi"]= |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4399 | function(a,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4400 | local e,a=t["list-multi"](a,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4401 | if e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4402 | e=l(e,"\n"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4403 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4404 | return e,a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4405 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4406 | t["list-single"]=e; |
12 | 4407 | local a={ |
4408 | ["1"]=true,["true"]=true, | |
4409 | ["0"]=false,["false"]=false, | |
4410 | }; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4411 | t["boolean"]= |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4412 | function(o,i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4413 | local e,o=e(o,i); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4414 | if not e then return e,o;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4415 | local a=a[e]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4416 | if a==nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4417 | return nil,"Invalid boolean representation:"..e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4418 | end |
12 | 4419 | return a; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4420 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4421 | t["hidden"]= |
12 | 4422 | function(e) |
4423 | return e:get_child_text("value"); | |
4424 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4425 | h["xs:integer"]= |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4426 | function(e,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4427 | local e=u(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4428 | if not e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4429 | return false,"not a number"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4430 | elseif e%1~=0 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4431 | return false,"not an integer"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4432 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4433 | if t.range_max and e>t.range_max then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4434 | return false,"out of bounds"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4435 | elseif t.range_min and e<t.range_min then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4436 | return false,"out of bounds"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4437 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4438 | return true,e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4439 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4440 | local function t(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4441 | if not c.is_stanza(e)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4442 | return nil,"not a stanza object"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4443 | elseif e.attr.xmlns~="jabber:x:data"or e.name~="x"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4444 | return nil,"not a dataform element"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4445 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4446 | for e in e:childtags("field")do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4447 | if e.attr.var=="FORM_TYPE"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4448 | return e:get_child_text("value"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4449 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4450 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4451 | return""; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4452 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4453 | return{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4454 | new=w; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4455 | from_stanza=v; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4456 | get_type=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4457 | }; |
12 | 4458 | end) |
4459 | package.preload['util.caps']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4460 | local _ENV=_ENV; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4461 | local function e(t,...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4462 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4463 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4464 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4465 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4466 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4467 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4468 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4469 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4470 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4471 | local l=require"util.encodings".base64.encode; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4472 | local u=require"util.hashes".sha1; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4473 | local n,s,h=table.insert,table.sort,table.concat; |
12 | 4474 | local r=ipairs; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4475 | local _ENV=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4476 | local function d(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4477 | local i,o,a={},{},{}; |
12 | 4478 | for t,e in r(e)do |
4479 | if e.name=="identity"then | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4480 | n(i,(e.attr.category or"").."\0"..(e.attr.type or"").."\0"..(e.attr["xml:lang"]or"").."\0"..(e.attr.name or"")); |
12 | 4481 | elseif e.name=="feature"then |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4482 | n(o,e.attr.var or""); |
12 | 4483 | elseif e.name=="x"and e.attr.xmlns=="jabber:x:data"then |
4484 | local t={}; | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4485 | local o; |
12 | 4486 | for a,e in r(e.tags)do |
4487 | if e.name=="field"and e.attr.var then | |
4488 | local a={}; | |
4489 | for t,e in r(e.tags)do | |
4490 | e=#e.tags==0 and e:get_text(); | |
4491 | if e then n(a,e);end | |
4492 | end | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4493 | s(a); |
12 | 4494 | if e.attr.var=="FORM_TYPE"then |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4495 | o=a[1]; |
12 | 4496 | elseif#a>0 then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4497 | n(t,e.attr.var.."\0"..h(a,"<")); |
12 | 4498 | else |
4499 | n(t,e.attr.var); | |
4500 | end | |
4501 | end | |
4502 | end | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4503 | s(t); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4504 | t=h(t,"<"); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4505 | if o then t=o.."\0"..t;end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4506 | n(a,t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4507 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4508 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4509 | s(i); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4510 | s(o); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4511 | s(a); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4512 | if#i>0 then i=h(i,"<"):gsub("%z","/").."<";else i="";end |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4513 | if#o>0 then o=h(o,"<").."<";else o="";end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4514 | if#a>0 then a=h(a,"<"):gsub("%z","<").."<";else a="";end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4515 | local e=i..o..a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4516 | local t=l(u(e)); |
12 | 4517 | return t,e; |
4518 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4519 | return{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4520 | calculate_hash=d; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4521 | }; |
12 | 4522 | end) |
4523 | package.preload['util.vcard']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4524 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4525 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4526 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4527 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4528 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4529 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4530 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4531 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4532 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4533 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4534 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4535 | local o=require"util.stanza"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4536 | local a,c=table.insert,table.concat; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4537 | local h=type; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4538 | local e,s,m=next,pairs,ipairs; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4539 | local u,l,d,r; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4540 | local f="\n"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4541 | local i; |
12 | 4542 | local function e() |
4543 | error"Not implemented" | |
4544 | end | |
4545 | local function e() | |
4546 | error"Not implemented" | |
4547 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4548 | local function w(e) |
12 | 4549 | return e:gsub("[,:;\\]","\\%1"):gsub("\n","\\n"); |
4550 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4551 | local function y(e) |
12 | 4552 | return e:gsub("\\?[\\nt:;,]",{ |
4553 | ["\\\\"]="\\", | |
4554 | ["\\n"]="\n", | |
4555 | ["\\r"]="\r", | |
4556 | ["\\t"]="\t", | |
4557 | ["\\:"]=":", | |
4558 | ["\\;"]=";", | |
4559 | ["\\,"]=",", | |
4560 | [":"]="\29", | |
4561 | [";"]="\30", | |
4562 | [","]="\31", | |
4563 | }); | |
4564 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4565 | local function p(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4566 | local a=o.stanza(t.name,{xmlns="vcard-temp"}); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4567 | local e=i[t.name]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4568 | if e=="text"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4569 | a:text(t[1]); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4570 | elseif h(e)=="table"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4571 | if e.types and t.TYPE then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4572 | if h(t.TYPE)=="table"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4573 | for o,e in s(e.types)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4574 | for o,t in s(t.TYPE)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4575 | if t:upper()==e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4576 | a:tag(e):up(); |
12 | 4577 | break; |
4578 | end | |
4579 | end | |
4580 | end | |
4581 | else | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4582 | a:tag(t.TYPE:upper()):up(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4583 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4584 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4585 | if e.props then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4586 | for o,e in s(e.props)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4587 | if t[e]then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4588 | a:tag(e):up(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4589 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4590 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4591 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4592 | if e.value then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4593 | a:tag(e.value):text(t[1]):up(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4594 | elseif e.values then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4595 | local o=e.values; |
12 | 4596 | local i=o.behaviour=="repeat-last"and o[#o]; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4597 | for o=1,#t do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4598 | a:tag(e.values[o]or i):text(t[o]):up(); |
12 | 4599 | end |
4600 | end | |
4601 | end | |
4602 | return a; | |
4603 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4604 | local function n(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4605 | local e=o.stanza("vCard",{xmlns="vcard-temp"}); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4606 | for a=1,#t do |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4607 | e:add_child(p(t[a])); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4608 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4609 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4610 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4611 | function r(e) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4612 | if not e[1]or e[1].name then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4613 | return n(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4614 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4615 | local t=o.stanza("xCard",{xmlns="vcard-temp"}); |
12 | 4616 | for a=1,#e do |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4617 | t:add_child(n(e[a])); |
12 | 4618 | end |
4619 | return t; | |
4620 | end | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4621 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4622 | function u(t) |
12 | 4623 | t=t |
4624 | :gsub("\r\n","\n") | |
4625 | :gsub("\n ","") | |
4626 | :gsub("\n\n+","\n"); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4627 | local h={}; |
12 | 4628 | local e; |
4629 | for t in t:gmatch("[^\n]+")do | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4630 | local t=y(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4631 | local s,t,n=t:match("^([-%a]+)(\30?[^\29]*)\29(.*)$"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4632 | n=n:gsub("\29",":"); |
12 | 4633 | if#t>0 then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4634 | local a={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4635 | for e,o,i in t:gmatch("\30([^=]+)(=?)([^\30]*)")do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4636 | e=e:upper(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4637 | local t={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4638 | for e in i:gmatch("[^\31]+")do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4639 | t[#t+1]=e |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4640 | t[e]=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4641 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4642 | if o=="="then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4643 | a[e]=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4644 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4645 | a[e]=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4646 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4647 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4648 | t=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4649 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4650 | if s=="BEGIN"and n=="VCARD"then |
12 | 4651 | e={}; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4652 | h[#h+1]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4653 | elseif s=="END"and n=="VCARD"then |
12 | 4654 | e=nil; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4655 | elseif e and i[s]then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4656 | local o=i[s]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4657 | local i={name=s}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4658 | e[#e+1]=i; |
12 | 4659 | local s=e; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4660 | e=i; |
12 | 4661 | if o.types then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4662 | for o,a in m(o.types)do |
12 | 4663 | local a=a:lower(); |
4664 | if(t.TYPE and t.TYPE[a]==true) | |
4665 | or t[a]==true then | |
4666 | e.TYPE=a; | |
4667 | end | |
4668 | end | |
4669 | end | |
4670 | if o.props then | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4671 | for o,a in m(o.props)do |
12 | 4672 | if t[a]then |
4673 | if t[a]==true then | |
4674 | e[a]=true; | |
4675 | else | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4676 | for o,t in m(t[a])do |
12 | 4677 | e[a]=t; |
4678 | end | |
4679 | end | |
4680 | end | |
4681 | end | |
4682 | end | |
4683 | if o=="text"or o.value then | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4684 | a(e,n); |
12 | 4685 | elseif o.values then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4686 | local t="\30"..n; |
12 | 4687 | for t in t:gmatch("\30([^\30]*)")do |
4688 | a(e,t); | |
4689 | end | |
4690 | end | |
4691 | e=s; | |
4692 | end | |
4693 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4694 | return h; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4695 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4696 | local function n(t) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4697 | local e={}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4698 | for a=1,#t do |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4699 | e[a]=w(t[a]); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4700 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4701 | e=c(e,";"); |
12 | 4702 | local a=""; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4703 | for t,e in s(t)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4704 | if h(t)=="string"and t~="name"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4705 | a=a..(";%s=%s"):format(t,h(e)=="table"and c(e,",")or e); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4706 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4707 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4708 | return("%s%s:%s"):format(t.name,a,e) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4709 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4710 | local function o(t) |
12 | 4711 | local e={}; |
4712 | a(e,"BEGIN:VCARD") | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4713 | for o=1,#t do |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4714 | a(e,n(t[o])); |
12 | 4715 | end |
4716 | a(e,"END:VCARD") | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4717 | return c(e,f); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4718 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4719 | function l(e) |
12 | 4720 | if e[1]and e[1].name then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4721 | return o(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4722 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4723 | local t={}; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4724 | for a=1,#e do |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4725 | t[a]=o(e[a]); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4726 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4727 | return c(t,f); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4728 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4729 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4730 | local function n(o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4731 | local e=o.name; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4732 | local t=i[e]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4733 | local e={name=e}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4734 | if t=="text"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4735 | e[1]=o:get_text(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4736 | elseif h(t)=="table"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4737 | if t.value then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4738 | e[1]=o:get_child_text(t.value)or""; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4739 | elseif t.values then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4740 | local t=t.values; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4741 | if t.behaviour=="repeat-last"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4742 | for t=1,#o.tags do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4743 | a(e,o.tags[t]:get_text()or""); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4744 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4745 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4746 | for i=1,#t do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4747 | a(e,o:get_child_text(t[i])or""); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4748 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4749 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4750 | elseif t.names then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4751 | local t=t.names; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4752 | for a=1,#t do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4753 | if o:get_child(t[a])then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4754 | e[1]=t[a]; |
12 | 4755 | break; |
4756 | end | |
4757 | end | |
4758 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4759 | if t.props_verbatim then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4760 | for a,t in s(t.props_verbatim)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4761 | e[a]=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4762 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4763 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4764 | if t.types then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4765 | local t=t.types; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4766 | e.TYPE={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4767 | for i=1,#t do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4768 | if o:get_child(t[i])then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4769 | a(e.TYPE,t[i]:lower()); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4770 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4771 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4772 | if#e.TYPE==0 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4773 | e.TYPE=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4774 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4775 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4776 | if t.props then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4777 | local t=t.props; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4778 | for i=1,#t do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4779 | local t=t[i] |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4780 | local o=o:get_child_text(t); |
12 | 4781 | if o then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4782 | e[t]=e[t]or{}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4783 | a(e[t],o); |
12 | 4784 | end |
4785 | end | |
4786 | end | |
4787 | else | |
4788 | return nil | |
4789 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4790 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4791 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4792 | local function o(e) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4793 | local e=e.tags; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4794 | local t={}; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4795 | for o=1,#e do |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4796 | a(t,n(e[o])); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4797 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4798 | return t |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4799 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4800 | function d(e) |
12 | 4801 | if e.attr.xmlns~="vcard-temp"then |
4802 | return nil,"wrong-xmlns"; | |
4803 | end | |
4804 | if e.name=="xCard"then | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4805 | local a={}; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4806 | local t=e.tags; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4807 | for e=1,#t do |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4808 | a[e]=o(t[e]); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4809 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4810 | return a |
12 | 4811 | elseif e.name=="vCard"then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4812 | return o(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4813 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4814 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4815 | i={ |
12 | 4816 | VERSION="text", |
4817 | FN="text", | |
4818 | N={ | |
4819 | values={ | |
4820 | "FAMILY", | |
4821 | "GIVEN", | |
4822 | "MIDDLE", | |
4823 | "PREFIX", | |
4824 | "SUFFIX", | |
4825 | }, | |
4826 | }, | |
4827 | NICKNAME="text", | |
4828 | PHOTO={ | |
4829 | props_verbatim={ENCODING={"b"}}, | |
4830 | props={"TYPE"}, | |
4831 | value="BINVAL", | |
4832 | }, | |
4833 | BDAY="text", | |
4834 | ADR={ | |
4835 | types={ | |
4836 | "HOME", | |
4837 | "WORK", | |
4838 | "POSTAL", | |
4839 | "PARCEL", | |
4840 | "DOM", | |
4841 | "INTL", | |
4842 | "PREF", | |
4843 | }, | |
4844 | values={ | |
4845 | "POBOX", | |
4846 | "EXTADD", | |
4847 | "STREET", | |
4848 | "LOCALITY", | |
4849 | "REGION", | |
4850 | "PCODE", | |
4851 | "CTRY", | |
4852 | } | |
4853 | }, | |
4854 | LABEL={ | |
4855 | types={ | |
4856 | "HOME", | |
4857 | "WORK", | |
4858 | "POSTAL", | |
4859 | "PARCEL", | |
4860 | "DOM", | |
4861 | "INTL", | |
4862 | "PREF", | |
4863 | }, | |
4864 | value="LINE", | |
4865 | }, | |
4866 | TEL={ | |
4867 | types={ | |
4868 | "HOME", | |
4869 | "WORK", | |
4870 | "VOICE", | |
4871 | "FAX", | |
4872 | "PAGER", | |
4873 | "MSG", | |
4874 | "CELL", | |
4875 | "VIDEO", | |
4876 | "BBS", | |
4877 | "MODEM", | |
4878 | "ISDN", | |
4879 | "PCS", | |
4880 | "PREF", | |
4881 | }, | |
4882 | value="NUMBER", | |
4883 | }, | |
4884 | EMAIL={ | |
4885 | types={ | |
4886 | "HOME", | |
4887 | "WORK", | |
4888 | "INTERNET", | |
4889 | "PREF", | |
4890 | "X400", | |
4891 | }, | |
4892 | value="USERID", | |
4893 | }, | |
4894 | JABBERID="text", | |
4895 | MAILER="text", | |
4896 | TZ="text", | |
4897 | GEO={ | |
4898 | values={ | |
4899 | "LAT", | |
4900 | "LON", | |
4901 | }, | |
4902 | }, | |
4903 | TITLE="text", | |
4904 | ROLE="text", | |
4905 | LOGO="copy of PHOTO", | |
4906 | AGENT="text", | |
4907 | ORG={ | |
4908 | values={ | |
4909 | behaviour="repeat-last", | |
4910 | "ORGNAME", | |
4911 | "ORGUNIT", | |
4912 | } | |
4913 | }, | |
4914 | CATEGORIES={ | |
4915 | values="KEYWORD", | |
4916 | }, | |
4917 | NOTE="text", | |
4918 | PRODID="text", | |
4919 | REV="text", | |
4920 | SORTSTRING="text", | |
4921 | SOUND="copy of PHOTO", | |
4922 | UID="text", | |
4923 | URL="text", | |
4924 | CLASS={ | |
4925 | names={ | |
4926 | "PUBLIC", | |
4927 | "PRIVATE", | |
4928 | "CONFIDENTIAL", | |
4929 | }, | |
4930 | }, | |
4931 | KEY={ | |
4932 | props={"TYPE"}, | |
4933 | value="CRED", | |
4934 | }, | |
4935 | DESC="text", | |
4936 | }; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4937 | i.LOGO=i.PHOTO; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4938 | i.SOUND=i.PHOTO; |
12 | 4939 | return{ |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4940 | from_text=u; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4941 | to_text=l; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4942 | from_xep54=d; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4943 | to_xep54=r; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4944 | lua_to_text=l; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4945 | lua_to_xep54=r; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4946 | text_to_lua=u; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4947 | text_to_xep54=function(...)return r(u(...));end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4948 | xep54_to_lua=d; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4949 | xep54_to_text=function(...)return l(d(...))end; |
12 | 4950 | }; |
4951 | end) | |
4952 | package.preload['util.logger']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4953 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4954 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4955 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4956 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4957 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4958 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4959 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4960 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4961 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4962 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4963 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4964 | local o=pairs; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4965 | local c=ipairs; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4966 | local u=require; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4967 | local l=table.remove; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4968 | local _ENV=nil; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4969 | local e={}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4970 | local t; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
4971 | local function h(e) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4972 | local a=t(e,"debug"); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4973 | local o=t(e,"info"); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4974 | local i=t(e,"warn"); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4975 | local n=t(e,"error"); |
12 | 4976 | return function(t,e,...) |
4977 | if t=="debug"then | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4978 | return a(e,...); |
12 | 4979 | elseif t=="info"then |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4980 | return o(e,...); |
12 | 4981 | elseif t=="warn"then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
4982 | return i(e,...); |
12 | 4983 | elseif t=="error"then |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4984 | return n(e,...); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4985 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4986 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4987 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4988 | function t(o,a) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4989 | local t=e[a]; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4990 | if not t then |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4991 | t={}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4992 | e[a]=t; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4993 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4994 | local e=function(e,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4995 | for i=1,#t do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4996 | t[i](o,a,e,...); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4997 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4998 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
4999 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5000 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5001 | local function d() |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5002 | for t,e in o(e)do |
12 | 5003 | for t=1,#e do |
5004 | e[t]=nil; | |
5005 | end | |
5006 | end | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5007 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5008 | local function i(t,a) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5009 | if not e[t]then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5010 | e[t]={a}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5011 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5012 | e[t][#e[t]+1]=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5013 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5014 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5015 | local function r(s,n) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5016 | local a=u"util.format".format; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5017 | local function e(o,t,e,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5018 | return s(o,t,a(e,...)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5019 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5020 | for a,t in c(n or{"debug","info","warn","error"})do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5021 | i(t,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5022 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5023 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5024 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5025 | local function n(i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5026 | local a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5027 | for t,e in o(e)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5028 | for t=#e,1,-1 do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5029 | if e[t]==i then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5030 | l(e,t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5031 | a=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5032 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5033 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5034 | end |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5035 | return a; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5036 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5037 | return{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5038 | init=h; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5039 | make_logger=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5040 | reset=d; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5041 | add_level_sink=i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5042 | add_simple_sink=r; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5043 | new=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5044 | remove_sink=n; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5045 | }; |
12 | 5046 | end) |
5047 | package.preload['util.datetime']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5048 | local _ENV=_ENV; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5049 | local function e(t,...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5050 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5051 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5052 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5053 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5054 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5055 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5056 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5057 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5058 | end |
12 | 5059 | local e=os.date; |
5060 | local i=os.time; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5061 | local r=os.difftime; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5062 | local t=math.floor; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5063 | local s=tonumber; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5064 | local _ENV=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5065 | local function d(a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5066 | return e("!%Y-%m-%d",a and t(a)or nil); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5067 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5068 | local function l(a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5069 | if a==nil or a%1==0 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5070 | return e("!%Y-%m-%dT%H:%M:%SZ",a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5071 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5072 | local o=a%1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5073 | local a=t(a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5074 | return e("!%Y-%m-%dT%H:%M:%S.%%06dZ",a):format(t(o*1e6)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5075 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5076 | local function c(a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5077 | if a==nil or a%1==0 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5078 | return e("!%H:%M:%S",a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5079 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5080 | local o=a%1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5081 | local a=t(a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5082 | return e("!%H:%M:%S.%%06d",a):format(t(o*1e6)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5083 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5084 | local function u(a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5085 | return e("!%Y%m%dT%H:%M:%S",a and t(a)or nil); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5086 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5087 | local function m(a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5088 | if a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5089 | local h,l,d,u,c,a,n=a:match("^(%d%d%d%d)%-?(%d%d)%-?(%d%d)T(%d%d):(%d%d):(%d%d%.?%d*)([Z+%-]?.*)$"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5090 | if h then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5091 | local o=i(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5092 | local r=r(i(e("*t",o)),i(e("!*t",o))); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5093 | local o=0; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5094 | if n~=""and n~="Z"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5095 | local a,t,e=n:match("([+%-])(%d%d):?(%d*)"); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5096 | if not a then return;end |
12 | 5097 | if#e~=2 then e="0";end |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5098 | t,e=s(t),s(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5099 | o=t*60*60+e*60; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5100 | if a=="-"then o=-o;end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5101 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5102 | local e=a%1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5103 | a=t(a+r)-o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5104 | return i({year=h,month=l,day=d,hour=u,min=c,sec=a,isdst=false})+e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5105 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5106 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5107 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5108 | return{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5109 | date=d; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5110 | datetime=l; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5111 | time=c; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5112 | legacy=u; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5113 | parse=m; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5114 | }; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5115 | end) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5116 | package.preload['util.json']=(function(...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5117 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5118 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5119 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5120 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5121 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5122 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5123 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5124 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5125 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5126 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5127 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5128 | local p=type; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5129 | local t,y,c=table.insert,table.concat,table.remove; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5130 | local n=string.char; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5131 | local z,d=tostring,tonumber; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5132 | local u,r,j=pairs,ipairs,require"util.iterators".sorted_pairs; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5133 | local i=next; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5134 | local b,m=getmetatable,setmetatable; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5135 | local l=print; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5136 | local a,e=pcall(require,"util.array"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5137 | local v=a and b(e())or{}; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5138 | local a={}; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5139 | local h=m({},{__tostring=function()return"null";end;}); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5140 | a.null=h; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5141 | local f={ |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5142 | ["\""]="\\\"",["\\"]="\\\\",["\b"]="\\b", |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5143 | ["\f"]="\\f",["\n"]="\\n",["\r"]="\\r",["\t"]="\\t"}; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5144 | for t=0,31 do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5145 | local e=n(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5146 | if not f[e]then f[e]=("\\u%.4X"):format(t);end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5147 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5148 | local function q(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5149 | if e<128 then return n(e);end |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5150 | local t=e%64; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5151 | if e<2048 then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5152 | local e=(e-t)/64; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5153 | return n(128+64+e,128+t); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5154 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5155 | local a=e%4096; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5156 | local o=(a-t)/64; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5157 | local e=(e-a)/4096; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5158 | return n(128+64+32+e,128+o,128+t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5159 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5160 | local k={ |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5161 | number=true, |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5162 | string=true, |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5163 | table=true, |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5164 | boolean=true |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5165 | }; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5166 | local x={ |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5167 | __array=true; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5168 | __hash=true; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5169 | }; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5170 | local o,g,s,w; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5171 | function w(a,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5172 | t(e,"\""..(a:gsub(".",f)).."\""); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5173 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5174 | function s(a,e) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5175 | t(e,"["); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5176 | if i(a)then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5177 | for i,a in r(a)do |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5178 | o(a,e); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5179 | t(e,","); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5180 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5181 | c(e); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5182 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5183 | t(e,"]"); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5184 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5185 | function g(l,e) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5186 | local a={}; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5187 | local n={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5188 | local d={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5189 | for e,t in r(l)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5190 | a[e]=t; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5191 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5192 | for e,t in u(l)do |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5193 | local o,i=p(e),p(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5194 | if k[i]or t==h then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5195 | if o=="string"and not x[e]then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5196 | d[e]=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5197 | elseif(k[o]or e==h)and a[e]==nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5198 | n[e]=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5199 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5200 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5201 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5202 | if i(n)~=nil or i(d)~=nil or i(a)==nil then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5203 | t(e,"{"); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5204 | local r=#e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5205 | local h=e.ordered and j or u; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5206 | for a,i in h(d)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5207 | w(a,e); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5208 | t(e,":"); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5209 | o(i,e); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5210 | t(e,","); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5211 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5212 | if i(n)~=nil then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5213 | t(e,"\"__hash\":["); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5214 | for a,i in u(n)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5215 | o(a,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5216 | t(e,","); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5217 | o(i,e); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5218 | t(e,","); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5219 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5220 | c(e); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5221 | t(e,"]"); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5222 | t(e,","); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5223 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5224 | if i(a)then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5225 | t(e,"\"__array\":"); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5226 | s(a,e); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5227 | t(e,","); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5228 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5229 | if r~=#e then c(e);end |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5230 | t(e,"}"); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5231 | else |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5232 | s(a,e); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5233 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5234 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5235 | function o(e,a) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5236 | local o=p(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5237 | if e==h then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5238 | t(a,"null"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5239 | elseif o=="number"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5240 | t(a,z(e)); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5241 | elseif o=="string"then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5242 | w(e,a); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5243 | elseif o=="table"then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5244 | local t=b(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5245 | if t==v then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5246 | s(e,a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5247 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5248 | g(e,a); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5249 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5250 | elseif o=="boolean"then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5251 | t(a,(e and"true"or"false")); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5252 | else |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5253 | t(a,"null"); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5254 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5255 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5256 | function a.encode(t) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5257 | local e={}; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5258 | o(t,e); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5259 | return y(e); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5260 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5261 | function a.encode_ordered(t) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5262 | local e={ordered=true}; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5263 | o(t,e); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5264 | return y(e); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5265 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5266 | function a.encode_array(t) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5267 | local e={}; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5268 | s(t,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5269 | return y(e); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5270 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5271 | local function o(t,e) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5272 | return t:find("[^ \t\r\n]",e)or e; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5273 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5274 | local function c(e) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5275 | local a=e.__array; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5276 | if a then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5277 | e.__array=nil; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5278 | for o,a in r(a)do |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5279 | t(e,a); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5280 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5281 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5282 | local a=e.__hash; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5283 | if a then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5284 | e.__hash=nil; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5285 | local t; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5286 | for o,a in r(a)do |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5287 | if t~=nil then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5288 | e[t]=a;t=nil; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5289 | else |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5290 | t=a; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5291 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5292 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5293 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5294 | return e; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5295 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5296 | local s,r; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5297 | local function u(t,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5298 | local i={}; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5299 | while true do |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5300 | local n,a; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5301 | e=o(t,e+1); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5302 | if t:byte(e)~=34 then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5303 | if t:byte(e)==125 then return i,e+1;end |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5304 | return nil,"key expected"; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5305 | end |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5306 | n,e=r(t,e); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5307 | if n==nil then return nil,e;end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5308 | e=o(t,e); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5309 | if t:byte(e)~=58 then return nil,"colon expected";end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5310 | a,e=s(t,e+1); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5311 | if a==nil then return nil,e;end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5312 | i[n]=a; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5313 | e=o(t,e); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5314 | local t=t:byte(e); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5315 | if t==125 then return c(i),e+1;end |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5316 | if t~=44 then return nil,"object eof";end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5317 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5318 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5319 | local function c(n,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5320 | local i={}; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5321 | while true do |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5322 | local a,h; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5323 | a,e,h=s(n,e+1,93); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5324 | if a==nil then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5325 | if h then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5326 | if#i~=0 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5327 | return nil,"value expected"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5328 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5329 | a,e=m(i,v),e+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5330 | end |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5331 | return a,e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5332 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5333 | t(i,a); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5334 | e=o(n,e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5335 | local t=n:byte(e); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5336 | if t==93 then return m(i,v),e+1;end |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5337 | if t~=44 then return nil,"array eof";end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5338 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5339 | end |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5340 | local t; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5341 | local function i(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5342 | local t,e=d(e:sub(3,6),16),d(e:sub(9,12),16); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5343 | local e=t*1024+e-56613888; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5344 | local o=e%64; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5345 | e=(e-o)/64; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5346 | local t=e%64; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5347 | e=(e-t)/64; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5348 | local a=e%64; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5349 | e=(e-a)/64; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5350 | return n(240+e,128+a,128+t,128+o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5351 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5352 | local function n(e) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5353 | e=e:match("%x%x%x%x",3); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5354 | if e then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5355 | local e=d(e,16) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5356 | if e>=55296 and e<=57343 then t=true;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5357 | return q(e); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5358 | end |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5359 | t=true; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5360 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5361 | function r(o,e) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5362 | e=e+1; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5363 | local a=o:find("\"",e,true); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5364 | if a then |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5365 | local e=o:sub(e,a-1); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5366 | t=nil; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5367 | e=e:gsub("\\u[dD][89abAB]%x%x\\u[dD][cdefCDEF]%x%x",i); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5368 | e=e:gsub("\\u.?.?.?.?",n); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5369 | if t then return nil,"invalid escape";end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5370 | return e,a+1; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5371 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5372 | return nil,"string eof"; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5373 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5374 | local function i(e,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5375 | local e=e:match("[0-9%.%-eE%+]+",t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5376 | return d(e),t+#e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5377 | end |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5378 | local function d(t,e) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5379 | local o,a,t=t:byte(e+1,e+3); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5380 | if o==117 and a==108 and t==108 then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5381 | return h,e+4; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5382 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5383 | return nil,"null parse failed"; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5384 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5385 | local function n(t,e) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5386 | local o,t,a=t:byte(e+1,e+3); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5387 | if o==114 and t==117 and a==101 then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5388 | return true,e+4; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5389 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5390 | return nil,"true parse failed"; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5391 | end |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5392 | local function h(t,e) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5393 | local o,a,t,i=t:byte(e+1,e+4); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5394 | if o==97 and a==108 and t==115 and i==101 then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5395 | return false,e+5; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5396 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5397 | return nil,"false parse failed"; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5398 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5399 | function s(a,e,s) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5400 | e=o(a,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5401 | local t=a:byte(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5402 | if t==123 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5403 | return u(a,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5404 | elseif t==91 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5405 | return c(a,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5406 | elseif t==34 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5407 | return r(a,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5408 | elseif t~=nil and t>=48 and t<=57 or t==45 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5409 | return i(a,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5410 | elseif t==110 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5411 | return d(a,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5412 | elseif t==116 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5413 | return n(a,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5414 | elseif t==102 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5415 | return h(a,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5416 | elseif t==s then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5417 | return nil,e,true; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5418 | else |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5419 | return nil,"value expected"; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5420 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5421 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5422 | local t={ |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5423 | ["\\\""]="\\u0022"; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5424 | ["\\\\"]="\\u005c"; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5425 | ["\\/"]="\\u002f"; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5426 | ["\\b"]="\\u0008"; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5427 | ["\\f"]="\\u000C"; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5428 | ["\\n"]="\\u000A"; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5429 | ["\\r"]="\\u000D"; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5430 | ["\\t"]="\\u0009"; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5431 | ["\\u"]="\\u"; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5432 | }; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5433 | function a.decode(e) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5434 | e=e:gsub("\\.",t) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5435 | local t,a=s(e,1); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5436 | if t==nil then return t,a;end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5437 | if e:find("[^ \t\r\n]",a)then return nil,"garbage at eof";end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5438 | return t; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5439 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5440 | function a.test(e) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5441 | local e=a.encode(e); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5442 | local t=a.decode(e); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5443 | local t=a.encode(t); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5444 | if e~=t then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5445 | l("FAILED"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5446 | l("encoded:",e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5447 | l("recoded:",t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5448 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5449 | l(e); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5450 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5451 | return e==t; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5452 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5453 | return a; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5454 | end) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5455 | package.preload['util.xml']=(function(...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5456 | local _ENV=_ENV; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5457 | local function e(t,...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5458 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5459 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5460 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5461 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5462 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5463 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5464 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5465 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5466 | end |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5467 | local t=require"util.stanza"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5468 | local u=require"lxp"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5469 | local i=table.insert; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5470 | local r=table.remove; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5471 | local c=error; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5472 | local _ENV=nil; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5473 | local e=(function() |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5474 | local d={ |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5475 | ["http://www.w3.org/XML/1998/namespace"]="xml"; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5476 | }; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5477 | local n="\1"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5478 | local h="^([^"..n.."]*)"..n.."?(.*)$"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5479 | return function(l,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5480 | local e={}; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5481 | local a=t.stanza("root"); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5482 | local t={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5483 | local s={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5484 | function e:StartNamespaceDecl(e,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5485 | if e~=nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5486 | i(t,a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5487 | i(s,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5488 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5489 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5490 | function e:EndNamespaceDecl(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5491 | if e~=nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5492 | r(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5493 | r(s); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5494 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5495 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5496 | function e:StartElement(o,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5497 | local o,i=o:match(h); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5498 | if i==""then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5499 | o,i="",o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5500 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5501 | if o~=""then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5502 | e.xmlns=o; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5503 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5504 | for t=1,#e do |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5505 | local a=e[t]; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5506 | e[t]=nil; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5507 | local t,o=a:match(h); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5508 | if o~=""then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5509 | t=d[t]; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5510 | if t then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5511 | e[t..":"..o]=e[a]; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5512 | e[a]=nil; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5513 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5514 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5515 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5516 | local o={} |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5517 | for e=1,#t do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5518 | o[s[e]]=t[e]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5519 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5520 | a:tag(i,e,o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5521 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5522 | function e:CharacterData(e) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5523 | a:text(e); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5524 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5525 | function e:EndElement() |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5526 | a:up(); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5527 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5528 | local function t(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5529 | if not t.stop or not t:stop()then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5530 | c("Failed to abort parsing"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5531 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5532 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5533 | e.StartDoctypeDecl=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5534 | if not o or not o.allow_comments then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5535 | e.Comment=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5536 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5537 | if not o or not o.allow_processing_instructions then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5538 | e.ProcessingInstruction=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5539 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5540 | local t=u.new(e,n); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5541 | local e,i,o,n=t:parse(l); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5542 | if e then e,i,o,n=t:parse();end |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5543 | if e then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5544 | return a.tags[1]; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5545 | else |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5546 | return e,("%s (line %d, col %d))"):format(i,o,n); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5547 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5548 | end; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5549 | end)(); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5550 | return{ |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5551 | parse=e; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5552 | }; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5553 | end) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5554 | package.preload['util.rsm']=(function(...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5555 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5556 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5557 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5558 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5559 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5560 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5561 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5562 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5563 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5564 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5565 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5566 | local s=require"util.stanza".stanza; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5567 | local t,o=tostring,tonumber; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5568 | local h=type; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5569 | local n=pairs; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5570 | local i='http://jabber.org/protocol/rsm'; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5571 | local a={}; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5572 | do |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5573 | local e=a; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5574 | local function t(e) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5575 | return o((e:get_text())); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5576 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5577 | local function a(t) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5578 | return t:get_text(); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5579 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5580 | e.after=a; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5581 | e.before=function(e) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5582 | local e=e:get_text(); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5583 | return e==""or e; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5584 | end; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5585 | e.max=t; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5586 | e.index=t; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5587 | e.first=function(e) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5588 | return{index=o(e.attr.index);e:get_text()}; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5589 | end; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5590 | e.last=a; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5591 | e.count=t; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5592 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5593 | local h=setmetatable({ |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5594 | first=function(a,e) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5595 | if h(e)=="table"then |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5596 | a:tag("first",{index=e.index}):text(e[1]):up(); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5597 | else |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5598 | a:tag("first"):text(t(e)):up(); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5599 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5600 | end; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5601 | before=function(a,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5602 | if e==true then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5603 | a:tag("before"):up(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5604 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5605 | a:tag("before"):text(t(e)):up(); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5606 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5607 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5608 | },{ |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5609 | __index=function(a,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5610 | return function(a,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5611 | a:tag(e):text(t(o)):up(); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5612 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5613 | end; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5614 | }); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5615 | local function t(e) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5616 | local o={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5617 | for t in e:childtags()do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5618 | local e=t.name; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5619 | local a=e and a[e]; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5620 | if a then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5621 | o[e]=a(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5622 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5623 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5624 | return o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5625 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5626 | local function o(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5627 | local e=s("set",{xmlns=i}); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5628 | for t,o in n(t)do |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5629 | if a[t]then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5630 | h[t](e,o); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5631 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5632 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5633 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5634 | end |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5635 | local function a(e) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5636 | local e=e:get_child("set",i); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5637 | if e and#e.tags>0 then |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5638 | return t(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5639 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5640 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5641 | return{parse=t,generate=o,get=a}; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5642 | end) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5643 | package.preload['util.random']=(function(...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5644 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5645 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5646 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5647 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5648 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5649 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5650 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5651 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5652 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5653 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5654 | end |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5655 | local e=io.open("/dev/urandom","r"); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5656 | if e then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5657 | return{ |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5658 | seed=function()end; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5659 | bytes=function(t)return e:read(t);end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5660 | }; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5661 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5662 | local e=require"crypto" |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5663 | return e.rand; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5664 | end) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5665 | package.preload['util.ip']=(function(...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5666 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5667 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5668 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5669 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5670 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5671 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5672 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5673 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5674 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5675 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
5676 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5677 | local s=require"util.net"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5678 | local n=require"util.hex"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5679 | local a={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5680 | local o={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5681 | __index=function(o,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5682 | local e=a[t]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5683 | if not e then return nil;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5684 | local e=e(o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5685 | o[t]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5686 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5687 | end, |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5688 | __tostring=function(e)return e.addr;end, |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5689 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5690 | o.__eq=function(t,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5691 | if getmetatable(t)~=o or getmetatable(e)~=o then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5692 | return false; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5693 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5694 | return t.packed==e.packed; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5695 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5696 | local h={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5697 | ["0"]="0000",["1"]="0001",["2"]="0010",["3"]="0011", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5698 | ["4"]="0100",["5"]="0101",["6"]="0110",["7"]="0111", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5699 | ["8"]="1000",["9"]="1001",["A"]="1010",["B"]="1011", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5700 | ["C"]="1100",["D"]="1101",["E"]="1110",["F"]="1111", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5701 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5702 | local function t(a,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5703 | local i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5704 | if(not e or e=="IPv6")and a:find('%',1,true)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5705 | a,i=a:match("^(.-)%%(.*)"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5706 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5707 | local t,n=s.pton(a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5708 | if not t then return t,n end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5709 | if e=="IPv6"and#t~=16 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5710 | return nil,"invalid-ipv6"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5711 | elseif e=="IPv4"and#t~=4 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5712 | return nil,"invalid-ipv4"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5713 | elseif not e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5714 | if#t==16 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5715 | e="IPv6"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5716 | elseif#t==4 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5717 | e="IPv4"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5718 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5719 | return nil,"unknown protocol"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5720 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5721 | elseif e~="IPv6"and e~="IPv4"then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5722 | return nil,"invalid protocol"; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5723 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5724 | return setmetatable({addr=a,packed=t,proto=e,zone=i},o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5725 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5726 | function a:normal() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5727 | return s.ntop(self.packed); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5728 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5729 | function a.bits(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5730 | return n.encode(e.packed):upper():gsub(".",h); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5731 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5732 | function a.bits_full(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5733 | if e.proto=="IPv4"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5734 | e=e.toV4mapped; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5735 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5736 | return e.bits; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5737 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5738 | local e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5739 | local function v(t,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5740 | t,a=t.bits_full,a.bits_full; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5741 | for e=1,128 do |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5742 | if t:sub(e,e)~=a:sub(e,e)then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5743 | return e-1; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5744 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5745 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5746 | return 128; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5747 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5748 | local n=t("::1"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5749 | local w=t("127.0.0.0"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5750 | local h=t("2002::"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5751 | local d=t("2001::"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5752 | local p=t("fe80::"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5753 | local m=t("169.254.0.0"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5754 | local r=t("fc00::"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5755 | local i=t("fec0::"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5756 | local l=t("3ffe::"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5757 | local u=t("::"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5758 | local f=t("ff00::"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5759 | local c=t("::ffff:0:0"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5760 | local function y(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5761 | if e(t,w,8)then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5762 | return 2; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5763 | elseif e(t,m,16)then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5764 | return 2; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5765 | else |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5766 | return 14; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5767 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5768 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5769 | local function w(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5770 | if t==n then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5771 | return 2; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5772 | elseif e(t,p,10)then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5773 | return 2; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5774 | elseif e(t,i,10)then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5775 | return 5; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5776 | elseif e(t,f,10)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5777 | return t.packed:byte(2)%16; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5778 | else |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5779 | return 14; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5780 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5781 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5782 | local function m(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5783 | if t==n then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5784 | return 0; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5785 | elseif e(t,h,16)then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5786 | return 2; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5787 | elseif e(t,d,32)then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5788 | return 5; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5789 | elseif e(t,r,7)then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5790 | return 13; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5791 | elseif e(t,i,10)then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5792 | return 11; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5793 | elseif e(t,l,16)then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5794 | return 12; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5795 | elseif e(t,u,96)then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5796 | return 3; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5797 | elseif e(t,c,96)then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5798 | return 4; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5799 | else |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5800 | return 1; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5801 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5802 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5803 | local function f(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5804 | if t==n then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5805 | return 50; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5806 | elseif e(t,h,16)then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5807 | return 30; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5808 | elseif e(t,d,32)then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5809 | return 5; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5810 | elseif e(t,r,7)then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5811 | return 3; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5812 | elseif e(t,i,10)then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5813 | return 1; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5814 | elseif e(t,l,16)then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5815 | return 1; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5816 | elseif e(t,u,96)then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5817 | return 1; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5818 | elseif e(t,c,96)then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5819 | return 35; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5820 | else |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5821 | return 40; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5822 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5823 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5824 | function a:toV4mapped() |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5825 | if self.proto~="IPv4"then return nil,"No IPv4 address"end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5826 | local e=t("::ffff:"..self.normal); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5827 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5828 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5829 | function a:label() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5830 | if self.proto=="IPv4"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5831 | return m(self.toV4mapped); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5832 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5833 | return m(self); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5834 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5835 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5836 | function a:precedence() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5837 | if self.proto=="IPv4"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5838 | return f(self.toV4mapped); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5839 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5840 | return f(self); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5841 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5842 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5843 | function a:scope() |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
5844 | if self.proto=="IPv4"then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5845 | return y(self); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5846 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5847 | return w(self); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5848 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5849 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5850 | local r=t("10.0.0.0"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5851 | local h=t("172.16.0.0"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5852 | local i=t("192.168.0.0"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5853 | local n=t("100.64.0.0"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5854 | function a:private() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5855 | local t=self.scope~=14; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5856 | if not t and self.proto=="IPv4"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5857 | return e(self,r,8)or e(self,h,12)or e(self,i,16)or e(self,n,10); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5858 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5859 | return t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5860 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5861 | local function n(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5862 | local o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5863 | local a=e:find("/",1,true); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5864 | if a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5865 | o=tonumber(e:sub(a+1,-1)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5866 | e=e:sub(1,a-1); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5867 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5868 | return t(e),o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5869 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5870 | function e(a,t,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5871 | if not e or e>=128 or t.proto=="IPv4"and e>=32 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5872 | return a==t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5873 | elseif e<1 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5874 | return true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5875 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5876 | if a.proto~=t.proto then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5877 | if a.proto=="IPv4"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5878 | a=a.toV4mapped; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5879 | elseif t.proto=="IPv4"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5880 | t=t.toV4mapped; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5881 | e=e+(128-32); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5882 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5883 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5884 | return a.bits:sub(1,e)==t.bits:sub(1,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5885 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5886 | local function i(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5887 | return getmetatable(e)==o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5888 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5889 | local function o(e,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5890 | if a%8~=0 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5891 | return error("ip.truncate() only supports multiples of 8 bits"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5892 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5893 | local a=a/8; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5894 | if not i(e)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5895 | e=t(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5896 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5897 | return t(s.ntop(e.packed:sub(1,a)..("\0"):rep(#e.packed-a))) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5898 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5899 | return{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5900 | new_ip=t, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5901 | commonPrefixLength=v, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5902 | parse_cidr=n, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5903 | match=e, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5904 | is_ip=i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5905 | truncate=o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5906 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5907 | end) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5908 | package.preload['util.hex']=(function(...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5909 | local _ENV=_ENV; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5910 | local function e(t,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5911 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5912 | package.loaded[t]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5913 | for t=1,select("#",...)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5914 | (select(t,...))(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5915 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5916 | _ENV=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5917 | _M=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5918 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5919 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5920 | local h=string.char; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5921 | local s=string.format; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5922 | local o=string.gsub; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5923 | local n=string.lower; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5924 | local a={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5925 | local i={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5926 | do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5927 | local e,t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5928 | for o=0,255 do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5929 | e,t=h(o),s("%02x",o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5930 | a[e]=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5931 | i[t]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5932 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5933 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5934 | local function t(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5935 | return(o(e,".",a)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5936 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5937 | local function e(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5938 | return(o(n(e),"%X*(%x%x)%X*",i)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5939 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5940 | return{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5941 | encode=t,decode=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5942 | to=t,from=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5943 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5944 | end) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5945 | package.preload['util.net']=(function(...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5946 | local _ENV=_ENV; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5947 | local function e(t,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5948 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5949 | package.loaded[t]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5950 | for t=1,select("#",...)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5951 | (select(t,...))(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5952 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5953 | _ENV=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5954 | _M=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5955 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5956 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5957 | return{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5958 | pton=function(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5959 | if e:find":"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5960 | return"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5961 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5962 | return"\0\0\0\0" |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5963 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5964 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5965 | } |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5966 | end) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5967 | package.preload['util.sslconfig']=(function(...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5968 | local _ENV=_ENV; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5969 | local function e(t,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5970 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5971 | package.loaded[t]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5972 | for t=1,select("#",...)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5973 | (select(t,...))(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5974 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5975 | _ENV=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5976 | _M=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5977 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5978 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5979 | local n=type; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5980 | local o=pairs; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5981 | local t=rawset; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5982 | local r=rawget; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5983 | local c=error; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5984 | local d=table.concat; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5985 | local l=table.insert; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5986 | local u=setmetatable; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5987 | local m=require"util.paths".resolve_relative_path; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5988 | local _ENV=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5989 | local i={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5990 | local e={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5991 | local f=function(e)return e end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5992 | function i.options(h,s,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5993 | local a=h[s]or{}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5994 | if n(e)~="table"then e={e}end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5995 | for o,e in o(e)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5996 | if e==true or e==false then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5997 | a[o]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5998 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
5999 | a[e]=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6000 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6001 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6002 | t(h,s,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6003 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6004 | i.verifyext=i.options; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6005 | function e.options(a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6006 | local t={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6007 | for e,a in o(a)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6008 | if a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6009 | t[#t+1]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6010 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6011 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6012 | return t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6013 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6014 | e.verifyext=e.options; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6015 | function e.ciphers(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6016 | if n(t)=="table"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6017 | return d(t,":"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6018 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6019 | return t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6020 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6021 | e.curveslist=e.ciphers; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6022 | e.ciphersuites=e.ciphers; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6023 | function e.key(t,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6024 | if n(t)=="string"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6025 | return m(a._basedir,t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6026 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6027 | return nil |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6028 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6029 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6030 | e.certificate=e.key; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6031 | e.cafile=e.key; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6032 | e.capath=e.key; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6033 | e.dhparam=e.key; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6034 | local a={"sslv2","sslv3","tlsv1","tlsv1_1","tlsv1_2","tlsv1_3"}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6035 | for e=1,#a do a[a[e].."+"]=e-1;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6036 | local function h(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6037 | local t=a[e.protocol]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6038 | if t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6039 | e.protocol="sslv23"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6040 | for t=1,t do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6041 | l(e.options,"no_"..a[t]); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6042 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6043 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6044 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6045 | local function s(e,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6046 | t(e,"_cache",nil); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6047 | if n(a)=="table"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6048 | for a,o in o(a)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6049 | if a:sub(1,1)~="_"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6050 | (i[a]or t)(e,a,o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6051 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6052 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6053 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6054 | return e |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6055 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6056 | local function n(i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6057 | local a={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6058 | for t,o in o(i)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6059 | if t:sub(1,1)~="_"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6060 | a[t]=(e[t]or f)(o,i); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6061 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6062 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6063 | h(a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6064 | return a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6065 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6066 | local function i(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6067 | local a=r(e,"_cache"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6068 | if a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6069 | return a,nil |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6070 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6071 | local a,o=r(e,"_context_factory")(e:final(),e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6072 | if a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6073 | t(e,"_cache",a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6074 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6075 | return a,o |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6076 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6077 | local e={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6078 | __index={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6079 | apply=s; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6080 | final=n; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6081 | build=i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6082 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6083 | __newindex=function() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6084 | c("SSL config objects cannot be modified directly. Use :apply()") |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6085 | end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6086 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6087 | local function a(t,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6088 | return u({ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6089 | _context_factory=t, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6090 | _basedir=a, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6091 | options={}, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6092 | },e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6093 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6094 | local function h(i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6095 | local a=a(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6096 | for e,o in o(i)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6097 | t(a,e,o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6098 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6099 | return a |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6100 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6101 | e.__index.clone=h; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6102 | return{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6103 | apply=s; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6104 | final=n; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6105 | _new=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6106 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6107 | end) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6108 | package.preload['util.paths']=(function(...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6109 | local _ENV=_ENV; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6110 | local function e(t,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6111 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6112 | package.loaded[t]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6113 | for t=1,select("#",...)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6114 | (select(t,...))(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6115 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6116 | _ENV=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6117 | _M=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6118 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6119 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6120 | local i=table.concat; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6121 | local t=package.config:sub(1,1); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6122 | local a={} |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6123 | function a.resolve_relative_path(a,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6124 | if e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6125 | a=a:gsub("%"..t.."+$",""); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6126 | e=e:gsub("^%.%"..t.."+",""); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6127 | local o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6128 | if t=="/"and e:sub(1,1)~="/"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6129 | o=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6130 | elseif t=="\\"and(e:sub(1,1)~="/"and(e:sub(2,3)~=":\\"and e:sub(2,3)~=":/"))then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6131 | o=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6132 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6133 | if o then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6134 | return a..t..e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6135 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6136 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6137 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6138 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6139 | function a.glob_to_pattern(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6140 | return"^"..e:gsub("[%p*?]",function(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6141 | if e=="*"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6142 | return".*"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6143 | elseif e=="?"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6144 | return"."; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6145 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6146 | return"%"..e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6147 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6148 | end).."$"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6149 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6150 | function a.join(a,e,o,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6151 | if e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6152 | if o then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6153 | if...then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6154 | return i({a,e,o,...},t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6155 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6156 | return a..t..e..t..o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6157 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6158 | return a..t..e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6159 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6160 | return a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6161 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6162 | function a.complement_lua_path(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6163 | local a=_VERSION:match(" (.+)$"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6164 | local o=package.config:sub(3,3); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6165 | local e=package.config:sub(1,1); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6166 | local a=e.."lua"..e..a..e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6167 | if not string.find(package.path,t,1,true)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6168 | package.path=package.path..o..t..e.."share"..a.."?.lua"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6169 | package.path=package.path..o..t..e.."share"..a.."?"..e.."init.lua"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6170 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6171 | if not string.find(package.path,t,1,true)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6172 | package.cpath=package.cpath..o..t..e.."lib"..a.."?.so"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6173 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6174 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6175 | return a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6176 | end) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6177 | package.preload['util.mathcompat']=(function(...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6178 | local _ENV=_ENV; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6179 | local function e(t,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6180 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6181 | package.loaded[t]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6182 | for t=1,select("#",...)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6183 | (select(t,...))(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6184 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6185 | _ENV=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6186 | _M=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6187 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6188 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6189 | if not math.type then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6190 | local function t(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6191 | if type(e)=="number"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6192 | if e%1==0 and e~=e+1 and e~=e-1 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6193 | return"integer" |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6194 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6195 | return"float" |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6196 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6197 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6198 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6199 | _G.math.type=t |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6200 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6201 | end) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6202 | package.preload['util.dnsregistry']=(function(...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6203 | local _ENV=_ENV; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6204 | local function e(t,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6205 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6206 | package.loaded[t]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6207 | for t=1,select("#",...)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6208 | (select(t,...))(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6209 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6210 | _ENV=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6211 | _M=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6212 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6213 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6214 | return{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6215 | classes={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6216 | ["IN"]=1;[1]="IN"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6217 | ["CH"]=3;[3]="CH"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6218 | ["HS"]=4;[4]="HS"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6219 | ["ANY"]=255;[255]="ANY"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6220 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6221 | types={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6222 | ["A"]=1;[1]="A"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6223 | ["NS"]=2;[2]="NS"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6224 | ["MD"]=3;[3]="MD"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6225 | ["MF"]=4;[4]="MF"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6226 | ["CNAME"]=5;[5]="CNAME"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6227 | ["SOA"]=6;[6]="SOA"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6228 | ["MB"]=7;[7]="MB"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6229 | ["MG"]=8;[8]="MG"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6230 | ["MR"]=9;[9]="MR"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6231 | ["NULL"]=10;[10]="NULL"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6232 | ["WKS"]=11;[11]="WKS"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6233 | ["PTR"]=12;[12]="PTR"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6234 | ["HINFO"]=13;[13]="HINFO"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6235 | ["MINFO"]=14;[14]="MINFO"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6236 | ["MX"]=15;[15]="MX"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6237 | ["TXT"]=16;[16]="TXT"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6238 | ["RP"]=17;[17]="RP"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6239 | ["AFSDB"]=18;[18]="AFSDB"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6240 | ["X25"]=19;[19]="X25"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6241 | ["ISDN"]=20;[20]="ISDN"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6242 | ["RT"]=21;[21]="RT"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6243 | ["NSAP"]=22;[22]="NSAP"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6244 | ["NSAP-PTR"]=23;[23]="NSAP-PTR"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6245 | ["SIG"]=24;[24]="SIG"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6246 | ["KEY"]=25;[25]="KEY"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6247 | ["PX"]=26;[26]="PX"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6248 | ["GPOS"]=27;[27]="GPOS"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6249 | ["AAAA"]=28;[28]="AAAA"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6250 | ["LOC"]=29;[29]="LOC"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6251 | ["NXT"]=30;[30]="NXT"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6252 | ["EID"]=31;[31]="EID"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6253 | ["NIMLOC"]=32;[32]="NIMLOC"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6254 | ["SRV"]=33;[33]="SRV"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6255 | ["ATMA"]=34;[34]="ATMA"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6256 | ["NAPTR"]=35;[35]="NAPTR"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6257 | ["KX"]=36;[36]="KX"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6258 | ["CERT"]=37;[37]="CERT"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6259 | ["A6"]=38;[38]="A6"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6260 | ["DNAME"]=39;[39]="DNAME"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6261 | ["SINK"]=40;[40]="SINK"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6262 | ["OPT"]=41;[41]="OPT"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6263 | ["APL"]=42;[42]="APL"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6264 | ["DS"]=43;[43]="DS"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6265 | ["SSHFP"]=44;[44]="SSHFP"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6266 | ["IPSECKEY"]=45;[45]="IPSECKEY"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6267 | ["RRSIG"]=46;[46]="RRSIG"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6268 | ["NSEC"]=47;[47]="NSEC"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6269 | ["DNSKEY"]=48;[48]="DNSKEY"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6270 | ["DHCID"]=49;[49]="DHCID"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6271 | ["NSEC3"]=50;[50]="NSEC3"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6272 | ["NSEC3PARAM"]=51;[51]="NSEC3PARAM"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6273 | ["TLSA"]=52;[52]="TLSA"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6274 | ["SMIMEA"]=53;[53]="SMIMEA"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6275 | ["HIP"]=55;[55]="HIP"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6276 | ["NINFO"]=56;[56]="NINFO"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6277 | ["RKEY"]=57;[57]="RKEY"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6278 | ["TALINK"]=58;[58]="TALINK"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6279 | ["CDS"]=59;[59]="CDS"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6280 | ["CDNSKEY"]=60;[60]="CDNSKEY"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6281 | ["OPENPGPKEY"]=61;[61]="OPENPGPKEY"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6282 | ["CSYNC"]=62;[62]="CSYNC"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6283 | ["ZONEMD"]=63;[63]="ZONEMD"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6284 | ["SVCB"]=64;[64]="SVCB"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6285 | ["HTTPS"]=65;[65]="HTTPS"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6286 | ["SPF"]=99;[99]="SPF"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6287 | ["NID"]=104;[104]="NID"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6288 | ["L32"]=105;[105]="L32"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6289 | ["L64"]=106;[106]="L64"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6290 | ["LP"]=107;[107]="LP"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6291 | ["EUI48"]=108;[108]="EUI48"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6292 | ["EUI64"]=109;[109]="EUI64"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6293 | ["TKEY"]=249;[249]="TKEY"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6294 | ["TSIG"]=250;[250]="TSIG"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6295 | ["IXFR"]=251;[251]="IXFR"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6296 | ["AXFR"]=252;[252]="AXFR"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6297 | ["MAILB"]=253;[253]="MAILB"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6298 | ["MAILA"]=254;[254]="MAILA"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6299 | ["*"]=255;[255]="*"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6300 | ["URI"]=256;[256]="URI"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6301 | ["CAA"]=257;[257]="CAA"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6302 | ["AVC"]=258;[258]="AVC"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6303 | ["DOA"]=259;[259]="DOA"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6304 | ["AMTRELAY"]=260;[260]="AMTRELAY"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6305 | ["TA"]=32768;[32768]="TA"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6306 | ["DLV"]=32769;[32769]="DLV"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6307 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6308 | errors={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6309 | [0]="NoError";["NoError"]="No Error"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6310 | [1]="FormErr";["FormErr"]="Format Error"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6311 | [2]="ServFail";["ServFail"]="Server Failure"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6312 | [3]="NXDomain";["NXDomain"]="Non-Existent Domain"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6313 | [4]="NotImp";["NotImp"]="Not Implemented"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6314 | [5]="Refused";["Refused"]="Query Refused"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6315 | [6]="YXDomain";["YXDomain"]="Name Exists when it should not"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6316 | [7]="YXRRSet";["YXRRSet"]="RR Set Exists when it should not"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6317 | [8]="NXRRSet";["NXRRSet"]="RR Set that should exist does not"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6318 | [9]="NotAuth";["NotAuth"]="Server Not Authoritative for zone"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6319 | [10]="NotZone";["NotZone"]="Name not contained in zone"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6320 | [11]="DSOTYPENI";["DSOTYPENI"]="DSO-TYPE Not Implemented"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6321 | [16]="BADVERS";["BADVERS"]="Bad OPT Version"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6322 | [17]="BADKEY";["BADKEY"]="Key not recognized"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6323 | [18]="BADTIME";["BADTIME"]="Signature out of time window"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6324 | [19]="BADMODE";["BADMODE"]="Bad TKEY Mode"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6325 | [20]="BADNAME";["BADNAME"]="Duplicate key name"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6326 | [21]="BADALG";["BADALG"]="Algorithm not supported"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6327 | [22]="BADTRUNC";["BADTRUNC"]="Bad Truncation"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6328 | [23]="BADCOOKIE";["BADCOOKIE"]="Bad/missing Server Cookie"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6329 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6330 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6331 | end) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6332 | package.preload['net.tls_luasec']=(function(...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6333 | local _ENV=_ENV; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6334 | local function e(t,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6335 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6336 | package.loaded[t]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6337 | for t=1,select("#",...)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6338 | (select(t,...))(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6339 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6340 | _ENV=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6341 | _M=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6342 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6343 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6344 | local t=require"ssl"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6345 | local h=t.newcontext; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6346 | local s=t.context or require"ssl.context"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6347 | local o=io.open; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6348 | local e={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6349 | local n={__index=e}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6350 | function e:set_sni_host(a,t,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6351 | local e,t=self._builder:clone():apply({ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6352 | certificate=t, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6353 | key=e, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6354 | }):build(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6355 | if not e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6356 | return false,t |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6357 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6358 | self._sni_contexts[a]=e._inner |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6359 | return true,nil |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6360 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6361 | function e:remove_sni_host(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6362 | self._sni_contexts[e]=nil |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6363 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6364 | function e:wrap(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6365 | local e,t,a=pcall(t.wrap,e,self._inner); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6366 | if not e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6367 | return nil,a |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6368 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6369 | return t,nil |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6370 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6371 | local function i(e,i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6372 | if type(e.dhparam)=="string"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6373 | local t,a=o(e.dhparam); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6374 | if not t then return nil,"Could not open DH parameters: "..a end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6375 | local a=t:read("*a"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6376 | t:close(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6377 | e.dhparam=function()return a;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6378 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6379 | local t,a=h(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6380 | if not t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6381 | return nil,a |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6382 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6383 | if t and e.ciphers then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6384 | local o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6385 | o,a=s.setcipher(t,e.ciphers); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6386 | if not o then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6387 | return nil,a |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6388 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6389 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6390 | return setmetatable({ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6391 | _inner=t, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6392 | _builder=i, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6393 | _sni_contexts={}, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6394 | },n),nil |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6395 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6396 | return{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6397 | new_context=i, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6398 | }; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6399 | end) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6400 | package.preload['util.sasl.scram']=(function(...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6401 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6402 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6403 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6404 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6405 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6406 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6407 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6408 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6409 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6410 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6411 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6412 | local n,m=require"mime".b64,require"mime".unb64; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6413 | local t=require"util.hashes"; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6414 | local a=require"bit"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6415 | local d=require"util.random"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6416 | local p=tonumber; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6417 | local s,e=string.char,string.byte; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6418 | local i=string.gsub; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6419 | local h=a.bxor; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6420 | local function r(a,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6421 | return(i(a,"()(.)",function(a,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6422 | return s(h(e(o),e(t,a))) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6423 | end)); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6424 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6425 | local f,t=t.sha1,t.hmac_sha1; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6426 | local function w(o,e,i) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6427 | local e=t(o,e.."\0\0\0\1"); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6428 | local a=e; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6429 | for i=2,i do |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6430 | e=t(o,e); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6431 | a=r(a,e); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6432 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6433 | return a; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6434 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6435 | local function y(e) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6436 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6437 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6438 | local function a(e) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6439 | return(i(e,"[,=]",{[","]="=2C",["="]="=3D"})); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6440 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6441 | local function s(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6442 | if e:ssl()then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6443 | local e=e:socket(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6444 | if e.info and e:info().protocol=="TLSv1.3"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6445 | if e.exportkeyingmaterial then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6446 | return"p=tls-exporter",e:exportkeyingmaterial("EXPORTER-Channel-Binding",32,""); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6447 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6448 | elseif e.getfinished then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6449 | return"p=tls-unique",e:getfinished(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6450 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6451 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6452 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6453 | local function h(e,o) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6454 | local a="n="..a(e.username); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6455 | local i=n(d.bytes(15)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6456 | local h="r="..i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6457 | local l=a..","..h; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6458 | local d=""; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6459 | local a="n"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6460 | if o=="SCRAM-SHA-1-PLUS"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6461 | a,d=s(e.conn); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6462 | elseif s(e.conn)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6463 | a="y"; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6464 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6465 | local s=a..",,"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6466 | local a=s..l; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6467 | local a,u=coroutine.yield(a); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6468 | if a~="challenge"then return false end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6469 | local a,o,c=u:match("(r=[^,]+),s=([^,]*),i=(%d+)"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6470 | local c=p(c); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6471 | o=m(o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6472 | if not a or not o or not c then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6473 | return false,"Could not parse server_first_message"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6474 | elseif a:find(i,3,true)~=3 then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6475 | return false,"nonce sent by server does not match our nonce"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6476 | elseif a==h then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6477 | return false,"server did not append s-nonce to nonce"; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6478 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6479 | local i=s..d; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6480 | local i="c="..n(i); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6481 | local h=i..","..a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6482 | local i; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6483 | local a; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6484 | local s; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6485 | if e.client_key and e.server_key then |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6486 | a=e.client_key; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6487 | s=e.server_key; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6488 | else |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6489 | if e.salted_password then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6490 | i=e.salted_password; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6491 | elseif e.password then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6492 | i=w(y(e.password),o,c); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6493 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6494 | s=t(i,"Server Key"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6495 | a=t(i,"Client Key"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6496 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6497 | local o=f(a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6498 | local e=l..","..u..","..h; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6499 | local o=t(o,e); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6500 | local a=r(a,o); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6501 | local t=t(s,e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6502 | local e="p="..n(a); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6503 | local e=h..","..e; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6504 | local e,a=coroutine.yield(e); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6505 | if e~="success"then return false,"success-expected"end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6506 | local e=a:match("v=([^,]+)"); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6507 | if m(e)~=t then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6508 | return false,"server signature did not match"; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6509 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6510 | return true; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6511 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6512 | return function(e,t) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6513 | if e.username and(e.password or(e.client_key or e.server_key))then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6514 | if t=="SCRAM-SHA-1"then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6515 | return h,99; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6516 | elseif t=="SCRAM-SHA-1-PLUS"then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6517 | if s(e.conn)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6518 | return h,100; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6519 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6520 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6521 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6522 | end |
12 | 6523 | end) |
6524 | package.preload['util.sasl.plain']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6525 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6526 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6527 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6528 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6529 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6530 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6531 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6532 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6533 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6534 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6535 | end |
12 | 6536 | return function(e,t) |
6537 | if t=="PLAIN"and e.username and e.password then | |
6538 | return function(e) | |
6539 | return"success"==coroutine.yield("\0"..e.username.."\0"..e.password); | |
6540 | end,5; | |
6541 | end | |
6542 | end | |
6543 | end) | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6544 | package.preload['util.sasl.anonymous']=(function(...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6545 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6546 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6547 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6548 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6549 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6550 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6551 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6552 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6553 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6554 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6555 | end |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6556 | return function(t,e) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6557 | if e=="ANONYMOUS"then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6558 | return function() |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6559 | return coroutine.yield()=="success"; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6560 | end,0; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6561 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6562 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6563 | end) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6564 | package.preload['util.sasl.oauthbearer']=(function(...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6565 | local _ENV=_ENV; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6566 | local function e(t,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6567 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6568 | package.loaded[t]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6569 | for t=1,select("#",...)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6570 | (select(t,...))(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6571 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6572 | _ENV=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6573 | _M=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6574 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6575 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6576 | return function(a,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6577 | if e=="OAUTHBEARER"and a.username then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6578 | return function(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6579 | local t=e.bearer_token and("Bearer "..e.bearer_token)or""; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6580 | local t,a=coroutine.yield("n,a="..e.username.."@"..e.host..",\001auth="..t.."\001"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6581 | if t=="success"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6582 | return true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6583 | elseif t=="challenge"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6584 | e:event("oauth-failure",{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6585 | json=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6586 | }); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6587 | if coroutine.yield("\001")~="failure"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6588 | error("Unexpected SASL state: expected failure after challenge"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6589 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6590 | return false; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6591 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6592 | end,a.bearer_token and 6 or 4; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6593 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6594 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6595 | end) |
12 | 6596 | package.preload['verse.plugins.tls']=(function(...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6597 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6598 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6599 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6600 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6601 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6602 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6603 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6604 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6605 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6606 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6607 | end |
12 | 6608 | local a=require"verse"; |
6609 | local t="urn:ietf:params:xml:ns:xmpp-tls"; | |
6610 | function a.plugins.tls(e) | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6611 | local function i(o) |
12 | 6612 | if e.authenticated then return;end |
6613 | if o:get_child("starttls",t)and e.conn.starttls then | |
6614 | e:debug("Negotiating TLS..."); | |
6615 | e:send(a.stanza("starttls",{xmlns=t})); | |
6616 | return true; | |
6617 | elseif not e.conn.starttls and not e.secure then | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6618 | e:warn("SSL library (LuaSec) not loaded, so TLS not available"); |
12 | 6619 | elseif not e.secure then |
6620 | e:debug("Server doesn't offer TLS :("); | |
6621 | end | |
6622 | end | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6623 | local function o(t) |
12 | 6624 | if t.name=="proceed"then |
6625 | e:debug("Server says proceed, handshake starting..."); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6626 | local t=a.tls_builder(".") |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6627 | :apply({mode="client",protocol="sslv23",options="no_sslv2",capath="/etc/ssl/certs"}) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6628 | :apply(e.ssl or{}); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6629 | e.conn:starttls(t:build(),true); |
12 | 6630 | end |
6631 | end | |
6632 | local function a(t) | |
6633 | if t=="ssl-handshake-complete"then | |
6634 | e.secure=true; | |
6635 | e:debug("Re-opening stream..."); | |
6636 | e:reopen(); | |
6637 | end | |
6638 | end | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6639 | e:hook("stream-features",i,400); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6640 | e:hook("stream/"..t,o); |
12 | 6641 | e:hook("status",a,400); |
6642 | return true; | |
6643 | end | |
6644 | end) | |
6645 | package.preload['verse.plugins.sasl']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6646 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6647 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6648 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6649 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6650 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6651 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6652 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6653 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6654 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6655 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6656 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6657 | local i=require"verse"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6658 | local h,r=require"mime".b64,require"mime".unb64; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6659 | local o="urn:ietf:params:xml:ns:xmpp-sasl"; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6660 | function i.plugins.sasl(e) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6661 | local function d(t) |
12 | 6662 | if e.authenticated then return;end |
6663 | e:debug("Authenticating with SASL..."); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6664 | local t=t:get_child("mechanisms",o); |
12 | 6665 | if not t then return end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6666 | local a={}; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6667 | local n={}; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6668 | local s={}; |
12 | 6669 | for t in t:childtags("mechanism")do |
6670 | t=t:get_text(); | |
6671 | e:debug("Server offers %s",t); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6672 | s[t]=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6673 | if not a[t]then |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6674 | local i=t:match("[^-]+"); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6675 | local s,o=pcall(require,"util.sasl."..i:lower()); |
12 | 6676 | if s then |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6677 | e:debug("Loaded SASL %s module",i); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6678 | a[t],n[t]=o(e,t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6679 | elseif not tostring(o):match("not found")then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6680 | e:debug("Loading failed: %s",tostring(o)); |
12 | 6681 | end |
6682 | end | |
6683 | end | |
6684 | local t={}; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6685 | for e in pairs(a)do |
12 | 6686 | table.insert(t,e); |
6687 | end | |
6688 | if not t[1]then | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6689 | e:event("authentication-failure",{condition="no-supported-sasl-mechanisms",mechanisms=s}); |
12 | 6690 | e:close(); |
6691 | return; | |
6692 | end | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6693 | table.sort(t,function(t,e)return n[t]>n[e];end); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6694 | local t,n=t[1]; |
12 | 6695 | e:debug("Selecting %s mechanism...",t); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6696 | e.sasl_mechanism=coroutine.wrap(a[t]); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6697 | n=e:sasl_mechanism(t); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6698 | local t=i.stanza("auth",{xmlns=o,mechanism=t}); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6699 | if n then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6700 | t:text(h(n)); |
12 | 6701 | end |
6702 | e:send(t); | |
6703 | return true; | |
6704 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6705 | local function a(t) |
12 | 6706 | if t.name=="failure"then |
6707 | local a=t.tags[1]; | |
6708 | local t=t:get_child_text("text"); | |
6709 | e:event("authentication-failure",{condition=a.name,text=t}); | |
6710 | e:close(); | |
6711 | return false; | |
6712 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6713 | local t,a=e.sasl_mechanism(t.name,r(t:get_text())); |
12 | 6714 | if not t then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6715 | e:event("authentication-failure",{condition=a}); |
12 | 6716 | e:close(); |
6717 | return false; | |
6718 | elseif t==true then | |
6719 | e:event("authentication-success"); | |
6720 | e.authenticated=true | |
6721 | e:reopen(); | |
6722 | else | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6723 | e:send(i.stanza("response",{xmlns=o}):text(h(t))); |
12 | 6724 | end |
6725 | return true; | |
6726 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6727 | e:hook("stream-features",d,300); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6728 | e:hook("stream/"..o,a); |
12 | 6729 | return true; |
6730 | end | |
6731 | end) | |
6732 | package.preload['verse.plugins.bind']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6733 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6734 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6735 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6736 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6737 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6738 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6739 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6740 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6741 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6742 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6743 | end |
12 | 6744 | local t=require"verse"; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6745 | local i=require"util.jid"; |
12 | 6746 | local a="urn:ietf:params:xml:ns:xmpp-bind"; |
6747 | function t.plugins.bind(e) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6748 | local function o(o) |
12 | 6749 | if e.bound then return;end |
6750 | e:debug("Binding resource..."); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6751 | e:send_iq(t.iq({id="bind",type="set"}):tag("bind",{xmlns=a}):tag("resource"):text(e.resource), |
12 | 6752 | function(t) |
6753 | if t.attr.type=="result"then | |
6754 | local t=t | |
6755 | :get_child("bind",a) | |
6756 | :get_child_text("jid"); | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6757 | e.username,e.host,e.resource=i.split(t); |
12 | 6758 | e.jid,e.bound=t,true; |
6759 | e:event("bind-success",{jid=t}); | |
6760 | elseif t.attr.type=="error"then | |
6761 | local a=t:child_with_name("error"); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6762 | local t,a,o=t:get_error(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6763 | e:event("bind-failure",{error=a,text=o,type=t}); |
12 | 6764 | end |
6765 | end); | |
6766 | end | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6767 | e:hook("stream-features",o,200); |
12 | 6768 | return true; |
6769 | end | |
6770 | end) | |
6771 | package.preload['verse.plugins.smacks']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6772 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6773 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6774 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6775 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6776 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6777 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6778 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6779 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6780 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6781 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6782 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6783 | local n=require"verse"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6784 | local r=require"socket".gettime; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6785 | local s="urn:xmpp:sm:3"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6786 | function n.plugins.smacks(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6787 | local t=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6788 | local a=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6789 | local h=nil; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6790 | local o; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6791 | local i=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6792 | local function m(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6793 | if i and(t.attr.xmlns=="jabber:client"or not t.attr.xmlns)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6794 | i=i+1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6795 | e:debug("Increasing handled stanzas to %d for %s",i,t:top_tag()); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6796 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6797 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6798 | local function c(a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6799 | if t and(a.name and not a.attr.xmlns)then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6800 | t[#t+1]=tostring(a); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6801 | h=r(); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6802 | if not o then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6803 | o=true; |
12 | 6804 | e:debug("Waiting to send ack request..."); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6805 | n.add_task(1,function() |
12 | 6806 | if#t==0 then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6807 | o=false; |
12 | 6808 | return; |
6809 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6810 | local a=r()-h; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6811 | if a<1 and#t<10 then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6812 | return 1-a; |
12 | 6813 | end |
6814 | e:debug("Time up, sending <r>..."); | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6815 | o=false; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6816 | e:send(n.stanza("r",{xmlns=s})); |
12 | 6817 | end); |
6818 | end | |
6819 | end | |
6820 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6821 | local function u() |
12 | 6822 | e:debug("smacks: connection lost"); |
6823 | e.stream_management_supported=nil; | |
6824 | if e.resumption_token then | |
6825 | e:debug("smacks: have resumption token, reconnecting in 1s..."); | |
6826 | e.authenticated=nil; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6827 | n.add_task(1,function() |
12 | 6828 | e:connect(e.connect_host or e.host,e.connect_port or 5222); |
6829 | end); | |
6830 | return true; | |
6831 | end | |
6832 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6833 | local function d() |
12 | 6834 | e.resumption_token=nil; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6835 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6836 | local function l(o) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6837 | if o.name=="r"then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6838 | e:debug("Ack requested... acking %d handled stanzas",i); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6839 | e:send(n.stanza("a",{xmlns=s,h=tostring(i)})); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6840 | elseif o.name=="a"then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6841 | local o=tonumber(o.attr.h); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6842 | if o>a then |
12 | 6843 | local i=#t; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6844 | for a=a+1,o do |
12 | 6845 | table.remove(t,1); |
6846 | end | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6847 | e:debug("Received ack: New ack: "..o.." Last ack: "..a.." Unacked stanzas now: "..#t.." (was "..i..")"); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6848 | a=o; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6849 | elseif o<a then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6850 | e:warn("Received bad ack for "..o.." when last ack was "..a); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6851 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6852 | elseif o.name=="enabled"then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6853 | i=0; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6854 | e.pre_smacks_features=nil; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6855 | if o.attr.id then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6856 | e.resumption_token=o.attr.id; |
12 | 6857 | end |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6858 | elseif o.name=="resumed"then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6859 | e.pre_smacks_features=nil; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6860 | local o=tonumber(o.attr.h); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6861 | if o>a then |
12 | 6862 | local i=#t; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6863 | for a=a+1,o do |
12 | 6864 | table.remove(t,1); |
6865 | end | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6866 | e:debug("Received ack: New ack: "..o.." Last ack: "..a.." Unacked stanzas now: "..#t.." (was "..i..")"); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6867 | a=o; |
12 | 6868 | end |
6869 | for a=1,#t do | |
6870 | e:send(t[a]); | |
6871 | end | |
6872 | t={}; | |
6873 | e:debug("Resumed successfully"); | |
6874 | e:event("resumed"); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6875 | elseif o.name=="failed"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6876 | e.bound=nil |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6877 | e.smacks=nil |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6878 | a=nil |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6879 | i=nil |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6880 | t={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6881 | local t=e.pre_smacks_features; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6882 | e.pre_smacks_features=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6883 | e:event("stream-features",t); |
12 | 6884 | else |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6885 | e:warn("Don't know how to handle "..s.."/"..o.name); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6886 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6887 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6888 | local function o() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6889 | if e.stream_management_supported and not e.smacks then |
12 | 6890 | e:debug("smacks: sending enable"); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6891 | t={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6892 | a=0; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6893 | h=r(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6894 | e:send(n.stanza("enable",{xmlns=s,resume="true"})); |
12 | 6895 | e.smacks=true; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6896 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6897 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6898 | local function a(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6899 | if t:get_child("sm",s)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6900 | e.pre_smacks_features=t; |
12 | 6901 | e.stream_management_supported=true; |
6902 | if e.smacks and e.bound then | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6903 | e:debug("Resuming stream with %d handled stanzas",i); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6904 | e:send(n.stanza("resume",{xmlns=s, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6905 | h=tostring(i),previd=e.resumption_token})); |
12 | 6906 | return true; |
6907 | else | |
6908 | end | |
6909 | end | |
6910 | end | |
6911 | e:hook("stream-features",a,250); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6912 | e:hook("stream/"..s,l); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6913 | e:hook("bind-success",o,1); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6914 | e:hook("stanza",m); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6915 | e:hook("outgoing",c); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6916 | e:hook("closed",d,100); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6917 | e:hook("disconnected",u,100); |
12 | 6918 | end |
6919 | end) | |
6920 | package.preload['verse.plugins.keepalive']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6921 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6922 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6923 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6924 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6925 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6926 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6927 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6928 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6929 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6930 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6931 | end |
12 | 6932 | local t=require"verse"; |
6933 | function t.plugins.keepalive(e) | |
6934 | e.keepalive_timeout=e.keepalive_timeout or 300; | |
6935 | t.add_task(e.keepalive_timeout,function() | |
6936 | e.conn:write(" "); | |
6937 | return e.keepalive_timeout; | |
6938 | end); | |
6939 | end | |
6940 | end) | |
6941 | package.preload['verse.plugins.disco']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6942 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6943 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6944 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6945 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6946 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6947 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6948 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6949 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6950 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6951 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6952 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6953 | local t=require"verse"; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6954 | local e=require("mime").b64; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
6955 | local e=require("util.hashes").sha1; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6956 | local s=require"util.caps".calculate_hash; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6957 | local h="http://jabber.org/protocol/caps"; |
12 | 6958 | local e="http://jabber.org/protocol/disco"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6959 | local o=e.."#info"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6960 | local i=e.."#items"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6961 | function t.plugins.disco(e) |
12 | 6962 | e:add_plugin("presence"); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6963 | local a={ |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6964 | __index=function(t,e) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6965 | local a={identities={},features={}}; |
12 | 6966 | if e=="identities"or e=="features"then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6967 | return t[false][e] |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6968 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6969 | t[e]=a; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6970 | return a; |
12 | 6971 | end, |
6972 | }; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6973 | local n={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6974 | __index=function(t,a) |
12 | 6975 | local e={}; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6976 | t[a]=e; |
12 | 6977 | return e; |
6978 | end, | |
6979 | }; | |
6980 | e.disco={ | |
6981 | cache={}, | |
6982 | info=setmetatable({ | |
6983 | [false]={ | |
6984 | identities={ | |
6985 | {category='client',type='pc',name='Verse'}, | |
6986 | }, | |
6987 | features={ | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6988 | [h]=true, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6989 | [o]=true, |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
6990 | [i]=true, |
12 | 6991 | }, |
6992 | }, | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6993 | },a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6994 | items=setmetatable({[false]={}},n); |
12 | 6995 | }; |
6996 | e.caps={} | |
6997 | e.caps.node='http://code.matthewwild.co.uk/verse/' | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6998 | local function r(a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
6999 | local i=e.disco.info[a or false]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7000 | if a and a==e.caps.node.."#"..e.caps.hash then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7001 | i=e.disco.info[false]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7002 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7003 | local n,i=i.identities,i.features |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7004 | local e=t.stanza("query",{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7005 | xmlns=o, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7006 | node=a, |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7007 | }); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7008 | for a,t in pairs(n)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7009 | e:tag('identity',t):up() |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7010 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7011 | for t in pairs(i)do |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7012 | e:tag('feature',{var=t}):up() |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7013 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7014 | return e; |
12 | 7015 | end |
7016 | setmetatable(e.caps,{ | |
7017 | __call=function(...) | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7018 | local a=s(r()) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7019 | e.caps.hash=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7020 | return t.stanza('c',{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7021 | xmlns=h, |
12 | 7022 | hash='sha-1', |
7023 | node=e.caps.node, | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7024 | ver=a |
12 | 7025 | }) |
7026 | end | |
7027 | }) | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7028 | function e:set_identity(e,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7029 | self.disco.info[t or false].identities={e}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7030 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7031 | function e:add_identity(t,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7032 | local e=self.disco.info[e or false].identities; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7033 | e[#e+1]=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7034 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7035 | function e:add_disco_feature(e,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7036 | local e=e.var or e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7037 | self.disco.info[t or false].features[e]=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7038 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7039 | function e:remove_disco_feature(e,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7040 | local e=e.var or e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7041 | self.disco.info[t or false].features[e]=nil; |
12 | 7042 | end |
7043 | function e:add_disco_item(t,e) | |
7044 | local e=self.disco.items[e or false]; | |
7045 | e[#e+1]=t; | |
7046 | end | |
7047 | function e:remove_disco_item(a,e) | |
7048 | local e=self.disco.items[e or false]; | |
7049 | for t=#e,1,-1 do | |
7050 | if e[t]==a then | |
7051 | table.remove(e,t); | |
7052 | end | |
7053 | end | |
7054 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7055 | function e:jid_has_identity(t,e,a) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7056 | local o=self.disco.cache[t]; |
12 | 7057 | if not o then |
7058 | return nil,"no-cache"; | |
7059 | end | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7060 | local t=self.disco.cache[t].identities; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7061 | if a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7062 | return t[e.."/"..a]or false; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7063 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7064 | for t in pairs(t)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7065 | if t:match("^(.*)/")==e then |
12 | 7066 | return true; |
7067 | end | |
7068 | end | |
7069 | end | |
7070 | function e:jid_supports(e,t) | |
7071 | local e=self.disco.cache[e]; | |
7072 | if not e or not e.features then | |
7073 | return nil,"no-cache"; | |
7074 | end | |
7075 | return e.features[t]or false; | |
7076 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7077 | function e:get_local_services(o,a) |
12 | 7078 | local e=self.disco.cache[self.host]; |
7079 | if not(e)or not(e.items)then | |
7080 | return nil,"no-cache"; | |
7081 | end | |
7082 | local t={}; | |
7083 | for i,e in ipairs(e.items)do | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7084 | if self:jid_has_identity(e.jid,o,a)then |
12 | 7085 | table.insert(t,e.jid); |
7086 | end | |
7087 | end | |
7088 | return t; | |
7089 | end | |
7090 | function e:disco_local_services(a) | |
7091 | self:disco_items(self.host,nil,function(t) | |
7092 | if not t then | |
7093 | return a({}); | |
7094 | end | |
7095 | local e=0; | |
7096 | local function o() | |
7097 | e=e-1; | |
7098 | if e==0 then | |
7099 | return a(t); | |
7100 | end | |
7101 | end | |
7102 | for a,t in ipairs(t)do | |
7103 | if t.jid then | |
7104 | e=e+1; | |
7105 | self:disco_info(t.jid,nil,o); | |
7106 | end | |
7107 | end | |
7108 | if e==0 then | |
7109 | return a(t); | |
7110 | end | |
7111 | end); | |
7112 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7113 | function e:disco_info(e,a,h) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7114 | local t=t.iq({to=e,type="get"}) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7115 | :tag("query",{xmlns=o,node=a}); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7116 | self:send_iq(t,function(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7117 | if t.attr.type=="error"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7118 | return h(nil,t:get_error()); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7119 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7120 | local i,s,n={},{},{}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7121 | for e in t:get_child("query",o):childtags()do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7122 | self:debug("DISCO {%s}%s",e.attr.xmlns or"",e.name); |
12 | 7123 | if e.name=="identity"then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7124 | i[e.attr.category.."/"..e.attr.type]=e.attr.name or true; |
12 | 7125 | elseif e.name=="feature"then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7126 | s[e.attr.var]=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7127 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7128 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7129 | for e in t:get_child("query",o):childtags("x","jabber:x:data")do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7130 | self:debug("DISCO {%s}%s",e.attr.xmlns or"",e.name); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7131 | local t=e:get_child_with_attr("field",nil,"var","FORM_TYPE"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7132 | local a=t and t:get_child_text("value"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7133 | self:debug("FORM: %s (%s)",a,t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7134 | if a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7135 | n[a]=e; |
12 | 7136 | end |
7137 | end | |
7138 | if not self.disco.cache[e]then | |
7139 | self.disco.cache[e]={nodes={}}; | |
7140 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7141 | if a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7142 | if not self.disco.cache[e].nodes[a]then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7143 | self.disco.cache[e].nodes[a]={nodes={}}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7144 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7145 | self.disco.cache[e].nodes[a].identities=i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7146 | self.disco.cache[e].nodes[a].features=s; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7147 | self.disco.cache[e].nodes[a].extended=n; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7148 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7149 | self.disco.cache[e].identities=i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7150 | self.disco.cache[e].features=s; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7151 | self.disco.cache[e].extended=n; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7152 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7153 | return h(self.disco.cache[e]); |
12 | 7154 | end); |
7155 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7156 | function e:disco_items(a,o,n) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7157 | local t=t.iq({to=a,type="get"}) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7158 | :tag("query",{xmlns=i,node=o}); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7159 | self:send_iq(t,function(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7160 | if t.attr.type=="error"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7161 | return n(nil,t:get_error()); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7162 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7163 | local e={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7164 | for t in t:get_child("query",i):childtags()do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7165 | if t.name=="item"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7166 | table.insert(e,{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7167 | name=t.attr.name; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7168 | jid=t.attr.jid; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7169 | node=t.attr.node; |
12 | 7170 | }); |
7171 | end | |
7172 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7173 | if not self.disco.cache[a]then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7174 | self.disco.cache[a]={nodes={}}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7175 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7176 | if o then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7177 | if not self.disco.cache[a].nodes[o]then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7178 | self.disco.cache[a].nodes[o]={nodes={}}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7179 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7180 | self.disco.cache[a].nodes[o].items=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7181 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7182 | self.disco.cache[a].items=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7183 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7184 | return n(e); |
12 | 7185 | end); |
7186 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7187 | e:hook("iq/"..o,function(a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7188 | local o=a.tags[1]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7189 | if a.attr.type=='get'and o.name=="query"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7190 | local o=r(o.attr.node); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7191 | local t=t.reply(a):add_child(o); |
12 | 7192 | e:send(t); |
7193 | return true | |
7194 | end | |
7195 | end); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7196 | e:hook("iq/"..i,function(a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7197 | local o=a.tags[1]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7198 | if a.attr.type=='get'and o.name=="query"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7199 | local n=e.disco.items[o.attr.node or false]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7200 | local t=t.reply(a):tag('query',{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7201 | xmlns=i, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7202 | node=o.attr.node |
12 | 7203 | }) |
7204 | for a=1,#n do | |
7205 | t:tag('item',n[a]):up() | |
7206 | end | |
7207 | e:send(t); | |
7208 | return true | |
7209 | end | |
7210 | end); | |
7211 | local t; | |
7212 | e:hook("ready",function() | |
7213 | if t then return;end | |
7214 | t=true; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7215 | local function o(t) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7216 | local a=e.disco.cache[t]; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7217 | if a then |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7218 | for a in pairs(a.identities)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7219 | local o,a=a:match("^(.*)/(.*)$"); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7220 | print(t,o,a) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7221 | e:event("disco/service-discovered/"..o,{ |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7222 | type=a,jid=t; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7223 | }); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7224 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7225 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7226 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7227 | e:disco_info(e.host,nil,function() |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7228 | o(e.host); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7229 | end); |
12 | 7230 | e:disco_local_services(function(t) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7231 | for a,t in ipairs(t)do |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7232 | o(t.jid); |
12 | 7233 | end |
7234 | e:event("ready"); | |
7235 | end); | |
7236 | return true; | |
7237 | end,50); | |
7238 | e:hook("presence-out",function(t) | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7239 | t:remove_children("c",h); |
12 | 7240 | t:reset():add_child(e:caps()):reset(); |
7241 | end,10); | |
7242 | end | |
7243 | end) | |
7244 | package.preload['verse.plugins.version']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7245 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7246 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7247 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7248 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7249 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7250 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7251 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7252 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7253 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7254 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7255 | end |
12 | 7256 | local o=require"verse"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7257 | local t="jabber:iq:version"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7258 | local function a(t,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7259 | t.name=e.name; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7260 | t.version=e.version; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7261 | t.platform=e.platform; |
12 | 7262 | end |
7263 | function o.plugins.version(e) | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7264 | e.version={set=a}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7265 | e:hook("iq/"..t,function(a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7266 | if a.attr.type~="get"then return;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7267 | local t=o.reply(a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7268 | :tag("query",{xmlns=t}); |
12 | 7269 | if e.version.name then |
7270 | t:tag("name"):text(tostring(e.version.name)):up(); | |
7271 | end | |
7272 | if e.version.version then | |
7273 | t:tag("version"):text(tostring(e.version.version)):up() | |
7274 | end | |
7275 | if e.version.platform then | |
7276 | t:tag("os"):text(e.version.platform); | |
7277 | end | |
7278 | e:send(t); | |
7279 | return true; | |
7280 | end); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7281 | function e:query_version(i,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7282 | a=a or function(e)return self:event("version/response",e);end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7283 | self:send_iq(o.iq({type="get",to=i}) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7284 | :tag("query",{xmlns=t}), |
12 | 7285 | function(o) |
7286 | if o.attr.type=="result"then | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7287 | local e=o:get_child("query",t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7288 | local t=e and e:get_child_text("name"); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7289 | local o=e and e:get_child_text("version"); |
12 | 7290 | local e=e and e:get_child_text("os"); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7291 | a({ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7292 | name=t; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7293 | version=o; |
12 | 7294 | platform=e; |
7295 | }); | |
7296 | else | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7297 | local o,e,t=o:get_error(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7298 | a({ |
12 | 7299 | error=true; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7300 | condition=e; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7301 | text=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7302 | type=o; |
12 | 7303 | }); |
7304 | end | |
7305 | end); | |
7306 | end | |
7307 | return true; | |
7308 | end | |
7309 | end) | |
7310 | package.preload['verse.plugins.ping']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7311 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7312 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7313 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7314 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7315 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7316 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7317 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7318 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7319 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7320 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7321 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7322 | local a=require"verse"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7323 | local s=require"socket".gettime; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7324 | local o=require"util.id".short; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7325 | local i="urn:xmpp:ping"; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7326 | function a.plugins.ping(e) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7327 | function e:ping(t,n) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7328 | local h=s(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7329 | local o=o(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7330 | local a=a.iq{id=o,to=t,type="get"}:tag("ping",{xmlns=i}); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7331 | e:send_iq(a, |
12 | 7332 | function(e) |
7333 | if e.attr.type=="error"then | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7334 | local o,e,a=e:get_error(); |
12 | 7335 | if e~="service-unavailable"and e~="feature-not-implemented"then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7336 | n(nil,t,{type=o,condition=e,text=a}); |
12 | 7337 | return; |
7338 | end | |
7339 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7340 | n(s()-h,t); |
12 | 7341 | end); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7342 | return o; |
12 | 7343 | end |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7344 | e:hook("iq/"..i,function(t) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7345 | return e:send(a.reply(t)); |
12 | 7346 | end); |
7347 | return true; | |
7348 | end | |
7349 | end) | |
7350 | package.preload['verse.plugins.uptime']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7351 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7352 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7353 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7354 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7355 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7356 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7357 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7358 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7359 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7360 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7361 | end |
12 | 7362 | local o=require"verse"; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
7363 | local t="jabber:iq:last"; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7364 | local function a(e,t) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7365 | e.starttime=t.starttime; |
12 | 7366 | end |
7367 | function o.plugins.uptime(e) | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
7368 | e.uptime={set=a}; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
7369 | e:hook("iq/"..t,function(a) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
7370 | if a.attr.type~="get"then return;end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
7371 | local t=o.reply(a) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
7372 | :tag("query",{seconds=tostring(os.difftime(os.time(),e.uptime.starttime)),xmlns=t}); |
12 | 7373 | e:send(t); |
7374 | return true; | |
7375 | end); | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
7376 | function e:query_uptime(i,a) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
7377 | a=a or function(t)return e:event("uptime/response",t);end |
12 | 7378 | e:send_iq(o.iq({type="get",to=i}) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
7379 | :tag("query",{xmlns=t}), |
12 | 7380 | function(e) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
7381 | local t=e:get_child("query",t); |
12 | 7382 | if e.attr.type=="result"then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
7383 | local e=tonumber(t.attr.seconds); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
7384 | a({ |
12 | 7385 | seconds=e or nil; |
7386 | }); | |
7387 | else | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7388 | local o,e,t=e:get_error(); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
7389 | a({ |
12 | 7390 | error=true; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7391 | condition=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7392 | text=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7393 | type=o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7394 | }); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7395 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7396 | end); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7397 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7398 | return true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7399 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7400 | end) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7401 | package.preload['verse.plugins.time']=(function(...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7402 | local _ENV=_ENV; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7403 | local function e(t,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7404 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7405 | package.loaded[t]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7406 | for t=1,select("#",...)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7407 | (select(t,...))(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7408 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7409 | _ENV=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7410 | _M=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7411 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7412 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7413 | local e=require"verse"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7414 | local i=require"util.datetime"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7415 | local o="urn:xmpp:time"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7416 | function e.plugins.time(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7417 | function t:query_time(a,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7418 | t=t or function(e)return self:event("time/response",e);end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7419 | self:send_iq(e.iq({type="get",to=a}) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7420 | :tag("time",{xmlns=o}), |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7421 | function(a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7422 | if a.attr.type=="result"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7423 | local e=a:get_child("time",o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7424 | local e={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7425 | tzo=e:get_child_text("tzo"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7426 | utc=e:get_child_text("utc"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7427 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7428 | if e.utc then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7429 | e.timestamp=i.parse(e.utc); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7430 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7431 | t(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7432 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7433 | local o,a,e=a:get_error(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7434 | t({ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7435 | error=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7436 | condition=a; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7437 | text=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7438 | type=o; |
12 | 7439 | }); |
7440 | end | |
7441 | end); | |
7442 | end | |
7443 | return true; | |
7444 | end | |
7445 | end) | |
7446 | package.preload['verse.plugins.blocking']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7447 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7448 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7449 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7450 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7451 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7452 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7453 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7454 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7455 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7456 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7457 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7458 | local a=require"verse"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7459 | local o="urn:xmpp:blocking"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7460 | function a.plugins.blocking(e) |
12 | 7461 | e.blocking={}; |
7462 | function e.blocking:block_jid(i,t) | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7463 | e:send_iq(a.iq{type="set"} |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7464 | :tag("block",{xmlns=o}) |
12 | 7465 | :tag("item",{jid=i}) |
7466 | ,function()return t and t(true);end | |
7467 | ,function()return t and t(false);end | |
7468 | ); | |
7469 | end | |
7470 | function e.blocking:unblock_jid(i,t) | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7471 | e:send_iq(a.iq{type="set"} |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7472 | :tag("unblock",{xmlns=o}) |
12 | 7473 | :tag("item",{jid=i}) |
7474 | ,function()return t and t(true);end | |
7475 | ,function()return t and t(false);end | |
7476 | ); | |
7477 | end | |
7478 | function e.blocking:unblock_all_jids(t) | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7479 | e:send_iq(a.iq{type="set"} |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7480 | :tag("unblock",{xmlns=o}) |
12 | 7481 | ,function()return t and t(true);end |
7482 | ,function()return t and t(false);end | |
7483 | ); | |
7484 | end | |
7485 | function e.blocking:get_blocked_jids(t) | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7486 | e:send_iq(a.iq{type="get"} |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7487 | :tag("blocklist",{xmlns=o}) |
12 | 7488 | ,function(e) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7489 | local a=e:get_child("blocklist",o); |
12 | 7490 | if not a then return t and t(false);end |
7491 | local e={}; | |
7492 | for t in a:childtags()do | |
7493 | e[#e+1]=t.attr.jid; | |
7494 | end | |
7495 | return t and t(e); | |
7496 | end | |
7497 | ,function(e)return t and t(false);end | |
7498 | ); | |
7499 | end | |
7500 | end | |
7501 | end) | |
7502 | package.preload['verse.plugins.jingle']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7503 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7504 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7505 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7506 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7507 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7508 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7509 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7510 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7511 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7512 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7513 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7514 | local a=require"verse"; |
12 | 7515 | local e=require"util.timer"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7516 | local n=require"util.id".short; |
12 | 7517 | local i="urn:xmpp:jingle:1"; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7518 | local r="urn:xmpp:jingle:errors:1"; |
12 | 7519 | local t={}; |
7520 | t.__index=t; | |
7521 | local e={}; | |
7522 | local e={}; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7523 | function a.plugins.jingle(e) |
12 | 7524 | e:hook("ready",function() |
7525 | e:add_disco_feature(i); | |
7526 | end,10); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7527 | function e:jingle(o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7528 | return a.eventable(setmetatable(base or{ |
12 | 7529 | role="initiator"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7530 | peer=o; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7531 | sid=n(); |
12 | 7532 | stream=e; |
7533 | },t)); | |
7534 | end | |
7535 | function e:register_jingle_transport(e) | |
7536 | end | |
7537 | function e:register_jingle_content_type(e) | |
7538 | end | |
7539 | local function u(n) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7540 | local s=n:get_child("jingle",i); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7541 | local h=s.attr.sid; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7542 | local o=s.attr.action; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7543 | local h=e:event("jingle/"..h,n); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7544 | if h==true then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7545 | e:send(a.reply(n)); |
12 | 7546 | return true; |
7547 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7548 | if o~="session-initiate"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7549 | local t=a.error_reply(n,"cancel","item-not-found") |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7550 | :tag("unknown-session",{xmlns=r}):up(); |
12 | 7551 | e:send(t); |
7552 | return; | |
7553 | end | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7554 | local l=s.attr.sid; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7555 | local o=a.eventable{ |
12 | 7556 | role="receiver"; |
7557 | peer=n.attr.from; | |
7558 | sid=l; | |
7559 | stream=e; | |
7560 | }; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7561 | setmetatable(o,t); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7562 | local h; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7563 | local r,d; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7564 | for t in s:childtags()do |
12 | 7565 | if t.name=="content"and t.attr.xmlns==i then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7566 | local i=t:child_with_name("description"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7567 | local a=i.attr.xmlns; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7568 | if a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7569 | local e=e:event("jingle/content/"..a,o,i); |
12 | 7570 | if e then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7571 | r=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7572 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7573 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7574 | local a=t:child_with_name("transport"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7575 | local i=a.attr.xmlns; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7576 | d=e:event("jingle/transport/"..i,o,a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7577 | if r and d then |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7578 | h=t; |
12 | 7579 | break; |
7580 | end | |
7581 | end | |
7582 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7583 | if not r then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7584 | e:send(a.error_reply(n,"cancel","feature-not-implemented","The specified content is not supported")); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7585 | return true; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7586 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7587 | if not d then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7588 | e:send(a.error_reply(n,"cancel","feature-not-implemented","The specified transport is not supported")); |
12 | 7589 | return true; |
7590 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7591 | e:send(a.reply(n)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7592 | o.content_tag=h; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7593 | o.creator,o.name=h.attr.creator,h.attr.name; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7594 | o.content,o.transport=r,d; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7595 | function o:decline() |
12 | 7596 | end |
7597 | e:hook("jingle/"..l,function(e) | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7598 | if e.attr.from~=o.peer then |
12 | 7599 | return false; |
7600 | end | |
7601 | local e=e:get_child("jingle",i); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7602 | return o:handle_command(e); |
12 | 7603 | end); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7604 | e:event("jingle",o); |
12 | 7605 | return true; |
7606 | end | |
7607 | function t:handle_command(a) | |
7608 | local t=a.attr.action; | |
7609 | e:debug("Handling Jingle command: %s",t); | |
7610 | if t=="session-terminate"then | |
7611 | self:destroy(); | |
7612 | elseif t=="session-accept"then | |
7613 | self:handle_accepted(a); | |
7614 | elseif t=="transport-info"then | |
7615 | e:debug("Handling transport-info"); | |
7616 | self.transport:info_received(a); | |
7617 | elseif t=="transport-replace"then | |
7618 | e:error("Peer wanted to swap transport, not implemented"); | |
7619 | else | |
7620 | e:warn("Unhandled Jingle command: %s",t); | |
7621 | return nil; | |
7622 | end | |
7623 | return true; | |
7624 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7625 | function t:send_command(e,o,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7626 | local e=a.iq({to=self.peer,type="set"}) |
12 | 7627 | :tag("jingle",{ |
7628 | xmlns=i, | |
7629 | sid=self.sid, | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7630 | action=e, |
12 | 7631 | initiator=self.role=="initiator"and self.stream.jid or nil, |
7632 | responder=self.role=="responder"and self.jid or nil, | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7633 | }):add_child(o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7634 | if not t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7635 | self.stream:send(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7636 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7637 | self.stream:send_iq(e,t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7638 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7639 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7640 | function t:accept(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7641 | local a=a.iq({to=self.peer,type="set"}) |
12 | 7642 | :tag("jingle",{ |
7643 | xmlns=i, | |
7644 | sid=self.sid, | |
7645 | action="session-accept", | |
7646 | responder=e.jid, | |
7647 | }) | |
7648 | :tag("content",{creator=self.creator,name=self.name}); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7649 | local o=self.content:generate_accept(self.content_tag:child_with_name("description"),t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7650 | a:add_child(o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7651 | local t=self.transport:generate_accept(self.content_tag:child_with_name("transport"),t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7652 | a:add_child(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7653 | local t=self; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7654 | e:send_iq(a,function(a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7655 | if a.attr.type=="error"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7656 | local a,t,a=a:get_error(); |
12 | 7657 | e:error("session-accept rejected: %s",t); |
7658 | return false; | |
7659 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7660 | t.transport:connect(function(a) |
12 | 7661 | e:warn("CONNECTED (receiver)!!!"); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7662 | t.state="active"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7663 | t:event("connected",a); |
12 | 7664 | end); |
7665 | end); | |
7666 | end | |
7667 | e:hook("iq/"..i,u); | |
7668 | return true; | |
7669 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7670 | function t:offer(t,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7671 | local e=a.iq({to=self.peer,type="set"}) |
12 | 7672 | :tag("jingle",{xmlns=i,action="session-initiate", |
7673 | initiator=self.stream.jid,sid=self.sid}); | |
7674 | e:tag("content",{creator=self.role,name=t}); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7675 | local t=self.stream:event("jingle/describe/"..t,o); |
12 | 7676 | if not t then |
7677 | return false,"Unknown content type"; | |
7678 | end | |
7679 | e:add_child(t); | |
7680 | local t=self.stream:event("jingle/transport/".."urn:xmpp:jingle:transports:s5b:1",self); | |
7681 | self.transport=t; | |
7682 | e:add_child(t:generate_initiate()); | |
7683 | self.stream:debug("Hooking %s","jingle/"..self.sid); | |
7684 | self.stream:hook("jingle/"..self.sid,function(e) | |
7685 | if e.attr.from~=self.peer then | |
7686 | return false; | |
7687 | end | |
7688 | local e=e:get_child("jingle",i); | |
7689 | return self:handle_command(e) | |
7690 | end); | |
7691 | self.stream:send_iq(e,function(e) | |
7692 | if e.attr.type=="error"then | |
7693 | self.state="terminated"; | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7694 | local e,t,a=e:get_error(); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7695 | return self:event("error",{type=e,condition=t,text=a}); |
12 | 7696 | end |
7697 | end); | |
7698 | self.state="pending"; | |
7699 | end | |
7700 | function t:terminate(e) | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7701 | local e=a.stanza("reason"):tag(e or"success"); |
12 | 7702 | self:send_command("session-terminate",e,function(e) |
7703 | self.state="terminated"; | |
7704 | self.transport:disconnect(); | |
7705 | self:destroy(); | |
7706 | end); | |
7707 | end | |
7708 | function t:destroy() | |
7709 | self:event("terminated"); | |
7710 | self.stream:unhook("jingle/"..self.sid,self.handle_command); | |
7711 | end | |
7712 | function t:handle_accepted(e) | |
7713 | local e=e:child_with_name("transport"); | |
7714 | self.transport:handle_accepted(e); | |
7715 | self.transport:connect(function(e) | |
7716 | self.stream:debug("CONNECTED (initiator)!") | |
7717 | self.state="active"; | |
7718 | self:event("connected",e); | |
7719 | end); | |
7720 | end | |
7721 | function t:set_source(a,o) | |
7722 | local function t() | |
7723 | local e,i=a(); | |
7724 | if e and e~=""then | |
7725 | self.transport.conn:send(e); | |
7726 | elseif e==""then | |
7727 | return t(); | |
7728 | elseif e==nil then | |
7729 | if o then | |
7730 | self:terminate(); | |
7731 | end | |
7732 | self.transport.conn:unhook("drained",t); | |
7733 | a=nil; | |
7734 | end | |
7735 | end | |
7736 | self.transport.conn:hook("drained",t); | |
7737 | t(); | |
7738 | end | |
7739 | function t:set_sink(t) | |
7740 | self.transport.conn:hook("incoming-raw",t); | |
7741 | self.transport.conn:hook("disconnected",function(e) | |
7742 | self.stream:debug("Closing sink..."); | |
7743 | local e=e.reason; | |
7744 | if e=="closed"then e=nil;end | |
7745 | t(nil,e); | |
7746 | end); | |
7747 | end | |
7748 | end) | |
7749 | package.preload['verse.plugins.jingle_ft']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7750 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7751 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7752 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7753 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7754 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7755 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7756 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7757 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7758 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7759 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7760 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7761 | local i=require"verse"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7762 | local n=require"ltn12"; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
7763 | local s=package.config:sub(1,1); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7764 | local a="urn:xmpp:jingle:apps:file-transfer:4"; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7765 | function i.plugins.jingle_ft(t) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7766 | t:hook("ready",function() |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7767 | t:add_disco_feature(a); |
12 | 7768 | end,10); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7769 | local o={type="file"}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7770 | function o:generate_accept(t,e) |
12 | 7771 | if e and e.save_file then |
7772 | self.jingle:hook("connected",function() | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7773 | local e=n.sink.file(io.open(e.save_file,"w+")); |
12 | 7774 | self.jingle:set_sink(e); |
7775 | end); | |
7776 | end | |
7777 | return t; | |
7778 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7779 | local o={__index=o}; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7780 | t:hook("jingle/content/"..a,function(t,e) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
7781 | local e=e:get_child("file"); |
12 | 7782 | local e={ |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
7783 | name=e:get_child_text("name"); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
7784 | size=tonumber(e:get_child_text("size")); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
7785 | desc=e:get_child_text("desc"); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
7786 | date=e:get_child_text("date"); |
12 | 7787 | }; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7788 | return setmetatable({jingle=t,file=e},o); |
12 | 7789 | end); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7790 | t:hook("jingle/describe/file",function(e) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7791 | local t; |
12 | 7792 | if e.timestamp then |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7793 | t=os.date("!%Y-%m-%dT%H:%M:%SZ",e.timestamp); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7794 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7795 | return i.stanza("description",{xmlns=a}) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
7796 | :tag("file") |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
7797 | :tag("name"):text(e.filename):up() |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
7798 | :tag("size"):text(tostring(e.size)):up() |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7799 | :tag("date"):text(t):up() |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
7800 | :tag("desc"):text(e.description):up() |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
7801 | :up(); |
12 | 7802 | end); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7803 | function t:send_file(i,t) |
12 | 7804 | local e,a=io.open(t); |
7805 | if not e then return e,a;end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7806 | local o=e:seek("end",0); |
12 | 7807 | e:seek("set",0); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7808 | local a=n.source.file(e); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7809 | local e=self:jingle(i); |
12 | 7810 | e:offer("file",{ |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
7811 | filename=t:match("[^"..s.."]+$"); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7812 | size=o; |
12 | 7813 | }); |
7814 | e:hook("connected",function() | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7815 | e:set_source(a,true); |
12 | 7816 | end); |
7817 | return e; | |
7818 | end | |
7819 | end | |
7820 | end) | |
7821 | package.preload['verse.plugins.jingle_s5b']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7822 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7823 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7824 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7825 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7826 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7827 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7828 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7829 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7830 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7831 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7832 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7833 | local a=require"verse"; |
12 | 7834 | local o="urn:xmpp:jingle:transports:s5b:1"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7835 | local d="http://jabber.org/protocol/bytestreams"; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7836 | local h=require"util.hashes".sha1; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7837 | local l=require"util.id".short; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7838 | local function r(e,s) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7839 | local function n() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7840 | e:unhook("connected",n); |
12 | 7841 | return true; |
7842 | end | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7843 | local function i(t) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7844 | e:unhook("incoming-raw",i); |
12 | 7845 | if t:sub(1,2)~="\005\000"then |
7846 | return e:event("error","connection-failure"); | |
7847 | end | |
7848 | e:event("connected"); | |
7849 | return true; | |
7850 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7851 | local function o(t) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7852 | e:unhook("incoming-raw",o); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7853 | if t~="\005\000"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7854 | local a="version-mismatch"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7855 | if t:sub(1,1)=="\005"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7856 | a="authentication-failure"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7857 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7858 | return e:event("error",a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7859 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7860 | e:send(string.char(5,1,0,3,#s)..s.."\0\0"); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7861 | e:hook("incoming-raw",i,100); |
12 | 7862 | return true; |
7863 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7864 | e:hook("connected",n,200); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7865 | e:hook("incoming-raw",o,100); |
12 | 7866 | e:send("\005\001\000"); |
7867 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7868 | local function s(o,e,i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7869 | local e=a.new(nil,{ |
12 | 7870 | streamhosts=e, |
7871 | current_host=0; | |
7872 | }); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7873 | local function t(a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7874 | if a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7875 | return o(nil,a.reason); |
12 | 7876 | end |
7877 | if e.current_host<#e.streamhosts then | |
7878 | e.current_host=e.current_host+1; | |
7879 | e:debug("Attempting to connect to "..e.streamhosts[e.current_host].host..":"..e.streamhosts[e.current_host].port.."..."); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7880 | local a,t=e:connect( |
12 | 7881 | e.streamhosts[e.current_host].host, |
7882 | e.streamhosts[e.current_host].port | |
7883 | ); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7884 | if not a then |
12 | 7885 | e:debug("Error connecting to proxy (%s:%s): %s", |
7886 | e.streamhosts[e.current_host].host, | |
7887 | e.streamhosts[e.current_host].port, | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7888 | t |
12 | 7889 | ); |
7890 | else | |
7891 | e:debug("Connecting..."); | |
7892 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7893 | r(e,i); |
12 | 7894 | return true; |
7895 | end | |
7896 | e:unhook("disconnected",t); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7897 | return o(nil); |
12 | 7898 | end |
7899 | e:hook("disconnected",t,100); | |
7900 | e:hook("connected",function() | |
7901 | e:unhook("disconnected",t); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7902 | o(e.streamhosts[e.current_host],e); |
12 | 7903 | end,100); |
7904 | t(); | |
7905 | return e; | |
7906 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7907 | function a.plugins.jingle_s5b(e) |
12 | 7908 | e:hook("ready",function() |
7909 | e:add_disco_feature(o); | |
7910 | end,10); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7911 | local t={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7912 | function t:generate_initiate() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7913 | self.s5b_sid=l(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7914 | local i=a.stanza("transport",{xmlns=o, |
12 | 7915 | mode="tcp",sid=self.s5b_sid}); |
7916 | local t=0; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7917 | for a,o in pairs(e.proxy65.available_streamhosts)do |
12 | 7918 | t=t+1; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7919 | i:tag("candidate",{jid=a,host=o.host, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7920 | port=o.port,cid=a,priority=t,type="proxy"}):up(); |
12 | 7921 | end |
7922 | e:debug("Have %d proxies",t) | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7923 | return i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7924 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7925 | function t:generate_accept(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7926 | local t={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7927 | self.s5b_peer_candidates=t; |
12 | 7928 | self.s5b_mode=e.attr.mode or"tcp"; |
7929 | self.s5b_sid=e.attr.sid or self.jingle.sid; | |
7930 | for e in e:childtags()do | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7931 | t[e.attr.cid]={ |
12 | 7932 | type=e.attr.type; |
7933 | jid=e.attr.jid; | |
7934 | host=e.attr.host; | |
7935 | port=tonumber(e.attr.port)or 0; | |
7936 | priority=tonumber(e.attr.priority)or 0; | |
7937 | cid=e.attr.cid; | |
7938 | }; | |
7939 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7940 | local e=a.stanza("transport",{xmlns=o}); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7941 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7942 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7943 | function t:connect(i) |
12 | 7944 | e:warn("Connecting!"); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7945 | local t={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7946 | for a,e in pairs(self.s5b_peer_candidates or{})do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7947 | t[#t+1]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7948 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7949 | if#t>0 then |
12 | 7950 | self.connecting_peer_candidates=true; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7951 | local function n(e,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7952 | self.jingle:send_command("transport-info",a.stanza("content",{creator=self.creator,name=self.name}) |
12 | 7953 | :tag("transport",{xmlns=o,sid=self.s5b_sid}) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7954 | :tag("candidate-used",{cid=e.cid})); |
12 | 7955 | self.onconnect_callback=i; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7956 | self.conn=t; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7957 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7958 | local e=h(self.s5b_sid..self.peer..e.jid,true); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7959 | s(n,t,e); |
12 | 7960 | else |
7961 | e:warn("Actually, I'm going to wait for my peer to tell me its streamhost..."); | |
7962 | self.onconnect_callback=i; | |
7963 | end | |
7964 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7965 | function t:info_received(t) |
12 | 7966 | e:warn("Info received"); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7967 | local n=t:child_with_name("content"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7968 | local i=n:child_with_name("transport"); |
12 | 7969 | if i:get_child("candidate-used")and not self.connecting_peer_candidates then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7970 | local t=i:child_with_name("candidate-used"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7971 | if t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7972 | local function r(i,e) |
12 | 7973 | if self.jingle.role=="initiator"then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7974 | self.jingle.stream:send_iq(a.iq({to=i.jid,type="set"}) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7975 | :tag("query",{xmlns=d,sid=self.s5b_sid}) |
12 | 7976 | :tag("activate"):text(self.jingle.peer),function(i) |
7977 | if i.attr.type=="result"then | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7978 | self.jingle:send_command("transport-info",a.stanza("content",n.attr) |
12 | 7979 | :tag("transport",{xmlns=o,sid=self.s5b_sid}) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7980 | :tag("activated",{cid=t.attr.cid})); |
12 | 7981 | self.conn=e; |
7982 | self.onconnect_callback(e); | |
7983 | else | |
7984 | self.jingle.stream:error("Failed to activate bytestream"); | |
7985 | end | |
7986 | end); | |
7987 | end | |
7988 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7989 | self.jingle.stream:debug("CID: %s",self.jingle.stream.proxy65.available_streamhosts[t.attr.cid]); |
12 | 7990 | local t={ |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7991 | self.jingle.stream.proxy65.available_streamhosts[t.attr.cid]; |
12 | 7992 | }; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
7993 | local e=h(self.s5b_sid..e.jid..self.peer,true); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
7994 | s(r,t,e); |
12 | 7995 | end |
7996 | elseif i:get_child("activated")then | |
7997 | self.onconnect_callback(self.conn); | |
7998 | end | |
7999 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8000 | function t:disconnect() |
12 | 8001 | if self.conn then |
8002 | self.conn:close(); | |
8003 | end | |
8004 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8005 | function t:handle_accepted(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8006 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8007 | local t={__index=t}; |
12 | 8008 | e:hook("jingle/transport/"..o,function(e) |
8009 | return setmetatable({ | |
8010 | role=e.role, | |
8011 | peer=e.peer, | |
8012 | stream=e.stream, | |
8013 | jingle=e, | |
8014 | },t); | |
8015 | end); | |
8016 | end | |
8017 | end) | |
8018 | package.preload['verse.plugins.proxy65']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8019 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8020 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8021 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8022 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8023 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8024 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8025 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8026 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8027 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8028 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8029 | end |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8030 | local a=require"verse"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8031 | local h=require"util.id".short; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8032 | local r=require"util.hashes".sha1; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8033 | local n={}; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8034 | n.__index=n; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8035 | local i="http://jabber.org/protocol/bytestreams"; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8036 | local s; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8037 | function a.plugins.proxy65(t) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8038 | t.proxy65=setmetatable({stream=t},n); |
12 | 8039 | t.proxy65.available_streamhosts={}; |
8040 | local e=0; | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8041 | t:hook("disco/service-discovered/proxy",function(o) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8042 | if o.type=="bytestreams"then |
12 | 8043 | e=e+1; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8044 | t:send_iq(a.iq({to=o.jid,type="get"}) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8045 | :tag("query",{xmlns=i}),function(a) |
12 | 8046 | e=e-1; |
8047 | if a.attr.type=="result"then | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8048 | local e=a:get_child("query",i) |
12 | 8049 | :get_child("streamhost").attr; |
8050 | t.proxy65.available_streamhosts[e.jid]={ | |
8051 | jid=e.jid; | |
8052 | host=e.host; | |
8053 | port=tonumber(e.port); | |
8054 | }; | |
8055 | end | |
8056 | if e==0 then | |
8057 | t:event("proxy65/discovered-proxies",t.proxy65.available_streamhosts); | |
8058 | end | |
8059 | end); | |
8060 | end | |
8061 | end); | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8062 | t:hook("iq/"..i,function(o) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8063 | local e=a.new(nil,{ |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8064 | initiator_jid=o.attr.from, |
12 | 8065 | streamhosts={}, |
8066 | current_host=0; | |
8067 | }); | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8068 | for t in o.tags[1]:childtags()do |
12 | 8069 | if t.name=="streamhost"then |
8070 | table.insert(e.streamhosts,t.attr); | |
8071 | end | |
8072 | end | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8073 | local function i() |
12 | 8074 | if e.current_host<#e.streamhosts then |
8075 | e.current_host=e.current_host+1; | |
8076 | e:connect( | |
8077 | e.streamhosts[e.current_host].host, | |
8078 | e.streamhosts[e.current_host].port | |
8079 | ); | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8080 | s(t,e,o.tags[1].attr.sid,o.attr.from,t.jid); |
12 | 8081 | return true; |
8082 | end | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8083 | e:unhook("disconnected",i); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8084 | t:send(a.error_reply(o,"cancel","item-not-found")); |
12 | 8085 | end |
8086 | function e:accept() | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8087 | e:hook("disconnected",i,100); |
12 | 8088 | e:hook("connected",function() |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8089 | e:unhook("disconnected",i); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8090 | local e=a.reply(o) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8091 | :tag("query",o.tags[1].attr) |
12 | 8092 | :tag("streamhost-used",{jid=e.streamhosts[e.current_host].jid}); |
8093 | t:send(e); | |
8094 | end,100); | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8095 | i(); |
12 | 8096 | end |
8097 | function e:refuse() | |
8098 | end | |
8099 | t:event("proxy65/request",e); | |
8100 | end); | |
8101 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8102 | function n:new(t,n) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8103 | local e=a.new(nil,{ |
12 | 8104 | target_jid=t; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8105 | bytestream_sid=h(); |
12 | 8106 | }); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8107 | local o=a.iq{type="set",to=t} |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8108 | :tag("query",{xmlns=i,mode="tcp",sid=e.bytestream_sid}); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8109 | for t,e in ipairs(n or self.proxies)do |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8110 | o:tag("streamhost",e):up(); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8111 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8112 | self.stream:send_iq(o,function(o) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8113 | if o.attr.type=="error"then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8114 | local t,a,o=o:get_error(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8115 | e:event("connection-failed",{conn=e,type=t,condition=a,text=o}); |
12 | 8116 | else |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8117 | local o=o.tags[1]:get_child("streamhost-used"); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8118 | e.streamhost_jid=o.attr.jid; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8119 | local h,o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8120 | for a,t in ipairs(n or self.proxies)do |
12 | 8121 | if t.jid==e.streamhost_jid then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8122 | h,o=t.host,t.port; |
12 | 8123 | break; |
8124 | end | |
8125 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8126 | e:connect(h,o); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8127 | local function o() |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8128 | e:unhook("connected",o); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8129 | local t=a.iq{to=e.streamhost_jid,type="set"} |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8130 | :tag("query",{xmlns=i,sid=e.bytestream_sid}) |
12 | 8131 | :tag("activate"):text(t); |
8132 | self.stream:send_iq(t,function(t) | |
8133 | if t.attr.type=="result"then | |
8134 | e:event("connected",e); | |
8135 | end | |
8136 | end); | |
8137 | return true; | |
8138 | end | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8139 | e:hook("connected",o,100); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8140 | s(self.stream,e,e.bytestream_sid,self.stream.jid,t); |
12 | 8141 | end |
8142 | end); | |
8143 | return e; | |
8144 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8145 | function s(i,e,t,a,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8146 | local t=r(t..a..o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8147 | local function a() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8148 | e:unhook("connected",a); |
12 | 8149 | return true; |
8150 | end | |
8151 | local function o(t) | |
8152 | e:unhook("incoming-raw",o); | |
8153 | if t:sub(1,2)~="\005\000"then | |
8154 | return e:event("error","connection-failure"); | |
8155 | end | |
8156 | e:event("connected"); | |
8157 | return true; | |
8158 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8159 | local function i(a) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8160 | e:unhook("incoming-raw",i); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8161 | if a~="\005\000"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8162 | local t="version-mismatch"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8163 | if a:sub(1,1)=="\005"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8164 | t="authentication-failure"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8165 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8166 | return e:event("error",t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8167 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8168 | e:send(string.char(5,1,0,3,#t)..t.."\0\0"); |
12 | 8169 | e:hook("incoming-raw",o,100); |
8170 | return true; | |
8171 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8172 | e:hook("connected",a,200); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8173 | e:hook("incoming-raw",i,100); |
12 | 8174 | e:send("\005\001\000"); |
8175 | end | |
8176 | end) | |
8177 | package.preload['verse.plugins.jingle_ibb']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8178 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8179 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8180 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8181 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8182 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8183 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8184 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8185 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8186 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8187 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8188 | end |
12 | 8189 | local e=require"verse"; |
8190 | local i=require"util.encodings".base64; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8191 | local h=require"util.id".short; |
12 | 8192 | local n="urn:xmpp:jingle:transports:ibb:1"; |
8193 | local o="http://jabber.org/protocol/ibb"; | |
8194 | assert(i.encode("This is a test.")=="VGhpcyBpcyBhIHRlc3Qu","Base64 encoding failed"); | |
8195 | assert(i.decode("VGhpcyBpcyBhIHRlc3Qu")=="This is a test.","Base64 decoding failed"); | |
8196 | local a={}; | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8197 | local t={__index=a}; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8198 | local function s(a) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8199 | local t=setmetatable({stream=a},t) |
12 | 8200 | t=e.eventable(t); |
8201 | return t; | |
8202 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8203 | function a:initiate(t,e,a) |
12 | 8204 | self.block=2048; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8205 | self.stanza=a or'iq'; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8206 | self.peer=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8207 | self.sid=e or tostring(self):match("%x+$"); |
12 | 8208 | self.iseq=0; |
8209 | self.oseq=0; | |
8210 | local e=function(e) | |
8211 | return self:feed(e) | |
8212 | end | |
8213 | self.feeder=e; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8214 | print("Hooking incoming IQs"); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8215 | local t=self.stream; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8216 | t:hook("iq/"..o,e) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8217 | if a=="message"then |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8218 | t:hook("message",e) |
12 | 8219 | end |
8220 | end | |
8221 | function a:open(t) | |
8222 | self.stream:send_iq(e.iq{to=self.peer,type="set"} | |
8223 | :tag("open",{ | |
8224 | xmlns=o, | |
8225 | ["block-size"]=self.block, | |
8226 | sid=self.sid, | |
8227 | stanza=self.stanza | |
8228 | }) | |
8229 | ,function(e) | |
8230 | if t then | |
8231 | if e.attr.type~="error"then | |
8232 | t(true) | |
8233 | else | |
8234 | t(false,e:get_error()) | |
8235 | end | |
8236 | end | |
8237 | end); | |
8238 | end | |
8239 | function a:send(n) | |
8240 | local a=self.stanza; | |
8241 | local t; | |
8242 | if a=="iq"then | |
8243 | t=e.iq{type="set",to=self.peer} | |
8244 | elseif a=="message"then | |
8245 | t=e.message{to=self.peer} | |
8246 | end | |
8247 | local e=self.oseq; | |
8248 | self.oseq=e+1; | |
8249 | t:tag("data",{xmlns=o,sid=self.sid,seq=e}) | |
8250 | :text(i.encode(n)); | |
8251 | if a=="iq"then | |
8252 | self.stream:send_iq(t,function(e) | |
8253 | self:event(e.attr.type=="result"and"drained"or"error"); | |
8254 | end) | |
8255 | else | |
8256 | stream:send(t) | |
8257 | self:event("drained"); | |
8258 | end | |
8259 | end | |
8260 | function a:feed(t) | |
8261 | if t.attr.from~=self.peer then return end | |
8262 | local a=t[1]; | |
8263 | if a.attr.sid~=self.sid then return end | |
8264 | local n; | |
8265 | if a.name=="open"then | |
8266 | self:event("connected"); | |
8267 | self.stream:send(e.reply(t)) | |
8268 | return true | |
8269 | elseif a.name=="data"then | |
8270 | local o=t:get_child_text("data",o); | |
8271 | local a=tonumber(a.attr.seq); | |
8272 | local n=self.iseq; | |
8273 | if o and a then | |
8274 | if a~=n then | |
8275 | self.stream:send(e.error_reply(t,"cancel","not-acceptable","Wrong sequence. Packet lost?")) | |
8276 | self:close(); | |
8277 | self:event("error"); | |
8278 | return true; | |
8279 | end | |
8280 | self.iseq=a+1; | |
8281 | local a=i.decode(o); | |
8282 | if self.stanza=="iq"then | |
8283 | self.stream:send(e.reply(t)) | |
8284 | end | |
8285 | self:event("incoming-raw",a); | |
8286 | return true; | |
8287 | end | |
8288 | elseif a.name=="close"then | |
8289 | self.stream:send(e.reply(t)) | |
8290 | self:close(); | |
8291 | return true | |
8292 | end | |
8293 | end | |
8294 | function a:close() | |
8295 | self.stream:unhook("iq/"..o,self.feeder) | |
8296 | self:event("disconnected"); | |
8297 | end | |
8298 | function e.plugins.jingle_ibb(a) | |
8299 | a:hook("ready",function() | |
8300 | a:add_disco_feature(n); | |
8301 | end,10); | |
8302 | local t={}; | |
8303 | function t:_setup() | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8304 | local e=s(self.stream); |
12 | 8305 | e.sid=self.sid or e.sid; |
8306 | e.stanza=self.stanza or e.stanza; | |
8307 | e.block=self.block or e.block; | |
8308 | e:initiate(self.peer,self.sid,self.stanza); | |
8309 | self.conn=e; | |
8310 | end | |
8311 | function t:generate_initiate() | |
8312 | print("ibb:generate_initiate() as "..self.role); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8313 | local t=h(); |
12 | 8314 | self.sid=t; |
8315 | self.stanza='iq'; | |
8316 | self.block=2048; | |
8317 | local e=e.stanza("transport",{xmlns=n, | |
8318 | sid=self.sid,stanza=self.stanza,["block-size"]=self.block}); | |
8319 | return e; | |
8320 | end | |
8321 | function t:generate_accept(t) | |
8322 | print("ibb:generate_accept() as "..self.role); | |
8323 | local e=t.attr; | |
8324 | self.sid=e.sid or self.sid; | |
8325 | self.stanza=e.stanza or self.stanza; | |
8326 | self.block=e["block-size"]or self.block; | |
8327 | self:_setup(); | |
8328 | return t; | |
8329 | end | |
8330 | function t:connect(t) | |
8331 | if not self.conn then | |
8332 | self:_setup(); | |
8333 | end | |
8334 | local e=self.conn; | |
8335 | print("ibb:connect() as "..self.role); | |
8336 | if self.role=="initiator"then | |
8337 | e:open(function(a,...) | |
8338 | assert(a,table.concat({...},", ")); | |
8339 | t(e); | |
8340 | end); | |
8341 | else | |
8342 | t(e); | |
8343 | end | |
8344 | end | |
8345 | function t:info_received(e) | |
8346 | print("ibb:info_received()"); | |
8347 | end | |
8348 | function t:disconnect() | |
8349 | if self.conn then | |
8350 | self.conn:close() | |
8351 | end | |
8352 | end | |
8353 | function t:handle_accepted(e)end | |
8354 | local t={__index=t}; | |
8355 | a:hook("jingle/transport/"..n,function(e) | |
8356 | return setmetatable({ | |
8357 | role=e.role, | |
8358 | peer=e.peer, | |
8359 | stream=e.stream, | |
8360 | jingle=e, | |
8361 | },t); | |
8362 | end); | |
8363 | end | |
8364 | end) | |
8365 | package.preload['verse.plugins.pubsub']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8366 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8367 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8368 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8369 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8370 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8371 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8372 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8373 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8374 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8375 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8376 | end |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8377 | local i=require"verse"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8378 | local h=table.insert; |
12 | 8379 | local o="http://jabber.org/protocol/pubsub"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8380 | local s="http://jabber.org/protocol/pubsub#owner"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8381 | local r="http://jabber.org/protocol/pubsub#event"; |
12 | 8382 | local e={}; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8383 | local n={__index=e}; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8384 | function i.plugins.pubsub(e) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8385 | e.pubsub=setmetatable({stream=e},n); |
12 | 8386 | e:hook("message",function(t) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8387 | local a=t.attr.from; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8388 | for t in t:childtags("event",r)do |
12 | 8389 | local t=t:get_child("items"); |
8390 | if t then | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8391 | local o=t.attr.node; |
12 | 8392 | for t in t:childtags("item")do |
8393 | e:event("pubsub/event",{ | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8394 | from=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8395 | node=o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8396 | item=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8397 | }); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8398 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8399 | for t in t:childtags("retract")do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8400 | e:event("pubsub/retraction",{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8401 | from=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8402 | node=o; |
12 | 8403 | item=t; |
8404 | }); | |
8405 | end | |
8406 | end | |
8407 | end | |
8408 | end); | |
8409 | return true; | |
8410 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8411 | function e:create(a,e,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8412 | return self:service(a):node(e):create(nil,t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8413 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8414 | function e:subscribe(o,t,a,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8415 | return self:service(o):node(t):subscribe(a,nil,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8416 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8417 | function e:publish(e,t,o,a,i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8418 | return self:service(e):node(t):publish(o,nil,a,i); |
12 | 8419 | end |
8420 | local a={}; | |
8421 | local t={__index=a}; | |
8422 | function e:service(e) | |
8423 | return setmetatable({stream=self.stream,service=e},t) | |
8424 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8425 | local function t(d,r,e,n,h,s,t,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8426 | local e=i.iq{type=d or"get",to=r} |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8427 | :tag("pubsub",{xmlns=e or o}) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8428 | local o={node=h,jid=s}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8429 | if a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8430 | for t,e in pairs(a)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8431 | o[t]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8432 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8433 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8434 | if n then e:tag(n,o);end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8435 | if t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8436 | e:tag("item",{id=t~=true and t or nil}); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8437 | end |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8438 | return e; |
12 | 8439 | end |
8440 | function a:subscriptions(a) | |
8441 | self.stream:send_iq(t(nil,self.service,nil,"subscriptions") | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8442 | ,a and function(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8443 | if e.attr.type=="result"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8444 | local e=e:get_child("pubsub",o); |
12 | 8445 | local e=e and e:get_child("subscriptions"); |
8446 | local o={}; | |
8447 | if e then | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8448 | for e in e:childtags("subscription")do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8449 | local t=self:node(e.attr.node) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8450 | t.subscription=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8451 | t.subscribed_jid=e.attr.jid; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8452 | h(o,t); |
12 | 8453 | end |
8454 | end | |
8455 | a(o); | |
8456 | else | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8457 | a(false,e:get_error()); |
12 | 8458 | end |
8459 | end or nil); | |
8460 | end | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8461 | function a:affiliations(a) |
12 | 8462 | self.stream:send_iq(t(nil,self.service,nil,"affiliations") |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8463 | ,a and function(e) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8464 | if e.attr.type=="result"then |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8465 | local e=e:get_child("pubsub",o); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8466 | local e=e and e:get_child("affiliations")or{}; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8467 | local o={}; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8468 | if e then |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8469 | for e in e:childtags("affiliation")do |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8470 | local t=self:node(e.attr.node) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8471 | t.affiliation=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8472 | h(o,t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8473 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8474 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8475 | a(o); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8476 | else |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8477 | a(false,e:get_error()); |
12 | 8478 | end |
8479 | end or nil); | |
8480 | end | |
8481 | function a:nodes(a) | |
8482 | self.stream:disco_items(self.service,nil,function(e,...) | |
8483 | if e then | |
8484 | for t=1,#e do | |
8485 | e[t]=self:node(e[t].node); | |
8486 | end | |
8487 | end | |
8488 | a(e,...) | |
8489 | end); | |
8490 | end | |
8491 | local e={}; | |
8492 | local o={__index=e}; | |
8493 | function a:node(e) | |
8494 | return setmetatable({stream=self.stream,service=self.service,node=e},o) | |
8495 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8496 | function n:__call(t,e) |
12 | 8497 | local t=self:service(t); |
8498 | return e and t:node(e)or t; | |
8499 | end | |
8500 | function e:hook(a,o) | |
8501 | self._hooks=self._hooks or setmetatable({},{__mode='kv'}); | |
8502 | local function t(e) | |
8503 | if(not e.service or e.from==self.service)and e.node==self.node then | |
8504 | return a(e) | |
8505 | end | |
8506 | end | |
8507 | self._hooks[a]=t; | |
8508 | self.stream:hook("pubsub/event",t,o); | |
8509 | return t; | |
8510 | end | |
8511 | function e:unhook(e) | |
8512 | if e then | |
8513 | local e=self._hooks[e]; | |
8514 | self.stream:unhook("pubsub/event",e); | |
8515 | elseif self._hooks then | |
8516 | for e in pairs(self._hooks)do | |
8517 | self.stream:unhook("pubsub/event",e); | |
8518 | end | |
8519 | end | |
8520 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8521 | function e:create(e,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8522 | if e~=nil then |
12 | 8523 | error("Not implemented yet."); |
8524 | else | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8525 | self.stream:send_iq(t("set",self.service,nil,"create",self.node),a); |
12 | 8526 | end |
8527 | end | |
8528 | function e:configure(e,a) | |
8529 | if e~=nil then | |
8530 | error("Not implemented yet."); | |
8531 | end | |
8532 | self.stream:send_iq(t("set",self.service,nil,e==nil and"default"or"configure",self.node),a); | |
8533 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8534 | function e:publish(i,a,e,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8535 | if a~=nil then |
12 | 8536 | error("Node configuration is not implemented yet."); |
8537 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8538 | self.stream:send_iq(t("set",self.service,nil,"publish",self.node,nil,i or true) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8539 | :add_child(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8540 | ,o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8541 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8542 | function e:subscribe(e,a,o) |
12 | 8543 | e=e or self.stream.jid; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8544 | if a~=nil then |
12 | 8545 | error("Subscription configuration is not implemented yet."); |
8546 | end | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8547 | self.stream:send_iq(t("set",self.service,nil,"subscribe",self.node,e) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8548 | ,o); |
12 | 8549 | end |
8550 | function e:subscription(e) | |
8551 | error("Not implemented yet."); | |
8552 | end | |
8553 | function e:affiliation(e) | |
8554 | error("Not implemented yet."); | |
8555 | end | |
8556 | function e:unsubscribe(e,a) | |
8557 | e=e or self.subscribed_jid or self.stream.jid; | |
8558 | self.stream:send_iq(t("set",self.service,nil,"unsubscribe",self.node,e) | |
8559 | ,a); | |
8560 | end | |
8561 | function e:configure_subscription(e,e) | |
8562 | error("Not implemented yet."); | |
8563 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8564 | function e:items(t,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8565 | if t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8566 | return self:item(nil,e); |
12 | 8567 | else |
8568 | self.stream:disco_items(self.service,self.node,e); | |
8569 | end | |
8570 | end | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8571 | function e:item(e,a) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8572 | self.stream:send_iq(t("get",self.service,nil,"items",self.node,nil,e) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8573 | ,a); |
12 | 8574 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8575 | function e:retract(o,e,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8576 | if type(e)=="function"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8577 | e,a=false,e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8578 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8579 | self.stream:send_iq( |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8580 | t( |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8581 | "set", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8582 | self.service, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8583 | nil, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8584 | "retract", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8585 | self.node, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8586 | nil, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8587 | o, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8588 | {notify=e and"1"or nil} |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8589 | ), |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8590 | a |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8591 | ); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8592 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8593 | function e:purge(e,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8594 | self.stream:send_iq( |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8595 | t( |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8596 | "set", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8597 | self.service, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8598 | s, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8599 | "purge", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8600 | self.node, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8601 | nil, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8602 | nil, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8603 | {notify=e and"1"or nil} |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8604 | ), |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8605 | a |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8606 | ); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8607 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8608 | function e:delete(e,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8609 | assert(not e,"Not implemented yet."); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8610 | self.stream:send_iq(t("set",self.service,s,"delete",self.node) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8611 | ,a); |
12 | 8612 | end |
8613 | end) | |
8614 | package.preload['verse.plugins.pep']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8615 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8616 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8617 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8618 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8619 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8620 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8621 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8622 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8623 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8624 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8625 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8626 | local t=require"verse"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8627 | local e="http://jabber.org/protocol/pubsub"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8628 | local e=e.."#event"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8629 | function t.plugins.pep(e) |
12 | 8630 | e:add_plugin("disco"); |
8631 | e:add_plugin("pubsub"); | |
8632 | e.pep={}; | |
8633 | e:hook("pubsub/event",function(t) | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8634 | return e:event("pep/"..t.node,{from=t.from,id=t.item.attr.id,item=t.item.tags[1]}); |
12 | 8635 | end); |
8636 | function e:hook_pep(t,i,o) | |
8637 | local a=e.events._handlers["pep/"..t]; | |
8638 | if not(a)or#a==0 then | |
8639 | e:add_disco_feature(t.."+notify"); | |
8640 | end | |
8641 | e:hook("pep/"..t,i,o); | |
8642 | end | |
8643 | function e:unhook_pep(t,a) | |
8644 | e:unhook("pep/"..t,a); | |
8645 | local a=e.events._handlers["pep/"..t]; | |
8646 | if not(a)or#a==0 then | |
8647 | e:remove_disco_feature(t.."+notify"); | |
8648 | end | |
8649 | end | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8650 | function e:publish_pep(t,a,o) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8651 | return e.pubsub:service(nil):node(a or t.attr.xmlns):publish(o or"current",nil,t) |
12 | 8652 | end |
8653 | end | |
8654 | end) | |
8655 | package.preload['verse.plugins.adhoc']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8656 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8657 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8658 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8659 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8660 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8661 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8662 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8663 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8664 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8665 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8666 | end |
12 | 8667 | local o=require"verse"; |
8668 | local n=require"lib.adhoc"; | |
8669 | local t="http://jabber.org/protocol/commands"; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8670 | local r="jabber:x:data"; |
12 | 8671 | local a={}; |
8672 | a.__index=a; | |
8673 | local i={}; | |
8674 | function o.plugins.adhoc(e) | |
8675 | e:add_plugin("disco"); | |
8676 | e:add_disco_feature(t); | |
8677 | function e:query_commands(a,o) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8678 | e:disco_items(a,t,function(a) |
12 | 8679 | e:debug("adhoc list returned") |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8680 | local t={}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8681 | for o,a in ipairs(a)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8682 | t[a.node]=a.name; |
12 | 8683 | end |
8684 | e:debug("adhoc calling callback") | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8685 | return o(t); |
12 | 8686 | end); |
8687 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8688 | function e:execute_command(o,i,t) |
12 | 8689 | local e=setmetatable({ |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8690 | stream=e,jid=o, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8691 | command=i,callback=t |
12 | 8692 | },a); |
8693 | return e:execute(); | |
8694 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8695 | local function s(t,e) |
12 | 8696 | if not(e)or e=="user"then return true;end |
8697 | if type(e)=="function"then | |
8698 | return e(t); | |
8699 | end | |
8700 | end | |
8701 | function e:add_adhoc_command(o,a,h,s) | |
8702 | i[a]=n.new(o,a,h,s); | |
8703 | e:add_disco_item({jid=e.jid,node=a,name=o},t); | |
8704 | return i[a]; | |
8705 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8706 | local function h(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8707 | local a=t.tags[1]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8708 | local a=a.attr.node; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8709 | local a=i[a]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8710 | if not a then return;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8711 | if not s(t.attr.from,a.permission)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8712 | e:send(o.error_reply(t,"auth","forbidden","You don't have permission to execute this command"):up() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8713 | :add_child(a:cmdtag("canceled") |
12 | 8714 | :tag("note",{type="error"}):text("You don't have permission to execute this command"))); |
8715 | return true | |
8716 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8717 | return n.handle_cmd(a,{send=function(t)return e:send(t)end},t); |
12 | 8718 | end |
8719 | e:hook("iq/"..t,function(e) | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8720 | local t=e.attr.type; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8721 | local a=e.tags[1].name; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8722 | if t=="set"and a=="command"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8723 | return h(e); |
12 | 8724 | end |
8725 | end); | |
8726 | end | |
8727 | function a:_process_response(e) | |
8728 | if e.attr.type=="error"then | |
8729 | self.status="canceled"; | |
8730 | self.callback(self,{}); | |
8731 | return; | |
8732 | end | |
8733 | local e=e:get_child("command",t); | |
8734 | self.status=e.attr.status; | |
8735 | self.sessionid=e.attr.sessionid; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8736 | self.form=e:get_child("x",r); |
12 | 8737 | self.note=e:get_child("note"); |
8738 | self.callback(self); | |
8739 | end | |
8740 | function a:execute() | |
8741 | local e=o.iq({to=self.jid,type="set"}) | |
8742 | :tag("command",{xmlns=t,node=self.command}); | |
8743 | self.stream:send_iq(e,function(e) | |
8744 | self:_process_response(e); | |
8745 | end); | |
8746 | end | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8747 | function a:next(e) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8748 | local t=o.iq({to=self.jid,type="set"}) |
12 | 8749 | :tag("command",{ |
8750 | xmlns=t, | |
8751 | node=self.command, | |
8752 | sessionid=self.sessionid | |
8753 | }); | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8754 | if e then t:add_child(e);end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8755 | self.stream:send_iq(t,function(e) |
12 | 8756 | self:_process_response(e); |
8757 | end); | |
8758 | end | |
8759 | end) | |
8760 | package.preload['verse.plugins.presence']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8761 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8762 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8763 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8764 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8765 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8766 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8767 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8768 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8769 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8770 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8771 | end |
12 | 8772 | local a=require"verse"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8773 | local o=require"util.stanza"; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8774 | function a.plugins.presence(t) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8775 | t.last_presence=nil; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8776 | t:hook("presence-out",function(e) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8777 | if not e.attr.to then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8778 | t.last_presence=o.clone(e); |
12 | 8779 | end |
8780 | end,1); | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8781 | function t:resend_presence() |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8782 | if self.last_presence then |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8783 | t:send(self.last_presence); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8784 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8785 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8786 | function t:set_status(e) |
12 | 8787 | local a=a.presence(); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8788 | if type(e)=="table"then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8789 | if e.show then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8790 | a:tag("show"):text(e.show):up(); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8791 | end |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8792 | if e.priority or e.prio then |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8793 | a:tag("priority"):text(tostring(e.priority or e.prio)):up(); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8794 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8795 | if e.status or e.msg then |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8796 | a:tag("status"):text(e.status or e.msg):up(); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8797 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8798 | elseif type(e)=="string"then |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8799 | a:tag("status"):text(e):up(); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8800 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8801 | t:send(a); |
12 | 8802 | end |
8803 | end | |
8804 | end) | |
8805 | package.preload['verse.plugins.private']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8806 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8807 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8808 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8809 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8810 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8811 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8812 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8813 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8814 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8815 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8816 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8817 | local t=require"verse"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8818 | local a="jabber:iq:private"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8819 | function t.plugins.private(o) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8820 | function o:private_set(i,o,e,n) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8821 | local t=t.iq({type="set"}) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8822 | :tag("query",{xmlns=a}); |
12 | 8823 | if e then |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8824 | if e.name==i and e.attr and e.attr.xmlns==o then |
12 | 8825 | t:add_child(e); |
8826 | else | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8827 | t:tag(i,{xmlns=o}) |
12 | 8828 | :add_child(e); |
8829 | end | |
8830 | end | |
8831 | self:send_iq(t,n); | |
8832 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8833 | function o:private_get(e,o,i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8834 | self:send_iq(t.iq({type="get"}) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8835 | :tag("query",{xmlns=a}) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8836 | :tag(e,{xmlns=o}), |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8837 | function(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8838 | if t.attr.type=="result"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8839 | local t=t:get_child("query",a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8840 | local e=t:get_child(e,o); |
12 | 8841 | i(e); |
8842 | end | |
8843 | end); | |
8844 | end | |
8845 | end | |
8846 | end) | |
8847 | package.preload['verse.plugins.roster']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8848 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8849 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8850 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8851 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8852 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8853 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8854 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8855 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8856 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8857 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8858 | end |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8859 | local i=require"verse"; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8860 | local l=require"util.jid".bare; |
12 | 8861 | local a="jabber:iq:roster"; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8862 | local o="urn:xmpp:features:rosterver"; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8863 | local n=table.insert; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8864 | function i.plugins.roster(t) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8865 | local h=false; |
12 | 8866 | local e={ |
8867 | items={}; | |
8868 | ver=""; | |
8869 | }; | |
8870 | t.roster=e; | |
8871 | t:hook("stream-features",function(e) | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8872 | if e:get_child("ver",o)then |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8873 | h=true; |
12 | 8874 | end |
8875 | end); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8876 | local function s(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8877 | local t=i.stanza("item",{xmlns=a}); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8878 | for a,e in pairs(e)do |
12 | 8879 | if a~="groups"then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8880 | t.attr[a]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8881 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8882 | for a=1,#e do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8883 | t:tag("group"):text(e[a]):up(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8884 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8885 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8886 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8887 | return t; |
12 | 8888 | end |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8889 | local function d(a) |
12 | 8890 | local e={}; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8891 | local t={}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8892 | e.groups=t; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8893 | for t,a in pairs(a.attr)do |
12 | 8894 | if t~="xmlns"then |
8895 | e[t]=a | |
8896 | end | |
8897 | end | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8898 | for e in a:childtags("group")do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8899 | n(t,e:get_text()) |
12 | 8900 | end |
8901 | return e; | |
8902 | end | |
8903 | function e:load(t) | |
8904 | e.ver,e.items=t.ver,t.items; | |
8905 | end | |
8906 | function e:dump() | |
8907 | return{ | |
8908 | ver=e.ver, | |
8909 | items=e.items, | |
8910 | }; | |
8911 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8912 | function e:add_contact(h,o,n,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8913 | local o={jid=h,name=o,groups=n}; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8914 | local a=i.iq({type="set"}) |
12 | 8915 | :tag("query",{xmlns=a}) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8916 | :add_child(s(o)); |
12 | 8917 | t:send_iq(a,function(t) |
8918 | if not e then return end | |
8919 | if t.attr.type=="result"then | |
8920 | e(true); | |
8921 | else | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8922 | e(nil,t); |
12 | 8923 | end |
8924 | end); | |
8925 | end | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8926 | function e:delete_contact(o,n) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8927 | o=(type(o)=="table"and o.jid)or o; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8928 | local h={jid=o,subscription="remove"} |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8929 | if not e.items[o]then return false,"item-not-found";end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8930 | t:send_iq(i.iq({type="set"}) |
12 | 8931 | :tag("query",{xmlns=a}) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8932 | :add_child(s(h)), |
12 | 8933 | function(e) |
8934 | if not n then return end | |
8935 | if e.attr.type=="result"then | |
8936 | n(true); | |
8937 | else | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8938 | n(nil,e); |
12 | 8939 | end |
8940 | end); | |
8941 | end | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8942 | local function r(t) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8943 | local t=d(t); |
12 | 8944 | e.items[t.jid]=t; |
8945 | end | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8946 | local function d(t) |
12 | 8947 | local a=e.items[t]; |
8948 | e.items[t]=nil; | |
8949 | return a; | |
8950 | end | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8951 | function e:fetch(o) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8952 | t:send_iq(i.iq({type="get"}):tag("query",{xmlns=a,ver=h and e.ver or nil}), |
12 | 8953 | function(t) |
8954 | if t.attr.type=="result"then | |
8955 | local t=t:get_child("query",a); | |
8956 | if t then | |
8957 | e.items={}; | |
8958 | for t in t:childtags("item")do | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8959 | r(t) |
12 | 8960 | end |
8961 | e.ver=t.attr.ver or""; | |
8962 | end | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8963 | o(e); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8964 | else |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
8965 | o(nil,t); |
12 | 8966 | end |
8967 | end); | |
8968 | end | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8969 | t:hook("iq/"..a,function(o) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8970 | local s,n=o.attr.type,o.attr.from; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8971 | if s=="set"and(not n or n==l(t.jid))then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8972 | local s=o:get_child("query",a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8973 | local n=s and s:get_child("item"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8974 | if n then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8975 | local o,a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8976 | local i=n.attr.jid; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8977 | if n.attr.subscription=="remove"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8978 | o="removed" |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8979 | a=d(i); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8980 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8981 | o=e.items[i]and"changed"or"added"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8982 | r(n) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8983 | a=e.items[i]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8984 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8985 | e.ver=s.attr.ver; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8986 | if a then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
8987 | t:event("roster/item-"..o,a); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8988 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8989 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8990 | t:send(i.reply(o)) |
12 | 8991 | return true; |
8992 | end | |
8993 | end); | |
8994 | end | |
8995 | end) | |
8996 | package.preload['verse.plugins.register']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8997 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8998 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
8999 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9000 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9001 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9002 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9003 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9004 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9005 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9006 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9007 | end |
12 | 9008 | local t=require"verse"; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9009 | local i="jabber:iq:register"; |
12 | 9010 | function t.plugins.register(e) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9011 | local function a(o) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9012 | if o:get_child("register","http://jabber.org/features/iq-register")then |
12 | 9013 | local t=t.iq({to=e.host_,type="set"}) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9014 | :tag("query",{xmlns=i}) |
12 | 9015 | :tag("username"):text(e.username):up() |
9016 | :tag("password"):text(e.password):up(); | |
9017 | if e.register_email then | |
9018 | t:tag("email"):text(e.register_email):up(); | |
9019 | end | |
9020 | e:send_iq(t,function(t) | |
9021 | if t.attr.type=="result"then | |
9022 | e:event("registration-success"); | |
9023 | else | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9024 | local a,t,o=t:get_error(); |
12 | 9025 | e:debug("Registration failed: %s",t); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9026 | e:event("registration-failure",{type=a,condition=t,text=o}); |
12 | 9027 | end |
9028 | end); | |
9029 | else | |
9030 | e:debug("In-band registration not offered by server"); | |
9031 | e:event("registration-failure",{condition="service-unavailable"}); | |
9032 | end | |
9033 | e:unhook("stream-features",a); | |
9034 | return true; | |
9035 | end | |
9036 | e:hook("stream-features",a,310); | |
9037 | end | |
9038 | end) | |
9039 | package.preload['verse.plugins.groupchat']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9040 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9041 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9042 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9043 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9044 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9045 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9046 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9047 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9048 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9049 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9050 | end |
12 | 9051 | local i=require"verse"; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9052 | local e=require"util.events"; |
12 | 9053 | local n=require"util.jid"; |
9054 | local a={}; | |
9055 | a.__index=a; | |
9056 | local h="urn:xmpp:delay"; | |
9057 | local s="http://jabber.org/protocol/muc"; | |
9058 | function i.plugins.groupchat(o) | |
9059 | o:add_plugin("presence") | |
9060 | o.rooms={}; | |
9061 | o:hook("stanza",function(e) | |
9062 | local a=n.bare(e.attr.from); | |
9063 | if not a then return end | |
9064 | local t=o.rooms[a] | |
9065 | if not t and e.attr.to and a then | |
9066 | t=o.rooms[e.attr.to.." "..a] | |
9067 | end | |
9068 | if t and t.opts.source and e.attr.to~=t.opts.source then return end | |
9069 | if t then | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9070 | local o=select(3,n.split(e.attr.from)); |
12 | 9071 | local n=e:get_child_text("body"); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9072 | local i=e:get_child("delay",h); |
12 | 9073 | local a={ |
9074 | room_jid=a; | |
9075 | room=t; | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9076 | sender=t.occupants[o]; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9077 | nick=o; |
12 | 9078 | body=n; |
9079 | stanza=e; | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9080 | delay=(i and i.attr.stamp); |
12 | 9081 | }; |
9082 | local t=t:event(e.name,a); | |
9083 | return t or(e.name=="message")or nil; | |
9084 | end | |
9085 | end,500); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9086 | function o:join_room(n,h,t,r) |
12 | 9087 | if not h then |
9088 | return false,"no nickname supplied" | |
9089 | end | |
9090 | t=t or{}; | |
9091 | local e=setmetatable(i.eventable{ | |
9092 | stream=o,jid=n,nick=h, | |
9093 | subject=nil, | |
9094 | occupants={}, | |
9095 | opts=t, | |
9096 | },a); | |
9097 | if t.source then | |
9098 | self.rooms[t.source.." "..n]=e; | |
9099 | else | |
9100 | self.rooms[n]=e; | |
9101 | end | |
9102 | local a=e.occupants; | |
9103 | e:hook("presence",function(o) | |
9104 | local t=o.nick or h; | |
9105 | if not a[t]and o.stanza.attr.type~="unavailable"then | |
9106 | a[t]={ | |
9107 | nick=t; | |
9108 | jid=o.stanza.attr.from; | |
9109 | presence=o.stanza; | |
9110 | }; | |
9111 | local o=o.stanza:get_child("x",s.."#user"); | |
9112 | if o then | |
9113 | local e=o:get_child("item"); | |
9114 | if e and e.attr then | |
9115 | a[t].real_jid=e.attr.jid; | |
9116 | a[t].affiliation=e.attr.affiliation; | |
9117 | a[t].role=e.attr.role; | |
9118 | end | |
9119 | end | |
9120 | if t==e.nick then | |
9121 | e.stream:event("groupchat/joined",e); | |
9122 | else | |
9123 | e:event("occupant-joined",a[t]); | |
9124 | end | |
9125 | elseif a[t]and o.stanza.attr.type=="unavailable"then | |
9126 | if t==e.nick then | |
9127 | e.stream:event("groupchat/left",e); | |
9128 | if e.opts.source then | |
9129 | self.rooms[e.opts.source.." "..n]=nil; | |
9130 | else | |
9131 | self.rooms[n]=nil; | |
9132 | end | |
9133 | else | |
9134 | a[t].presence=o.stanza; | |
9135 | e:event("occupant-left",a[t]); | |
9136 | a[t]=nil; | |
9137 | end | |
9138 | end | |
9139 | end); | |
9140 | e:hook("message",function(a) | |
9141 | local t=a.stanza:get_child_text("subject"); | |
9142 | if not t then return end | |
9143 | t=#t>0 and t or nil; | |
9144 | if t~=e.subject then | |
9145 | local o=e.subject; | |
9146 | e.subject=t; | |
9147 | return e:event("subject-changed",{from=o,to=t,by=a.sender,event=a}); | |
9148 | end | |
9149 | end,2e3); | |
9150 | local t=i.presence():tag("x",{xmlns=s}):reset(); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9151 | if r then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9152 | t:get_child("x",s):tag("password"):text(r):reset(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9153 | end |
12 | 9154 | self:event("pre-groupchat/joining",t); |
9155 | e:send(t) | |
9156 | self:event("groupchat/joining",e); | |
9157 | return e; | |
9158 | end | |
9159 | o:hook("presence-out",function(e) | |
9160 | if not e.attr.to then | |
9161 | for a,t in pairs(o.rooms)do | |
9162 | t:send(e); | |
9163 | end | |
9164 | e.attr.to=nil; | |
9165 | end | |
9166 | end); | |
9167 | end | |
9168 | function a:send(e) | |
9169 | if e.name=="message"and not e.attr.type then | |
9170 | e.attr.type="groupchat"; | |
9171 | end | |
9172 | if e.name=="presence"then | |
9173 | e.attr.to=self.jid.."/"..self.nick; | |
9174 | end | |
9175 | if e.attr.type=="groupchat"or not e.attr.to then | |
9176 | e.attr.to=self.jid; | |
9177 | end | |
9178 | if self.opts.source then | |
9179 | e.attr.from=self.opts.source | |
9180 | end | |
9181 | self.stream:send(e); | |
9182 | end | |
9183 | function a:send_message(e) | |
9184 | self:send(i.message():tag("body"):text(e)); | |
9185 | end | |
9186 | function a:set_subject(e) | |
9187 | self:send(i.message():tag("subject"):text(e)); | |
9188 | end | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9189 | function a:leave(t) |
12 | 9190 | self.stream:event("groupchat/leaving",self); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9191 | local e=i.presence({type="unavailable"}); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9192 | if t then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9193 | e:tag("status"):text(t); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9194 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9195 | self:send(e); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9196 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9197 | function a:admin_set(e,t,a,o) |
12 | 9198 | self:send(i.iq({type="set"}) |
9199 | :query(s.."#admin") | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9200 | :tag("item",{nick=e,[t]=a}) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9201 | :tag("reason"):text(o or"")); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9202 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9203 | function a:set_role(a,e,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9204 | self:admin_set(a,"role",e,t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9205 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9206 | function a:set_affiliation(t,a,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9207 | self:admin_set(t,"affiliation",a,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9208 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9209 | function a:kick(t,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9210 | self:set_role(t,"none",e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9211 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9212 | function a:ban(e,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9213 | self:set_affiliation(e,"outcast",t); |
12 | 9214 | end |
9215 | end) | |
9216 | package.preload['verse.plugins.vcard']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9217 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9218 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9219 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9220 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9221 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9222 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9223 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9224 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9225 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9226 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9227 | end |
12 | 9228 | local i=require"verse"; |
9229 | local o=require"util.vcard"; | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9230 | local e="vcard-temp"; |
12 | 9231 | function i.plugins.vcard(a) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9232 | function a:get_vcard(n,t) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9233 | a:send_iq(i.iq({to=n,type="get"}) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9234 | :tag("vCard",{xmlns=e}),t and function(a) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9235 | local e=a:get_child("vCard",e); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9236 | if a.attr.type=="result"and e then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9237 | e=o.from_xep54(e) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9238 | t(e) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9239 | else |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9240 | t(false) |
12 | 9241 | end |
9242 | end or nil); | |
9243 | end | |
9244 | function a:set_vcard(e,n) | |
9245 | local t; | |
9246 | if type(e)=="table"and e.name then | |
9247 | t=e; | |
9248 | elseif type(e)=="string"then | |
9249 | t=o.to_xep54(o.from_text(e)[1]); | |
9250 | elseif type(e)=="table"then | |
9251 | t=o.to_xep54(e); | |
9252 | error("Converting a table to vCard not implemented") | |
9253 | end | |
9254 | if not t then return false end | |
9255 | a:debug("setting vcard to %s",tostring(t)); | |
9256 | a:send_iq(i.iq({type="set"}) | |
9257 | :add_child(t),n); | |
9258 | end | |
9259 | end | |
9260 | end) | |
9261 | package.preload['verse.plugins.vcard_update']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9262 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9263 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9264 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9265 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9266 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9267 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9268 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9269 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9270 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9271 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9272 | end |
12 | 9273 | local n=require"verse"; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9274 | local i="vcard-temp:x:update"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9275 | local r=require("util.hashes").sha1; |
12 | 9276 | local e,t=pcall(function() |
9277 | local e=require("util.encodings").base64.decode; | |
9278 | assert(e("SGVsbG8=")=="Hello") | |
9279 | return e; | |
9280 | end); | |
9281 | if not e then | |
9282 | e,t=pcall(function()return require("mime").unb64;end); | |
9283 | if not e then | |
9284 | error("Could not find a base64 decoder") | |
9285 | end | |
9286 | end | |
9287 | local h=t; | |
9288 | function n.plugins.vcard_update(e) | |
9289 | e:add_plugin("vcard"); | |
9290 | e:add_plugin("presence"); | |
9291 | local t; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9292 | local function s(a) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9293 | local o; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9294 | for e=1,#a do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9295 | if a[e].name=="PHOTO"then |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9296 | o=a[e][1]; |
12 | 9297 | break |
9298 | end | |
9299 | end | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9300 | if o then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9301 | local a=r(h(o),true); |
12 | 9302 | t=n.stanza("x",{xmlns=i}) |
9303 | :tag("photo"):text(a); | |
9304 | e:resend_presence() | |
9305 | else | |
9306 | t=nil; | |
9307 | end | |
9308 | end | |
9309 | local a; | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9310 | e:hook("ready",function() |
12 | 9311 | if a then return;end |
9312 | a=true; | |
9313 | e:get_vcard(nil,function(t) | |
9314 | if t then | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9315 | s(t) |
12 | 9316 | end |
9317 | e:event("ready"); | |
9318 | end); | |
9319 | return true; | |
9320 | end,3); | |
9321 | e:hook("presence-out",function(e) | |
9322 | if t and not e:get_child("x",i)then | |
9323 | e:add_child(t); | |
9324 | end | |
9325 | end,10); | |
9326 | end | |
9327 | end) | |
9328 | package.preload['verse.plugins.carbons']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9329 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9330 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9331 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9332 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9333 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9334 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9335 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9336 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9337 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9338 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9339 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9340 | local o=require"verse"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9341 | local a="urn:xmpp:carbons:2"; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9342 | local n="urn:xmpp:forward:0"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9343 | local h=os.time; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9344 | local s=require"util.datetime".parse; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9345 | local r=require"util.jid".bare; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9346 | function o.plugins.carbons(e) |
12 | 9347 | local t={}; |
9348 | t.enabled=false; | |
9349 | e.carbons=t; | |
9350 | function t:enable(i) | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9351 | e:send_iq(o.iq{type="set"} |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9352 | :tag("enable",{xmlns=a}) |
12 | 9353 | ,function(e) |
9354 | local e=e.attr.type=="result"; | |
9355 | if e then | |
9356 | t.enabled=true; | |
9357 | end | |
9358 | if i then | |
9359 | i(e); | |
9360 | end | |
9361 | end or nil); | |
9362 | end | |
9363 | function t:disable(i) | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9364 | e:send_iq(o.iq{type="set"} |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9365 | :tag("disable",{xmlns=a}) |
12 | 9366 | ,function(e) |
9367 | local e=e.attr.type=="result"; | |
9368 | if e then | |
9369 | t.enabled=false; | |
9370 | end | |
9371 | if i then | |
9372 | i(e); | |
9373 | end | |
9374 | end or nil); | |
9375 | end | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9376 | local i; |
12 | 9377 | e:hook("bind-success",function() |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9378 | i=r(e.jid); |
12 | 9379 | end); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9380 | e:hook("message",function(o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9381 | local t=o:get_child(nil,a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9382 | if o.attr.from==i and t then |
12 | 9383 | local o=t.name; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9384 | local t=t:get_child("forwarded",n); |
12 | 9385 | local a=t and t:get_child("message","jabber:client"); |
9386 | local t=t:get_child("delay","urn:xmpp:delay"); | |
9387 | local t=t and t.attr.stamp; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9388 | t=t and s(t); |
12 | 9389 | if a then |
9390 | return e:event("carbon",{ | |
9391 | dir=o, | |
9392 | stanza=a, | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9393 | timestamp=t or h(), |
12 | 9394 | }); |
9395 | end | |
9396 | end | |
9397 | end,1); | |
9398 | end | |
9399 | end) | |
9400 | package.preload['verse.plugins.archive']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9401 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9402 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9403 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9404 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9405 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9406 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9407 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9408 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9409 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9410 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9411 | end |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9412 | local a=require"verse"; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9413 | local t=require"util.stanza"; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9414 | local e="urn:xmpp:mam:2" |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9415 | local c="urn:xmpp:forward:0"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9416 | local u="urn:xmpp:delay"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9417 | local i=require"util.id".short; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9418 | local m=require"util.datetime".parse; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9419 | local r=require"util.datetime".datetime; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9420 | local o=require"util.dataforms".new; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9421 | local h=require"util.rsm"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9422 | local d={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9423 | local l=o{ |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9424 | {name="FORM_TYPE";type="hidden";value=e;}; |
12 | 9425 | {name="with";type="jid-single";}; |
9426 | {name="start";type="text-single"}; | |
9427 | {name="end";type="text-single";}; | |
9428 | }; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9429 | function a.plugins.archive(o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9430 | function o:query_archive(o,a,n) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9431 | local i=i(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9432 | local o=t.iq{id=i,type="set",to=o} |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9433 | :tag("query",{xmlns=e,queryid=i}); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9434 | local t,s=tonumber(a["start"]),tonumber(a["end"]); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9435 | a["start"]=t and r(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9436 | a["end"]=s and r(s); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9437 | o:add_child(l:form(a,"submit")); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9438 | o:add_child(h.generate(a)); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9439 | local t={}; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9440 | local function s(a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9441 | local e=a:get_child("result",e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9442 | if e and e.attr.queryid==i then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9443 | local a=e:get_child("forwarded",c); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9444 | local i=e.attr.id; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9445 | local e=a:get_child("delay",u); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9446 | local o=e and m(e.attr.stamp)or nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9447 | local e=a:get_child("message","jabber:client") |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9448 | t[#t+1]={id=i,stamp=o,message=e}; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9449 | return true |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9450 | end |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9451 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9452 | self:hook("message",s,1); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9453 | self:send_iq(o,function(a) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9454 | self:unhook("message",s); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9455 | if a.attr.type=="error"then |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9456 | self:warn(table.concat({a:get_error()}," ")) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9457 | n(false,a:get_error()) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9458 | return true; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9459 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9460 | local e=a:get_child("fin",e) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9461 | if e then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9462 | t.complete=e.attr.complete=="true"or e.attr.complete=="1"; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9463 | local e=h.get(e); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9464 | for e,a in pairs(e or d)do t[e]=a;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9465 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9466 | n(t); |
12 | 9467 | return true |
9468 | end); | |
9469 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9470 | local i={ |
12 | 9471 | always=true,[true]="always", |
9472 | never=false,[false]="never", | |
9473 | roster="roster", | |
9474 | } | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9475 | local function n(t) |
12 | 9476 | local e={}; |
9477 | local a=t.attr.default; | |
9478 | if a then | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9479 | e[false]=i[a]; |
12 | 9480 | end |
9481 | local a=t:get_child("always"); | |
9482 | if a then | |
9483 | for t in a:childtags("jid")do | |
9484 | local t=t:get_text(); | |
9485 | e[t]=true; | |
9486 | end | |
9487 | end | |
9488 | local t=t:get_child("never"); | |
9489 | if t then | |
9490 | for t in t:childtags("jid")do | |
9491 | local t=t:get_text(); | |
9492 | e[t]=false; | |
9493 | end | |
9494 | end | |
9495 | return e; | |
9496 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9497 | local function s(o) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9498 | local a |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9499 | a,o[false]=o[false],nil; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9500 | if a~=nil then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9501 | a=i[a]; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9502 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9503 | local i=t.stanza("prefs",{xmlns=e,default=a}) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9504 | local a=t.stanza("always"); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9505 | local e=t.stanza("never"); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9506 | for t,o in pairs(o)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9507 | (o and a or e):tag("jid"):text(t):up(); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9508 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9509 | return i:add_child(a):add_child(e); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9510 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9511 | function o:archive_prefs_get(a) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9512 | self:send_iq(t.iq{type="get"}:tag("prefs",{xmlns=e}), |
12 | 9513 | function(e) |
9514 | if e and e.attr.type=="result"and e.tags[1]then | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9515 | local t=n(e.tags[1]); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9516 | a(t,e); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9517 | else |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9518 | a(nil,e); |
12 | 9519 | end |
9520 | end); | |
9521 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9522 | function o:archive_prefs_set(e,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9523 | self:send_iq(t.iq{type="set"}:add_child(s(e)),a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9524 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9525 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9526 | end) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9527 | package.preload['verse.plugins.browsing']=(function(...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9528 | local _ENV=_ENV; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9529 | local function e(t,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9530 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9531 | package.loaded[t]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9532 | for t=1,select("#",...)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9533 | (select(t,...))(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9534 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9535 | _ENV=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9536 | _M=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9537 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9538 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9539 | local a=require"verse"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9540 | local o="urn:xmpp:browsing:0"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9541 | function a.plugins.browsing(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9542 | e:add_plugin("pep"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9543 | function e:browsing(t,i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9544 | if type(t)=="string"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9545 | t={uri=t}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9546 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9547 | local a=a.stanza("page",{xmlns=o}) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9548 | for e,t in pairs(t)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9549 | a:tag(e):text(t):up(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9550 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9551 | return e:publish_pep(a,i); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9552 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9553 | e:hook_pep(o,function(a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9554 | local t=a.item; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9555 | return e:event("browsing",{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9556 | from=a.from; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9557 | description=t:get_child_text"description"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9558 | keywords=t:get_child_text"keywords"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9559 | title=t:get_child_text"title"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9560 | uri=t:get_child_text"uri"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9561 | }); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9562 | end); |
12 | 9563 | end |
9564 | end) | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9565 | package.preload['util.http']=(function(...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9566 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9567 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9568 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9569 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9570 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9571 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9572 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9573 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9574 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9575 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9576 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9577 | local n,t=string.format,string.char; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9578 | local r,h=pairs,ipairs; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9579 | local i,o=table.insert,table.concat; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9580 | local e={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9581 | for a=0,255 do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9582 | local t=t(a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9583 | local a=n("%%%02x",a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9584 | e[t]=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9585 | e[a]=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9586 | e[a:upper()]=t; |
12 | 9587 | end |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9588 | local function n(t) |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9589 | return t and(t:gsub("[^a-zA-Z0-9.~_-]",e)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9590 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9591 | local function a(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9592 | return t and(t:gsub("%%%x%x",e)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9593 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9594 | local function e(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9595 | return e and(n(e):gsub("%%20","+")); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9596 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9597 | local function s(a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9598 | local t={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9599 | if a[1]then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9600 | for o,a in h(a)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9601 | i(t,e(a.name).."="..e(a.value)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9602 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9603 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9604 | for a,o in r(a)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9605 | i(t,e(a).."="..e(o)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9606 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9607 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9608 | return o(t,"&"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9609 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9610 | local function h(e) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9611 | if not e:match("=")then return a(e);end |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9612 | local o={}; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9613 | for t,e in e:gmatch("([^=&]*)=([^&]*)")do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9614 | t,e=t:gsub("%+","%%20"),e:gsub("%+","%%20"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9615 | t,e=a(t),a(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9616 | i(o,{name=t,value=e}); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9617 | o[t]=e; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9618 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9619 | return o; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9620 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9621 | local function i(e,t) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9622 | e=","..e:gsub("[ \t]",""):lower()..","; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9623 | return e:find(","..t:lower()..",",1,true)~=nil; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9624 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9625 | local function o(e,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9626 | if t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9627 | if e:sub(-1,-1)~="/"then e=e.."/";end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9628 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9629 | if e:sub(-1,-1)=="/"then e=e:sub(1,-2);end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9630 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9631 | if e:sub(1,1)~="/"then e="/"..e;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9632 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9633 | end |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9634 | return{ |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9635 | urlencode=n,urldecode=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9636 | formencode=s,formdecode=h; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9637 | contains_token=i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9638 | normalize_path=o; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9639 | }; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9640 | end) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9641 | package.preload['net.http.parser']=(function(...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9642 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9643 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9644 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9645 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9646 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9647 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9648 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9649 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9650 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9651 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9652 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9653 | local u=tonumber; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9654 | local g=assert; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9655 | local z=require"socket.url".parse; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9656 | local t=require"util.http".urldecode; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9657 | local j=require"util.dbuffer"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9658 | local function x(e) |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9659 | e=t((e:gsub("//+","/"))); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9660 | if e:sub(1,1)~="/"then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9661 | e="/"..e; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9662 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9663 | local t=0; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9664 | for e in e:gmatch("([^/]+)/")do |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9665 | if e==".."then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9666 | t=t-1; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9667 | elseif e~="."then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9668 | t=t+1; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9669 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9670 | if t<0 then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9671 | return nil; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9672 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9673 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9674 | return e; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9675 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9676 | local q={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9677 | function q.new(l,s,e,h) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9678 | local f=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9679 | if not e or e=="server"then f=false;else g(e=="client","Invalid parser type");end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9680 | local v=u(h and h().body_size_limit)or 10*1024*1024; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9681 | local n=u(h and h().head_size_limit)or 10*1024; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9682 | local k=u(h and h().buffer_size_limit)or v*2; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9683 | local a=j.new(k); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9684 | local d; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9685 | local r=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9686 | local e; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9687 | local t; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9688 | local w; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9689 | local o; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9690 | return{ |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9691 | feed=function(c,i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9692 | if o then return nil,"parse has failed";end |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9693 | if not i then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9694 | if r and f and not t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9695 | a:collapse(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9696 | e.body=a:read_chunk()or""; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9697 | e.partial=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9698 | l(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9699 | r=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9700 | elseif a:length()~=0 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9701 | o=true;return s("unexpected-eof"); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9702 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9703 | return; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9704 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9705 | if not a:write(i)then o=true;return s("max-buffer-size-exceeded");end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9706 | while a:length()>0 do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9707 | if r==nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9708 | local b=a:sub(1,n):find("\r\n\r\n",nil,true); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9709 | if not b then return;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9710 | local p,c,m,i,g; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9711 | local y; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9712 | local n={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9713 | for t in a:read(b+3):gmatch("([^\r\n]+)\r\n")do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9714 | if y then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9715 | local e,t=t:match("^([^%s:]+): *(.*)$"); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9716 | if not e then o=true;return s("invalid-header-line");end |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9717 | e=e:lower(); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9718 | n[e]=n[e]and n[e]..","..t or t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9719 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9720 | y=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9721 | if f then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9722 | m,i,g=t:match("^HTTP/(1%.[01]) (%d%d%d) (.*)$"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9723 | i=u(i); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9724 | if not i then o=true;return s("invalid-status-line");end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9725 | w=not |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9726 | ((h and h().method=="HEAD") |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9727 | or(i==204 or i==304 or i==301) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9728 | or(i>=100 and i<200)); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9729 | else |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9730 | p,c,m=t:match("^(%w+) (%S+) HTTP/(1%.[01])$"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9731 | if not p then o=true;return s("invalid-status-line");end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9732 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9733 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9734 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9735 | if not y then o=true;return s("invalid-status-line");end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9736 | d=w and n["transfer-encoding"]=="chunked"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9737 | t=u(n["content-length"]); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9738 | if f then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9739 | if not w then t=0;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9740 | e={ |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9741 | code=i; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9742 | httpversion=m; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9743 | headers=n; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9744 | body=false; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9745 | body_length=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9746 | chunked=d; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9747 | partial=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9748 | responseversion=m; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9749 | responseheaders=n; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9750 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9751 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9752 | local a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9753 | if c:byte()==47 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9754 | local t,e=c:match("([^?]*).?(.*)"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9755 | if e==""then e=nil;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9756 | a={path=t,query=e}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9757 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9758 | a=z(c); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9759 | if not(a and a.path)then o=true;return s("invalid-url");end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9760 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9761 | c=x(a.path); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9762 | n.host=a.host or n.host; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9763 | t=t or 0; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9764 | e={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9765 | method=p; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9766 | url=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9767 | path=c; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9768 | httpversion=m; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9769 | headers=n; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9770 | body=false; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9771 | body_sink=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9772 | chunked=d; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9773 | partial=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9774 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9775 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9776 | if not t or t>v then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9777 | l(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9778 | if not e.body_sink and(t and t>v)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9779 | o=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9780 | return s("content-length-limit-exceeded"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9781 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9782 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9783 | if d and not e.body_sink then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9784 | l(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9785 | if not e.body_sink then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9786 | e.body_buffer=j.new(k); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9787 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9788 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9789 | r=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9790 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9791 | if r then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9792 | if d then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9793 | local n=a:sub(1,512); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9794 | local t,i=n:match("^(%x+)[^\r\n]*\r\n()"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9795 | if not t then return;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9796 | t=t and u(t,16); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9797 | if not t then o=true;return s("invalid-chunk-size");end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9798 | if t==0 and n:find("\r\n\r\n",i-2,true)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9799 | local t=e.body_buffer; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9800 | if t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9801 | e.body_buffer=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9802 | t:collapse(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9803 | e.body=t:read_chunk()or""; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9804 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9805 | a:collapse(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9806 | local t=a:read_chunk(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9807 | t=t:gsub("^.-\r\n\r\n",""); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9808 | a:write(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9809 | r,d=nil,nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9810 | e.partial=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9811 | l(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9812 | elseif a:length()-i-1>=t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9813 | a:discard(i-1); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9814 | (e.body_sink or e.body_buffer):write(a:read(t)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9815 | a:discard(2); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9816 | else |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9817 | break; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9818 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9819 | elseif e.body_sink then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9820 | local i=a:read_chunk(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9821 | while i and(not t or t>0)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9822 | if e.body_sink:write(i)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9823 | if t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9824 | t=t-#i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9825 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9826 | i=a:read_chunk(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9827 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9828 | o=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9829 | return s("body-sink-write-failure"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9830 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9831 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9832 | if t==0 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9833 | r=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9834 | e.partial=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9835 | l(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9836 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9837 | elseif not t or a:length()>=t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9838 | g(not d) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9839 | e.body=t and a:read(t)or a:read_chunk()or""; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9840 | r=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9841 | e.partial=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9842 | l(e); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9843 | else |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9844 | break; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9845 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9846 | else |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9847 | break; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9848 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9849 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9850 | end; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9851 | }; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9852 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9853 | return q; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9854 | end) |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9855 | package.preload['net.http']=(function(...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9856 | local _ENV=_ENV; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9857 | local function e(t,...) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9858 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9859 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9860 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9861 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9862 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9863 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9864 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9865 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
9866 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9867 | local O=require"util.encodings".base64.encode; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9868 | local A=require"socket.url" |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9869 | local E=require"net.http.parser".new; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9870 | local d=require"util.http"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9871 | local T=require"util.events"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9872 | local _=require"util.x509".verify_identity; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9873 | local k=require"util.promise"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9874 | local g=require"net.http.errors"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9875 | local b=require"net.resolvers.basic"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9876 | local v=require"net.connect".connect; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9877 | local y=pcall(require,"ssl"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9878 | local s,f=table.insert,table.concat; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9879 | local l=pairs; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9880 | local p,c,t= |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9881 | tonumber,tostring,debug.traceback; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9882 | local q=os.time; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9883 | local z=require"util.xpcall".xpcall; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9884 | local w=error |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9885 | local o=require"util.logger".init("http"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9886 | local _ENV=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9887 | local a={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9888 | local function x(e)return(c(e):match("%x+$"));end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9889 | local i={default_port=80,default_mode="*a"}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9890 | local function j(e)o("error","Traceback[http]: %s",t(c(e),2));return e;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9891 | local function h(e,t,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9892 | if not t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9893 | o("error","Request '%s': error in callback: %s",e.id,(...)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9894 | if not e.suppress_errors then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9895 | w(...); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9896 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9897 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9898 | return...; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9899 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9900 | local function r(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9901 | local t=e.conn; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9902 | if t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9903 | e.conn=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9904 | t:close() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9905 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9906 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9907 | local function m(e,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9908 | if e.callback then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9909 | e.callback(t or"cancelled",0,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9910 | e.callback=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9911 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9912 | if e.conn then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9913 | r(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9914 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9915 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9916 | local function u(e,n,t) |
12 | 9917 | if not e.parser then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9918 | local function i(t) |
12 | 9919 | if e.callback then |
9920 | e.callback(t or"connection-closed",0,e); | |
9921 | e.callback=nil; | |
9922 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9923 | r(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9924 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9925 | if not n then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9926 | i(t); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9927 | return; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9928 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9929 | local a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9930 | local function n(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9931 | if t.partial then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9932 | o("debug","Request '%s': partial response (%s%s)", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9933 | e.id, |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9934 | t.chunked and"chunked, "or"", |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9935 | t.body_length and("%d bytes"):format(t.body_length)or"unknown length" |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9936 | ); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9937 | if e.streaming_handler then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9938 | o("debug","Request '%s': Streaming via handler",e.id); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9939 | t.body_sink,a=e.streaming_handler(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9940 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9941 | return; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9942 | elseif a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9943 | o("debug","Request '%s': Finalizing response stream"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9944 | a(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9945 | end |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9946 | if e.callback then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9947 | e.callback(t.body,t.code,t,e); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9948 | e.callback=nil; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
9949 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9950 | r(e); |
12 | 9951 | end |
9952 | local function t() | |
9953 | return e; | |
9954 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9955 | e.parser=E(n,i,"client",t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9956 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9957 | e.parser:feed(n); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9958 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9959 | function i.onconnect(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9960 | local e=a[t]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9961 | e.write=function(...)return e.conn:write(...);end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9962 | local r=e.callback; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9963 | e.callback=function(i,a,n,s) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9964 | do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9965 | local t={http=e.http,url=e.url,request=e,response=n,content=i,code=a,callback=e.callback}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9966 | e.http.events.fire_event("response",t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9967 | i,a,n=t.content,t.code,t.response; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9968 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9969 | o("debug","Request '%s': Calling callback, status %s",e.id,a or"---"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9970 | return h(e.id,z(r,j,i,a,n,s)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9971 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9972 | e.reader=u; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9973 | e.state="status"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9974 | e.cancel=m; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9975 | a[e.conn]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9976 | if not e.insecure and t:ssl()then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9977 | local a=t:socket(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9978 | local o=a.getpeerverification and a:getpeerverification(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9979 | if not o then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9980 | e.callback("certificate-chain-invalid",0,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9981 | e.callback=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9982 | t:close(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9983 | return; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9984 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9985 | local a=a.getpeercertificate and a:getpeercertificate(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9986 | if not a or not _(e.host,false,a)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9987 | e.callback("certificate-verify-failed",0,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9988 | e.callback=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9989 | t:close(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9990 | return; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9991 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9992 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9993 | local a={e.method or"GET"," ",e.path," HTTP/1.1\r\n"}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9994 | if e.query then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9995 | s(a,4,"?"..e.query); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9996 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9997 | for e,t in l(e.headers)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9998 | s(a,e..": "..t.."\r\n"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
9999 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10000 | s(a,"\r\n") |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10001 | t:write(f(a)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10002 | if e.body then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10003 | t:write(e.body); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10004 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10005 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10006 | function i.onincoming(t,i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10007 | local e=a[t]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10008 | if not e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10009 | o("warn","Received response from connection %s with no request attached!",t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10010 | return; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10011 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10012 | if i and e.reader then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10013 | e:reader(i); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10014 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10015 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10016 | function i.ondisconnect(t,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10017 | local e=a[t]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10018 | if e and e.conn then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10019 | e:reader(nil,o or"closed"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10020 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10021 | a[t]=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10022 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10023 | function i.onattach(e,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10024 | a[e]=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10025 | t.conn=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10026 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10027 | function i.ondetach(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10028 | a[e]=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10029 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10030 | function i.onfail(e,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10031 | e.http.events.fire_event("request-connection-error",{http=e.http,request=e,url=e.url,err=t}); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10032 | e.callback(t or"connection failed",0,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10033 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10034 | local function f(a,s,t,n) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10035 | local e=A.parse(s); |
12 | 10036 | if not(e and e.host)then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10037 | n("invalid-url",0,e); |
12 | 10038 | return nil,"invalid-url"; |
10039 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10040 | e.url=s; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10041 | e.http=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10042 | e.time=q(); |
12 | 10043 | if not e.path then |
10044 | e.path="/"; | |
10045 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10046 | e.id=t and t.id or x(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10047 | do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10048 | local o={http=a,url=s,request=e,options=t,callback=n}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10049 | local a=a.events.fire_event("pre-request",o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10050 | if a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10051 | return a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10052 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10053 | e,s,t,e.callback=o.request,o.url,o.options,o.callback; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10054 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10055 | local d,h,u; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10056 | local m,n=e.host,e.port; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10057 | local r=m; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10058 | if(n=="80"and e.scheme=="http") |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10059 | or(n=="443"and e.scheme=="https")then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10060 | n=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10061 | elseif n then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10062 | r=r..":"..n; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10063 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10064 | h={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10065 | ["Host"]=r; |
12 | 10066 | ["User-Agent"]="Prosody XMPP Server"; |
10067 | }; | |
10068 | if e.userinfo then | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10069 | h["Authorization"]="Basic "..O(e.userinfo); |
12 | 10070 | end |
10071 | if t then | |
10072 | e.onlystatus=t.onlystatus; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10073 | u=t.body; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10074 | if u then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10075 | d="POST"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10076 | h["Content-Length"]=c(#u); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10077 | h["Content-Type"]="application/x-www-form-urlencoded"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10078 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10079 | if t.method then d=t.method;end |
12 | 10080 | if t.headers then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10081 | for t,e in l(t.headers)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10082 | h[t]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10083 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10084 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10085 | e.insecure=t.insecure; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10086 | e.suppress_errors=t.suppress_errors; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10087 | e.streaming_handler=t.streaming_handler; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10088 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10089 | o("debug","Making %s %s request '%s' to %s",e.scheme:upper(),d or"GET",e.id,(t and t.suppress_url and r)or s); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10090 | e.method,e.headers,e.body=d,h,u; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10091 | local o=e.scheme=="https"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10092 | if o and not y then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10093 | w("SSL not available, unable to contact https URL"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10094 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10095 | local r=n and p(n)or(o and 443 or 80); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10096 | local n=a.options and a.options.use_dane; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10097 | local h=false; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10098 | if o then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10099 | h=t and t.sslctx or a.options and a.options.sslctx; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10100 | if t and t.use_dane~=nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10101 | n=t.use_dane; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10102 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10103 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10104 | local t=b.new(m,r,"tcp",{servername=e.host;use_dane=n}); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10105 | v(t,i,{sslctx=h},e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10106 | a.events.fire_event("request",{http=a,request=e,url=s}); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10107 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10108 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10109 | local function e(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10110 | local e={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10111 | options=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10112 | request=function(o,a,t,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10113 | if e~=nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10114 | return f(o,a,t,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10115 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10116 | return k.new(function(i,n) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10117 | f(o,a,t,function(t,a,e,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10118 | if a==0 then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10119 | n(g.new(t,{request=e})); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10120 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10121 | e.request=o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10122 | i(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10123 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10124 | end); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10125 | end); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10126 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10127 | end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10128 | new=t and function(o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10129 | local a={}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10130 | for e,t in l(t)do a[e]=t;end |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10131 | if o then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10132 | for t,e in l(o)do a[t]=e;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10133 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10134 | return e(a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10135 | end or e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10136 | events=T.new(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10137 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10138 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10139 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10140 | local t=e({ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10141 | sslctx={mode="client",protocol="sslv23",options={"no_sslv2","no_sslv3"},alpn="http/1.1",verify="peer"}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10142 | suppress_errors=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10143 | }); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10144 | return{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10145 | request=function(e,a,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10146 | return t:request(e,a,o); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10147 | end; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10148 | default=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10149 | new=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10150 | events=t.events; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10151 | urlencode=d.urlencode; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10152 | urldecode=d.urldecode; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10153 | formencode=d.formencode; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10154 | formdecode=d.formdecode; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10155 | destroy_request=r; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10156 | features={ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10157 | sni=true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10158 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10159 | }; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10160 | end) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10161 | package.preload['util.x509']=(function(...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10162 | local _ENV=_ENV; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10163 | local function e(t,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10164 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10165 | package.loaded[t]=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10166 | for t=1,select("#",...)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10167 | (select(t,...))(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10168 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10169 | _ENV=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10170 | _M=e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10171 | return e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10172 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10173 | local o=require"util.encodings".stringprep.nameprep; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10174 | local r=require"util.encodings".idna.to_ascii; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10175 | local y=require"util.encodings".idna.to_unicode; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10176 | local c=require"util.encodings".base64; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10177 | local e=require"util.logger".init("x509"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10178 | local p=require"util.multitable"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10179 | local v=string.format; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10180 | local d=ipairs; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10181 | local _ENV=nil; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10182 | local u="2.5.4.3"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10183 | local h="2.5.29.17"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10184 | local s="1.3.6.1.5.5.7.8.5"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10185 | local n="1.3.6.1.5.5.7.8.7"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10186 | local function l(o,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10187 | local t=r(o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10188 | if t==nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10189 | e("info","Host %s failed IDNA ToASCII operation",o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10190 | return false |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10191 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10192 | t=t:lower() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10193 | local o=t:gsub("^[^.]+%.","") |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10194 | for i=1,#a do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10195 | local a=a[i] |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10196 | if t==a:lower()then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10197 | e("debug","Cert dNSName %s matched hostname",a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10198 | return true |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10199 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10200 | if a:match("^%*%.")then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10201 | local t=a:gsub("^[^.]+%.","") |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10202 | if o==t:lower()then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10203 | e("debug","Cert dNSName %s matched hostname",a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10204 | return true |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10205 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10206 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10207 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10208 | return false |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10209 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10210 | local function w(a,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10211 | local i=o(a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10212 | for a=1,#t do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10213 | local t=t[a] |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10214 | if t:match("[@/]")then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10215 | e("debug","Ignoring xmppAddr %s because it's not a bare domain",t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10216 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10217 | local a=o(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10218 | if a==nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10219 | e("info","Ignoring xmppAddr %s, failed nameprep!",t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10220 | else |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10221 | if i==a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10222 | e("debug","Cert xmppAddr %s matched hostname",t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10223 | return true |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10224 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10225 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10226 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10227 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10228 | return false |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10229 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10230 | local function f(i,o,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10231 | local a=r(i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10232 | if a==nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10233 | e("info","Host %s failed IDNA ToASCII operation",i); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10234 | return false |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10235 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10236 | if o:match("^_")==nil then o="_"..o end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10237 | a=a:lower(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10238 | local n=a:gsub("^[^.]+%.","") |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10239 | for i=1,#t do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10240 | local i,t=t[i]:match("^(_[^.]+)%.(.*)"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10241 | if o==i then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10242 | if a==t:lower()then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10243 | e("debug","Cert SRVName %s matched hostname",t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10244 | return true; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10245 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10246 | if t:match("^%*%.")then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10247 | local a=t:gsub("^[^.]+%.","") |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10248 | if n==a:lower()then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10249 | e("debug","Cert SRVName %s matched hostname",t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10250 | return true |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10251 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10252 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10253 | if a==t:lower()then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10254 | e("debug","Cert SRVName %s matched hostname",t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10255 | return true |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10256 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10257 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10258 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10259 | return false |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10260 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10261 | local function m(o,a,i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10262 | if i.setencode then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10263 | i:setencode("utf8"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10264 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10265 | local t=i:extensions() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10266 | if t[h]then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10267 | local e=t[h]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10268 | local t=false |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10269 | if e[s]then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10270 | t=true |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10271 | if a=="_xmpp-client"or a=="_xmpp-server"then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10272 | if w(o,e[s])then return true end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10273 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10274 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10275 | if e[n]then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10276 | t=true |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10277 | if a and f(o,a,e[n])then return true end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10278 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10279 | if e["dNSName"]then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10280 | t=true |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10281 | if l(o,e["dNSName"])then return true end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10282 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10283 | if e["uniformResourceIdentifier"]then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10284 | t=true |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10285 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10286 | if t then return false end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10287 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10288 | local a=i:subject() |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10289 | local t=nil |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10290 | for o=1,#a do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10291 | local a=a[o] |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10292 | if a["oid"]==u then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10293 | if t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10294 | e("info","Certificate has multiple common names") |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10295 | return false |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10296 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10297 | t=a["value"]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10298 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10299 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10300 | if t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10301 | return l(o,{t}) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10302 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10303 | return false |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10304 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10305 | local function l(i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10306 | if i.setencode then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10307 | i:setencode("utf8"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10308 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10309 | local a=p.new(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10310 | local e=i:extensions(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10311 | local t=e[h]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10312 | if t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10313 | if t["dNSName"]then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10314 | for t,e in d(t["dNSName"])do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10315 | local t=e:sub(1,2)=="*."; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10316 | if t then e=e:sub(3);end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10317 | e=y(o(e)); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10318 | if e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10319 | if t then e="*."..e;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10320 | a:set(e,"*",true); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10321 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10322 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10323 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10324 | if t[s]then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10325 | for t,e in d(t[s])do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10326 | e=o(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10327 | if e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10328 | a:set(e,"xmpp-client",true); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10329 | a:set(e,"xmpp-server",true); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10330 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10331 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10332 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10333 | if t[n]then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10334 | for t,e in d(t[n])do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10335 | local t,e=e:match("^_([^.]+)%.(.*)"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10336 | if t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10337 | e=o(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10338 | if e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10339 | a:set(e,t,true); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10340 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10341 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10342 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10343 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10344 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10345 | local e=i:subject(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10346 | for t=1,#e do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10347 | local e=e[t]; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10348 | if e.oid==u then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10349 | local e=o(e.value); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10350 | if e and r(e)then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10351 | a:set(e,"*",true); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10352 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10353 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10354 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10355 | return a.data; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10356 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10357 | local t="%-%-%-%-%-BEGIN ([A-Z ]+)%-%-%-%-%-\r?\n".. |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10358 | "([0-9A-Za-z+/=\r\n]*)\r?\n%-%-%-%-%-END %1%-%-%-%-%-"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10359 | local function a(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10360 | local e,t=e:match(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10361 | if e and t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10362 | return c.decode(t),e; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10363 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10364 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10365 | local n=('.'):rep(64); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10366 | local i="-----BEGIN %s-----\n%s\n-----END %s-----\n" |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10367 | local function o(t,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10368 | e=e and e:upper()or"CERTIFICATE"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10369 | t=c.encode(t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10370 | return v(i,e,t:gsub(n,'%0\n',(#t-1)/64),e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10371 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10372 | return{ |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10373 | verify_identity=m; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10374 | get_identities=l; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10375 | pem2der=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10376 | der2pem=o; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10377 | }; |
12 | 10378 | end) |
10379 | package.preload['verse.bosh']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10380 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10381 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10382 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10383 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10384 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10385 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10386 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10387 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10388 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10389 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10390 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10391 | local n=require"util.xmppstream".new; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10392 | local o=require"util.stanza"; |
12 | 10393 | require"net.httpclient_listener"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10394 | local a=require"net.http"; |
12 | 10395 | local e=setmetatable({},{__index=verse.stream_mt}); |
10396 | e.__index=e; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10397 | local h="http://etherx.jabber.org/streams"; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10398 | local s="http://jabber.org/protocol/httpbind"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10399 | local t=5; |
12 | 10400 | function verse.new_bosh(a,t) |
10401 | local t={ | |
10402 | bosh_conn_pool={}; | |
10403 | bosh_waiting_requests={}; | |
10404 | bosh_rid=math.random(1,999999); | |
10405 | bosh_outgoing_buffer={}; | |
10406 | bosh_url=t; | |
10407 | conn={}; | |
10408 | }; | |
10409 | function t:reopen() | |
10410 | self.bosh_need_restart=true; | |
10411 | self:flush(); | |
10412 | end | |
10413 | local t=verse.new(a,t); | |
10414 | return setmetatable(t,e); | |
10415 | end | |
10416 | function e:connect() | |
10417 | self:_send_session_request(); | |
10418 | end | |
10419 | function e:send(e) | |
10420 | self:debug("Putting into BOSH send buffer: %s",tostring(e)); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10421 | self.bosh_outgoing_buffer[#self.bosh_outgoing_buffer+1]=o.clone(e); |
12 | 10422 | self:flush(); |
10423 | end | |
10424 | function e:flush() | |
10425 | if self.connected | |
10426 | and#self.bosh_waiting_requests<self.bosh_max_requests | |
10427 | and(#self.bosh_waiting_requests==0 | |
10428 | or#self.bosh_outgoing_buffer>0 | |
10429 | or self.bosh_need_restart)then | |
10430 | self:debug("Flushing..."); | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
10431 | local e=self:_make_body(); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
10432 | local t=self.bosh_outgoing_buffer; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10433 | for o,a in ipairs(t)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10434 | e:add_child(a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10435 | t[o]=nil; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
10436 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
10437 | self:_make_request(e); |
12 | 10438 | else |
10439 | self:debug("Decided not to flush."); | |
10440 | end | |
10441 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10442 | function e:_make_request(o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10443 | local e,t=a.request(self.bosh_url,{body=tostring(o)},function(i,e,a) |
12 | 10444 | if e~=0 then |
10445 | self.inactive_since=nil; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10446 | return self:_handle_response(i,e,a); |
12 | 10447 | end |
10448 | local e=os.time(); | |
10449 | if not self.inactive_since then | |
10450 | self.inactive_since=e; | |
10451 | elseif e-self.inactive_since>self.bosh_max_inactivity then | |
10452 | return self:_disconnected(); | |
10453 | else | |
10454 | self:debug("%d seconds left to reconnect, retrying in %d seconds...", | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10455 | self.bosh_max_inactivity-(e-self.inactive_since),t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10456 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10457 | timer.add_task(t,function() |
12 | 10458 | self:debug("Retrying request..."); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10459 | for t,e in ipairs(self.bosh_waiting_requests)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10460 | if e==a then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10461 | table.remove(self.bosh_waiting_requests,t); |
12 | 10462 | break; |
10463 | end | |
10464 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10465 | self:_make_request(o); |
12 | 10466 | end); |
10467 | end); | |
10468 | if e then | |
10469 | table.insert(self.bosh_waiting_requests,e); | |
10470 | else | |
10471 | self:warn("Request failed instantly: %s",t); | |
10472 | end | |
10473 | end | |
10474 | function e:_disconnected() | |
10475 | self.connected=nil; | |
10476 | self:event("disconnected"); | |
10477 | end | |
10478 | function e:_send_session_request() | |
10479 | local e=self:_make_body(); | |
10480 | e.attr.hold="1"; | |
10481 | e.attr.wait="60"; | |
10482 | e.attr["xml:lang"]="en"; | |
10483 | e.attr.ver="1.6"; | |
10484 | e.attr.from=self.jid; | |
10485 | e.attr.to=self.host; | |
10486 | e.attr.secure='true'; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10487 | a.request(self.bosh_url,{body=tostring(e)},function(e,t) |
12 | 10488 | if t==0 then |
10489 | return self:_disconnected(); | |
10490 | end | |
10491 | local e=self:_parse_response(e) | |
10492 | if not e then | |
10493 | self:warn("Invalid session creation response"); | |
10494 | self:_disconnected(); | |
10495 | return; | |
10496 | end | |
10497 | self.bosh_sid=e.attr.sid; | |
10498 | self.bosh_wait=tonumber(e.attr.wait); | |
10499 | self.bosh_hold=tonumber(e.attr.hold); | |
10500 | self.bosh_max_inactivity=tonumber(e.attr.inactivity); | |
10501 | self.bosh_max_requests=tonumber(e.attr.requests)or self.bosh_hold; | |
10502 | self.connected=true; | |
10503 | self:event("connected"); | |
10504 | self:_handle_response_payload(e); | |
10505 | end); | |
10506 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10507 | function e:_handle_response(a,t,e) |
12 | 10508 | if self.bosh_waiting_requests[1]~=e then |
10509 | self:warn("Server replied to request that wasn't the oldest"); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10510 | for t,a in ipairs(self.bosh_waiting_requests)do |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10511 | if a==e then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10512 | self.bosh_waiting_requests[t]=nil; |
12 | 10513 | break; |
10514 | end | |
10515 | end | |
10516 | else | |
10517 | table.remove(self.bosh_waiting_requests,1); | |
10518 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10519 | local e=self:_parse_response(a); |
12 | 10520 | if e then |
10521 | self:_handle_response_payload(e); | |
10522 | end | |
10523 | self:flush(); | |
10524 | end | |
10525 | function e:_handle_response_payload(t) | |
10526 | local e=t.tags; | |
10527 | for t=1,#e do | |
10528 | local e=e[t]; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10529 | if e.attr.xmlns==h then |
12 | 10530 | self:event("stream-"..e.name,e); |
10531 | elseif e.attr.xmlns then | |
10532 | self:event("stream/"..e.attr.xmlns,e); | |
10533 | else | |
10534 | self:event("stanza",e); | |
10535 | end | |
10536 | end | |
10537 | if t.attr.type=="terminate"then | |
10538 | self:_disconnected({reason=t.attr.condition}); | |
10539 | end | |
10540 | end | |
10541 | local a={ | |
10542 | stream_ns="http://jabber.org/protocol/httpbind",stream_tag="body", | |
10543 | default_ns="jabber:client", | |
10544 | streamopened=function(e,t)e.notopen=nil;e.payload=verse.stanza("body",t);return true;end; | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10545 | handlestanza=function(e,t)e.payload:add_child(t);end; |
12 | 10546 | }; |
10547 | function e:_parse_response(e) | |
10548 | self:debug("Parsing response: %s",e); | |
10549 | if e==nil then | |
10550 | self:debug("%s",debug.traceback()); | |
10551 | self:_disconnected(); | |
10552 | return; | |
10553 | end | |
10554 | local t={notopen=true,stream=self}; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10555 | local a=n(t,a); |
12 | 10556 | a:feed(e); |
10557 | return t.payload; | |
10558 | end | |
10559 | function e:_make_body() | |
10560 | self.bosh_rid=self.bosh_rid+1; | |
10561 | local e=verse.stanza("body",{ | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10562 | xmlns=s; |
12 | 10563 | content="text/xml; charset=utf-8"; |
10564 | sid=self.bosh_sid; | |
10565 | rid=self.bosh_rid; | |
10566 | }); | |
10567 | if self.bosh_need_restart then | |
10568 | self.bosh_need_restart=nil; | |
10569 | e.attr.restart='true'; | |
10570 | end | |
10571 | return e; | |
10572 | end | |
10573 | end) | |
10574 | package.preload['verse.client']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10575 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10576 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10577 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10578 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10579 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10580 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10581 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10582 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10583 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10584 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10585 | end |
12 | 10586 | local t=require"verse"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10587 | local i=t.stream_mt; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10588 | local d=require"util.jid".split; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10589 | local r=require"net.adns"; |
12 | 10590 | local a=require"util.stanza"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10591 | local o=require"util.id".short; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10592 | math.randomseed((require"socket".gettime()*1e6)%2147483648); |
12 | 10593 | t.message,t.presence,t.iq,t.stanza,t.reply,t.error_reply= |
10594 | a.message,a.presence,a.iq,a.stanza,a.reply,a.error_reply; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10595 | function t.iq(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10596 | if not e.id then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10597 | e.id=o(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10598 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10599 | return a.iq(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10600 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10601 | local s=require"util.xmppstream".new; |
12 | 10602 | local n="http://etherx.jabber.org/streams"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10603 | local function h(e,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10604 | if e.priority==t.priority then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10605 | if not e.weight_r then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10606 | e.weight_r=math.random(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10607 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10608 | if not t.weight_r then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10609 | t.weight_r=math.random(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10610 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10611 | return(1+e.weight)*e.weight_r>(1+t.weight)*t.weight_r; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10612 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10613 | return e.priority<t.priority; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10614 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10615 | local o={ |
12 | 10616 | stream_ns=n, |
10617 | stream_tag="stream", | |
10618 | default_ns="jabber:client"}; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10619 | function o.streamopened(e,t) |
12 | 10620 | e.stream_id=t.id; |
10621 | if not e:event("opened",t)then | |
10622 | e.notopen=nil; | |
10623 | end | |
10624 | return true; | |
10625 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10626 | function o.streamclosed(e) |
12 | 10627 | e.notopen=true; |
10628 | if not e.closed then | |
10629 | e:send("</stream:stream>"); | |
10630 | e.closed=true; | |
10631 | end | |
10632 | e:event("closed"); | |
10633 | return e:close("stream closed") | |
10634 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10635 | function o.handlestanza(t,e) |
12 | 10636 | if e.attr.xmlns==n then |
10637 | return t:event("stream-"..e.name,e); | |
10638 | elseif e.attr.xmlns then | |
10639 | return t:event("stream/"..e.attr.xmlns,e); | |
10640 | end | |
10641 | return t:event("stanza",e); | |
10642 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10643 | function o.error(a,t,e) |
12 | 10644 | if a:event(t,e)==nil then |
10645 | if e then | |
10646 | local t=e:get_child(nil,"urn:ietf:params:xml:ns:xmpp-streams"); | |
10647 | local e=e:get_child_text("text","urn:ietf:params:xml:ns:xmpp-streams"); | |
10648 | error(t.name..(e and": "..e or"")); | |
10649 | else | |
10650 | error(e and e.name or t or"unknown-error"); | |
10651 | end | |
10652 | end | |
10653 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10654 | function i:reset() |
12 | 10655 | if self.stream then |
10656 | self.stream:reset(); | |
10657 | else | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10658 | self.stream=s(self,o); |
12 | 10659 | end |
10660 | self.notopen=true; | |
10661 | return true; | |
10662 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10663 | function i:connect_client(e,i,a,o) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10664 | self.jid,self.password=e,i; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10665 | self.client_key,self.server_key=a,o; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10666 | self.username,self.host,self.resource=d(e); |
12 | 10667 | self:add_plugin("tls"); |
10668 | self:add_plugin("sasl"); | |
10669 | self:add_plugin("bind"); | |
10670 | function self.data(t,e) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10671 | local t,a=self.stream:feed(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10672 | if t then return;end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10673 | self:debug("Received invalid XML (%s) %d bytes: %s",tostring(a),#e,e:sub(1,300):gsub("[\r\n]+"," ")); |
12 | 10674 | self:close("xml-not-well-formed"); |
10675 | end | |
10676 | self:hook("connected",function()self:reopen();end); | |
10677 | self:hook("incoming-raw",function(e)return self.data(self.conn,e);end); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10678 | self:hook("read-timeout",function()self:send(" ");return true;end,-1); |
12 | 10679 | self.curr_id=0; |
10680 | self.tracked_iqs={}; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10681 | self:hook("stanza",function(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10682 | local t,a=e.attr.id,e.attr.type; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10683 | if t and e.name=="iq"and(a=="result"or a=="error")and self.tracked_iqs[t]then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10684 | self.tracked_iqs[t](e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10685 | self.tracked_iqs[t]=nil; |
12 | 10686 | return true; |
10687 | end | |
10688 | end); | |
10689 | self:hook("stanza",function(e) | |
10690 | local a; | |
10691 | if e.attr.xmlns==nil or e.attr.xmlns=="jabber:client"then | |
10692 | if e.name=="iq"and(e.attr.type=="get"or e.attr.type=="set")then | |
10693 | local o=e.tags[1]and e.tags[1].attr.xmlns; | |
10694 | if o then | |
10695 | a=self:event("iq/"..o,e); | |
10696 | if not a then | |
10697 | a=self:event("iq",e); | |
10698 | end | |
10699 | end | |
10700 | if a==nil then | |
10701 | self:send(t.error_reply(e,"cancel","service-unavailable")); | |
10702 | return true; | |
10703 | end | |
10704 | else | |
10705 | a=self:event(e.name,e); | |
10706 | end | |
10707 | end | |
10708 | return a; | |
10709 | end,-1); | |
10710 | self:hook("outgoing",function(e) | |
10711 | if e.name then | |
10712 | self:event("stanza-out",e); | |
10713 | end | |
10714 | end); | |
10715 | self:hook("stanza-out",function(e) | |
10716 | if not e.attr.xmlns then | |
10717 | self:event(e.name.."-out",e); | |
10718 | end | |
10719 | end); | |
10720 | local function e() | |
10721 | self:event("ready"); | |
10722 | end | |
10723 | self:hook("session-success",e,-1) | |
10724 | self:hook("bind-success",e,-1); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10725 | local e=self.close; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10726 | function self:close(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10727 | self.close=e; |
12 | 10728 | if not self.closed then |
10729 | self:send("</stream:stream>"); | |
10730 | self.closed=true; | |
10731 | else | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10732 | return self:close(t); |
12 | 10733 | end |
10734 | end | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10735 | local function a() |
12 | 10736 | self:connect(self.connect_host or self.host,self.connect_port or 5222); |
10737 | end | |
10738 | if not(self.connect_host or self.connect_port)then | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10739 | r.lookup(function(t) |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10740 | if t then |
12 | 10741 | local e={}; |
10742 | self.srv_hosts=e; | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10743 | for a,t in ipairs(t)do |
12 | 10744 | table.insert(e,t.srv); |
10745 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10746 | table.sort(e,h); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10747 | local t=e[1]; |
12 | 10748 | self.srv_choice=1; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10749 | if t then |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10750 | self.connect_host,self.connect_port=t.target,t.port; |
12 | 10751 | self:debug("Best record found, will connect to %s:%d",self.connect_host or self.host,self.connect_port or 5222); |
10752 | end | |
10753 | self:hook("disconnected",function() | |
10754 | if self.srv_hosts and self.srv_choice<#self.srv_hosts then | |
10755 | self.srv_choice=self.srv_choice+1; | |
10756 | local e=e[self.srv_choice]; | |
10757 | self.connect_host,self.connect_port=e.target,e.port; | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10758 | a(); |
12 | 10759 | return true; |
10760 | end | |
10761 | end,1e3); | |
10762 | self:hook("connected",function() | |
10763 | self.srv_hosts=nil; | |
10764 | end,1e3); | |
10765 | end | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10766 | a(); |
12 | 10767 | end,"_xmpp-client._tcp."..(self.host)..".","SRV"); |
10768 | else | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10769 | a(); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
10770 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
10771 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10772 | function i:reopen() |
12 | 10773 | self:reset(); |
10774 | self:send(a.stanza("stream:stream",{to=self.host,["xmlns:stream"]='http://etherx.jabber.org/streams', | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10775 | xmlns="jabber:client",version="1.0",["xml:lang"]=self.lang}):top_tag()); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10776 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10777 | function i:send_iq(e,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10778 | local t=e.attr.id or uuid.generate(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10779 | self.tracked_iqs[t]=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10780 | e.attr.id=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10781 | self:send(e); |
12 | 10782 | end |
10783 | end) | |
10784 | package.preload['verse.component']=(function(...) | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10785 | local _ENV=_ENV; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10786 | local function e(t,...) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10787 | local e=package.loaded[t]or _ENV[t]or{_NAME=t}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10788 | package.loaded[t]=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10789 | for t=1,select("#",...)do |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10790 | (select(t,...))(e); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10791 | end |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10792 | _ENV=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10793 | _M=e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10794 | return e; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10795 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10796 | local a=require"verse"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10797 | local t=a.stream_mt; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10798 | local d=require"util.jid".split; |
12 | 10799 | local e=require"lxp"; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10800 | local o=require"util.stanza"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10801 | local r=require"util.hashes".sha1; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10802 | a.message,a.presence,a.iq,a.stanza,a.reply,a.error_reply= |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10803 | o.message,o.presence,o.iq,o.stanza,o.reply,o.error_reply; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10804 | local h=require"util.xmppstream".new; |
12 | 10805 | local s="http://etherx.jabber.org/streams"; |
10806 | local i="jabber:component:accept"; | |
10807 | local n={ | |
10808 | stream_ns=s, | |
10809 | stream_tag="stream", | |
10810 | default_ns=i}; | |
10811 | function n.streamopened(e,t) | |
10812 | e.stream_id=t.id; | |
10813 | if not e:event("opened",t)then | |
10814 | e.notopen=nil; | |
10815 | end | |
10816 | return true; | |
10817 | end | |
10818 | function n.streamclosed(e) | |
10819 | return e:event("closed"); | |
10820 | end | |
10821 | function n.handlestanza(t,e) | |
10822 | if e.attr.xmlns==s then | |
10823 | return t:event("stream-"..e.name,e); | |
10824 | elseif e.attr.xmlns or e.name=="handshake"then | |
10825 | return t:event("stream/"..(e.attr.xmlns or i),e); | |
10826 | end | |
10827 | return t:event("stanza",e); | |
10828 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10829 | function t:reset() |
12 | 10830 | if self.stream then |
10831 | self.stream:reset(); | |
10832 | else | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10833 | self.stream=h(self,n); |
12 | 10834 | end |
10835 | self.notopen=true; | |
10836 | return true; | |
10837 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10838 | function t:connect_component(e,n) |
12 | 10839 | self.jid,self.password=e,n; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10840 | self.username,self.host,self.resource=d(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10841 | function self.data(a,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10842 | local a,o=self.stream:feed(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10843 | if a then return;end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10844 | t:debug("Received invalid XML (%s) %d bytes: %s",tostring(o),#e,e:sub(1,300):gsub("[\r\n]+"," ")); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10845 | t:close("xml-not-well-formed"); |
12 | 10846 | end |
10847 | self:hook("incoming-raw",function(e)return self.data(self.conn,e);end); | |
10848 | self.curr_id=0; | |
10849 | self.tracked_iqs={}; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10850 | self:hook("stanza",function(t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10851 | local e,a=t.attr.id,t.attr.type; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10852 | if e and t.name=="iq"and(a=="result"or a=="error")and self.tracked_iqs[e]then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10853 | self.tracked_iqs[e](t); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10854 | self.tracked_iqs[e]=nil; |
12 | 10855 | return true; |
10856 | end | |
10857 | end); | |
10858 | self:hook("stanza",function(e) | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10859 | local t; |
12 | 10860 | if e.attr.xmlns==nil or e.attr.xmlns=="jabber:client"then |
10861 | if e.name=="iq"and(e.attr.type=="get"or e.attr.type=="set")then | |
10862 | local o=e.tags[1]and e.tags[1].attr.xmlns; | |
10863 | if o then | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10864 | t=self:event("iq/"..o,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10865 | if not t then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10866 | t=self:event("iq",e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10867 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10868 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10869 | if t==nil then |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10870 | self:send(a.error_reply(e,"cancel","service-unavailable")); |
12 | 10871 | return true; |
10872 | end | |
10873 | else | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10874 | t=self:event(e.name,e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10875 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10876 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10877 | return t; |
12 | 10878 | end,-1); |
10879 | self:hook("opened",function(e) | |
10880 | print(self.jid,self.stream_id,e.id); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10881 | local e=r(self.stream_id..n,true); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10882 | self:send(o.stanza("handshake",{xmlns=i}):text(e)); |
12 | 10883 | self:hook("stream/"..i,function(e) |
10884 | if e.name=="handshake"then | |
10885 | self:event("authentication-success"); | |
10886 | end | |
10887 | end); | |
10888 | end); | |
10889 | local function e() | |
10890 | self:event("ready"); | |
10891 | end | |
10892 | self:hook("authentication-success",e,-1); | |
10893 | self:connect(self.connect_host or self.host,self.connect_port or 5347); | |
10894 | self:reopen(); | |
10895 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10896 | function t:reopen() |
12 | 10897 | self:reset(); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10898 | self:send(o.stanza("stream:stream",{to=self.jid,["xmlns:stream"]='http://etherx.jabber.org/streams', |
12 | 10899 | xmlns=i,version="1.0"}):top_tag()); |
10900 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10901 | function t:close(t) |
12 | 10902 | if not self.notopen then |
10903 | self:send("</stream:stream>"); | |
10904 | end | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10905 | local e=self.conn.disconnect(); |
12 | 10906 | self.conn:close(); |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10907 | e(conn,t); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10908 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10909 | function t:send_iq(e,a) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10910 | local t=self:new_id(); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10911 | self.tracked_iqs[t]=a; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10912 | e.attr.id=t; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10913 | self:send(e); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10914 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10915 | function t:new_id() |
12 | 10916 | self.curr_id=self.curr_id+1; |
10917 | return tostring(self.curr_id); | |
10918 | end | |
10919 | end) | |
10920 | pcall(require,"luarocks.require"); | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
10921 | local h=require"socket"; |
12 | 10922 | pcall(require,"ssl"); |
10923 | local a=require"net.server"; | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
10924 | local s=require"util.events"; |
12 | 10925 | local o=require"util.logger"; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10926 | local n=require"util.format".format; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10927 | local e={}; |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10928 | e.server=a; |
12 | 10929 | local t={}; |
10930 | t.__index=t; | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
10931 | e.stream_mt=t; |
12 | 10932 | e.plugins={}; |
10933 | function e.init(...) | |
10934 | for e=1,select("#",...)do | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10935 | local t,a=pcall(require,"verse."..select(e,...)); |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10936 | if not t then |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10937 | error("Verse connection module not found: verse."..select(e,...)..a); |
12 | 10938 | end |
10939 | end | |
10940 | return e; | |
10941 | end | |
10942 | local i=0; | |
10943 | function e.new(o,a) | |
10944 | local t=setmetatable(a or{},t); | |
10945 | i=i+1; | |
10946 | t.id=tostring(i); | |
10947 | t.logger=o or e.new_logger("stream"..t.id); | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
10948 | t.events=s.new(); |
12 | 10949 | t.plugins={}; |
10950 | t.verse=e; | |
10951 | return t; | |
10952 | end | |
10953 | e.add_task=require"util.timer".add_task; | |
10954 | e.logger=o.init; | |
10955 | e.new_logger=o.init; | |
10956 | e.log=e.logger("verse"); | |
10957 | function e.set_log_handler(e,t) | |
10958 | t=t or{"debug","info","warn","error"}; | |
10959 | o.reset(); | |
10960 | if io.type(e)=="file"then | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
10961 | local o=e; |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10962 | function e(a,t,e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10963 | o:write(a,"\t",t,"\t",e,"\n"); |
12 | 10964 | end |
10965 | end | |
10966 | if e then | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10967 | local function a(t,a,o,...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10968 | return e(t,a,n(o,...)); |
12 | 10969 | end |
10970 | for t,e in ipairs(t)do | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10971 | o.add_level_sink(e,a); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10972 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10973 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10974 | end |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10975 | function e._default_log_handler(a,o,t) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10976 | return io.stderr:write(a,"\t",o,"\t",t,"\n"); |
12 | 10977 | end |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
10978 | e.set_log_handler(e._default_log_handler,{"error"}); |
12 | 10979 | local function o(t) |
10980 | e.log("error","Error: %s",t); | |
10981 | e.log("error","Traceback: %s",debug.traceback()); | |
10982 | end | |
10983 | function e.set_error_handler(e) | |
10984 | o=e; | |
10985 | end | |
10986 | function e.loop() | |
10987 | return xpcall(a.loop,o); | |
10988 | end | |
10989 | function e.step() | |
10990 | return xpcall(a.step,o); | |
10991 | end | |
10992 | function e.quit() | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
10993 | return a.setquitting("once"); |
12 | 10994 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10995 | function e.tls_builder(...) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10996 | return a.tls_builder(...); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
10997 | end |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
10998 | function t:listen(t,o) |
12 | 10999 | t=t or"localhost"; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
11000 | o=o or 0; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
11001 | local e,a=a.addserver(t,o,e.new_listener(self,"server"),"*a"); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
11002 | if e then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
11003 | self:debug("Bound to %s:%s",t,o); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
11004 | self.server=e; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
11005 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
11006 | return e,a; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
11007 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
11008 | function t:connect(o,i) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
11009 | o=o or"localhost"; |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
11010 | i=tonumber(i)or 5222; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
11011 | local n=h.tcp() |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
11012 | n:settimeout(0); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
11013 | n:setoption("keepalive",true); |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
11014 | local s,t=n:connect(o,i); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
11015 | if not s and t~="timeout"then |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
11016 | self:warn("connect() to %s:%d failed: %s",o,i,t); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
11017 | return self:event("disconnected",{reason=t})or false,t; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
11018 | end |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
11019 | local e=a.wrapclient(n,o,i,e.new_listener(self),"*a"); |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
11020 | if not e then |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
11021 | self:warn("connection initialisation failed: %s",t); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
11022 | return self:event("disconnected",{reason=t})or false,t; |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
11023 | end |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
11024 | self:set_conn(e); |
12 | 11025 | return true; |
11026 | end | |
11027 | function t:set_conn(t) | |
11028 | self.conn=t; | |
11029 | self.send=function(a,e) | |
11030 | self:event("outgoing",e); | |
11031 | e=tostring(e); | |
11032 | self:event("outgoing-raw",e); | |
11033 | return t:write(e); | |
11034 | end; | |
11035 | end | |
11036 | function t:close(t) | |
11037 | if not self.conn then | |
11038 | e.log("error","Attempt to close disconnected connection - possibly a bug"); | |
11039 | return; | |
11040 | end | |
11041 | local e=self.conn.disconnect(); | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
11042 | self:event("shutdown"); |
12 | 11043 | self.conn:close(); |
11044 | e(self.conn,t); | |
11045 | end | |
11046 | function t:debug(...) | |
11047 | return self.logger("debug",...); | |
11048 | end | |
11049 | function t:info(...) | |
11050 | return self.logger("info",...); | |
11051 | end | |
11052 | function t:warn(...) | |
11053 | return self.logger("warn",...); | |
11054 | end | |
11055 | function t:error(...) | |
11056 | return self.logger("error",...); | |
11057 | end | |
11058 | function t:event(e,...) | |
11059 | self:debug("Firing event: "..tostring(e)); | |
11060 | return self.events.fire_event(e,...); | |
11061 | end | |
11062 | function t:hook(e,...) | |
11063 | return self.events.add_handler(e,...); | |
11064 | end | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
11065 | function t:unhook(e,t) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
11066 | return self.events.remove_handler(e,t); |
12 | 11067 | end |
11068 | function e.eventable(e) | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
11069 | e.events=s.new(); |
12 | 11070 | e.hook,e.unhook=t.hook,t.unhook; |
11071 | local t=e.events.fire_event; | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
11072 | function e:event(e,...)return t(e,...);end |
12 | 11073 | return e; |
11074 | end | |
11075 | function t:add_plugin(t) | |
11076 | if self.plugins[t]then return true;end | |
11077 | if require("verse.plugins."..t)then | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
11078 | local e,a=e.plugins[t](self); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
11079 | if e~=false then |
12 | 11080 | self:debug("Loaded %s plugin",t); |
11081 | self.plugins[t]=true; | |
11082 | else | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
11083 | self:warn("Failed to load %s plugin: %s",t,a); |
12 | 11084 | end |
11085 | end | |
11086 | return self; | |
11087 | end | |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
11088 | function e.new_listener(t) |
12 | 11089 | local a={}; |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
11090 | function a.onconnect(o) |
12 | 11091 | if t.server then |
88
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
11092 | local a=e.new(); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
11093 | o:setlistener(e.new_listener(a)); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
11094 | a:set_conn(o); |
98b4cf14960b
verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
12
diff
changeset
|
11095 | t:event("connected",{client=a}); |
12 | 11096 | else |
11097 | t.connected=true; | |
11098 | t:event("connected"); | |
11099 | end | |
11100 | end | |
11101 | function a.onincoming(a,e) | |
11102 | t:event("incoming-raw",e); | |
11103 | end | |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
11104 | function a.ondisconnect(a,e) |
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
11105 | if a~=t.conn then return end |
12 | 11106 | t.connected=false; |
103
9e0e56393978
verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents:
88
diff
changeset
|
11107 | t:event("disconnected",{reason=e}); |
12 | 11108 | end |
11109 | function a.ondrain(e) | |
11110 | t:event("drained"); | |
11111 | end | |
11112 | function a.onstatus(a,e) | |
11113 | t:event("status",e); | |
11114 | end | |
177
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
11115 | function a.onreadtimeout(e) |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
11116 | return t:event("read-timeout"); |
3c19b67a1f0f
verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents:
103
diff
changeset
|
11117 | end |
12 | 11118 | return a; |
11119 | end | |
11120 | return e; |