@@ -0,0 +1,390 @@
1 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #!/usr/bin/wapptclsh
2 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
3 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # A chat program designed to run using the extcgi mechanism of Fossil.
4 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
5 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ encoding system utf-8
6 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
7 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # The name of the chat database file
8 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
9 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc chat-db-name {} {
10 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set x [wapp-param SCRIPT_FILENAME]
11 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set dir [file dir $x]
12 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set fn [file tail $x]
13 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return $dir/-$fn.db
14 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
15 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
16 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Verify permission to use chat. Return true if not authorized.
17 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Return false if the Fossil user is allowed to access chat.
18 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
19 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc not-authorized {} {
20 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set cap [wapp-param FOSSIL_CAPABILITIES]
21 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return [expr {![string match *i* $cap]}]
22 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
23 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
24 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # The default page.
25 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Load the initial chat screen.
26 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
27 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc wapp-default {} {
28 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wapp-content-security-policy off
29 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wapp-trim {
30 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <div class="fossil-doc" data-title="Chat">
31 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
32 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i(function(){
33 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ let xt authorized.
34 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Return falsesbox");
35 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ let form = document.forms[0]
36 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ var mxMsg = 0
37 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ var _me = "%string($me)"
38 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ t have privileges e.preventDefault();
39 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ chat program designed to ru>
40 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <table border="0" cellpadding="2" id="intab" width="100%">
41 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <tr>
42 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <td align="right">Message:</td>
43 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <td width="100%">: 'POST',
44 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ></td>
45 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <td>db
46 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
47 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
48 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Verify permissirue if not </td>
49 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ </tr>
50 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <tr>
51 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <td align="right">File:</td>
52 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <td align="left"> var m = jx.msgs[i]
53 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ </td>
54 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ </trchanis#!/usr/bin/wapputtr")
55 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nt</a> |
56 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <
57 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ f.rxt</a>
58 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <style>
59 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ \# varextcgi mechanis#!/usr/bin/wapptclsh
60 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
61 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # A 1;
62 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ margin-bottom: 1em;
63 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ al$dir/-$fn.db
64 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }m.xfrom))
65 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
66 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ file
67 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
68 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc chat-db: flex;
69 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ flex-direction: 1 varoration:r = functio td.appendChild(span)
70 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ .str.substring(pptclsh
71 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
72 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # A chchat prhat program designed to r varof Fossil.
73 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
74 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ encoding of the chat databa
75 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ssil.
76 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
77 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ enco#!/usr/bin/wapptcimg)
78 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ il.
79 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # flex;
80 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ flex-direction: 1 fn [file tail $x]
81 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return $d$dir/-$fn.db
82 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
83 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
84 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Verify pe }
85 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
86 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if not authorized.
87 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Ret
88 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
89 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ not authorized.
90 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Return falsllowed to acces ccess chat.
91 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
92 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc not
93 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ app-param FOS im {
94 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <div class="fossil-doc"
95 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ let xt authorized.;
96 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ let form = document.forms[0]
97 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ var mxMsg = 0
98 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ var _me = "%string($me)"
99 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ t have privileges e.preventDefault();
100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ chat program designed to run using the extcgi mechanism of Fossil.
101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ encoding s method: 'POST',
104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ e file
105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ pro }at database file
107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ form.msg.value = ""
108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ dir [file dir $x]
109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set
110 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ });
111 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ir/-$fn.db
112 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
113 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
114 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Verify permissirue if not authorized.
115 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # for(var i=0; i<jx.msgs.length; i++){
116 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ var m = jx.msgs[i]
117 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ var rossil.
118 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
119 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ encoding system uttr")
120 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nt</a> |
121 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <
122 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ f.rxt</a>
123 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <style>
124 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ \# varextcgi mechanis#!/usr/bin/wapptclsh
125 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
126 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # A 1;
127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ margin-bottom: 1em;
128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ al$dir/-$fn.db
129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }m.xfrom))
130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ file
132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc chat-db: flex;
134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ flex-direction: 1 varoration:r = functio td.appendChild(span)
135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ .str.substring(pptclsh
136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # A chchat prhat program designed to r varof Fossil.
138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
139 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ encoding of the chat databa
140 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ssil.
141 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
142 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ enco#!/usr/bin/wapptcimg)
143 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ il.
144 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
145 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ encoding system var aossil.
146 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
147 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ encoding system uta");
148 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ var) user have the .user
149 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ad2dde1;*/
150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* The conten
152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ element of a FIELDSET) */
153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ssil.
154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ enco#!/usr/bin/wapptcls
156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ var brossil.
158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ encoding system utbr");
160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set dir [fi
162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ .#!/usr/bin/wapptcbr);
163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }t dir [file dir $x]
164 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set
165 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return $dir/-$fn.db
166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }m.xmsg));
167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ A chat program designed to run usif Fossil.
168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ adow: 0.2em 0.2em 0Fossil.
170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ encoding system s');
172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ file
174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc chat-db: flex;
176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ flex-direction: 1 fn [file tail $x]
177 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return $d$dir/-$fn.db
178 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Verify pe }
181 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
182 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if not authorized.
183 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Ret
184 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
185 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ not authorized.
186 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Return falsllowed to acces ccess chat.
187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc not
189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ app-param FOSSIL_CAPABILITIES]
190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return [expr {![string match *i* $cap]}]
191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # The default page.
194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Load the initial chat screen.
195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc wapp-default {} {
197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wapp-content-security-policy off
198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wapp-trim {
199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <div class="fossil-doc" data-title="Chat">
200 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
201 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[noconst dmsg = messageToDOM(m. setTimeout(poll, dmsgub);
202 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #!/usr/bin/wapptclsh
203 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
204 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # A chat program designed to run using the extcgi mechanism of Fossil.
205 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
206 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ encoding system utf-8
207 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
208 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # The name of the chat database file
209 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
210 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc chat-db-name {} {
211 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set x [wapp-param SCRIPT_FILENAME]
212 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set dir [file dir $x]
213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set fn [file tail $x]
214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return $dir/-$fn.db
215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Verify permission to use chat. Return true if not authorized.
218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Return false if the Fossil user is allowed to access chat.
219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc not-authorized {} {
221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set cap [wapp-param FOSSIL_CAPABILITIES]
222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return [expr {![string match *i* $cap]}]
223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
225 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # The default page.
226 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Load the initial chat screen.
227 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
228 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc wapp-default {} {
229 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wapp-content-security-policy off
230 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wapp-trim {
231 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <div class="fossil-doc" data-title="Chat">
232 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
233 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[not-authorized]} {
234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wapp-trim {
235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <h1>Not authorized</h1> the results to.
236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return [expr {![string match *i* $cap]}]
238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # The default page.
241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Load the initial chat screen.
242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc wapp-default {} {
244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wapp-content-security-policy off
245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wapp-trim {
246 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <div class="fossil-doc" data-title="Chat">
247 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
248 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[not-authorized]} {
249 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wapp-trim {
250 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <h1>Not authorized</h1>
251 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <p>You must have privileges to use this chatroom</p>
252 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ </dptclsh
253 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
254 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # A chat program designed to run using the extcgi mechanism of Fossil.
255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ encoding system utf-8
257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # The name of the chat database file
259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc chat-db-name {} {
261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set x [wapp-param SCRIPT_FILENAME]
262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set dir [file dir $x]
263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set fn [file tail $x]
264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return $dir/-$fn.db
265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Verify permission to use chat. Return true if not authorized.
268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Return false if the Fossil user is allowed to access cha
269 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <hr>
270 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <table id="diallt {}#!/u/env">CGI environment</a> |
271 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <a href="%string($cgiFn)/self">Wapp script</a>
272 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <style>
273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ \#dialog {
274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ width: 97%;
275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ \#chat-input-area {
277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wlex;
278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ flex-d display: flex;
279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ flex-direction: 1;
280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ margin-bottom: 1em;
281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ aligns: center;
282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ \#chat-inpu# A chat program designed to run #e { /* for @USERNAME references */
284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ text-decoration: underline;
285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ font-weight: bold;
286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* A wrapmargin-bottom: 1em;
288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ align for @USERNAME references */
289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ text-decoration: underline;
290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ font-weight: bold;
291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* A wrapper for a single single message (one row of the UI) */
293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ .message-row {
294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ margin-bottom: 0.5em;
295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ border: none;
296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ display: flex;
297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ flex-direction: row;
298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ justify-content: flex-start;
299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*border: 1px solid rgba(0,0,0,0.2);
300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ border-radius: 0.25em;
301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ box-shadow: 0.2em 0.2em 0.2em rgba(0, 0, 0, 0.29);*/
302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ border: none;
303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Rows for the current user have the .user-is-me CSS class
305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ and get right-aligned. */
306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ .message-row.user-is-me {
307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ justify-content: flex-end;
308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ .2em rgba(0, 0, 0, 0.29) user hav(0, 0, 0, 0.29) user hprevStart = 0;
309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ f.str = straligned. */
310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ .messad2dd, f.replacer);
311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ f.rx(0, 0, 0, 0.29) userdelete f.str;
312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(f(the body element of a FIE#!/usr/bipptclsh
313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #nt of a FIELDSET) */#!/usr/bin/wapptclsh
314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # A chat program designed to run using the extcgi mepptclsh
316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # A chat program designed to run using the extcgi mechanism of Fossil.
318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ encoding system utf-8
320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # The name of the chat database file
322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
323 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc chat-db-name {} {
324 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set x [wapp-param SCRIPT_FILENAME]
325 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set dir [file dir $x]
326 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set fn [file tail $x]
327 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return $dir/-$fn.db
328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Verify permission to use chat. Return true if not authorized.
331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Return false if the Fossil user is allowed to access chat.
332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc not-authorized {} {
334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set cap [wapp-param FOSSIL_CAPABILITIES]
335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return [expr {![string match *i* $cap]}]
336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # The default page.
339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Load the initial chat screen.
340 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
341 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc wapp-default {} {
342 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wapp-content-security-policy off
343 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wapp-trim {
344 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <div class="fossil-doc" data-title="Chat">
345 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
346 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if {[not-authorized]} {
347 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ wapp-trim {
348 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <h1>Not authorized</h1>
349 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ <p>You must have privileges to use this chatroom</p>
350 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ </dptclsh
351 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
352 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # A chat program designed to run using the extcgi mechanism of Fossil.
353 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
354 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ encoding system utf-8
355 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # The name of the chat database file
357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ #
358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ proc chat-db-name {} {
359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set x [wapp-param SCRIPT_FILENAME]
360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set dir [file dir $x]
361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ set fn [file tail $x]
362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return $dir/-$fn.db
363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Verify permissi poll()
366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ E references */
367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ text-decoration: underline;
368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ font-weight: bold;
369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* A wrapper for a single single message (one row of the UI) */
371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ .message-row {
372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ margin-bottom: 0.5em;
373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ border: none;
374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ display: flex;
375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ flex-direction: row;
376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ justify-content: flex-start;
377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*border: 1px solid rgba(0,0,0,0.2);
378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ border-radius: 0.25em;
379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ box-shadow: 0.2em 0.2em 0.2em rgba(0, 0, 0, 0.29);*/
380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ border: none;
381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
382 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* Rows for the current user have the .user-is-me CSS class
383 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ and get right-aligned. */
384 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ .message-row.user-is-me {
385 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ justify-content: flex-end;
386 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ .2em rgba(0, 0, 0, 0.29) user hav(0, 0, 0, 0.29) user hprevStart = 0;
387 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ f.str = straligned. */
388 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ .messad2dd, f.replacer);
389 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ f.rx(0, 0, 0, 0.29) userdelete f.str;
390 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if(f(the body element of a FIE#!/usr/bipptcl