verse.lua

Thu, 23 Mar 2023 18:28:20 +0000

author
Matthew Wild <mwild1@gmail.com>
date
Thu, 23 Mar 2023 18:28:20 +0000
changeset 181
3a9b9c98304a
parent 180
249197af6c01
permissions
-rw-r--r--

Add support for component connections

12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
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
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
13 local function e()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
14 error("Function not implemented");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
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
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
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
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25 end)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
26 package.preload['util.hashes']=(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
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
38 local function t(t,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
39 error("Hash method "..e.." not available",2);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
40 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
41 local e=setmetatable({},{__index=t});
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
42 local function t(t,o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
43 local e,a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
44 if t=="util.sha1"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
45 e,a=true,require(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
46 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
47 e,a=pcall(require,t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
48 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
49 if e then o(a);end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
50 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
51 local function i(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
52 return(e:gsub(".",function(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
53 return("%02x"):format(e:byte());
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
54 end));
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
55 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
56 t("util.sha1",function(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
57 e.sha1=t.sha1;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
58 end);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
59 t("bgcrypto.md5",function(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
60 e.md5=t.digest;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
61 e.hmac_md5=t.hmac.digest;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
62 end);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
63 t("bgcrypto.sha1",function(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
64 e.sha1=t.digest;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
65 e.hmac_sha1=t.hmac.digest;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
66 e.scram_Hi_sha1=function(a,o,e)return t.pbkdf2(a,o,e,20);end;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
67 end);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
68 t("bgcrypto.sha256",function(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
69 e.sha256=t.digest;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
70 e.hmac_sha256=t.hmac.digest;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
71 end);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
72 t("bgcrypto.sha512",function(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
73 e.sha512=t.digest;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
74 e.hmac_sha512=t.hmac.digest;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
75 end);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
76 t("sha1",function(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
77 e.sha1=function(e,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
78 if a then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
79 return t.sha1(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
80 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
81 return(t.binary(e));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
82 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
83 end;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
84 end);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
85 t("openssl.digest",function(o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
86 local function a(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
87 return function(e,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
88 local e=o.new(t):final(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
89 if a then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
90 return i(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
91 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
92 return e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
93 end;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
94 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
95 e.sha1=a("sha1");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
96 end);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
97 return e;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
98 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
99 package.preload['lib.adhoc']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
100 local _ENV=_ENV;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
101 local function r(t,...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
102 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
103 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
104 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
105 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
106 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
107 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
108 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
109 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
110 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
111 local s,i=require"util.stanza",require"util.id".short;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
112 local e="http://jabber.org/protocol/commands";
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
113 local n={}
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
114 local h={};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
115 local function o(i,o,t,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
116 local e=s.stanza("command",{xmlns=e,node=i.node,status=o});
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
117 if t then e.attr.sessionid=t;end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
118 if a then e.attr.action=a;end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
119 return e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
120 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
121 function h.new(e,a,i,t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
122 return{name=e,node=a,handler=i,cmdtag=o,permission=(t or"user")};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
123 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
124 function h.handle_cmd(o,h,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
125 local t=e.tags[1].attr.sessionid or i();
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
126 local a={};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
127 a.to=e.attr.to;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
128 a.from=e.attr.from;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
129 a.action=e.tags[1].attr.action or"execute";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
130 a.form=e.tags[1]:child_with_ns("jabber:x:data");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
131 local a,i=o:handler(a,n[t]);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
132 n[t]=i;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
133 local i=s.reply(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
134 local e;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
135 if a.status=="completed"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
136 n[t]=nil;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
137 e=o:cmdtag("completed",t);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
138 elseif a.status=="canceled"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
139 n[t]=nil;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
140 e=o:cmdtag("canceled",t);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
141 elseif a.status=="error"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
142 n[t]=nil;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
143 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
144 h.send(i);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
145 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
146 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
147 e=o:cmdtag("executing",t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
148 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
149 for a,t in pairs(a)do
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
150 if a=="info"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
151 e:tag("note",{type="info"}):text(t):up();
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
152 elseif a=="warn"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
153 e:tag("note",{type="warn"}):text(t):up();
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
154 elseif a=="error"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
155 e:tag("note",{type="error"}):text(t.message):up();
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
156 elseif a=="actions"then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
157 local a=s.stanza("actions");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
158 for i,t in ipairs(t)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
159 if(t=="prev")or(t=="next")or(t=="complete")then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
160 a:tag(t):up();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
161 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
162 r:log("error",'Command "'..o.name..
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
163 '" at node "'..o.node..'" provided an invalid action "'..t..'"');
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
164 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
165 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
166 e:add_child(a);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
167 elseif a=="form"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
168 e:add_child((t.layout or t):form(t.values));
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
169 elseif a=="result"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
170 e:add_child((t.layout or t):form(t.values,"result"));
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
171 elseif a=="other"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
172 e:add_child(t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
173 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
174 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
175 i:add_child(e);
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
176 h.send(i);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
177 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
178 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
179 return h;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
180 end)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
181 package.preload['util.table']=(function(...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
182 local _ENV=_ENV;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
183 local function e(t,...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
184 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
185 package.loaded[t]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
186 for t=1,select("#",...)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
187 (select(t,...))(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
188 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
189 _ENV=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
190 _M=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
191 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
192 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
193 return{
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
194 pack=function(...)return{n=select("#",...);...}end;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
195 create=function()return{}end;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
196 move=function(o,t,i,a,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
197 e=e or o;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
198 if i>=t then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
199 local n=(i-t)+1;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
200 if a>i or a<=t or o~=e then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
201 for i=0,n-1 do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
202 e[a+i]=o[t+i];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
203 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
204 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
205 for i=n-1,0,-1 do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
206 e[a+i]=o[t+i];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
207 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
208 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
209 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
210 return e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
211 end;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
212 }
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
213 end)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
214 package.preload['util.sha1']=(function(...)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
215 local _ENV=_ENV;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
216 local function e(t,...)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
217 local e=package.loaded[t]or _ENV[t]or{_NAME=t};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
218 package.loaded[t]=e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
219 for t=1,select("#",...)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
220 (select(t,...))(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
221 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
222 _ENV=e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
223 _M=e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
224 return e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
225 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
226 local m=string.len
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
227 local a=string.char
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
228 local j=string.byte
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
229 local k=string.sub
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
230 local c=math.floor
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
231 local t=require"util.bit"
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
232 local q=t.bnot
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
233 local e=t.band
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
234 local y=t.bor
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
235 local n=t.bxor
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
236 local i=t.lshift
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
237 local o=t.rshift
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
238 local l,u,d,h,s
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
239 local function p(t,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
240 return i(t,e)+o(t,32-e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
241 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
242 local function r(i)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
243 local t,o
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
244 local t=""
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
245 for n=1,8 do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
246 o=e(i,15)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
247 if(o<10)then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
248 t=a(o+48)..t
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
249 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
250 t=a(o+87)..t
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
251 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
252 i=c(i/16)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
253 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
254 return t
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
255 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
256 local function b(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
257 local i,o
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
258 local n=""
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
259 i=m(t)*8
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
260 t=t..a(128)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
261 o=56-e(m(t),63)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
262 if(o<0)then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
263 o=o+64
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
264 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
265 for e=1,o do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
266 t=t..a(0)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
267 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
268 for t=1,8 do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
269 n=a(e(i,255))..n
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
270 i=c(i/256)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
271 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
272 return t..n
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
273 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
274 local function g(f)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
275 local m,t,o,a,w,r,c,v
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
276 local i,i
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
277 local i={}
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
278 while(f~="")do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
279 for e=0,15 do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
280 i[e]=0
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
281 for t=1,4 do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
282 i[e]=i[e]*256+j(f,e*4+t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
283 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
284 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
285 for e=16,79 do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
286 i[e]=p(n(n(i[e-3],i[e-8]),n(i[e-14],i[e-16])),1)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
287 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
288 m=l
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
289 t=u
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
290 o=d
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
291 a=h
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
292 w=s
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
293 for s=0,79 do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
294 if(s<20)then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
295 r=y(e(t,o),e(q(t),a))
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
296 c=1518500249
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
297 elseif(s<40)then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
298 r=n(n(t,o),a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
299 c=1859775393
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
300 elseif(s<60)then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
301 r=y(y(e(t,o),e(t,a)),e(o,a))
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
302 c=2400959708
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
303 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
304 r=n(n(t,o),a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
305 c=3395469782
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
306 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
307 v=p(m,5)+r+w+c+i[s]
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
308 w=a
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
309 a=o
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
310 o=p(t,30)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
311 t=m
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
312 m=v
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
313 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
314 l=e(l+m,4294967295)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
315 u=e(u+t,4294967295)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
316 d=e(d+o,4294967295)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
317 h=e(h+a,4294967295)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
318 s=e(s+w,4294967295)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
319 f=k(f,65)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
320 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
321 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
322 local function t(e,t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
323 e=b(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
324 l=1732584193
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
325 u=4023233417
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
326 d=2562383102
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
327 h=271733878
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
328 s=3285377520
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
329 g(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
330 local e=r(l)..r(u)..r(d)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
331 ..r(h)..r(s);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
332 if t then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
333 return e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
334 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
335 return(e:gsub("..",function(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
336 return string.char(tonumber(e,16));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
337 end));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
338 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
339 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
340 return{
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
341 sha1=t;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
342 };
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
343 end)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
344 package.preload['util.bit']=(function(...)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
345 local _ENV=_ENV;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
346 local function e(t,...)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
347 local e=package.loaded[t]or _ENV[t]or{_NAME=t};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
348 package.loaded[t]=e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
349 for t=1,select("#",...)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
350 (select(t,...))(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
351 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
352 _ENV=e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
353 _M=e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
354 return e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
355 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
356 local o=type;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
357 local h=tonumber;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
358 local n=setmetatable;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
359 local u=error;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
360 local l=tostring;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
361 local c={[0]=0;[1]=1;[2]=2;[3]=3;[4]=4;[5]=5;[6]=6;[7]=7;[8]=8;[9]=9;[10]=10;[11]=11;[12]=12;[13]=13;[14]=14;[15]=15;[16]=1;[17]=0;[18]=3;[19]=2;[20]=5;[21]=4;[22]=7;[23]=6;[24]=9;[25]=8;[26]=11;[27]=10;[28]=13;[29]=12;[30]=15;[31]=14;[32]=2;[33]=3;[34]=0;[35]=1;[36]=6;[37]=7;[38]=4;[39]=5;[40]=10;[41]=11;[42]=8;[43]=9;[44]=14;[45]=15;[46]=12;[47]=13;[48]=3;[49]=2;[50]=1;[51]=0;[52]=7;[53]=6;[54]=5;[55]=4;[56]=11;[57]=10;[58]=9;[59]=8;[60]=15;[61]=14;[62]=13;[63]=12;[64]=4;[65]=5;[66]=6;[67]=7;[68]=0;[69]=1;[70]=2;[71]=3;[72]=12;[73]=13;[74]=14;[75]=15;[76]=8;[77]=9;[78]=10;[79]=11;[80]=5;[81]=4;[82]=7;[83]=6;[84]=1;[85]=0;[86]=3;[87]=2;[88]=13;[89]=12;[90]=15;[91]=14;[92]=9;[93]=8;[94]=11;[95]=10;[96]=6;[97]=7;[98]=4;[99]=5;[100]=2;[101]=3;[102]=0;[103]=1;[104]=14;[105]=15;[106]=12;[107]=13;[108]=10;[109]=11;[110]=8;[111]=9;[112]=7;[113]=6;[114]=5;[115]=4;[116]=3;[117]=2;[118]=1;[119]=0;[120]=15;[121]=14;[122]=13;[123]=12;[124]=11;[125]=10;[126]=9;[127]=8;[128]=8;[129]=9;[130]=10;[131]=11;[132]=12;[133]=13;[134]=14;[135]=15;[136]=0;[137]=1;[138]=2;[139]=3;[140]=4;[141]=5;[142]=6;[143]=7;[144]=9;[145]=8;[146]=11;[147]=10;[148]=13;[149]=12;[150]=15;[151]=14;[152]=1;[153]=0;[154]=3;[155]=2;[156]=5;[157]=4;[158]=7;[159]=6;[160]=10;[161]=11;[162]=8;[163]=9;[164]=14;[165]=15;[166]=12;[167]=13;[168]=2;[169]=3;[170]=0;[171]=1;[172]=6;[173]=7;[174]=4;[175]=5;[176]=11;[177]=10;[178]=9;[179]=8;[180]=15;[181]=14;[182]=13;[183]=12;[184]=3;[185]=2;[186]=1;[187]=0;[188]=7;[189]=6;[190]=5;[191]=4;[192]=12;[193]=13;[194]=14;[195]=15;[196]=8;[197]=9;[198]=10;[199]=11;[200]=4;[201]=5;[202]=6;[203]=7;[204]=0;[205]=1;[206]=2;[207]=3;[208]=13;[209]=12;[210]=15;[211]=14;[212]=9;[213]=8;[214]=11;[215]=10;[216]=5;[217]=4;[218]=7;[219]=6;[220]=1;[221]=0;[222]=3;[223]=2;[224]=14;[225]=15;[226]=12;[227]=13;[228]=10;[229]=11;[230]=8;[231]=9;[232]=6;[233]=7;[234]=4;[235]=5;[236]=2;[237]=3;[238]=0;[239]=1;[240]=15;[241]=14;[242]=13;[243]=12;[244]=11;[245]=10;[246]=9;[247]=8;[248]=7;[249]=6;[250]=5;[251]=4;[252]=3;[253]=2;[254]=1;[255]=0;};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
362 local w={[0]=0;[1]=1;[2]=2;[3]=3;[4]=4;[5]=5;[6]=6;[7]=7;[8]=8;[9]=9;[10]=10;[11]=11;[12]=12;[13]=13;[14]=14;[15]=15;[16]=1;[17]=1;[18]=3;[19]=3;[20]=5;[21]=5;[22]=7;[23]=7;[24]=9;[25]=9;[26]=11;[27]=11;[28]=13;[29]=13;[30]=15;[31]=15;[32]=2;[33]=3;[34]=2;[35]=3;[36]=6;[37]=7;[38]=6;[39]=7;[40]=10;[41]=11;[42]=10;[43]=11;[44]=14;[45]=15;[46]=14;[47]=15;[48]=3;[49]=3;[50]=3;[51]=3;[52]=7;[53]=7;[54]=7;[55]=7;[56]=11;[57]=11;[58]=11;[59]=11;[60]=15;[61]=15;[62]=15;[63]=15;[64]=4;[65]=5;[66]=6;[67]=7;[68]=4;[69]=5;[70]=6;[71]=7;[72]=12;[73]=13;[74]=14;[75]=15;[76]=12;[77]=13;[78]=14;[79]=15;[80]=5;[81]=5;[82]=7;[83]=7;[84]=5;[85]=5;[86]=7;[87]=7;[88]=13;[89]=13;[90]=15;[91]=15;[92]=13;[93]=13;[94]=15;[95]=15;[96]=6;[97]=7;[98]=6;[99]=7;[100]=6;[101]=7;[102]=6;[103]=7;[104]=14;[105]=15;[106]=14;[107]=15;[108]=14;[109]=15;[110]=14;[111]=15;[112]=7;[113]=7;[114]=7;[115]=7;[116]=7;[117]=7;[118]=7;[119]=7;[120]=15;[121]=15;[122]=15;[123]=15;[124]=15;[125]=15;[126]=15;[127]=15;[128]=8;[129]=9;[130]=10;[131]=11;[132]=12;[133]=13;[134]=14;[135]=15;[136]=8;[137]=9;[138]=10;[139]=11;[140]=12;[141]=13;[142]=14;[143]=15;[144]=9;[145]=9;[146]=11;[147]=11;[148]=13;[149]=13;[150]=15;[151]=15;[152]=9;[153]=9;[154]=11;[155]=11;[156]=13;[157]=13;[158]=15;[159]=15;[160]=10;[161]=11;[162]=10;[163]=11;[164]=14;[165]=15;[166]=14;[167]=15;[168]=10;[169]=11;[170]=10;[171]=11;[172]=14;[173]=15;[174]=14;[175]=15;[176]=11;[177]=11;[178]=11;[179]=11;[180]=15;[181]=15;[182]=15;[183]=15;[184]=11;[185]=11;[186]=11;[187]=11;[188]=15;[189]=15;[190]=15;[191]=15;[192]=12;[193]=13;[194]=14;[195]=15;[196]=12;[197]=13;[198]=14;[199]=15;[200]=12;[201]=13;[202]=14;[203]=15;[204]=12;[205]=13;[206]=14;[207]=15;[208]=13;[209]=13;[210]=15;[211]=15;[212]=13;[213]=13;[214]=15;[215]=15;[216]=13;[217]=13;[218]=15;[219]=15;[220]=13;[221]=13;[222]=15;[223]=15;[224]=14;[225]=15;[226]=14;[227]=15;[228]=14;[229]=15;[230]=14;[231]=15;[232]=14;[233]=15;[234]=14;[235]=15;[236]=14;[237]=15;[238]=14;[239]=15;[240]=15;[241]=15;[242]=15;[243]=15;[244]=15;[245]=15;[246]=15;[247]=15;[248]=15;[249]=15;[250]=15;[251]=15;[252]=15;[253]=15;[254]=15;[255]=15;};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
363 local p={[0]=0;[1]=0;[2]=0;[3]=0;[4]=0;[5]=0;[6]=0;[7]=0;[8]=0;[9]=0;[10]=0;[11]=0;[12]=0;[13]=0;[14]=0;[15]=0;[16]=0;[17]=1;[18]=0;[19]=1;[20]=0;[21]=1;[22]=0;[23]=1;[24]=0;[25]=1;[26]=0;[27]=1;[28]=0;[29]=1;[30]=0;[31]=1;[32]=0;[33]=0;[34]=2;[35]=2;[36]=0;[37]=0;[38]=2;[39]=2;[40]=0;[41]=0;[42]=2;[43]=2;[44]=0;[45]=0;[46]=2;[47]=2;[48]=0;[49]=1;[50]=2;[51]=3;[52]=0;[53]=1;[54]=2;[55]=3;[56]=0;[57]=1;[58]=2;[59]=3;[60]=0;[61]=1;[62]=2;[63]=3;[64]=0;[65]=0;[66]=0;[67]=0;[68]=4;[69]=4;[70]=4;[71]=4;[72]=0;[73]=0;[74]=0;[75]=0;[76]=4;[77]=4;[78]=4;[79]=4;[80]=0;[81]=1;[82]=0;[83]=1;[84]=4;[85]=5;[86]=4;[87]=5;[88]=0;[89]=1;[90]=0;[91]=1;[92]=4;[93]=5;[94]=4;[95]=5;[96]=0;[97]=0;[98]=2;[99]=2;[100]=4;[101]=4;[102]=6;[103]=6;[104]=0;[105]=0;[106]=2;[107]=2;[108]=4;[109]=4;[110]=6;[111]=6;[112]=0;[113]=1;[114]=2;[115]=3;[116]=4;[117]=5;[118]=6;[119]=7;[120]=0;[121]=1;[122]=2;[123]=3;[124]=4;[125]=5;[126]=6;[127]=7;[128]=0;[129]=0;[130]=0;[131]=0;[132]=0;[133]=0;[134]=0;[135]=0;[136]=8;[137]=8;[138]=8;[139]=8;[140]=8;[141]=8;[142]=8;[143]=8;[144]=0;[145]=1;[146]=0;[147]=1;[148]=0;[149]=1;[150]=0;[151]=1;[152]=8;[153]=9;[154]=8;[155]=9;[156]=8;[157]=9;[158]=8;[159]=9;[160]=0;[161]=0;[162]=2;[163]=2;[164]=0;[165]=0;[166]=2;[167]=2;[168]=8;[169]=8;[170]=10;[171]=10;[172]=8;[173]=8;[174]=10;[175]=10;[176]=0;[177]=1;[178]=2;[179]=3;[180]=0;[181]=1;[182]=2;[183]=3;[184]=8;[185]=9;[186]=10;[187]=11;[188]=8;[189]=9;[190]=10;[191]=11;[192]=0;[193]=0;[194]=0;[195]=0;[196]=4;[197]=4;[198]=4;[199]=4;[200]=8;[201]=8;[202]=8;[203]=8;[204]=12;[205]=12;[206]=12;[207]=12;[208]=0;[209]=1;[210]=0;[211]=1;[212]=4;[213]=5;[214]=4;[215]=5;[216]=8;[217]=9;[218]=8;[219]=9;[220]=12;[221]=13;[222]=12;[223]=13;[224]=0;[225]=0;[226]=2;[227]=2;[228]=4;[229]=4;[230]=6;[231]=6;[232]=8;[233]=8;[234]=10;[235]=10;[236]=12;[237]=12;[238]=14;[239]=14;[240]=0;[241]=1;[242]=2;[243]=3;[244]=4;[245]=5;[246]=6;[247]=7;[248]=8;[249]=9;[250]=10;[251]=11;[252]=12;[253]=13;[254]=14;[255]=15;}
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
364 local y={[0]=15;[1]=14;[2]=13;[3]=12;[4]=11;[5]=10;[6]=9;[7]=8;[8]=7;[9]=6;[10]=5;[11]=4;[12]=3;[13]=2;[14]=1;[15]=0;};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
365 local d={[0]=0;[1]=0;[2]=1;[3]=1;[4]=2;[5]=2;[6]=3;[7]=3;[8]=4;[9]=4;[10]=5;[11]=5;[12]=6;[13]=6;[14]=7;[15]=7;};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
366 local r={[0]=0;[1]=8;[2]=0;[3]=8;[4]=0;[5]=8;[6]=0;[7]=8;[8]=0;[9]=8;[10]=0;[11]=8;[12]=0;[13]=8;[14]=0;[15]=8;};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
367 local b={[0]=0;[1]=2;[2]=4;[3]=6;[4]=8;[5]=10;[6]=12;[7]=14;[8]=0;[9]=2;[10]=4;[11]=6;[12]=8;[13]=10;[14]=12;[15]=14;};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
368 local v={[0]=0;[1]=0;[2]=0;[3]=0;[4]=0;[5]=0;[6]=0;[7]=0;[8]=1;[9]=1;[10]=1;[11]=1;[12]=1;[13]=1;[14]=1;[15]=1;};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
369 local m={[0]=0;[1]=0;[2]=0;[3]=0;[4]=0;[5]=0;[6]=0;[7]=0;[8]=8;[9]=8;[10]=8;[11]=8;[12]=8;[13]=8;[14]=8;[15]=8;};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
370 local i={__tostring=function(e)return("%x%x%x%x%x%x%x%x"):format(e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]);end};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
371 local function s(a,t,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
372 return n({
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
373 e[a[1]*16+t[1]];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
374 e[a[2]*16+t[2]];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
375 e[a[3]*16+t[3]];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
376 e[a[4]*16+t[4]];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
377 e[a[5]*16+t[5]];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
378 e[a[6]*16+t[6]];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
379 e[a[7]*16+t[7]];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
380 e[a[8]*16+t[8]];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
381 },i);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
382 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
383 local function a(e,t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
384 return n({
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
385 t[e[1]];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
386 t[e[2]];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
387 t[e[3]];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
388 t[e[4]];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
389 t[e[5]];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
390 t[e[6]];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
391 t[e[7]];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
392 t[e[8]];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
393 },i);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
394 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
395 local function f(t,e)return s(t,e,c);end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
396 local function c(e,t)return s(e,t,w);end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
397 local function w(e,t)return s(e,t,p);end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
398 local function p(e)return a(e,y);end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
399 local function s(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
400 local a=0;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
401 for e=1,8 do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
402 local o=d[t[e]]+a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
403 a=r[t[e]];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
404 t[e]=o;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
405 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
406 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
407 local function y(e,t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
408 local e={e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
409 for t=1,t do s(e);end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
410 return n(e,i);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
411 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
412 local function s(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
413 local a=m[e[1]];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
414 for t=1,8 do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
415 local o=d[e[t]]+a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
416 a=r[e[t]];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
417 e[t]=o;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
418 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
419 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
420 local function r(e,t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
421 local e={e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
422 for t=1,t do s(e);end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
423 return n(e,i);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
424 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
425 local function s(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
426 local a=0;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
427 for e=8,1,-1 do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
428 local o=b[t[e]]+a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
429 a=v[t[e]];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
430 t[e]=o;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
431 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
432 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
433 local function d(e,t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
434 local e={e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8]};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
435 for t=1,t do s(e);end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
436 return n(e,i);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
437 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
438 local function a(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
439 if o(e)=="number"then e=("%x"):format(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
440 elseif o(e)=="table"then return e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
441 elseif o(e)~="string"then u("string expected, got "..o(e),2);end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
442 local a={0,0,0,0,0,0,0,0};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
443 e="00000000"..e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
444 e=e:sub(-8);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
445 for t=1,8 do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
446 a[t]=h(e:sub(t,t),16)or u("Number format error",2);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
447 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
448 return n(a,i);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
449 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
450 local function t(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
451 return function(e,...)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
452 if o(e)~="table"then e=a(e);end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
453 e=t(e,...);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
454 e=h(l(e),16);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
455 if e>2147483647 then e=e-1-4294967295;end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
456 return e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
457 end;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
458 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
459 local function i(i)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
460 return function(e,t,...)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
461 if o(e)~="table"then e=a(e);end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
462 if o(t)~="table"then t=a(t);end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
463 e=i(e,t,...);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
464 e=h(l(e),16);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
465 if e>2147483647 then e=e-1-4294967295;end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
466 return e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
467 end;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
468 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
469 return{
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
470 bits=32;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
471 bxor=i(f);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
472 bor=i(c);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
473 band=i(w);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
474 bnot=t(p);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
475 lshift=t(d);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
476 rshift=t(y);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
477 arshift=t(r);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
478 cast=t(a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
479 };
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
480 end)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
481 package.preload['util.stanza']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
482 local _ENV=_ENV;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
483 local function e(t,...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
484 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
485 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
486 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
487 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
488 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
489 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
490 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
491 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
492 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
493 local a=error;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
494 local o=table.insert;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
495 local l=table.remove;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
496 local y=table.concat;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
497 local d=string.match;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
498 local p=tostring;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
499 local m=setmetatable;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
500 local q=getmetatable;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
501 local h=pairs;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
502 local s=ipairs;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
503 local t=type;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
504 local x=string.gsub;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
505 local u=string.sub;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
506 local r=string.find;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
507 local c=table.move or require"util.table".move;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
508 local w=require"util.table".create;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
509 local i=require"util.encodings".utf8.valid;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
510 local j,f=pcall(require,"util.termcolours");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
511 local b="urn:ietf:params:xml:ns:xmpp-stanzas";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
512 local v={xmlns=b};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
513 local _ENV=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
514 local e={__name="stanza"};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
515 e.__index=e;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
516 local function n(e,t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
517 return not r(e,t and"[^\1\9\10\13\20-\255]"or"[^\9\10\13\20-\255]");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
518 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
519 local function k(o,e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
520 if t(o)~="string"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
521 a("invalid "..e.." name: expected string, got "..t(o));
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
522 elseif#o==0 then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
523 a("invalid "..e.." name: empty string");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
524 elseif r(o,"[<>& '\"]")then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
525 a("invalid "..e.." name: contains invalid characters");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
526 elseif not n(o,e=="attribute")then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
527 a("invalid "..e.." name: contains control characters");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
528 elseif not i(o)then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
529 a("invalid "..e.." name: contains invalid utf8");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
530 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
531 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
532 local function g(e,o)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
533 if t(e)~="string"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
534 a("invalid "..o.." value: expected string, got "..t(e));
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
535 elseif not n(e,false)then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
536 a("invalid "..o.." value: contains control characters");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
537 elseif not i(e)then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
538 a("invalid "..o.." value: contains invalid utf8");
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 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
541 local function n(e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
542 if e~=nil then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
543 if t(e)~="table"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
544 a("invalid attributes: expected table, got "..t(e));
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
545 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
546 for e,t in h(e)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
547 k(e,"attribute");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
548 g(t,"attribute");
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
549 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
550 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
551 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
552 local function i(t,a,o)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
553 k(t,"tag");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
554 n(a);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
555 local t={name=t,attr=a or{},namespaces=o,tags={}};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
556 return m(t,e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
557 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
558 local function n(t)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
559 return q(t)==e;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
560 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
561 function e:query(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
562 return self:tag("query",{xmlns=e});
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
563 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
564 function e:body(t,e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
565 return self:text_tag("body",t,e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
566 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
567 function e:text_tag(a,o,t,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
568 return self:tag(a,t,e):text(o):up();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
569 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
570 function e:tag(e,t,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
571 local t=i(e,t,a);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
572 local e=self.last_add;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
573 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
574 (e[#e]or self):add_direct_child(t);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
575 o(e,t);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
576 return self;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
577 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
578 function e:text(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
579 if e~=nil and e~=""then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
580 local t=self.last_add;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
581 (t and t[#t]or self):add_direct_child(e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
582 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
583 return self;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
584 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
585 function e:up()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
586 local e=self.last_add;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
587 if e then l(e);end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
588 return self;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
589 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
590 function e:at_top()
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
591 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
592 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
593 function e:reset()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
594 self.last_add=nil;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
595 return self;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
596 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
597 function e:add_direct_child(e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
598 if n(e)then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
599 o(self.tags,e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
600 o(self,e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
601 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
602 g(e,"text");
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
603 o(self,e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
604 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
605 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
606 function e:add_child(t)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
607 local e=self.last_add;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
608 (e and e[#e]or self):add_direct_child(t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
609 return self;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
610 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
611 function e:remove_children(a,t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
612 t=t or self.attr.xmlns;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
613 return self:maptags(function(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
614 if(not a or e.name==a)and e.attr.xmlns==t then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
615 return nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
616 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
617 return e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
618 end);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
619 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
620 function e:get_child(t,a)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
621 for o,e in s(self.tags)do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
622 if(not t or e.name==t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
623 and((not a and self.attr.xmlns==e.attr.xmlns)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
624 or e.attr.xmlns==a)then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
625 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
626 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
627 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
628 return nil;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
629 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
630 function e:get_child_text(t,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
631 local e=self:get_child(t,e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
632 if e then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
633 return e:get_text();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
634 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
635 return nil;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
636 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
637 function e:get_child_attr(a,e,t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
638 local e=self:get_child(a,e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
639 if e then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
640 return e.attr[t];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
641 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
642 return nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
643 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
644 function e:child_with_name(t)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
645 for a,e in s(self.tags)do
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
646 if e.name==t then return e;end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
647 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
648 return nil;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
649 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
650 function e:child_with_ns(t)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
651 for a,e in s(self.tags)do
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
652 if e.attr.xmlns==t then return e;end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
653 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
654 return nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
655 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
656 function e:get_child_with_attr(e,o,a,i,t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
657 for e in self:childtags(e,o)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
658 if(t and t(e.attr[a])or e.attr[a])==i then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
659 return e;
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 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
662 return nil;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
663 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
664 function e:children()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
665 local e=0;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
666 return function(t)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
667 e=e+1
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
668 return t[e];
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
669 end,self,e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
670 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
671 function e:childtags(t,a)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
672 local e=self.tags;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
673 local i,o=1,#e;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
674 return function()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
675 for o=i,o do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
676 local e=e[o];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
677 if(not t or e.name==t)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
678 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
679 or e.attr.xmlns==a)then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
680 i=o+1;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
681 return e;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
682 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
683 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
684 end;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
685 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
686 function e:maptags(h)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
687 local i,t=self.tags,1;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
688 local n,o=#self,#i;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
689 local s=n+1;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
690 local e=1;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
691 while t<=o and o>0 do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
692 if self[e]==i[t]then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
693 local a=h(self[e]);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
694 if a==nil then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
695 l(self,e);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
696 l(i,t);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
697 n=n-1;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
698 o=o-1;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
699 e=e-1;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
700 t=t-1;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
701 else
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
702 self[e]=a;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
703 i[t]=a;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
704 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
705 t=t+1;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
706 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
707 e=e+1;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
708 if e>s then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
709 a("Invalid stanza state! Please report this error.");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
710 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
711 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
712 return self;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
713 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
714 function e:find(a)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
715 local e=1;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
716 local s=#a+1;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
717 repeat
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
718 local o,t,i;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
719 local n=u(a,e,e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
720 if n=="@"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
721 return self.attr[u(a,e+1)];
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
722 elseif n=="{"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
723 o,e=d(a,"^([^}]+)}()",e+1);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
724 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
725 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
726 t=t~=""and t or nil;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
727 if e==s then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
728 if i=="#"then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
729 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
730 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
731 return self:get_child(t,o);
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
732 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
733 self=self:get_child(t,o);
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
734 until not self
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
735 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
736 local function u(t,s)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
737 local n={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
738 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
739 local a,i=t.namespaces;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
740 if a then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
741 i={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
742 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
743 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
744 local o,a;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
745 if s then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
746 o={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
747 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
748 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
749 o=w(#t.tags,0);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
750 a=w(#t,4);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
751 a.name=t.name;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
752 a.attr=n;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
753 a.namespaces=i;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
754 a.tags=o;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
755 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
756 m(a,e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
757 if not s then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
758 c(t,1,#t,1,a);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
759 c(t.tags,1,#t.tags,1,o);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
760 a:maptags(u);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
761 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
762 return a;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
763 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
764 local function l(e,o)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
765 if not n(e)then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
766 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
767 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
768 return u(e,o);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
769 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
770 local u={["'"]="&apos;",["\""]="&quot;",["<"]="&lt;",[">"]="&gt;",["&"]="&amp;"};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
771 local function m(e)return(x(e,"['&<>\"]",u));end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
772 local function u(a,e,l,t,u)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
773 local i=0;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
774 local s=a.name
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
775 o(e,"<"..s);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
776 for a,n in h(a.attr)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
777 if r(a,"\1",1,true)then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
778 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
779 i=i+1;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
780 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
781 elseif not(a=="xmlns"and n==u)then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
782 o(e," "..a.."='"..t(n).."'");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
783 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
784 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
785 local i=#a;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
786 if i==0 then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
787 o(e,"/>");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
788 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
789 o(e,">");
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
790 for i=1,i do
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
791 local i=a[i];
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
792 if i.name then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
793 l(i,e,l,t,a.attr.xmlns);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
794 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
795 o(e,t(i));
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
796 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
797 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
798 o(e,"</"..s..">");
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
799 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
800 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
801 function e.__tostring(t)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
802 local e={};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
803 u(t,e,u,m,nil);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
804 return y(e);
177
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 function e.top_tag(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
807 local e=l(e,true);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
808 return p(e):sub(1,-3)..">";
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
809 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
810 function e.get_text(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
811 if#e.tags==0 then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
812 return y(e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
813 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
814 return nil;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
815 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
816 function e.get_error(e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
817 local i,t,a,o;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
818 local e=e:get_child("error");
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
819 if not e then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
820 return nil,nil,nil,nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
821 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
822 i=e.attr.type;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
823 for i,e in s(e.tags)do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
824 if e.attr.xmlns==b then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
825 if not a and e.name=="text"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
826 a=e:get_text();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
827 elseif not t then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
828 t=e.name;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
829 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
830 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
831 o=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
832 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
833 if t and a and o then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
834 break;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
835 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
836 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
837 return i,t or"undefined-condition",a,o;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
838 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
839 function e.add_error(o,a,s,h,i)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
840 local e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
841 if t(a)=="table"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
842 if t(a.extra)=="table"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
843 e=a.extra;
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 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
846 a,s,h=a.type,a.condition,a.text;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
847 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
848 if o.attr.from==i then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
849 i=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
850 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
851 o:tag("error",{type=a,by=i})
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
852 :tag(s,v);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
853 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
854 o:text(e.uri);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
855 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
856 o:up();
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
857 if h then o:text_tag("text",h,v);end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
858 if e and n(e.tag)then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
859 o:add_child(e.tag);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
860 elseif e and e.namespace and e.condition then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
861 o:tag(e.condition,{xmlns=e.namespace}):up();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
862 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
863 return o:up();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
864 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
865 local function u(i)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
866 local a={name=i.name,attr=i.attr};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
867 for i,e in s(i)do
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
868 if t(e)=="table"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
869 o(a,u(e));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
870 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
871 o(a,e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
872 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
873 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
874 return a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
875 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
876 e.__freeze=u;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
877 local function c(a)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
878 if a then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
879 local e=a.attr;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
880 local o={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
881 for e,a in h(e)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
882 if t(e)=="string"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
883 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
884 local e,t=d(e,"^([^|]+)|(.+)$");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
885 o[e.."\1"..t]=a;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
886 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
887 o[e]=a;
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 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
891 local o=i(a.name,o);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
892 for a,e in s(a)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
893 if t(e)=="table"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
894 o:add_direct_child(c(e));
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
895 elseif t(e)=="string"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
896 o:add_direct_child(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
897 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
898 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
899 return o;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
900 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
901 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
902 local function v(t,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
903 if not e then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
904 return i("message",t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
905 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
906 return i("message",t):text_tag("body",e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
907 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
908 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
909 local function w(e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
910 if not e then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
911 a("iq stanzas require id and type attributes");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
912 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
913 if not e.id then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
914 a("iq stanzas require an id attribute");
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 if not e.type then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
917 a("iq stanzas require a type attribute");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
918 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
919 return i("iq",e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
920 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
921 local function h(e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
922 if not n(e)then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
923 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
924 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
925 return i(e.name,
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
926 {
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
927 to=e.attr.from,
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
928 from=e.attr.to,
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
929 id=e.attr.id,
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
930 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
931 });
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
932 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
933 local function y(e,r,o,i,s)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
934 if not n(e)then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
935 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
936 elseif e.attr.type=="error"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
937 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
938 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
939 local e=h(e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
940 e.attr.type="error";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
941 e:add_error(r,o,i,s);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
942 e.last_add={e[1]};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
943 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
944 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
945 local function d(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
946 return i("presence",e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
947 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
948 local s;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
949 if j then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
950 local a,t=f.getstyle,f.getstring;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
951 local h=a("1b3967");
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
952 local r=a("13b5ea");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
953 local o=a("439639");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
954 local n=a("a0ce67");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
955 local i=a("d9541e");
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
956 local a=a("e96d1f");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
957 local a=(
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
958 t(n,"%1")..
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
959 t(o,"%2")..
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
960 t(i,"%3")..
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
961 t(a,"%4")..
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
962 t(i,"%5")
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
963 );
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
964 local o=(
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
965 t(o,"%1")..
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
966 t(n,"%2")..
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
967 t(o,"%3")
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
968 );
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
969 function s(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
970 return(e:gsub("(<[?/]?)([^ >/?]*)(.-)([?/]?>)([^<]*)",function(e,i,s,n,d)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
971 return t(h,e)..t(r,i)..
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
972 s:gsub("([^=]+)(=)([\"'])(.-)([\"'])",a)..
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
973 t(h,n)..
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
974 d:gsub("(&#?)(%w+)(;)",o);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
975 end,100));
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
976 end
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
977 function e.pretty_print(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
978 return s(p(e));
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
979 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
980 function e.pretty_top_tag(e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
981 return s(e:top_tag());
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
982 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
983 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
984 e.pretty_print=e.__tostring;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
985 e.pretty_top_tag=e.top_tag;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
986 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
987 function e.indent(i,e,a)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
988 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
989 return i;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
990 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
991 a=a or"\t";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
992 e=e or 1;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
993 local o=l(i,true);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
994 for i in i:children()do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
995 if t(i)=="string"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
996 if i:find("%S")then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
997 o:text("\n"..a:rep(e));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
998 o:text(i);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
999 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1000 elseif n(i)then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1001 o:text("\n"..a:rep(e));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1002 o:add_direct_child(i:indent(e+1,a));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1003 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1004 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1005 o:text("\n"..a:rep((e-1)));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1006 return o;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1007 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1008 return{
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1009 stanza_mt=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1010 stanza=i;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1011 is_stanza=n;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1012 preserialize=u;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1013 deserialize=c;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1014 clone=l;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1015 message=v;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1016 iq=w;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1017 reply=h;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1018 error_reply=y;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1019 presence=d;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1020 xml_escape=m;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1021 pretty_print=s;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1022 };
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1023 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1024 package.preload['util.timer']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
1025 local _ENV=_ENV;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1026 local function e(t,...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1027 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
1028 package.loaded[t]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1029 for t=1,select("#",...)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1030 (select(t,...))(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1031 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1032 _ENV=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1033 _M=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1034 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1035 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1036 local a=require"util.indexedbheap";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1037 local t=require"util.logger".init("timer");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1038 local e=require"net.server";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1039 local d=require"util.time".now
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1040 local m=type;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1041 local i=debug.traceback;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1042 local r=tostring;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1043 local f=require"util.xpcall".xpcall;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1044 local c=math.max;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1045 local u=pairs;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1046 if e.timer then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1047 return e.timer;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1048 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1049 local _ENV=nil;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1050 local h=e.add_task;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1051 local o;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1052 local s=0;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1053 local a=a.create();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1054 local n={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1055 local e=nil;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1056 local function l(e)t("error","Traceback[timer]: %s",i(r(e),2));end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1057 local function r(o)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1058 local t;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1059 local i;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1060 while true do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1061 t=a:peek();
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1062 if t==nil or t>o then break;end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1063 local a,t,e=a:pop();
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1064 local s=n[e];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1065 n[e]=nil;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1066 local h,a=f(t,l,o,e,s);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1067 if h and m(a)=="number"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1068 if i then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1069 i[e]={t,a+o};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1070 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1071 i={[e]={t,a+o}};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1072 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1073 n[e]=s;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1074 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1075 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1076 if i then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1077 for o,e in u(i)do
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1078 a:insert(e[1],e[2],o);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1079 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1080 t=a:peek();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1081 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1082 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
1083 t=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1084 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1085 e=t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1086 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1087 if t then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1088 return t-o;
177
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 s=s-1;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1091 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1092 local function l(t,l,u)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1093 local i=d();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1094 local t=i+t;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1095 local a=a:insert(l,t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1096 n[a]=u;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1097 if e==nil or t<e then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1098 e=t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1099 if o then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1100 o:close();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1101 o=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1102 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1103 s=s+1;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1104 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1105 o=h(e-i,r);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1106 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1107 return a;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1108 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1109 local function u(t)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1110 n[t]=nil;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1111 local s,n,i=a:remove(t);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1112 local t=a:peek();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1113 if t~=e and o then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1114 e=t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1115 o:close();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1116 if e~=nil then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1117 o=h(c(e-d(),0),r);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1118 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1119 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1120 return s,n,i;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1121 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1122 local function s(o,i)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1123 local n=d();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1124 local t=n+i;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1125 a:reprioritize(o,i);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1126 if e==nil or t<e then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1127 e=t;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1128 h(e-n,r);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1129 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1130 return o;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1131 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1132 return{
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1133 add_task=l;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1134 stop=u;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1135 reschedule=s;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1136 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1137 end)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1138 package.preload['util.termcolours']=(function(...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1139 local _ENV=_ENV;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1140 local function e(t,...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1141 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
1142 package.loaded[t]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1143 for t=1,select("#",...)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1144 (select(t,...))(e);
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 _ENV=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1147 _M=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1148 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1149 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1150 local r,h=table.concat,table.insert;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1151 local t,s=string.char,string.format;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1152 local o=tonumber;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1153 local c=ipairs;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1154 local m=io.write;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1155 local i=math.floor;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1156 local u=type;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1157 local d=setmetatable;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1158 local l=pairs;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1159 local a;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1160 if os.getenv("WINDIR")then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1161 a=require"util.windows";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1162 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1163 local n=a and a.get_consolecolor and a.get_consolecolor();
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1164 local _ENV=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1165 local e={
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1166 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
1167 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
1168 ["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
1169 ["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
1170 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
1171 }
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1172 local y={
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1173 ["0"]=n,
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1174 ["1"]=7+8,
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1175 ["1;33"]=2+4+8,
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1176 ["1;31"]=4+8
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1177 }
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1178 local f={
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1179 [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
1180 [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
1181 [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
1182 [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
1183 [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
1184 [46]="background-color:cyan",[47]="background-color: white";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1185 };
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1186 local w=t(27).."[%sm%s"..t(27).."[0m";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1187 local function p(t,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1188 if t then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1189 return s(w,t,e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1190 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1191 return e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1192 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1193 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1194 local function w(e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1195 return i(e*3/32)+232;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1196 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1197 local function v(e,t,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1198 if e==t and t==a then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1199 return w(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1200 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1201 e=i(e*3/128);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1202 t=i(t*3/128);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1203 a=i(a*3/128);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1204 return 16+(e*36)+(t*6)+(a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1205 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1206 local function t(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1207 local t=o(e:sub(1,2),16);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1208 local a=o(e:sub(3,4),16);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1209 local e=o(e:sub(5,6),16);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1210 return t,a,e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1211 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1212 d(e,{__index=function(a,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1213 if u(e)=="string"and e:find("%x%x%x%x%x%x")==1 then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1214 local a=e:sub(7)==" background"and"48;5;"or"38;5;";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1215 return s("%s%d",a,v(t(e)));
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1216 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1217 end});
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1218 local t={
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1219 red="ff0000";fuchsia="ff00ff";green="008000";white="ffffff";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1220 lime="00ff00";yellow="ffff00";purple="800080";blue="0000ff";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1221 aqua="00ffff";olive="808000";black="000000";navy="000080";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1222 teal="008080";silver="c0c0c0";maroon="800000";gray="808080";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1223 }
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1224 for t,a in l(t)do
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1225 e[t]=e[t]or e[a];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1226 t,a=t.." background",a.." background"
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1227 e[t]=e[t]or e[a];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1228 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1229 local function s(...)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1230 local t,a={...},{};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1231 for o,t in c(t)do
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1232 t=e[t];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1233 if t then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1234 h(a,t);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1235 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1236 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1237 return r(a,";");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1238 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1239 local t="0";
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1240 local function i(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1241 e=e or"0";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1242 if e~=t then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1243 m("\27["..e.."m");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1244 t=e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1245 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1246 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1247 if a then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1248 function i(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1249 e=e or"0";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1250 if e~=t then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1251 a.set_consolecolor(y[e]or n);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1252 t=e;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1253 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1254 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1255 if not n then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1256 function i()end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1257 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1258 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1259 local function a(t)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1260 if t=="0"then return"</span>";end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1261 local e={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1262 for t in t:gmatch("[^;]+")do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1263 h(e,f[o(t)]);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1264 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1265 return"</span><span style='"..r(e,";").."'>";
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1266 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1267 local function t(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1268 return e:gsub("\027%[(.-)m",a);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1269 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1270 return{
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1271 getstring=p;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1272 getstyle=s;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1273 setstyle=i;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1274 tohtml=t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1275 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1276 end)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1277 package.preload['util.uuid']=(function(...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1278 local _ENV=_ENV;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1279 local function e(t,...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1280 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
1281 package.loaded[t]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1282 for t=1,select("#",...)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1283 (select(t,...))(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1284 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1285 _ENV=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1286 _M=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1287 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1288 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1289 local t=require"util.random";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1290 local a=t.bytes;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1291 local o=require"util.hex".encode;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1292 local i=math.ceil;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1293 local function e(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1294 return o(a(i(e/2))):sub(1,e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1295 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1296 local function o()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1297 return("%x"):format(a(1):byte()%4+8);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1298 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1299 local function a()
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1300 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
1301 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1302 return{
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1303 get_nibbles=e;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1304 generate=a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1305 seed=t.seed;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1306 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1307 end)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1308 package.preload['util.time']=(function(...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1309 local _ENV=_ENV;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1310 local function e(t,...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1311 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
1312 package.loaded[t]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1313 for t=1,select("#",...)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1314 (select(t,...))(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1315 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1316 _ENV=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1317 _M=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1318 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1319 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1320 local a=require"socket".gettime;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1321 local e;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1322 local t,o=pcall(require,"system");
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1323 if t then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1324 e=o.monotime;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1325 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1326 return{
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1327 now=a;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1328 monotonic=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1329 }
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1330 end)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1331 package.preload['util.envload']=(function(...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1332 local _ENV=_ENV;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1333 local function e(t,...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1334 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
1335 package.loaded[t]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1336 for t=1,select("#",...)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1337 (select(t,...))(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1338 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1339 _ENV=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1340 _M=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1341 return e;
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 local t=load;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1344 local n=io.open;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1345 local function s(o,a,e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1346 return t(o,a,nil,e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1347 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1348 local function i(a,i)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1349 local e,n,o=n(a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1350 if not e then return e,n,o;end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1351 local a,t=t(e:lines(2048),"@"..a,nil,i);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1352 e:close();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1353 return a,t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1354 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1355 return{envload=s,envloadfile=i};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1356 end)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1357 package.preload['util.id']=(function(...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1358 local _ENV=_ENV;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1359 local function e(t,...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
1360 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
1361 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
1362 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
1363 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
1364 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
1365 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
1366 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
1367 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
1368 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1369 local o=string.gsub;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1370 local t=require"util.random".bytes;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1371 local a=require"util.encodings".base64.encode;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1372 local i={["+"]="-",["/"]="_",["="]=""};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1373 local function e(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1374 return(o(a(t(e)),"[+/=]",i));
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1375 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1376 return{
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1377 tiny=function()return e(3);end;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1378 short=function()return e(9);end;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1379 medium=function()return e(18);end;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1380 long=function()return e(27);end;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1381 custom=function(t)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1382 return function()return e(t);end;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1383 end;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1384 }
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1385 end)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1386 package.preload['util.serialization']=(function(...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1387 local _ENV=_ENV;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1388 local function e(t,...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1389 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
1390 package.loaded[t]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1391 for t=1,select("#",...)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1392 (select(t,...))(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1393 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1394 _ENV=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1395 _M=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1396 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1397 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1398 local u=getmetatable;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1399 local e,o=next,type;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1400 local n=string.format;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1401 local p=string.gsub;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1402 local y=string.rep;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1403 local a=string.char;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1404 local g=string.match;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1405 local H=table.concat;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1406 local S=require"util.hex".to;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1407 local N=pcall;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1408 local v=require"util.envload".envload;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1409 if not math.type then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1410 require"util.mathcompat"
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1411 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1412 local z,A=math.huge,-math.huge;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1413 local j=math.type;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1414 local function l(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1415 return e,t,nil;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1416 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1417 local function h(t,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1418 error("Can't serialize "..o(t)..(e and": "..e or""));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1419 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1420 local function t(t,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1421 return n("{__type=%q,__error=%q}",o(t),e or"fail");
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1422 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1423 local r={
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1424 ['\a']=[[\a]];['\b']=[[\b]];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1425 ['\f']=[[\f]];['\n']=[[\n]];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1426 ['\r']=[[\r]];['\t']=[[\t]];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1427 ['\v']=[[\v]];['\\']=[[\\]];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1428 ['\"']=[[\"]];['\'']=[[\']];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1429 }
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1430 for t=0,255 do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1431 local e=a(t);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1432 if not r[e]then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1433 r[e]=n("\\%03d",t);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1434 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1435 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1436 local a={
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1437 ["do"]=true;["and"]=true;["else"]=true;["break"]=true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1438 ["if"]=true;["end"]=true;["goto"]=true;["false"]=true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1439 ["in"]=true;["for"]=true;["then"]=true;["local"]=true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1440 ["or"]=true;["nil"]=true;["true"]=true;["until"]=true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1441 ["elseif"]=true;["function"]=true;["not"]=true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1442 ["repeat"]=true;["return"]=true;["while"]=true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1443 };
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1444 local function s(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1445 if o(e)~="table"then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1446 e={preset=e};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1447 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1448 local i={
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1449 table=true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1450 string=true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1451 number=true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1452 boolean=true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1453 ["nil"]=true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1454 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1455 if e.preset=="debug"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1456 e.preset="oneline";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1457 e.freeze=true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1458 e.fatal=false;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1459 e.fallback=t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1460 e.unquoted=true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1461 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1462 if e.preset=="oneline"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1463 e.indentwith=e.indentwith or"";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1464 e.itemstart=e.itemstart or" ";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1465 e.itemlast=e.itemlast or"";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1466 e.tend=e.tend or" }";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1467 elseif e.preset=="compact"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1468 e.indentwith=e.indentwith or"";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1469 e.itemstart=e.itemstart or"";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1470 e.itemlast=e.itemlast or"";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1471 e.equals=e.equals or"=";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1472 e.unquoted=true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1473 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1474 local s=e.fallback or e.fatal==false and t or h;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1475 local function h(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1476 return(i[o(e)]or s)(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1477 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1478 local q=e.keywords or a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1479 local f=e.indentwith or"\t";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1480 local b=e.itemstart or"\n";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1481 local v=e.itemsep or";";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1482 local I=e.itemlast or";\n";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1483 local w=e.tstart or"{";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1484 local N=e.tend or"}";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1485 local k=e.kstart or"[";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1486 local x=e.kend or"]";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1487 local c=e.equals or" = ";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1488 local m=e.unquoted==true and"^[%a_][%w_]*$"or e.unquoted;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1489 local d=e.hex;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1490 local T=e.freeze;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1491 local E=e.maxdepth or 127;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1492 local _=e.multiref;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1493 local O=e.table_iterator or l;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1494 local function l(a,t,e,i)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1495 if t[a]then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1496 t[e],e=s(a,"table has multiple references"),e+1;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1497 return e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1498 elseif i>E then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1499 t[e],e=s(a,"max table depth reached"),e+1;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1500 return e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1501 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1502 local d=a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1503 t[a]=true;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1504 t[d]=true;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1505 if T==true then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1506 local i=u(a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1507 if o(i)=="table"then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1508 local n=i.__name;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1509 local i=i.__freeze;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1510 if o(i)=="function"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1511 a=i(a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1512 if o(a)=="string"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1513 t[e],e=a,e+1;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1514 return e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1515 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1516 if o(n)=="string"then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1517 t[e],e=n,e+1;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1518 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1519 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1520 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1521 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1522 t[e],e=w,e+1;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1523 local p=y(f,i);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1524 local r=1;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1525 local n,u;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1526 local w=false;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1527 for a,s in O(a)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1528 w=true;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1529 t[e],e=b,e+1;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1530 t[e],e=p,e+1;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1531 n,u=o(a),o(s);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1532 if a==r then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1533 r=r+1;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1534 elseif m and n=="string"and
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1535 not q[a]and g(a,m)then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1536 t[e],e=a,e+1;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1537 t[e],e=c,e+1;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1538 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1539 t[e],e=k,e+1;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1540 if n=="table"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1541 e=l(a,t,e,i+1);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1542 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1543 t[e],e=h(a),e+1;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1544 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1545 t[e],t[e+1],e=x,c,e+2;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1546 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1547 if u=="table"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1548 e=l(s,t,e,i+1);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1549 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1550 t[e],e=h(s),e+1;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1551 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1552 t[e],e=v,e+1;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1553 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1554 if w then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1555 t[e-1]=I;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1556 t[e],e=y(f,i-1),e+1;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1557 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1558 t[e],e=N,e+1;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1559 if _ then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1560 t[a]=nil;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1561 t[d]=nil;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1562 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1563 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1564 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1565 function i.table(t)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1566 local e={};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1567 l(t,e,1,1);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1568 return H(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1569 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1570 local function a(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1571 return'"'..p(e,"[%z\1-\31\"\'\\\127-\255]",r)..'"';
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1572 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1573 if o(d)=="string"then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1574 function i.string(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1575 local t=a(e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1576 if#t>(#e*2+2+#d)then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1577 return d..'"'..S(e)..'"';
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1578 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1579 return t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1580 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1581 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1582 i.string=a;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1583 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1584 function i.number(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1585 if j(e)=="integer"then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1586 return n("%d",e);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1587 elseif e==z then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1588 return"(1/0)";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1589 elseif e==A then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1590 return"(-1/0)";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1591 elseif e~=e then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1592 return"(0/0)";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1593 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1594 return n("%.18g",e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1595 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1596 i["nil"]=function()
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1597 return"nil";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1598 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1599 function i.boolean(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1600 return e and"true"or"false";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1601 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1602 return h;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1603 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1604 local function i(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1605 if o(e)~="string"then return nil;end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1606 e="return "..e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1607 local e,t=v(e,"=serialized data",{});
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1608 if not e then return nil,t;end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1609 local t,e=N(e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1610 if not t then return nil,e;end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1611 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1612 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1613 local a=s();
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1614 return{
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1615 new=s;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1616 serialize=function(e,t)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1617 if t==nil then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1618 return a(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1619 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1620 return s(t)(e);
177
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 end;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1623 deserialize=i;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1624 };
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1625 end)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1626 package.preload['util.indexedbheap']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
1627 local _ENV=_ENV;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1628 local function e(t,...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
1629 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
1630 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
1631 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
1632 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
1633 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
1634 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
1635 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
1636 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
1637 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1638 local d=setmetatable;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1639 local h=math.floor;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1640 local i=table.remove;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1641 local function l(t,i,o,n,s)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1642 local e=#t+1;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1643 while true do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1644 local a=h(e/2);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1645 if a==0 or i>t[a]then break;end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1646 t[e]=t[a];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1647 o[e]=o[a];
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1648 s[o[e]]=e;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1649 e=a;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1650 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1651 t[e]=i;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1652 o[e]=n;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1653 s[n]=e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1654 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1655 local function r(t,e,a,n)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1656 local i=t[e];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1657 local s=a[e];
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1658 while e~=1 do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1659 local o=h(e/2);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1660 if i>=t[o]then break;end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1661 t[e]=t[o];
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1662 a[e]=a[o];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1663 n[a[e]]=e;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1664 e=o;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1665 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1666 t[e]=i;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1667 a[e]=s;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1668 n[s]=e;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1669 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1670 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1671 local function n(a,e,o,h)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1672 local s=a[e];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1673 local n=o[e];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1674 local i=#a;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1675 local t=2*e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1676 while 2*e<=i do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1677 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
1678 t=t+1;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1679 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1680 if s>a[t]then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1681 a[e]=a[t];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1682 o[e]=o[t];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1683 h[o[e]]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1684 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1685 break;
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 e=t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1688 t=2*e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1689 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1690 a[e]=s;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1691 o[e]=n;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1692 h[n]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1693 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1694 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1695 local function u(e,t,a)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1696 local h=#e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1697 if h==0 then return nil;end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1698 local s=e[1];
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1699 local o=t[1];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1700 a[o]=nil;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1701 if h==1 then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1702 e[1]=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1703 t[1]=nil;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1704 return s,o;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1705 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1706 e[1]=i(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1707 t[1]=i(t);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1708 a[t[1]]=1;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1709 n(e,1,t,a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1710 return s,o;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1711 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1712 local t={};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1713 function t:insert(a,t,e)
177
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=self.current_id;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1716 self.current_id=e+1;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1717 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1718 self.items[e]=a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1719 l(self.priorities,t,self.ids,e,self.index);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1720 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1721 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1722 function t:pop()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1723 local a,e=u(self.priorities,self.ids,self.index);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1724 if e then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1725 local t=self.items[e];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1726 self.items[e]=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1727 return a,t,e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1728 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1729 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1730 function t:peek()
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1731 return self.priorities[1];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1732 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1733 function t:reprioritize(e,t)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1734 local e=self.index[e];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1735 if e==nil then return;end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1736 self.priorities[e]=t;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1737 e=r(self.priorities,e,self.ids,self.index);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1738 n(self.priorities,e,self.ids,self.index);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1739 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1740 function t:remove_index(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1741 local o=self.priorities[e];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1742 if o==nil then return;end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1743 local t=self.ids[e];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1744 local s=self.items[t];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1745 local a=#self.priorities;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1746 self.priorities[e]=self.priorities[a];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1747 self.ids[e]=self.ids[a];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1748 self.index[self.ids[e]]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1749 i(self.priorities);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1750 i(self.ids);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1751 self.index[t]=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1752 self.items[t]=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1753 if a>e then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1754 e=r(self.priorities,e,self.ids,self.index);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1755 n(self.priorities,e,self.ids,self.index);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1756 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1757 return o,s,t;
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 t:remove(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1760 return self:remove_index(self.index[e]);
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 local e={__index=t};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1763 local e={
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1764 create=function()
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1765 return d({
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1766 ids={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1767 items={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1768 priorities={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1769 index={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1770 current_id=1.5
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1771 },e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1772 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1773 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1774 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1775 end)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1776 package.preload['util.xpcall']=(function(...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1777 local _ENV=_ENV;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1778 local function e(t,...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1779 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
1780 package.loaded[t]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1781 for t=1,select("#",...)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1782 (select(t,...))(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1783 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1784 _ENV=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1785 _M=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1786 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1787 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1788 local e=xpcall;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1789 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
1790 e=require"util.compat".xpcall;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1791 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1792 return{
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1793 xpcall=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1794 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1795 end)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1796 package.preload['util.array']=(function(...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1797 local _ENV=_ENV;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1798 local function e(t,...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1799 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
1800 package.loaded[t]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1801 for t=1,select("#",...)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1802 (select(t,...))(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1803 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1804 _ENV=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1805 _M=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1806 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1807 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1808 local d,l,u,m
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1809 =table.insert,table.sort,table.remove,table.concat;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1810 local s=require"util.table".move;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1811 local h=setmetatable;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1812 local a=getmetatable;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1813 local r=math.random;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1814 local y=math.floor;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1815 local p,w=pairs,ipairs;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1816 local f=tostring;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1817 local c=type;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1818 local i={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1819 local t={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1820 local e={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1821 local o={
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1822 __index=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1823 __name="array";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1824 __tostring=function(e)return"{"..e:concat(", ").."}";end;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1825 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1826 function o:__freeze()return self;end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1827 local function n(t,e,a,i)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1828 if c(e)=="function"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1829 e=t.collect(e,a,i);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1830 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1831 return h(e or{},o);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1832 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1833 function o.__add(a,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1834 local t=n();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1835 return t:append(a):append(e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1836 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1837 function o.__eq(e,t)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1838 if a(e)~=o or a(t)~=o then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1839 return false;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1840 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1841 if#e==#t then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1842 for a=1,#e do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1843 if e[a]~=t[a]then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1844 return false;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1845 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1846 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1847 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1848 return false;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1849 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1850 return true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1851 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1852 function o.__div(a,i)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1853 local t=n();
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1854 local e=0;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1855 for o=1,#a do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1856 local a=i(a[o]);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1857 if a~=nil then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1858 e=e+1;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1859 t[e]=a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1860 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1861 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1862 return t;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1863 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1864 h(i,{__call=n});
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1865 function e:random()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1866 return self[r(1,#self)];
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1867 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1868 function e:random_other(t)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1869 local e=#self;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1870 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
1871 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1872 function t.map(e,t,o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1873 for t,a in w(t)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1874 e[t]=o(a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1875 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1876 return e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1877 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1878 function t.filter(t,a,n)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1879 local i,o=a==t,#a;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1880 local e=1;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1881 for o=1,o do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1882 local a=a[o];
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1883 if n(a)then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1884 t[e]=a;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1885 e=e+1;
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 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1888 if i and e<=o then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1889 for e=e,o do
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1890 t[e]=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1891 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1892 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1893 return t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
1894 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1895 function t.slice(o,t,a,e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1896 if e==nil then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1897 e=-1;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1898 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1899 if e<0 then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1900 e=#t+(e+1);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1901 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1902 if a<0 then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1903 a=#t+(a+1);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1904 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1905 if a<1 then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1906 a=1;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1907 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1908 if e>#t then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1909 e=#t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1910 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1911 if a>e then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1912 for e=1,#o do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1913 o[e]=nil;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1914 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1915 return o;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1916 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1917 s(t,a,e,1,o);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1918 if t==o then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1919 s(t,#o+1,#o*2,2+e-a,t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1920 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1921 return o;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1922 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1923 function t.sort(e,t,...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1924 if t~=e then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1925 e:append(t);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1926 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1927 l(e,...);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1928 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1929 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1930 function t.unique(o,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1931 local a={};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1932 return t.filter(o,e,function(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1933 if a[e]then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1934 return false;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1935 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1936 a[e]=true;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1937 return true;
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 end);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1940 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1941 function t.pluck(t,e,i,o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1942 for a=1,#e do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1943 local e=e[a][i];
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1944 if e==nil then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1945 e=o;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1946 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1947 t[a]=e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1948 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1949 return t;
177
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 function t.reverse(e,i)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1952 local t=#i;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1953 if i==e then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1954 local a=y(t/2);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1955 t=t+1;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1956 local o;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1957 for a=1,a do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1958 o=t-a;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1959 e[a],e[o]=e[o],e[a];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1960 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1961 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1962 local a=t+1;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1963 for t=1,t do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1964 e[t]=i[a-t];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1965 end
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 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1968 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1969 function e:shuffle()
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1970 local t=#self;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1971 for e=1,#self do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1972 local t=r(e,t);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1973 self[e],self[t]=self[t],self[e];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1974 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1975 return self;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1976 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1977 function e:append(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1978 s(e,1,#e,#self+1,self);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1979 return self;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1980 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1981 function e:push(t)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1982 d(self,t);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1983 return self;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1984 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1985 e.pop=u;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1986 function e:concat(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1987 return m(i.map(self,f),e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1988 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1989 function e:length()
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1990 return#self;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1991 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1992 function i.collect(i,a,e)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
1993 local t={};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1994 while true do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1995 e=i(a,e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
1996 if e==nil then break;end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1997 d(t,e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1998 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
1999 return h(t,o);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2000 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2001 for t,a in p(t)do
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2002 local a=a;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2003 i[t]=function(o,...)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2004 local t=n();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2005 return a(t,o,...);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2006 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2007 e[t]=function(e,...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2008 return a(e,e,...);
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 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2011 return i;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2012 end)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2013 package.preload['util.format']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2014 local _ENV=_ENV;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2015 local function e(t,...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2016 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
2017 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2018 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2019 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2020 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2021 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2022 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2023 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2024 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2025 local n=tostring;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2026 local p=table.unpack;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2027 local e=table.pack;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2028 local y=require"util.encodings".utf8.valid;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2029 local i=type;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2030 local w=require"util.serialization".new("debug");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2031 local d=math.type;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2032 local u={c=true,d=true,i=true,o=true,u=true,X=true,x=true,};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2033 local l={o=true;u=true;x=true;X=true};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2034 local r={
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2035 ["\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
2036 ["\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
2037 ["\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
2038 ["\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
2039 ["\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
2040 ["\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
2041 ["\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
2042 ["\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
2043 ["\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
2044 ["\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
2045 ["\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
2046 };
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2047 local c=pcall(string.format,"%p","");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2048 local function f(h,...)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2049 local o=e(...);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2050 local m=o.n;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2051 local a=0;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2052 h=h:gsub("%%[^cdiouxXaAeEfgGpqs%%]*[cdiouxXaAeEfgGpqs%%]",function(s)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2053 if s=="%%"then return end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2054 a=a+1;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2055 local e=o[a];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2056 if e==nil then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2057 o[a]="nil";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2058 return"(%s)";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2059 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2060 local t=s:sub(-1);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2061 local i=i(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2062 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
2063 return
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2064 elseif i=="number"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2065 if t=="g"or(t=="d"and d(e)=="integer")then return end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2066 elseif t=="s"and i~="string"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2067 e=n(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2068 i="string";
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 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
2071 if i~="number"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2072 e=n(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2073 t="s";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2074 s="[%s]";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2075 i="string";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2076 elseif u[t]and d(e)~="integer"then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2077 o[a]=n(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2078 return"[%s]";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2079 elseif l[t]and e<0 then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2080 o[a]=n(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2081 return"[%s]";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2082 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2083 return
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2084 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2085 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2086 if t=="p"and not c then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2087 e=n(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2088 t="s";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2089 s="[%s]";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2090 i="string";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2091 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2092 if i=="string"and t~="p"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2093 if not y(e)then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2094 t="q";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2095 elseif t~="q"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2096 o[a]=e:gsub("[%z\1-\8\11-\31\127]",r):gsub("\n\t?","\n\t");
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2097 return s;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2098 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2099 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2100 if t=="q"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2101 o[a]=w(e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2102 return"%s";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2103 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2104 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
2105 o[a]=n(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2106 return"[%s]";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2107 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2108 end);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2109 while a<m do
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2110 a=a+1;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2111 local e=o[a];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2112 if e==nil then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2113 o[a]="(nil)";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2114 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2115 o[a]=n(e):gsub("[%z\1-\8\11-\31\127]",r):gsub("\n\t?","\n\t");
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2116 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2117 h=h.." [%s]"
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2118 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2119 return h:format(p(o));
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2120 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2121 return{
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2122 format=f;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2123 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2124 end)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2125 package.preload['util.promise']=(function(...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2126 local _ENV=_ENV;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2127 local function e(t,...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2128 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
2129 package.loaded[t]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2130 for t=1,select("#",...)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2131 (select(t,...))(e);
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 _ENV=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2134 _M=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2135 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2136 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2137 local i={};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2138 local n={__name="promise",__index=i};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2139 local s=require"util.xpcall".xpcall;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2140 local l=table.unpack;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2141 function n:__tostring()
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2142 return"promise ("..(self._state or"invalid")..")";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2143 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2144 local function o(e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2145 local e=getmetatable(e);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2146 return e==n;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2147 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2148 local function e(e,a,o,t)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2149 if not e then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2150 return t;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2151 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2152 return function(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2153 local t,e=s(e,debug.traceback,t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2154 if t then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2155 a(e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2156 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2157 o(e);
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 return true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2160 end;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2161 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2162 local function u(o,i,n,a,t)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2163 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
2164 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
2165 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2166 local function d(i,o,n,t,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2167 e(o,t,a,t)(i.value);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2168 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2169 local function r(i,n,o,a,t)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2170 e(o,a,t,t)(i.reason);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2171 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2172 local function a(e,t,a,o,i)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2173 if e._state~="pending"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2174 return;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2175 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2176 e._state=t;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2177 e._next=a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2178 for a,t in ipairs(o)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2179 t(i);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2180 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2181 e._pending_on_fulfilled=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2182 e._pending_on_rejected=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2183 return true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2184 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2185 local function h(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2186 local function i(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2187 if o(t)then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2188 t:next(h(e));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2189 elseif a(e,"fulfilled",d,e._pending_on_fulfilled,t)then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2190 e.value=t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2191 end
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 local function o(t)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2194 if a(e,"rejected",r,e._pending_on_rejected,t)then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2195 e.reason=t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2196 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2197 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2198 return i,o;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2199 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2200 local d=function(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2201 e();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2202 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2203 local function e(a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2204 local e=setmetatable({_state="pending",_next=u,_pending_on_fulfilled={},_pending_on_rejected={}},n);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2205 if a then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2206 d(function()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2207 local o,t=h(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2208 local a,o=s(a,debug.traceback,o,t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2209 if not a and e._state=="pending"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2210 t(o);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2211 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2212 end);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2213 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2214 return e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2215 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2216 local function r(i)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2217 return e(function(n,r)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2218 local e,a,h=0,{},false;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2219 local t=0;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2220 for s,i in pairs(i)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2221 if o(i)then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2222 t=t+1;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2223 i:next(function(o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2224 a[s]=o;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2225 e=e+1;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2226 if e==t and h then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2227 n(a);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2228 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2229 end,r);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2230 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2231 a[s]=i;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2232 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2233 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2234 h=true;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2235 if e==t then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2236 n(a);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2237 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2238 end);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2239 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2240 local function u(n)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2241 return e(function(s)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2242 local e,t,i=0,{},false;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2243 local a=0;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2244 for n,h in pairs(n)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2245 if o(h)then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2246 a=a+1;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2247 h:next(function(o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2248 t[n]={status="fulfilled",value=o};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2249 e=e+1;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2250 if e==a and i then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2251 s(t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2252 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2253 end,function(o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2254 t[n]={status="rejected",reason=o};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2255 e=e+1;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2256 if e==a and i then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2257 s(t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2258 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2259 end);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2260 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2261 t[n]=h;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2262 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2263 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2264 i=true;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2265 if e==a then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2266 s(t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2267 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2268 end);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2269 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2270 local function s(t,...)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2271 local e,a={...},select("#",...);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2272 return r(e):next(function(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2273 return t(l(e,1,a));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2274 end);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2275 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2276 local function n(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2277 return e(function(o,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2278 for e=1,#t do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2279 t[e]:next(o,a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2280 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2281 end);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2282 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2283 local function a(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2284 return e(function(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2285 e(t);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2286 end);
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2287 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2288 local function t(t)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2289 return e(function(a,e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2290 e(t);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2291 end);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2292 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2293 local function h(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2294 return a():next(function()return e();end);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2295 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2296 function i:next(t,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2297 return e(function(e,o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2298 self:_next(t,a,e,o);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2299 end);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2300 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2301 function i:catch(e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2302 return self:next(nil,e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2303 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2304 function i:finally(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2305 local function i(t)e();return t;end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2306 local function o(a)e();return t(a);end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2307 return self:next(i,o);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2308 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2309 return{
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2310 new=e;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2311 resolve=a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2312 join=s;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2313 reject=t;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2314 all=r;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2315 all_settled=u;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2316 race=n;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2317 try=h;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2318 is_promise=o;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2319 set_nexttick=function(e)d=e;end;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2320 }
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2321 end)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2322 package.preload['net.adns']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2323 local _ENV=_ENV;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2324 local function e(t,...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2325 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
2326 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2327 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2328 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2329 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2330 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2331 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2332 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2333 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2334 local a=setmetatable;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2335 local f=tostring;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2336 local y=table.concat;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2337 local n=string.format;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2338 local m=string.lower;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2339 local u=string.upper;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2340 local i=function()end;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2341 local w=require"util.logger";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2342 local o=w.init("unbound");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2343 local k=require"net.server";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2344 local s=require"lunbound";
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2345 local g=require"util.promise";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2346 local b=require"util.id".short;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2347 local p=require"socket".gettime;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2348 local e=require"util.dns";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2349 local h,r,l=e.classes,e.types,e.errors;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2350 local v=e.parsers;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2351 local t={hoststxt=false}
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2352 local function d(e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2353 e=e or{};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2354 for t,a in pairs(t)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2355 if e[t]==nil then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2356 e[t]=a;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2357 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2358 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2359 for t,a in pairs(s.config)do
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2360 if e[t]==nil then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2361 e[t]=a;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2362 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2363 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2364 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2365 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2366 local t;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2367 if prosody then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2368 local e=require"core.configmanager";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2369 t=d(e.get("*","unbound"));
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2370 prosody.events.add_handler("config-reloaded",function()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2371 t=d(e.get("*","unbound"));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2372 end);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2373 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2374 local function q(e,t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2375 o("debug","Setting up net.server event handling for %s",e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2376 return t.watchfd(e,function()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2377 o("debug","Processing queries for %s",e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2378 e:process()
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 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2381 local o,c;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2382 local function d()
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2383 o=s.new(t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2384 c=q(o,k);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2385 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2386 if prosody then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2387 prosody.events.add_handler("server-started",d);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2388 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2389 local s={
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2390 __tostring=function(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2391 if e._string then return e._string end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2392 local t=n("Status: %s",l[e.status]);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2393 if e.secure then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2394 t=t..", Secure";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2395 elseif e.bogus then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2396 t=t..n(", Bogus: %s",e.bogus);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2397 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2398 local a={t};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2399 for t=1,#e do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2400 a[t+1]=e.qname.."\t"..h[e.qclass].."\t"..r[e.qtype].."\t"..f(e[t]);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2401 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2402 local t=y(a,"\n");
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2403 e._string=t;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2404 return t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2405 end;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2406 };
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2407 local n={};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2408 local function y(e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2409 if not e then return end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2410 local i=l[e.rcode];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2411 local o=h[e.qclass];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2412 local t=r[e.qtype];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2413 e.status,e.class,e.type=i,o,t;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2414 local o=m(t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2415 local i={__index=e,__tostring=function(e)return f(e[o])end};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2416 local n=v[t];
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2417 for t=1,#e do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2418 if e.bogus then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2419 e[t]=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2420 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2421 e[t]=a({[o]=n(e[t])},i);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2422 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2423 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2424 return a(e,s);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2425 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2426 local function m(c,l,a,t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2427 if not o then d();end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2428 a=a and u(a)or"A";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2429 t=t and u(t)or"IN";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2430 local u,d=r[a],h[t];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2431 local h=p();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2432 local s;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2433 local i=w.init("unbound.query"..b());
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2434 local function r(e,o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2435 local r=p();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2436 n[s]=nil;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2437 if e then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2438 y(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2439 i("debug","Results for %s %s %s: %s (%s, %f sec)",l,t,a,e.rcode==0 and(#e.." items")or e.status,
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2440 e.secure and"Secure"or e.bogus or"Insecure",r-h);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2441 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2442 i("error","Results for %s %s %s: %s",l,t,a,f(o));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2443 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2444 local e,t=pcall(c,e,o);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2445 if not e then i("error","Error in callback: %s",t);end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2446 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2447 i("debug","Resolve %s %s %s",l,t,a);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2448 local e;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2449 s,e=o:resolve_async(r,l,u,d);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2450 if s then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2451 n[s]=c;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2452 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2453 i("error","Resolver error: %s",e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2454 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2455 return s,e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2456 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2457 local function s(a,e,t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2458 if not o then d();end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2459 e=e and u(e)or"A";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2460 t=t and u(t)or"IN";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2461 local t,e=r[e],h[t];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2462 local e,t=o:resolve(a,t,e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2463 if not e then return e,t;end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2464 return y(e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2465 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2466 local function e(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2467 local t=n[e];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2468 o:cancel(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2469 if t then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2470 t(nil,"canceled");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2471 n[e]=nil;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2472 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2473 return true;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2474 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2475 local function a()
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2476 for t in pairs(n)do e(t);end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2477 if c then c:close();end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2478 d();
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2479 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2480 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2481 local function t()
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2482 error"not implemented";
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 local a={
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2485 lookup=m;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2486 cancel=e;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2487 new_async_socket=t;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2488 dns={
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2489 lookup=s;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2490 cancel=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2491 cache=i;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2492 socket_wrapper_set=i;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2493 settimeout=i;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2494 query=i;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2495 purge=a;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2496 random=i;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2497 peek=i;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2498 types=r;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2499 classes=h;
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 };
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2502 local function h(e,s,n,i)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2503 return g.new(function(o,t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2504 local function a(a,e)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2505 if e then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2506 return t(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2507 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2508 return o(a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2509 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2510 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2511 local e,a=m(a,s,n,i)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2512 if not e then t(a);end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2513 end);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2514 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2515 local e={
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2516 lookup=function(i,e,t,a,o)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2517 return m(e,t,a,o)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2518 end;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2519 lookup_promise=h;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2520 _resolver={
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2521 settimeout=function()end;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2522 closeall=function()end;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2523 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2524 }
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2525 function a.resolver()return e;end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2526 return a;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2527 end)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2528 package.preload['util.dns']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2529 local _ENV=_ENV;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2530 local function e(t,...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2531 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
2532 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2533 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2534 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2535 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2536 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2537 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2538 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2539 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2540 local t=setmetatable;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2541 local e=table;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2542 local s=e.concat;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2543 local n=e.insert;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2544 local o=string.byte;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2545 local i=string.format;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2546 local h=string.sub;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2547 local c=require"util.dnsregistry";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2548 local m=require"util.hex".encode;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2549 local r=require"util.net".ntop;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2550 local e={};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2551 local function a(i,t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2552 if o(i,t)==0 then return".",t+1;end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2553 local d,r,a=#i,{};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2554 t=t or 1;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2555 repeat
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2556 a=o(i,t)or 0;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2557 n(r,h(i,t+1,t+a));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2558 t=t+a+1;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2559 until a==0 or t>=d;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2560 return s(r,"."),t;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2561 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2562 e.CNAME=a;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2563 e.NS=a
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2564 e.PTR=a;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2565 local p={
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2566 __tostring=function(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2567 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
2568 end;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2569 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2570 function e.SOA(n)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2571 local h,s,i;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2572 h,i=a(n,1);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2573 s,i=a(n,i);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2574 local
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2575 m,f,w,y,
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2576 v,g,b,j,
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2577 x,q,k,c,
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2578 u,i,n,a,
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2579 o,r,l,d
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2580 =o(n,i,i+19);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2581 return t({
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2582 mname=h;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2583 rname=s;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2584 serial=m*16777216+f*65536+w*256+y;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2585 refresh=v*16777216+g*65536+b*256+j;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2586 retry=x*16777216+q*65536+k*256+c;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2587 expire=u*16777216+i*65536+n*256+a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2588 minimum=o*16777216+r*65536+l*256+d;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2589 },p);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2590 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2591 e.A=r;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2592 e.AAAA=r;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2593 local r={
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2594 __tostring=function(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2595 return i("%d %s",e.pref,e.mx)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2596 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2597 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2598 function e.MX(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2599 local i=a(e,3);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2600 local a,e=o(e,1,2);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2601 return t({
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2602 pref=a*256+e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2603 mx=i;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2604 },r);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2605 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2606 local r={
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2607 __tostring=function(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2608 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
2609 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2610 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2611 function e.SRV(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2612 local a=a(e,7);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2613 local e,o,h,n,i,s=o(e,1,6);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2614 return t({
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2615 priority=e*256+o;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2616 weight=h*256+n;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2617 port=i*256+s;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2618 target=a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2619 },r);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2620 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2621 local d={__tostring=s};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2622 function e.TXT(s)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2623 local l=#s;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2624 local r,a,i={},1;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2625 repeat
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2626 i=o(s,a)or 0;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2627 n(r,h(s,a+1,a+i));
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2628 a=a+i+1;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2629 until a>=l;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2630 return t(r,d);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2631 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2632 e.SPF=e.TXT;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2633 local r={
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2634 [0]="PKIX-CA";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2635 [1]="PKIX-EE";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2636 [2]="DANE-TA";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2637 [3]="DANE-EE";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2638 [255]="PrivCert";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2639 };
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2640 local d={
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2641 [0]="Cert",
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2642 [1]="SPKI",
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2643 [255]="PrivSel",
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2644 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2645 local l={
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2646 [0]="Full",
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2647 [1]="SHA2-256",
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2648 [2]="SHA2-512",
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2649 [255]="PrivMatch",
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2650 };
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2651 local u={
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2652 __tostring=function(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2653 return i("%s %s %s %s",
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2654 r[e.use]or e.use,
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2655 d[e.select]or e.select,
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2656 l[e.match]or e.match,
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2657 m(e.data));
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2658 end;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2659 __index={
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2660 getUsage=function(e)return r[e.use]end;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2661 getSelector=function(e)return d[e.select]end;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2662 getMatchType=function(e)return l[e.match]end;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2663 }
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2664 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2665 function e.TLSA(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2666 local i,o,a=o(e,1,3);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2667 return t({
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2668 use=i;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2669 select=o;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2670 match=a;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2671 data=h(e,4);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2672 },u);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2673 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2674 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
2675 t(o,{__index=function(t,e)return"key"..tostring(e);end});
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2676 local f={
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2677 __tostring=function(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2678 local t={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2679 for a=1,#e.fields do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2680 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
2681 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2682 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
2683 end;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2684 };
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2685 local u={__tostring=function(e)return s(e,", ");end}
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2686 function e.SVCB(i)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2687 local o,s=i:byte(1,2);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2688 local l=o*256+s;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2689 local d,o=a(i,3);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2690 local r={};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2691 while#i>o do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2692 local a,s=i:byte(o+0,o+1);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2693 local h,d=i:byte(o+2,o+3);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2694 local s=a*256+s;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2695 local h=h*256+d;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2696 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
2697 if s==1 then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2698 a=t(e.TXT(a),u);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2699 elseif s==3 then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2700 local t,e=a:byte(1,2);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2701 local e=t*256+e;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2702 a=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2703 elseif s==4 then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2704 local o={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2705 for t=1,#a,4 do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2706 n(o,e.A(a:sub(t,t+3)));
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2707 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2708 a=t(o,u);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2709 elseif s==6 then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2710 local o={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2711 for t=1,#a,16 do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2712 n(o,e.AAAA(a:sub(t,t+15)));
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2713 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2714 a=t(o,u);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2715 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2716 n(r,{key=s,value=a,len=h});
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2717 o=o+h+4;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2718 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2719 return t({
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2720 prio=l,name=d,fields=r,
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2721 },f);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2722 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2723 e.HTTPS=e.SVCB;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2724 local o={
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2725 TLSA={
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2726 use=r;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2727 select=d;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2728 match=l;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2729 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2730 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2731 local a={
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2732 __tostring=function(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2733 return i([[\# %d %s]],#e.raw,m(e.raw));
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2734 end;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2735 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2736 local function i(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2737 return t({raw=e},a);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2738 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2739 t(e,{__index=function()return i end});
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2740 return{
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2741 parsers=e;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2742 classes=c.classes;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2743 types=c.types;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2744 errors=c.errors;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2745 params=o;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2746 };
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2747 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2748 package.preload['net.server']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2749 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2750 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2751 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
2752 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2753 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2754 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2755 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2756 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2757 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2758 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2759 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2760 local w=function(e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2761 return _G[e]
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2762 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2763 local W,e=require("util.logger").init("socket"),table.concat;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2764 local n=function(...)return W("debug",e{...});end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2765 local q=function(...)return W("warn",e{...});end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2766 local ie=1
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2767 local f=w"type"
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2768 local j=w"pairs"
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2769 local ne=w"ipairs"
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2770 local p=w"tonumber"
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2771 local u=w"tostring"
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2772 local e=w"table"
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2773 local a=w"string"
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2774 local t=w"coroutine"
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2775 local V=math.min
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2776 local se=math.huge
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2777 local ye=e.concat
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2778 local he=e.insert
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2779 local pe=a.sub
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2780 local ve=t.wrap
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2781 local be=t.yield
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2782 local T=w"socket"or require"socket"
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2783 local P=T.gettime
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2784 local e=require"util.net";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2785 local ke=e.pton;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2786 local ge=require"util.sslconfig";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2787 local Y,je=pcall(require,"net.tls_luasec");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2788 local me=T.bind
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2789 local xe=T.select
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2790 local H
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2791 local Z
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2792 local ce
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2793 local qe
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2794 local ee
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2795 local d
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2796 local we
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2797 local te
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2798 local ae
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2799 local re
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2800 local de
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2801 local ue
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2802 local oe
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2803 local r
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2804 local le
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2805 local B
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2806 local fe
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2807 local v
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2808 local i
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2809 local F
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2810 local h
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2811 local s
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2812 local R
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2813 local b
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2814 local y
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2815 local g
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2816 local z
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2817 local a
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2818 local o
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2819 local k
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2820 local M
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2821 local C
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2822 local U
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2823 local E
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2824 local D
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2825 local X
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2826 local l
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2827 local L
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2828 local S
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2829 local I
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2830 local O
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2831 local N
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2832 local _
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2833 local x
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2834 local A
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2835 v={}
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2836 i={}
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2837 h={}
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2838 F={}
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2839 s={}
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2840 b={}
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2841 y={}
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2842 R={}
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2843 g={}
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2844 a=0
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2845 o=0
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2846 k=0
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2847 M=0
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2848 C=0
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2849 U=1
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2850 E=128
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2851 D=10
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2852 L=51e3*1024
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2853 S=25e3*1024
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2854 I=30
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2855 O=6e4
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2856 N=14*60
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2857 local e=package.config:sub(1,1)=="\\"
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2858 x=(e and math.huge)or T._SETSIZE or 1024
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2859 _=T._SETSIZE or 1024
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2860 A=30
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2861 de=function(w,t,m,c,j,y,p)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2862 if t:getfd()>=x then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2863 q("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
2864 t:close()
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2865 return nil,"fd-too-large"
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2866 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2867 local f=0
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2868 local b,e=w.onconnect,w.ondisconnect
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2869 local k=t.accept
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2870 local e={}
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2871 e.shutdown=function()end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2872 e.ssl=function()
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2873 return y~=nil
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2874 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2875 e.sslctx=function()
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2876 return y
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2877 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2878 e.hosts={}
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2879 e.remove=function()
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2880 f=f-1
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2881 if e then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2882 e.resume()
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2883 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2884 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2885 e.close=function()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2886 t:close()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2887 o=r(h,t,o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2888 a=r(i,t,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2889 v[m..":"..c]=nil;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2890 s[t]=nil
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2891 e=nil
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2892 t=nil
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2893 n"server.lua: closed server handler and removed sockets from list"
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2894 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2895 e.pause=function(o)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2896 if not e.paused then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2897 a=r(i,t,a)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2898 if o then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2899 s[t]=nil
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2900 t:close()
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2901 t=nil;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2902 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2903 e.paused=true;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2904 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
2905 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2906 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2907 e.resume=function()
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2908 if e.paused then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2909 if not t then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2910 t=me(m,c,E);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2911 t:settimeout(0)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2912 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2913 a=d(i,t,a)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2914 s[t]=e
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2915 g[e]=nil
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2916 e.paused=false;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2917 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
2918 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2919 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2920 e.ip=function()
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2921 return m
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2922 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2923 e.serverport=function()
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2924 return c
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2925 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2926 e.socket=function()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2927 return t
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2928 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2929 e.readbuffer=function()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2930 if a>=_ or o>=_ then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2931 e.pause()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2932 g[e]=l
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
2933 n("server.lua: refused new client connection: server full")
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2934 return false
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2935 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2936 local t,i=k(t)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2937 if t then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2938 local a,o=t:getpeername()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2939 local t,i,e=B(e,w,t,a,c,o,j,y,p)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2940 if e then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2941 return false
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2942 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2943 f=f+1
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2944 n("server.lua: accepted new client connection from ",u(a),":",u(o)," to ",u(c))
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2945 if b and not p then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2946 return b(t);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2947 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2948 return;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2949 elseif i then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2950 n("server.lua: error with new client connection: ",u(i))
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2951 e.pause()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2952 g[e]=l
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2953 return false
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2954 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2955 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2956 return e
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2957 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2958 B=function(k,c,t,N,te,I,D,p,Z,Q)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2959 if t:getfd()>=x then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2960 q("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
2961 t:close()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2962 if k then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2963 g[k]=l
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2964 k.pause()
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2965 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2966 return nil,nil,"fd-too-large"
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
2967 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2968 t:settimeout(0)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2969 local v
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2970 local E
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2971 local _
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2972 local J
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2973 local j
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2974 local K=c.onincoming
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2975 local G=c.onstatus
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2976 local x=c.ondisconnect
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2977 local P=c.onpredrain
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2978 local W=c.ondrain
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2979 local ee=c.onreadtimeout;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2980 local U=c.ondetach
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2981 local g={}
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2982 local m=0
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2983 local X
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2984 local F
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2985 local f=0
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2986 local w=false
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2987 local T=false
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2988 local V,B=0,0
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2989 local O=L
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2990 local S=S
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2991 local e=g
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2992 e.extra=Q
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2993 if Q then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
2994 e.servername=Q.servername
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2995 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2996 e.dispatch=function()
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
2997 return K
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2998 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2999 e.disconnect=function()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3000 return x
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3001 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3002 e.onreadtimeout=ee;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3003 e.setlistener=function(a,t,o)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3004 if U then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3005 U(a)
177
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 K=t.onincoming
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3008 x=t.ondisconnect
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3009 G=t.onstatus
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3010 P=t.onpredrain
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3011 W=t.ondrain
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3012 e.onreadtimeout=t.onreadtimeout
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3013 U=t.ondetach
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3014 if t.onattach then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3015 t.onattach(a,o)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3016 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3017 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3018 e._setpending=function()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3019 j=true
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3020 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3021 e.getstats=function()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3022 return B,V
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3023 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3024 e.ssl=function()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3025 return J
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3026 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3027 e.sslctx=function()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3028 return p
177
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 e.ssl_info=function()
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3031 return t.info and t:info()
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3032 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3033 e.ssl_peercertificate=function()
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3034 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
3035 return t:getpeercertificate()
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3036 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3037 e.ssl_peerverification=function()
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3038 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
3039 return t:getpeerverification();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3040 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3041 e.ssl_peerfinished=function()
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3042 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
3043 return t:getpeerfinished();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3044 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3045 e.send=function(n,i,o,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3046 return v(t,i,o,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3047 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3048 e.receive=function(a,o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3049 return E(t,a,o)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3050 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3051 e.shutdown=function(a)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3052 return _(t,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3053 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3054 e.setoption=function(i,a,o)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3055 if t.setoption then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3056 return t:setoption(a,o);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3057 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3058 return false,"setoption not implemented";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3059 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3060 e.force_close=function(a,t)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3061 if m~=0 then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3062 n("server.lua: discarding unwritten data for ",u(N),":",u(I))
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3063 m=0;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3064 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3065 return a:close(t);
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3066 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3067 e.close=function(l,d)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3068 if not e then return true;end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3069 a=r(i,t,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3070 b[e]=nil
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3071 if m~=0 then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3072 e:sendbuffer()
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3073 if m~=0 then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3074 if e then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3075 e.write=nil
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3076 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3077 X=true
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3078 return false
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3079 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3080 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3081 if t then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3082 z=_ and _(t)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3083 t:close()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3084 o=r(h,t,o)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3085 s[t]=nil
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3086 t=nil
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3087 else
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3088 n"server.lua: socket already closed"
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3089 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3090 if e then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3091 y[e]=nil
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3092 R[e]=nil
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3093 local t=e;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3094 e=nil
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3095 if x then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3096 x(t,d or false);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3097 x=nil
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3098 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3099 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3100 if k then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3101 k.remove()
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3102 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3103 n"server.lua: closed client handler and removed socket from list"
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3104 return true
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3105 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3106 e.server=function()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3107 return k
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3108 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3109 e.ip=function()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3110 return N
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3111 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3112 e.serverport=function()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3113 return te
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3114 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3115 e.clientport=function()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3116 return I
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3117 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3118 e.port=e.clientport
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3119 local k=function(i,a)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3120 if not e then return false end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3121 f=f+#a
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3122 if f>O then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3123 R[e]="send buffer exceeded"
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3124 return false
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3125 elseif not T and t and not h[t]then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3126 o=d(h,t,o)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3127 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3128 m=m+1
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3129 g[m]=a
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3130 if e then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3131 y[e]=y[e]or l
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3132 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3133 return true
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3134 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3135 e.write=k
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3136 e.bufferqueue=function(t)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3137 return g
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3138 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3139 e.socket=function(a)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3140 return t
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3141 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3142 e.set_mode=function(a,t)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3143 D=t or D
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3144 return D
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3145 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3146 e.set_send=function(a,t)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3147 v=t or v
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3148 return v
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3149 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3150 e.bufferlen=function(o,t,a)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3151 O=a or O
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3152 S=t or S
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3153 return f,S,O
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3154 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3155 e.lock_read=function(t,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3156 q("server.lua, lock_read() is deprecated, use pause() and resume()")
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3157 if a==true then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3158 return t:pause()
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3159 elseif a==false then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3160 return t:resume()
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3161 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3162 return w
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3163 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3164 e.pause=function(o)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3165 local o=a
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3166 a=r(i,t,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3167 b[e]=nil
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3168 if a~=o then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3169 w=true
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3170 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3171 return w;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3172 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3173 e.resume=function(o)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3174 if w then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3175 w=false
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3176 a=d(i,t,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3177 b[e]=l
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3178 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3179 return w;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3180 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3181 e.lock=function(t,a)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3182 q("server.lua, lock() is deprecated")
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3183 e.lock_read(t,a)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3184 if a==true then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3185 e.pause_writes(t)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3186 elseif a==false then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3187 e.resume_writes(t)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3188 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3189 return w,T
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3190 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3191 e.pause_writes=function(a)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3192 local a=o
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3193 o=r(h,t,o)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3194 y[e]=nil
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3195 T=true
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3196 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3197 e.resume_writes=function(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3198 T=false
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3199 if f>0 and t then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3200 o=d(h,t,o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3201 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3202 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3203 local b=function()
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3204 local o,t,a=E(t,D)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3205 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
3206 local a=o or a or""
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3207 local o=#a
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3208 if o>S then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3209 e:close("receive buffer exceeded")
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3210 return false
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3211 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3212 local o=o*ie
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3213 B=B+o
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3214 C=C+o
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3215 b[e]=l
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3216 if j then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3217 j=nil
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3218 if c.onconnect then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3219 c.onconnect(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3220 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3221 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3222 return K(e,a,t)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3223 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3224 n("server.lua: client ",u(N),":",u(I)," read error: ",u(t))
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3225 z=e and e:force_close(t)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3226 return false
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3227 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3228 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3229 local w=function()
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3230 local w,a,i,s,d;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3231 if t then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3232 if j then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3233 j=nil
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3234 if c.onconnect then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3235 c.onconnect(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3236 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3237 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3238 if P then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3239 P(e);
177
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 s=ye(g,"",1,m)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3242 w,a,i=v(t,s,1,f)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3243 d=(w or i or 0)*ie
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3244 V=V+d
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3245 M=M+d
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3246 for e=m,1,-1 do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3247 g[e]=nil
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3248 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3249 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3250 w,a,d=false,"unexpected close",0;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3251 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3252 if w then
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3253 m=0
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3254 f=0
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3255 o=r(h,t,o)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3256 y[e]=nil
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3257 if W then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3258 W(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3259 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3260 z=F and e:starttls(nil)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3261 z=X and e:force_close()
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3262 return true
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3263 elseif i and(a=="timeout"or a=="wantwrite")then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3264 s=pe(s,i+1,f)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3265 g[1]=s
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3266 m=1
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3267 f=f-i
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3268 y[e]=l
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3269 return true
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3270 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3271 n("server.lua: client ",u(N),":",u(I)," write error: ",u(a))
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3272 z=e and e:force_close(a)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3273 return false
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3274 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3275 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3276 local l;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3277 function e.set_sslctx(y,t)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3278 p=t;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3279 local u,f
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3280 l=ve(function(s)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3281 local t
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3282 for l=1,A do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3283 o=(f and r(h,s,o))or o
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3284 a=(u and r(i,s,a))or a
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3285 u,f=nil,nil
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3286 l,t=s:dohandshake()
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3287 if not t then
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3288 n("server.lua: ssl handshake done")
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3289 e.readbuffer=b
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3290 e.sendbuffer=w
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3291 l=G and G(e,"ssl-handshake-complete")
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3292 if y.autostart_ssl and c.onconnect then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3293 c.onconnect(y);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3294 if m~=0 then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3295 o=d(h,s,o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3296 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3297 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3298 a=d(i,s,a)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3299 return true
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3300 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3301 if t=="wantwrite"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3302 o=d(h,s,o)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3303 f=true
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3304 elseif t=="wantread"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3305 a=d(i,s,a)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3306 u=true
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3307 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3308 break;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3309 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3310 t=nil;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3311 be()
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3312 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3313 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3314 t=(t or"handshake too long");
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3315 n("server.lua: ",t);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3316 z=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
3317 return false,t
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3318 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3319 )
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3320 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3321 if Y then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3322 e.starttls=function(f,c)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3323 if c then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3324 e:set_sslctx(c);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3325 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3326 if m>0 then
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3327 n"server.lua: we need to do tls, but delaying until send buffer empty"
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3328 F=true
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3329 return
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3330 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3331 n("server.lua: attempting to start tls on "..u(t))
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3332 local c,m=t
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3333 t,m=p:wrap(t)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3334 if not t then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3335 n("server.lua: error while starting tls on client: ",u(m or"unknown error"))
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3336 return nil,m
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3337 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3338 if t.sni then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3339 if f.servername then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3340 t:sni(f.servername);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3341 elseif next(p._sni_contexts)~=nil then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3342 t:sni(p._sni_contexts,true);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3343 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3344 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3345 t:settimeout(0)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3346 v=t.send
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3347 E=t.receive
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3348 _=H
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3349 s[t]=e
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3350 a=d(i,t,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3351 a=r(i,c,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3352 o=r(h,c,o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3353 s[c]=nil
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3354 e.starttls=nil
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3355 F=nil
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3356 J=true
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3357 e.readbuffer=l
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3358 e.sendbuffer=l
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3359 return l(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3360 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3361 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3362 e.readbuffer=b
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3363 e.sendbuffer=w
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3364 v=t.send
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3365 E=t.receive
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3366 _=(J and H)or t.shutdown
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3367 s[t]=e
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3368 a=d(i,t,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3369 if p and Z and Y then
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3370 n"server.lua: auto-starting ssl negotiation..."
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3371 e.autostart_ssl=true;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3372 local e,t=e:starttls(p);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3373 if e==false then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3374 return nil,nil,t
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3375 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3376 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3377 return e,t
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3378 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3379 H=function()
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3380 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3381 qe=function()
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3382 return false
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3383 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3384 d=function(t,a,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3385 if not t[a]then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3386 e=e+1
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3387 t[e]=a
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3388 t[a]=e
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3389 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3390 return e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3391 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3392 r=function(e,i,t)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3393 local o=e[i]
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3394 if o then
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3395 e[i]=nil
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3396 local a=e[t]
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3397 e[t]=nil
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3398 if a~=i then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3399 e[a]=o
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3400 e[o]=a
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3401 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3402 return t-1
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3403 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3404 return t
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3405 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3406 oe=function(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3407 o=r(h,e,o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3408 a=r(i,e,a)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3409 s[e]=nil
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3410 e:close()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3411 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3412 local function m(e,t,o)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3413 local a;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3414 local i=t.sendbuffer;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3415 function t.sendbuffer()
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3416 i(t);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3417 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
3418 e:lock_read(false);
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3419 a=nil;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3420 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3421 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3422 local i=e.readbuffer;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3423 function e.readbuffer()
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3424 i();
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3425 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
3426 a=true;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3427 e:lock_read(true);
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3428 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3429 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3430 e:set_mode("*a");
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3431 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3432 te=function(t,e,l,h)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3433 t=t or"*"
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3434 h=h or{}
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3435 local o
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3436 local r=h.tls_ctx;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3437 local c=h.tls_direct;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3438 local u=h.read_size;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3439 if f(l)~="table"then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3440 o="invalid listener table"
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3441 elseif f(t)~="string"then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3442 o="invalid address"
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3443 elseif f(e)~="number"or not(e>=0 and e<=65535)then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3444 o="invalid port"
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3445 elseif v[t..":"..e]then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3446 o="listeners on '["..t.."]:"..e.."' already exist"
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3447 elseif r and not Y then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3448 o="luasec not found"
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3449 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3450 if o then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3451 q("server.lua, [",t,"]:",e,": ",o)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3452 return nil,o
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3453 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3454 local o,h=me(t,e,E)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3455 if h then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3456 q("server.lua, [",t,"]:",e,": ",h)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3457 return nil,h
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3458 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3459 local h,l=de(l,o,t,e,u,r,c)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3460 if not h then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3461 o:close()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3462 return nil,l
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3463 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3464 o:settimeout(0)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3465 a=d(i,o,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3466 v[t..":"..e]=h
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3467 s[o]=h
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3468 n("server.lua: new "..(r and"ssl "or"").."server listener on '[",t,"]:",e,"'")
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3469 return h
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3470 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3471 we=function(i,o,a,t,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3472 return te(i,o,a,{
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3473 read_size=t;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3474 tls_ctx=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3475 tls_direct=e and true or false;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3476 });
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3477 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3478 re=function(t,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3479 return v[t..":"..e];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3480 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3481 le=function(e,t)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3482 local a=v[e..":"..t]
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3483 if not a then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3484 return nil,"no server found on '["..e.."]:"..u(t).."'"
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3485 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3486 a:close()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3487 v[e..":"..t]=nil
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3488 return true
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3489 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3490 ee=function()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3491 for e,t in j(s)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3492 t:close()
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3493 s[e]=nil
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3494 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3495 a=0
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3496 o=0
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3497 k=0
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3498 v={}
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3499 i={}
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3500 h={}
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3501 F={}
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3502 s={}
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3503 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3504 ue=function()
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3505 return{
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3506 select_timeout=U;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3507 tcp_backlog=E;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3508 max_send_buffer_size=L;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3509 max_receive_buffer_size=S;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3510 select_idle_check_interval=I;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3511 send_timeout=O;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3512 read_timeout=N;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3513 max_connections=_;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3514 max_ssl_handshake_roundtrips=A;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3515 highest_allowed_fd=x;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3516 accept_retry_interval=D;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3517 }
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3518 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3519 fe=function(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3520 if f(e)~="table"then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3521 return nil,"invalid settings table"
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3522 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3523 U=p(e.select_timeout)or U
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3524 L=p(e.max_send_buffer_size)or L
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3525 S=p(e.max_receive_buffer_size)or S
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3526 I=p(e.select_idle_check_interval)or I
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3527 E=p(e.tcp_backlog)or E
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3528 O=p(e.send_timeout)or O
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3529 N=p(e.read_timeout)or N
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3530 D=p(e.accept_retry_interval)or D
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3531 _=e.max_connections or _
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3532 A=e.max_ssl_handshake_roundtrips or A
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3533 x=e.highest_allowed_fd or x
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3534 return true
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3535 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3536 ae=function(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3537 if f(e)~="function"then
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3538 return nil,"invalid listener function"
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3539 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3540 k=k+1
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3541 F[k]=e
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3542 return true
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3543 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3544 local u do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3545 local i={};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3546 local t={};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3547 function u(e,o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3548 local a=P();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3549 e=e+a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3550 if e>=a then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3551 he(t,{e,o});
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3552 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3553 local e=o(a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3554 if e and f(e)=="number"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3555 return u(e,o);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3556 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3557 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3558 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3559 ae(function(a)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3560 if#t>0 then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3561 for a,e in j(t)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3562 he(i,e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3563 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3564 t={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3565 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3566 local e=se;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3567 for s,t in j(i)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3568 local n,o=t[1],t[2];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3569 if n<=a then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3570 i[s]=nil;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3571 local t=o(a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3572 if f(t)=="number"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3573 u(t,o);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3574 e=V(e,t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3575 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3576 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3577 e=V(e,n-a);
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3578 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3579 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3580 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3581 end);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3582 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3583 ce=function()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3584 return C,M,a,o,k
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3585 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3586 local t;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3587 local function c(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3588 t=e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3589 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3590 Z=function(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3591 if t then return"quitting";end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3592 if e then t="once";end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3593 l=P()
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3594 repeat
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3595 local e=se;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3596 for t=1,k do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3597 local t=F[t](l)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3598 if t then e=V(e,t);end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3599 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3600 local e,a,o=xe(i,h,V(U,e))
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3601 for t,e in ne(e)do
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3602 local t=s[e]
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3603 if t then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3604 t:readbuffer()
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3605 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3606 oe(e)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3607 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
3608 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3609 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3610 for e,t in ne(a)do
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3611 local e=s[t]
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3612 if e then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3613 e:sendbuffer()
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3614 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3615 oe(t)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3616 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
3617 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3618 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3619 for e,t in j(R)do
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3620 e.disconnect()(e,t)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3621 e:force_close()
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3622 R[e]=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3623 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3624 l=P()
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3625 if l-X>I then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3626 X=l
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3627 for e,t in j(y)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3628 if l-t>O then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3629 e.disconnect()(e,"send timeout")
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3630 e:force_close()
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3631 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3632 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3633 for e,t in j(b)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3634 if l-t>N then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3635 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
3636 e.disconnect()(e,"read timeout")
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3637 e:close()
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3638 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3639 b[e]=l
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3640 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3641 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3642 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3643 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3644 for e,t in j(g)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3645 if l-t>D then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3646 g[e]=nil;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3647 e.resume();
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3648 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3649 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3650 until t;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3651 if t=="once"then t=nil;return;end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3652 ee();
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3653 return"quitting"
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3654 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3655 local function g()
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3656 return Z(true);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3657 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3658 local function k()
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3659 return"select";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3660 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3661 local n=function(c,u,l,t,e,n,r)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3662 local e,t,r=B(nil,t,c,u,l,"clientport",e,n,n,r)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3663 if not e then return nil,r end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3664 s[t]=e
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3665 if not n then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3666 e._setpending()
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3667 a=d(i,t,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3668 o=d(h,t,o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3669 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3670 return e,t
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3671 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3672 local v=function(o,t,i,h,s,a,d)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3673 local e
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3674 if f(i)~="table"then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3675 e="invalid listener table"
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3676 elseif f(o)~="string"then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3677 e="invalid address"
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3678 elseif f(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
3679 e="invalid port"
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3680 elseif s and not Y then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3681 e="luasec not found"
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3682 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3683 if not a then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3684 local e=ke(o);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3685 if not e then return nil,"invalid-ip";end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3686 if#e==16 then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3687 a="tcp6";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3688 elseif#e==4 then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3689 a="tcp4";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3690 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3691 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3692 local a=T[a];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3693 if f(a)~="function"then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3694 e="invalid socket type"
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3695 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3696 if e then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3697 q("server.lua, addclient: ",e)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3698 return nil,e
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3699 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3700 local e,a=a()
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3701 if a then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3702 return nil,a
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3703 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3704 e:settimeout(0)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3705 local r,a=e:setpeername(o,t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3706 if r or a=="timeout"or a=="Operation already in progress"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3707 return n(e,o,t,i,h,s,d)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3708 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3709 return nil,a
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3710 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3711 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3712 local p=function(e)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3713 local e=e.conn;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3714 o=r(h,e,o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3715 a=r(i,e,a)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3716 s[e]=nil
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3717 end;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3718 local a=function(n,t,l)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3719 local e=n.conn
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3720 s[e]=n
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3721 if t~=nil then
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3722 if t then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3723 a=d(i,e,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3724 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3725 o=r(h,e,o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3726 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3727 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3728 if l~=nil then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3729 if l then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3730 o=d(h,e,o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3731 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3732 a=r(i,e,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3733 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3734 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3735 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3736 local a=function(e,i,o)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3737 local t=e
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3738 if f(e)=="number"then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3739 t={getfd=function()return e;end}
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3740 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3741 local e={
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3742 conn=t;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3743 readbuffer=i or H;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3744 sendbuffer=o or H;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3745 close=p;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3746 setflags=a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3747 };
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3748 a(e,i,o)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3749 return e
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3750 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3751 w"setmetatable"(s,{__mode="k"})
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3752 w"setmetatable"(b,{__mode="k"})
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3753 w"setmetatable"(y,{__mode="k"})
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3754 X=P()
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3755 local function o(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3756 local t=W;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3757 if e then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3758 W=e;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3759 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3760 return t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3761 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3762 return{
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3763 _addtimer=ae,
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3764 add_task=u;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3765 addclient=v,
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3766 wrapclient=n,
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3767 watchfd=a,
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3768 loop=Z,
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3769 link=m,
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3770 step=g,
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3771 stats=ce,
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3772 closeall=ee,
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3773 addserver=we,
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3774 listen=te,
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3775 getserver=re,
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3776 setlogger=o,
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3777 getsettings=ue,
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3778 setquitting=c,
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3779 removeserver=le,
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3780 get_backend=k,
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3781 changesettings=fe,
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3782 tls_builder=function(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3783 return ge._new(je.new_context,e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3784 end,
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3785 }
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3786 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3787 package.preload['util.xmppstream']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3788 local _ENV=_ENV;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3789 local function e(t,...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3790 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
3791 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3792 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3793 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3794 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3795 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3796 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3797 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3798 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3799 local e=require"lxp";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3800 local x=require"util.stanza";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3801 local k=x.stanza_mt;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3802 local w=error;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3803 local t=tostring;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3804 local d=table.insert;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3805 local g=table.concat;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3806 local z=table.remove;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3807 local b=setmetatable;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3808 local T=pcall(e.new,{StartDoctypeDecl=false});
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3809 local A=pcall(e.new,{XmlDecl=false});
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3810 local a=not not e.new({}).getcurrentbytecount;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3811 local _=1024*1024*1;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3812 local _ENV=nil;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3813 local j=e.new;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3814 local E={
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3815 ["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
3816 ["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
3817 ["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
3818 ["http://www.w3.org/XML/1998/namespace\1id"]="xml:id";
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3819 };
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3820 local h="http://etherx.jabber.org/streams";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3821 local r="\1";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3822 local q="^([^"..r.."]*)"..r.."?(.*)$";
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3823 local function o()end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3824 local function v(n,e,s)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3825 local i={};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3826 local p=e.streamopened;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3827 local y=e.streamclosed;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3828 local u=e.error or
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3829 function(o,a,e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3830 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
3831 end;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3832 local v=e.handlestanza;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3833 s=s or o;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3834 local t=e.stream_ns or h;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3835 local c=e.stream_tag or"stream";
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3836 if t~=""then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3837 c=t..r..c;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3838 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3839 local x=t..r..(e.error_tag or"error");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3840 local j=e.default_ns;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3841 local m="en";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3842 local l={};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3843 local h,e={};
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3844 local t=0;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3845 local r=0;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3846 function i:StartElement(f,o)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3847 if e and#h>0 then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3848 d(e,g(h));
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3849 h={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3850 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3851 local h,i=f:match(q);
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3852 if i==""then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3853 h,i="",h;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3854 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3855 if h~=j or r>0 then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3856 o.xmlns=h;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3857 r=r+1;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3858 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3859 for t=1,#o do
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3860 local e=o[t];
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3861 o[t]=nil;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3862 local t=E[e];
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3863 if t then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3864 o[t]=o[e];
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3865 o[e]=nil;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3866 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3867 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3868 if not e then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3869 if a then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3870 t=self:getcurrentbytecount();
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3871 end
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3872 if n.notopen then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3873 if f==c then
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3874 r=0;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3875 m=o["xml:lang"]or m;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3876 if p then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3877 if a then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3878 s(t);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3879 t=0;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3880 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3881 p(n,o);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3882 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3883 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3884 u(n,"no-stream",f);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3885 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3886 return;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3887 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3888 if h=="jabber:client"and i~="iq"and i~="presence"and i~="message"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3889 u(n,"invalid-top-level-element");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3890 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3891 e=b({name=i,attr=o,tags={}},k);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3892 else
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3893 if a then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3894 t=t+self:getcurrentbytecount();
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3895 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3896 d(l,e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3897 local t=e;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3898 e=b({name=i,attr=o,tags={}},k);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3899 d(t,e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3900 d(t.tags,e);
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3901 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3902 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3903 function i:StartCdataSection()
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3904 if a then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3905 if e then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3906 t=t+self:getcurrentbytecount();
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3907 else
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3908 s(self:getcurrentbytecount());
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3909 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3910 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3911 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3912 function i:EndCdataSection()
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3913 if a then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3914 if e then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3915 t=t+self:getcurrentbytecount();
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3916 else
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3917 s(self:getcurrentbytecount());
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3918 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3919 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3920 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3921 function i:CharacterData(o)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3922 if e then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3923 if a then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3924 t=t+self:getcurrentbytecount();
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3925 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3926 d(h,o);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3927 elseif a then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3928 s(self:getcurrentbytecount());
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3929 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3930 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3931 function i:EndElement(o)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3932 if a then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3933 t=t+self:getcurrentbytecount()
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3934 end
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3935 if r>0 then
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3936 r=r-1;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3937 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3938 if e then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3939 if#h>0 then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3940 d(e,g(h));
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3941 h={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3942 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3943 if#l==0 then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3944 if a then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3945 s(t);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3946 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3947 t=0;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3948 if e.attr["xml:lang"]==nil then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3949 e.attr["xml:lang"]=m;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3950 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3951 if o~=x then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3952 v(n,e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3953 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3954 u(n,"stream-error",e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3955 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3956 e=nil;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3957 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3958 e=z(l);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3959 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3960 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3961 if a then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3962 s(t);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3963 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3964 if y then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3965 y(n);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3966 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3967 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3968 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3969 local function o(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3970 u(n,"parse-error","restricted-xml","Restricted XML, see RFC 6120 section 11.1.");
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
3971 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
3972 w("Failed to abort parsing");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3973 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3974 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3975 if A then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3976 function i:XmlDecl(e,t,i)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3977 if a then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3978 s(self:getcurrentbytecount());
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3979 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3980 if(t and t:lower()~="utf-8")
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3981 or(i=="no")
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3982 or(e and e~="1.0")then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3983 return o(self);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3984 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3985 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3986 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3987 if T then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3988 i.StartDoctypeDecl=o;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3989 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3990 i.Comment=o;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3991 i.ProcessingInstruction=o;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
3992 local function a()
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
3993 e,h,t=nil,{},0;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3994 l={};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3995 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3996 local function t(t,e)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3997 n=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
3998 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
3999 return i,{reset=a,set_session=t};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4000 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4001 local function u(l,d,o)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4002 local t=0;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4003 local e;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
4004 if a then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4005 function e(e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4006 t=t-e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4007 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4008 o=o or _;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
4009 elseif o then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4010 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
4011 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4012 local n,s=v(l,d,e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4013 local i=j(n,r,false);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4014 local h=i.parse;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4015 function l.open_stream(e,t,a)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4016 local i=e.sends2s or e.send;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4017 local o={
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4018 ["xmlns:stream"]="http://etherx.jabber.org/streams",
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4019 ["xml:lang"]="en",
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4020 xmlns=d.default_ns,
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4021 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
4022 id=e.streamid or"",
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4023 from=t or e.host,to=a,
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4024 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4025 if e.stream_attrs then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4026 e:stream_attrs(t,a,o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4027 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4028 i("<?xml version='1.0'?>"..x.stanza("stream:stream",o):top_tag());
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4029 return true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4030 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4031 return{
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4032 reset=function()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4033 i=j(n,r,false);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4034 h=i.parse;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4035 t=0;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4036 s.reset();
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4037 end,
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4038 feed=function(e,n)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
4039 if a then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4040 t=t+#n;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4041 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4042 local e=i;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4043 local n,s=h(e,n);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4044 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
4045 return nil,"stanza-too-large";
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
4046 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4047 if i~=e then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4048 e:parse();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4049 e:close();
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 n,s;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4052 end,
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4053 set_session=s.set_session;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4054 set_stanza_size_limit=function(t,e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4055 o=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4056 end;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4057 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4058 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4059 return{
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4060 ns_separator=r;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4061 ns_pattern=q;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4062 new_sax_handlers=v;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4063 new=u;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4064 };
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4065 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4066 package.preload['util.jid']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4067 local _ENV=_ENV;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4068 local function e(t,...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4069 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
4070 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4071 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4072 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4073 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4074 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4075 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4076 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4077 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4078 local o=select;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4079 local a,n=string.match,string.sub;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4080 local d=require"util.encodings".stringprep.nodeprep;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4081 local l=require"util.encodings".stringprep.nameprep;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4082 local u=require"util.encodings".stringprep.resourceprep;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4083 local i={
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4084 [" "]="\\20";['"']="\\22";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4085 ["&"]="\\26";["'"]="\\27";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4086 ["/"]="\\2f";[":"]="\\3a";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4087 ["<"]="\\3c";[">"]="\\3e";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4088 ["@"]="\\40";["\\"]="\\5c";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4089 };
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4090 local s={};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4091 local h={};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4092 for t,e in pairs(i)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4093 s[e]=t;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4094 h[e]=e:gsub("\\",i)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4095 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4096 local _ENV=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4097 local function t(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4098 if e==nil then return;end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4099 local i,t=a(e,"^([^@/]+)@()");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4100 local t,o=a(e,"^([^@/]+)()",t);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4101 local a=t and a(e,"^/(.+)$",o);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4102 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
4103 return i,t,a;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4104 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4105 local function m(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4106 local t,e=t(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4107 if t~=nil and e~=nil then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4108 return t.."@"..e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4109 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4110 return e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4111 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4112 local function r(e,o)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4113 local t,e,a=t(e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4114 if e~=nil and e~="."then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4115 if n(e,-1,-1)=="."then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4116 e=n(e,1,-2);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4117 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4118 e=l(e,o);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4119 if e==nil then return;end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4120 if t~=nil then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4121 t=d(t,o);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4122 if t==nil then return;end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4123 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4124 if a~=nil then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4125 a=u(a,o);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4126 if a==nil then return;end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4127 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4128 return t,e,a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4129 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4130 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4131 local function n(t,e,a)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4132 if e==nil then return end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4133 if t~=nil and a~=nil then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4134 return t.."@"..e.."/"..a;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4135 elseif t~=nil then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4136 return t.."@"..e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4137 elseif a~=nil then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4138 return e.."/"..a;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4139 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4140 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4141 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4142 local function l(t,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4143 local a,t,e=r(t,e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4144 return n(a,t,e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4145 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4146 local function d(e,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4147 local o,n,i=t(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4148 local e,t,a=t(a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4149 if(e==nil or e==o)and
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4150 (t==nil or t==n)and
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4151 (a==nil or a==i)then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4152 return true
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4153 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4154 return false
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4155 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4156 local function c(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4157 return(o(1,t(e)));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4158 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4159 local function a(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4160 return(o(2,t(e)));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4161 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4162 local function u(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4163 return(o(3,t(e)));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4164 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4165 local function o(e)return e and(e:gsub("\\%x%x",h):gsub("[\"&'/:<>@ ]",i));end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4166 local function i(e)return e and(e:gsub("\\%x%x",s));end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4167 return{
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4168 split=t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4169 bare=m;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4170 prepped_split=r;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4171 join=n;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4172 prep=l;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4173 compare=d;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4174 node=c;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4175 host=a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4176 resource=u;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4177 escape=o;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4178 unescape=i;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4179 };
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4180 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4181 package.preload['util.events']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4182 local _ENV=_ENV;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4183 local function e(t,...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4184 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
4185 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4186 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4187 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4188 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4189 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4190 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4191 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4192 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4193 local a=pairs;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4194 local l=table.insert;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4195 local m=table.remove;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4196 local r=table.sort;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4197 local d=setmetatable;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4198 local h=next;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4199 local _ENV=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4200 local function f()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4201 local i={};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4202 local t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4203 local n={};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4204 local o={};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4205 local s=nil;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4206 local function u(n,i)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4207 local e=o[i];
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4208 if not e or h(e)==nil then return;end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4209 local t={};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4210 for e in a(e)do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4211 l(t,e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4212 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4213 r(t,function(t,a)return e[t]>e[a];end);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4214 n[i]=t;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4215 return t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4216 end;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4217 d(i,{__index=u});
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4218 local function d(t,n,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4219 local e=o[t];
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4220 if e then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4221 e[n]=a or 0;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4222 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4223 e={[n]=a or 0};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4224 o[t]=e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4225 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4226 i[t]=nil;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4227 end;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4228 local function r(t,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4229 local e=o[t];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4230 if e then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4231 e[a]=nil;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4232 i[t]=nil;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4233 if h(e)==nil then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4234 o[t]=nil;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4235 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4236 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4237 end;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4238 local function f(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4239 return i[e];
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4240 end;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4241 local function w(e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4242 for t,e in a(e)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4243 d(t,e);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
4244 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
4245 end;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4246 local function u(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4247 for t,e in a(e)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4248 r(t,e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4249 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4250 end;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4251 local function h(t,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4252 local e=i[t];
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4253 if e and not s then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4254 for t=1,#e do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4255 local e=e[t](a);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4256 if e~=nil then return e;end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4257 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4258 elseif e and s then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4259 for o=1,#e do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4260 local e=s(e[o],t,a);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4261 if e~=nil then return e;end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4262 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4263 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4264 end;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4265 local function c(s,r)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4266 local a=n[s]or t;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4267 if a then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4268 local e=#a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4269 local function n(o,i)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4270 e=e-1;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4271 if e==0 then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4272 if t==nil or a==t then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4273 return h(o,i);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4274 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4275 a,e=t,#t;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4276 return a[e](n,o,i);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4277 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4278 return a[e](n,o,i);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4279 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4280 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4281 return a[e](n,s,r);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4282 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4283 return h(s,r);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4284 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4285 local function l(a,o)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4286 local e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4287 if a==false then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4288 e=t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4289 if not e then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4290 e={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4291 t=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4292 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4293 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4294 e=n[a];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4295 if not e then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4296 e={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4297 n[a]=e;
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 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4300 e[#e+1]=o;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4301 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4302 local function h(a,o)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4303 local e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4304 if a==false then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4305 e=t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4306 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4307 e=n[a];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4308 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4309 if not e then return;end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4310 for t=#e,1,-1 do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4311 if e[t]==o then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4312 m(e,t);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4313 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4314 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4315 if#e==0 then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4316 if a==false then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4317 t=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4318 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4319 n[a]=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4320 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4321 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4322 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4323 local function e(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4324 local t=s;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4325 s=e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4326 return t;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4327 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4328 return{
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4329 add_handler=d;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4330 remove_handler=r;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4331 add_handlers=w;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4332 remove_handlers=u;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4333 get_handlers=f;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4334 wrappers={
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4335 add_handler=l;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4336 remove_handler=h;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4337 };
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4338 add_wrapper=l;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4339 remove_wrapper=h;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4340 set_debug_hook=e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4341 fire_event=c;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4342 _handlers=i;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4343 _event_map=o;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4344 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4345 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4346 return{
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4347 new=f;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4348 };
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4349 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4350 package.preload['util.dataforms']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4351 local _ENV=_ENV;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4352 local function e(t,...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4353 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
4354 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4355 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4356 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4357 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4358 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4359 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4360 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4361 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4362 local e=setmetatable;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4363 local n=ipairs;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4364 local s,p=type,next;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4365 local h=tonumber;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4366 local l=tostring;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4367 local d=table.concat;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4368 local f=require"util.stanza";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4369 local u=require"util.jid".prep;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4370 local _ENV=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4371 local y='jabber:x:data';
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4372 local m='http://jabber.org/protocol/xdata-validate';
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4373 local r={};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4374 local a={__index=r};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4375 local function c(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4376 return e(t,a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4377 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4378 local function w(e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4379 local o={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4380 title=e:get_child_text("title");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4381 instructions=e:get_child_text("instructions");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4382 };
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4383 for t in e:childtags("field")do
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4384 local e={
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4385 name=t.attr.var;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4386 label=t.attr.label;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4387 type=t.attr.type;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4388 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
4389 value=t:get_child_text("value");
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4390 };
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4391 o[#o+1]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4392 if e.type then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4393 local a={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4394 if e.type:match"list%-"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4395 for e in t:childtags("option")do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4396 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
4397 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4398 for e in t:childtags("value")do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4399 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
4400 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4401 elseif e.type:match"%-multi"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4402 for e in t:childtags("value")do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4403 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
4404 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4405 if e.type=="text-multi"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4406 e.value=d(a,"\n");
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4407 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4408 e.value=a;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4409 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4410 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4411 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4412 local t=t:get_child("validate",m);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4413 if t then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4414 e.datatype=datatype.attr.datatype;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4415 local t=t:get_child("range");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4416 if t then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4417 e.range_min=h(t.attr.min);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4418 e.range_max=h(t.attr.max);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4419 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4420 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4421 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4422 return c(o);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4423 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4424 function r.form(t,h,i)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4425 if not i then i="form"end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4426 local e=f.stanza("x",{xmlns=y,type=i});
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4427 if i=="cancel"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4428 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4429 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4430 if i~="submit"then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4431 if t.title then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4432 e:tag("title"):text(t.title):up();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4433 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4434 if t.instructions then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4435 e:tag("instructions"):text(t.instructions):up();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4436 end
177
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 for t,a in n(t)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4439 local o=a.type or"text-single";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4440 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
4441 if i~="submit"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4442 if a.desc then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4443 e:text_tag("desc",a.desc);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4444 end
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 if i=="form"and a.datatype then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4447 e:tag("validate",{xmlns=m,datatype=a.datatype});
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4448 if a.range_min or a.range_max then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4449 e:tag("range",{
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4450 min=a.range_min and l(a.range_min),
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4451 max=a.range_max and l(a.range_max),
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4452 }):up();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4453 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4454 e:up();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4455 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4456 local t=a.value;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4457 local r=a.options;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4458 if h and h[a.name]~=nil then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4459 t=h[a.name];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4460 if i=="form"and s(t)=="table"
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4461 and(o=="list-single"or o=="list-multi")then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4462 r,t=t,nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4463 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4464 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4465 if i=="form"and r then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4466 local a={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4467 for o,t in n(r)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4468 if s(t)=="table"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4469 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
4470 if t.default then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4471 a[#a+1]=t.value;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4472 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4473 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4474 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
4475 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4476 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4477 if not t then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4478 if o=="list-single"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4479 t=a[1];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4480 elseif o=="list-multi"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4481 t=a;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4482 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4483 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4484 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4485 if t~=nil then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4486 if s(t)=="number"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4487 t=("%g"):format(t);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4488 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4489 if o=="hidden"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4490 if s(t)=="table"then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4491 e:tag("value")
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
4492 :add_child(t)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4493 :up();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4494 else
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4495 e:tag("value"):text(t):up();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4496 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4497 elseif o=="boolean"then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
4498 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
4499 elseif o=="fixed"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4500 e:tag("value"):text(t):up();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4501 elseif o=="jid-multi"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4502 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
4503 e:tag("value"):text(t):up();
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
4504 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4505 elseif o=="jid-single"then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4506 e:tag("value"):text(t):up();
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4507 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
4508 e:tag("value"):text(t):up();
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4509 elseif o=="text-multi"then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
4510 for t in t:gmatch("([^\r\n]+)\r?\n*")do
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4511 e:tag("value"):text(t):up();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4512 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4513 elseif o=="list-single"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4514 e:tag("value"):text(t):up();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4515 elseif o=="list-multi"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4516 for a,t in n(t)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4517 e:tag("value"):text(t):up();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4518 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4519 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4520 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4521 local t=a.media;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4522 if t then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4523 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
4524 for a,t in n(t)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4525 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
4526 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4527 e:up();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4528 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4529 if i=="form"and a.required then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4530 e:tag("required"):up();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4531 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4532 e:up();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4533 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4534 return e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4535 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4536 local t={};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4537 local l={};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4538 function r.data(e,h,i)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
4539 local o={};
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4540 local a={};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4541 local s={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4542 for n,e in n(e)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4543 local n;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4544 for t in h:childtags("field")do
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4545 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
4546 n=t;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4547 break;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4548 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4549 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4550 if not n then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4551 if i and i[e.name]~=nil then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4552 o[e.name]=i[e.name];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4553 elseif e.required then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4554 a[e.name]="Required value missing";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4555 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4556 elseif e.name then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4557 s[e.name]=true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4558 local t=t[e.type];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4559 if t then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4560 local t,i=t(n,e.required);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4561 local n=e.datatype and l[e.datatype];
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4562 if t~=nil and n then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4563 local o,a=n(t,e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4564 if o then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4565 t=a;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4566 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4567 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
4568 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4569 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4570 o[e.name],a[e.name]=t,i;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4571 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4572 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4573 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4574 if p(a)then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4575 return o,a,s;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4576 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4577 return o,nil,s;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4578 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4579 local function e(e,a)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4580 local e=e:get_child_text("value");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4581 if a and(e==nil or e=="")then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4582 return nil,"Required value missing";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4583 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4584 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4585 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4586 t["text-single"]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4587 t["text-private"]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4588 t["jid-single"]=
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4589 function(o,a)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4590 local e,a=e(o,a);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4591 if not e then return e,a;end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4592 local a=u(e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4593 if not a then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4594 return nil,"Invalid JID: "..e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4595 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4596 return a;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4597 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4598 t["jid-multi"]=
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4599 function(o,i)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4600 local a={};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4601 local e={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4602 for t in o:childtags("value")do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4603 local t=t:get_text();
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4604 local o=u(t);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4605 a[#a+1]=o;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4606 if t and not o then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4607 e[#e+1]=("Invalid JID: "..t);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4608 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4609 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4610 if#a>0 then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4611 return a,(#e>0 and d(e,"\n")or nil);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4612 elseif i then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4613 return nil,"Required value missing";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4614 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4615 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4616 t["list-multi"]=
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
4617 function(o,a)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4618 local e={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4619 for t in o:childtags("value")do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4620 e[#e+1]=t:get_text();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4621 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4622 if#e>0 then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4623 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4624 elseif a then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4625 return nil,"Required value missing";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4626 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4627 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4628 t["text-multi"]=
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4629 function(a,e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4630 local e,a=t["list-multi"](a,e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4631 if e then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4632 e=d(e,"\n");
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4633 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4634 return e,a;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4635 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4636 t["list-single"]=e;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4637 local o={
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4638 ["1"]=true,["true"]=true,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4639 ["0"]=false,["false"]=false,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4640 };
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4641 t["boolean"]=
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4642 function(i,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4643 local e,a=e(i,a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4644 if not e then return e,a;end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4645 local a=o[e];
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4646 if a==nil then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4647 return nil,"Invalid boolean representation:"..e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4648 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4649 return a;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4650 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4651 t["hidden"]=
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4652 function(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4653 return e:get_child_text("value");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4654 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4655 l["xs:integer"]=
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4656 function(e,t)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4657 local e=h(e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4658 if not e then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4659 return false,"not a number";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4660 elseif e%1~=0 then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4661 return false,"not an integer";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4662 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4663 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
4664 return false,"out of bounds";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4665 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
4666 return false,"out of bounds";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4667 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4668 return true,e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4669 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4670 local function t(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4671 if not f.is_stanza(e)then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4672 return nil,"not a stanza object";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4673 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
4674 return nil,"not a dataform element";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4675 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4676 for e in e:childtags("field")do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4677 if e.attr.var=="FORM_TYPE"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4678 return e:get_child_text("value");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4679 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4680 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4681 return"";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4682 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4683 return{
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4684 new=c;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4685 from_stanza=w;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4686 get_type=t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4687 };
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4688 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4689 package.preload['util.caps']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4690 local _ENV=_ENV;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4691 local function e(t,...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4692 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
4693 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4694 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4695 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4696 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4697 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4698 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4699 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4700 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4701 local d=require"util.encodings".base64.encode;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4702 local u=require"util.hashes".sha1;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4703 local n,h,s=table.insert,table.sort,table.concat;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4704 local r=ipairs;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4705 local _ENV=nil;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4706 local function l(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4707 local o,a,i={},{},{};
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4708 for t,e in r(e)do
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4709 if e.name=="identity"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4710 n(o,(e.attr.category or"").."\0"..(e.attr.type or"").."\0"..(e.attr["xml:lang"]or"").."\0"..(e.attr.name or""));
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4711 elseif e.name=="feature"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4712 n(a,e.attr.var or"");
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4713 elseif e.name=="x"and e.attr.xmlns=="jabber:x:data"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4714 local t={};
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4715 local o;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4716 for a,e in r(e.tags)do
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4717 if e.name=="field"and e.attr.var then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4718 local a={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4719 for t,e in r(e.tags)do
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4720 e=#e.tags==0 and e:get_text();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4721 if e then n(a,e);end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4722 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4723 h(a);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4724 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
4725 o=a[1];
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4726 elseif#a>0 then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4727 n(t,e.attr.var.."\0"..s(a,"<"));
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4728 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4729 n(t,e.attr.var);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4730 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4731 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4732 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4733 h(t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4734 t=s(t,"<");
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4735 if o then t=o.."\0"..t;end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4736 n(i,t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4737 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4738 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4739 h(o);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4740 h(a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4741 h(i);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4742 if#o>0 then o=s(o,"<"):gsub("%z","/").."<";else o="";end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4743 if#a>0 then a=s(a,"<").."<";else a="";end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4744 if#i>0 then i=s(i,"<"):gsub("%z","<").."<";else i="";end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4745 local e=o..a..i;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4746 local t=d(u(e));
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4747 return t,e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4748 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4749 return{
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4750 calculate_hash=l;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4751 };
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4752 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4753 package.preload['util.vcard']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4754 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4755 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4756 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
4757 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4758 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4759 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4760 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4761 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4762 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4763 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4764 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4765 local i=require"util.stanza";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4766 local a,u=table.insert,table.concat;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4767 local n=type;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4768 local e,s,c=next,pairs,ipairs;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4769 local r,l,d,h;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4770 local f="\n";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4771 local o;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4772 local function e()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4773 error"Not implemented"
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4774 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4775 local function e()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4776 error"Not implemented"
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4777 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4778 local function y(e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4779 return e:gsub("[,:;\\]","\\%1"):gsub("\n","\\n");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4780 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4781 local function p(e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4782 return e:gsub("\\?[\\nt:;,]",{
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4783 ["\\\\"]="\\",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4784 ["\\n"]="\n",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4785 ["\\r"]="\r",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4786 ["\\t"]="\t",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4787 ["\\:"]=":",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4788 ["\\;"]=";",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4789 ["\\,"]=",",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4790 [":"]="\29",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4791 [";"]="\30",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4792 [","]="\31",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4793 });
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4794 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4795 local function w(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4796 local a=i.stanza(e.name,{xmlns="vcard-temp"});
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4797 local t=o[e.name];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4798 if t=="text"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4799 a:text(e[1]);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4800 elseif n(t)=="table"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4801 if t.types and e.TYPE then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4802 if n(e.TYPE)=="table"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4803 for o,t in s(t.types)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4804 for o,e in s(e.TYPE)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4805 if e:upper()==t then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4806 a:tag(t):up();
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4807 break;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4808 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4809 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4810 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4811 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4812 a:tag(e.TYPE:upper()):up();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4813 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4814 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4815 if t.props then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4816 for o,t in s(t.props)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4817 if e[t]then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4818 a:tag(t):up();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4819 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4820 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4821 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4822 if t.value then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4823 a:tag(t.value):text(e[1]):up();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4824 elseif t.values then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4825 local o=t.values;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4826 local i=o.behaviour=="repeat-last"and o[#o];
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4827 for o=1,#e do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4828 a:tag(t.values[o]or i):text(e[o]):up();
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4829 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4830 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4831 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4832 return a;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4833 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4834 local function m(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4835 local e=i.stanza("vCard",{xmlns="vcard-temp"});
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4836 for a=1,#t do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4837 e:add_child(w(t[a]));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4838 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4839 return e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4840 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4841 function h(e)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4842 if not e[1]or e[1].name then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4843 return m(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4844 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4845 local t=i.stanza("xCard",{xmlns="vcard-temp"});
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4846 for a=1,#e do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4847 t:add_child(m(e[a]));
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4848 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4849 return t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4850 end
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4851 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4852 function r(t)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4853 t=t
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4854 :gsub("\r\n","\n")
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4855 :gsub("\n ","")
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4856 :gsub("\n\n+","\n");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4857 local s={};
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4858 local e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4859 for t in t:gmatch("[^\n]+")do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4860 local t=p(t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4861 local n,t,i=t:match("^([-%a]+)(\30?[^\29]*)\29(.*)$");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4862 i=i:gsub("\29",":");
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4863 if#t>0 then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4864 local o={};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4865 for a,i,n in t:gmatch("\30([^=]+)(=?)([^\30]*)")do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4866 a=a:upper();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4867 local e={};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4868 for t in n:gmatch("[^\31]+")do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4869 e[#e+1]=t
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4870 e[t]=true;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4871 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4872 if i=="="then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4873 o[a]=e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4874 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4875 o[a]=true;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4876 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4877 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4878 t=o;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4879 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4880 if n=="BEGIN"and i=="VCARD"then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4881 e={};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4882 s[#s+1]=e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4883 elseif n=="END"and i=="VCARD"then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4884 e=nil;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4885 elseif e and o[n]then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4886 local o=o[n];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4887 local n={name=n};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4888 e[#e+1]=n;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4889 local s=e;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4890 e=n;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4891 if o.types then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4892 for o,a in c(o.types)do
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4893 local a=a:lower();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4894 if(t.TYPE and t.TYPE[a]==true)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4895 or t[a]==true then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4896 e.TYPE=a;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4897 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4898 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4899 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4900 if o.props then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4901 for o,a in c(o.props)do
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4902 if t[a]then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4903 if t[a]==true then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4904 e[a]=true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4905 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4906 for o,t in c(t[a])do
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4907 e[a]=t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4908 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4909 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4910 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4911 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4912 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4913 if o=="text"or o.value then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4914 a(e,i);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4915 elseif o.values then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4916 local t="\30"..i;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4917 for t in t:gmatch("\30([^\30]*)")do
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4918 a(e,t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4919 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4920 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4921 e=s;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4922 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4923 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4924 return s;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4925 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4926 local function i(t)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4927 local e={};
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4928 for a=1,#t do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4929 e[a]=y(t[a]);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4930 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4931 e=u(e,";");
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4932 local a="";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4933 for e,t in s(t)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4934 if n(e)=="string"and e~="name"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4935 a=a..(";%s=%s"):format(e,n(t)=="table"and u(t,",")or t);
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4936 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4937 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4938 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
4939 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4940 local function t(t)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4941 local e={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4942 a(e,"BEGIN:VCARD")
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
4943 for o=1,#t do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4944 a(e,i(t[o]));
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4945 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4946 a(e,"END:VCARD")
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4947 return u(e,f);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4948 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
4949 function l(e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4950 if e[1]and e[1].name then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4951 return t(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4952 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4953 local a={};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4954 for o=1,#e do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4955 a[o]=t(e[o]);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4956 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4957 return u(a,f);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4958 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4959 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4960 local function u(i)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4961 local t=i.name;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4962 local e=o[t];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4963 local t={name=t};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4964 if e=="text"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4965 t[1]=i:get_text();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4966 elseif n(e)=="table"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4967 if e.value then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4968 t[1]=i:get_child_text(e.value)or"";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4969 elseif e.values then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4970 local e=e.values;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4971 if e.behaviour=="repeat-last"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4972 for e=1,#i.tags do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4973 a(t,i.tags[e]:get_text()or"");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4974 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4975 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4976 for o=1,#e do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4977 a(t,i:get_child_text(e[o])or"");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4978 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4979 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4980 elseif e.names then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4981 local e=e.names;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
4982 for a=1,#e do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4983 if i:get_child(e[a])then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4984 t[1]=e[a];
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4985 break;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4986 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4987 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
4988 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4989 if e.props_verbatim then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4990 for e,a in s(e.props_verbatim)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4991 t[e]=a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4992 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4993 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4994 if e.types then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4995 local e=e.types;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4996 t.TYPE={};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4997 for o=1,#e do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4998 if i:get_child(e[o])then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
4999 a(t.TYPE,e[o]:lower());
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5000 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5001 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5002 if#t.TYPE==0 then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5003 t.TYPE=nil;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5004 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5005 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5006 if e.props then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5007 local e=e.props;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5008 for o=1,#e do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5009 local e=e[o]
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5010 local o=i:get_child_text(e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5011 if o then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5012 t[e]=t[e]or{};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5013 a(t[e],o);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5014 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5015 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5016 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5017 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5018 return nil
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5019 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5020 return t;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5021 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5022 local function i(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5023 local t=e.tags;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5024 local e={};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5025 for o=1,#t do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5026 a(e,u(t[o]));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5027 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5028 return e
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5029 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5030 function d(e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5031 if e.attr.xmlns~="vcard-temp"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5032 return nil,"wrong-xmlns";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5033 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5034 if e.name=="xCard"then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5035 local a={};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5036 local e=e.tags;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5037 for t=1,#e do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5038 a[t]=i(e[t]);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5039 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5040 return a
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5041 elseif e.name=="vCard"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5042 return i(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5043 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5044 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5045 o={
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5046 VERSION="text",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5047 FN="text",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5048 N={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5049 values={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5050 "FAMILY",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5051 "GIVEN",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5052 "MIDDLE",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5053 "PREFIX",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5054 "SUFFIX",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5055 },
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5056 },
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5057 NICKNAME="text",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5058 PHOTO={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5059 props_verbatim={ENCODING={"b"}},
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5060 props={"TYPE"},
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5061 value="BINVAL",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5062 },
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5063 BDAY="text",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5064 ADR={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5065 types={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5066 "HOME",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5067 "WORK",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5068 "POSTAL",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5069 "PARCEL",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5070 "DOM",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5071 "INTL",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5072 "PREF",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5073 },
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5074 values={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5075 "POBOX",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5076 "EXTADD",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5077 "STREET",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5078 "LOCALITY",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5079 "REGION",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5080 "PCODE",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5081 "CTRY",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5082 }
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5083 },
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5084 LABEL={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5085 types={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5086 "HOME",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5087 "WORK",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5088 "POSTAL",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5089 "PARCEL",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5090 "DOM",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5091 "INTL",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5092 "PREF",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5093 },
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5094 value="LINE",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5095 },
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5096 TEL={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5097 types={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5098 "HOME",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5099 "WORK",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5100 "VOICE",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5101 "FAX",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5102 "PAGER",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5103 "MSG",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5104 "CELL",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5105 "VIDEO",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5106 "BBS",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5107 "MODEM",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5108 "ISDN",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5109 "PCS",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5110 "PREF",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5111 },
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5112 value="NUMBER",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5113 },
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5114 EMAIL={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5115 types={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5116 "HOME",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5117 "WORK",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5118 "INTERNET",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5119 "PREF",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5120 "X400",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5121 },
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5122 value="USERID",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5123 },
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5124 JABBERID="text",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5125 MAILER="text",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5126 TZ="text",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5127 GEO={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5128 values={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5129 "LAT",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5130 "LON",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5131 },
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5132 },
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5133 TITLE="text",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5134 ROLE="text",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5135 LOGO="copy of PHOTO",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5136 AGENT="text",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5137 ORG={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5138 values={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5139 behaviour="repeat-last",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5140 "ORGNAME",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5141 "ORGUNIT",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5142 }
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5143 },
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5144 CATEGORIES={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5145 values="KEYWORD",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5146 },
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5147 NOTE="text",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5148 PRODID="text",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5149 REV="text",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5150 SORTSTRING="text",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5151 SOUND="copy of PHOTO",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5152 UID="text",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5153 URL="text",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5154 CLASS={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5155 names={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5156 "PUBLIC",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5157 "PRIVATE",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5158 "CONFIDENTIAL",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5159 },
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5160 },
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5161 KEY={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5162 props={"TYPE"},
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5163 value="CRED",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5164 },
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5165 DESC="text",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5166 };
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5167 o.LOGO=o.PHOTO;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5168 o.SOUND=o.PHOTO;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5169 return{
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5170 from_text=r;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5171 to_text=l;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5172 from_xep54=d;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5173 to_xep54=h;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5174 lua_to_text=l;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5175 lua_to_xep54=h;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5176 text_to_lua=r;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5177 text_to_xep54=function(...)return h(r(...));end;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5178 xep54_to_lua=d;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5179 xep54_to_text=function(...)return l(d(...))end;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5180 };
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5181 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5182 package.preload['util.logger']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5183 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5184 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5185 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
5186 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5187 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5188 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5189 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5190 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5191 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5192 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5193 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5194 local i=pairs;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5195 local r=ipairs;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5196 local h=require;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5197 local s=table.remove;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5198 local _ENV=nil;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5199 local e={};
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5200 local t;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5201 local function n(e)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5202 local a=t(e,"debug");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5203 local n=t(e,"info");
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5204 local i=t(e,"warn");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5205 local o=t(e,"error");
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5206 return function(t,e,...)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5207 if t=="debug"then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5208 return a(e,...);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5209 elseif t=="info"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5210 return n(e,...);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5211 elseif t=="warn"then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5212 return i(e,...);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5213 elseif t=="error"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5214 return o(e,...);
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5215 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5216 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5217 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5218 function t(o,a)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5219 local t=e[a];
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5220 if not t then
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5221 t={};
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5222 e[a]=t;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5223 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5224 local e=function(i,...)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5225 for e=1,#t do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5226 t[e](o,a,i,...);
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5227 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5228 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5229 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5230 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5231 local function d()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5232 for t,e in i(e)do
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5233 for t=1,#e do
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5234 e[t]=nil;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5235 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5236 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5237 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5238 local function o(t,a)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5239 if not e[t]then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5240 e[t]={a};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5241 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5242 e[t][#e[t]+1]=a;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5243 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5244 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5245 local function l(i,s)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5246 local n=h"util.format".format;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5247 local function e(t,a,e,...)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5248 return i(t,a,n(e,...));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5249 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5250 for a,t in r(s or{"debug","info","warn","error"})do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5251 o(t,e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5252 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5253 return e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5254 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5255 local function h(o)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5256 local a;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5257 for t,e in i(e)do
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5258 for t=#e,1,-1 do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5259 if e[t]==o then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5260 s(e,t);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5261 a=true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5262 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5263 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5264 end
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5265 return a;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5266 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5267 return{
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5268 init=n;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5269 make_logger=t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5270 reset=d;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5271 add_level_sink=o;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5272 add_simple_sink=l;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5273 new=t;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5274 remove_sink=h;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5275 };
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5276 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5277 package.preload['util.datetime']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5278 local _ENV=_ENV;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5279 local function e(t,...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5280 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
5281 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5282 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5283 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5284 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5285 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5286 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5287 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5288 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5289 local e=os.date;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5290 local i=os.time;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5291 local l=os.difftime;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5292 local t=math.floor;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5293 local s=tonumber;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5294 local _ENV=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5295 local function d(a)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5296 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
5297 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5298 local function r(a)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5299 if a==nil or a%1==0 then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5300 return e("!%Y-%m-%dT%H:%M:%SZ",a);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5301 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5302 local o=a%1;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5303 local a=t(a);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5304 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
5305 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5306 local function u(a)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5307 if a==nil or a%1==0 then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5308 return e("!%H:%M:%S",a);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5309 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5310 local o=a%1;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5311 local a=t(a);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5312 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
5313 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5314 local function m(a)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5315 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
5316 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5317 local function c(a)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5318 if a then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5319 local h,r,d,c,u,a,n=a:match("^(%d%d%d%d)%-?(%d%d)%-?(%d%d)T(%d%d):(%d%d):(%d%d%.?%d*)([Z+%-]?.*)$");
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5320 if h then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5321 local o=i();
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5322 local l=l(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
5323 local o=0;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5324 if n~=""and n~="Z"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5325 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
5326 if not a then return;end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
5327 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
5328 t,e=s(t),s(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5329 o=t*60*60+e*60;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5330 if a=="-"then o=-o;end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5331 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5332 local e=a%1;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5333 a=t(a+l)-o;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5334 return i({year=h,month=r,day=d,hour=c,min=u,sec=a,isdst=false})+e;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5335 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5336 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5337 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5338 return{
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5339 date=d;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5340 datetime=r;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5341 time=u;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5342 legacy=m;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5343 parse=c;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5344 };
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5345 end)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5346 package.preload['util.json']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5347 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5348 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5349 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
5350 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5351 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5352 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5353 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5354 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5355 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5356 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5357 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5358 local u=type;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5359 local t,w,y=table.insert,table.concat,table.remove;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5360 local s=string.char;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5361 local x,d=tostring,tonumber;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5362 local p,l,z=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
5363 local i=next;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5364 local b,f=getmetatable,setmetatable;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5365 local r=print;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5366 local a,e=pcall(require,"util.array");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5367 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
5368 local a={};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5369 local n=f({},{__tostring=function()return"null";end;});
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5370 a.null=n;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5371 local m={
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5372 ["\""]="\\\"",["\\"]="\\\\",["\b"]="\\b",
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5373 ["\f"]="\\f",["\n"]="\\n",["\r"]="\\r",["\t"]="\\t"};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5374 for e=0,31 do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5375 local t=s(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5376 if not m[t]then m[t]=("\\u%.4X"):format(e);end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5377 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5378 local function j(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5379 if e<128 then return s(e);end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5380 local t=e%64;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5381 if e<2048 then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5382 local e=(e-t)/64;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5383 return s(128+64+e,128+t);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5384 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5385 local a=e%4096;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5386 local o=(a-t)/64;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5387 local e=(e-a)/4096;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5388 return s(128+64+32+e,128+o,128+t);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5389 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5390 local k={
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5391 number=true,
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5392 string=true,
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5393 table=true,
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5394 boolean=true
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5395 };
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5396 local q={
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5397 __array=true;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5398 __hash=true;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5399 };
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5400 local o,g,h,c;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5401 function c(a,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5402 t(e,"\""..(a:gsub(".",m)).."\"");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5403 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5404 function h(a,e)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5405 t(e,"[");
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5406 if i(a)then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5407 for i,a in l(a)do
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5408 o(a,e);
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5409 t(e,",");
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5410 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5411 y(e);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5412 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5413 t(e,"]");
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5414 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5415 function g(d,e)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5416 local a={};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5417 local s={};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5418 local r={};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5419 for t,e in l(d)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5420 a[t]=e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5421 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5422 for e,t in p(d)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5423 local o,i=u(e),u(t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5424 if k[i]or t==n then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5425 if o=="string"and not q[e]then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5426 r[e]=t;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5427 elseif(k[o]or e==n)and a[e]==nil then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5428 s[e]=t;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5429 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5430 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5431 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5432 if i(s)~=nil or i(r)~=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
5433 t(e,"{");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5434 local n=#e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5435 local d=e.ordered and z or p;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5436 for a,i in d(r)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5437 c(a,e);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5438 t(e,":");
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5439 o(i,e);
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5440 t(e,",");
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5441 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5442 if i(s)~=nil then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5443 t(e,"\"__hash\":[");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5444 for a,i in p(s)do
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5445 o(a,e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5446 t(e,",");
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5447 o(i,e);
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5448 t(e,",");
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5449 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5450 y(e);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5451 t(e,"]");
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5452 t(e,",");
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5453 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5454 if i(a)then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5455 t(e,"\"__array\":");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5456 h(a,e);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5457 t(e,",");
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5458 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5459 if n~=#e then y(e);end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5460 t(e,"}");
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5461 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5462 h(a,e);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5463 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5464 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5465 function o(e,a)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5466 local o=u(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5467 if e==n then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5468 t(a,"null");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5469 elseif o=="number"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5470 t(a,x(e));
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5471 elseif o=="string"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5472 c(e,a);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5473 elseif o=="table"then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5474 local t=b(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5475 if t==v then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5476 h(e,a);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5477 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5478 g(e,a);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5479 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5480 elseif o=="boolean"then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5481 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
5482 else
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5483 t(a,"null");
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5484 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5485 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5486 function a.encode(t)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5487 local e={};
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5488 o(t,e);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5489 return w(e);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5490 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5491 function a.encode_ordered(t)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5492 local e={ordered=true};
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5493 o(t,e);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5494 return w(e);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5495 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5496 function a.encode_array(t)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5497 local e={};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5498 h(t,e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5499 return w(e);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5500 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5501 local function o(t,e)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5502 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
5503 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5504 local function u(e)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5505 local a=e.__array;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5506 if a then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5507 e.__array=nil;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5508 for o,a in l(a)do
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5509 t(e,a);
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5510 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5511 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5512 local a=e.__hash;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5513 if a then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5514 e.__hash=nil;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5515 local t;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5516 for o,a in l(a)do
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5517 if t~=nil then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5518 e[t]=a;t=nil;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5519 else
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5520 t=a;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5521 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5522 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5523 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5524 return e;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5525 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5526 local i,h;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5527 local function c(t,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5528 local n={};
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5529 while true do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5530 local s,a;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5531 e=o(t,e+1);
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5532 if t:byte(e)~=34 then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5533 if t:byte(e)==125 then return n,e+1;end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5534 return nil,"key expected";
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5535 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5536 s,e=h(t,e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5537 if s==nil then return nil,e;end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5538 e=o(t,e);
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5539 if t:byte(e)~=58 then return nil,"colon expected";end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5540 a,e=i(t,e+1);
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5541 if a==nil then return nil,e;end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5542 n[s]=a;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5543 e=o(t,e);
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5544 local t=t:byte(e);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5545 if t==125 then return u(n),e+1;end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5546 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
5547 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5548 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5549 local function u(s,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5550 local n={};
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5551 while true do
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5552 local a,h;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5553 a,e,h=i(s,e+1,93);
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5554 if a==nil then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5555 if h then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5556 if#n~=0 then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5557 return nil,"value expected";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5558 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5559 a,e=f(n,v),e+1;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5560 end
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5561 return a,e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5562 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5563 t(n,a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5564 e=o(s,e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5565 local t=s:byte(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5566 if t==93 then return f(n,v),e+1;end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5567 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
5568 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5569 end
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5570 local t;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5571 local function l(e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5572 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
5573 local e=t*1024+e-56613888;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5574 local o=e%64;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5575 e=(e-o)/64;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5576 local a=e%64;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5577 e=(e-a)/64;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5578 local t=e%64;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5579 e=(e-t)/64;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5580 return s(240+e,128+t,128+a,128+o);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5581 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5582 local function s(e)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5583 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
5584 if e then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5585 local e=d(e,16)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5586 if e>=55296 and e<=57343 then t=true;end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5587 return j(e);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5588 end
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5589 t=true;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5590 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5591 function h(o,e)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5592 e=e+1;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5593 local a=o:find("\"",e,true);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5594 if a then
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5595 local e=o:sub(e,a-1);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5596 t=nil;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5597 e=e:gsub("\\u[dD][89abAB]%x%x\\u[dD][cdefCDEF]%x%x",l);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5598 e=e:gsub("\\u.?.?.?.?",s);
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5599 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
5600 return e,a+1;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5601 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5602 return nil,"string eof";
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5603 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5604 local function s(e,t)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5605 local e=e:match("[0-9%.%-eE%+]+",t);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5606 return d(e),t+#e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5607 end
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5608 local function d(t,e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5609 local t,a,o=t:byte(e+1,e+3);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5610 if t==117 and a==108 and o==108 then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5611 return n,e+4;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5612 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5613 return nil,"null parse failed";
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5614 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5615 local function l(t,e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5616 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
5617 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
5618 return true,e+4;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5619 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5620 return nil,"true parse failed";
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5621 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5622 local function n(t,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5623 local o,i,a,t=t:byte(e+1,e+4);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5624 if o==97 and i==108 and a==115 and t==101 then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5625 return false,e+5;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5626 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5627 return nil,"false parse failed";
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5628 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5629 function i(a,e,i)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5630 e=o(a,e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5631 local t=a:byte(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5632 if t==123 then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5633 return c(a,e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5634 elseif t==91 then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5635 return u(a,e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5636 elseif t==34 then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5637 return h(a,e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5638 elseif t~=nil and t>=48 and t<=57 or t==45 then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5639 return s(a,e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5640 elseif t==110 then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5641 return d(a,e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5642 elseif t==116 then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5643 return l(a,e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5644 elseif t==102 then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5645 return n(a,e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5646 elseif t==i then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5647 return nil,e,true;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5648 else
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5649 return nil,"value expected";
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5650 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5651 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5652 local t={
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5653 ["\\\""]="\\u0022";
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5654 ["\\\\"]="\\u005c";
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5655 ["\\/"]="\\u002f";
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5656 ["\\b"]="\\u0008";
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5657 ["\\f"]="\\u000C";
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5658 ["\\n"]="\\u000A";
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5659 ["\\r"]="\\u000D";
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5660 ["\\t"]="\\u0009";
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5661 ["\\u"]="\\u";
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5662 };
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5663 function a.decode(e)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5664 e=e:gsub("\\.",t)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5665 local t,a=i(e,1);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5666 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
5667 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
5668 return t;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5669 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5670 function a.test(e)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5671 local e=a.encode(e);
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5672 local t=a.decode(e);
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5673 local t=a.encode(t);
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5674 if e~=t then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5675 r("FAILED");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5676 r("encoded:",e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5677 r("recoded:",t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5678 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5679 r(e);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5680 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5681 return e==t;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5682 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5683 return a;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5684 end)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5685 package.preload['util.xml']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5686 local _ENV=_ENV;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5687 local function e(t,...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5688 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
5689 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5690 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5691 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5692 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5693 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5694 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5695 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5696 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5697 local t=require"util.stanza";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5698 local d=require"lxp";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5699 local r=table.insert;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5700 local h=table.remove;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5701 local l=error;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5702 local _ENV=nil;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5703 local e=(function()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5704 local c={
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5705 ["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
5706 };
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5707 local n="\1";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5708 local s="^([^"..n.."]*)"..n.."?(.*)$";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5709 return function(u,o)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5710 local e={};
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5711 local a=t.stanza("root");
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5712 local t={};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5713 local i={};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5714 function e:StartNamespaceDecl(e,a)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5715 if e~=nil then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5716 r(t,a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5717 r(i,e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5718 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5719 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5720 function e:EndNamespaceDecl(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5721 if e~=nil then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5722 h(t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5723 h(i);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5724 end
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 e:StartElement(o,e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5727 local o,n=o:match(s);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5728 if n==""then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5729 o,n="",o;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5730 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5731 if o~=""then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5732 e.xmlns=o;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5733 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5734 for t=1,#e do
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5735 local a=e[t];
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5736 e[t]=nil;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5737 local t,o=a:match(s);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5738 if o~=""then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5739 t=c[t];
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5740 if t then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5741 e[t..":"..o]=e[a];
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5742 e[a]=nil;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5743 end
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
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5746 local o={}
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5747 for e=1,#t do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5748 o[i[e]]=t[e];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5749 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5750 a:tag(n,e,o);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5751 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5752 function e:CharacterData(e)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5753 a:text(e);
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5754 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5755 function e:EndElement()
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5756 a:up();
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5757 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5758 local function t(t)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5759 if not t.stop or not t:stop()then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5760 l("Failed to abort parsing");
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5761 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5762 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5763 e.StartDoctypeDecl=t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5764 if not o or not o.allow_comments then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5765 e.Comment=t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5766 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5767 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
5768 e.ProcessingInstruction=t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5769 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5770 local t=d.new(e,n);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5771 local e,o,n,i=t:parse(u);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5772 if e then e,o,n,i=t:parse();end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5773 if e then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5774 return a.tags[1];
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5775 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5776 return e,("%s (line %d, col %d))"):format(o,n,i);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5777 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5778 end;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5779 end)();
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5780 return{
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5781 parse=e;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5782 };
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5783 end)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5784 package.preload['util.rsm']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5785 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5786 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5787 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
5788 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5789 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5790 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5791 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5792 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5793 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5794 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5795 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5796 local h=require"util.stanza".stanza;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5797 local o,i=tostring,tonumber;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5798 local s=type;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5799 local r=pairs;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5800 local n='http://jabber.org/protocol/rsm';
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5801 local a={};
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5802 do
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5803 local e=a;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5804 local function t(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5805 return i((e:get_text()));
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5806 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5807 local function a(t)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5808 return t:get_text();
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5809 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5810 e.after=a;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5811 e.before=function(e)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5812 local e=e:get_text();
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5813 return e==""or e;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5814 end;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5815 e.max=t;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5816 e.index=t;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5817 e.first=function(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5818 return{index=i(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
5819 end;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5820 e.last=a;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5821 e.count=t;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5822 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5823 local s=setmetatable({
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5824 first=function(t,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5825 if s(e)=="table"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5826 t:tag("first",{index=e.index}):text(e[1]):up();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5827 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5828 t:tag("first"):text(o(e)):up();
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5829 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5830 end;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5831 before=function(t,e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5832 if e==true then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5833 t:tag("before"):up();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5834 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5835 t:tag("before"):text(o(e)):up();
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5836 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5837 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5838 },{
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5839 __index=function(t,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5840 return function(a,t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5841 a:tag(e):text(o(t)):up();
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5842 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5843 end;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5844 });
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5845 local function o(e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5846 local o={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5847 for t in e:childtags()do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5848 local e=t.name;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5849 local a=e and a[e];
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5850 if a then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5851 o[e]=a(t);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5852 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5853 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5854 return o;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5855 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5856 local function i(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5857 local e=h("set",{xmlns=n});
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5858 for t,o in r(t)do
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5859 if a[t]then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5860 s[t](e,o);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5861 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5862 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5863 return e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5864 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5865 local function t(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5866 local e=e:get_child("set",n);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5867 if e and#e.tags>0 then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5868 return o(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5869 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5870 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5871 return{parse=o,generate=i,get=t};
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5872 end)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5873 package.preload['util.random']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5874 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5875 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5876 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
5877 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5878 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5879 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5880 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5881 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5882 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5883 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5884 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5885 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
5886 if e then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5887 return{
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5888 seed=function()end;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5889 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
5890 };
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5891 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5892 local e=require"crypto"
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5893 return e.rand;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5894 end)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5895 package.preload['util.ip']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5896 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5897 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5898 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
5899 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5900 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5901 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5902 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5903 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5904 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5905 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
5906 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5907 local s=require"util.net";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5908 local n=require"util.hex";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5909 local a={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5910 local o={
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5911 __index=function(e,t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5912 local a=a[t];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5913 if not a then return nil;end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5914 local a=a(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5915 e[t]=a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5916 return a;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5917 end,
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5918 __tostring=function(e)return e.addr;end,
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5919 };
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5920 o.__eq=function(e,t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5921 if getmetatable(e)~=o or getmetatable(t)~=o then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5922 return false;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5923 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5924 return e.packed==t.packed;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5925 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5926 local h={
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5927 ["0"]="0000",["1"]="0001",["2"]="0010",["3"]="0011",
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5928 ["4"]="0100",["5"]="0101",["6"]="0110",["7"]="0111",
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5929 ["8"]="1000",["9"]="1001",["A"]="1010",["B"]="1011",
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5930 ["C"]="1100",["D"]="1101",["E"]="1110",["F"]="1111",
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5931 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5932 local function t(a,e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5933 local i;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5934 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
5935 a,i=a:match("^(.-)%%(.*)");
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 t,n=s.pton(a);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5938 if not t then return t,n end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5939 if e=="IPv6"and#t~=16 then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5940 return nil,"invalid-ipv6";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5941 elseif e=="IPv4"and#t~=4 then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5942 return nil,"invalid-ipv4";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5943 elseif not e then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5944 if#t==16 then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5945 e="IPv6";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5946 elseif#t==4 then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5947 e="IPv4";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5948 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5949 return nil,"unknown protocol";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5950 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5951 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
5952 return nil,"invalid protocol";
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5953 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5954 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
5955 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5956 function a:normal()
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5957 return s.ntop(self.packed);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5958 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5959 function a.bits(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5960 return n.encode(e.packed):upper():gsub(".",h);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5961 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5962 function a.bits_full(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5963 if e.proto=="IPv4"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5964 e=e.toV4mapped;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5965 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5966 return e.bits;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5967 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5968 local e;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5969 local function y(t,a)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5970 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
5971 for e=1,128 do
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5972 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
5973 return e-1;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5974 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5975 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5976 return 128;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5977 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5978 local i=t("::1");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5979 local m=t("127.0.0.0");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5980 local u=t("2002::");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5981 local h=t("2001::");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5982 local f=t("fe80::");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5983 local w=t("169.254.0.0");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5984 local c=t("fc00::");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5985 local n=t("fec0::");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5986 local r=t("3ffe::");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5987 local d=t("::");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5988 local v=t("ff00::");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5989 local l=t("::ffff:0:0");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5990 local function p(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5991 if e(t,m,8)then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5992 return 2;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
5993 elseif e(t,w,16)then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5994 return 2;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5995 else
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5996 return 14;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5997 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
5998 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
5999 local function w(t)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6000 if t==i then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6001 return 2;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6002 elseif e(t,f,10)then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6003 return 2;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6004 elseif e(t,n,10)then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6005 return 5;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6006 elseif e(t,v,10)then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6007 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
6008 else
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6009 return 14;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6010 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6011 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6012 local function m(t)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6013 if t==i then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6014 return 0;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6015 elseif e(t,u,16)then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6016 return 2;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6017 elseif e(t,h,32)then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6018 return 5;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6019 elseif e(t,c,7)then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6020 return 13;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6021 elseif e(t,n,10)then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6022 return 11;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6023 elseif e(t,r,16)then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6024 return 12;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6025 elseif e(t,d,96)then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6026 return 3;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6027 elseif e(t,l,96)then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6028 return 4;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6029 else
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6030 return 1;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6031 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6032 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6033 local function f(t)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6034 if t==i then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6035 return 50;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6036 elseif e(t,u,16)then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6037 return 30;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6038 elseif e(t,h,32)then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6039 return 5;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6040 elseif e(t,c,7)then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6041 return 3;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6042 elseif e(t,n,10)then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6043 return 1;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6044 elseif e(t,r,16)then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6045 return 1;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6046 elseif e(t,d,96)then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6047 return 1;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6048 elseif e(t,l,96)then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6049 return 35;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6050 else
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6051 return 40;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6052 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6053 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6054 function a:toV4mapped()
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6055 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
6056 local e=t("::ffff:"..self.normal);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6057 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6058 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6059 function a:label()
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6060 if self.proto=="IPv4"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6061 return m(self.toV4mapped);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6062 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6063 return m(self);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6064 end
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 function a:precedence()
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6067 if self.proto=="IPv4"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6068 return f(self.toV4mapped);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6069 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6070 return f(self);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6071 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6072 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6073 function a:scope()
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6074 if self.proto=="IPv4"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6075 return p(self);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6076 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6077 return w(self);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6078 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6079 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6080 local n=t("10.0.0.0");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6081 local i=t("172.16.0.0");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6082 local r=t("192.168.0.0");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6083 local h=t("100.64.0.0");
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6084 function a:private()
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6085 local t=self.scope~=14;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6086 if not t and self.proto=="IPv4"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6087 return e(self,n,8)or e(self,i,12)or e(self,r,16)or e(self,h,10);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6088 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6089 return t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6090 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6091 local function n(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6092 local o;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6093 local a=e:find("/",1,true);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6094 if a then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6095 o=tonumber(e:sub(a+1,-1));
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6096 e=e:sub(1,a-1);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6097 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6098 return t(e),o;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6099 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6100 function e(a,t,e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6101 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
6102 return a==t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6103 elseif e<1 then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6104 return true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6105 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6106 if a.proto~=t.proto then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6107 if a.proto=="IPv4"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6108 a=a.toV4mapped;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6109 elseif t.proto=="IPv4"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6110 t=t.toV4mapped;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6111 e=e+(128-32);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6112 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6113 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6114 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
6115 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6116 local function i(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6117 return getmetatable(e)==o;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6118 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6119 local function o(e,a)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6120 if a%8~=0 then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6121 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
6122 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6123 local a=a/8;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6124 if not i(e)then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6125 e=t(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6126 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6127 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
6128 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6129 return{
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6130 new_ip=t,
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6131 commonPrefixLength=y,
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6132 parse_cidr=n,
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6133 match=e,
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6134 is_ip=i;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6135 truncate=o;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6136 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6137 end)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6138 package.preload['util.hex']=(function(...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6139 local _ENV=_ENV;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6140 local function e(t,...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6141 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
6142 package.loaded[t]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6143 for t=1,select("#",...)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6144 (select(t,...))(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6145 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6146 _ENV=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6147 _M=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6148 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6149 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6150 local n=string.char;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6151 local s=string.format;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6152 local a=string.gsub;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6153 local h=string.lower;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6154 local o={};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6155 local i={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6156 do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6157 local t,e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6158 for a=0,255 do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6159 t,e=n(a),s("%02x",a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6160 o[t]=e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6161 i[e]=t;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6162 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6163 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6164 local function t(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6165 return(a(e,".",o));
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6166 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6167 local function e(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6168 return(a(h(e),"%X*(%x%x)%X*",i));
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6169 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6170 return{
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6171 encode=t,decode=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6172 to=t,from=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6173 };
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 package.preload['util.net']=(function(...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6176 local _ENV=_ENV;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6177 local function e(t,...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6178 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
6179 package.loaded[t]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6180 for t=1,select("#",...)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6181 (select(t,...))(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6182 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6183 _ENV=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6184 _M=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6185 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6186 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6187 return{
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6188 pton=function(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6189 if e:find":"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6190 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
6191 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6192 return"\0\0\0\0"
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6193 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6194 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6195 }
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 package.preload['util.sslconfig']=(function(...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6198 local _ENV=_ENV;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6199 local function e(t,...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6200 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
6201 package.loaded[t]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6202 for t=1,select("#",...)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6203 (select(t,...))(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6204 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6205 _ENV=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6206 _M=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6207 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6208 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6209 local i=type;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6210 local a=pairs;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6211 local t=rawset;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6212 local r=rawget;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6213 local f=error;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6214 local m=table.concat;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6215 local u=table.insert;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6216 local c=setmetatable;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6217 local l=require"util.paths".resolve_relative_path;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6218 local _ENV=nil;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6219 local n={};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6220 local e={};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6221 local d=function(e)return e end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6222 function n.options(h,s,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6223 local o=h[s]or{};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6224 if i(e)~="table"then e={e}end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6225 for a,e in a(e)do
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6226 if e==true or e==false then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6227 o[a]=e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6228 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6229 o[e]=true;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6230 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6231 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6232 t(h,s,o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6233 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6234 n.verifyext=n.options;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6235 function e.options(o)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6236 local t={};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6237 for a,e in a(o)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6238 if e then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6239 t[#t+1]=a;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6240 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6241 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6242 return t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6243 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6244 e.verifyext=e.options;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6245 function e.ciphers(t)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6246 if i(t)=="table"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6247 return m(t,":");
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6248 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6249 return t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6250 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6251 e.curveslist=e.ciphers;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6252 e.ciphersuites=e.ciphers;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6253 function e.key(t,a)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6254 if i(t)=="string"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6255 return l(a._basedir,t);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6256 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6257 return nil
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6258 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6259 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6260 e.certificate=e.key;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6261 e.cafile=e.key;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6262 e.capath=e.key;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6263 e.dhparam=e.key;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6264 local o={"sslv2","sslv3","tlsv1","tlsv1_1","tlsv1_2","tlsv1_3"};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6265 for e=1,#o do o[o[e].."+"]=e-1;end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6266 local function h(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6267 local t=o[e.protocol];
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6268 if t then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6269 e.protocol="sslv23";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6270 for t=1,t do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6271 u(e.options,"no_"..o[t]);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6272 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6273 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6274 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6275 local function s(o,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6276 t(o,"_cache",nil);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6277 if i(e)=="table"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6278 for e,a in a(e)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6279 if e:sub(1,1)~="_"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6280 (n[e]or t)(o,e,a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6281 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6282 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6283 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6284 return o
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6285 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6286 local function i(i)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6287 local o={};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6288 for t,a in a(i)do
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6289 if t:sub(1,1)~="_"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6290 o[t]=(e[t]or d)(a,i);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6291 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6292 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6293 h(o);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6294 return o;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6295 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6296 local function n(e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6297 local a=r(e,"_cache");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6298 if a then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6299 return a,nil
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6300 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6301 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
6302 if a then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6303 t(e,"_cache",a);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6304 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6305 return a,o
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6306 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6307 local e={
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6308 __index={
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6309 apply=s;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6310 final=i;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6311 build=n;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6312 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6313 __newindex=function()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6314 f("SSL config objects cannot be modified directly. Use :apply()")
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6315 end;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6316 };
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6317 local function n(t,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6318 return c({
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6319 _context_factory=t,
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6320 _basedir=a,
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6321 options={},
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6322 },e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6323 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6324 local function h(i)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6325 local o=n();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6326 for e,a in a(i)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6327 t(o,e,a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6328 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6329 return o
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6330 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6331 e.__index.clone=h;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6332 return{
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6333 apply=s;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6334 final=i;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6335 _new=n;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6336 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6337 end)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6338 package.preload['util.paths']=(function(...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6339 local _ENV=_ENV;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6340 local function e(t,...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6341 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
6342 package.loaded[t]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6343 for t=1,select("#",...)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6344 (select(t,...))(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6345 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6346 _ENV=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6347 _M=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6348 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6349 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6350 local i=table.concat;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6351 local e=package.config:sub(1,1);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6352 local a={}
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6353 function a.resolve_relative_path(o,t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6354 if t then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6355 o=o:gsub("%"..e.."+$","");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6356 t=t:gsub("^%.%"..e.."+","");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6357 local a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6358 if e=="/"and t:sub(1,1)~="/"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6359 a=true;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6360 elseif e=="\\"and(t:sub(1,1)~="/"and(t:sub(2,3)~=":\\"and t:sub(2,3)~=":/"))then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6361 a=true;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6362 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6363 if a then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6364 return o..e..t;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6365 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6366 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6367 return t;
177
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 function a.glob_to_pattern(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6370 return"^"..e:gsub("[%p*?]",function(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6371 if e=="*"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6372 return".*";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6373 elseif e=="?"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6374 return".";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6375 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6376 return"%"..e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6377 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 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6380 function a.join(t,a,o,...)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6381 if a then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6382 if o then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6383 if...then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6384 return i({t,a,o,...},e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6385 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6386 return t..e..a..e..o;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6387 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6388 return t..e..a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6389 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6390 return t;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6391 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6392 function a.complement_lua_path(t)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6393 local o=_VERSION:match(" (.+)$");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6394 local a=package.config:sub(3,3);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6395 local e=package.config:sub(1,1);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6396 local o=e.."lua"..e..o..e;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6397 if not string.find(package.path,t,1,true)then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6398 package.path=package.path..a..t..e.."share"..o.."?.lua";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6399 package.path=package.path..a..t..e.."share"..o.."?"..e.."init.lua";
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6400 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6401 if not string.find(package.path,t,1,true)then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6402 package.cpath=package.cpath..a..t..e.."lib"..o.."?.so";
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6403 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6404 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6405 return a;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6406 end)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6407 package.preload['util.mathcompat']=(function(...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6408 local _ENV=_ENV;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6409 local function e(t,...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6410 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
6411 package.loaded[t]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6412 for t=1,select("#",...)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6413 (select(t,...))(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6414 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6415 _ENV=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6416 _M=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6417 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6418 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6419 if not math.type then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6420 local function t(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6421 if type(e)=="number"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6422 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
6423 return"integer"
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6424 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6425 return"float"
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6426 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6427 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6428 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6429 _G.math.type=t
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6430 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6431 end)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6432 package.preload['util.dnsregistry']=(function(...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6433 local _ENV=_ENV;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6434 local function e(t,...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6435 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
6436 package.loaded[t]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6437 for t=1,select("#",...)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6438 (select(t,...))(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6439 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6440 _ENV=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6441 _M=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6442 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6443 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6444 return{
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6445 classes={
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6446 ["IN"]=1;[1]="IN";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6447 ["CH"]=3;[3]="CH";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6448 ["HS"]=4;[4]="HS";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6449 ["ANY"]=255;[255]="ANY";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6450 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6451 types={
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6452 ["A"]=1;[1]="A";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6453 ["NS"]=2;[2]="NS";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6454 ["MD"]=3;[3]="MD";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6455 ["MF"]=4;[4]="MF";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6456 ["CNAME"]=5;[5]="CNAME";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6457 ["SOA"]=6;[6]="SOA";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6458 ["MB"]=7;[7]="MB";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6459 ["MG"]=8;[8]="MG";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6460 ["MR"]=9;[9]="MR";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6461 ["NULL"]=10;[10]="NULL";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6462 ["WKS"]=11;[11]="WKS";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6463 ["PTR"]=12;[12]="PTR";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6464 ["HINFO"]=13;[13]="HINFO";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6465 ["MINFO"]=14;[14]="MINFO";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6466 ["MX"]=15;[15]="MX";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6467 ["TXT"]=16;[16]="TXT";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6468 ["RP"]=17;[17]="RP";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6469 ["AFSDB"]=18;[18]="AFSDB";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6470 ["X25"]=19;[19]="X25";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6471 ["ISDN"]=20;[20]="ISDN";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6472 ["RT"]=21;[21]="RT";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6473 ["NSAP"]=22;[22]="NSAP";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6474 ["NSAP-PTR"]=23;[23]="NSAP-PTR";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6475 ["SIG"]=24;[24]="SIG";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6476 ["KEY"]=25;[25]="KEY";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6477 ["PX"]=26;[26]="PX";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6478 ["GPOS"]=27;[27]="GPOS";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6479 ["AAAA"]=28;[28]="AAAA";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6480 ["LOC"]=29;[29]="LOC";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6481 ["NXT"]=30;[30]="NXT";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6482 ["EID"]=31;[31]="EID";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6483 ["NIMLOC"]=32;[32]="NIMLOC";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6484 ["SRV"]=33;[33]="SRV";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6485 ["ATMA"]=34;[34]="ATMA";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6486 ["NAPTR"]=35;[35]="NAPTR";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6487 ["KX"]=36;[36]="KX";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6488 ["CERT"]=37;[37]="CERT";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6489 ["A6"]=38;[38]="A6";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6490 ["DNAME"]=39;[39]="DNAME";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6491 ["SINK"]=40;[40]="SINK";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6492 ["OPT"]=41;[41]="OPT";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6493 ["APL"]=42;[42]="APL";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6494 ["DS"]=43;[43]="DS";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6495 ["SSHFP"]=44;[44]="SSHFP";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6496 ["IPSECKEY"]=45;[45]="IPSECKEY";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6497 ["RRSIG"]=46;[46]="RRSIG";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6498 ["NSEC"]=47;[47]="NSEC";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6499 ["DNSKEY"]=48;[48]="DNSKEY";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6500 ["DHCID"]=49;[49]="DHCID";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6501 ["NSEC3"]=50;[50]="NSEC3";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6502 ["NSEC3PARAM"]=51;[51]="NSEC3PARAM";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6503 ["TLSA"]=52;[52]="TLSA";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6504 ["SMIMEA"]=53;[53]="SMIMEA";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6505 ["HIP"]=55;[55]="HIP";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6506 ["NINFO"]=56;[56]="NINFO";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6507 ["RKEY"]=57;[57]="RKEY";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6508 ["TALINK"]=58;[58]="TALINK";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6509 ["CDS"]=59;[59]="CDS";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6510 ["CDNSKEY"]=60;[60]="CDNSKEY";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6511 ["OPENPGPKEY"]=61;[61]="OPENPGPKEY";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6512 ["CSYNC"]=62;[62]="CSYNC";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6513 ["ZONEMD"]=63;[63]="ZONEMD";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6514 ["SVCB"]=64;[64]="SVCB";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6515 ["HTTPS"]=65;[65]="HTTPS";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6516 ["SPF"]=99;[99]="SPF";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6517 ["NID"]=104;[104]="NID";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6518 ["L32"]=105;[105]="L32";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6519 ["L64"]=106;[106]="L64";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6520 ["LP"]=107;[107]="LP";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6521 ["EUI48"]=108;[108]="EUI48";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6522 ["EUI64"]=109;[109]="EUI64";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6523 ["TKEY"]=249;[249]="TKEY";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6524 ["TSIG"]=250;[250]="TSIG";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6525 ["IXFR"]=251;[251]="IXFR";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6526 ["AXFR"]=252;[252]="AXFR";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6527 ["MAILB"]=253;[253]="MAILB";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6528 ["MAILA"]=254;[254]="MAILA";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6529 ["*"]=255;[255]="*";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6530 ["URI"]=256;[256]="URI";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6531 ["CAA"]=257;[257]="CAA";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6532 ["AVC"]=258;[258]="AVC";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6533 ["DOA"]=259;[259]="DOA";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6534 ["AMTRELAY"]=260;[260]="AMTRELAY";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6535 ["TA"]=32768;[32768]="TA";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6536 ["DLV"]=32769;[32769]="DLV";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6537 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6538 errors={
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6539 [0]="NoError";["NoError"]="No Error";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6540 [1]="FormErr";["FormErr"]="Format Error";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6541 [2]="ServFail";["ServFail"]="Server Failure";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6542 [3]="NXDomain";["NXDomain"]="Non-Existent Domain";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6543 [4]="NotImp";["NotImp"]="Not Implemented";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6544 [5]="Refused";["Refused"]="Query Refused";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6545 [6]="YXDomain";["YXDomain"]="Name Exists when it should not";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6546 [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
6547 [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
6548 [9]="NotAuth";["NotAuth"]="Server Not Authoritative for zone";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6549 [10]="NotZone";["NotZone"]="Name not contained in zone";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6550 [11]="DSOTYPENI";["DSOTYPENI"]="DSO-TYPE Not Implemented";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6551 [16]="BADVERS";["BADVERS"]="Bad OPT Version";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6552 [17]="BADKEY";["BADKEY"]="Key not recognized";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6553 [18]="BADTIME";["BADTIME"]="Signature out of time window";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6554 [19]="BADMODE";["BADMODE"]="Bad TKEY Mode";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6555 [20]="BADNAME";["BADNAME"]="Duplicate key name";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6556 [21]="BADALG";["BADALG"]="Algorithm not supported";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6557 [22]="BADTRUNC";["BADTRUNC"]="Bad Truncation";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6558 [23]="BADCOOKIE";["BADCOOKIE"]="Bad/missing Server Cookie";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6559 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6560 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6561 end)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6562 package.preload['net.tls_luasec']=(function(...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6563 local _ENV=_ENV;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6564 local function e(t,...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6565 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
6566 package.loaded[t]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6567 for t=1,select("#",...)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6568 (select(t,...))(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6569 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6570 _ENV=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6571 _M=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6572 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6573 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6574 local t=require"ssl";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6575 local o=t.newcontext;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6576 local s=t.context or require"ssl.context";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6577 local n=io.open;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6578 local e={};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6579 local h={__index=e};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6580 function e:set_sni_host(a,t,e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6581 local e,t=self._builder:clone():apply({
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6582 certificate=t,
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6583 key=e,
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6584 }):build();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6585 if not e then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6586 return false,t
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6587 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6588 self._sni_contexts[a]=e._inner
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6589 return true,nil
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6590 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6591 function e:remove_sni_host(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6592 self._sni_contexts[e]=nil
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 function e:wrap(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6595 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
6596 if not e then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6597 return nil,a
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6598 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6599 return t,nil
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6600 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6601 local function i(e,i)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6602 if type(e.dhparam)=="string"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6603 local t,a=n(e.dhparam);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6604 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
6605 local a=t:read("*a");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6606 t:close();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6607 e.dhparam=function()return a;end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6608 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6609 local t,a=o(e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6610 if not t then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6611 return nil,a
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6612 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6613 if t and e.ciphers then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6614 local o;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6615 o,a=s.setcipher(t,e.ciphers);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6616 if not o then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6617 return nil,a
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6618 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6619 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6620 return setmetatable({
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6621 _inner=t,
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6622 _builder=i,
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6623 _sni_contexts={},
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6624 },h),nil
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6625 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6626 return{
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6627 new_context=i,
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6628 };
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6629 end)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6630 package.preload['util.sasl.scram']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6631 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6632 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6633 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
6634 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6635 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6636 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6637 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6638 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6639 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6640 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6641 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6642 local s,h=require"mime".b64,require"mime".unb64;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6643 local t=require"util.hashes";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6644 local i=require"bit";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6645 local l=require"util.random";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6646 local c=tonumber;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6647 local a,e=string.char,string.byte;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6648 local o=string.gsub;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6649 local i=i.bxor;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6650 local function r(n,t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6651 return(o(n,"()(.)",function(n,o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6652 return a(i(e(o),e(t,n)))
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6653 end));
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6654 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6655 local y,t=t.sha1,t.hmac_sha1;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6656 local function w(o,e,i)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6657 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
6658 local a=e;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6659 for i=2,i do
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6660 e=t(o,e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6661 a=r(a,e);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6662 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6663 return a;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6664 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6665 local function f(e)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6666 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6667 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6668 local function a(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6669 return(o(e,"[,=]",{[","]="=2C",["="]="=3D"}));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6670 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6671 local function n(e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6672 if e:ssl()then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6673 local e=e:socket();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6674 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
6675 if e.exportkeyingmaterial then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6676 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
6677 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6678 elseif e.getfinished then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6679 return"p=tls-unique",e:getfinished();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6680 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6681 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6682 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6683 local function d(e,i)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6684 local a="n="..a(e.username);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6685 local o=s(l.bytes(15));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6686 local u="r="..o;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6687 local l=a..","..u;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6688 local d="";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6689 local a="n";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6690 if i=="SCRAM-SHA-1-PLUS"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6691 a,d=n(e.conn);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6692 elseif n(e.conn)then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6693 a="y";
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6694 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6695 local n=a..",,";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6696 local a=n..l;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6697 local a,m=coroutine.yield(a);
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6698 if a~="challenge"then return false end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6699 local a,i,p=m:match("(r=[^,]+),s=([^,]*),i=(%d+)");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6700 local c=c(p);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6701 i=h(i);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6702 if not a or not i or not c then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6703 return false,"Could not parse server_first_message";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6704 elseif a:find(o,3,true)~=3 then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6705 return false,"nonce sent by server does not match our nonce";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6706 elseif a==u then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6707 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
6708 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6709 local o=n..d;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6710 local o="c="..s(o);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6711 local d=o..","..a;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6712 local a;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6713 local o;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6714 local n;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6715 if e.client_key and e.server_key then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6716 o=e.client_key;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6717 n=e.server_key;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6718 else
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6719 if e.salted_password then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6720 a=e.salted_password;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6721 elseif e.password then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6722 a=w(f(e.password),i,c);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6723 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6724 n=t(a,"Server Key");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6725 o=t(a,"Client Key");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6726 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6727 local a=y(o);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6728 local e=l..","..m..","..d;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6729 local a=t(a,e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6730 local o=r(o,a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6731 local a=t(n,e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6732 local e="p="..s(o);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6733 local e=d..","..e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6734 local t,e=coroutine.yield(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6735 if t~="success"then return false,"success-expected"end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6736 local e=e:match("v=([^,]+)");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6737 if h(e)~=a then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6738 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
6739 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6740 return true;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6741 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6742 return function(e,t)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6743 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
6744 if t=="SCRAM-SHA-1"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6745 return d,99;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6746 elseif t=="SCRAM-SHA-1-PLUS"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6747 if n(e.conn)then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6748 return d,100;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6749 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6750 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6751 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6752 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6753 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6754 package.preload['util.sasl.plain']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6755 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6756 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6757 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
6758 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6759 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6760 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6761 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6762 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6763 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6764 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6765 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6766 return function(e,t)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6767 if t=="PLAIN"and e.username and e.password then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6768 return function(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6769 return"success"==coroutine.yield("\0"..e.username.."\0"..e.password);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6770 end,5;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6771 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6772 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6773 end)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6774 package.preload['util.sasl.anonymous']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6775 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6776 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6777 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
6778 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6779 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6780 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6781 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6782 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6783 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6784 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6785 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6786 return function(t,e)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6787 if e=="ANONYMOUS"then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6788 return function()
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6789 return coroutine.yield()=="success";
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6790 end,0;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6791 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6792 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6793 end)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6794 package.preload['util.sasl.oauthbearer']=(function(...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6795 local _ENV=_ENV;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6796 local function e(t,...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6797 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
6798 package.loaded[t]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6799 for t=1,select("#",...)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6800 (select(t,...))(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6801 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6802 _ENV=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6803 _M=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6804 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6805 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6806 return function(t,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6807 if e=="OAUTHBEARER"and t.username then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6808 return function(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6809 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
6810 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
6811 if t=="success"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6812 return true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6813 elseif t=="challenge"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6814 e:event("oauth-failure",{
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6815 json=a;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6816 });
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6817 if coroutine.yield("\001")~="failure"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6818 error("Unexpected SASL state: expected failure after challenge");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6819 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6820 return false;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6821 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6822 end,t.bearer_token and 6 or 4;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6823 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6824 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6825 end)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6826 package.preload['verse.plugins.tls']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6827 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6828 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6829 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
6830 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6831 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6832 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6833 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6834 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6835 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6836 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6837 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6838 local a=require"verse";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6839 local t="urn:ietf:params:xml:ns:xmpp-tls";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6840 function a.plugins.tls(e)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6841 local function i(o)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6842 if e.authenticated then return;end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6843 if o:get_child("starttls",t)and e.conn.starttls then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6844 e:debug("Negotiating TLS...");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6845 e:send(a.stanza("starttls",{xmlns=t}));
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6846 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6847 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
6848 e:warn("SSL library (LuaSec) not loaded, so TLS not available");
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6849 elseif not e.secure then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6850 e:debug("Server doesn't offer TLS :(");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6851 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6852 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6853 local function o(t)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6854 if t.name=="proceed"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6855 e:debug("Server says proceed, handshake starting...");
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6856 local t=a.tls_builder(".")
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6857 :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
6858 :apply(e.ssl or{});
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6859 e.conn:starttls(t:build(),true);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6860 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6861 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6862 local function a(t)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6863 if t=="ssl-handshake-complete"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6864 e.secure=true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6865 e:debug("Re-opening stream...");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6866 e:reopen();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6867 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6868 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6869 e:hook("stream-features",i,400);
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
6870 e:hook("stream/"..t,o);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6871 e:hook("status",a,400);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6872 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6873 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6874 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6875 package.preload['verse.plugins.sasl']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6876 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6877 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6878 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
6879 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6880 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6881 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6882 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6883 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6884 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6885 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6886 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6887 local n=require"verse";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6888 local s,r=require"mime".b64,require"mime".unb64;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6889 local o="urn:ietf:params:xml:ns:xmpp-sasl";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6890 function n.plugins.sasl(e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6891 local function d(t)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6892 if e.authenticated then return;end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6893 e:debug("Authenticating with SASL...");
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6894 local t=t:get_child("mechanisms",o);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6895 if not t then return end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6896 local a={};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6897 local i={};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6898 local h={};
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6899 for t in t:childtags("mechanism")do
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6900 t=t:get_text();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6901 e:debug("Server offers %s",t);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6902 h[t]=true;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6903 if not a[t]then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6904 local n=t:match("[^-]+");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6905 local s,o=pcall(require,"util.sasl."..n:lower());
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6906 if s then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6907 e:debug("Loaded SASL %s module",n);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6908 a[t],i[t]=o(e,t);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6909 elseif not tostring(o):match("not found")then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6910 e:debug("Loading failed: %s",tostring(o));
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6911 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6912 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6913 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6914 local t={};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6915 for e in pairs(a)do
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6916 table.insert(t,e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6917 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6918 if not t[1]then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6919 e:event("authentication-failure",{condition="no-supported-sasl-mechanisms",mechanisms=h});
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6920 e:close();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6921 return;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6922 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6923 table.sort(t,function(t,e)return i[t]>i[e];end);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6924 local t,i=t[1];
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6925 e:debug("Selecting %s mechanism...",t);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6926 e.sasl_mechanism=coroutine.wrap(a[t]);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6927 i=e:sasl_mechanism(t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6928 local t=n.stanza("auth",{xmlns=o,mechanism=t});
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6929 if i then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6930 t:text(s(i));
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6931 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6932 e:send(t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6933 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6934 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6935 local function a(t)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6936 if t.name=="failure"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6937 local a=t.tags[1];
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6938 local t=t:get_child_text("text");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6939 e:event("authentication-failure",{condition=a.name,text=t});
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6940 e:close();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6941 return false;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6942 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6943 local t,a=e.sasl_mechanism(t.name,r(t:get_text()));
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6944 if not t then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6945 e:event("authentication-failure",{condition=a});
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6946 e:close();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6947 return false;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6948 elseif t==true then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6949 e:event("authentication-success");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6950 e.authenticated=true
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6951 e:reopen();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6952 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6953 e:send(n.stanza("response",{xmlns=o}):text(s(t)));
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6954 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6955 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6956 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6957 e:hook("stream-features",d,300);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6958 e:hook("stream/"..o,a);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6959 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6960 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6961 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6962 package.preload['verse.plugins.bind']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6963 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6964 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6965 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
6966 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6967 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6968 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6969 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6970 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6971 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6972 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
6973 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6974 local t=require"verse";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6975 local o=require"util.jid";
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6976 local a="urn:ietf:params:xml:ns:xmpp-bind";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6977 function t.plugins.bind(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6978 local function i(i)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6979 if e.bound then return;end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6980 e:debug("Binding resource...");
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
6981 e:send_iq(t.iq({id="bind",type="set"}):tag("bind",{xmlns=a}):tag("resource"):text(e.resource),
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6982 function(t)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6983 if t.attr.type=="result"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6984 local t=t
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6985 :get_child("bind",a)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6986 :get_child_text("jid");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6987 e.username,e.host,e.resource=o.split(t);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6988 e.jid,e.bound=t,true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6989 e:event("bind-success",{jid=t});
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6990 elseif t.attr.type=="error"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6991 local a=t:child_with_name("error");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6992 local o,t,a=t:get_error();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6993 e:event("bind-failure",{error=t,text=a,type=o});
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6994 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6995 end);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6996 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
6997 e:hook("stream-features",i,200);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6998 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
6999 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7000 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7001 package.preload['verse.plugins.smacks']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7002 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7003 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7004 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
7005 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7006 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7007 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7008 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7009 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7010 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7011 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7012 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7013 local n=require"verse";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7014 local h=require"socket".gettime;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7015 local s="urn:xmpp:sm:3";
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7016 function n.plugins.smacks(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7017 local t=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7018 local a=nil;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7019 local r=nil;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7020 local i;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7021 local o=nil;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7022 local function l(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7023 if o and(t.attr.xmlns=="jabber:client"or not t.attr.xmlns)then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7024 o=o+1;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7025 e:debug("Increasing handled stanzas to %d for %s",o,t:top_tag());
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7026 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7027 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7028 local function d(a)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7029 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
7030 t[#t+1]=tostring(a);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7031 r=h();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7032 if not i then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7033 i=true;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7034 e:debug("Waiting to send ack request...");
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7035 n.add_task(1,function()
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7036 if#t==0 then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7037 i=false;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7038 return;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7039 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7040 local a=h()-r;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
7041 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
7042 return 1-a;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7043 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7044 e:debug("Time up, sending <r>...");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7045 i=false;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7046 e:send(n.stanza("r",{xmlns=s}));
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7047 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7048 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7049 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7050 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7051 local function u()
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7052 e:debug("smacks: connection lost");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7053 e.stream_management_supported=nil;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7054 if e.resumption_token then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7055 e:debug("smacks: have resumption token, reconnecting in 1s...");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7056 e.authenticated=nil;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7057 n.add_task(1,function()
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7058 e:connect(e.connect_host or e.host,e.connect_port or 5222);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7059 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7060 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7061 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7062 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7063 local function c()
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7064 e.resumption_token=nil;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7065 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7066 local function m(i)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7067 if i.name=="r"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7068 e:debug("Ack requested... acking %d handled stanzas",o);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7069 e:send(n.stanza("a",{xmlns=s,h=tostring(o)}));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7070 elseif i.name=="a"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7071 local o=tonumber(i.attr.h);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
7072 if o>a then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7073 local i=#t;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
7074 for a=a+1,o do
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7075 table.remove(t,1);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7076 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
7077 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
7078 a=o;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7079 elseif o<a then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
7080 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
7081 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7082 elseif i.name=="enabled"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7083 o=0;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7084 e.pre_smacks_features=nil;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7085 if i.attr.id then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7086 e.resumption_token=i.attr.id;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7087 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7088 elseif i.name=="resumed"then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7089 e.pre_smacks_features=nil;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7090 local o=tonumber(i.attr.h);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
7091 if o>a then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7092 local i=#t;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
7093 for a=a+1,o do
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7094 table.remove(t,1);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7095 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
7096 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
7097 a=o;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7098 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7099 for a=1,#t do
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7100 e:send(t[a]);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7101 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7102 t={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7103 e:debug("Resumed successfully");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7104 e:event("resumed");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7105 elseif i.name=="failed"then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7106 e.bound=nil
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7107 e.smacks=nil
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7108 a=nil
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7109 o=nil
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7110 t={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7111 local t=e.pre_smacks_features;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7112 e.pre_smacks_features=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7113 e:event("stream-features",t);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7114 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7115 e:warn("Don't know how to handle "..s.."/"..i.name);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7116 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7117 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7118 local function i()
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7119 if e.stream_management_supported and not e.smacks then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7120 e:debug("smacks: sending enable");
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7121 t={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7122 a=0;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7123 r=h();
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7124 e:send(n.stanza("enable",{xmlns=s,resume="true"}));
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7125 e.smacks=true;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7126 end
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 local function a(t)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7129 if t:get_child("sm",s)then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7130 e.pre_smacks_features=t;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7131 e.stream_management_supported=true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7132 if e.smacks and e.bound then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7133 e:debug("Resuming stream with %d handled stanzas",o);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7134 e:send(n.stanza("resume",{xmlns=s,
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7135 h=tostring(o),previd=e.resumption_token}));
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7136 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7137 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7138 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7139 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7140 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7141 e:hook("stream-features",a,250);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7142 e:hook("stream/"..s,m);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7143 e:hook("bind-success",i,1);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7144 e:hook("stanza",l);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7145 e:hook("outgoing",d);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7146 e:hook("closed",c,100);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7147 e:hook("disconnected",u,100);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7148 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7149 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7150 package.preload['verse.plugins.keepalive']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7151 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7152 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7153 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
7154 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7155 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7156 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7157 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7158 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7159 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7160 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7161 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7162 local t=require"verse";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7163 function t.plugins.keepalive(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7164 e.keepalive_timeout=e.keepalive_timeout or 300;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7165 t.add_task(e.keepalive_timeout,function()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7166 e.conn:write(" ");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7167 return e.keepalive_timeout;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7168 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7169 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7170 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7171 package.preload['verse.plugins.disco']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7172 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7173 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7174 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
7175 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7176 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7177 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7178 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7179 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7180 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7181 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7182 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7183 local t=require"verse";
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7184 local e=require("mime").b64;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7185 local e=require("util.hashes").sha1;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7186 local r=require"util.caps".calculate_hash;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7187 local n="http://jabber.org/protocol/caps";
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7188 local e="http://jabber.org/protocol/disco";
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7189 local o=e.."#info";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7190 local i=e.."#items";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7191 function t.plugins.disco(e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7192 e:add_plugin("presence");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7193 local s={
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7194 __index=function(a,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7195 local t={identities={},features={}};
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7196 if e=="identities"or e=="features"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7197 return a[false][e]
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7198 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7199 a[e]=t;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7200 return t;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7201 end,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7202 };
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7203 local a={
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7204 __index=function(t,a)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7205 local e={};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7206 t[a]=e;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7207 return e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7208 end,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7209 };
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7210 e.disco={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7211 cache={},
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7212 info=setmetatable({
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7213 [false]={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7214 identities={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7215 {category='client',type='pc',name='Verse'},
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7216 },
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7217 features={
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7218 [n]=true,
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7219 [o]=true,
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
7220 [i]=true,
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7221 },
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7222 },
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7223 },s);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7224 items=setmetatable({[false]={}},a);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7225 };
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7226 e.caps={}
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7227 e.caps.node='http://code.matthewwild.co.uk/verse/'
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7228 local function h(a)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7229 local i=e.disco.info[a or false];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7230 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
7231 i=e.disco.info[false];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7232 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7233 local n,i=i.identities,i.features
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7234 local e=t.stanza("query",{
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7235 xmlns=o,
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7236 node=a,
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7237 });
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7238 for a,t in pairs(n)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7239 e:tag('identity',t):up()
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7240 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7241 for t in pairs(i)do
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7242 e:tag('feature',{var=t}):up()
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7243 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7244 return e;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7245 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7246 setmetatable(e.caps,{
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7247 __call=function(...)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7248 local a=r(h())
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7249 e.caps.hash=a;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7250 return t.stanza('c',{
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7251 xmlns=n,
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7252 hash='sha-1',
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7253 node=e.caps.node,
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7254 ver=a
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7255 })
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7256 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7257 })
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7258 function e:set_identity(a,t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7259 self.disco.info[t or false].identities={a};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7260 e:event("disco-info-changed");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7261 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7262 function e:add_identity(a,t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7263 local t=self.disco.info[t or false].identities;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7264 t[#t+1]=a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7265 e:event("disco-info-changed");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7266 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7267 function e:add_disco_feature(t,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7268 local t=t.var or t;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7269 self.disco.info[a or false].features[t]=true;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7270 e:event("disco-info-changed");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7271 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7272 function e:remove_disco_feature(t,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7273 local t=t.var or t;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7274 self.disco.info[a or false].features[t]=nil;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7275 e:event("disco-info-changed");
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7276 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7277 function e:add_disco_item(t,e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7278 local e=self.disco.items[e or false];
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7279 e[#e+1]=t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7280 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7281 function e:remove_disco_item(a,e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7282 local e=self.disco.items[e or false];
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7283 for t=#e,1,-1 do
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7284 if e[t]==a then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7285 table.remove(e,t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7286 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7287 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7288 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7289 function e:jid_has_identity(e,a,t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7290 local o=self.disco.cache[e];
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7291 if not o then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7292 return nil,"no-cache";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7293 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7294 local e=self.disco.cache[e].identities;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7295 if t then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7296 return e[a.."/"..t]or false;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7297 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7298 for e in pairs(e)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7299 if e:match("^(.*)/")==a then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7300 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7301 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7302 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7303 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7304 function e:jid_supports(e,t)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7305 local e=self.disco.cache[e];
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7306 if not e or not e.features then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7307 return nil,"no-cache";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7308 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7309 return e.features[t]or false;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7310 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7311 function e:get_local_services(a,o)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7312 local e=self.disco.cache[self.host];
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7313 if not(e)or not(e.items)then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7314 return nil,"no-cache";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7315 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7316 local t={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7317 for i,e in ipairs(e.items)do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7318 if self:jid_has_identity(e.jid,a,o)then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7319 table.insert(t,e.jid);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7320 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7321 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7322 return t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7323 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7324 function e:disco_local_services(a)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7325 self:disco_items(self.host,nil,function(t)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7326 if not t then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7327 return a({});
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7328 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7329 local e=0;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7330 local function o()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7331 e=e-1;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7332 if e==0 then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7333 return a(t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7334 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7335 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7336 for a,t in ipairs(t)do
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7337 if t.jid then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7338 e=e+1;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7339 self:disco_info(t.jid,nil,o);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7340 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7341 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7342 if e==0 then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7343 return a(t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7344 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7345 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7346 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7347 function e:disco_info(e,a,h)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7348 local t=t.iq({to=e,type="get"})
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7349 :tag("query",{xmlns=o,node=a});
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7350 self:send_iq(t,function(t)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7351 if t.attr.type=="error"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7352 return h(nil,t:get_error());
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7353 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7354 local n,s,i={},{},{};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7355 for e in t:get_child("query",o):childtags()do
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7356 if e.name=="identity"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7357 n[e.attr.category.."/"..e.attr.type]=e.attr.name or true;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7358 elseif e.name=="feature"then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7359 s[e.attr.var]=true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7360 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7361 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7362 for t in t:get_child("query",o):childtags("x","jabber:x:data")do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7363 local e=t:get_child_with_attr("field",nil,"var","FORM_TYPE");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7364 local e=e and e:get_child_text("value");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7365 if e then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7366 i[e]=t;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7367 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7368 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7369 if not self.disco.cache[e]then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7370 self.disco.cache[e]={nodes={}};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7371 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7372 if a then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7373 if not self.disco.cache[e].nodes[a]then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7374 self.disco.cache[e].nodes[a]={nodes={}};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7375 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7376 self.disco.cache[e].nodes[a].identities=n;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7377 self.disco.cache[e].nodes[a].features=s;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7378 self.disco.cache[e].nodes[a].extended=i;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7379 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7380 self.disco.cache[e].identities=n;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7381 self.disco.cache[e].features=s;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7382 self.disco.cache[e].extended=i;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7383 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7384 return h(self.disco.cache[e]);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7385 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7386 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7387 function e:disco_items(a,o,n)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7388 local t=t.iq({to=a,type="get"})
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7389 :tag("query",{xmlns=i,node=o});
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7390 self:send_iq(t,function(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7391 if e.attr.type=="error"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7392 return n(nil,e:get_error());
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7393 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7394 local t={};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7395 for e in e:get_child("query",i):childtags()do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7396 if e.name=="item"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7397 table.insert(t,{
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7398 name=e.attr.name;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7399 jid=e.attr.jid;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7400 node=e.attr.node;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7401 });
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7402 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7403 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7404 if not self.disco.cache[a]then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7405 self.disco.cache[a]={nodes={}};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7406 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7407 if o then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7408 if not self.disco.cache[a].nodes[o]then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7409 self.disco.cache[a].nodes[o]={nodes={}};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7410 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7411 self.disco.cache[a].nodes[o].items=t;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7412 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7413 self.disco.cache[a].items=t;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7414 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7415 return n(t);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7416 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7417 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7418 e:hook("iq/"..o,function(a)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7419 local o=a.tags[1];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7420 if a.attr.type=='get'and o.name=="query"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7421 local o=h(o.attr.node);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7422 local t=t.reply(a):add_child(o);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7423 e:send(t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7424 return true
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7425 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7426 end);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7427 e:hook("iq/"..i,function(o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7428 local a=o.tags[1];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7429 if o.attr.type=='get'and a.name=="query"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7430 local n=e.disco.items[a.attr.node or false];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7431 local t=t.reply(o):tag('query',{
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7432 xmlns=i,
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7433 node=a.attr.node
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7434 })
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7435 for a=1,#n do
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7436 t:tag('item',n[a]):up()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7437 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7438 e:send(t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7439 return true
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7440 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7441 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7442 local t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7443 e:hook("ready",function()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7444 if t then return;end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7445 t=true;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7446 local function a(a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7447 local t=e.disco.cache[a];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7448 if t then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7449 for t in pairs(t.identities)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7450 local t,o=t:match("^(.*)/(.*)$");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7451 e:event("disco/service-discovered/"..t,{
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7452 type=o,jid=a;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7453 });
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7454 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7455 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7456 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7457 e:disco_info(e.host,nil,function()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7458 a(e.host);
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7459 end);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7460 e:disco_local_services(function(t)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7461 for o,t in ipairs(t)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7462 a(t.jid);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7463 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7464 e:event("ready");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7465 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7466 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7467 end,50);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7468 e:hook("presence-out",function(t)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7469 t:remove_children("c",n);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7470 t:reset():add_child(e:caps()):reset();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7471 end,10);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7472 e:hook("disco-info-changed",function()
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7473 e:resend_presence();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7474 end);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7475 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7476 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7477 package.preload['verse.plugins.version']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7478 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7479 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7480 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
7481 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7482 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7483 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7484 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7485 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7486 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7487 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7488 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7489 local o=require"verse";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7490 local a="jabber:iq:version";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7491 local function i(t,e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7492 t.name=e.name;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7493 t.version=e.version;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7494 t.platform=e.platform;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7495 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7496 function o.plugins.version(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7497 e.version={set=i};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7498 e:hook("iq/"..a,function(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7499 if t.attr.type~="get"then return;end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7500 local t=o.reply(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7501 :tag("query",{xmlns=a});
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7502 if e.version.name then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7503 t:tag("name"):text(tostring(e.version.name)):up();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7504 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7505 if e.version.version then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7506 t:tag("version"):text(tostring(e.version.version)):up()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7507 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7508 if e.version.platform then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7509 t:tag("os"):text(e.version.platform);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7510 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7511 e:send(t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7512 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7513 end);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7514 function e:query_version(i,t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7515 t=t or function(e)return self:event("version/response",e);end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7516 self:send_iq(o.iq({type="get",to=i})
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7517 :tag("query",{xmlns=a}),
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7518 function(o)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7519 if o.attr.type=="result"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7520 local e=o:get_child("query",a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7521 local a=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
7522 local o=e and e:get_child_text("version");
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7523 local e=e and e:get_child_text("os");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7524 t({
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7525 name=a;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7526 version=o;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7527 platform=e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7528 });
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7529 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7530 local e,a,o=o:get_error();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7531 t({
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7532 error=true;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7533 condition=a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7534 text=o;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7535 type=e;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7536 });
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7537 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7538 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7539 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7540 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7541 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7542 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7543 package.preload['verse.plugins.ping']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7544 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7545 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7546 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
7547 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7548 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7549 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7550 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7551 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7552 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7553 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7554 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7555 local t=require"verse";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7556 local o=require"socket".gettime;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7557 local s=require"util.id".short;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7558 local n="urn:xmpp:ping";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7559 function t.plugins.ping(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7560 function e:ping(a,i)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7561 local h=o();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7562 local s=s();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7563 local t=t.iq{id=s,to=a,type="get"}:tag("ping",{xmlns=n});
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7564 e:send_iq(t,
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7565 function(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7566 if e.attr.type=="error"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7567 local o,e,t=e:get_error();
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7568 if e~="service-unavailable"and e~="feature-not-implemented"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7569 i(nil,a,{type=o,condition=e,text=t});
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7570 return;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7571 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7572 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7573 i(o()-h,a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7574 end);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7575 return s;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7576 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7577 e:hook("iq/"..n,function(a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7578 return e:send(t.reply(a));
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7579 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7580 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7581 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7582 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7583 package.preload['verse.plugins.uptime']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7584 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7585 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7586 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
7587 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7588 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7589 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7590 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7591 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7592 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7593 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7594 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7595 local o=require"verse";
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
7596 local t="jabber:iq:last";
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7597 local function a(e,t)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7598 e.starttime=t.starttime;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7599 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7600 function o.plugins.uptime(e)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
7601 e.uptime={set=a};
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
7602 e:hook("iq/"..t,function(a)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
7603 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
7604 local t=o.reply(a)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
7605 :tag("query",{seconds=tostring(os.difftime(os.time(),e.uptime.starttime)),xmlns=t});
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7606 e:send(t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7607 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7608 end);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
7609 function e:query_uptime(i,a)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
7610 a=a or function(t)return e:event("uptime/response",t);end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7611 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
7612 :tag("query",{xmlns=t}),
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7613 function(e)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
7614 local t=e:get_child("query",t);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7615 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
7616 local e=tonumber(t.attr.seconds);
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
7617 a({
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7618 seconds=e or nil;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7619 });
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7620 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7621 local o,t,e=e:get_error();
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
7622 a({
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7623 error=true;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7624 condition=t;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7625 text=e;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7626 type=o;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7627 });
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7628 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7629 end);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7630 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7631 return true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7632 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7633 end)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7634 package.preload['verse.plugins.time']=(function(...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7635 local _ENV=_ENV;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7636 local function e(t,...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7637 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
7638 package.loaded[t]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7639 for t=1,select("#",...)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7640 (select(t,...))(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7641 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7642 _ENV=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7643 _M=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7644 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7645 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7646 local e=require"verse";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7647 local i=require"util.datetime";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7648 local o="urn:xmpp:time";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7649 function e.plugins.time(t)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7650 function t:query_time(a,t)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7651 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
7652 self:send_iq(e.iq({type="get",to=a})
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7653 :tag("time",{xmlns=o}),
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7654 function(a)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7655 if a.attr.type=="result"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7656 local e=a:get_child("time",o);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7657 local e={
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7658 tzo=e:get_child_text("tzo");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7659 utc=e:get_child_text("utc");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7660 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7661 if e.utc then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7662 e.timestamp=i.parse(e.utc);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7663 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7664 t(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7665 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7666 local e,a,o=a:get_error();
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7667 t({
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7668 error=true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7669 condition=a;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7670 text=o;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7671 type=e;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7672 });
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7673 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7674 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7675 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7676 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7677 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7678 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7679 package.preload['verse.plugins.blocking']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7680 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7681 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7682 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
7683 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7684 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7685 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7686 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7687 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7688 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7689 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7690 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7691 local o=require"verse";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7692 local a="urn:xmpp:blocking";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7693 function o.plugins.blocking(e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7694 e.blocking={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7695 function e.blocking:block_jid(i,t)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7696 e:send_iq(o.iq{type="set"}
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7697 :tag("block",{xmlns=a})
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7698 :tag("item",{jid=i})
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7699 ,function()return t and t(true);end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7700 ,function()return t and t(false);end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7701 );
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7702 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7703 function e.blocking:unblock_jid(i,t)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7704 e:send_iq(o.iq{type="set"}
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7705 :tag("unblock",{xmlns=a})
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7706 :tag("item",{jid=i})
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7707 ,function()return t and t(true);end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7708 ,function()return t and t(false);end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7709 );
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7710 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7711 function e.blocking:unblock_all_jids(t)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7712 e:send_iq(o.iq{type="set"}
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7713 :tag("unblock",{xmlns=a})
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7714 ,function()return t and t(true);end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7715 ,function()return t and t(false);end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7716 );
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7717 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7718 function e.blocking:get_blocked_jids(t)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7719 e:send_iq(o.iq{type="get"}
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7720 :tag("blocklist",{xmlns=a})
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7721 ,function(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7722 local a=e:get_child("blocklist",a);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7723 if not a then return t and t(false);end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7724 local e={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7725 for t in a:childtags()do
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7726 e[#e+1]=t.attr.jid;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7727 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7728 return t and t(e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7729 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7730 ,function(e)return t and t(false);end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7731 );
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7732 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7733 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7734 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7735 package.preload['verse.plugins.jingle']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7736 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7737 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7738 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
7739 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7740 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7741 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7742 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7743 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7744 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7745 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7746 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7747 local a=require"verse";
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7748 local e=require"util.timer";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7749 local o=require"util.id".short;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7750 local i="urn:xmpp:jingle:1";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7751 local h="urn:xmpp:jingle:errors:1";
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7752 local t={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7753 t.__index=t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7754 local e={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7755 local e={};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7756 function a.plugins.jingle(e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7757 e:hook("ready",function()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7758 e:add_disco_feature(i);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7759 end,10);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7760 function e:jingle(i)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7761 return a.eventable(setmetatable(base or{
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7762 role="initiator";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7763 peer=i;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7764 sid=o();
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7765 stream=e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7766 },t));
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7767 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7768 function e:register_jingle_transport(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7769 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7770 function e:register_jingle_content_type(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7771 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7772 local function u(n)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7773 local s=n:get_child("jingle",i);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7774 local o=s.attr.sid;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7775 local r=s.attr.action;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7776 local o=e:event("jingle/"..o,n);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7777 if o==true then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7778 e:send(a.reply(n));
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7779 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7780 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7781 if r~="session-initiate"then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7782 local t=a.error_reply(n,"cancel","item-not-found")
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7783 :tag("unknown-session",{xmlns=h}):up();
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7784 e:send(t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7785 return;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7786 end
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7787 local l=s.attr.sid;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7788 local o=a.eventable{
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7789 role="receiver";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7790 peer=n.attr.from;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7791 sid=l;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7792 stream=e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7793 };
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7794 setmetatable(o,t);
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7795 local h;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7796 local r,d;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7797 for t in s:childtags()do
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7798 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
7799 local i=t:child_with_name("description");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7800 local a=i.attr.xmlns;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7801 if a then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7802 local e=e:event("jingle/content/"..a,o,i);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7803 if e then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7804 r=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7805 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7806 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7807 local a=t:child_with_name("transport");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7808 local i=a.attr.xmlns;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7809 d=e:event("jingle/transport/"..i,o,a);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7810 if r and d then
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7811 h=t;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7812 break;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7813 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7814 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7815 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7816 if not r then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7817 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
7818 return true;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7819 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7820 if not d then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7821 e:send(a.error_reply(n,"cancel","feature-not-implemented","The specified transport is not supported"));
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7822 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7823 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7824 e:send(a.reply(n));
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7825 o.content_tag=h;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7826 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
7827 o.content,o.transport=r,d;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7828 function o:decline()
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7829 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7830 e:hook("jingle/"..l,function(e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7831 if e.attr.from~=o.peer then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7832 return false;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7833 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7834 local e=e:get_child("jingle",i);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7835 return o:handle_command(e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7836 end);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7837 e:event("jingle",o);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7838 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7839 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7840 function t:handle_command(a)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7841 local t=a.attr.action;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7842 e:debug("Handling Jingle command: %s",t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7843 if t=="session-terminate"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7844 self:destroy();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7845 elseif t=="session-accept"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7846 self:handle_accepted(a);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7847 elseif t=="transport-info"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7848 e:debug("Handling transport-info");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7849 self.transport:info_received(a);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7850 elseif t=="transport-replace"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7851 e:error("Peer wanted to swap transport, not implemented");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7852 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7853 e:warn("Unhandled Jingle command: %s",t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7854 return nil;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7855 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7856 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7857 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7858 function t:send_command(e,o,t)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7859 local e=a.iq({to=self.peer,type="set"})
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7860 :tag("jingle",{
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7861 xmlns=i,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7862 sid=self.sid,
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7863 action=e,
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7864 initiator=self.role=="initiator"and self.stream.jid or nil,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7865 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
7866 }):add_child(o);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7867 if not t then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7868 self.stream:send(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7869 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7870 self.stream:send_iq(e,t);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7871 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7872 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7873 function t:accept(t)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7874 local a=a.iq({to=self.peer,type="set"})
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7875 :tag("jingle",{
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7876 xmlns=i,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7877 sid=self.sid,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7878 action="session-accept",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7879 responder=e.jid,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7880 })
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7881 :tag("content",{creator=self.creator,name=self.name});
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7882 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
7883 a:add_child(o);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7884 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
7885 a:add_child(t);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7886 local t=self;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7887 e:send_iq(a,function(a)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7888 if a.attr.type=="error"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7889 local a,t,a=a:get_error();
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7890 e:error("session-accept rejected: %s",t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7891 return false;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7892 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7893 t.transport:connect(function(a)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7894 e:warn("CONNECTED (receiver)!!!");
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7895 t.state="active";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7896 t:event("connected",a);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7897 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7898 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7899 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7900 e:hook("iq/"..i,u);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7901 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7902 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7903 function t:offer(t,o)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7904 local e=a.iq({to=self.peer,type="set"})
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7905 :tag("jingle",{xmlns=i,action="session-initiate",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7906 initiator=self.stream.jid,sid=self.sid});
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7907 e:tag("content",{creator=self.role,name=t});
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7908 local t=self.stream:event("jingle/describe/"..t,o);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7909 if not t then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7910 return false,"Unknown content type";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7911 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7912 e:add_child(t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7913 local t=self.stream:event("jingle/transport/".."urn:xmpp:jingle:transports:s5b:1",self);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7914 self.transport=t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7915 e:add_child(t:generate_initiate());
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7916 self.stream:debug("Hooking %s","jingle/"..self.sid);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7917 self.stream:hook("jingle/"..self.sid,function(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7918 if e.attr.from~=self.peer then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7919 return false;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7920 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7921 local e=e:get_child("jingle",i);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7922 return self:handle_command(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7923 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7924 self.stream:send_iq(e,function(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7925 if e.attr.type=="error"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7926 self.state="terminated";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7927 local t,a,e=e:get_error();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7928 return self:event("error",{type=t,condition=a,text=e});
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7929 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7930 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7931 self.state="pending";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7932 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7933 function t:terminate(e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
7934 local e=a.stanza("reason"):tag(e or"success");
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7935 self:send_command("session-terminate",e,function(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7936 self.state="terminated";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7937 self.transport:disconnect();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7938 self:destroy();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7939 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7940 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7941 function t:destroy()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7942 self:event("terminated");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7943 self.stream:unhook("jingle/"..self.sid,self.handle_command);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7944 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7945 function t:handle_accepted(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7946 local e=e:child_with_name("transport");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7947 self.transport:handle_accepted(e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7948 self.transport:connect(function(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7949 self.stream:debug("CONNECTED (initiator)!")
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7950 self.state="active";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7951 self:event("connected",e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7952 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7953 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7954 function t:set_source(a,o)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7955 local function t()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7956 local e,i=a();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7957 if e and e~=""then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7958 self.transport.conn:send(e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7959 elseif e==""then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7960 return t();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7961 elseif e==nil then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7962 if o then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7963 self:terminate();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7964 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7965 self.transport.conn:unhook("drained",t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7966 a=nil;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7967 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7968 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7969 self.transport.conn:hook("drained",t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7970 t();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7971 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7972 function t:set_sink(t)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7973 self.transport.conn:hook("incoming-raw",t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7974 self.transport.conn:hook("disconnected",function(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7975 self.stream:debug("Closing sink...");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7976 local e=e.reason;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7977 if e=="closed"then e=nil;end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7978 t(nil,e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7979 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7980 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7981 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
7982 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
7983 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7984 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7985 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
7986 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7987 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7988 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7989 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7990 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7991 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7992 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
7993 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7994 local o=require"verse";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7995 local a=require"ltn12";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7996 local n=package.config:sub(1,1);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7997 local t="urn:xmpp:jingle:apps:file-transfer:4";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7998 function o.plugins.jingle_ft(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
7999 e:hook("ready",function()
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8000 e:add_disco_feature(t);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8001 end,10);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8002 local i={type="file"};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8003 function i:generate_accept(t,e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8004 if e and e.save_file then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8005 self.jingle:hook("connected",function()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8006 local e=a.sink.file(io.open(e.save_file,"w+"));
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8007 self.jingle:set_sink(e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8008 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8009 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8010 return t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8011 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8012 local i={__index=i};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8013 e:hook("jingle/content/"..t,function(t,e)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8014 local e=e:get_child("file");
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8015 local e={
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8016 name=e:get_child_text("name");
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8017 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
8018 desc=e:get_child_text("desc");
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8019 date=e:get_child_text("date");
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8020 };
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8021 return setmetatable({jingle=t,file=e},i);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8022 end);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8023 e:hook("jingle/describe/file",function(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8024 local a;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8025 if e.timestamp then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8026 a=os.date("!%Y-%m-%dT%H:%M:%SZ",e.timestamp);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8027 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8028 return o.stanza("description",{xmlns=t})
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8029 :tag("file")
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8030 :tag("name"):text(e.filename):up()
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8031 :tag("size"):text(tostring(e.size)):up()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8032 :tag("date"):text(a):up()
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8033 :tag("desc"):text(e.description):up()
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8034 :up();
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8035 end);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8036 function e:send_file(i,t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8037 local e,o=io.open(t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8038 if not e then return e,o;end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8039 local o=e:seek("end",0);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8040 e:seek("set",0);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8041 local a=a.source.file(e);
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8042 local e=self:jingle(i);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8043 e:offer("file",{
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8044 filename=t:match("[^"..n.."]+$");
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8045 size=o;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8046 });
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8047 e:hook("connected",function()
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8048 e:set_source(a,true);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8049 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8050 return e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8051 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8052 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8053 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8054 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
8055 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8056 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8057 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
8058 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8059 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8060 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8061 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8062 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8063 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8064 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8065 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8066 local t=require"verse";
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8067 local o="urn:xmpp:jingle:transports:s5b:1";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8068 local l="http://jabber.org/protocol/bytestreams";
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8069 local h=require"util.hashes".sha1;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8070 local d=require"util.id".short;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8071 local function r(e,s)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8072 local function n()
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8073 e:unhook("connected",n);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8074 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8075 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8076 local function o(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8077 e:unhook("incoming-raw",o);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8078 if t:sub(1,2)~="\005\000"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8079 return e:event("error","connection-failure");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8080 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8081 e:event("connected");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8082 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8083 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8084 local function i(a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8085 e:unhook("incoming-raw",i);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8086 if a~="\005\000"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8087 local t="version-mismatch";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8088 if a:sub(1,1)=="\005"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8089 t="authentication-failure";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8090 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8091 return e:event("error",t);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8092 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8093 e:send(string.char(5,1,0,3,#s)..s.."\0\0");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8094 e:hook("incoming-raw",o,100);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8095 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8096 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8097 e:hook("connected",n,200);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8098 e:hook("incoming-raw",i,100);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8099 e:send("\005\001\000");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8100 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8101 local function n(a,e,i)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8102 local e=t.new(nil,{
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8103 streamhosts=e,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8104 current_host=0;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8105 });
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8106 local function t(o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8107 if o then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8108 return a(nil,o.reason);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8109 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8110 if e.current_host<#e.streamhosts then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8111 e.current_host=e.current_host+1;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8112 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
8113 local a,t=e:connect(
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8114 e.streamhosts[e.current_host].host,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8115 e.streamhosts[e.current_host].port
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8116 );
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8117 if not a then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8118 e:debug("Error connecting to proxy (%s:%s): %s",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8119 e.streamhosts[e.current_host].host,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8120 e.streamhosts[e.current_host].port,
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8121 t
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8122 );
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8123 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8124 e:debug("Connecting...");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8125 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8126 r(e,i);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8127 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8128 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8129 e:unhook("disconnected",t);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8130 return a(nil);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8131 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8132 e:hook("disconnected",t,100);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8133 e:hook("connected",function()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8134 e:unhook("disconnected",t);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8135 a(e.streamhosts[e.current_host],e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8136 end,100);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8137 t();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8138 return e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8139 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8140 function t.plugins.jingle_s5b(e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8141 e:hook("ready",function()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8142 e:add_disco_feature(o);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8143 end,10);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8144 local a={};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8145 function a:generate_initiate()
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8146 self.s5b_sid=d();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8147 local a=t.stanza("transport",{xmlns=o,
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8148 mode="tcp",sid=self.s5b_sid});
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8149 local t=0;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8150 for o,i in pairs(e.proxy65.available_streamhosts)do
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8151 t=t+1;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8152 a:tag("candidate",{jid=o,host=i.host,
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8153 port=i.port,cid=o,priority=t,type="proxy"}):up();
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8154 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8155 e:debug("Have %d proxies",t)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8156 return a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8157 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8158 function a:generate_accept(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8159 local a={};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8160 self.s5b_peer_candidates=a;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8161 self.s5b_mode=e.attr.mode or"tcp";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8162 self.s5b_sid=e.attr.sid or self.jingle.sid;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8163 for e in e:childtags()do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8164 a[e.attr.cid]={
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8165 type=e.attr.type;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8166 jid=e.attr.jid;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8167 host=e.attr.host;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8168 port=tonumber(e.attr.port)or 0;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8169 priority=tonumber(e.attr.priority)or 0;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8170 cid=e.attr.cid;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8171 };
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8172 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8173 local e=t.stanza("transport",{xmlns=o});
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8174 return e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8175 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8176 function a:connect(i)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8177 e:warn("Connecting!");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8178 local a={};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8179 for t,e in pairs(self.s5b_peer_candidates or{})do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8180 a[#a+1]=e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8181 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8182 if#a>0 then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8183 self.connecting_peer_candidates=true;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8184 local function s(a,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8185 self.jingle:send_command("transport-info",t.stanza("content",{creator=self.creator,name=self.name})
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8186 :tag("transport",{xmlns=o,sid=self.s5b_sid})
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8187 :tag("candidate-used",{cid=a.cid}));
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8188 self.onconnect_callback=i;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8189 self.conn=e;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8190 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8191 local e=h(self.s5b_sid..self.peer..e.jid,true);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8192 n(s,a,e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8193 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8194 e:warn("Actually, I'm going to wait for my peer to tell me its streamhost...");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8195 self.onconnect_callback=i;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8196 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8197 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8198 function a:info_received(a)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8199 e:warn("Info received");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8200 local s=a:child_with_name("content");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8201 local i=s:child_with_name("transport");
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8202 if i:get_child("candidate-used")and not self.connecting_peer_candidates then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8203 local a=i:child_with_name("candidate-used");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8204 if a then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8205 local function i(i,e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8206 if self.jingle.role=="initiator"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8207 self.jingle.stream:send_iq(t.iq({to=i.jid,type="set"})
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8208 :tag("query",{xmlns=l,sid=self.s5b_sid})
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8209 :tag("activate"):text(self.jingle.peer),function(i)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8210 if i.attr.type=="result"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8211 self.jingle:send_command("transport-info",t.stanza("content",s.attr)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8212 :tag("transport",{xmlns=o,sid=self.s5b_sid})
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8213 :tag("activated",{cid=a.attr.cid}));
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8214 self.conn=e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8215 self.onconnect_callback(e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8216 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8217 self.jingle.stream:error("Failed to activate bytestream");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8218 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8219 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8220 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8221 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8222 self.jingle.stream:debug("CID: %s",self.jingle.stream.proxy65.available_streamhosts[a.attr.cid]);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8223 local t={
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8224 self.jingle.stream.proxy65.available_streamhosts[a.attr.cid];
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8225 };
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8226 local e=h(self.s5b_sid..e.jid..self.peer,true);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8227 n(i,t,e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8228 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8229 elseif i:get_child("activated")then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8230 self.onconnect_callback(self.conn);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8231 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8232 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8233 function a:disconnect()
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8234 if self.conn then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8235 self.conn:close();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8236 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8237 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8238 function a:handle_accepted(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8239 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8240 local t={__index=a};
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8241 e:hook("jingle/transport/"..o,function(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8242 return setmetatable({
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8243 role=e.role,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8244 peer=e.peer,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8245 stream=e.stream,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8246 jingle=e,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8247 },t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8248 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8249 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8250 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8251 package.preload['verse.plugins.proxy65']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8252 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8253 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8254 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
8255 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8256 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8257 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8258 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8259 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8260 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8261 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8262 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8263 local a=require"verse";
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8264 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
8265 local r=require"util.hashes".sha1;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8266 local n={};
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8267 n.__index=n;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8268 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
8269 local s;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8270 function a.plugins.proxy65(t)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8271 t.proxy65=setmetatable({stream=t},n);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8272 t.proxy65.available_streamhosts={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8273 local e=0;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8274 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
8275 if o.type=="bytestreams"then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8276 e=e+1;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8277 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
8278 :tag("query",{xmlns=i}),function(a)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8279 e=e-1;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8280 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
8281 local e=a:get_child("query",i)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8282 :get_child("streamhost").attr;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8283 t.proxy65.available_streamhosts[e.jid]={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8284 jid=e.jid;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8285 host=e.host;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8286 port=tonumber(e.port);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8287 };
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8288 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8289 if e==0 then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8290 t:event("proxy65/discovered-proxies",t.proxy65.available_streamhosts);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8291 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8292 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8293 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8294 end);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8295 t:hook("iq/"..i,function(o)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8296 local e=a.new(nil,{
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8297 initiator_jid=o.attr.from,
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8298 streamhosts={},
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8299 current_host=0;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8300 });
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8301 for t in o.tags[1]:childtags()do
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8302 if t.name=="streamhost"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8303 table.insert(e.streamhosts,t.attr);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8304 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8305 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8306 local function i()
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8307 if e.current_host<#e.streamhosts then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8308 e.current_host=e.current_host+1;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8309 e:connect(
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8310 e.streamhosts[e.current_host].host,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8311 e.streamhosts[e.current_host].port
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8312 );
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8313 s(t,e,o.tags[1].attr.sid,o.attr.from,t.jid);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8314 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8315 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8316 e:unhook("disconnected",i);
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8317 t:send(a.error_reply(o,"cancel","item-not-found"));
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8318 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8319 function e:accept()
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8320 e:hook("disconnected",i,100);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8321 e:hook("connected",function()
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8322 e:unhook("disconnected",i);
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8323 local e=a.reply(o)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8324 :tag("query",o.tags[1].attr)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8325 :tag("streamhost-used",{jid=e.streamhosts[e.current_host].jid});
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8326 t:send(e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8327 end,100);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8328 i();
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8329 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8330 function e:refuse()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8331 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8332 t:event("proxy65/request",e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8333 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8334 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8335 function n:new(t,n)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8336 local e=a.new(nil,{
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8337 target_jid=t;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8338 bytestream_sid=h();
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8339 });
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8340 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
8341 :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
8342 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
8343 o:tag("streamhost",e):up();
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8344 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8345 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
8346 if o.attr.type=="error"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8347 local o,t,a=o:get_error();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8348 e:event("connection-failed",{conn=e,type=o,condition=t,text=a});
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8349 else
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8350 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
8351 e.streamhost_jid=o.attr.jid;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8352 local o,h;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8353 for a,t in ipairs(n or self.proxies)do
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8354 if t.jid==e.streamhost_jid then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8355 o,h=t.host,t.port;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8356 break;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8357 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8358 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8359 e:connect(o,h);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8360 local function o()
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8361 e:unhook("connected",o);
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8362 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
8363 :tag("query",{xmlns=i,sid=e.bytestream_sid})
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8364 :tag("activate"):text(t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8365 self.stream:send_iq(t,function(t)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8366 if t.attr.type=="result"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8367 e:event("connected",e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8368 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8369 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8370 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8371 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8372 e:hook("connected",o,100);
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8373 s(self.stream,e,e.bytestream_sid,self.stream.jid,t);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8374 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8375 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8376 return e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8377 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8378 function s(i,e,t,a,o)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8379 local i=r(t..a..o);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8380 local function s()
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8381 e:unhook("connected",s);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8382 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8383 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8384 local function n(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8385 e:unhook("incoming-raw",n);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8386 if t:sub(1,2)~="\005\000"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8387 return e:event("error","connection-failure");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8388 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8389 e:event("connected");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8390 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8391 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8392 local function a(o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8393 e:unhook("incoming-raw",a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8394 if o~="\005\000"then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8395 local t="version-mismatch";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8396 if o:sub(1,1)=="\005"then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8397 t="authentication-failure";
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 return e:event("error",t);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8400 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8401 e:send(string.char(5,1,0,3,#i)..i.."\0\0");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8402 e:hook("incoming-raw",n,100);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8403 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8404 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8405 e:hook("connected",s,200);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8406 e:hook("incoming-raw",a,100);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8407 e:send("\005\001\000");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8408 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8409 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8410 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
8411 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8412 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8413 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
8414 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8415 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8416 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8417 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8418 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8419 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8420 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8421 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8422 local e=require"verse";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8423 local i=require"util.encodings".base64;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8424 local s=require"util.id".short;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8425 local n="urn:xmpp:jingle:transports:ibb:1";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8426 local o="http://jabber.org/protocol/ibb";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8427 assert(i.encode("This is a test.")=="VGhpcyBpcyBhIHRlc3Qu","Base64 encoding failed");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8428 assert(i.decode("VGhpcyBpcyBhIHRlc3Qu")=="This is a test.","Base64 decoding failed");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8429 local a={};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8430 local h={__index=a};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8431 local function r(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8432 local t=setmetatable({stream=t},h)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8433 t=e.eventable(t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8434 return t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8435 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8436 function a:initiate(t,e,a)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8437 self.block=2048;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8438 self.stanza=a or'iq';
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8439 self.peer=t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8440 self.sid=e or tostring(self):match("%x+$");
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8441 self.iseq=0;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8442 self.oseq=0;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8443 local e=function(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8444 return self:feed(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8445 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8446 self.feeder=e;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8447 print("Hooking incoming IQs");
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8448 local t=self.stream;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8449 t:hook("iq/"..o,e)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8450 if a=="message"then
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8451 t:hook("message",e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8452 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8453 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8454 function a:open(t)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8455 self.stream:send_iq(e.iq{to=self.peer,type="set"}
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8456 :tag("open",{
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8457 xmlns=o,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8458 ["block-size"]=self.block,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8459 sid=self.sid,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8460 stanza=self.stanza
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8461 })
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8462 ,function(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8463 if t then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8464 if e.attr.type~="error"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8465 t(true)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8466 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8467 t(false,e:get_error())
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8468 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8469 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8470 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8471 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8472 function a:send(n)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8473 local a=self.stanza;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8474 local t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8475 if a=="iq"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8476 t=e.iq{type="set",to=self.peer}
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8477 elseif a=="message"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8478 t=e.message{to=self.peer}
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8479 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8480 local e=self.oseq;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8481 self.oseq=e+1;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8482 t:tag("data",{xmlns=o,sid=self.sid,seq=e})
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8483 :text(i.encode(n));
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8484 if a=="iq"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8485 self.stream:send_iq(t,function(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8486 self:event(e.attr.type=="result"and"drained"or"error");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8487 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8488 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8489 stream:send(t)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8490 self:event("drained");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8491 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8492 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8493 function a:feed(t)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8494 if t.attr.from~=self.peer then return end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8495 local a=t[1];
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8496 if a.attr.sid~=self.sid then return end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8497 local n;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8498 if a.name=="open"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8499 self:event("connected");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8500 self.stream:send(e.reply(t))
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8501 return true
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8502 elseif a.name=="data"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8503 local o=t:get_child_text("data",o);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8504 local a=tonumber(a.attr.seq);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8505 local n=self.iseq;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8506 if o and a then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8507 if a~=n then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8508 self.stream:send(e.error_reply(t,"cancel","not-acceptable","Wrong sequence. Packet lost?"))
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8509 self:close();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8510 self:event("error");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8511 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8512 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8513 self.iseq=a+1;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8514 local a=i.decode(o);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8515 if self.stanza=="iq"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8516 self.stream:send(e.reply(t))
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8517 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8518 self:event("incoming-raw",a);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8519 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8520 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8521 elseif a.name=="close"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8522 self.stream:send(e.reply(t))
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8523 self:close();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8524 return true
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8525 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8526 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8527 function a:close()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8528 self.stream:unhook("iq/"..o,self.feeder)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8529 self:event("disconnected");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8530 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8531 function e.plugins.jingle_ibb(a)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8532 a:hook("ready",function()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8533 a:add_disco_feature(n);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8534 end,10);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8535 local t={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8536 function t:_setup()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8537 local e=r(self.stream);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8538 e.sid=self.sid or e.sid;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8539 e.stanza=self.stanza or e.stanza;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8540 e.block=self.block or e.block;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8541 e:initiate(self.peer,self.sid,self.stanza);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8542 self.conn=e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8543 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8544 function t:generate_initiate()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8545 print("ibb:generate_initiate() as "..self.role);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8546 local t=s();
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8547 self.sid=t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8548 self.stanza='iq';
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8549 self.block=2048;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8550 local e=e.stanza("transport",{xmlns=n,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8551 sid=self.sid,stanza=self.stanza,["block-size"]=self.block});
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8552 return e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8553 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8554 function t:generate_accept(t)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8555 print("ibb:generate_accept() as "..self.role);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8556 local e=t.attr;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8557 self.sid=e.sid or self.sid;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8558 self.stanza=e.stanza or self.stanza;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8559 self.block=e["block-size"]or self.block;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8560 self:_setup();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8561 return t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8562 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8563 function t:connect(t)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8564 if not self.conn then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8565 self:_setup();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8566 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8567 local e=self.conn;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8568 print("ibb:connect() as "..self.role);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8569 if self.role=="initiator"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8570 e:open(function(a,...)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8571 assert(a,table.concat({...},", "));
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8572 t(e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8573 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8574 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8575 t(e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8576 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8577 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8578 function t:info_received(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8579 print("ibb:info_received()");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8580 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8581 function t:disconnect()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8582 if self.conn then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8583 self.conn:close()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8584 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8585 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8586 function t:handle_accepted(e)end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8587 local t={__index=t};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8588 a:hook("jingle/transport/"..n,function(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8589 return setmetatable({
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8590 role=e.role,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8591 peer=e.peer,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8592 stream=e.stream,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8593 jingle=e,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8594 },t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8595 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8596 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8597 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8598 package.preload['verse.plugins.pubsub']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8599 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8600 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8601 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
8602 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8603 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8604 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8605 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8606 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8607 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8608 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8609 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8610 local i=require"verse";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8611 local n=table.insert;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8612 local o="http://jabber.org/protocol/pubsub";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8613 local h="http://jabber.org/protocol/pubsub#owner";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8614 local a="http://jabber.org/protocol/pubsub#event";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8615 local t={};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8616 local s={__index=t};
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8617 function i.plugins.pubsub(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8618 e.pubsub=setmetatable({stream=e},s);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8619 e:hook("message",function(t)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8620 local o=t.attr.from;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8621 for t in t:childtags("event",a)do
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8622 local t=t:get_child("items");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8623 if t then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8624 local a=t.attr.node;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8625 for t in t:childtags("item")do
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8626 e:event("pubsub/event",{
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8627 from=o;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8628 node=a;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8629 item=t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8630 });
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8631 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8632 for t in t:childtags("retract")do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8633 e:event("pubsub/retraction",{
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8634 from=o;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8635 node=a;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8636 item=t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8637 });
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8638 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8639 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8640 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8641 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8642 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8643 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8644 function t:create(a,t,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8645 return self:service(a):node(t):create(nil,e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8646 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8647 function t:subscribe(e,t,o,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8648 return self:service(e):node(t):subscribe(o,nil,a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8649 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8650 function t:publish(i,o,t,a,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8651 return self:service(i):node(o):publish(t,nil,a,e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8652 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8653 local a={};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8654 local r={__index=a};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8655 function t:service(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8656 return setmetatable({stream=self.stream,service=e},r)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8657 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8658 local function t(t,r,s,a,d,h,e,n)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8659 local t=i.iq{type=t or"get",to=r}
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8660 :tag("pubsub",{xmlns=s or o})
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8661 local o={node=d,jid=h};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8662 if n then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8663 for t,e in pairs(n)do
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8664 o[t]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8665 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8666 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8667 if a then t:tag(a,o);end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8668 if e then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8669 t:tag("item",{id=e~=true and e or nil});
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8670 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8671 return t;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8672 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8673 function a:subscriptions(e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8674 self.stream:send_iq(t(nil,self.service,nil,"subscriptions")
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8675 ,e and function(a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8676 if a.attr.type=="result"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8677 local t=a:get_child("pubsub",o);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8678 local t=t and t:get_child("subscriptions");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8679 local a={};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8680 if t then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8681 for e in t:childtags("subscription")do
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8682 local t=self:node(e.attr.node)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8683 t.subscription=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8684 t.subscribed_jid=e.attr.jid;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8685 n(a,t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8686 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8687 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8688 e(a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8689 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8690 e(false,a:get_error());
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8691 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8692 end or nil);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8693 end
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8694 function a:affiliations(a)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8695 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
8696 ,a and function(e)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8697 if e.attr.type=="result"then
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8698 local e=e:get_child("pubsub",o);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8699 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
8700 local o={};
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8701 if e then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8702 for t in e:childtags("affiliation")do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8703 local e=self:node(t.attr.node)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8704 e.affiliation=t;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8705 n(o,e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8706 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8707 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8708 a(o);
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8709 else
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8710 a(false,e:get_error());
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8711 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8712 end or nil);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8713 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8714 function a:nodes(a)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8715 self.stream:disco_items(self.service,nil,function(e,...)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8716 if e then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8717 for t=1,#e do
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8718 e[t]=self:node(e[t].node);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8719 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8720 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8721 a(e,...)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8722 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8723 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8724 local e={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8725 local o={__index=e};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8726 function a:node(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8727 return setmetatable({stream=self.stream,service=self.service,node=e},o)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8728 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8729 function s:__call(t,e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8730 local t=self:service(t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8731 return e and t:node(e)or t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8732 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8733 function e:hook(a,o)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8734 self._hooks=self._hooks or setmetatable({},{__mode='kv'});
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8735 local function t(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8736 if(not e.service or e.from==self.service)and e.node==self.node then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8737 return a(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8738 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8739 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8740 self._hooks[a]=t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8741 self.stream:hook("pubsub/event",t,o);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8742 return t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8743 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8744 function e:unhook(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8745 if e then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8746 local e=self._hooks[e];
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8747 self.stream:unhook("pubsub/event",e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8748 elseif self._hooks then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8749 for e in pairs(self._hooks)do
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8750 self.stream:unhook("pubsub/event",e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8751 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8752 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8753 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8754 function e:create(a,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8755 if a~=nil then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8756 error("Not implemented yet.");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8757 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8758 self.stream:send_iq(t("set",self.service,nil,"create",self.node),e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8759 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8760 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8761 function e:configure(e,a)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8762 if e~=nil then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8763 error("Not implemented yet.");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8764 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8765 self.stream:send_iq(t("set",self.service,nil,e==nil and"default"or"configure",self.node),a);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8766 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8767 function e:publish(e,a,o,i)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8768 if a~=nil then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8769 error("Node configuration is not implemented yet.");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8770 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8771 self.stream:send_iq(t("set",self.service,nil,"publish",self.node,nil,e or true)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8772 :add_child(o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8773 ,i);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8774 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8775 function e:subscribe(e,o,a)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8776 e=e or self.stream.jid;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8777 if o~=nil then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8778 error("Subscription configuration is not implemented yet.");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8779 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
8780 self.stream:send_iq(t("set",self.service,nil,"subscribe",self.node,e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8781 ,a);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8782 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8783 function e:subscription(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8784 error("Not implemented yet.");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8785 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8786 function e:affiliation(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8787 error("Not implemented yet.");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8788 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8789 function e:unsubscribe(e,a)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8790 e=e or self.subscribed_jid or self.stream.jid;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8791 self.stream:send_iq(t("set",self.service,nil,"unsubscribe",self.node,e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8792 ,a);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8793 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8794 function e:configure_subscription(e,e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8795 error("Not implemented yet.");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8796 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8797 function e:items(t,e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8798 if t then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8799 return self:item(nil,e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8800 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8801 self.stream:disco_items(self.service,self.node,e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8802 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8803 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8804 function e:item(a,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8805 self.stream:send_iq(t("get",self.service,nil,"items",self.node,nil,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8806 ,e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8807 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8808 function e:retract(o,e,a)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8809 if type(e)=="function"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8810 e,a=false,e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8811 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8812 self.stream:send_iq(
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8813 t(
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8814 "set",
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8815 self.service,
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8816 nil,
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8817 "retract",
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8818 self.node,
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8819 nil,
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8820 o,
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8821 {notify=e and"1"or nil}
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8822 ),
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8823 a
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8824 );
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8825 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8826 function e:purge(e,a)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8827 self.stream:send_iq(
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8828 t(
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8829 "set",
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8830 self.service,
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8831 h,
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8832 "purge",
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8833 self.node,
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8834 nil,
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8835 nil,
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8836 {notify=e and"1"or nil}
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8837 ),
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8838 a
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8839 );
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8840 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8841 function e:delete(a,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8842 assert(not a,"Not implemented yet.");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8843 self.stream:send_iq(t("set",self.service,h,"delete",self.node)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8844 ,e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8845 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8846 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8847 package.preload['verse.plugins.pep']=(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
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8859 local t=require"verse";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8860 local e="http://jabber.org/protocol/pubsub";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8861 local e=e.."#event";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8862 function t.plugins.pep(e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8863 e:add_plugin("disco");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8864 e:add_plugin("pubsub");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8865 e.pep={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8866 e:hook("pubsub/event",function(t)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8867 return e:event("pep/"..t.node,{from=t.from,id=t.item.attr.id,item=t.item.tags[1]});
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8868 end);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8869 function e:hook_pep(t,o,i)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8870 local a=e.events._handlers["pep/"..t];
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8871 if not(a)or#a==0 then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8872 e:add_disco_feature(t.."+notify");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8873 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8874 e:hook("pep/"..t,o,i);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8875 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8876 function e:unhook_pep(t,a)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8877 e:unhook("pep/"..t,a);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8878 local a=e.events._handlers["pep/"..t];
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8879 if not(a)or#a==0 then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8880 e:remove_disco_feature(t.."+notify");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8881 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8882 end
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8883 function e:publish_pep(t,a,o)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8884 return e.pubsub:service(nil):node(a or t.attr.xmlns):publish(o or"current",nil,t)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8885 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8886 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8887 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8888 package.preload['verse.plugins.adhoc']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8889 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8890 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8891 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
8892 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8893 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8894 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8895 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8896 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8897 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8898 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8899 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8900 local o=require"verse";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8901 local n=require"lib.adhoc";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8902 local t="http://jabber.org/protocol/commands";
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8903 local r="jabber:x:data";
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8904 local a={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8905 a.__index=a;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8906 local i={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8907 function o.plugins.adhoc(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8908 e:add_plugin("disco");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8909 e:add_disco_feature(t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8910 function e:query_commands(a,o)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8911 e:disco_items(a,t,function(a)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8912 e:debug("adhoc list returned")
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8913 local t={};
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8914 for o,a in ipairs(a)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8915 t[a.node]=a.name;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8916 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8917 e:debug("adhoc calling callback")
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8918 return o(t);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8919 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8920 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8921 function e:execute_command(i,o,t)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8922 local e=setmetatable({
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8923 stream=e,jid=i,
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8924 command=o,callback=t
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8925 },a);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8926 return e:execute();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8927 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8928 local function r(t,e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8929 if not(e)or e=="user"then return true;end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8930 if type(e)=="function"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8931 return e(t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8932 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8933 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8934 function e:add_adhoc_command(o,a,h,s)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8935 i[a]=n.new(o,a,h,s);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8936 e:add_disco_item({jid=e.jid,node=a,name=o},t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8937 return i[a];
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8938 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8939 local function s(t)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8940 local a=t.tags[1];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8941 local a=a.attr.node;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8942 local a=i[a];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8943 if not a then return;end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8944 if not r(t.attr.from,a.permission)then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8945 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
8946 :add_child(a:cmdtag("canceled")
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8947 :tag("note",{type="error"}):text("You don't have permission to execute this command")));
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8948 return true
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8949 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8950 return n.handle_cmd(a,{send=function(t)return e:send(t)end},t);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8951 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8952 e:hook("iq/"..t,function(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8953 local a=e.attr.type;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8954 local t=e.tags[1].name;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8955 if a=="set"and t=="command"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8956 return s(e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8957 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8958 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8959 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8960 function a:_process_response(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8961 if e.attr.type=="error"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8962 self.status="canceled";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8963 self.callback(self,{});
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8964 return;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8965 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8966 local e=e:get_child("command",t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8967 self.status=e.attr.status;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8968 self.sessionid=e.attr.sessionid;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
8969 self.form=e:get_child("x",r);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8970 self.note=e:get_child("note");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8971 self.callback(self);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8972 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8973 function a:execute()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8974 local e=o.iq({to=self.jid,type="set"})
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8975 :tag("command",{xmlns=t,node=self.command});
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8976 self.stream:send_iq(e,function(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8977 self:_process_response(e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8978 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8979 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8980 function a:next(a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8981 local e=o.iq({to=self.jid,type="set"})
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8982 :tag("command",{
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8983 xmlns=t,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8984 node=self.command,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8985 sessionid=self.sessionid
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8986 });
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8987 if a then e:add_child(a);end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
8988 self.stream:send_iq(e,function(e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8989 self:_process_response(e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8990 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8991 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8992 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
8993 package.preload['verse.plugins.presence']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8994 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8995 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8996 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
8997 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8998 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
8999 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9000 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9001 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9002 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9003 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9004 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9005 local a=require"verse";
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9006 local o=require"util.stanza";
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9007 function a.plugins.presence(t)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9008 t.last_presence=nil;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9009 t:hook("presence-out",function(e)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9010 if not e.attr.to then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9011 t.last_presence=o.clone(e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9012 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9013 end,1);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9014 function t:resend_presence()
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9015 if self.last_presence then
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9016 t:send(self.last_presence);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9017 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9018 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9019 function t:set_status(e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9020 local a=a.presence();
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9021 if type(e)=="table"then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9022 if e.show then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9023 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
9024 end
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9025 if e.priority or e.prio then
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9026 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
9027 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9028 if e.status or e.msg then
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9029 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
9030 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9031 elseif type(e)=="string"then
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9032 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
9033 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9034 t:send(a);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9035 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9036 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9037 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9038 package.preload['verse.plugins.private']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9039 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9040 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9041 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
9042 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9043 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9044 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9045 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9046 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9047 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9048 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9049 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9050 local a=require"verse";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9051 local t="jabber:iq:private";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9052 function a.plugins.private(n)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9053 function n:private_set(o,i,e,n)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9054 local t=a.iq({type="set"})
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9055 :tag("query",{xmlns=t});
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9056 if e then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9057 if e.name==o and e.attr and e.attr.xmlns==i then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9058 t:add_child(e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9059 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9060 t:tag(o,{xmlns=i})
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9061 :add_child(e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9062 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9063 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9064 self:send_iq(t,n);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9065 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9066 function n:private_get(e,o,i)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9067 self:send_iq(a.iq({type="get"})
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9068 :tag("query",{xmlns=t})
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9069 :tag(e,{xmlns=o}),
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9070 function(a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9071 if a.attr.type=="result"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9072 local t=a:get_child("query",t);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9073 local e=t:get_child(e,o);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9074 i(e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9075 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9076 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9077 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9078 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9079 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9080 package.preload['verse.plugins.roster']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9081 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9082 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9083 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
9084 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9085 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9086 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9087 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9088 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9089 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9090 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9091 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9092 local i=require"verse";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9093 local d=require"util.jid".bare;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9094 local a="jabber:iq:roster";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9095 local n="urn:xmpp:features:rosterver";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9096 local o=table.insert;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9097 function i.plugins.roster(t)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9098 local s=false;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9099 local e={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9100 items={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9101 ver="";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9102 };
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9103 t.roster=e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9104 t:hook("stream-features",function(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9105 if e:get_child("ver",n)then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9106 s=true;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9107 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9108 end);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9109 local function h(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9110 local e=i.stanza("item",{xmlns=a});
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9111 for a,t in pairs(t)do
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9112 if a~="groups"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9113 e.attr[a]=t;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9114 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9115 for a=1,#t do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9116 e:tag("group"):text(t[a]):up();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9117 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9118 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9119 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9120 return e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9121 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9122 local function r(a)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9123 local e={};
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9124 local t={};
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9125 e.groups=t;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9126 for t,a in pairs(a.attr)do
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9127 if t~="xmlns"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9128 e[t]=a
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9129 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9130 end
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9131 for e in a:childtags("group")do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9132 o(t,e:get_text())
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9133 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9134 return e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9135 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9136 function e:load(t)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9137 e.ver,e.items=t.ver,t.items;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9138 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9139 function e:dump()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9140 return{
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9141 ver=e.ver,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9142 items=e.items,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9143 };
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9144 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9145 function e:add_contact(o,n,s,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9146 local o={jid=o,name=n,groups=s};
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9147 local a=i.iq({type="set"})
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9148 :tag("query",{xmlns=a})
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9149 :add_child(h(o));
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9150 t:send_iq(a,function(t)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9151 if not e then return end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9152 if t.attr.type=="result"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9153 e(true);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9154 else
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9155 e(nil,t);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9156 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9157 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9158 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9159 function e:delete_contact(o,n)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9160 o=(type(o)=="table"and o.jid)or o;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9161 local s={jid=o,subscription="remove"}
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9162 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
9163 t:send_iq(i.iq({type="set"})
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9164 :tag("query",{xmlns=a})
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9165 :add_child(h(s)),
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9166 function(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9167 if not n then return end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9168 if e.attr.type=="result"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9169 n(true);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9170 else
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9171 n(nil,e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9172 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9173 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9174 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9175 local function h(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9176 local t=r(t);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9177 e.items[t.jid]=t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9178 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9179 local function r(t)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9180 local a=e.items[t];
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9181 e.items[t]=nil;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9182 return a;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9183 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9184 function e:fetch(n)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9185 t:send_iq(i.iq({type="get"}):tag("query",{xmlns=a,ver=s and e.ver or nil}),
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9186 function(o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9187 if o.attr.type=="result"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9188 local t=o:get_child("query",a);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9189 if t then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9190 e.items={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9191 for t in t:childtags("item")do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9192 h(t)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9193 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9194 e.ver=t.attr.ver or"";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9195 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9196 n(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9197 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9198 n(nil,o);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9199 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9200 end);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9201 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9202 t:hook("iq/"..a,function(n)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9203 local s,o=n.attr.type,n.attr.from;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9204 if s=="set"and(not o or o==d(t.jid))then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9205 local s=n:get_child("query",a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9206 local a=s and s:get_child("item");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9207 if a then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9208 local n,o;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9209 local i=a.attr.jid;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9210 if a.attr.subscription=="remove"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9211 n="removed"
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9212 o=r(i);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9213 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9214 n=e.items[i]and"changed"or"added";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9215 h(a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9216 o=e.items[i];
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9217 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9218 e.ver=s.attr.ver;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9219 if o then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9220 t:event("roster/item-"..n,o);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9221 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9222 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9223 t:send(i.reply(n))
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9224 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9225 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9226 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9227 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9228 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9229 package.preload['verse.plugins.register']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9230 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9231 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9232 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
9233 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9234 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9235 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9236 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9237 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9238 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9239 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9240 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9241 local t=require"verse";
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9242 local i="jabber:iq:register";
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9243 function t.plugins.register(e)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9244 local function a(o)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9245 if o:get_child("register","http://jabber.org/features/iq-register")then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9246 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
9247 :tag("query",{xmlns=i})
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9248 :tag("username"):text(e.username):up()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9249 :tag("password"):text(e.password):up();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9250 if e.register_email then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9251 t:tag("email"):text(e.register_email):up();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9252 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9253 e:send_iq(t,function(t)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9254 if t.attr.type=="result"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9255 e:event("registration-success");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9256 else
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9257 local a,t,o=t:get_error();
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9258 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
9259 e:event("registration-failure",{type=a,condition=t,text=o});
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9260 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9261 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9262 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9263 e:debug("In-band registration not offered by server");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9264 e:event("registration-failure",{condition="service-unavailable"});
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9265 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9266 e:unhook("stream-features",a);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9267 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9268 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9269 e:hook("stream-features",a,310);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9270 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9271 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9272 package.preload['verse.plugins.groupchat']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9273 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9274 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9275 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
9276 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9277 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9278 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9279 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9280 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9281 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9282 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9283 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9284 local i=require"verse";
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9285 local e=require"util.events";
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9286 local n=require"util.jid";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9287 local a={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9288 a.__index=a;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9289 local h="urn:xmpp:delay";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9290 local s="http://jabber.org/protocol/muc";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9291 function i.plugins.groupchat(o)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9292 o:add_plugin("presence")
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9293 o.rooms={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9294 o:hook("stanza",function(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9295 local a=n.bare(e.attr.from);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9296 if not a then return end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9297 local t=o.rooms[a]
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9298 if not t and e.attr.to and a then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9299 t=o.rooms[e.attr.to.." "..a]
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9300 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9301 if t and t.opts.source and e.attr.to~=t.opts.source then return end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9302 if t then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9303 local i=select(3,n.split(e.attr.from));
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9304 local n=e:get_child_text("body");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9305 local o=e:get_child("delay",h);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9306 local a={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9307 room_jid=a;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9308 room=t;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9309 sender=t.occupants[i];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9310 nick=i;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9311 body=n;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9312 stanza=e;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9313 delay=(o and o.attr.stamp);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9314 };
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9315 local t=t:event(e.name,a);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9316 return t or(e.name=="message")or nil;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9317 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9318 end,500);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9319 function o:join_room(n,h,t,r)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9320 if not h then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9321 return false,"no nickname supplied"
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9322 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9323 t=t or{};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9324 local e=setmetatable(i.eventable{
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9325 stream=o,jid=n,nick=h,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9326 subject=nil,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9327 occupants={},
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9328 opts=t,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9329 },a);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9330 if t.source then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9331 self.rooms[t.source.." "..n]=e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9332 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9333 self.rooms[n]=e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9334 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9335 local a=e.occupants;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9336 e:hook("presence",function(o)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9337 local t=o.nick or h;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9338 if not a[t]and o.stanza.attr.type~="unavailable"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9339 a[t]={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9340 nick=t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9341 jid=o.stanza.attr.from;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9342 presence=o.stanza;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9343 };
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9344 local o=o.stanza:get_child("x",s.."#user");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9345 if o then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9346 local e=o:get_child("item");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9347 if e and e.attr then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9348 a[t].real_jid=e.attr.jid;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9349 a[t].affiliation=e.attr.affiliation;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9350 a[t].role=e.attr.role;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9351 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9352 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9353 if t==e.nick then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9354 e.stream:event("groupchat/joined",e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9355 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9356 e:event("occupant-joined",a[t]);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9357 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9358 elseif a[t]and o.stanza.attr.type=="unavailable"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9359 if t==e.nick then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9360 e.stream:event("groupchat/left",e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9361 if e.opts.source then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9362 self.rooms[e.opts.source.." "..n]=nil;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9363 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9364 self.rooms[n]=nil;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9365 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9366 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9367 a[t].presence=o.stanza;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9368 e:event("occupant-left",a[t]);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9369 a[t]=nil;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9370 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9371 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9372 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9373 e:hook("message",function(a)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9374 local t=a.stanza:get_child_text("subject");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9375 if not t then return end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9376 t=#t>0 and t or nil;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9377 if t~=e.subject then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9378 local o=e.subject;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9379 e.subject=t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9380 return e:event("subject-changed",{from=o,to=t,by=a.sender,event=a});
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9381 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9382 end,2e3);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9383 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
9384 if r then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9385 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
9386 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9387 self:event("pre-groupchat/joining",t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9388 e:send(t)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9389 self:event("groupchat/joining",e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9390 return e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9391 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9392 o:hook("presence-out",function(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9393 if not e.attr.to then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9394 for a,t in pairs(o.rooms)do
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9395 t:send(e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9396 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9397 e.attr.to=nil;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9398 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9399 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9400 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9401 function a:send(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9402 if e.name=="message"and not e.attr.type then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9403 e.attr.type="groupchat";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9404 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9405 if e.name=="presence"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9406 e.attr.to=self.jid.."/"..self.nick;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9407 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9408 if e.attr.type=="groupchat"or not e.attr.to then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9409 e.attr.to=self.jid;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9410 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9411 if self.opts.source then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9412 e.attr.from=self.opts.source
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9413 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9414 self.stream:send(e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9415 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9416 function a:send_message(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9417 self:send(i.message():tag("body"):text(e));
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9418 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9419 function a:set_subject(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9420 self:send(i.message():tag("subject"):text(e));
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9421 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9422 function a:leave(e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9423 self.stream:event("groupchat/leaving",self);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9424 local t=i.presence({type="unavailable"});
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9425 if e then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9426 t:tag("status"):text(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9427 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9428 self:send(t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9429 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9430 function a:admin_set(t,o,a,e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9431 self:send(i.iq({type="set"})
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9432 :query(s.."#admin")
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9433 :tag("item",{nick=t,[o]=a})
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9434 :tag("reason"):text(e or""));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9435 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9436 function a:set_role(t,e,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9437 self:admin_set(t,"role",e,a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9438 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9439 function a:set_affiliation(e,t,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9440 self:admin_set(e,"affiliation",t,a);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9441 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9442 function a:kick(t,e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9443 self:set_role(t,"none",e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9444 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9445 function a:ban(t,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9446 self:set_affiliation(t,"outcast",e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9447 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9448 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9449 package.preload['verse.plugins.vcard']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9450 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9451 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9452 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
9453 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9454 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9455 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9456 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9457 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9458 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9459 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9460 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9461 local i=require"verse";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9462 local o=require"util.vcard";
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9463 local e="vcard-temp";
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9464 function i.plugins.vcard(a)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9465 function a:get_vcard(n,t)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9466 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
9467 :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
9468 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
9469 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
9470 e=o.from_xep54(e)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9471 t(e)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9472 else
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9473 t(false)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9474 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9475 end or nil);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9476 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9477 function a:set_vcard(e,n)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9478 local t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9479 if type(e)=="table"and e.name then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9480 t=e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9481 elseif type(e)=="string"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9482 t=o.to_xep54(o.from_text(e)[1]);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9483 elseif type(e)=="table"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9484 t=o.to_xep54(e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9485 error("Converting a table to vCard not implemented")
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9486 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9487 if not t then return false end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9488 a:debug("setting vcard to %s",tostring(t));
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9489 a:send_iq(i.iq({type="set"})
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9490 :add_child(t),n);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9491 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9492 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9493 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9494 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
9495 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9496 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9497 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
9498 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9499 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9500 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9501 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9502 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9503 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9504 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9505 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9506 local i=require"verse";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9507 local n="vcard-temp:x:update";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9508 local s=require("util.hashes").sha1;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9509 local e,t=pcall(function()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9510 local e=require("util.encodings").base64.decode;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9511 assert(e("SGVsbG8=")=="Hello")
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9512 return e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9513 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9514 if not e then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9515 e,t=pcall(function()return require("mime").unb64;end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9516 if not e then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9517 error("Could not find a base64 decoder")
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9518 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9519 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9520 local h=t;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9521 function i.plugins.vcard_update(e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9522 e:add_plugin("vcard");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9523 e:add_plugin("presence");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9524 local t;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9525 local function r(a)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9526 local o;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9527 for e=1,#a do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9528 if a[e].name=="PHOTO"then
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9529 o=a[e][1];
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9530 break
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9531 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9532 end
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9533 if o then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9534 local a=s(h(o),true);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9535 t=i.stanza("x",{xmlns=n})
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9536 :tag("photo"):text(a);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9537 e:resend_presence()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9538 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9539 t=nil;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9540 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9541 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9542 local a;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9543 e:hook("ready",function()
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9544 if a then return;end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9545 a=true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9546 e:get_vcard(nil,function(t)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9547 if t then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9548 r(t)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9549 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9550 e:event("ready");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9551 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9552 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9553 end,3);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9554 e:hook("presence-out",function(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9555 if t and not e:get_child("x",n)then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9556 e:add_child(t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9557 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9558 end,10);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9559 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9560 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9561 package.preload['verse.plugins.carbons']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9562 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9563 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9564 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
9565 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9566 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9567 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9568 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9569 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9570 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9571 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9572 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9573 local a=require"verse";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9574 local o="urn:xmpp:carbons:2";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9575 local r="urn:xmpp:forward:0";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9576 local s=os.time;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9577 local h=require"util.datetime".parse;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9578 local n=require"util.jid".bare;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9579 function a.plugins.carbons(e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9580 local t={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9581 t.enabled=false;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9582 e.carbons=t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9583 function t:enable(i)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9584 e:send_iq(a.iq{type="set"}
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9585 :tag("enable",{xmlns=o})
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9586 ,function(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9587 local e=e.attr.type=="result";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9588 if e then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9589 t.enabled=true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9590 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9591 if i then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9592 i(e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9593 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9594 end or nil);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9595 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9596 function t:disable(i)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9597 e:send_iq(a.iq{type="set"}
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9598 :tag("disable",{xmlns=o})
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9599 ,function(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9600 local e=e.attr.type=="result";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9601 if e then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9602 t.enabled=false;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9603 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9604 if i then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9605 i(e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9606 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9607 end or nil);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9608 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9609 local a;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9610 e:hook("bind-success",function()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9611 a=n(e.jid);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9612 end);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9613 e:hook("message",function(i)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9614 local t=i:get_child(nil,o);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9615 if i.attr.from==a and t then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9616 local o=t.name;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9617 local t=t:get_child("forwarded",r);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9618 local a=t and t:get_child("message","jabber:client");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9619 local t=t:get_child("delay","urn:xmpp:delay");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9620 local t=t and t.attr.stamp;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9621 t=t and h(t);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9622 if a then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9623 return e:event("carbon",{
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9624 dir=o,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9625 stanza=a,
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9626 timestamp=t or s(),
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9627 });
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9628 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9629 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9630 end,1);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9631 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9632 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9633 package.preload['verse.plugins.archive']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9634 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9635 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9636 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
9637 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9638 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9639 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9640 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9641 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9642 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9643 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9644 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9645 local a=require"verse";
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9646 local t=require"util.stanza";
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9647 local e="urn:xmpp:mam:2"
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9648 local l="urn:xmpp:forward:0";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9649 local d="urn:xmpp:delay";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9650 local r=require"util.id".short;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9651 local c=require"util.datetime".parse;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9652 local s=require"util.datetime".datetime;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9653 local o=require"util.dataforms".new;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9654 local n=require"util.rsm";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9655 local u={};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9656 local m=o{
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9657 {name="FORM_TYPE";type="hidden";value=e;};
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9658 {name="with";type="jid-single";};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9659 {name="start";type="text-single"};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9660 {name="end";type="text-single";};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9661 };
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9662 function a.plugins.archive(i)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9663 function i:query_archive(i,a,h)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9664 local o=r();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9665 local i=t.iq{id=o,type="set",to=i}
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9666 :tag("query",{xmlns=e,queryid=o});
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9667 local t,r=tonumber(a["start"]),tonumber(a["end"]);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9668 a["start"]=t and s(t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9669 a["end"]=r and s(r);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9670 i:add_child(m:form(a,"submit"));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9671 i:add_child(n.generate(a));
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9672 local t={};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9673 local function s(a)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9674 local e=a:get_child("result",e);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9675 if e and e.attr.queryid==o then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9676 local a=e:get_child("forwarded",l);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9677 local i=e.attr.id;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9678 local e=a:get_child("delay",d);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9679 local o=e and c(e.attr.stamp)or nil;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9680 local e=a:get_child("message","jabber:client")
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9681 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
9682 return true
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9683 end
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9684 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9685 self:hook("message",s,1);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9686 self:send_iq(i,function(a)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9687 self:unhook("message",s);
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9688 if a.attr.type=="error"then
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9689 self:warn(table.concat({a:get_error()}," "))
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9690 h(false,a:get_error())
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9691 return true;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9692 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9693 local e=a:get_child("fin",e)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9694 if e then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9695 t.complete=e.attr.complete=="true"or e.attr.complete=="1";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9696 local e=n.get(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9697 for a,e in pairs(e or u)do t[a]=e;end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9698 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9699 h(t);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9700 return true
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9701 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9702 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9703 local n={
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9704 always=true,[true]="always",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9705 never=false,[false]="never",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9706 roster="roster",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9707 }
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9708 local function h(t)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9709 local e={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9710 local a=t.attr.default;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9711 if a then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9712 e[false]=n[a];
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9713 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9714 local a=t:get_child("always");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9715 if a then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9716 for t in a:childtags("jid")do
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9717 local t=t:get_text();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9718 e[t]=true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9719 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9720 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9721 local t=t:get_child("never");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9722 if t then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9723 for t in t:childtags("jid")do
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9724 local t=t:get_text();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9725 e[t]=false;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9726 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9727 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9728 return e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9729 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9730 local function s(o)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9731 local a
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9732 a,o[false]=o[false],nil;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9733 if a~=nil then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9734 a=n[a];
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9735 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9736 local a=t.stanza("prefs",{xmlns=e,default=a})
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9737 local e=t.stanza("always");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9738 local t=t.stanza("never");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9739 for o,a in pairs(o)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9740 (a and e or t):tag("jid"):text(o):up();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9741 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9742 return a:add_child(e):add_child(t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9743 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9744 function i:archive_prefs_get(a)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9745 self:send_iq(t.iq{type="get"}:tag("prefs",{xmlns=e}),
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9746 function(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9747 if e and e.attr.type=="result"and e.tags[1]then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9748 local t=h(e.tags[1]);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9749 a(t,e);
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9750 else
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9751 a(nil,e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9752 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9753 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9754 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9755 function i:archive_prefs_set(e,a)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9756 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
9757 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9758 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9759 end)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9760 package.preload['verse.plugins.browsing']=(function(...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9761 local _ENV=_ENV;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9762 local function e(t,...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9763 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
9764 package.loaded[t]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9765 for t=1,select("#",...)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9766 (select(t,...))(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9767 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9768 _ENV=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9769 _M=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9770 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9771 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9772 local a=require"verse";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9773 local o="urn:xmpp:browsing:0";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9774 function a.plugins.browsing(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9775 e:add_plugin("pep");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9776 function e:browsing(t,i)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9777 if type(t)=="string"then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9778 t={uri=t};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9779 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9780 local a=a.stanza("page",{xmlns=o})
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9781 for t,e in pairs(t)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9782 a:tag(t):text(e):up();
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9783 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9784 return e:publish_pep(a,i);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9785 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9786 e:hook_pep(o,function(a)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9787 local t=a.item;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9788 return e:event("browsing",{
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9789 from=a.from;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9790 description=t:get_child_text"description";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9791 keywords=t:get_child_text"keywords";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9792 title=t:get_child_text"title";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9793 uri=t:get_child_text"uri";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9794 });
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9795 end);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9796 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9797 end)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9798 package.preload['util.http']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9799 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9800 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9801 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
9802 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9803 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9804 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9805 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9806 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9807 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9808 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9809 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9810 local i,t=string.format,string.char;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9811 local h,r=pairs,ipairs;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9812 local o,s=table.insert,table.concat;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9813 local e={};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9814 for a=0,255 do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9815 local t=t(a);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9816 local a=i("%%%02x",a);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9817 e[t]=a;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9818 e[a]=t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9819 e[a:upper()]=t;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
9820 end
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9821 local function n(t)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9822 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
9823 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9824 local function a(t)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9825 return t and(t:gsub("%%%x%x",e));
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9826 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9827 local function e(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9828 return e and(n(e):gsub("%%20","+"));
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9829 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9830 local function d(t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9831 local a={};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9832 if t[1]then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9833 for i,t in r(t)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9834 o(a,e(t.name).."="..e(t.value));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9835 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9836 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9837 for i,t in h(t)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9838 o(a,e(i).."="..e(t));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9839 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9840 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9841 return s(a,"&");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9842 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9843 local function s(e)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9844 if not e:match("=")then return a(e);end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9845 local i={};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9846 for e,t in e:gmatch("([^=&]*)=([^&]*)")do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9847 e,t=e:gsub("%+","%%20"),t:gsub("%+","%%20");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9848 e,t=a(e),a(t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9849 o(i,{name=e,value=t});
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9850 i[e]=t;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9851 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9852 return i;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9853 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9854 local function o(e,t)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9855 e=","..e:gsub("[ \t]",""):lower()..",";
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9856 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
9857 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9858 local function t(e,t)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9859 if t then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9860 if e:sub(-1,-1)~="/"then e=e.."/";end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9861 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9862 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
9863 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9864 if e:sub(1,1)~="/"then e="/"..e;end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9865 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9866 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9867 return{
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9868 urlencode=n,urldecode=a;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9869 formencode=d,formdecode=s;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9870 contains_token=o;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9871 normalize_path=t;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9872 };
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9873 end)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9874 package.preload['net.http.parser']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9875 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9876 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9877 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
9878 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9879 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9880 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9881 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9882 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9883 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9884 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
9885 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9886 local l=tonumber;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9887 local b=assert;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9888 local q=require"socket.url".parse;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9889 local t=require"util.http".urldecode;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9890 local g=require"util.dbuffer";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9891 local function j(e)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9892 e=t((e:gsub("//+","/")));
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9893 if e:sub(1,1)~="/"then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9894 e="/"..e;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9895 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9896 local t=0;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9897 for e in e:gmatch("([^/]+)/")do
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9898 if e==".."then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9899 t=t-1;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9900 elseif e~="."then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9901 t=t+1;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9902 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9903 if t<0 then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9904 return nil;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9905 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9906 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9907 return e;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9908 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9909 local k={};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9910 function k.new(c,n,e,r)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9911 local f=true;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9912 if not e or e=="server"then f=false;else b(e=="client","Invalid parser type");end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9913 local w=l(r and r().body_size_limit)or 10*1024*1024;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9914 local s=l(r and r().head_size_limit)or 10*1024;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9915 local k=l(r and r().buffer_size_limit)or w*2;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9916 local a=g.new(k);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9917 local d;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9918 local h=nil;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9919 local e;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9920 local t;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9921 local y;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9922 local o;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9923 return{
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9924 feed=function(u,i)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9925 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
9926 if not i then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9927 if h and f and not t then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9928 a:collapse();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9929 e.body=a:read_chunk()or"";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9930 e.partial=nil;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9931 c(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9932 h=nil;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9933 elseif a:length()~=0 then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9934 o=true;return n("unexpected-eof");
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9935 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9936 return;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9937 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9938 if not a:write(i)then o=true;return n("max-buffer-size-exceeded");end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9939 while a:length()>0 do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9940 if h==nil then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9941 local b=a:sub(1,s):find("\r\n\r\n",nil,true);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9942 if not b then return;end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9943 local p,u,m,s,x;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9944 local v;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9945 local i={};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9946 for t in a:read(b+3):gmatch("([^\r\n]+)\r\n")do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9947 if v then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9948 local e,t=t:match("^([^%s:]+): *(.*)$");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9949 if not e then o=true;return n("invalid-header-line");end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
9950 e=e:lower();
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9951 i[e]=i[e]and i[e]..","..t or t;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9952 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9953 v=t;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9954 if f then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9955 m,s,x=t:match("^HTTP/(1%.[01]) (%d%d%d) (.*)$");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9956 s=l(s);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9957 if not s then o=true;return n("invalid-status-line");end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9958 y=not
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9959 ((r and r().method=="HEAD")
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9960 or(s==204 or s==304 or s==301)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9961 or(s>=100 and s<200));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9962 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9963 p,u,m=t:match("^(%w+) (%S+) HTTP/(1%.[01])$");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9964 if not p then o=true;return n("invalid-status-line");end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9965 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9966 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9967 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9968 if not v then o=true;return n("invalid-status-line");end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9969 d=y and i["transfer-encoding"]=="chunked";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9970 t=l(i["content-length"]);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9971 if f then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9972 if not y then t=0;end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9973 e={
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9974 code=s;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9975 httpversion=m;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9976 headers=i;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9977 body=false;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9978 body_length=t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9979 chunked=d;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9980 partial=true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9981 responseversion=m;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9982 responseheaders=i;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9983 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9984 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9985 local a;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9986 if u:byte()==47 then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9987 local t,e=u:match("([^?]*).?(.*)");
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9988 if e==""then e=nil;end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9989 a={path=t,query=e};
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9990 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9991 a=q(u);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9992 if not(a and a.path)then o=true;return n("invalid-url");end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9993 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9994 u=j(a.path);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
9995 i.host=a.host or i.host;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9996 t=t or 0;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9997 e={
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9998 method=p;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
9999 url=a;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10000 path=u;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10001 httpversion=m;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10002 headers=i;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10003 body=false;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10004 body_sink=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10005 chunked=d;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10006 partial=true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10007 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10008 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10009 if not t or t>w then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10010 c(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10011 if not e.body_sink and(t and t>w)then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10012 o=true;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10013 return n("content-length-limit-exceeded");
177
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 if d and not e.body_sink then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10017 c(e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10018 if not e.body_sink then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10019 e.body_buffer=g.new(k);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10020 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10021 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10022 h=true;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10023 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10024 if h then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
10025 if d then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10026 local s=a:sub(1,512);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10027 local t,i=s:match("^(%x+)[^\r\n]*\r\n()");
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10028 if not t then return;end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10029 t=t and l(t,16);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10030 if not t then o=true;return n("invalid-chunk-size");end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10031 if t==0 and s:find("\r\n\r\n",i-2,true)then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10032 local t=e.body_buffer;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10033 if t then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10034 e.body_buffer=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10035 t:collapse();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10036 e.body=t:read_chunk()or"";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10037 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10038 a:collapse();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10039 local t=a:read_chunk();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10040 t=t:gsub("^.-\r\n\r\n","");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10041 a:write(t);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10042 h,d=nil,nil;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10043 e.partial=nil;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10044 c(e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10045 elseif a:length()-i-1>=t then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10046 a:discard(i-1);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10047 (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
10048 a:discard(2);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
10049 else
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
10050 break;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
10051 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10052 elseif e.body_sink then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10053 local i=a:read_chunk(t);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10054 while i and(not t or t>0)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10055 if e.body_sink:write(i)then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10056 if t then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10057 t=t-#i;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10058 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10059 i=a:read_chunk(t);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10060 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10061 o=true;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10062 return n("body-sink-write-failure");
177
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 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10065 if t==0 then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10066 h=nil;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10067 e.partial=nil;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10068 c(e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10069 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10070 elseif not t or a:length()>=t then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10071 b(not d)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10072 e.body=t and a:read(t)or a:read_chunk()or"";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10073 h=nil;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10074 e.partial=nil;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10075 c(e);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
10076 else
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
10077 break;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
10078 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
10079 else
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
10080 break;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
10081 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
10082 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
10083 end;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
10084 };
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
10085 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10086 return k;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
10087 end)
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
10088 package.preload['net.http']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10089 local _ENV=_ENV;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10090 local function e(t,...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10091 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
10092 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10093 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10094 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10095 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10096 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10097 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10098 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10099 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10100 local z=require"util.encodings".base64.encode;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10101 local T=require"socket.url"
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10102 local _=require"net.http.parser".new;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10103 local d=require"util.http";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10104 local O=require"util.events";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10105 local A=require"util.x509".verify_identity;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10106 local E=require"util.promise";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10107 local j=require"net.http.errors";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10108 local x=require"net.resolvers.basic";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10109 local q=require"net.connect".connect;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10110 local v=pcall(require,"ssl");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10111 local s,p=table.insert,table.concat;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10112 local l=pairs;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10113 local y,c,t=
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10114 tonumber,tostring,debug.traceback;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10115 local w=os.time;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10116 local b=require"util.xpcall".xpcall;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10117 local f=error
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10118 local o=require"util.logger".init("http");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10119 local _ENV=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10120 local a={};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10121 local function g(e)return(c(e):match("%x+$"));end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10122 local n={default_port=80,default_mode="*a"};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10123 local function k(e)o("error","Traceback[http]: %s",t(c(e),2));return e;end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10124 local function m(e,t,...)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10125 if not t then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10126 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
10127 if not e.suppress_errors then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10128 f(...);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10129 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10130 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10131 return...;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10132 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10133 local function r(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10134 local t=e.conn;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10135 if t then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10136 e.conn=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10137 t:close()
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10138 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10139 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10140 local function u(e,t)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10141 if e.callback then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10142 e.callback(t or"cancelled",0,e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10143 e.callback=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10144 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10145 if e.conn then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10146 r(e);
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 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10149 local function h(e,n,a)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10150 if not e.parser then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10151 local function i(t)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10152 if e.callback then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10153 e.callback(t or"connection-closed",0,e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10154 e.callback=nil;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10155 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10156 r(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10157 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10158 if not n then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10159 i(a);
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
10160 return;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
10161 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10162 local a;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10163 local function n(t)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10164 if t.partial then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10165 o("debug","Request '%s': partial response (%s%s)",
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10166 e.id,
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10167 t.chunked and"chunked, "or"",
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10168 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
10169 );
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10170 if e.streaming_handler then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10171 o("debug","Request '%s': Streaming via handler",e.id);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10172 t.body_sink,a=e.streaming_handler(t);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10173 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10174 return;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10175 elseif a then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10176 o("debug","Request '%s': Finalizing response stream");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10177 a(t);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10178 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
10179 if e.callback then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
10180 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
10181 e.callback=nil;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
10182 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10183 r(e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10184 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10185 local function t()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10186 return e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10187 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10188 e.parser=_(n,i,"client",t);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10189 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10190 e.parser:feed(n);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10191 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10192 function n.onconnect(t)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10193 local e=a[t];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10194 e.write=function(...)return e.conn:write(...);end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10195 local r=e.callback;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10196 e.callback=function(n,a,i,s)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10197 do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10198 local t={http=e.http,url=e.url,request=e,response=i,content=n,code=a,callback=e.callback};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10199 e.http.events.fire_event("response",t);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10200 n,a,i=t.content,t.code,t.response;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10201 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10202 o("debug","Request '%s': Calling callback, status %s",e.id,a or"---");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10203 return m(e.id,b(r,k,n,a,i,s));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10204 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10205 e.reader=h;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10206 e.state="status";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10207 e.cancel=u;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10208 a[e.conn]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10209 if not e.insecure and t:ssl()then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10210 local a=t:socket();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10211 local o=a.getpeerverification and a:getpeerverification();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10212 if not o then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10213 e.callback("certificate-chain-invalid",0,e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10214 e.callback=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10215 t:close();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10216 return;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10217 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10218 local a=a.getpeercertificate and a:getpeercertificate();
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10219 if not a or not A(e.host,false,a)then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10220 e.callback("certificate-verify-failed",0,e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10221 e.callback=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10222 t:close();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10223 return;
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 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
10227 if e.query then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10228 s(a,4,"?"..e.query);
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 for e,t in l(e.headers)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10231 s(a,e..": "..t.."\r\n");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10232 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10233 s(a,"\r\n")
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10234 t:write(p(a));
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10235 if e.body then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10236 t:write(e.body);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10237 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10238 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10239 function n.onincoming(i,t)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10240 local e=a[i];
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10241 if not e then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10242 o("warn","Received response from connection %s with no request attached!",i);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10243 return;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10244 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10245 if t and e.reader then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10246 e:reader(t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10247 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10248 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10249 function n.ondisconnect(t,o)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10250 local e=a[t];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10251 if e and e.conn then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10252 e:reader(nil,o or"closed");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10253 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10254 a[t]=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10255 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10256 function n.onattach(e,t)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10257 a[e]=t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10258 t.conn=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10259 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10260 function n.ondetach(e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10261 a[e]=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10262 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10263 function n.onfail(e,t)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10264 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
10265 e.callback(t or"connection failed",0,e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10266 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10267 local function m(a,h,t,i)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10268 local e=T.parse(h);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10269 if not(e and e.host)then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10270 i("invalid-url",0,e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10271 return nil,"invalid-url";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10272 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10273 e.url=h;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10274 e.http=a;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10275 e.time=w();
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10276 if not e.path then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10277 e.path="/";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10278 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10279 e.id=t and t.id or g(e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10280 do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10281 local o={http=a,url=h,request=e,options=t,callback=i};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10282 local a=a.events.fire_event("pre-request",o);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10283 if a then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10284 return a;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10285 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10286 e,h,t,e.callback=o.request,o.url,o.options,o.callback;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10287 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10288 local u,s,d;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10289 local m,i=e.host,e.port;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10290 local r=m;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10291 if(i=="80"and e.scheme=="http")
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10292 or(i=="443"and e.scheme=="https")then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10293 i=nil;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10294 elseif i then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10295 r=r..":"..i;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10296 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10297 s={
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10298 ["Host"]=r;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10299 ["User-Agent"]="Prosody XMPP Server";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10300 };
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10301 if e.userinfo then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10302 s["Authorization"]="Basic "..z(e.userinfo);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10303 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10304 if t then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10305 e.onlystatus=t.onlystatus;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10306 d=t.body;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10307 if d then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10308 u="POST";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10309 s["Content-Length"]=c(#d);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10310 s["Content-Type"]="application/x-www-form-urlencoded";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10311 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10312 if t.method then u=t.method;end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10313 if t.headers then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10314 for e,t in l(t.headers)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10315 s[e]=t;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10316 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10317 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10318 e.insecure=t.insecure;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10319 e.suppress_errors=t.suppress_errors;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10320 e.streaming_handler=t.streaming_handler;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10321 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10322 o("debug","Making %s %s request '%s' to %s",e.scheme:upper(),u or"GET",e.id,(t and t.suppress_url and r)or h);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10323 e.method,e.headers,e.body=u,s,d;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10324 local o=e.scheme=="https";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10325 if o and not v then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10326 f("SSL not available, unable to contact https URL");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10327 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10328 local r=i and y(i)or(o and 443 or 80);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10329 local s=a.options and a.options.use_dane;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10330 local i=false;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10331 if o then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10332 i=t and t.sslctx or a.options and a.options.sslctx;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10333 if t and t.use_dane~=nil then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10334 s=t.use_dane;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10335 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10336 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10337 local t=x.new(m,r,"tcp",{servername=e.host;use_dane=s});
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10338 q(t,n,{sslctx=i},e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10339 a.events.fire_event("request",{http=a,request=e,url=h});
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10340 return e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10341 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10342 local function e(a)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10343 local e={
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10344 options=a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10345 request=function(a,t,e,o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10346 if o~=nil then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10347 return m(a,t,e,o);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10348 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10349 return E.new(function(n,o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10350 m(a,t,e,function(i,a,e,t)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10351 if a==0 then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10352 o(j.new(i,{request=e}));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10353 else
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10354 e.request=t;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10355 n(e);
177
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 end);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10358 end);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10359 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10360 end;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10361 new=a and function(o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10362 local t={};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10363 for e,a in l(a)do t[e]=a;end
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10364 if o then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10365 for a,e in l(o)do t[a]=e;end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10366 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10367 return e(t);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10368 end or e;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10369 events=O.new();
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10370 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10371 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10372 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10373 local t=e({
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10374 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
10375 suppress_errors=true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10376 });
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10377 return{
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10378 request=function(o,a,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10379 return t:request(o,a,e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10380 end;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10381 default=t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10382 new=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10383 events=t.events;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10384 urlencode=d.urlencode;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10385 urldecode=d.urldecode;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10386 formencode=d.formencode;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10387 formdecode=d.formdecode;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10388 destroy_request=r;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10389 features={
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10390 sni=true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10391 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10392 };
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10393 end)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10394 package.preload['util.x509']=(function(...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10395 local _ENV=_ENV;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10396 local function e(t,...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10397 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
10398 package.loaded[t]=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10399 for t=1,select("#",...)do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10400 (select(t,...))(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10401 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10402 _ENV=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10403 _M=e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10404 return e;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10405 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10406 local o=require"util.encodings".stringprep.nameprep;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10407 local r=require"util.encodings".idna.to_ascii;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10408 local f=require"util.encodings".idna.to_unicode;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10409 local c=require"util.encodings".base64;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10410 local e=require"util.logger".init("x509");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10411 local y=require"util.multitable";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10412 local p=string.format;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10413 local d=ipairs;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10414 local _ENV=nil;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10415 local u="2.5.4.3";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10416 local h="2.5.29.17";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10417 local i="1.3.6.1.5.5.7.8.5";
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10418 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
10419 local function l(o,a)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10420 local t=r(o)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10421 if t==nil then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10422 e("info","Host %s failed IDNA ToASCII operation",o)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10423 return false
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10424 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10425 t=t:lower()
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10426 local i=t:gsub("^[^.]+%.","")
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10427 for o=1,#a do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10428 local a=a[o]
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10429 if t==a:lower()then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10430 e("debug","Cert dNSName %s matched hostname",a);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10431 return true
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10432 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10433 if a:match("^%*%.")then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10434 local t=a:gsub("^[^.]+%.","")
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10435 if i==t:lower()then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10436 e("debug","Cert dNSName %s matched hostname",a);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10437 return true
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10438 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10439 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10440 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10441 return false
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10442 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10443 local function w(a,t)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10444 local i=o(a)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10445 for a=1,#t do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10446 local t=t[a]
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10447 if t:match("[@/]")then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10448 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
10449 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10450 local a=o(t)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10451 if a==nil then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10452 e("info","Ignoring xmppAddr %s, failed nameprep!",t)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10453 else
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10454 if i==a then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10455 e("debug","Cert xmppAddr %s matched hostname",t)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10456 return true
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10457 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10458 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10459 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10460 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10461 return false
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10462 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10463 local function m(i,o,t)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10464 local a=r(i)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10465 if a==nil then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10466 e("info","Host %s failed IDNA ToASCII operation",i);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10467 return false
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10468 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10469 if o:match("^_")==nil then o="_"..o end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10470 a=a:lower();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10471 local n=a:gsub("^[^.]+%.","")
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10472 for i=1,#t do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10473 local i,t=t[i]:match("^(_[^.]+)%.(.*)");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10474 if o==i then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10475 if a==t:lower()then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10476 e("debug","Cert SRVName %s matched hostname",t);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10477 return true;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10478 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10479 if t:match("^%*%.")then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10480 local a=t:gsub("^[^.]+%.","")
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10481 if n==a:lower()then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10482 e("debug","Cert SRVName %s matched hostname",t)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10483 return true
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10484 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10485 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10486 if a==t:lower()then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10487 e("debug","Cert SRVName %s matched hostname",t);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10488 return true
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10489 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10490 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10491 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10492 return false
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10493 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10494 local function v(a,o,s)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10495 if s.setencode then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10496 s:setencode("utf8");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10497 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10498 local t=s:extensions()
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10499 if t[h]then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10500 local e=t[h];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10501 local t=false
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10502 if e[i]then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10503 t=true
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10504 if o=="_xmpp-client"or o=="_xmpp-server"then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10505 if w(a,e[i])then return true end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10506 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10507 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10508 if e[n]then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10509 t=true
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10510 if o and m(a,o,e[n])then return true end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10511 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10512 if e["dNSName"]then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10513 t=true
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10514 if l(a,e["dNSName"])then return true end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10515 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10516 if e["uniformResourceIdentifier"]then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10517 t=true
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10518 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10519 if t then return false end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10520 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10521 local o=s:subject()
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10522 local t=nil
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10523 for a=1,#o do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10524 local a=o[a]
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10525 if a["oid"]==u then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10526 if t then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10527 e("info","Certificate has multiple common names")
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10528 return false
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10529 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10530 t=a["value"];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10531 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10532 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10533 if t then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10534 return l(a,{t})
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10535 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10536 return false
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10537 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10538 local function l(s)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10539 if s.setencode then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10540 s:setencode("utf8");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10541 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10542 local a=y.new();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10543 local e=s:extensions();
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10544 local t=e[h];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10545 if t then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10546 if t["dNSName"]then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10547 for t,e in d(t["dNSName"])do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10548 local t=e:sub(1,2)=="*.";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10549 if t then e=e:sub(3);end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10550 e=f(o(e));
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10551 if e then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10552 if t then e="*."..e;end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10553 a:set(e,"*",true);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10554 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10555 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10556 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10557 if t[i]then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10558 for t,e in d(t[i])do
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10559 e=o(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10560 if e then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10561 a:set(e,"xmpp-client",true);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10562 a:set(e,"xmpp-server",true);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10563 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10564 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10565 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10566 if t[n]then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10567 for t,e in d(t[n])do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10568 local t,e=e:match("^_([^.]+)%.(.*)");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10569 if t then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10570 e=o(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10571 if e then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10572 a:set(e,t,true);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10573 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10574 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10575 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10576 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10577 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10578 local e=s:subject();
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10579 for t=1,#e do
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10580 local e=e[t];
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10581 if e.oid==u then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10582 local e=o(e.value);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10583 if e and r(e)then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10584 a:set(e,"*",true);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10585 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10586 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10587 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10588 return a.data;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10589 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10590 local t="%-%-%-%-%-BEGIN ([A-Z ]+)%-%-%-%-%-\r?\n"..
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10591 "([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
10592 local function a(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10593 local t,e=e:match(t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10594 if t and e then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10595 return c.decode(e),t;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10596 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10597 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10598 local i=('.'):rep(64);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10599 local o="-----BEGIN %s-----\n%s\n-----END %s-----\n"
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10600 local function n(t,e)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10601 e=e and e:upper()or"CERTIFICATE";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10602 t=c.encode(t);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10603 return p(o,e,t:gsub(i,'%0\n',(#t-1)/64),e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10604 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10605 return{
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10606 verify_identity=v;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10607 get_identities=l;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10608 pem2der=a;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10609 der2pem=n;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10610 };
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10611 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10612 package.preload['verse.bosh']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10613 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10614 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10615 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
10616 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10617 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10618 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10619 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10620 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10621 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10622 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10623 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10624 local h=require"util.xmppstream".new;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10625 local i=require"util.stanza";
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10626 require"net.httpclient_listener";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10627 local o=require"net.http";
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10628 local e=setmetatable({},{__index=verse.stream_mt});
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10629 e.__index=e;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10630 local s="http://etherx.jabber.org/streams";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10631 local n="http://jabber.org/protocol/httpbind";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10632 local a=5;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10633 function verse.new_bosh(a,t)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10634 local t={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10635 bosh_conn_pool={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10636 bosh_waiting_requests={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10637 bosh_rid=math.random(1,999999);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10638 bosh_outgoing_buffer={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10639 bosh_url=t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10640 conn={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10641 };
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10642 function t:reopen()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10643 self.bosh_need_restart=true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10644 self:flush();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10645 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10646 local t=verse.new(a,t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10647 return setmetatable(t,e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10648 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10649 function e:connect()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10650 self:_send_session_request();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10651 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10652 function e:send(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10653 self:debug("Putting into BOSH send buffer: %s",tostring(e));
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10654 self.bosh_outgoing_buffer[#self.bosh_outgoing_buffer+1]=i.clone(e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10655 self:flush();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10656 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10657 function e:flush()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10658 if self.connected
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10659 and#self.bosh_waiting_requests<self.bosh_max_requests
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10660 and(#self.bosh_waiting_requests==0
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10661 or#self.bosh_outgoing_buffer>0
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10662 or self.bosh_need_restart)then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10663 self:debug("Flushing...");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10664 local t=self:_make_body();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10665 local e=self.bosh_outgoing_buffer;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10666 for o,a in ipairs(e)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10667 t:add_child(a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10668 e[o]=nil;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10669 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10670 self:_make_request(t);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10671 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10672 self:debug("Decided not to flush.");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10673 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10674 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10675 function e:_make_request(i)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10676 local e,t=o.request(self.bosh_url,{body=tostring(i)},function(o,e,t)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10677 if e~=0 then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10678 self.inactive_since=nil;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10679 return self:_handle_response(o,e,t);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10680 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10681 local e=os.time();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10682 if not self.inactive_since then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10683 self.inactive_since=e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10684 elseif e-self.inactive_since>self.bosh_max_inactivity then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10685 return self:_disconnected();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10686 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10687 self:debug("%d seconds left to reconnect, retrying in %d seconds...",
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10688 self.bosh_max_inactivity-(e-self.inactive_since),a);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10689 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10690 timer.add_task(a,function()
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10691 self:debug("Retrying request...");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10692 for e,a in ipairs(self.bosh_waiting_requests)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10693 if a==t then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10694 table.remove(self.bosh_waiting_requests,e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10695 break;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10696 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10697 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10698 self:_make_request(i);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10699 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10700 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10701 if e then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10702 table.insert(self.bosh_waiting_requests,e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10703 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10704 self:warn("Request failed instantly: %s",t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10705 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10706 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10707 function e:_disconnected()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10708 self.connected=nil;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10709 self:event("disconnected");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10710 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10711 function e:_send_session_request()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10712 local e=self:_make_body();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10713 e.attr.hold="1";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10714 e.attr.wait="60";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10715 e.attr["xml:lang"]="en";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10716 e.attr.ver="1.6";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10717 e.attr.from=self.jid;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10718 e.attr.to=self.host;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10719 e.attr.secure='true';
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10720 o.request(self.bosh_url,{body=tostring(e)},function(e,t)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10721 if t==0 then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10722 return self:_disconnected();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10723 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10724 local e=self:_parse_response(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10725 if not e then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10726 self:warn("Invalid session creation response");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10727 self:_disconnected();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10728 return;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10729 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10730 self.bosh_sid=e.attr.sid;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10731 self.bosh_wait=tonumber(e.attr.wait);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10732 self.bosh_hold=tonumber(e.attr.hold);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10733 self.bosh_max_inactivity=tonumber(e.attr.inactivity);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10734 self.bosh_max_requests=tonumber(e.attr.requests)or self.bosh_hold;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10735 self.connected=true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10736 self:event("connected");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10737 self:_handle_response_payload(e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10738 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10739 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10740 function e:_handle_response(t,a,e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10741 if self.bosh_waiting_requests[1]~=e then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10742 self:warn("Server replied to request that wasn't the oldest");
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10743 for a,t in ipairs(self.bosh_waiting_requests)do
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10744 if t==e then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10745 self.bosh_waiting_requests[a]=nil;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10746 break;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10747 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10748 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10749 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10750 table.remove(self.bosh_waiting_requests,1);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10751 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10752 local e=self:_parse_response(t);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10753 if e then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10754 self:_handle_response_payload(e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10755 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10756 self:flush();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10757 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10758 function e:_handle_response_payload(t)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10759 local e=t.tags;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10760 for t=1,#e do
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10761 local e=e[t];
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10762 if e.attr.xmlns==s then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10763 self:event("stream-"..e.name,e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10764 elseif e.attr.xmlns then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10765 self:event("stream/"..e.attr.xmlns,e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10766 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10767 self:event("stanza",e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10768 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10769 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10770 if t.attr.type=="terminate"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10771 self:_disconnected({reason=t.attr.condition});
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10772 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10773 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10774 local a={
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10775 stream_ns="http://jabber.org/protocol/httpbind",stream_tag="body",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10776 default_ns="jabber:client",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10777 streamopened=function(e,t)e.notopen=nil;e.payload=verse.stanza("body",t);return true;end;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10778 handlestanza=function(t,e)t.payload:add_child(e);end;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10779 };
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10780 function e:_parse_response(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10781 self:debug("Parsing response: %s",e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10782 if e==nil then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10783 self:debug("%s",debug.traceback());
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10784 self:_disconnected();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10785 return;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10786 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10787 local t={notopen=true,stream=self};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10788 local a=h(t,a);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10789 a:feed(e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10790 return t.payload;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10791 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10792 function e:_make_body()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10793 self.bosh_rid=self.bosh_rid+1;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10794 local e=verse.stanza("body",{
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10795 xmlns=n;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10796 content="text/xml; charset=utf-8";
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10797 sid=self.bosh_sid;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10798 rid=self.bosh_rid;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10799 });
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10800 if self.bosh_need_restart then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10801 self.bosh_need_restart=nil;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10802 e.attr.restart='true';
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10803 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10804 return e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10805 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10806 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10807 package.preload['verse.client']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10808 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10809 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10810 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
10811 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10812 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10813 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10814 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10815 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10816 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10817 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
10818 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10819 local t=require"verse";
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10820 local i=t.stream_mt;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10821 local s=require"util.jid".split;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10822 local h=require"net.adns";
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10823 local a=require"util.stanza";
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10824 local o=require"util.id".short;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10825 math.randomseed((require"socket".gettime()*1e6)%2147483648);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10826 t.message,t.presence,t.iq,t.stanza,t.reply,t.error_reply=
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10827 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
10828 function t.iq(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10829 if not e.id then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10830 e.id=o();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10831 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10832 return a.iq(e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10833 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10834 local r=require"util.xmppstream".new;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10835 local n="http://etherx.jabber.org/streams";
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10836 local function d(e,t)
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10837 if e.priority==t.priority then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10838 if not e.weight_r then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10839 e.weight_r=math.random();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10840 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10841 if not t.weight_r then
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10842 t.weight_r=math.random();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10843 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10844 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
10845 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10846 return e.priority<t.priority;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10847 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10848 local o={
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10849 stream_ns=n,
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10850 stream_tag="stream",
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10851 default_ns="jabber:client"};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10852 function o.streamopened(e,t)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10853 e.stream_id=t.id;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10854 if not e:event("opened",t)then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10855 e.notopen=nil;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10856 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10857 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10858 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10859 function o.streamclosed(e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10860 e.notopen=true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10861 if not e.closed then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10862 e:send("</stream:stream>");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10863 e.closed=true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10864 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10865 e:event("closed");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10866 return e:close("stream closed")
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10867 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10868 function o.handlestanza(t,e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10869 if e.attr.xmlns==n then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10870 return t:event("stream-"..e.name,e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10871 elseif e.attr.xmlns then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10872 return t:event("stream/"..e.attr.xmlns,e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10873 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10874 return t:event("stanza",e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10875 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10876 function o.error(a,t,e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10877 if a:event(t,e)==nil then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10878 if e then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10879 local t=e:get_child(nil,"urn:ietf:params:xml:ns:xmpp-streams");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10880 local e=e:get_child_text("text","urn:ietf:params:xml:ns:xmpp-streams");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10881 error(t.name..(e and": "..e or""));
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10882 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10883 error(e and e.name or t or"unknown-error");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10884 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10885 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10886 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10887 function i:reset()
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10888 if self.stream then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10889 self.stream:reset();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10890 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10891 self.stream=r(self,o);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10892 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10893 self.notopen=true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10894 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10895 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10896 function i:connect_client(e,a,i,o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10897 self.jid,self.password=e,a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10898 self.client_key,self.server_key=i,o;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10899 self.username,self.host,self.resource=s(e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10900 self:add_plugin("tls");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10901 self:add_plugin("sasl");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10902 self:add_plugin("bind");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10903 function self.data(t,e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10904 local a,t=self.stream:feed(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10905 if a then return;end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10906 self:debug("Received invalid XML (%s) %d bytes: %s",tostring(t),#e,e:sub(1,300):gsub("[\r\n]+"," "));
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10907 self:close("xml-not-well-formed");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10908 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10909 self:hook("connected",function()self:reopen();end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10910 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
10911 self:hook("read-timeout",function()self:send(" ");return true;end,-1);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10912 self.curr_id=0;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10913 self.tracked_iqs={};
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10914 self:hook("stanza",function(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10915 local t,a=e.attr.id,e.attr.type;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10916 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
10917 self.tracked_iqs[t](e);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
10918 self.tracked_iqs[t]=nil;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10919 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10920 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10921 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10922 self:hook("stanza",function(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10923 local a;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10924 if e.attr.xmlns==nil or e.attr.xmlns=="jabber:client"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10925 if e.name=="iq"and(e.attr.type=="get"or e.attr.type=="set")then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10926 local o=e.tags[1]and e.tags[1].attr.xmlns;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10927 if o then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10928 a=self:event("iq/"..o,e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10929 if not a then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10930 a=self:event("iq",e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10931 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10932 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10933 if a==nil then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10934 self:send(t.error_reply(e,"cancel","service-unavailable"));
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10935 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10936 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10937 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10938 a=self:event(e.name,e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10939 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10940 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10941 return a;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10942 end,-1);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10943 self:hook("outgoing",function(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10944 if e.name then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10945 self:event("stanza-out",e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10946 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10947 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10948 self:hook("stanza-out",function(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10949 if not e.attr.xmlns then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10950 self:event(e.name.."-out",e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10951 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10952 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10953 local function e()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10954 self:event("ready");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10955 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10956 self:hook("session-success",e,-1)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10957 self:hook("bind-success",e,-1);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10958 local t=self.close;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10959 function self:close(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10960 self.close=t;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10961 if not self.closed then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10962 self:send("</stream:stream>");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10963 self.closed=true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10964 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10965 return self:close(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10966 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10967 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10968 local function t()
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10969 self:connect(self.connect_host or self.host,self.connect_port or 5222);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10970 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10971 if not(self.connect_host or self.connect_port)then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10972 h.lookup(function(a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10973 if a then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10974 local e={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10975 self.srv_hosts=e;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10976 for a,t in ipairs(a)do
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10977 table.insert(e,t.srv);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10978 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10979 table.sort(e,d);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10980 local a=e[1];
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10981 self.srv_choice=1;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10982 if a then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10983 self.connect_host,self.connect_port=a.target,a.port;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10984 self:debug("Best record found, will connect to %s:%d",self.connect_host or self.host,self.connect_port or 5222);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10985 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10986 self:hook("disconnected",function()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10987 if self.srv_hosts and self.srv_choice<#self.srv_hosts then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10988 self.srv_choice=self.srv_choice+1;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10989 local e=e[self.srv_choice];
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10990 self.connect_host,self.connect_port=e.target,e.port;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10991 t();
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10992 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10993 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10994 end,1e3);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10995 self:hook("connected",function()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10996 self.srv_hosts=nil;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10997 end,1e3);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
10998 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
10999 t();
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11000 end,"_xmpp-client._tcp."..(self.host)..".","SRV");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11001 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11002 t();
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
11003 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
11004 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
11005 function i:reopen()
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11006 self:reset();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11007 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
11008 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
11009 end
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
11010 function i:send_iq(e,a)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
11011 local t=e.attr.id or uuid.generate();
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
11012 self.tracked_iqs[t]=a;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
11013 e.attr.id=t;
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
11014 self:send(e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11015 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11016 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11017 package.preload['verse.component']=(function(...)
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
11018 local _ENV=_ENV;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
11019 local function e(t,...)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
11020 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
11021 package.loaded[t]=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
11022 for t=1,select("#",...)do
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
11023 (select(t,...))(e);
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
11024 end
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
11025 _ENV=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
11026 _M=e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
11027 return e;
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
11028 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11029 local t=require"verse";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11030 local s=t.stream_mt;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11031 local r=require"util.jid".split;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11032 local a=require"util.stanza";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11033 local h=require"util.hashes".sha1;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11034 t.message,t.presence,t.iq,t.stanza,t.reply,t.error_reply=
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11035 a.message,a.presence,a.iq,a.stanza,a.reply,a.error_reply;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11036 local d=require"util.xmppstream".new;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11037 local n="http://etherx.jabber.org/streams";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11038 local o="jabber:component:accept";
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11039 local i={
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11040 stream_ns=n,
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11041 stream_tag="stream",
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11042 default_ns=o};
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11043 function i.streamopened(e,t)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11044 e.stream_id=t.id;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11045 if not e:event("opened",t)then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11046 e.notopen=nil;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11047 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11048 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11049 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11050 function i.streamclosed(e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11051 return e:event("closed");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11052 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11053 function i.handlestanza(t,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11054 if e.attr.xmlns==n then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11055 return t:event("stream-"..e.name,e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11056 elseif e.attr.xmlns or e.name=="handshake"then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11057 return t:event("stream/"..(e.attr.xmlns or o),e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11058 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11059 return t:event("stanza",e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11060 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11061 function s:connect_component(e,n)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11062 self.jid,self.password=e,n;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11063 self.username,self.host,self.resource=r(e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11064 function self:reset()
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11065 if self.stream then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11066 self.stream:reset();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11067 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11068 self.stream=d(self,i);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11069 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11070 self.notopen=true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11071 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11072 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11073 function self:reopen()
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11074 self:reset();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11075 self:send(a.stanza("stream:stream",{to=self.jid,["xmlns:stream"]='http://etherx.jabber.org/streams',
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11076 xmlns=o,version="1.0"}):top_tag());
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11077 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11078 function self:close(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11079 if not self.notopen then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11080 self:send("</stream:stream>");
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11081 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11082 local t=self.conn.disconnect();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11083 self.conn:close();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11084 t(conn,e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11085 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11086 function self:send_iq(t,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11087 local e=self:new_id();
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11088 self.tracked_iqs[e]=a;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11089 t.attr.id=e;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11090 self:send(t);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11091 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11092 function self:new_id()
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11093 self.curr_id=self.curr_id+1;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11094 return tostring(self.curr_id);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11095 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11096 function self.data(t,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11097 local a,t=self.stream:feed(e);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
11098 if a then return;end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11099 stream:debug("Received invalid XML (%s) %d bytes: %s",tostring(t),#e,e:sub(1,300):gsub("[\r\n]+"," "));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11100 stream:close("xml-not-well-formed");
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11101 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11102 self:hook("incoming-raw",function(e)return self.data(self.conn,e);end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11103 self.curr_id=0;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11104 self.tracked_iqs={};
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11105 self:hook("stanza",function(e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11106 local t,a=e.attr.id,e.attr.type;
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11107 if t and e.name=="iq"and(a=="result"or a=="error")and self.tracked_iqs[t]then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11108 self.tracked_iqs[t](e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11109 self.tracked_iqs[t]=nil;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11110 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11111 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11112 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11113 self:hook("stanza",function(e)
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11114 local a;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11115 if e.attr.xmlns==nil or e.attr.xmlns=="jabber:client"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11116 if e.name=="iq"and(e.attr.type=="get"or e.attr.type=="set")then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11117 local o=e.tags[1]and e.tags[1].attr.xmlns;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11118 if o then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11119 a=self:event("iq/"..o,e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11120 if not a then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11121 a=self:event("iq",e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11122 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11123 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11124 if a==nil then
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11125 self:send(t.error_reply(e,"cancel","service-unavailable"));
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11126 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11127 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11128 else
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11129 a=self:event(e.name,e);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11130 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11131 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11132 return a;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11133 end,-1);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11134 self:hook("opened",function(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11135 print(self.jid,self.stream_id,e.id);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11136 local e=h(self.stream_id..n,true);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11137 self:send(a.stanza("handshake",{xmlns=o}):text(e));
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11138 self:hook("stream/"..o,function(e)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11139 if e.name=="handshake"then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11140 self:event("authentication-success");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11141 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11142 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11143 end);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11144 local function e()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11145 self:event("ready");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11146 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11147 self:hook("authentication-success",e,-1);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11148 self:connect(self.connect_host or self.host,self.connect_port or 5347);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11149 self:reopen();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11150 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11151 end)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11152 pcall(require,"luarocks.require");
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
11153 local h=require"socket";
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11154 pcall(require,"ssl");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11155 local a=require"net.server";
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
11156 local s=require"util.events";
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11157 local o=require"util.logger";
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
11158 local n=require"util.format".format;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
11159 local e={};
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
11160 e.server=a;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11161 local t={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11162 t.__index=t;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
11163 e.stream_mt=t;
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11164 e.plugins={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11165 function e.init(...)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11166 for e=1,select("#",...)do
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
11167 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
11168 if not t then
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
11169 error("Verse connection module not found: verse."..select(e,...)..a);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11170 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11171 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11172 return e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11173 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11174 local i=0;
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11175 function e.new(a,o)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11176 local t=setmetatable(o or{},t);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11177 i=i+1;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11178 t.id=tostring(i);
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11179 t.logger=a 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
11180 t.events=s.new();
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11181 t.plugins={};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11182 t.verse=e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11183 return t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11184 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11185 e.add_task=require"util.timer".add_task;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11186 e.logger=o.init;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11187 e.new_logger=o.init;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11188 e.log=e.logger("verse");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11189 function e.set_log_handler(e,t)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11190 t=t or{"debug","info","warn","error"};
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11191 o.reset();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11192 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
11193 local o=e;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
11194 function e(a,t,e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
11195 o:write(a,"\t",t,"\t",e,"\n");
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11196 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11197 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11198 if e then
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11199 local function i(o,a,t,...)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11200 return e(o,a,n(t,...));
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11201 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11202 for t,e in ipairs(t)do
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11203 o.add_level_sink(e,i);
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11204 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11205 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11206 end
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11207 function e._default_log_handler(o,t,a)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11208 return io.stderr:write(o,"\t",t,"\t",a,"\n");
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11209 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
11210 e.set_log_handler(e._default_log_handler,{"error"});
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11211 local function o(t)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11212 e.log("error","Error: %s",t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11213 e.log("error","Traceback: %s",debug.traceback());
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11214 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11215 function e.set_error_handler(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11216 o=e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11217 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11218 function e.loop()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11219 return xpcall(a.loop,o);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11220 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11221 function e.step()
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11222 return xpcall(a.step,o);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11223 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11224 function e.quit()
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
11225 return a.setquitting("once");
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11226 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
11227 function e.tls_builder(...)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
11228 return a.tls_builder(...);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
11229 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
11230 function t:listen(t,o)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11231 t=t or"localhost";
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
11232 o=o or 0;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
11233 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
11234 if e then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
11235 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
11236 self.server=e;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
11237 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
11238 return e,a;
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
11239 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
11240 function t:connect(o,i)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
11241 o=o or"localhost";
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
11242 i=tonumber(i)or 5222;
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
11243 local n=h.tcp()
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
11244 n:settimeout(0);
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
11245 n:setoption("keepalive",true);
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
11246 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
11247 if not s and t~="timeout"then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
11248 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
11249 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
11250 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
11251 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
11252 if not e then
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
11253 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
11254 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
11255 end
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
11256 self:set_conn(e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11257 return true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11258 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11259 function t:set_conn(t)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11260 self.conn=t;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11261 self.send=function(a,e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11262 self:event("outgoing",e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11263 e=tostring(e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11264 self:event("outgoing-raw",e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11265 return t:write(e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11266 end;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11267 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11268 function t:close(t)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11269 if not self.conn then
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11270 e.log("error","Attempt to close disconnected connection - possibly a bug");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11271 return;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11272 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11273 local e=self.conn.disconnect();
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
11274 self:event("shutdown");
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11275 self.conn:close();
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11276 e(self.conn,t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11277 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11278 function t:debug(...)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11279 return self.logger("debug",...);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11280 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11281 function t:info(...)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11282 return self.logger("info",...);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11283 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11284 function t:warn(...)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11285 return self.logger("warn",...);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11286 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11287 function t:error(...)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11288 return self.logger("error",...);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11289 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11290 function t:event(e,...)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11291 self:debug("Firing event: "..tostring(e));
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11292 return self.events.fire_event(e,...);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11293 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11294 function t:hook(e,...)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11295 return self.events.add_handler(e,...);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11296 end
180
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11297 function t:unhook(t,e)
249197af6c01 Dockerfile, verse: Add support for sha1 via luaossl
Matthew Wild <mwild1@gmail.com>
parents: 177
diff changeset
11298 return self.events.remove_handler(t,e);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11299 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11300 function e.eventable(e)
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
11301 e.events=s.new();
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11302 e.hook,e.unhook=t.hook,t.unhook;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11303 local t=e.events.fire_event;
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
11304 function e:event(e,...)return t(e,...);end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11305 return e;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11306 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11307 function t:add_plugin(t)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11308 if self.plugins[t]then return true;end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11309 if require("verse.plugins."..t)then
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
11310 local e,a=e.plugins[t](self);
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
11311 if e~=false then
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11312 self:debug("Loaded %s plugin",t);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11313 self.plugins[t]=true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11314 else
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
11315 self:warn("Failed to load %s plugin: %s",t,a);
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11316 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11317 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11318 return self;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11319 end
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
11320 function e.new_listener(t)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11321 local a={};
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
11322 function a.onconnect(o)
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11323 if t.server then
88
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
11324 local a=e.new();
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
11325 o:setlistener(e.new_listener(a));
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
11326 a:set_conn(o);
98b4cf14960b verse.lua: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 12
diff changeset
11327 t:event("connected",{client=a});
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11328 else
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11329 t.connected=true;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11330 t:event("connected");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11331 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11332 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11333 function a.onincoming(a,e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11334 t:event("incoming-raw",e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11335 end
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
11336 function a.ondisconnect(a,e)
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
11337 if a~=t.conn then return end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11338 t.connected=false;
103
9e0e56393978 verse: Update to 5.2-compatible version
Matthew Wild <mwild1@gmail.com>
parents: 88
diff changeset
11339 t:event("disconnected",{reason=e});
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11340 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11341 function a.ondrain(e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11342 t:event("drained");
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11343 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11344 function a.onstatus(a,e)
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11345 t:event("status",e);
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11346 end
177
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
11347 function a.onreadtimeout(e)
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
11348 return t:event("read-timeout");
3c19b67a1f0f verse: Update bundled verse version
Matthew Wild <mwild1@gmail.com>
parents: 103
diff changeset
11349 end
12
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11350 return a;
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11351 end
fc435d567896 Add verse for convenience
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11352 return e;

mercurial