PRiVYBB first commit

This commit is contained in:
DOLBY ATMOSFEAR 2020-08-09 01:42:25 -05:00
commit 05499fdcaf
4278 changed files with 674740 additions and 0 deletions

324
License.txt Normal file
View File

@ -0,0 +1,324 @@
European Union Public Licence
V. 1.1
EUPL © the European Community 2007
This European Union Public Licence (the “EUPL”) applies to the Work or Software
(as defined below) which is provided under the terms of this Licence. Any use of
the Work, other than as authorised under this Licence is prohibited (to the extent
such use is covered by a right of the copyright holder of the Work).
The Original Work is provided under the terms of this Licence when the Licensor
(as defined below) has placed the following notice immediately following the
copyright notice for the Original Work:
Licensed under the EUPL V.1.1
or has expressed by any other mean his willingness to license under the EUPL.
1. Definitions
In this Licence, the following terms have the following meaning:
- The Licence: this Licence.
- The Original Work or the Software: the software distributed and/or communicated
by the Licensor under this Licence, available as Source Code and also as Executable
Code as the case may be.
- Derivative Works: the works or software that could be created by the Licensee,
based upon the Original Work or modifications thereof. This Licence does not
define the extent of modification or dependence on the Original Work required in
order to classify a work as a Derivative Work; this extent is determined by
copyright law applicable in the country mentioned in Article 15.
- The Work: the Original Work and/or its Derivative Works.
- The Source Code: the human-readable form of the Work which is the most
convenient for people to study and modify.
- The Executable Code: any code which has generally been compiled and which is
meant to be interpreted by a computer as a program.
- The Licensor: the natural or legal person that distributes and/or communicates
the Work under the Licence.
- Contributor(s): any natural or legal person who modifies the Work under the
Licence, or otherwise contributes to the creation of a Derivative Work.
- The Licensee or “You”: any natural or legal person who makes any usage of the
Software under the terms of the Licence.
- Distribution and/or Communication: any act of selling, giving, lending, renting,
distributing, communicating, transmitting, or otherwise making available, on-line
or off-line, copies of the Work or providing access to its essential functionalities
at the disposal of any other natural or legal person.
2. Scope of the rights granted by the Licence
The Licensor hereby grants You a world-wide, royalty-free, non-exclusive,
sub-licensable licence to do the following, for the duration of copyright vested
in the Original Work:
- use the Work in any circumstance and for all usage,
- reproduce the Work,
- modify the Original Work, and make Derivative Works based upon the Work,
- communicate to the public, including the right to make available or display the
Work or copies thereof to the public and perform publicly, as the case may be,
the Work,
- distribute the Work or copies thereof,
- lend and rent the Work or copies thereof,
- sub-license rights in the Work or copies thereof.
Those rights can be exercised on any media, supports and formats, whether now
known or later invented, as far as the applicable law permits so.
In the countries where moral rights apply, the Licensor waives his right to
exercise his moral right to the extent allowed by law in order to make effective
the licence of the economic rights here above listed.
The Licensor grants to the Licensee royalty-free, non exclusive usage rights to
any patents held by the Licensor, to the extent necessary to make use of the
rights granted on the Work under this Licence.
3. Communication of the Source Code
The Licensor may provide the Work either in its Source Code form, or as
Executable Code. If the Work is provided as Executable Code, the Licensor
provides in addition a machine-readable copy of the Source Code of the Work
along with each copy of the Work that the Licensor distributes or indicates,
in a notice following the copyright notice attached to the Work, a repository
where the Source Code is easily and freely accessible for as long as the
Licensor continues to distribute and/or communicate the Work.
4. Limitations on copyright
Nothing in this Licence is intended to deprive the Licensee of the benefits from
any exception or limitation to the exclusive rights of the rights owners in the
Original Work or Software, of the exhaustion of those rights or of other
applicable limitations thereto.
5. Obligations of the Licensee
The grant of the rights mentioned above is subject to some restrictions and
obligations imposed on the Licensee. Those obligations are the following:
Attribution right: the Licensee shall keep intact all copyright, patent or
trademarks notices and all notices that refer to the Licence and to the
disclaimer of warranties. The Licensee must include a copy of such notices and
a copy of the Licence with every copy of the Work he/she distributes and/or
communicates. The Licensee must cause any Derivative Work to carry prominent
notices stating that the Work has been modified and the date of modification.
Copyleft clause: If the Licensee distributes and/or communicates copies of the
Original Works or Derivative Works based upon the Original Work, this
Distribution and/or Communication will be done under the terms of this Licence
or of a later version of this Licence unless the Original Work is expressly
distributed only under this version of the Licence. The Licensee (becoming
Licensor) cannot offer or impose any additional terms or conditions on the Work
or Derivative Work that alter or restrict the terms of the Licence.
Compatibility clause: If the Licensee Distributes and/or Communicates Derivative
Works or copies thereof based upon both the Original Work and another work
licensed under a Compatible Licence, this Distribution and/or Communication can
be done under the terms of this Compatible Licence. For the sake of this clause,
“Compatible Licence” refers to the licences listed in the appendix attached to
this Licence. Should the Licensees obligations under the Compatible Licence
conflict with his/her obligations under this Licence, the obligations of the
Compatible Licence shall prevail.
Provision of Source Code: When distributing and/or communicating copies of the
Work, the Licensee will provide a machine-readable copy of the Source Code or
indicate a repository where this Source will be easily and freely available for
as long as the Licensee continues to distribute and/or communicate the Work.
Legal Protection: This Licence does not grant permission to use the trade names,
trademarks, service marks, or names of the Licensor, except as required for
reasonable and customary use in describing the origin of the Work and reproducing
the content of the copyright notice.
6. Chain of Authorship
The original Licensor warrants that the copyright in the Original Work granted
hereunder is owned by him/her or licensed to him/her and that he/she has the
power and authority to grant the Licence.
Each Contributor warrants that the copyright in the modifications he/she brings
to the Work are owned by him/her or licensed to him/her and that he/she has the
power and authority to grant the Licence.
Each time You accept the Licence, the original Licensor and subsequent
Contributors grant You a licence to their contributions to the Work, under the
terms of this Licence.
7. Disclaimer of Warranty
The Work is a work in progress, which is continuously improved by numerous
contributors. It is not a finished work and may therefore contain defects or
“bugs” inherent to this type of software development.
For the above reason, the Work is provided under the Licence on an “as is” basis
and without warranties of any kind concerning the Work, including without
limitation merchantability, fitness for a particular purpose, absence of defects
or errors, accuracy, non-infringement of intellectual property rights other than
copyright as stated in Article 6 of this Licence.
This disclaimer of warranty is an essential part of the Licence and a condition
for the grant of any rights to the Work.
8. Disclaimer of Liability
Except in the cases of wilful misconduct or damages directly caused to natural
persons, the Licensor will in no event be liable for any direct or indirect,
material or moral, damages of any kind, arising out of the Licence or of the use
of the Work, including without limitation, damages for loss of goodwill, work
stoppage, computer failure or malfunction, loss of data or any commercial damage,
even if the Licensor has been advised of the possibility of such damage. However,
the Licensor will be liable under statutory product liability laws as far such
laws apply to the Work.
9. Additional agreements
While distributing the Original Work or Derivative Works, You may choose to
conclude an additional agreement to offer, and charge a fee for, acceptance of
support, warranty, indemnity, or other liability obligations and/or services
consistent with this Licence. However, in accepting such obligations, You may
act only on your own behalf and on your sole responsibility, not on behalf of
the original Licensor or any other Contributor, and only if You agree to
indemnify, defend, and hold each Contributor harmless for any liability incurred
by, or claims asserted against such Contributor by the fact You have accepted any
such warranty or additional liability.
10. Acceptance of the Licence
The provisions of this Licence can be accepted by clicking on an icon “I agree”
placed under the bottom of a window displaying the text of this Licence or by
affirming consent in any other similar way, in accordance with the rules of
applicable law. Clicking on that icon indicates your clear and irrevocable
acceptance of this Licence and all of its terms and conditions.
Similarly, you irrevocably accept this Licence and all of its terms and
conditions by exercising any rights granted to You by Article 2 of this
Licence, such as the use of the Work, the creation by You of a Derivative Work
or the Distribution and/or Communication by You of the Work or copies thereof.
11. Information to the public
In case of any Distribution and/or Communication of the Work by means of
electronic communication by You (for example, by offering to download the Work
from a remote location) the distribution channel or media (for example, a website)
must at least provide to the public the information requested by the applicable
law regarding the Licensor, the Licence and the way it may be accessible,
concluded, stored and reproduced by the Licensee.
12. Termination of the Licence
The Licence and the rights granted hereunder will terminate automatically upon
any breach by the Licensee of the terms of the Licence.
Such a termination will not terminate the licences of any person who has
received the Work from the Licensee under the Licence, provided such persons
remain in full compliance with the Licence.
13. Miscellaneous
Without prejudice of Article 9 above, the Licence represents the complete
agreement between the Parties as to the Work licensed hereunder.
If any provision of the Licence is invalid or unenforceable under applicable law,
this will not affect the validity or enforceability of the Licence as a whole.
Such provision will be construed and/or reformed so as necessary to make it valid
and enforceable.
The European Commission may publish other linguistic versions and/or new
versions of this Licence, so far this is required and reasonable, without
reducing the scope of the rights granted by the Licence. New versions of
the Licence will be published with a unique version number.
All linguistic versions of this Licence, approved by the European Commission,
have identical value. Parties can take advantage of the linguistic version of
their choice.
14. Jurisdiction
Any litigation resulting from the interpretation of this License, arising
between the European Commission, as a Licensor, and any Licensee, will be subject
to the jurisdiction of the Court of Justice of the European Communities, as laid
down in article 238 of the Treaty establishing the European Community.
Any litigation arising between Parties, other than the European Commission, and
resulting from the interpretation of this License, will be subject to the
exclusive jurisdiction of the competent court where the Licensor resides or
conducts its primary business.
15. Applicable Law
This Licence shall be governed by the law of the European Union country where the
Licensor resides or has his registered office.
This licence shall be governed by the Belgian law if:
- a litigation arises between the European Commission, as a Licensor, and any
Licensee;
- the Licensor, other than the European Commission, has no residence or
registered office inside a European Union country.
===
Appendix
“Compatible Licences” according to article 5 EUPL are:
- GNU General Public License (GNU GPL) v. 2
- Open Software License (OSL) v. 2.1, v. 3.0
- Common Public License v. 1.0
- Eclipse Public License v. 1.0
- Cecill v. 2.0

BIN
PRiVY.tar.gz Normal file

Binary file not shown.

0
asmbb_ipc.lock Normal file
View File

0
asmbb_queue.lock Normal file
View File

716
banlist.txt Normal file
View File

@ -0,0 +1,716 @@
#
#
#
# Binary Defense Systems Artillery Threat Intelligence Feed and Banlist Feed
# https://www.binarydefense.com
#
# Note that this is for public use only.
# The ATIF feed may not be used for commercial resale or in products that are charging fees for such services.
# Use of these feeds for commerical (having others pay for a service) use is strictly prohibited.
#
#
#
1.0.179.195
1.53.208.25
1.83.125.86
2.135.222.2
5.8.18.88
5.190.193.46
5.228.34.140
12.187.215.82
14.141.67.86
14.168.193.202
14.176.170.34
14.177.60.192
14.177.66.171
14.202.180.190
20.37.49.245
23.234.52.222
24.226.148.198
27.49.232.9
27.71.122.81
27.71.206.175
36.78.33.69
36.238.79.150
37.52.166.127
37.76.230.96
37.104.218.115
37.229.119.24
39.40.80.108
39.44.98.129
41.33.146.1
41.62.191.157
41.75.210.240
41.169.160.194
41.224.38.67
41.226.176.203
41.226.191.14
41.233.132.33
42.115.33.206
45.35.39.10
45.141.59.244
45.141.84.162
45.141.87.11
45.147.54.119
45.184.71.170
45.248.160.109
45.254.25.179
46.159.139.28
46.170.248.138
47.52.175.74
49.49.237.206
49.231.148.156
49.231.251.172
50.116.29.180
51.36.93.3
51.38.57.78
51.83.66.171
51.91.212.80
51.255.131.231
52.170.149.131
52.175.248.102
58.37.146.172
58.57.79.242
58.209.119.46
58.213.48.218
58.218.200.113
58.218.204.196
59.11.209.195
59.120.68.102
60.10.12.136
60.190.143.82
61.16.64.86
61.130.110.198
61.147.115.149
61.163.36.4
61.177.172.102
61.216.99.162
61.219.11.153
61.222.59.232
62.150.192.1
63.245.45.135
64.111.123.137
64.227.97.244
65.49.20.66
66.61.192.107
67.193.34.195
68.169.244.147
69.26.23.120
69.30.225.114
69.197.161.210
71.9.102.217
71.167.119.13
72.128.124.66
72.255.61.23
74.82.47.2
74.82.47.3
74.82.47.4
77.28.180.148
77.136.63.144
77.247.181.162
80.82.77.240
80.82.77.245
80.82.78.85
80.227.225.2
81.23.96.94
83.97.20.34
84.38.187.134
84.38.187.194
85.93.218.204
85.209.0.100
85.209.0.101
85.209.0.102
85.209.0.103
85.209.0.112
85.209.0.208
85.209.0.251
85.209.0.252
85.209.0.253
85.239.159.9
86.34.38.177
86.98.148.63
87.13.207.62
88.225.212.228
88.246.215.43
88.255.249.242
89.144.47.17
89.219.22.200
89.248.174.166
91.15.228.156
91.105.73.125
92.118.160.45
93.63.167.100
95.9.28.166
95.9.64.166
95.46.67.239
95.58.224.14
95.67.243.71
95.156.124.211
95.171.15.210
95.213.129.187
101.37.21.63
101.109.143.41
103.26.108.234
103.36.121.68
103.48.25.131
103.62.235.6
103.63.215.38
103.78.9.42
103.82.4.82
103.83.190.242
103.89.91.156
103.103.42.34
103.103.92.131
103.104.162.82
103.108.42.158
103.114.107.250
103.117.203.58
103.118.157.75
103.119.64.219
103.131.95.51
103.133.105.65
103.133.106.244
103.151.46.11
103.229.68.2
103.235.179.230
104.140.188.2
104.140.188.10
104.206.128.62
104.206.128.78
104.244.78.148
104.244.79.181
105.198.236.98
106.51.5.166
106.197.178.123
107.173.54.14
107.173.219.152
108.167.167.227
109.100.182.6
109.169.65.209
110.15.30.242
110.36.216.230
110.39.163.2
110.227.171.11
111.38.216.93
111.59.36.147
111.194.54.179
111.207.167.151
111.254.26.157
112.78.160.60
112.78.187.26
112.85.42.104
112.85.42.227
112.85.42.237
112.105.221.193
112.133.236.38
112.134.196.81
112.213.97.113
113.141.64.23
113.160.166.76
113.162.24.130
113.162.128.219
113.182.135.95
113.185.40.238
113.189.135.106
113.195.243.178
114.33.151.23
114.46.109.245
114.67.168.255
114.242.48.250
114.247.215.221
115.78.132.241
116.90.234.162
116.106.170.38
117.2.190.247
117.6.53.202
117.28.255.165
117.50.44.5
117.161.92.18
117.204.33.250
117.206.154.162
118.99.83.25
118.186.211.27
118.200.79.74
119.96.231.110
119.252.166.10
121.46.231.205
121.69.93.226
121.181.147.9
122.54.185.164
122.96.46.251
122.97.216.52
122.114.30.111
122.157.52.18
122.176.166.240
122.201.23.28
122.226.99.238
122.227.185.101
122.227.189.42
122.252.244.19
123.20.237.245
123.24.172.47
123.127.226.217
124.6.177.122
124.29.198.125
124.104.200.67
124.107.251.152
124.123.97.33
125.19.16.194
125.24.103.245
125.64.94.131
125.75.114.6
125.77.168.166
125.94.149.115
126.73.103.100
128.14.209.250
128.90.55.29
129.250.206.86
134.122.28.190
137.59.76.198
138.68.236.177
139.162.122.110
141.98.10.149
144.91.118.110
144.91.118.113
144.91.123.140
147.30.92.35
149.34.10.66
149.200.208.67
153.0.150.42
153.198.6.47
156.96.118.133
157.119.110.44
158.181.186.133
159.226.73.176
161.35.151.161
161.35.225.81
161.97.94.144
161.97.94.160
162.243.129.33
162.243.129.39
164.68.112.178
168.181.128.110
168.205.124.246
168.245.142.70
170.79.197.1
170.130.187.58
171.11.255.148
171.232.252.130
171.241.155.195
171.247.195.119
171.250.82.88
173.208.211.202
174.99.234.66
175.6.7.143
175.107.218.130
175.169.181.234
176.32.55.40
176.237.19.164
176.238.84.70
177.137.96.2
177.189.214.67
178.45.255.110
178.46.73.26
178.54.7.93
178.65.108.225
178.67.231.34
178.73.215.171
178.86.198.71
179.95.54.74
180.242.19.250
180.242.131.131
180.249.166.209
180.252.151.175
181.46.252.104
181.143.101.194
182.72.33.165
182.128.95.248
182.148.122.16
182.185.154.85
182.253.140.194
183.131.3.210
183.131.85.18
183.131.85.219
183.236.71.170
184.69.185.187
184.105.139.70
184.105.247.196
185.56.80.222
185.81.157.106
185.143.223.250
185.153.199.132
185.176.221.168
185.202.0.22
185.202.0.78
185.202.1.102
185.202.1.122
185.202.1.187
185.230.127.230
186.24.37.210
186.26.119.242
186.47.86.2
186.74.192.242
186.89.244.109
186.90.90.20
186.226.188.28
187.68.83.13
187.111.24.114
187.125.101.61
187.136.3.14
187.148.161.43
187.210.135.89
188.68.93.39
188.113.27.204
188.124.37.71
188.124.37.72
188.162.132.73
188.169.47.2
189.108.95.99
189.145.220.123
189.182.0.100
190.36.20.243
190.36.113.95
190.36.225.100
190.75.37.105
190.78.38.0/24
190.103.80.242
190.200.0.14
190.204.192.152
190.204.243.247
190.206.238.49
190.217.19.91
190.255.4.26
192.35.168.202
192.35.168.218
192.35.168.251
192.241.236.156
193.27.228.31
193.29.13.29
193.56.28.176
193.118.53.202
193.124.129.115
193.169.5.190
193.169.80.11
194.61.54.112
194.183.167.49
195.33.236.150
195.54.161.68
195.54.167.30
195.142.112.244
195.206.105.217
196.30.10.162
196.30.67.109
196.204.23.146
196.221.217.228
197.44.87.243
197.45.22.34
197.46.225.22
197.51.229.42
197.221.210.4
198.27.108.202
198.204.240.90
199.76.38.123
199.201.89.105
200.84.119.61
200.93.15.35
200.146.246.19
200.159.146.134
200.233.128.169
201.20.42.129
201.184.117.230
201.186.137.66
201.234.241.146
201.243.133.198
202.52.232.45
202.98.203.29
202.125.131.90
202.129.211.117
202.140.54.211
202.166.173.170
203.76.248.122
203.114.244.10
203.128.83.213
204.12.234.82
206.123.153.15
207.148.123.84
207.172.196.72
210.42.150.57
211.144.86.102
211.162.66.169
212.156.80.138
212.164.39.176
212.252.140.137
213.85.40.90
213.172.145.66
216.206.218.10
217.78.1.59
217.138.200.229
217.197.225.206
218.92.0.148
218.92.0.215
218.92.0.216
218.92.0.219
218.92.0.220
218.92.0.221
219.151.35.45
219.151.41.253
219.152.17.156
219.153.62.103
219.159.104.69
219.159.170.38
219.216.83.60
219.235.4.98
219.238.170.53
219.246.16.37
220.110.164.64
220.113.15.56
220.125.230.193
220.128.102.12
220.128.102.117
220.128.125.176
220.128.131.120
220.133.83.253
220.133.205.133
220.135.14.101
220.137.95.75
220.142.195.28
220.143.16.90
220.143.170.217
220.161.81.164
220.164.192.6
220.165.9.87
220.165.15.150
220.166.62.58
220.166.116.231
220.167.54.28
220.167.103.46
220.167.106.56
220.167.109.58
220.167.178.22
220.174.24.4
220.176.172.64
220.177.146.30
220.177.147.179
220.178.67.242
220.178.71.156
220.179.66.101
220.179.82.19
220.180.229.94
220.191.220.65
220.194.44.18
220.194.238.47
220.200.162.109
220.202.234.30
220.246.64.146
220.247.224.40
220.247.236.239
220.247.237.57
220.247.242.7
220.247.243.55
220.248.20.74
220.249.16.114
220.249.150.80
221.0.21.124
221.3.132.30
221.6.198.254
221.12.101.123
221.13.12.158
221.13.155.36
221.13.203.135
221.15.244.34
221.15.244.85
221.114.210.133
221.122.68.26
221.122.78.206
221.130.84.185
221.131.172.233
221.132.29.87
221.132.113.188
221.133.17.100
221.133.18.83
221.134.25.43
221.135.84.164
221.139.50.136
221.146.229.22
221.150.226.133
221.182.184.211
221.192.132.236
221.199.171.114
221.203.63.54
221.203.162.6
221.204.177.5
221.204.187.238
221.204.232.74
221.207.21.10
221.211.189.181
221.213.62.10
221.215.141.170
221.218.246.254
221.224.146.12
221.226.22.114
221.226.28.34
221.226.56.210
221.226.65.226
221.226.70.186
221.226.84.58
221.226.165.244
221.229.162.12
221.232.130.26
221.234.19.109
221.234.19.218
221.235.36.58
221.237.179.47
221.239.62.220
221.239.228.143
222.19.137.26
222.24.3.28
222.32.70.174
222.39.112.30
222.46.121.142
222.65.106.169
222.70.77.191
222.73.44.71
222.73.85.76
222.73.206.203
222.73.215.149
222.73.219.4
222.73.219.54
222.73.236.58
222.74.27.136
222.75.0.123
222.77.73.88
222.78.194.212
222.82.237.62
222.83.110.176
222.83.214.175
222.83.228.238
222.85.17.66
222.85.111.159
222.88.152.96
222.88.238.144
222.90.117.199
222.90.212.62
222.92.138.210
222.92.252.162
222.94.91.9
222.106.216.123
222.120.65.217
222.124.32.97
222.124.158.10
222.124.194.162
222.127.82.89
222.128.60.184
222.128.87.85
222.132.117.37
222.134.214.229
222.139.155.69
222.150.43.52
222.161.138.7
222.168.44.99
222.169.72.218
222.174.5.101
222.174.57.170
222.174.148.178
222.174.180.38
222.175.75.218
222.175.79.182
222.175.132.58
222.178.110.153
222.184.126.39
222.185.143.134
222.186.15.62
222.186.15.115
222.186.15.158
222.186.30.35
222.186.30.57
222.186.30.76
222.186.30.112
222.186.30.167
222.186.30.218
222.186.31.83
222.186.31.166
222.186.42.7
222.186.42.57
222.186.42.136
222.186.42.137
222.186.42.155
222.186.42.213
222.186.48.116
222.186.52.39
222.186.61.19
222.186.61.115
222.186.129.69
222.186.169.192
222.186.169.194
222.186.173.201
222.186.173.238
222.186.175.23
222.186.175.150
222.186.175.151
222.186.175.167
222.186.175.182
222.186.175.216
222.186.180.8
222.186.180.17
222.186.180.130
222.186.180.142
222.186.180.223
222.186.190.14
222.187.45.234
222.188.96.71
222.189.228.147
222.191.255.26
222.208.104.168
222.208.119.107
222.208.233.76
222.209.55.83
222.209.83.130
222.209.214.27
222.209.216.163
222.210.147.64
222.212.80.152
222.212.93.19
222.215.15.220
222.217.69.247
222.217.117.112
222.219.73.113
222.222.62.249
222.222.66.140
222.223.56.116
222.223.232.4
222.243.146.38
222.244.115.31
222.252.6.95
222.252.16.134
222.252.24.76
222.252.24.102
222.252.25.91
222.252.25.201
222.252.26.144
222.252.30.106
222.252.34.214
222.252.92.198
222.252.93.211
222.252.115.37
222.252.144.224
222.252.169.79
222.252.171.173
222.252.194.249
222.252.243.204
222.253.189.68
222.253.190.176
222.253.252.195
222.254.21.199
222.254.22.139
222.254.90.37
222.254.98.183
222.254.113.37
222.254.190.35
222.254.200.50
222.254.255.240
222.255.113.183
223.16.120.179
223.16.126.135
223.30.5.13
223.71.74.52

BIN
board.sqlite Normal file

Binary file not shown.

BIN
engine Executable file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
images/empty.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 B

BIN
images/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 697 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 782 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 953 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 968 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square70x70logo src="/images/favicons/mstile-70x70.png"/>
<square150x150logo src="/images/favicons/mstile-150x150.png"/>
<square310x310logo src="/images/favicons/mstile-310x310.png"/>
<wide310x150logo src="/images/favicons/mstile-310x150.png"/>
<TileColor>#ffffff</TileColor>
</tile>
</msapplication>
</browserconfig>

Binary file not shown.

After

Width:  |  Height:  |  Size: 582 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 864 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

BIN
images/favicons/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -0,0 +1,44 @@
{
"short_name": "AsmBB",
"name": "AsmBB forum demo",
"icons": [
{
"src": "\/images\/favicons\/android-chrome-36x36.png",
"sizes": "36x36",
"type": "image\/png",
"density": 0.75
},
{
"src": "\/images\/favicons\/android-chrome-48x48.png",
"sizes": "48x48",
"type": "image\/png",
"density": 1
},
{
"src": "\/images\/favicons\/android-chrome-72x72.png",
"sizes": "72x72",
"type": "image\/png",
"density": 1.5
},
{
"src": "\/images\/favicons\/android-chrome-96x96.png",
"sizes": "96x96",
"type": "image\/png",
"density": 2
},
{
"src": "\/images\/favicons\/android-chrome-144x144.png",
"sizes": "144x144",
"type": "image\/png",
"density": 3
},
{
"src": "\/images\/favicons\/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image\/png",
"density": 4
}
],
"start_url": "..\/..\/",
"display": "standalone"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -0,0 +1,36 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="700.000000pt" height="700.000000pt" viewBox="0 0 700.000000 700.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.11, written by Peter Selinger 2001-2013
</metadata>
<g transform="translate(0.000000,700.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M805 6262 c-167 -12 -372 -90 -515 -197 -87 -64 -193 -184 -234 -263
-9 -18 -25 -60 -36 -95 -19 -60 -20 -96 -17 -1453 l2 -1390 38 -76 c79 -161
267 -293 509 -357 40 -11 95 -23 123 -26 27 -3 51 -8 53 -10 2 -2 -28 -124
-67 -272 -38 -147 -86 -329 -105 -403 -19 -74 -39 -150 -45 -167 -11 -37 5
-46 33 -18 8 8 17 15 20 15 3 0 54 29 113 64 355 210 1066 626 1071 626 3 0
13 6 21 14 9 7 36 25 61 38 25 14 73 42 106 61 l62 37 1658 3 c913 1 1670 6
1684 9 14 4 48 13 75 19 132 31 288 120 369 209 58 65 90 121 112 195 16 56
17 152 17 1440 0 1283 -1 1384 -17 1440 -21 73 -67 166 -109 220 -37 48 -141
152 -182 181 -102 71 -245 129 -346 139 -27 3 -61 8 -75 11 -24 6 -4296 12
-4379 6z m819 -1464 c193 -64 302 -255 260 -455 -48 -230 -297 -365 -518 -282
-222 83 -318 339 -208 555 24 47 102 127 146 150 102 53 221 65 320 32z m1471
2 c208 -68 323 -307 247 -508 -115 -302 -525 -347 -698 -76 -41 64 -57 121
-59 209 -6 219 175 397 395 391 41 -2 93 -9 115 -16z m1475 -1 c48 -17 129
-70 161 -105 37 -41 73 -101 89 -154 19 -58 17 -183 -4 -240 -69 -189 -266
-298 -459 -253 -79 18 -126 44 -185 101 -78 76 -111 151 -117 265 -13 227 176
415 405 403 41 -2 91 -10 110 -17z"/>
<path d="M6319 3728 c-1 -590 -3 -1095 -5 -1123 -17 -200 -134 -390 -292 -474
-133 -70 -15 -66 -2129 -66 l-1903 0 0 -70 c0 -183 90 -344 262 -471 71 -52
163 -97 249 -120 60 -17 164 -18 1545 -19 l1481 -1 129 -76 c797 -469 964
-565 964 -556 0 6 -7 38 -16 72 -9 33 -17 68 -19 76 -2 8 -15 62 -30 120 -14
58 -28 112 -30 121 -2 9 -15 65 -30 124 -14 59 -24 109 -22 112 3 2 32 6 65 8
213 14 355 135 434 370 l23 70 2 1275 c3 1401 6 1323 -58 1455 -43 89 -101
145 -192 187 -76 35 -136 45 -319 54 l-108 6 -1 -1074z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

5
images/title.svg Normal file
View File

@ -0,0 +1,5 @@
<svg version="1.1" width="190" height="36" viewBox="0 0 95 18" xmlns="http://www.w3.org/2000/svg">
<path d="m7.4707 2-4.4707 13.806h4.0684l0.68945-2.5814h4.4512l0.6719 2.5814h4.0488l-4.5274-13.806zm40.043 0.06v13.748h5.334c1.6117 0 2.8845-0.3579 3.8183-1.0777 0.9338-0.7179 1.4024-1.7017 1.4024-2.9464 0-0.7318-0.1289-1.3087-0.3848-1.7316-0.243-0.43692-0.5489-0.76485-0.9199-0.98281-0.371-0.21795-0.7424-0.37092-1.1133-0.4609v-0.1c0.3453-0.09 0.6782-0.25694 0.998-0.49989 0.3326-0.24395 0.6068-0.57288 0.8243-0.98479 0.2174-0.42291 0.3261-0.9348 0.3261-1.5387 0-1.1038-0.4213-1.9516-1.2656-2.5425-0.8443-0.58986-2.2576-0.88379-4.2402-0.88379zm12.934 0v13.748h5.3339c1.6118 0 2.8846-0.3579 3.8184-1.0777 0.9337-0.7179 1.4004-1.7017 1.4004-2.9464 0-0.7318-0.127-1.3087-0.3828-1.7316-0.2431-0.43692-0.551-0.76485-0.9219-0.98281-0.3709-0.21795-0.7423-0.37092-1.1133-0.4609v-0.1c0.3454-0.09 0.6783-0.25694 0.9981-0.49989 0.3325-0.24395 0.6087-0.57288 0.8261-0.98479 0.2175-0.42291 0.3262-0.9348 0.3262-1.5387 0-1.1038-0.4234-1.9516-1.2676-2.5425-0.8442-0.58986-2.2575-0.88379-4.2402-0.88379zm-50.483 2.2135c0.064 0.30793 0.15441 0.70584 0.26961 1.1937 0.1151 0.4869 0.2286 0.9628 0.3437 1.4257 0.1151 0.4489 0.2056 0.79483 0.2696 1.0388l0.5957 2.2525h-2.918l0.59567-2.2525c0.077-0.30894 0.1652-0.68786 0.2675-1.1368 0.1152-0.44891 0.2239-0.90481 0.3262-1.3667 0.115-0.4619 0.1987-0.84682 0.25-1.1548zm41.252 0.59587h1.0371c1.1641 0 1.7461 0.38592 1.7461 1.1558 0 0.35993-0.1289 0.66786-0.3848 0.92381-0.243 0.25794-0.6711 0.38691-1.2851 0.38691h-1.1133zm12.934 0h1.0351c1.164 0 1.7461 0.38592 1.7461 1.1558 0 0.35993-0.127 0.66786-0.3828 0.92381-0.243 0.25794-0.6711 0.38691-1.2851 0.38691h-1.1133zm-42.039 0.1c-1.3175 0-2.3797 0.26194-3.1855 0.78883-0.7931 0.52589-1.1895 1.3087-1.1895 2.3485 0 0.87281 0.2174 1.5527 0.6524 2.0405 0.4348 0.4759 1.0939 0.8999 1.9765 1.2718 0.6012 0.2439 1.0611 0.4349 1.3809 0.5759 0.3325 0.1409 0.5635 0.2709 0.6914 0.3869 0.1279 0.1149 0.1914 0.2479 0.1914 0.4019 0 0.3599-0.3964 0.5409-1.1894 0.5409-0.3966 0-0.9401-0.06-1.6309-0.193-0.6907-0.142-1.3748-0.3659-2.0527-0.6738v2.9443c0.614 0.232 1.2143 0.3859 1.8027 0.4629 0.6012 0.09 1.2785 0.135 2.0332 0.135 1.0745 0 1.9395-0.148 2.5918-0.4429 0.6652-0.2959 1.1433-0.7069 1.4375-1.2327 0.307-0.5259 0.4609-1.1238 0.4609-1.7907 0-0.6288-0.1019-1.1427-0.3066-1.5406-0.1919-0.4109-0.493-0.7569-0.9024-1.0388-0.3965-0.29492-0.9016-0.56386-1.5156-0.80781-0.5884-0.24395-1.0367-0.42991-1.3437-0.55888-0.307-0.12798-0.5177-0.24295-0.6328-0.34593-0.1024-0.10198-0.1524-0.21895-0.1524-0.34693 0-0.29593 0.2992-0.4439 0.9004-0.4439 0.3198 0 0.7499 0.07 1.2871 0.21295 0.5373 0.14097 1.0673 0.33393 1.5918 0.57788l0.9981-2.3685c-0.6652-0.29493-1.306-0.51988-1.92-0.67385s-1.271-0.22995-1.9746-0.22995zm12.586 0c-0.7803 0-1.4393 0.14097-1.9766 0.42391-0.5245 0.28194-0.9256 0.64086-1.207 1.0778h-0.098l-0.5371-1.3107h-2.7617v10.649h3.664v-4.662c1e-4 -1.0647 0.1088-1.8796 0.3262-2.4444 0.2303-0.56488 0.6584-0.84682 1.2852-0.84682 0.4093 0 0.7172 0.16697 0.9219 0.5009 0.2046 0.33392 0.3066 0.88681 0.3066 1.6566v5.7957h3.6641v-4.9679c0-0.9498 0.1154-1.6816 0.3457-2.1945 0.2302-0.52688 0.6401-0.79083 1.2285-0.79083 0.4221 0 0.7416 0.16097 0.959 0.4819 0.2174 0.30793 0.3261 0.86681 0.3261 1.6756v5.7957h3.666v-6.9325c0-1.3727-0.3213-2.3675-0.9609-2.9834-0.6395-0.61587-1.566-0.9238-2.7812-0.9238-0.6652 0-1.2675 0.12797-1.8047 0.38492-0.5245 0.25594-0.9526 0.62186-1.2852 1.0968h-0.1149c-0.3198-0.4619-0.7344-0.82282-1.2461-1.0798-0.4989-0.26894-1.1397-0.40191-1.9199-0.40191zm16.52 5.0829h1.2285c0.6907 0 1.1641 0.1459 1.4199 0.4409 0.2558 0.2819 0.3848 0.6098 0.3848 0.9828 0 0.4229-0.129 0.7748-0.3848 1.0577-0.2558 0.269-0.7041 0.4039-1.3437 0.4039h-1.3047zm12.934 0h1.2285c0.6907 0 1.1641 0.1459 1.4199 0.4409 0.2559 0.2819 0.3828 0.6098 0.3828 0.9828 0 0.4229-0.1269 0.7748-0.3828 1.0577-0.2558 0.269-0.7041 0.4039-1.3437 0.4039h-1.3047z" fill="#404040"/>
<path d="m78.638 2c-0.2766 0-0.5309 0.06-0.7597 0.19-0.2272 0.127-0.4216 0.312-0.5862 0.557-0.1415 0.213-0.2509 0.449-0.3266 0.704-0.076 0.255-0.1139 0.514-0.1139 0.781 0 0.464 0.1172 0.832 0.3509 1.1 0.2355 0.27 0.5566 0.404 0.9632 0.404 0.2816 0 0.5365-0.06 0.7653-0.189 0.2289-0.127 0.4276-0.317 0.5955-0.567 0.1416-0.21 0.2489-0.44 0.3229-0.691 0.075-0.255 0.112-0.518 0.112-0.787 0-0.463-0.1192-0.83-0.3546-1.098-0.2354-0.269-0.5573-0.404-0.9688-0.404zm8.2001 0c-0.2881 0-0.5508 0.06-0.7878 0.196-0.2354 0.133-0.4389 0.323-0.6085 0.578-0.1432 0.211-0.2528 0.447-0.3285 0.703-0.075 0.255-0.1101 0.517-0.1101 0.789 0 0.469 0.117 0.83 0.3509 1.086 0.2354 0.257 0.5673 0.384 0.9986 0.384 0.2206 0 0.4372-0.03 0.6496-0.08 0.2139-0.05 0.4301-0.125 0.6458-0.226l0.1344-0.883c-0.2272 0.142-0.4441 0.247-0.6514 0.32-0.2057 0.07-0.4019 0.113-0.588 0.113-0.2155 0-0.3766-0.06-0.4852-0.171-0.1071-0.113-0.1606-0.288-0.1606-0.519v-0.11h2.0682l0.03-0.18c0.02-0.112 0.034-0.216 0.043-0.31 0.011-0.1 0.015-0.185 0.015-0.271 0-0.434-0.1098-0.779-0.3304-1.035-0.2188-0.256-0.5148-0.382-0.8884-0.382zm3.9161 0c-0.214 0-0.4101 0.06-0.5862 0.181-0.1745 0.125-0.3198 0.29-0.4367 0.514l0.097-0.611h-0.8884l-0.5396 3.561h0.8868l0.2519-1.639c0.052-0.351 0.1525-0.621 0.3006-0.806 0.1498-0.187 0.3382-0.282 0.5637-0.282 0.086 0 0.1649 0 0.2389 0.04 0.074 0.02 0.1423 0.06 0.2034 0.1l0.155-1.041c-0.055 0-0.1004-0.01-0.14-0.01zm-15.291 0c-0.1761 0-0.339 0.05-0.4872 0.149-0.1481 0.1-0.2886 0.251-0.4237 0.459l0.08-0.524h-0.8885l-0.7429 4.916h0.8885l0.2837-1.869c0.091 0.208 0.2024 0.362 0.3341 0.462 0.1334 0.1 0.2942 0.146 0.4836 0.146 0.2155 0 0.4171-0.07 0.6047-0.206 0.1893-0.138 0.3598-0.342 0.5096-0.608 0.1186-0.214 0.2082-0.449 0.2707-0.706 0.064-0.259 0.097-0.525 0.097-0.799 0-0.439-0.092-0.784-0.2726-1.037-0.1811-0.255-0.4263-0.383-0.7374-0.383zm5.1201 0.08 0.1924 3.561h0.9165l0.8437-2.447 0.092 2.447h0.9389l1.2637-3.561h-0.8682l-0.8307 2.442-0.1007-2.442h-0.7019l-0.8343 2.45-0.097-2.45zm6.158 0.67c0.135 0 0.2421 0.05 0.3211 0.152 0.079 0.1 0.1177 0.235 0.1177 0.404 0 0.02 0 0.05-0.01 0.09 0 0.04 0 0.06-0.01 0.09h-1.1386c0.064-0.236 0.1562-0.417 0.2763-0.537 0.1218-0.125 0.2695-0.187 0.4424-0.187zm-8.1757 0.06c0.153 0 0.27 0.06 0.349 0.175 0.08 0.125 0.1195 0.285 0.1195 0.508 0 0.416-0.074 0.759-0.2221 1.029-0.1482 0.266-0.3349 0.401-0.5637 0.401-0.1532 0-0.2703-0.06-0.351-0.178-0.079-0.125-0.1194-0.29-0.1194-0.513 0-0.414 0.074-0.754 0.2221-1.02 0.1481-0.268 0.3367-0.402 0.5656-0.402zm-3.4645 0.03c0.1482 0 0.2624 0.06 0.3398 0.172 0.079 0.112 0.1175 0.277 0.1175 0.492 0 0.416-0.072 0.756-0.2164 1.024-0.1449 0.264-0.3285 0.399-0.5507 0.399-0.1448 0-0.2593-0.06-0.3416-0.166-0.08-0.113-0.1214-0.267-0.1214-0.462 0-0.432 0.072-0.782 0.2147-1.052 0.1449-0.271 0.331-0.407 0.5581-0.407z" fill="#d80027"/>
<path d="m73 12.874 2.5001 3.126h10.625l-1.875-1.875 8.7499-0.626-15.625-2.499 2.4999 2.499z" fill="#404040"/>
</svg>

After

Width:  |  Height:  |  Size: 6.7 KiB

1
index.php Normal file
View File

@ -0,0 +1 @@
<?php phpinfo(); ?>

3
install/.htaccess Normal file
View File

@ -0,0 +1,3 @@
Options ExecCGI
FcgidWrapper "_FULL_PATH_TO_DOCUMENT_ROOT_HERE_/engine" virtual
SetHandler fcgid-script

BIN
install/asmbb.tar.gz Normal file

Binary file not shown.

65
install/create_release.sh Executable file
View File

@ -0,0 +1,65 @@
#!/bin/bash
#First compile the binary files
mkdir PRiVY
# complile less files
pushd .
echo "Compile Wasp theme styles..."
cd ../www/templates/Wasp/
./compile_styles.sh
echo "Compile Light theme styles..."
cd ../Light/
./compile_styles.sh
echo "Compile mobile theme styles..."
cd ../mobile/
./compile_styles.sh
echo "Compile MoLight theme styles..."
cd ../MoLight/
./compile_styles.sh
echo "Compile Modern theme styles..."
cd ../Modern/
./compile_styles.sh
popd
pushd .
cd ../musl_sqlite/
./build
popd
# copy engine files
cp ../www/engine PRiVY/
cp ../musl_sqlite/*.so PRiVY/
# copy images
rsync -ar ../www/images/* PRiVY/images/ --exclude-from=exclude.txt
# templates and styles
rsync -ar ../www/templates/* PRiVY/templates/ --exclude-from=exclude.txt
# example config files for apache and lighttpd
cp .htaccess PRiVY/
cp lighttpd.conf PRiVY/
cp ../License.txt PRiVY/
cp ../manifest.uuid PRiVY/
cp install.txt PRiVY/
# now pack it
tar -czf PRiVY.tar.gz PRiVY/
if [ ! -f ./unpack.tar.gz ]; then
tar -czf unpack.tar.gz unpack/
fi
rm -rf PRiVY/

8
install/exclude.txt Normal file
View File

@ -0,0 +1,8 @@
*.less
*.lsi
*.sh
source
sources
_source
_sources
*.gz

181
install/install.txt Normal file
View File

@ -0,0 +1,181 @@
# PRiVY installation guide
## Prerequisites
In order to use PRiVY you will need running web server, supporting FastCGI
protocol. Most web servers will do the job. Particularly Apache.
You can install PRiVY on local server (for testing) on shared hosting or any
other hosting option.
The only mandatory condition is that the server must run on x86 or x86-64
Linux platform and the fastcgi module should be enabled (most servers running
php has it enabled anyway).
PRiVY is self sufficient and does not requires any libraries or databases
installed on the server.
In order to send mails to the forum users, PRiVY will need the address and
port number of SMTP server that is accessible from your web server without
authentication. Most SMTP servers provided by the web hosting will not need
authentication if connected from the local network (i.e. the web site engine).
## Installation
First unpack the files in temporary directory. Depending on your server
edit the file .htaccess (Apache) or lighttpd.conf (lighttpd) -
Change the "_FULL_PATH_TO_DOCUMENT_ROOT_HERE_" placeholder to the real
path to your document root (it depends on the web server settings).
IMPORTANT: Ensure that the uploaded files have the proper permissions for the
www-data user (the web server user). The www-data user will need writing
permissions in the DOCUMENT_ROOT directory. The executable files must have
755 permissions.
IMPORTANT FOR Lighttpd: The provided in the package file "lighttpd.cond is just an
example. Lighttpd keeps its config files in: "/etc/lighttpd/lighttpd.conf" and all
files in "/etc/lighttpd/conf-enabled/" directory. You will need to merge the example
config in the existing files in one or another consistent way and then restart lighttpd.
If using another web server, prepare the configuration by yourself.
Upload all files (and direcrories) of the package to the document_root directory
of your web server.
IMPORTANT: The package may contain some symlinks. Ensure they are
uploaded together with the files. Notice, that FTP can't upload symlinks.
The simplest way is to upload the tarball to the server and unpack there
by using cpanel tools, ssh or any other way.
Read the chapter "Easy Installation on Apache by FTP" below, about how to make
the proper upload by FTP.
Test the forum by loading the web site in your favourite browser.
As simple as that.
## Easy Installation on Apache by FTP
Download the package "unpack.tar.gz" from:
http://asm32.info/fossil/repo/PRiVY/doc/trunk/install/unpack.tar.gz
Untar it. There are 2 files: ".htaccess" and "unpack.sh";
Upload these 2 files and "PRiVY.tar.gz" on the server document_root via ftp or
any other way. The root directory must contain these 3 files:
.htaccess
PRiVY.tar.gz
unpack.sh
Load in some browser: http://your_web_size/unpack.sh
The script will unpack all files, prepare the proper .htaccess file and redirect you
to the new created forum working in setup mode.
## Installation on VPS with nginx and systemd
### Prerequisites
* VPS with GNU/Linux OS installed that uses systemd.
* Installed and working Nginx web server. I will explain only how to integrate PRiVY.
### Installing PRiVY
Download the recent binary package from the permanent link: *[https://asm32.info/fossil/repo/PRiVY/doc/trunk/install/PRiVY.tar.gz][PRiVY.tar.gz]*
Create a new directory, where the forum sub-domain will stay. I will name it `/PATH/TO/FORUM/`. Put the downloaded file inside.
Untar with the following commands:
$ tar -xvzf PRiVY.tar.gz
$ mv PRiVY/* ./
$ rm -rf PRiVY/
After the unpack, there are some unneeded files, like text files and example config files in the directory. You can safely delete them. Only the subdirectories and 3 executable files are required. Notice that the subdirectories may contain some important symlinks, so unpacking on local computer and then uploading through FTP will not work (because FTP can't copy symlinks).
All the files and the directory must be owned by some non-root user that will run PRiVY later. I will name it `NON_ROOT`.
### Nginx configuration
Insert in the nginx config file (in `/etc/nginx/nginx.cong` or in the forum sub-domain configuration file) the following:
server {
..... # Your subdomain server configuration.
# Should contains at least "listen" and "server_name" nginx options.
root /PATH/TO/FORUM/;
location / {
fastcgi_pass unix:/PATH/TO/FORUM/engine.sock;
include fastcgi_params;
}
}
Don't forget to replace the placeholders!
Restart Nginx:
$sudo systemctl restart nginx
### Systemd configuration
Now configure systemd service that to manage PRiVY engine.
Will need root access here. Create as a root the file `/etc/systemd/system/PRiVY.service` with the following text (of course replace the placeholders `/PATH/TO/FORUM` and `NON_ROOT`:
[Unit]
Description=PRiVY forum engine FastCGI script.
After=nginx.service
[Service]
Type=simple
User=NON_ROOT
WorkingDirectory=/PATH/TO/FORUM
ExecStart=/PATH/TO/FORUM/engine
Restart=on-failure
[Install]
WantedBy=nginx.service
### Finalizing
Now the configuration is finished. You can open the forum sub-domain in your browser. You should get `502 bad gateway` error, because PRiVY is still not running.
Start PRiVY:
$sudo systemctl start PRiVY
Refresh the browser. The admin setup dialog of PRiVY should appear. Setup your admin user and the forum should start working in regular mode.
If everything is OK until now, let's make the startup of PRiVY automatic on server restart:
$sudo systemctl enable PRiVY
That is all.
## Introduction to the forum configuration.
When run for the first time, PRiVY will create an empty database for the
forum - a file, named board.sqlite in the root directory.
Until there is no users registered, PRiVY will run in setup mode, displaying
the administrator user creation dialog.
The registration of the admin user will not need email activation and is pretty
liberal about the quality of the password. But you as an administrator of the
forum, better choose strong password and whatever nickname you prefer.
After creation the administrator user, the access to the forum settings is
rescticted only for the users with administrator privilegies.
Set the SMTP server and other forum parameters in the settings page.

34
install/lighttpd.conf Normal file
View File

@ -0,0 +1,34 @@
# Very simple config file for lighttpd server.
#
# You should merge these options to your config file
# (especially fastcgi.server option) in order to use
# AsmBB engine.
#
server.modules = (
"mod_access",
"mod_fastcgi",
"mod_cgi",
"mod_accesslog" )
## a static document-root, for virtual-hosting take look at the
server.document-root = "./"
## bind to port (default: 80)
server.port = 8080
## bind to localhost (default: all interfaces)
server.bind = "localhost"
#### fastcgi module
## read fastcgi.txt for more info
fastcgi.server = ( "/" =>
( "localhost" =>
(
"socket" => "/tmp/fastcgi.socket",
"bin-path" => "_FULL_PATH_TO_DOCUMENT_ROOT_HERE_/engine",
"check-local" => "disable",
"max-procs" => 1
)
)
)

BIN
install/unpack.tar.gz Normal file

Binary file not shown.

3
install/unpack/.htaccess Normal file
View File

@ -0,0 +1,3 @@
Options ExecCGI
FcgidWrapper /home/is/is.privy.ws/install/unpack/engine virtual
SetHandler fcgid-script

BIN
ld-musl-i386.so Executable file

Binary file not shown.

BIN
libsqlite3.so Executable file

Binary file not shown.

915
manifest Normal file
View File

@ -0,0 +1,915 @@
C Implemented\s!unread\scommand\sthat\sredirects\sto\sthe\sfirst\sunread\smessage\sif\sany\sor\sto\sthe\send\sof\sthe\sthread\sif\snot.\nThe\sskins\sadapted\sto\suse\sit\sinstead\sof\s!by_id.\sStarted\simplementation\sof\snew\sreal-time\sevent.
D 2020-07-30T13:12:35.590
F License.txt 88666a269af0c927acf094c534256f65e421a8ee
F install/.htaccess 8d39c169460b22e4e592e6689575394a07dbec55
F install/asmbb.tar.gz 73bfc252eb4700250403151211c38c5368d5f834
F install/create_release.sh b5721dd1b6252dd9b363258ca069b10c15202f51 x
F install/exclude.txt 467c30b4dd05b31dfbfe95812d9ad730b4ead243
F install/install.txt 64615f21455976e432bda238c6d4282fc561e340
F install/lighttpd.conf 12fc6f865420a4673e16a9bd7dc4e21886d9ef77
F install/unpack.tar.gz 17da32119ae2cc9bb3a57f2ce59dc489e542ca59
F install/unpack/.htaccess efa046601aad51a87da0946b4eecadcc0d234c15
F install/unpack/unpack.sh 4443f580fe76faffa7015e6e4b73b22f6290f4a0 x
F musl_sqlite/README 46ab7567ba9efea4d58e5d8e8c01610155a78c02
F musl_sqlite/build 15f908024e2c26daf092f49c5217e4cc6e34cbfc x
F source/Documents/FastCGI\sSpecification.html e2fc06a5abf1b3505c665e108ce3ad28b636095a
F source/Documents/futex.pdf 3297d3e1739a7b294fa0c96ba6d59bae7170c6b9
F source/Documents/rfc7578.txt 5dff43151910fe753f8649b08d650137f07a96ff
F source/Linux/sqleet.inc 7cd50841e9b5e3c9626a32aee0c1c6e8aad5a4e4
F source/Linux/sqlite3.inc d718ceb6e9ab4c242f0adb24541ea69ffbc3bc91
F source/ResetPassword.asm 0d71fb80660d8ed7780a0fdfc16ae568519d1ca1
F source/ResetPassword.fpr 3799b0d1769564f2a304b43b44f5894a94045425
F source/TestsWithTags.sql 6384a56d553e36aa1c54cdb61a147bb2806e3e9d
F source/ToDo.txt 78c2a566e37fc37db78b799f5ac100bed383c182
F source/Win32/sqleet.inc d3fe767bb10368a936112e35df3e734c32161b2d
F source/Win32/sqlite3.inc f941d1cebec53d2bddbd071f4a2fef6d1a80b7f2
F source/accounts.asm 94d43aa83eb9822fb5eb13829aba47a565a4b997
F source/alltags.sql aa3093196f8c5132f8e763f2a80fbe977a878687
F source/alltags2.sql e4a0d5084be7a45f5e30ab46b7985f49c797f86a
F source/atom_list.sql b98816111a61da81721974b558bbf74fcf3d78ed
F source/atom_one_thread.sql 32da01bccec3dc4f86463f355a476028bc0632de
F source/atom_tag_list.sql a22f6ff17e4e8517efdbf5aad59f707391a17b0e
F source/atomfeed.asm 9ef462830c29252ee7a88b512fb9d3ae782238ee
F source/attachments.asm 6843dd5b449b1394ae9c6f2b6bc44ed561f9a913
F source/benchmark.asm 805e9bb6a982764e844df79eefd8d8b8d9bea82c
F source/categories.asm d21e1b8adb89ed69c0d29867993482997b0fc38e
F source/categories.sql 95dd79e898cf75b62daeb7edd00f383df433b0d4
F source/chat.asm 46e64d22841349e2935e8c62681f2f47cad786a0
F source/commands.asm d24f8e6843b8435477b83f07190b941efbe5ec06
F source/create.sql 384f403dee2e34fcaa7d45c272a6cdd2bca3bd86
F source/delete.asm 61b26bcb0d32288d8b5e56ef9d7d4acadacb62d5
F source/edit.asm 0f10d9cb2f59983f70204cf9a4c827b02be3ba1a
F source/encryption.asm dd3ee571750e773308627b13ce54f77fe508e5bb
F source/engine.asm b443b01650411fcfaaf2cc29b33d586339b42fe6
F source/engine.fpr 54f355abd2c434b3e6024d591048c6315357c47d
F source/exponential_scaling.ods 4a15fbca3a85b002400cb2a15c21c13e190b1f48
F source/exponential_scaling.txt 4895cd4542afa457f050768ba643808ca00423ba
F source/fcgi.asm 81f60b545fb3f7a184f6f6075f9a4e7ce31b7a0a
F source/history.asm ada7d1d9956f99bd48a3021eace283a0a76758c8
F source/http.asm 1d6405bf48b523b735b12f8167deafe1ac081936
F source/images_png.asm cb69d9eafb85f6e61c526a3dcff4c7f2c3f4ebd6
F source/messages.asm f1f350f40073680e2ed26e007312987ef9eb327f
F source/messages_bg.sql 8c99ff48af58ce994536c8081a16dd94d9bca825
F source/messages_en.sql 978b347823cee29f6e0e0131c169883b9a606948
F source/migratePosts.sql 92b037bfd56c741fe1cf1d992f383cde22346fc1
F source/migration1.sql fe97ef3b5046a916f0215336a8a56ea4c8a3b98a
F source/migration2.sql fe978700e39265c6680b69ea8cbfb5444cfdce63
F source/newfts.sql c3c6af06c950fe7051c8893a4a829e0e7e4cc7b1
F source/phpbb.sql 6820a2092cc30a774c44d770055b37b66bdbfaf0
F source/phpbb_pm.sql f88eaf899e72d4e99f367cb654b41695da2231d5
F source/post.asm 36d504e78dde80c990a2d4c3fcf9bebd8afdcae4
F source/post_data.asm 79fb813775e3bafe6cb314c50a99484e4f0dc211
F source/postdebug.asm 68d2c115514988638c720b23d9d9f5bc3571df36
F source/posthistory.sql 74ed4e8bf538fb8660998925cd9877a290db352f
F source/realtime.asm dbd3f6e3fb5afed68fa53fd66553e6997df4b4d3
F source/rebuild.sql 9b298f02f19aaac41b6488a28de5509ad16d2697
F source/rebuildTags.sql cb3142cd0676a0b4d05fdb60ce330b4ccbce234d
F source/rebuildThreadTags.sql a1f42311b7907dc04948607186e1b2dce46af2cc
F source/rebuild_users.sql a10c443fbd5af4db82ae1ef908b1193644cc98e1
F source/rebuildtriggers.sql 6f3eeb7c8f703b1beead84c20ed34efeb374ceb1
F source/render2.asm 5a772d494a7e1886c67a0f4ca9a500f5baba0da4
F source/restore.sql 400e4be2b643c14f45841e41dd862e93d079c60e
F source/search.asm 60acccb553021d13c932470672aec7a3d943443d
F source/search.sql b8c4fc139bcb5fedf96268584e916b05d8ae9f18
F source/search_cnt.sql b099847b74bae7161c36bf210619c10d8b1ed5f3
F source/settings.asm 3123d67b30fd4e86b0716cf0a6387e9c8b0fc91c
F source/settings.sql 066cc77197d5fae94fb27c2bd72aabb2c4b85d8a
F source/showthread.asm c4f661f19b73abbbf109694e301d7b8a0d2c5906
F source/showthread.sql 1ee08ed9c69a07ca5c60fc639e73333405e14d37
F source/sqlite3.asm df3a5ea387f60d719fd83c33411b8151ad1a6d77
F source/sqlite_console.asm 0090f97aebfd05dec748b3b98e7d43fba65b0064
F source/sse_service.asm 04c2274c6e8909078f8e5ccc97e73b8091dfce05
F source/statistics.asm 8574bead31291bdaf459a032659cb41bc34883d3
F source/statistics.sql b854e249807878dcd87c5e16dde801114639308c
F source/tests/Test1.tpl 3787fb082cb7f6404ff4631fd6ca67ed14c7beac
F source/tests/test_templates.asm 9fbe778c983448663d18c9cc2cc3cd9d0107e93b
F source/tests/test_templates.fpr 0b6d692c0d55f91a6e310f622a6fe2c49c06ddf9
F source/text_constants.asm f0f98dde7ef5c3d80dc49258c72ad405176275f9
F source/thread_attr.sql 96f479d9e4ab2a93221b81be1bbb8a8ba6e277f3
F source/threadcount.sql 897aa66b52dbe48ed09391442d3b288c36cbabff
F source/threadlist.asm c7cc892c6bdf9e485bc7bb033394f0ed5323c59e
F source/threadlist.sql 21e3badbc8dfaa76414918848a78f3e78c3d335b
F source/timeproc.asm 34958ce31b5eba616f47d04d0f4c5b4aad811408
F source/undelete.sql 71f34593d80b94c336330bb3016e15bcd4105b8e
F source/userinfo.asm 010a2ba73acd014cd558c39aae3b9915266dc9e3
F source/userinfo.sql 41f1f4a8019561b5a5144ae14299e13a53fa168d
F source/users_online.asm a730d7a2a7af9604c20523307b6a516c6be5af43
F source/users_online.sql 615346c705099d4fed2fe5ea985efa429156075c
F source/userslist.asm ad6c2bc2cc22ef3dc7202c0310754ef1d5afabb3
F source/userslist.sql c90e4da301687cdec9fd4dc45c0f018a2e73ceb6
F source/util.sql 4aac8fdfd044e69e0a309f172479b1f9b180ddd6
F source/version.asm c5375b57037891dd7df89e926bc15aa749a0d555
F www/.htaccess e47a96e183d9e5ef4e158df22de9130e07dffbcb
F www/.nginx/fastcgi.conf 635d54729b084483347b15cdd35e82866ee86c19
F www/.nginx/mime.types 5779f6632f02c522615639eedd57a92cce27c791
F www/.nginx/nginx.conf 6c8afc9fda178acbc25858c3a8ce35aac105dda6
F www/favicon.ico 01ba7fafa5e9e561996452a57f13d9c3fbadcb06
F www/images/emoticons_dark/angry.gif d43a06f17649f6c9da6c85ff3dbbf0e4853f0520
F www/images/emoticons_dark/cry.gif 44fbe228ae5fda20c3e83a7b8175fe7981afaf57
F www/images/emoticons_dark/lol.gif 305f1546cdceaee6d5118c7cf739874c86c4200e
F www/images/emoticons_dark/rofl.gif c9624e02cd3a3e89c227ab6c3ac17ea0d9edf283
F www/images/emoticons_dark/sad.gif a4ca623ef9f7ccdbf7680c4201f590bc1a2f8896
F www/images/emoticons_dark/smile.gif b9a29d9c77e9e2f9a37da58d9c23df69d6f8517a
F www/images/emoticons_dark/tongue.gif 1f0e43256d9b04e3c714a07a9d8dc6628199b4d9
F www/images/emoticons_dark/wink.gif 2e56ed1aa4446e248c7666030924d7090afcbd66
F www/images/emoticons_light/angry.gif 20500d3b94175c345946ad8bb149068d1d5c2b1a
F www/images/emoticons_light/cry.gif b821d5e08564af307ac3c71f945dddfa8ea6452c
F www/images/emoticons_light/lol.gif 0e9fe36570a78b40ed0baf0a08b0f0ca6e5e9605
F www/images/emoticons_light/rofl.gif 907a534a661a9a090665496f07b5361501c7ba91
F www/images/emoticons_light/sad.gif 29a61168f0546302de3fe9d1ddd963d62cf85d93
F www/images/emoticons_light/smile.gif e15f0be2a0607a061f46d297f80b982d95ec4ce5
F www/images/emoticons_light/tongue.gif f37a376e83402b21c9770767728282b08e7e495e
F www/images/emoticons_light/wink.gif fea56f9c71694b38842aa0f6295d26cc330fcca7
F www/images/empty.png d1b8613998ba0a89b32bfb7a2a1eedaa9dd55529
F www/images/favicon.ico 01ba7fafa5e9e561996452a57f13d9c3fbadcb06
F www/images/favicons/android-chrome-144x144.png c52089920b0e4f7c740199f58fa9162fc71cf4cc
F www/images/favicons/android-chrome-192x192.png 8947adffc183a46500f6e97baec557e7c4dd9ac7
F www/images/favicons/android-chrome-36x36.png 9c9bf63298773ffa090f910fe870acce54431c81
F www/images/favicons/android-chrome-48x48.png a80a59a8e39c6fb8d4706b083c9aebe214853c49
F www/images/favicons/android-chrome-72x72.png 0d4e73d1b3ddf83e4a62f14f0fb65074bad42f75
F www/images/favicons/android-chrome-96x96.png 246dd973da09592e06a1833952457e4e3179f12a
F www/images/favicons/apple-touch-icon-114x114.png be6c0abacb42310ac99e4046eeec4a1dc76a3b55
F www/images/favicons/apple-touch-icon-120x120.png a99ba2a1201a25d2b2297d5905deaac4e3ed468e
F www/images/favicons/apple-touch-icon-144x144.png eb6169ec9862b0d0b70d291ef56ae41c1ae469b5
F www/images/favicons/apple-touch-icon-152x152.png aea040525b1bdd1db02e8248dc93897348b2dff2
F www/images/favicons/apple-touch-icon-180x180.png 0422ede99dca629c40fdd269815dca9826bec2f4
F www/images/favicons/apple-touch-icon-57x57.png 3ffeac625779f67df0093a43d2069b1aa9e8031a
F www/images/favicons/apple-touch-icon-60x60.png 58fdb62fa858ea89e7d174fc1fbf05fad7113999
F www/images/favicons/apple-touch-icon-72x72.png 2b630f090d9629b6e04f99a0cbf5d1288c0b8005
F www/images/favicons/apple-touch-icon-76x76.png 8dbb2b4346f3c0fa653d5154084f4a869c34a89a
F www/images/favicons/apple-touch-icon-precomposed.png b1b9e43238e73d45db06339e98d2c19452d79846
F www/images/favicons/apple-touch-icon.png 0422ede99dca629c40fdd269815dca9826bec2f4
F www/images/favicons/browserconfig.xml 5fa164dd05c18c7af70c26cb527a1a9e3450fb8b
F www/images/favicons/favicon-16x16.png dde4aae4d7f8effbac992702ac39cce247cad770
F www/images/favicons/favicon-194x194.png 759197b4f552b6b659ce381b3073f40e9b205b5b
F www/images/favicons/favicon-32x32.png 9f0f46321ef1fe7bf891e218d6ffc101c5dadc64
F www/images/favicons/favicon-96x96.png 4b6beb9d12e6f6e10a370bf7b3c939d7acc04d20
F www/images/favicons/favicon.ico f24f15cca73ff8e87072cb07791eed8a7b978cb9
F www/images/favicons/manifest.json c27e0cbff755b0880610d9c8125ebd0077a2e222
F www/images/favicons/mstile-144x144.png ed3b024566a85b54ce2aa012f7c783ebbfc42160
F www/images/favicons/mstile-150x150.png a3322a6dd73c66454b57d135d9c537b8c8eaff17
F www/images/favicons/mstile-310x150.png d572c5e3ffffff1b9d0664b2f5a5db1c70934ae4
F www/images/favicons/mstile-310x310.png 10b456c8fe92b8333d5fa07d3a8d37811e4f28e1
F www/images/favicons/mstile-70x70.png df18a312b6e738c1f4629f9854e868da75410830
F www/images/favicons/safari-pinned-tab.svg 55034cf24fc5499da7503b859161fe24db03d3d3
F www/images/sources/YellowBackgroundBig.jpg 3e2d96cc437fddff74a0fa87340fd7c91e7a134d
F www/images/sources/anon.svg 0398ca948ec26ce863a1f4dc0dfb80cd1f28ebb3
F www/images/sources/anonymous-logo.svg 6ecbfecec96db303bb69b9408a4f0667032b5848
F www/images/sources/del_gray.svg bf94f2383987b249a4ad1f9ae5f093af95457dc1
F www/images/sources/del_white.svg 4a8ec9ed6744169109cffcb113c373954b7df113
F www/images/sources/dislike-thumb.svg 57f2c1df29c7c0e7d25fc48ee4b0cce73af96673
F www/images/sources/download.svg 0e4fa2e8b1db94db0e485558a9d10017f75caac4
F www/images/sources/edit_gray.svg da532e60b6119e4c563d3f481120621a5bd299a2
F www/images/sources/edit_gray_backup.svg da532e60b6119e4c563d3f481120621a5bd299a2
F www/images/sources/edit_white.svg 792870da03b4994471ace7235b85eac900a87a1d
F www/images/sources/email.svg 947ba489f2a2ed0d64c3569e23ea74ef53d50b8f
F www/images/sources/emoticons/allemoticons.svg b85af0eaf64adf233ba642bf271ee7afb7803daf
F www/images/sources/empty.xcf a270244f67050082976cfd8db80bd22e1ce052ce
F www/images/sources/favicon.xcf abf79cfec76d4ec3b5f0898ff1a508e9d53e0c92
F www/images/sources/favicons.zip 224b66646e61719bf4498d561acc7a12c16d247b
F www/images/sources/limited.svg 6c66e915668ddfe3bb040f890051744abdd335c5
F www/images/sources/lines-menu.svg cff670241e2a37086becaf3d20f59555f4463439
F www/images/sources/new.svg 4ab1687cff6733a333372e78a35c20bc739c3c47
F www/images/sources/posts.svg 9d12c6a91307096c735e1364f56b3b19e38b3ba6
F www/images/sources/posts_gray.svg e567ee65433f84d3b87c1cdf0508e612ba400d94
F www/images/sources/pushpin-147918_960_720.png 390b5552cb06cc9eb16966f225c7cd033f8043de
F www/images/sources/quote.svg 5e8c5fbcc26c08fb9ac99dd563acd50c50e1d28a
F www/images/sources/save.svg 27aaebe02f186176ef984a8b7a3d86e65ac8ff9d
F www/images/sources/screw.xcf 6a65dbe3140bc2ef2cfbe1ec6fdebefb6f18fec4
F www/images/sources/screw0.xcf 50d79cf2cc504c7f0d1499c28147a621b7aaa234
F www/images/sources/search.svg 50eb2717ab41f19d5a617f6189290fca02470b6b
F www/images/sources/tag.svg 56e72ebfb7feff28831b4c3922cf431e32e4a3d5
F www/images/sources/title.svg b55073be362e7f268cd2c2626ee25cf457fa9376
F www/images/sources/title2.svg 38a1b994139b4814b00b4cfda84577a31467d7ad
F www/images/sources/toolbar.svg 44706bddfbfc0d92bc2c0889c92e772060a691d3
F www/images/sources/yellow_back.png d7aed4145104dc3224a3fb46f03c14cf6d386167
F www/images/title.svg f00b16abdaa3316ade52282fa0850bef3260cb95
F www/lighttpd.conf fb5eb37a964a9f78d12504214818149d5cff1c5b
F www/nserver 77fd50bebf9ee5bcd54c8b4035d362b72acf44c7 x
F www/robots.txt bed60589d6ab1cc0470f3ba582444612d1c4109a
F www/server 2faac8a4e963b844f35fab5856c3f3f15d3b6255 x
F www/templates/Light/_images/alltags.svg 6e092a166d06e309a3a681fb940def7cff1785f3
F www/templates/Light/_images/alltags_gray.svg ade5d990159c9f0b211b5eb2148d2f054e6ba98c
F www/templates/Light/_images/anon.png 9184b9fe4cf4632fd4dc7baf7db2eeccd8c57334 l
F www/templates/Light/_images/ban.svg 45504bdc41619c0b2a0f1f160b2aa5d495dc3520 l
F www/templates/Light/_images/chatemoticons b44c9a20f191d47a6169d8b60afe77000656d99e l
F www/templates/Light/_images/close.svg 382f5bd7ed835dc86b282b3fd398f8f4ecf49f8d l
F www/templates/Light/_images/del.svg c5df3b6d3843942db429c4cbca9ef0432e33560e
F www/templates/Light/_images/del_white.svg f70c553839427bf1cfd269ff02e243dfa907b0d4 l
F www/templates/Light/_images/edit.svg d16c1aac143d288243264a4d5f8584afbb3017b4
F www/templates/Light/_images/edit_white.svg c2176f5d842145e5d5ac8b6ebd4200276a9c10dc l
F www/templates/Light/_images/edited.svg 8ccede8a8594a94fccf1fca8bdadff88e002953b l
F www/templates/Light/_images/email.png 862b920cedf15e168dc75c9996534f98e307b051 l
F www/templates/Light/_images/emoticons b44c9a20f191d47a6169d8b60afe77000656d99e l
F www/templates/Light/_images/help.svg d3d9747fa51bf20f8837c7e6251b4d8ab6355152 l
F www/templates/Light/_images/history.svg 89caacd38e60c30e1755ab384d81c97c0423c91d
F www/templates/Light/_images/limited.svg 011ff46bbe6e2e48316ca31189d72fa384e198bf
F www/templates/Light/_images/limited_gray.svg 608ed391225a0d32856456e21f328f881c11d315
F www/templates/Light/_images/markread.svg 30408413b74853fb0d1dc132f2d07e2abb60ad3c
F www/templates/Light/_images/onepost.svg bf684853fa78609f059865531ae15ca50fa2530f
F www/templates/Light/_images/onepost_gray.svg 344f6b7179738f81ad978cba035efd031e58cd11
F www/templates/Light/_images/pass.png 4129159ab88dedfdc40cb928d6f9e1bc60a5063c l
F www/templates/Light/_images/pinned.png 4297ceca28de37be8661feb33d24d14775331941
F www/templates/Light/_images/pinned0.png 1879eea7fd74e2b4d044f98457c526f5b7ea49c1
F www/templates/Light/_images/posts.svg 42d9f7a14b12484cba0ec1d7aafca4b3e3827850
F www/templates/Light/_images/posts_gray.svg 82e26ebf314d405a05867602b977156fbb5d2db0
F www/templates/Light/_images/quote.svg 1ff3ddcd3bdf8040593d8ddde492143ecf51bde8
F www/templates/Light/_images/restore.svg 7e29f67173e2173e9e6fd89c6ee0561b625801fc
F www/templates/Light/_images/rss.svg 9b7f066549ac59bc5d05cd5b36c6c1f5c94c7096
F www/templates/Light/_images/save_white.svg f4429885729658e01774773471cd1d8cf6ed6e14 l
F www/templates/Light/_images/search.svg a91d7dc34ff0083f549ffe5ba3a8896b33b4efbf l
F www/templates/Light/_images/tag.svg 81a0bfba54f85b7e2b0b93fde54e3b3e0cf95375
F www/templates/Light/_images/tag_gray.svg 19b308798ce4f44bd1978c1fbdafc7f6203cb723
F www/templates/Light/_images/toolbar.svg 78e36706f42e6a36fca944ddb1454510c678a54b l
F www/templates/Light/_images/user.png dcd4375b5e5365ac29d50ba3ee980d8e2827eba6 l
F www/templates/Light/activation_email_subject.tpl e0bd685144e72197dd0034b068e82d7604f926d2 l
F www/templates/Light/activation_email_text.tpl 50d1d6b7fe42736e334ab6870d7cc72e9085889d l
F www/templates/Light/activity0.tpl 66800be0587fffe32c9acf83029cb8fc7ac74332 l
F www/templates/Light/activity1.tpl 6fa6f00fea84fee0253d4707881c9a5338feb90f l
F www/templates/Light/activity10.tpl bc1c313b326ae3ea9f440b0f607cfd0f8ce482d6 l
F www/templates/Light/activity11.tpl 3a1ef0a6e3383b59f0e17e7bff76186ed93336b5 l
F www/templates/Light/activity12.tpl 490dd079393fc2a2180dd0cc5f7f9581fee448dd l
F www/templates/Light/activity13.tpl e5c3c56a5acdf56383fd3e5710c342444a30b61c l
F www/templates/Light/activity14.tpl 8012d3a8f8147ef4ea446c49fe994f4e0f0e0b38 l
F www/templates/Light/activity15.tpl 955d52b0160283783778a2e3af17125bc2c9ee8e l
F www/templates/Light/activity16.tpl c3bb31fa19e15df415b7e7d6f942dad1e80c70c7 l
F www/templates/Light/activity17.tpl 1229faf8484fa7878c0ff385af534d94b012cf9a l
F www/templates/Light/activity18.tpl a43359d158536a3a4a0deaa8e8ae9a86f34ee375 l
F www/templates/Light/activity19.tpl 3f8eb4a66305ccfaecc07e39d0305fa521c4910d l
F www/templates/Light/activity2.tpl 0c02bfb196ad6955c2e9bdfc53e313d15d32a6f6 l
F www/templates/Light/activity20.tpl 808359fdf3e47466adc8208357d29467310e1947 l
F www/templates/Light/activity3.tpl d076539803d955db90cc721ad51644f7c7d4bb70 l
F www/templates/Light/activity4.tpl 6a7b65a1f69740098b92dfee5e56d9420a3d0980 l
F www/templates/Light/activity5.tpl a0f664d4ee44680703ed8dc5cf30c1046b21dea0 l
F www/templates/Light/activity6.tpl b5c8a9fbc2efa2eac931ea024f5d78047618cfc5 l
F www/templates/Light/activity7.tpl 606eb1ee82da0767dd85e3d2ac63a07e9874a5fb l
F www/templates/Light/activity8.tpl 36d833a0164bb74532e88161cff3d7c8d05cef52 l
F www/templates/Light/activity9.tpl 60fe5018f101f822fa00434bff49db7a3f7da947 l
F www/templates/Light/atom_entry_post.tpl b909b679b9c4ea1723cf9ca5827c2fba527bf589 l
F www/templates/Light/atom_entry_thread.tpl d6f76cb18d5e725a3708a966e9e8720ca643a239 l
F www/templates/Light/atom_start.tpl d47f23ad78f9717598c748c2b37f812d56a4ccdb l
F www/templates/Light/autocomplete.js a996b9733be61eac1ebe92d8d4382cade7a93a26 l
F www/templates/Light/chat.less 61095657b21ca78023c0d3d499e909789f961d2c l
F www/templates/Light/chat.tpl fcdc00ae077c1a36f1d81851ac613dd98013b349 l
F www/templates/Light/common.less 762e4e8198de87fbcb131462b3476432725a2c65 l
F www/templates/Light/compile_styles.sh 3e46c82fed51ce7766a7549c7e99ce49ebf52e63 x
F www/templates/Light/crypto.tpl 6ef96b37863b72234fba72b67fe78ac8643ea3df l
F www/templates/Light/debug.less 6d9e9e8a7950596c5ca3642286341af651f98823 l
F www/templates/Light/del_confirm.tpl cdcb838e2e3a339de5408643fd2c2f3c447ab916 l
F www/templates/Light/delete.less 3a74460f12ec494d6ac273a831839c1242abdc60 l
F www/templates/Light/edit.json bbf3ccaa55253deb23dd57baa42a9044a3827169 l
F www/templates/Light/edit_toolbar.tpl b3d0d80bd108930946ecc811b03731fc2ea0fb00 l
F www/templates/Light/editor.less 01d0be8c4eaa0f91139b00b7bedaa3fb66dc4450 l
F www/templates/Light/error.less 83cd53cf80eb467b611ebe7865c41c96694c293f l
F www/templates/Light/error_html_end.tpl 62173b764a79089fff2cfe7be9428adcd13046da l
F www/templates/Light/error_html_start.tpl 0e59043bca2eece87606b5085e216f22a529eb77 l
F www/templates/Light/form_edit.tpl fb1a6c7ce48500320f430d48ad0671fecaadece3 l
F www/templates/Light/form_edit_thread.tpl 9ba48416deb4498a8dcad61198289fb396592980 l
F www/templates/Light/form_editinfo.tpl 91a3644fb4b1021bffa2356f7291f6e457eebe1e l
F www/templates/Light/form_login.tpl 1ca5a25baff036f4b5a655b72d25c18c987a8ed7 l
F www/templates/Light/form_new_post.tpl 8d49d3712dae533e8a15a522baadd32c230b6f9f l
F www/templates/Light/form_new_thread.tpl 95aeb8e36c8aff51b101dca130c101071c917b6c l
F www/templates/Light/form_post_debug.tpl 0a3e574bb2595001a5c1cebbd66c59aefd6aaab7 l
F www/templates/Light/form_register.tpl 6e44ae46c9d0df170d76cb91b145bc2f3d60b7ea l
F www/templates/Light/form_reset_password.tpl 90a83e1c6756ae652670b3470bbe6aac02972276 l
F www/templates/Light/form_reset_request.tpl 74a4b6da9f76d26f8ca433a6113ab9e87dee3c4a l
F www/templates/Light/form_settings.tpl a4635e33d4fa270b3b69c39572f4bfc94ea8ccc2 l
F www/templates/Light/form_setup.tpl 7e32c9ff828a1cd2698285f3519632978add1b00 l
F www/templates/Light/form_sqlite_console.tpl b90d0e298e5cc10782bafbe2e403cceb365a2fe4 l
F www/templates/Light/help_new_thread.tpl 579ed6559a0a3aee0fe3be3a2c841c1dd7b8b169 l
F www/templates/Light/login.less 4af417eb9ae51e7d5691cba96a93ef5a9fd79dd2 l
F www/templates/Light/main_html_end.tpl d8b3ec3c2cdc952fcab6638d4147ee7e9cd2ba96 l
F www/templates/Light/main_html_start.tpl b93c0043a09f7ef6614707de05a8b45f8af6b33f l
F www/templates/Light/markdown.less c195a0ea006eb8eef894fdc648aa196559c080d6 l
F www/templates/Light/minimag_suffix.tpl f3a1414972a13590a7c984b53b6fd2ddd3a47f3a l
F www/templates/Light/nav_categories.tpl f7d6f653d7de3ea424b62ebae575e3c5c1f4d98b l
F www/templates/Light/nav_history.tpl ac180ed4422e7ee62e4421a19c1ee7d69a72e503 l
F www/templates/Light/nav_list.tpl 580abd0547137f604a05a525aefb34e520f6b7ab l
F www/templates/Light/nav_search.tpl 29858e2ca8b4ac6a1f2660c6f3039c5683386976 l
F www/templates/Light/nav_thread.tpl 851b655a70770fd41465661c6a03531d9008b212 l
F www/templates/Light/nav_userslist.tpl f44893d9191cdabb718fca881a15419579728ecd l
F www/templates/Light/navigation.less a4b813498e8918e0757b6e8731417a1a7b16e968 l
F www/templates/Light/one_category.tpl a708fe0d344a3b684ed7228e7f32486237f90b28 l
F www/templates/Light/one_user.tpl f1e1aacad832e82f4b446f755387efe7f6d815b1 l
F www/templates/Light/post_history.tpl 252f022e564844721c84b264f05f527742108a19 l
F www/templates/Light/post_view.tpl 4e4b1a73db2462b1954e92ec092c71c438b63e85 l
F www/templates/Light/posteditor.less 8b1095462ba16169e6b34b4abb5b0185fb35327b l
F www/templates/Light/postnew.less 3df1b56984c0e0268104a69862782120a40f06be l
F www/templates/Light/posts.less 6c54bcada5b3fe4d4baf87704328e57d91b9fd3f l
F www/templates/Light/preview.tpl 6bd29d06a6720e51db6d4d73b7572f9fcc1ff32f l
F www/templates/Light/realtime.js 6c9458775762c040796133f0b828370ab2243cc1 l
F www/templates/Light/restore_confirm.tpl c59340b4b594a629285efa18802ea6d542442afb l
F www/templates/Light/search.less 673002a86d7aedc24bb456eb9aaf0842cc437fcf l
F www/templates/Light/search_result.tpl a51b831f28a3d1ee546b097caa4f78ddd023ca70 l
F www/templates/Light/settings.less ceddd6b5948701659f883fd99ed0b9a31067df6e l
F www/templates/Light/skin_variables.lsi a243bd21daf144cb06f08698055f57aad8f8309e
F www/templates/Light/sqlite.less d6c705801f27dd30658b51803f0638ded21bb45c l
F www/templates/Light/statistics.tpl 02861774083214684cafea3d902f3788fd388fe5 l
F www/templates/Light/thread_info.tpl d8fea85862e825d472da9c8c5e3a7fe6752119c9
F www/templates/Light/thread_list.less b74326a999c9178842ac5b61f13fd67fa7bcbbc0
F www/templates/Light/threadnew.less c2af3d158e2e03851692576dce99f5287e50b0c6 l
F www/templates/Light/toaster.less 0e571446584a37703a12a550d2235c322a604e07 l
F www/templates/Light/userinfo.less 7ed31b5cc710b5821802771232bbc02db392ebf9 l
F www/templates/Light/userinfo.tpl 6e18bdb4553c2d935c139c26195253cb6ee91922 l
F www/templates/Light/users_online.less cda0da3c26b9fa07bc6d0b5a32dafa70e5d009d2 l
F www/templates/Light/userslist.less 1f89c97d65ebd57e345097b487b4fbbe92b62fe8 l
F www/templates/Light/userslist_ftr.tpl 20a60058b2a1039e62cc39449f6577071e98f969 l
F www/templates/Light/userslist_hdr.tpl 8d96a8dd3b905fc86ab52d79555c1268aafb56c2 l
F www/templates/MoLight/_images e92d275a07bab3b4dca92c861daa356fccd8b538 l
F www/templates/MoLight/activation_email_subject.tpl e0bd685144e72197dd0034b068e82d7604f926d2 l
F www/templates/MoLight/activation_email_text.tpl 50d1d6b7fe42736e334ab6870d7cc72e9085889d l
F www/templates/MoLight/activity0.tpl 66800be0587fffe32c9acf83029cb8fc7ac74332 l
F www/templates/MoLight/activity1.tpl 6fa6f00fea84fee0253d4707881c9a5338feb90f l
F www/templates/MoLight/activity10.tpl bc1c313b326ae3ea9f440b0f607cfd0f8ce482d6 l
F www/templates/MoLight/activity11.tpl 3a1ef0a6e3383b59f0e17e7bff76186ed93336b5 l
F www/templates/MoLight/activity12.tpl 490dd079393fc2a2180dd0cc5f7f9581fee448dd l
F www/templates/MoLight/activity13.tpl e5c3c56a5acdf56383fd3e5710c342444a30b61c l
F www/templates/MoLight/activity14.tpl 8012d3a8f8147ef4ea446c49fe994f4e0f0e0b38 l
F www/templates/MoLight/activity15.tpl 955d52b0160283783778a2e3af17125bc2c9ee8e l
F www/templates/MoLight/activity16.tpl c3bb31fa19e15df415b7e7d6f942dad1e80c70c7 l
F www/templates/MoLight/activity17.tpl 1229faf8484fa7878c0ff385af534d94b012cf9a l
F www/templates/MoLight/activity18.tpl a43359d158536a3a4a0deaa8e8ae9a86f34ee375 l
F www/templates/MoLight/activity19.tpl 3f8eb4a66305ccfaecc07e39d0305fa521c4910d l
F www/templates/MoLight/activity2.tpl 0c02bfb196ad6955c2e9bdfc53e313d15d32a6f6 l
F www/templates/MoLight/activity20.tpl 808359fdf3e47466adc8208357d29467310e1947 l
F www/templates/MoLight/activity3.tpl d076539803d955db90cc721ad51644f7c7d4bb70 l
F www/templates/MoLight/activity4.tpl 6a7b65a1f69740098b92dfee5e56d9420a3d0980 l
F www/templates/MoLight/activity5.tpl a0f664d4ee44680703ed8dc5cf30c1046b21dea0 l
F www/templates/MoLight/activity6.tpl b5c8a9fbc2efa2eac931ea024f5d78047618cfc5 l
F www/templates/MoLight/activity7.tpl 606eb1ee82da0767dd85e3d2ac63a07e9874a5fb l
F www/templates/MoLight/activity8.tpl 36d833a0164bb74532e88161cff3d7c8d05cef52 l
F www/templates/MoLight/activity9.tpl 60fe5018f101f822fa00434bff49db7a3f7da947 l
F www/templates/MoLight/atom_entry_post.tpl b909b679b9c4ea1723cf9ca5827c2fba527bf589 l
F www/templates/MoLight/atom_entry_thread.tpl d6f76cb18d5e725a3708a966e9e8720ca643a239 l
F www/templates/MoLight/atom_start.tpl d47f23ad78f9717598c748c2b37f812d56a4ccdb l
F www/templates/MoLight/autocomplete.js a996b9733be61eac1ebe92d8d4382cade7a93a26 l
F www/templates/MoLight/chat.less 8d8973f86d66faeed51d2edadc3733a65d81a036 l
F www/templates/MoLight/chat.tpl 6347719b30428c89a53c3869b106aa634f3d4c38 l
F www/templates/MoLight/common.less 762e4e8198de87fbcb131462b3476432725a2c65 l
F www/templates/MoLight/compile_styles.sh 3e46c82fed51ce7766a7549c7e99ce49ebf52e63 x
F www/templates/MoLight/crypto.tpl 6ef96b37863b72234fba72b67fe78ac8643ea3df l
F www/templates/MoLight/debug.less 6d9e9e8a7950596c5ca3642286341af651f98823 l
F www/templates/MoLight/del_confirm.tpl cdcb838e2e3a339de5408643fd2c2f3c447ab916 l
F www/templates/MoLight/delete.less 3a74460f12ec494d6ac273a831839c1242abdc60 l
F www/templates/MoLight/edit.json bbf3ccaa55253deb23dd57baa42a9044a3827169 l
F www/templates/MoLight/edit_toolbar.tpl b3d0d80bd108930946ecc811b03731fc2ea0fb00 l
F www/templates/MoLight/editor.less 01d0be8c4eaa0f91139b00b7bedaa3fb66dc4450 l
F www/templates/MoLight/error.less 83cd53cf80eb467b611ebe7865c41c96694c293f l
F www/templates/MoLight/error_html_end.tpl 62173b764a79089fff2cfe7be9428adcd13046da l
F www/templates/MoLight/error_html_start.tpl 0e59043bca2eece87606b5085e216f22a529eb77 l
F www/templates/MoLight/form_edit.tpl 8c4da1537d8c5d972d4a288b03ab7149b7282a01 l
F www/templates/MoLight/form_edit_thread.tpl 9ba48416deb4498a8dcad61198289fb396592980 l
F www/templates/MoLight/form_editinfo.tpl 91a3644fb4b1021bffa2356f7291f6e457eebe1e l
F www/templates/MoLight/form_login.tpl 1ca5a25baff036f4b5a655b72d25c18c987a8ed7 l
F www/templates/MoLight/form_new_post.tpl 8d49d3712dae533e8a15a522baadd32c230b6f9f l
F www/templates/MoLight/form_new_thread.tpl 95aeb8e36c8aff51b101dca130c101071c917b6c l
F www/templates/MoLight/form_post_debug.tpl 0a3e574bb2595001a5c1cebbd66c59aefd6aaab7 l
F www/templates/MoLight/form_register.tpl 6e44ae46c9d0df170d76cb91b145bc2f3d60b7ea l
F www/templates/MoLight/form_reset_password.tpl 90a83e1c6756ae652670b3470bbe6aac02972276 l
F www/templates/MoLight/form_reset_request.tpl 74a4b6da9f76d26f8ca433a6113ab9e87dee3c4a l
F www/templates/MoLight/form_settings.tpl a4635e33d4fa270b3b69c39572f4bfc94ea8ccc2 l
F www/templates/MoLight/form_setup.tpl 7e32c9ff828a1cd2698285f3519632978add1b00 l
F www/templates/MoLight/form_sqlite_console.tpl b90d0e298e5cc10782bafbe2e403cceb365a2fe4 l
F www/templates/MoLight/help_new_thread.tpl 579ed6559a0a3aee0fe3be3a2c841c1dd7b8b169 l
F www/templates/MoLight/login.less fe0f3a1c24a296b6a19164b547a564eba8fc9400 l
F www/templates/MoLight/main_html_end.tpl d8b3ec3c2cdc952fcab6638d4147ee7e9cd2ba96 l
F www/templates/MoLight/main_html_start.tpl b93c0043a09f7ef6614707de05a8b45f8af6b33f l
F www/templates/MoLight/markdown.less e7d115486d1914b8f085dca93ca71896519015b7 l
F www/templates/MoLight/minimag_suffix.tpl f3a1414972a13590a7c984b53b6fd2ddd3a47f3a l
F www/templates/MoLight/nav_categories.tpl f7d6f653d7de3ea424b62ebae575e3c5c1f4d98b l
F www/templates/MoLight/nav_history.tpl ac180ed4422e7ee62e4421a19c1ee7d69a72e503 l
F www/templates/MoLight/nav_list.tpl 580abd0547137f604a05a525aefb34e520f6b7ab l
F www/templates/MoLight/nav_search.tpl 29858e2ca8b4ac6a1f2660c6f3039c5683386976 l
F www/templates/MoLight/nav_thread.tpl 851b655a70770fd41465661c6a03531d9008b212 l
F www/templates/MoLight/nav_userslist.tpl f44893d9191cdabb718fca881a15419579728ecd l
F www/templates/MoLight/navigation.less a4b813498e8918e0757b6e8731417a1a7b16e968 l
F www/templates/MoLight/one_category.tpl a708fe0d344a3b684ed7228e7f32486237f90b28 l
F www/templates/MoLight/one_user.tpl f1e1aacad832e82f4b446f755387efe7f6d815b1 l
F www/templates/MoLight/post_history.tpl 252f022e564844721c84b264f05f527742108a19 l
F www/templates/MoLight/post_view.tpl 4e4b1a73db2462b1954e92ec092c71c438b63e85 l
F www/templates/MoLight/posteditor.less dc8cd3b77570676d4bcb3e882a5effb8e14a7aa7 l
F www/templates/MoLight/postnew.less 3df1b56984c0e0268104a69862782120a40f06be l
F www/templates/MoLight/posts.less 66929fae6beeb6a85970df84e50dfb8e003328ba l
F www/templates/MoLight/preview.tpl 6bd29d06a6720e51db6d4d73b7572f9fcc1ff32f l
F www/templates/MoLight/realtime.js 6c9458775762c040796133f0b828370ab2243cc1 l
F www/templates/MoLight/restore_confirm.tpl c59340b4b594a629285efa18802ea6d542442afb l
F www/templates/MoLight/search.less ac6a407921c036e122a86c8bda3ff931c89642e6 l
F www/templates/MoLight/search_result.tpl 236418544c204ec1a1e6c33791ce4c9c5b2cf2f8 l
F www/templates/MoLight/settings.less ceddd6b5948701659f883fd99ed0b9a31067df6e l
F www/templates/MoLight/skin_variables.lsi c7920fd7bd7f936af6587a139ad4916844b102bd
F www/templates/MoLight/sqlite.less d6c705801f27dd30658b51803f0638ded21bb45c l
F www/templates/MoLight/statistics.tpl 02861774083214684cafea3d902f3788fd388fe5 l
F www/templates/MoLight/thread_info.tpl 7cb85ae78a1c9533e82068fed34eeaf9f5b72d30 l
F www/templates/MoLight/thread_list.less c522489ce7ce3693f484bed85f2da0851ddcd88f l
F www/templates/MoLight/threadnew.less c2af3d158e2e03851692576dce99f5287e50b0c6 l
F www/templates/MoLight/toaster.less 0e571446584a37703a12a550d2235c322a604e07 l
F www/templates/MoLight/userinfo.less d0d0852a1dfcb7885c34202cd86b595eee0427bf l
F www/templates/MoLight/userinfo.tpl 6e18bdb4553c2d935c139c26195253cb6ee91922 l
F www/templates/MoLight/users_online.less cda0da3c26b9fa07bc6d0b5a32dafa70e5d009d2 l
F www/templates/MoLight/userslist.less 1f89c97d65ebd57e345097b487b4fbbe92b62fe8 l
F www/templates/MoLight/userslist_ftr.tpl 20a60058b2a1039e62cc39449f6577071e98f969 l
F www/templates/MoLight/userslist_hdr.tpl 8d96a8dd3b905fc86ab52d79555c1268aafb56c2 l
F www/templates/Modern/_images/anon.png 9f9038d7be702e220c8a365a3a1ec88d7a6d8bf1
F www/templates/Modern/_images/chatemoticons b44c9a20f191d47a6169d8b60afe77000656d99e l
F www/templates/Modern/_images/emoticons b44c9a20f191d47a6169d8b60afe77000656d99e l
F www/templates/Modern/_images/source/alltags.svg 3fde738468e59cc9e1009805ec631c14262ec475
F www/templates/Modern/_images/source/anon.svg 5da0582442ca2664d7363c51076149d335a750bc
F www/templates/Modern/_images/source/arrow.svg de8aa868910f8e7039167857a2f006c2d0a3e5e6
F www/templates/Modern/_images/source/background.svg 5596de350114419c78f299a7972651cc334a0650
F www/templates/Modern/_images/source/close.svg 3b4aa208ab63ae937b9de0cc072b21b26e6cfc47
F www/templates/Modern/_images/source/close2.svg a453f088f41598a22f1ba04fc00cace8cdb66ad9
F www/templates/Modern/_images/source/del.svg 386a3cd2c36aa5d7250637f22ea6401066a3e2ca
F www/templates/Modern/_images/source/drop-down2.svg dbc8d27d8b6d9275492f4a7fe3b435a6fa353ec3
F www/templates/Modern/_images/source/edit.svg 04ffdad78af310ac6e0c8323052ff22cf67487e9
F www/templates/Modern/_images/source/flash.svg 67ae5b7e858868b9181da801f7e5e0d23b381391
F www/templates/Modern/_images/source/flash4.svg 945fbaa959e7c66714d5e3aa64d4f428b77b5ecf
F www/templates/Modern/_images/source/history.svg c97bb42dbe59239bb58838d5d4d0249ba905d004
F www/templates/Modern/_images/source/limited.svg 68c3cfe9316fff919591fc872cc0e0a850e7553d
F www/templates/Modern/_images/source/megaphone.svg d5e3d54b1b8962d0000eacc3e41d949afd88ca81
F www/templates/Modern/_images/source/megaphone2.svg f23754532c8fae05b7f7ff8b660e99aad689d460
F www/templates/Modern/_images/source/onepost.svg b7db07d23bca24782233094ded04b197eb6f00f9
F www/templates/Modern/_images/source/posts.svg ccfef77b4e537d732208d71e119064ef018bd87c
F www/templates/Modern/_images/source/restore.svg 5b1c97e5b8b4e42837ae8ffee3ba436700b4dca1
F www/templates/Modern/_images/source/rss.svg 610dd7f860aed01428738d816f8fd4e7a9283059
F www/templates/Modern/_images/source/save_white.svg 0e45c1d11dcc4a2aef1833a6ccb5ce3fe86b7d93
F www/templates/Modern/_images/source/search.svg 5b06cde947a744596ccbe35e3275ca149beb2a5e
F www/templates/Modern/_images/source/send_msg.svg f6f8ed474f9e0c97c4baed62edddd485a86366a5
F www/templates/Modern/_images/source/tag.svg b074e23c3f58df0fcfe89d3d4039c21f537e82d7
F www/templates/Modern/_images/source/toolbar/angry.svg f1c19403fb2bef3a417e3957287f16f9b87a2674
F www/templates/Modern/_images/source/toolbar/bold.svg 9062ad660b70abb782e3cad0aa1ea83ae28c19f5
F www/templates/Modern/_images/source/toolbar/code-block.svg a5ad2c466fd51fdcfb9fb68a38e1ce875f89690a
F www/templates/Modern/_images/source/toolbar/crying.svg ce77befe85e6dd0672ed1cce72f4819b2cf5265c
F www/templates/Modern/_images/source/toolbar/image.svg 7a8bb910648c4d6115e541dff39d9e06ed3f9edf
F www/templates/Modern/_images/source/toolbar/italic.svg 7874345c1e1f90227c651e4b943e51de55e36362
F www/templates/Modern/_images/source/toolbar/link.svg 8f4871ec83ff0de9ff0b9d20392dbd7a16e8a3dd
F www/templates/Modern/_images/source/toolbar/lol.svg d93d8ae9dfd6bbaabb387f591693bd8971f3ff70
F www/templates/Modern/_images/source/toolbar/mono.svg c5ad794e2ee55c31275eed6c6cb50bc8e632f403
F www/templates/Modern/_images/source/toolbar/quote.svg 9f183d6d71cf05ab44d2fbd03d8f40b00301af6d
F www/templates/Modern/_images/source/toolbar/rofl.svg 2049ad763e4fa35eb401cec49a9b58477af6aa96
F www/templates/Modern/_images/source/toolbar/sad.svg 679759bc476fbd92992436f777e951c383441b15
F www/templates/Modern/_images/source/toolbar/smile.svg bfd1fbb48229f5ee5c05335bde372c2003c7bc0c
F www/templates/Modern/_images/source/toolbar/striked.svg 5feb5509b0f9542ee2f35915dd0d01a50726a982
F www/templates/Modern/_images/source/toolbar/tongue.svg 22c7a56f8b07d7f3094366827bfeb953661712ac
F www/templates/Modern/_images/source/toolbar/underlined.svg 8601f9059e769127dad310a08941db7e32b0837b
F www/templates/Modern/_images/source/toolbar/wink.svg 61a5c40a45f315fc71ab05f70ce01740f5dbb503
F www/templates/Modern/activation_email_subject.tpl fbe97e27a9a6cf59c9d590233479925d2836552c
F www/templates/Modern/activation_email_text.tpl 20d2ce60e7df3923651b8cda1a38ce0d260eaf92
F www/templates/Modern/activity0.tpl c91e8781a391ee4e8a7b99a015a86f123958061f
F www/templates/Modern/activity1.tpl 0c61809a8d656d8322c68857bca119ea025845a2
F www/templates/Modern/activity10.tpl 840045afa04bcc615c29a3e95c0b657ae9b2860a
F www/templates/Modern/activity11.tpl 615ab0fbba523ec765804917dabe3c76f847e4f6
F www/templates/Modern/activity12.tpl a07261fb42321b259826782f2548da188e02d189
F www/templates/Modern/activity13.tpl 051346b5cb21da0d9adaa225eddb028f5ee83480
F www/templates/Modern/activity14.tpl 90fcd95496e6a8758716383a13e7aa9797e57526
F www/templates/Modern/activity15.tpl f421a9f214aa75493e819377efff9a854db142e2
F www/templates/Modern/activity16.tpl bdca79d39c2efe87deb81e51f98460f0a115fc7d
F www/templates/Modern/activity17.tpl 21d5668413ba7cc822b737bad70aa2429bd39c36
F www/templates/Modern/activity18.tpl e889e1978671d419e079a6f7f202449500c605e7
F www/templates/Modern/activity19.tpl fc63dbc03856fb87a7610e6e421be0375b9c6209
F www/templates/Modern/activity2.tpl 8bbf74807152c4737832a44a4b71008daf22cbff
F www/templates/Modern/activity20.tpl b094b4805c181f7c51505bc2037d5979df589b55
F www/templates/Modern/activity3.tpl 278b5fbcde2c55ce10382691f4434b129782f234
F www/templates/Modern/activity4.tpl 9f15b1c30d34caf705fd8f9b9df2e9fb9e2d954a
F www/templates/Modern/activity5.tpl ebc215b4ccbb057bffdaa16538473757c5879691
F www/templates/Modern/activity6.tpl 8183551cc7d489d3fef5f42dba5d275ce1120278
F www/templates/Modern/activity7.tpl e25bb04eb0b2e06619095bc1f2165d989fb93460
F www/templates/Modern/activity8.tpl 312c9c2b7443e8c135a1ad8124d0415d780fffc9
F www/templates/Modern/activity9.tpl 9f354c2dd3b3a9d3c171e7230a88aaf3b074b848
F www/templates/Modern/atom_entry_post.tpl b909b679b9c4ea1723cf9ca5827c2fba527bf589 l
F www/templates/Modern/atom_entry_thread.tpl d6f76cb18d5e725a3708a966e9e8720ca643a239 l
F www/templates/Modern/atom_start.tpl d47f23ad78f9717598c748c2b37f812d56a4ccdb l
F www/templates/Modern/autocomplete.js 7a997eb0436880fc544f24424bdcacb311584831
F www/templates/Modern/chat.less f4866990385145d18d552605af2d7a5c03184897
F www/templates/Modern/chat.tpl 1b5abd774f408fae8ea1987b8eb23bbfcd3e6f02
F www/templates/Modern/common.less 70e4686f9cbc429d4d16a89b910891bc886a70bc
F www/templates/Modern/compile_styles.sh 3e46c82fed51ce7766a7549c7e99ce49ebf52e63 x
F www/templates/Modern/crypto.tpl 4930aee3c23ceb58a56e45f2a5667d90db63a001
F www/templates/Modern/debug.less c8b5056b8b58c123fb0be6e154a3051b884acc28
F www/templates/Modern/del_confirm.tpl c0c6fe6d952f497b9fe7ddf20930fc47ee679c19
F www/templates/Modern/delete.less 189f4f2e07ff457e4fd5a399dc0951da6db5b043
F www/templates/Modern/edit.json 1131bc981369ef29269556033bc032cffd871ba4
F www/templates/Modern/edit_toolbar.tpl 577c312400f122e79c5d323bcb9a990f56a4ee90
F www/templates/Modern/editor.less cf1a71910dec88ffafefb4a996e64ae12c21d2f8
F www/templates/Modern/error.less c8cc584b34deb31b31efe5680fbe6b438e4a91dc
F www/templates/Modern/error_html_end.tpl e5ea7fb2ae849c3efc29d2aace455ce605e7ac55
F www/templates/Modern/error_html_start.tpl 53ee357916bacab74bb7f9b63dc203d6cf93cde0
F www/templates/Modern/form_edit.tpl 7457cdeb8763f5c4116c32e44988bd1eb1e7c9fb
F www/templates/Modern/form_edit_thread.tpl 35a84b7a1be4dab89de64d71861d8453b29ad449
F www/templates/Modern/form_editinfo.tpl 1b2daaba382b8732d1b585689404d4f94797794e
F www/templates/Modern/form_login.tpl 5325450df57cfe97b8280f9ac9a485da78266f39
F www/templates/Modern/form_new_post.tpl 60ef9cb4921eb57e8f92e755b137c9159864aaca
F www/templates/Modern/form_new_thread.tpl 50f95f0411d63652e1cb47591505611c7d4b4829
F www/templates/Modern/form_post_debug.tpl 5f6c4f0b659ac70310a51ef835f09ded1e449922
F www/templates/Modern/form_register.tpl 97482aa6d96f3664f0b4dd4e15a5701fc6b76d62
F www/templates/Modern/form_reset_password.tpl d615d96f021f1313d2993f42f4db30db0e534da8
F www/templates/Modern/form_reset_request.tpl 40eccfc2673ae7ad3ff37b90cb77f676f51cd5cf
F www/templates/Modern/form_settings.tpl 41827dc33229bab73d751383cfefe2efe9934452
F www/templates/Modern/form_setup.tpl 16dc82fb7a7a29055df5a44656faab93231c38da
F www/templates/Modern/form_sqlite_console.tpl e7018d30d3293f01cf6d159cad260413e27511c5
F www/templates/Modern/help_new_thread.tpl 3aab94692d3b4a273f955ba697a7f7af700991ec
F www/templates/Modern/login.less 0439501f5ba0458371402194c885fdd576644057
F www/templates/Modern/main_html_end.tpl e409fee48fb1b1979c337cbe6f616f9e36baef53
F www/templates/Modern/main_html_start.tpl 8da7e55ca9867ddaed54fca580262c90bfcc8499
F www/templates/Modern/markdown.less 309eb4c4a7334c8df3cd284548f6aeb6d0f230b7
F www/templates/Modern/minimag_suffix.tpl a632de87926473be9e816e8969992372a1f4e352
F www/templates/Modern/nav_categories.tpl 913db6d39408ea09f80f91b55325a6cef4efeba2
F www/templates/Modern/nav_history.tpl 3070c075ad08d5c86a1e0b0fa298279bce6ff09f
F www/templates/Modern/nav_list.tpl af661dc8fce469443c9ad8abc53232d32cdb4ecd
F www/templates/Modern/nav_search.tpl 36f648367e02be54e00a69480af8accdae01d3b6
F www/templates/Modern/nav_thread.tpl e89b8abd9c3335cdace4ac784811e56aec6337f9
F www/templates/Modern/nav_userslist.tpl 3c19066e46a70e4f6a234f9c037a2b7e28914688
F www/templates/Modern/one_category.tpl f327eecc1652faf49b08b8090f8602b58eda3829
F www/templates/Modern/one_user.tpl 1ebb768acb7276f56ba9bcad8ba90291bcd96573
F www/templates/Modern/post_history.tpl 0963d8666ead29ff8a706c7674b8892d74351e4b
F www/templates/Modern/post_view.tpl ce822bfda7d111319e076cb563fcf33b193834e4
F www/templates/Modern/posteditor.less 24e8af4e5d9a01bb470393fa7e8e6f5e276bb9d8
F www/templates/Modern/posts.less fa85b0589c53326a275f575ff6747e44355aec66
F www/templates/Modern/preview.tpl d3e0885d51d811b73e82a1acf363a33b7b35570c
F www/templates/Modern/realtime.js f42157b8f718f14cc560e995c4ff36015fcfb402
F www/templates/Modern/restore_confirm.tpl f188857035a342aa1849778853427a4e04ad743d
F www/templates/Modern/search.less 862db3bdd9c6b448d445c7920bffa2778652cb1e
F www/templates/Modern/search_result.tpl 601ab3652e00138840894f6ba44a528445b7f341
F www/templates/Modern/settings.less 7d14f1ab499c3125998e9baae957b7e86109a836
F www/templates/Modern/skin_variables.lsi 51d37f8c036062f0a924407dbf913e39f6ba9c75
F www/templates/Modern/sqlite.less 5716244e0d41d5dc61f4b0e9a451546510580aa3
F www/templates/Modern/statistics.tpl a7fc0b7ba293fdb718c92c051c4f05e67e3c7067
F www/templates/Modern/thread_info.tpl f36990dcb85dacf92db97f97e1130a7ae557766c
F www/templates/Modern/thread_list.less e56afa0608877a4e0e4efd68eeb5a150487fddf2
F www/templates/Modern/threadnew.less 5bbc07889598f870fa4a24519087d36e02382e57
F www/templates/Modern/toaster.less 463c319154e4f2413b5fd3c5e65d2e5b576a943d
F www/templates/Modern/userinfo.less 7e90979a174c347d337637c6e08500d5da35db44
F www/templates/Modern/userinfo.tpl 8eced029e1f6591c8c6d82f36c76ae3d23da50e0
F www/templates/Modern/users_online.less a807d20a84ba5d3c0a0a4e201ce006c638a39cb5
F www/templates/Modern/userslist.less cd1902ebd82281d362dcbd8d227bccd3d03274ab
F www/templates/Modern/userslist_ftr.tpl 125a168e24b2bd38aadb84cbb5f87f316b073c41
F www/templates/Modern/userslist_hdr.tpl af4d4df8f6c0052cd17119ce67cbfb5fab9cd8a4
F www/templates/Urban\sSunrise/_images/_source/alltags.svg 54cc9a54bfb1155f6219007c2aa430febf96e4ce
F www/templates/Urban\sSunrise/_images/_source/chat.svg 411380cf5f635d1e911789a04e6b32e3f49d6997
F www/templates/Urban\sSunrise/_images/_source/chat2.svg 51afd77b1a81f8a446df6abd6ffc33c14ebda8a3
F www/templates/Urban\sSunrise/_images/_source/close2.svg a453f088f41598a22f1ba04fc00cace8cdb66ad9
F www/templates/Urban\sSunrise/_images/_source/close3.svg ca8377d61a7a7a1c40665c4cb08e181fde72157c
F www/templates/Urban\sSunrise/_images/_source/del.svg 386a3cd2c36aa5d7250637f22ea6401066a3e2ca
F www/templates/Urban\sSunrise/_images/_source/drop-down2.svg 2c7baef041ff421274111036ba1692b226677ee8
F www/templates/Urban\sSunrise/_images/_source/drop-down3.svg e4beabbc9d2fc6fbfd6956f971fce915bfa19f1a
F www/templates/Urban\sSunrise/_images/_source/edit.svg 04ffdad78af310ac6e0c8323052ff22cf67487e9
F www/templates/Urban\sSunrise/_images/_source/help4s.svg 567c8e6642c35afa99bf9df30891e37e8f23846b
F www/templates/Urban\sSunrise/_images/_source/megaphone2.svg efc2b1290f6b21909e72213e4ecaebededbd085a
F www/templates/Urban\sSunrise/_images/_source/new-post.svg d85faee513632b9435c60e3873cd5db3cdb5ee8d
F www/templates/Urban\sSunrise/_images/_source/new-post2.svg 7c362696403f1269d228a19a5c076b54e2e1e309
F www/templates/Urban\sSunrise/_images/_source/restore.svg f2598a638739af6238b5c8363d4c16a9b91df2c5
F www/templates/Urban\sSunrise/_images/_source/rss.svg 212ef22f50c1926c9e17c43ffd79455827eac4b9
F www/templates/Urban\sSunrise/_images/_source/rss2.svg 9e8a33f52ae2cd159cdb765ea134f02a94593aaa
F www/templates/Urban\sSunrise/_images/_source/rss3.svg 2f2feeb3db8dcf3284610354e01870f5cc3e2e6e
F www/templates/Urban\sSunrise/_images/_source/search.svg 2dd775851877f8bcebe67f6cdf0dca1d54229b3d
F www/templates/Urban\sSunrise/_images/_source/search2.svg c04c298fdc97e59d1e6955252011ede98ffa5110
F www/templates/Urban\sSunrise/_images/_source/send_msg.svg f6f8ed474f9e0c97c4baed62edddd485a86366a5
F www/templates/Urban\sSunrise/_images/_source/tag.svg b074e23c3f58df0fcfe89d3d4039c21f537e82d7
F www/templates/Urban\sSunrise/_images/anon.png bcc2d2595b3565f6d3b0c2bebf1a63d26f924084
F www/templates/Urban\sSunrise/_images/chatemoticons 6f2fb8dfd71252d2cdbe7b9b1d330c5859872e31 l
F www/templates/Urban\sSunrise/_images/emoticons 6f2fb8dfd71252d2cdbe7b9b1d330c5859872e31 l
F www/templates/Urban\sSunrise/activation_email_subject.tpl e0bd685144e72197dd0034b068e82d7604f926d2 l
F www/templates/Urban\sSunrise/activation_email_text.tpl 50d1d6b7fe42736e334ab6870d7cc72e9085889d l
F www/templates/Urban\sSunrise/activity0.tpl 66800be0587fffe32c9acf83029cb8fc7ac74332 l
F www/templates/Urban\sSunrise/activity1.tpl 6fa6f00fea84fee0253d4707881c9a5338feb90f l
F www/templates/Urban\sSunrise/activity10.tpl bc1c313b326ae3ea9f440b0f607cfd0f8ce482d6 l
F www/templates/Urban\sSunrise/activity11.tpl 3a1ef0a6e3383b59f0e17e7bff76186ed93336b5 l
F www/templates/Urban\sSunrise/activity12.tpl 490dd079393fc2a2180dd0cc5f7f9581fee448dd l
F www/templates/Urban\sSunrise/activity13.tpl e5c3c56a5acdf56383fd3e5710c342444a30b61c l
F www/templates/Urban\sSunrise/activity14.tpl 8012d3a8f8147ef4ea446c49fe994f4e0f0e0b38 l
F www/templates/Urban\sSunrise/activity15.tpl 955d52b0160283783778a2e3af17125bc2c9ee8e l
F www/templates/Urban\sSunrise/activity16.tpl c3bb31fa19e15df415b7e7d6f942dad1e80c70c7 l
F www/templates/Urban\sSunrise/activity17.tpl 1229faf8484fa7878c0ff385af534d94b012cf9a l
F www/templates/Urban\sSunrise/activity18.tpl a43359d158536a3a4a0deaa8e8ae9a86f34ee375 l
F www/templates/Urban\sSunrise/activity19.tpl 3f8eb4a66305ccfaecc07e39d0305fa521c4910d l
F www/templates/Urban\sSunrise/activity2.tpl 0c02bfb196ad6955c2e9bdfc53e313d15d32a6f6 l
F www/templates/Urban\sSunrise/activity20.tpl 808359fdf3e47466adc8208357d29467310e1947 l
F www/templates/Urban\sSunrise/activity3.tpl d076539803d955db90cc721ad51644f7c7d4bb70 l
F www/templates/Urban\sSunrise/activity4.tpl 6a7b65a1f69740098b92dfee5e56d9420a3d0980 l
F www/templates/Urban\sSunrise/activity5.tpl a0f664d4ee44680703ed8dc5cf30c1046b21dea0 l
F www/templates/Urban\sSunrise/activity6.tpl b5c8a9fbc2efa2eac931ea024f5d78047618cfc5 l
F www/templates/Urban\sSunrise/activity7.tpl 606eb1ee82da0767dd85e3d2ac63a07e9874a5fb l
F www/templates/Urban\sSunrise/activity8.tpl 36d833a0164bb74532e88161cff3d7c8d05cef52 l
F www/templates/Urban\sSunrise/activity9.tpl 60fe5018f101f822fa00434bff49db7a3f7da947 l
F www/templates/Urban\sSunrise/all-emoji.txt e98af1671a301fd3a1e58c1934b62f4ce9506be6
F www/templates/Urban\sSunrise/atom_entry_post.tpl b909b679b9c4ea1723cf9ca5827c2fba527bf589 l
F www/templates/Urban\sSunrise/atom_entry_thread.tpl d6f76cb18d5e725a3708a966e9e8720ca643a239 l
F www/templates/Urban\sSunrise/atom_start.tpl d47f23ad78f9717598c748c2b37f812d56a4ccdb l
F www/templates/Urban\sSunrise/autocomplete.js 7f821fe4b74d465ef6042714c91ced568d7ef6d4
F www/templates/Urban\sSunrise/chat.js af2f7194df2c16f49ae8b77bf014f160f2984385
F www/templates/Urban\sSunrise/chat.less 7e3affa9b2e5a2826cd61bb77f484c0df1b8f190
F www/templates/Urban\sSunrise/chat.tpl 5141a052cd4911ab8af4a380bc25614d41050b7d
F www/templates/Urban\sSunrise/common.less 5189a7628589b9b068cf1c50d44b3074fff9c940
F www/templates/Urban\sSunrise/compile_styles.sh 3e46c82fed51ce7766a7549c7e99ce49ebf52e63 x
F www/templates/Urban\sSunrise/crypto.tpl 4930aee3c23ceb58a56e45f2a5667d90db63a001
F www/templates/Urban\sSunrise/debug.less 9a989f4670bb3d584f60c57d50af9fbf9bf75117
F www/templates/Urban\sSunrise/del_confirm.tpl e63ef3040705ecd7c913128a2102e714d3e32c70
F www/templates/Urban\sSunrise/delete.less 397589f431219056581591243e48548d43fb8507
F www/templates/Urban\sSunrise/edit.json 57373eabba1d23e08fc65a2693970bb8ab13cca8
F www/templates/Urban\sSunrise/edit_toolbar.tpl 3f18db7549b9f247fb24c4ec4bbcf130103ab069
F www/templates/Urban\sSunrise/editor.less be05f1f1838a634d2159e70c27ca74ba078face2
F www/templates/Urban\sSunrise/editors.js 62b24fad2427dfb5e525534e6cfd07e0a62d8a75
F www/templates/Urban\sSunrise/error.less 43f5b23eace778d249411d453321ec6d16d4f306
F www/templates/Urban\sSunrise/error_html_end.tpl 2c8ed9fde68d59302efcc46919870a7d02d53c92
F www/templates/Urban\sSunrise/error_html_start.tpl 53ee357916bacab74bb7f9b63dc203d6cf93cde0
F www/templates/Urban\sSunrise/file-browse.js f24eef322b130b2715410431ea4199679de5f65b
F www/templates/Urban\sSunrise/form_edit.tpl 35447dc2e14aaec631768e00cb39cc2c41c803d6
F www/templates/Urban\sSunrise/form_edit_thread.tpl 235f47cd3758d3cd0208d7ece47e5f6e44f54877
F www/templates/Urban\sSunrise/form_editinfo.tpl 905b2a7b443efc06f86ba28eeb7ebfccecefc1b2
F www/templates/Urban\sSunrise/form_login.tpl fe8b409f221a5553ee0f40bde655fa3cb276485f
F www/templates/Urban\sSunrise/form_new_post.tpl 5c79ea7b1e3a4d15c3afc7449e4e82c23d04a240
F www/templates/Urban\sSunrise/form_new_thread.tpl fe634f528fe69f75acfd65b4dec356a57278075d
F www/templates/Urban\sSunrise/form_post_debug.tpl 5f6c4f0b659ac70310a51ef835f09ded1e449922
F www/templates/Urban\sSunrise/form_register.tpl 02cc15121365375ffe92866cfe46ae944ef1855b
F www/templates/Urban\sSunrise/form_reset_password.tpl d9aa084867bfc75045a93db88af361770a960158
F www/templates/Urban\sSunrise/form_reset_request.tpl 2670304557d27ff156db4652a360a9044b415c7e
F www/templates/Urban\sSunrise/form_settings.tpl c3396b6fcce2bb981bec1ebe31e56a0b1a1c8e54
F www/templates/Urban\sSunrise/form_setup.tpl 16dc82fb7a7a29055df5a44656faab93231c38da
F www/templates/Urban\sSunrise/form_sqlite_console.tpl 04720cf7c2be67a3ec0922a734eb58b6739c66b3
F www/templates/Urban\sSunrise/help-bbcode.txt 6732933421f6641562759d73997cbf611b9bc59b
F www/templates/Urban\sSunrise/help-minimag.txt fc7edb304e4d3d6ade4dd77361b178cb7706a402
F www/templates/Urban\sSunrise/help_new_thread.tpl 3aab94692d3b4a273f955ba697a7f7af700991ec
F www/templates/Urban\sSunrise/highlight.js b4a380fb43186d51a405fb185067120657f243f2
F www/templates/Urban\sSunrise/highlight.less fba68624d1b34a5543fe0bf4b2af2ac1ddf65e74
F www/templates/Urban\sSunrise/login.less e2c9b06104a775ae1abcc63bdc69f71b4662b870
F www/templates/Urban\sSunrise/main_html_end.tpl 05bb25b9490ce93732628c937860db787c516c46
F www/templates/Urban\sSunrise/main_html_start.tpl 3eb252e4e16ed2b0022f8ae6cdfda67d07584eea
F www/templates/Urban\sSunrise/markdown.less 93d45a124d881f64ee365b765e65fa96529d9b6f
F www/templates/Urban\sSunrise/minimag_suffix.tpl a632de87926473be9e816e8969992372a1f4e352
F www/templates/Urban\sSunrise/nav_categories.tpl c04334bde3272eed0ceeb558cb640a15a41b39e8
F www/templates/Urban\sSunrise/nav_history.tpl 20332cc80d34a9c4fe360cc5559d98f0537900c2
F www/templates/Urban\sSunrise/nav_list.tpl cb440a2c3860302344fdc735a241ee9d8468b4a3
F www/templates/Urban\sSunrise/nav_search.tpl c5abc05e0defefe48c8d79167638f0e65b805948
F www/templates/Urban\sSunrise/nav_thread.tpl 54c1c878905ead11fe0836057dfcea88dca838c0
F www/templates/Urban\sSunrise/nav_userslist.tpl f589aae323b62e3ee2de91251c3bbcce11e597d1
F www/templates/Urban\sSunrise/one_category.tpl 221b1f24f1fd8949cdfabca65f2e7fcbb48303fd
F www/templates/Urban\sSunrise/one_user.tpl 66e01f838cd2fd5ed9d9c623bd68a0bf0e9de135
F www/templates/Urban\sSunrise/post_history.tpl 14d36bc7bd53912d73c2d8ba662eff1fb949113a
F www/templates/Urban\sSunrise/post_view.tpl a738e6117bc5ccd8d4ffc8b2cf6746e4c5be45b8
F www/templates/Urban\sSunrise/posteditor.less af2d688c4445e9c333d411f20af8ee860519a302
F www/templates/Urban\sSunrise/posts.less 503bb880b10736efdb4bef50a2741a4d000ac43e
F www/templates/Urban\sSunrise/preview.tpl 8477e385f5ea211ff7c7b635375a1a364d20e032
F www/templates/Urban\sSunrise/realtime.js 12fd7e4a8d7aecd293b20529a7ba2ef5203909a7
F www/templates/Urban\sSunrise/restore_confirm.tpl 52a9c63c3575dc9a740886776c4dc6c2e0a07efe
F www/templates/Urban\sSunrise/search.less 0bcaf20f6012fe18db4ecdad203032fc082678df
F www/templates/Urban\sSunrise/search_result.tpl ef10b3a14fe5e603b7fdc900c0a266782cafeabc
F www/templates/Urban\sSunrise/settings.less bf5853436cdf02aabfd8e721b677517d30a5310c
F www/templates/Urban\sSunrise/skin_variables.lsi 78974d8372551ed85a981703a612ca20dacdf9f0
F www/templates/Urban\sSunrise/sqlite.less 660b247ef2a036462dd4aeae6d92f54881fda877
F www/templates/Urban\sSunrise/statistics.tpl a7fc0b7ba293fdb718c92c051c4f05e67e3c7067
F www/templates/Urban\sSunrise/thread_info.tpl 79f62e983692d5c8e5385e7cbb6b83b2b18bba28
F www/templates/Urban\sSunrise/thread_list.less 0fc3d401b2059046026623e95009bb102f7f0812
F www/templates/Urban\sSunrise/threadnew.less 5a4763e82b7635a7288925cd86cb785b92ba9bef
F www/templates/Urban\sSunrise/toaster.less ef23208bda00fc0322c56c41a928c29d526d8f35
F www/templates/Urban\sSunrise/userinfo.less b6f644807f3369dd43b449cf85e74b236c8386d8
F www/templates/Urban\sSunrise/userinfo.tpl 3c2bb1243cde84854f2ec10450511849b2ff7622
F www/templates/Urban\sSunrise/users_online.less 1965f5016a3cbb2fe1f3d403d245fc42b7fdb898
F www/templates/Urban\sSunrise/userslist.less ec1e6eef4a20099688911201883ec818733fc43e
F www/templates/Urban\sSunrise/userslist_ftr.tpl cdf4bf8f51f450a842d85ab41a089e05a2e12f73
F www/templates/Urban\sSunrise/userslist_hdr.tpl 79c5b28322e9c0f587ed0f81ac451fe12d38235f
F www/templates/Wasp/_images/alltags.svg e5f3073cd5c54ae00888851d31ee830f9e96bce1
F www/templates/Wasp/_images/alltags_gray.svg b269030eb91ca5d10dfd8a66a6ea1cb4c83966af
F www/templates/Wasp/_images/anon.png f1150ae9c16cb5dd89c7f9f6c502bb6128783519
F www/templates/Wasp/_images/ban.svg a5765bd961033bef87a75328171e655daf2f7904
F www/templates/Wasp/_images/chatemoticons 92b583a5a5e7d203c807f62b3733d6e731355681 l
F www/templates/Wasp/_images/chatemoticons/angry.gif d43a06f17649f6c9da6c85ff3dbbf0e4853f0520
F www/templates/Wasp/_images/chatemoticons/cry.gif 44fbe228ae5fda20c3e83a7b8175fe7981afaf57
F www/templates/Wasp/_images/chatemoticons/lol.gif 305f1546cdceaee6d5118c7cf739874c86c4200e
F www/templates/Wasp/_images/chatemoticons/rofl.gif c9624e02cd3a3e89c227ab6c3ac17ea0d9edf283
F www/templates/Wasp/_images/chatemoticons/sad.gif a4ca623ef9f7ccdbf7680c4201f590bc1a2f8896
F www/templates/Wasp/_images/chatemoticons/smile.gif b9a29d9c77e9e2f9a37da58d9c23df69d6f8517a
F www/templates/Wasp/_images/chatemoticons/tongue.gif 1f0e43256d9b04e3c714a07a9d8dc6628199b4d9
F www/templates/Wasp/_images/chatemoticons/wink.gif 2e56ed1aa4446e248c7666030924d7090afcbd66
F www/templates/Wasp/_images/close.svg c07cfedfb7b2d4d756c2202e652a5bad1548e277
F www/templates/Wasp/_images/del.svg 5e3d0ba999e37de7dfdc43292d1c14e4513573ac
F www/templates/Wasp/_images/del_white.svg 94d8d830628cf60965d5e4c6b35458aadeeafbe1
F www/templates/Wasp/_images/edit.svg a1b01c72f16833c8bad8eb058ff298cb3d5fb320
F www/templates/Wasp/_images/edit_white.svg 32de0d55e734823a33792baa4e6be2291dbcf55d
F www/templates/Wasp/_images/edited.svg 2f003198c4acd6bb294e25be53f1299713cffdb8
F www/templates/Wasp/_images/email.png 24f356bd043c4d2c9ab64314a341690d6e71bf94
F www/templates/Wasp/_images/emoticons 6f2fb8dfd71252d2cdbe7b9b1d330c5859872e31 l
F www/templates/Wasp/_images/emoticons/angry.gif 20500d3b94175c345946ad8bb149068d1d5c2b1a
F www/templates/Wasp/_images/emoticons/cry.gif b821d5e08564af307ac3c71f945dddfa8ea6452c
F www/templates/Wasp/_images/emoticons/lol.gif 0e9fe36570a78b40ed0baf0a08b0f0ca6e5e9605
F www/templates/Wasp/_images/emoticons/rofl.gif 907a534a661a9a090665496f07b5361501c7ba91
F www/templates/Wasp/_images/emoticons/sad.gif 29a61168f0546302de3fe9d1ddd963d62cf85d93
F www/templates/Wasp/_images/emoticons/smile.gif e15f0be2a0607a061f46d297f80b982d95ec4ce5
F www/templates/Wasp/_images/emoticons/tongue.gif f37a376e83402b21c9770767728282b08e7e495e
F www/templates/Wasp/_images/emoticons/wink.gif fea56f9c71694b38842aa0f6295d26cc330fcca7
F www/templates/Wasp/_images/help.svg 2581fe16847d84dc21ab16d5cc133297769393e3
F www/templates/Wasp/_images/history.svg 4323f28b013a59737835e422217f8e3d066ea748
F www/templates/Wasp/_images/limited.svg 1eb5c63bf549c429ef6c07400c4b002c7159c493
F www/templates/Wasp/_images/limited_gray.svg ed2cf684ec3ffc093695e9b14fa2bcd6fb4ade31
F www/templates/Wasp/_images/markread.svg 9400f96f6c802e860bced2e7fd56227fd2d04976
F www/templates/Wasp/_images/onepost.svg 41b518db5955c7192d1272566a64bb0ae2da17f1
F www/templates/Wasp/_images/onepost_gray.svg e24f6a889dd6389c2a0a045b06e7761616cba763
F www/templates/Wasp/_images/pass.png 53421227820c5bd598095a41606845d13e23155f
F www/templates/Wasp/_images/pinned.png ff02233406ffbb2e38f7d88e79d1c9c10c3153cd
F www/templates/Wasp/_images/pinned0.png 066a3c6e31fb2da342f34602eff8b35cb18f3fc3
F www/templates/Wasp/_images/posts.svg c08363ff513355b7dacdbe877c6bcf2db7149e29
F www/templates/Wasp/_images/posts_gray.svg 809ee9b2688df16ae2f4fec535612e22f7bf6d9c
F www/templates/Wasp/_images/quote.svg a57dfe55abff5e0685326195e49180c32bf2565c
F www/templates/Wasp/_images/restore.svg e8fdd4924b182d74f5f20b1a71354077a8b0149f
F www/templates/Wasp/_images/rss.svg 94b1aa2fc766e64fcf872bb3dd788f852db652f2
F www/templates/Wasp/_images/save_white.svg af0ea2e281c54c48c36dd963f446272ce0f9036e
F www/templates/Wasp/_images/search.svg 9da761054c10deb9ab4b363eb5c891e145156dd2
F www/templates/Wasp/_images/tag.svg 2f3a0d76f36c983a6a5d1c55d507ce403e616257
F www/templates/Wasp/_images/tag_gray.svg 48d4f93adf1bc6e94f76236ea3497492c1b9c94e
F www/templates/Wasp/_images/toolbar.svg 2390a07684cc33627c41f0afd3edb6c8dce671b3
F www/templates/Wasp/_images/user.png bf7f849ee8f09b959965aa984f2a5ce7f972ce07
F www/templates/Wasp/_images/yellow_back.png 5e6ab56d8245a36b59995f22c411989be636e99b
F www/templates/Wasp/activation_email_subject.tpl fbe97e27a9a6cf59c9d590233479925d2836552c
F www/templates/Wasp/activation_email_text.tpl 20d2ce60e7df3923651b8cda1a38ce0d260eaf92
F www/templates/Wasp/activity0.tpl c91e8781a391ee4e8a7b99a015a86f123958061f
F www/templates/Wasp/activity1.tpl 0c61809a8d656d8322c68857bca119ea025845a2
F www/templates/Wasp/activity10.tpl 840045afa04bcc615c29a3e95c0b657ae9b2860a
F www/templates/Wasp/activity11.tpl 615ab0fbba523ec765804917dabe3c76f847e4f6
F www/templates/Wasp/activity12.tpl a07261fb42321b259826782f2548da188e02d189
F www/templates/Wasp/activity13.tpl 051346b5cb21da0d9adaa225eddb028f5ee83480
F www/templates/Wasp/activity14.tpl 90fcd95496e6a8758716383a13e7aa9797e57526
F www/templates/Wasp/activity15.tpl f421a9f214aa75493e819377efff9a854db142e2
F www/templates/Wasp/activity16.tpl bdca79d39c2efe87deb81e51f98460f0a115fc7d
F www/templates/Wasp/activity17.tpl 21d5668413ba7cc822b737bad70aa2429bd39c36
F www/templates/Wasp/activity18.tpl e889e1978671d419e079a6f7f202449500c605e7
F www/templates/Wasp/activity19.tpl fc63dbc03856fb87a7610e6e421be0375b9c6209
F www/templates/Wasp/activity2.tpl 8bbf74807152c4737832a44a4b71008daf22cbff
F www/templates/Wasp/activity20.tpl b094b4805c181f7c51505bc2037d5979df589b55
F www/templates/Wasp/activity3.tpl 278b5fbcde2c55ce10382691f4434b129782f234
F www/templates/Wasp/activity4.tpl 9f15b1c30d34caf705fd8f9b9df2e9fb9e2d954a
F www/templates/Wasp/activity5.tpl ebc215b4ccbb057bffdaa16538473757c5879691
F www/templates/Wasp/activity6.tpl 8183551cc7d489d3fef5f42dba5d275ce1120278
F www/templates/Wasp/activity7.tpl e25bb04eb0b2e06619095bc1f2165d989fb93460
F www/templates/Wasp/activity8.tpl 312c9c2b7443e8c135a1ad8124d0415d780fffc9
F www/templates/Wasp/activity9.tpl 9f354c2dd3b3a9d3c171e7230a88aaf3b074b848
F www/templates/Wasp/atom_entry_post.tpl a36d3dd1e06725015323056b09bdc1492aa6a0cc
F www/templates/Wasp/atom_entry_thread.tpl 3c40daa2721f924d813b3bcb1b646f45c14bccaa
F www/templates/Wasp/atom_start.tpl c310bcc4afb0bbebc291d454a39f2e8f7980a627
F www/templates/Wasp/autocomplete.js 7a997eb0436880fc544f24424bdcacb311584831
F www/templates/Wasp/chat.less a4c64381f5ef14741bb249a4678573cbea899f83
F www/templates/Wasp/chat.tpl 24337d6caa5f210bdec82092507bed38f524b12a
F www/templates/Wasp/common.less 08205d5a976e919f4e22b30fbdf3e1ae61139dcd
F www/templates/Wasp/compile_styles.sh 3e46c82fed51ce7766a7549c7e99ce49ebf52e63 x
F www/templates/Wasp/crypto.tpl 4930aee3c23ceb58a56e45f2a5667d90db63a001
F www/templates/Wasp/debug.less 028000816d3504bdb2cf7c9813bbb3300aa2fdc5
F www/templates/Wasp/del_confirm.tpl 26b8239d78b69cd5fbe206ea12ccb96890aac030
F www/templates/Wasp/delete.less 253a0f549e132a9d55ae56fe399a8929eabb4a29
F www/templates/Wasp/edit.json a2aaf0ee51695178d59b589c95b0d9bc63cd5c02
F www/templates/Wasp/edit_toolbar.tpl 592b433d01901590ad32ade1e925bb599ce2ad73
F www/templates/Wasp/editor.less a10e7a93ebc53c9612c385f149e70e7fe2683327
F www/templates/Wasp/error.less 43f5b23eace778d249411d453321ec6d16d4f306
F www/templates/Wasp/error_html_end.tpl 2c8ed9fde68d59302efcc46919870a7d02d53c92
F www/templates/Wasp/error_html_start.tpl 53ee357916bacab74bb7f9b63dc203d6cf93cde0
F www/templates/Wasp/form_edit.tpl 960e2204cb967b3c2b7af8c1e66019db5a812b17
F www/templates/Wasp/form_edit_thread.tpl eacb39e161ed4bf47fbe8bb0690a4e01b34f3162
F www/templates/Wasp/form_editinfo.tpl fa7867c7017da5f81c5424c209a44a1feccf0dd3
F www/templates/Wasp/form_login.tpl 9d2c28ae6dc5b44de5ca20d9734402b34ce697a4
F www/templates/Wasp/form_new_post.tpl 00b9572e505ce6b8b675b45ac09f05bc0a8090cd
F www/templates/Wasp/form_new_thread.tpl 6e5f82f34c601e89e2f20f37020e55797b2ffe6e
F www/templates/Wasp/form_post_debug.tpl 5f6c4f0b659ac70310a51ef835f09ded1e449922
F www/templates/Wasp/form_register.tpl 25cdeffa395f90e248b383ee85390f9395cef8d3
F www/templates/Wasp/form_reset_password.tpl 4b1ca1f5cdf5bb2ea7f0620722393e8324a97fa0
F www/templates/Wasp/form_reset_request.tpl 45298eaa3544ec492eb9ca6e4f482fe30378a0e0
F www/templates/Wasp/form_settings.tpl a4f94b22b41e057a7358481758d2ff55f2da71a3
F www/templates/Wasp/form_setup.tpl 16dc82fb7a7a29055df5a44656faab93231c38da
F www/templates/Wasp/form_sqlite_console.tpl 7c492fd0663a1f999e88186f0af74f87bcd04a25
F www/templates/Wasp/help_new_thread.tpl 3aab94692d3b4a273f955ba697a7f7af700991ec
F www/templates/Wasp/login.less b854c20c711dffeec158f044c59cbcf72a3161d5
F www/templates/Wasp/main_html_end.tpl 53de7f6314a3460448c7d8988eb132d82b2d763c
F www/templates/Wasp/main_html_start.tpl 843c036a240e668a5e8664d0c1035fb9adcd216b
F www/templates/Wasp/markdown.less e62eac499043788e834f58f022ad46526e8d5629
F www/templates/Wasp/minimag_suffix.tpl a632de87926473be9e816e8969992372a1f4e352
F www/templates/Wasp/nav_categories.tpl a132b6d7a2351b6d7fabfdb7c821dfb7228c0ac2
F www/templates/Wasp/nav_history.tpl 7d7b20a16288e53f745d28fe97cf43244b9bb29d
F www/templates/Wasp/nav_list.tpl ad2924ff9cfd565d3cc00d11f71d86cbeca45a1d
F www/templates/Wasp/nav_search.tpl 94348341523bd79e3919d36b9a7072ca1da82e27
F www/templates/Wasp/nav_thread.tpl 899bb9fb51c6221df197b5a1cee34c4964dc8631
F www/templates/Wasp/nav_userslist.tpl b25e53dad0dab74e40c295c207593dd929900c06
F www/templates/Wasp/navigation.less 8c28c22cd4f6852b26564921290213a8cd3ad2dc
F www/templates/Wasp/one_category.tpl 28da1952be772af4b86dc09161e96927291346de
F www/templates/Wasp/one_user.tpl 66e01f838cd2fd5ed9d9c623bd68a0bf0e9de135
F www/templates/Wasp/post_history.tpl 2b467681d5502151d0e4fee49678ae7216009d2f
F www/templates/Wasp/post_view.tpl 793f932304ac3e92afef33b74261307355b100d3
F www/templates/Wasp/posteditor.less f990d5a9034599e43c3e72471622db9b89f62c43
F www/templates/Wasp/postnew.less ddc68e487d815f8cd6aa3ebfc23d1f71bffa3daa
F www/templates/Wasp/posts.less cea5f85c3b61a043bd3e07dca04a28e87e8d616a
F www/templates/Wasp/preview.tpl 7762cf404ea93817b3121932c29a7cac0502c135
F www/templates/Wasp/realtime.js f42157b8f718f14cc560e995c4ff36015fcfb402
F www/templates/Wasp/restore_confirm.tpl 51628410ec4a3753bc384fd0c733e059aba965c4
F www/templates/Wasp/search.less b34f1251689d901618c53115ac9c25a2c75f094a
F www/templates/Wasp/search_result.tpl 436d969e5b83d331581f8c0db368cab14d9be8e9
F www/templates/Wasp/settings.less de9396e5eafb2f88a57886f3ff131c810e444f2d
F www/templates/Wasp/skin_variables.lsi e56bdd2d3fc3f7947e6dbb8d69f74581a4efb807
F www/templates/Wasp/sqlite.less f4a2edc06c2c1410f5d78ad1ea298439251482af
F www/templates/Wasp/statistics.tpl a7fc0b7ba293fdb718c92c051c4f05e67e3c7067
F www/templates/Wasp/thread_info.tpl 4c175bfcd6cf486a10a729809f69b208cead54c0
F www/templates/Wasp/thread_list.less 0456c492a51c4ac4355b20a65ebd799dcd3a7de0
F www/templates/Wasp/threadnew.less edfa421addbc85ccc765c47e70e6a2cb395c7733
F www/templates/Wasp/toaster.less 9d765eccadcd46072bf309ad0ea48739b0e1f516
F www/templates/Wasp/userinfo.less 19048398c5cf99ef6abbd5d576bafa8f3d0eb89e
F www/templates/Wasp/userinfo.tpl 2faf9364061afbec798d8875ed90000bb531bd0b
F www/templates/Wasp/users_online.less 910547b8d9853b50a4a1aca66e2e5995ed78c5b4
F www/templates/Wasp/userslist.less 9dae27c4e52c68f3351549034bdd7f9754bce069
F www/templates/Wasp/userslist_ftr.tpl cdf4bf8f51f450a842d85ab41a089e05a2e12f73
F www/templates/Wasp/userslist_hdr.tpl 79c5b28322e9c0f587ed0f81ac451fe12d38235f
F www/templates/_fonts/NotoSansSymbols2-Regular.ttf 9d9826dba2d6daea10338e73a5943783d1d00946
F www/templates/build_styles.sh a745cff403fbcc4a5f298ab3b7f2ddd37841a5e2 x
F www/templates/create_tar.sh 25628f0b7580d3c703ba55042951a3a5f34f9c8e x
F www/templates/mobile/_images 70c26c9bd422a7e59f2dca80d02ec99f39b390fb l
F www/templates/mobile/activation_email_subject.tpl e0bd685144e72197dd0034b068e82d7604f926d2 l
F www/templates/mobile/activation_email_text.tpl 50d1d6b7fe42736e334ab6870d7cc72e9085889d l
F www/templates/mobile/activity0.tpl 66800be0587fffe32c9acf83029cb8fc7ac74332 l
F www/templates/mobile/activity1.tpl 6fa6f00fea84fee0253d4707881c9a5338feb90f l
F www/templates/mobile/activity10.tpl bc1c313b326ae3ea9f440b0f607cfd0f8ce482d6 l
F www/templates/mobile/activity11.tpl 3a1ef0a6e3383b59f0e17e7bff76186ed93336b5 l
F www/templates/mobile/activity12.tpl 490dd079393fc2a2180dd0cc5f7f9581fee448dd l
F www/templates/mobile/activity13.tpl e5c3c56a5acdf56383fd3e5710c342444a30b61c l
F www/templates/mobile/activity14.tpl 8012d3a8f8147ef4ea446c49fe994f4e0f0e0b38 l
F www/templates/mobile/activity15.tpl 955d52b0160283783778a2e3af17125bc2c9ee8e l
F www/templates/mobile/activity16.tpl c3bb31fa19e15df415b7e7d6f942dad1e80c70c7 l
F www/templates/mobile/activity17.tpl 1229faf8484fa7878c0ff385af534d94b012cf9a l
F www/templates/mobile/activity18.tpl a43359d158536a3a4a0deaa8e8ae9a86f34ee375 l
F www/templates/mobile/activity19.tpl 3f8eb4a66305ccfaecc07e39d0305fa521c4910d l
F www/templates/mobile/activity2.tpl 0c02bfb196ad6955c2e9bdfc53e313d15d32a6f6 l
F www/templates/mobile/activity20.tpl 808359fdf3e47466adc8208357d29467310e1947 l
F www/templates/mobile/activity3.tpl d076539803d955db90cc721ad51644f7c7d4bb70 l
F www/templates/mobile/activity4.tpl 6a7b65a1f69740098b92dfee5e56d9420a3d0980 l
F www/templates/mobile/activity5.tpl a0f664d4ee44680703ed8dc5cf30c1046b21dea0 l
F www/templates/mobile/activity6.tpl b5c8a9fbc2efa2eac931ea024f5d78047618cfc5 l
F www/templates/mobile/activity7.tpl 606eb1ee82da0767dd85e3d2ac63a07e9874a5fb l
F www/templates/mobile/activity8.tpl 36d833a0164bb74532e88161cff3d7c8d05cef52 l
F www/templates/mobile/activity9.tpl 60fe5018f101f822fa00434bff49db7a3f7da947 l
F www/templates/mobile/atom_entry_post.tpl b909b679b9c4ea1723cf9ca5827c2fba527bf589 l
F www/templates/mobile/atom_entry_thread.tpl d6f76cb18d5e725a3708a966e9e8720ca643a239 l
F www/templates/mobile/atom_start.tpl d47f23ad78f9717598c748c2b37f812d56a4ccdb l
F www/templates/mobile/autocomplete.js a996b9733be61eac1ebe92d8d4382cade7a93a26 l
F www/templates/mobile/chat.less a79e6ed68fe1c2ed2ce8398687a97d762a30b025
F www/templates/mobile/chat.tpl d913bb600dd3a1d8b4109999cb5e0a567b02276f
F www/templates/mobile/common.less 762e4e8198de87fbcb131462b3476432725a2c65 l
F www/templates/mobile/compile_styles.sh 3e46c82fed51ce7766a7549c7e99ce49ebf52e63 x
F www/templates/mobile/crypto.tpl 6ef96b37863b72234fba72b67fe78ac8643ea3df l
F www/templates/mobile/debug.less 6d9e9e8a7950596c5ca3642286341af651f98823 l
F www/templates/mobile/del_confirm.tpl cdcb838e2e3a339de5408643fd2c2f3c447ab916 l
F www/templates/mobile/delete.less 3a74460f12ec494d6ac273a831839c1242abdc60 l
F www/templates/mobile/edit.json bbf3ccaa55253deb23dd57baa42a9044a3827169 l
F www/templates/mobile/edit_toolbar.tpl b3d0d80bd108930946ecc811b03731fc2ea0fb00 l
F www/templates/mobile/editor.less 01d0be8c4eaa0f91139b00b7bedaa3fb66dc4450 l
F www/templates/mobile/error.less 83cd53cf80eb467b611ebe7865c41c96694c293f l
F www/templates/mobile/error_html_end.tpl 62173b764a79089fff2cfe7be9428adcd13046da l
F www/templates/mobile/error_html_start.tpl 0e59043bca2eece87606b5085e216f22a529eb77 l
F www/templates/mobile/form_edit.tpl 153f529ae16d8ea3e8767c660bbde1339c0105ba
F www/templates/mobile/form_edit_thread.tpl 9ba48416deb4498a8dcad61198289fb396592980 l
F www/templates/mobile/form_editinfo.tpl 91a3644fb4b1021bffa2356f7291f6e457eebe1e l
F www/templates/mobile/form_login.tpl 1ca5a25baff036f4b5a655b72d25c18c987a8ed7 l
F www/templates/mobile/form_new_post.tpl 8d49d3712dae533e8a15a522baadd32c230b6f9f l
F www/templates/mobile/form_new_thread.tpl 95aeb8e36c8aff51b101dca130c101071c917b6c l
F www/templates/mobile/form_post_debug.tpl 0a3e574bb2595001a5c1cebbd66c59aefd6aaab7 l
F www/templates/mobile/form_register.tpl 6e44ae46c9d0df170d76cb91b145bc2f3d60b7ea l
F www/templates/mobile/form_reset_password.tpl 90a83e1c6756ae652670b3470bbe6aac02972276 l
F www/templates/mobile/form_reset_request.tpl 74a4b6da9f76d26f8ca433a6113ab9e87dee3c4a l
F www/templates/mobile/form_settings.tpl a4635e33d4fa270b3b69c39572f4bfc94ea8ccc2 l
F www/templates/mobile/form_setup.tpl 7e32c9ff828a1cd2698285f3519632978add1b00 l
F www/templates/mobile/form_sqlite_console.tpl b90d0e298e5cc10782bafbe2e403cceb365a2fe4 l
F www/templates/mobile/help_new_thread.tpl 579ed6559a0a3aee0fe3be3a2c841c1dd7b8b169 l
F www/templates/mobile/login.less 4af417eb9ae51e7d5691cba96a93ef5a9fd79dd2 l
F www/templates/mobile/main_html_end.tpl d8b3ec3c2cdc952fcab6638d4147ee7e9cd2ba96 l
F www/templates/mobile/main_html_start.tpl b93c0043a09f7ef6614707de05a8b45f8af6b33f l
F www/templates/mobile/markdown.less d38259171bb1e7f611beaf604731356f0d99da52
F www/templates/mobile/minimag_suffix.tpl f3a1414972a13590a7c984b53b6fd2ddd3a47f3a l
F www/templates/mobile/nav_categories.tpl f7d6f653d7de3ea424b62ebae575e3c5c1f4d98b l
F www/templates/mobile/nav_history.tpl ac180ed4422e7ee62e4421a19c1ee7d69a72e503 l
F www/templates/mobile/nav_list.tpl 580abd0547137f604a05a525aefb34e520f6b7ab l
F www/templates/mobile/nav_search.tpl 29858e2ca8b4ac6a1f2660c6f3039c5683386976 l
F www/templates/mobile/nav_thread.tpl 851b655a70770fd41465661c6a03531d9008b212 l
F www/templates/mobile/nav_userslist.tpl f44893d9191cdabb718fca881a15419579728ecd l
F www/templates/mobile/navigation.less a4b813498e8918e0757b6e8731417a1a7b16e968 l
F www/templates/mobile/one_category.tpl a708fe0d344a3b684ed7228e7f32486237f90b28 l
F www/templates/mobile/one_user.tpl f1e1aacad832e82f4b446f755387efe7f6d815b1 l
F www/templates/mobile/post_history.tpl 252f022e564844721c84b264f05f527742108a19 l
F www/templates/mobile/post_view.tpl 4e4b1a73db2462b1954e92ec092c71c438b63e85 l
F www/templates/mobile/posteditor.less 337d6782415dd8e342caf41d6b4fe77e38ecf898
F www/templates/mobile/postnew.less 3df1b56984c0e0268104a69862782120a40f06be l
F www/templates/mobile/posts.less 3632e245346b8d10ec679b3a894ed59b8736837c
F www/templates/mobile/preview.tpl 6bd29d06a6720e51db6d4d73b7572f9fcc1ff32f l
F www/templates/mobile/realtime.js 6c9458775762c040796133f0b828370ab2243cc1 l
F www/templates/mobile/restore_confirm.tpl c59340b4b594a629285efa18802ea6d542442afb l
F www/templates/mobile/search.less 4aae680b0042d04f27b06a36469268d5dfec7e89
F www/templates/mobile/search_result.tpl 7b0c0d02750c7369f35f8ef7294586090efed19e
F www/templates/mobile/settings.less ceddd6b5948701659f883fd99ed0b9a31067df6e l
F www/templates/mobile/skin_variables.lsi d448d21d7d36a03671002606decb06f54334ac1f
F www/templates/mobile/sqlite.less d6c705801f27dd30658b51803f0638ded21bb45c l
F www/templates/mobile/statistics.tpl 02861774083214684cafea3d902f3788fd388fe5 l
F www/templates/mobile/thread_info.tpl 20a9cf8bffc64c18e9c29fb2454c807cb111f16c
F www/templates/mobile/thread_list.less 09d6aa44e80627b8c22b5a1ddecff43a738b6108
F www/templates/mobile/threadnew.less c2af3d158e2e03851692576dce99f5287e50b0c6 l
F www/templates/mobile/toaster.less 0e571446584a37703a12a550d2235c322a604e07 l
F www/templates/mobile/userinfo.less b1372ec6bfe2edede336dfcf10e8b25f9910bccb
F www/templates/mobile/userinfo.tpl 6e18bdb4553c2d935c139c26195253cb6ee91922 l
F www/templates/mobile/users_online.less cda0da3c26b9fa07bc6d0b5a32dafa70e5d009d2 l
F www/templates/mobile/userslist.less 1f89c97d65ebd57e345097b487b4fbbe92b62fe8 l
F www/templates/mobile/userslist_ftr.tpl 20a60058b2a1039e62cc39449f6577071e98f969 l
F www/templates/mobile/userslist_hdr.tpl 8d96a8dd3b905fc86ab52d79555c1268aafb56c2 l
F www/templates/untar.sh 99deef0554beffe3e70a628f57f8ea4452579ebd x
P baad89220eed2cbe6b0cf01430eaff395b40e081
R f6572e1d6398fdb5a9d47f13190e9067
U johnfound
Z a244017b41585e68a86cc87fb00531d1
# Remove this line to create a well-formed manifest.

1
manifest.uuid Normal file
View File

@ -0,0 +1 @@
6bdcaabb3cc63f069bcf467610d2c80e1145a70f

41
musl_sqlite/README Normal file
View File

@ -0,0 +1,41 @@
In order to build the required by AsmBB libraries (musl and sqlite3)
you need to have the following tools installed and working:
gcc
tar
unzip
wget
Most of the Linux distributions have these tools already installed.
You don't need to have root priviledges. Never run this script as
a root or with sudo!
In case the source files for the libraries are missing, the
script will download the latest versions from the respective
servers.
If you want to use other version, download it and place the archive
file in this directory. The script is looking for:
"musl*.tar.gz" for MUSL
"sqlite3.c", "sqlite*.zip" or "sqlite*.tar.gz" for SQLite.
If such file exists the script will use it. If not, tries to download
the latest sources from the respective Internet sites.
The most simple use of the script (although slower) is to delete all
archives and source files from the directory and run:
$ ./build
The script will compile the sqlite3 library with musl and will create
two files: "libsqlite3.so" and "ld-musl-i386.so"; Copy these files
in the AsmBB directory in order to use them.
This script is called automatically from the script
"install/create_relese.sh" that creates the binary release archives.
Report every building problems. I am testing on Manjaro/Arch linux
and some problems on other distributions are possible (but not expected).

161
musl_sqlite/build Executable file
View File

@ -0,0 +1,161 @@
#!/bin/sh
# Exit codes:
#
# 1: missing source archive. can't download
# 2: broken source archive.
# 3: compilation of MUSL failed
# 4: compilation of SQLite failed
# First, cleanup from previous builds.
rm -rf ./muslsrc/
rm -rf ./musl/
# exit if the files are already compiled:
if [ -f ./libsqlite3.so ] && [ -f ./ld-musl-i386.so ]; then
echo "The libraries are already compiled. Delete the binary files for rebuild."
exit 0
fi
# First find sqlite3.c file. As an existing file, existing source archive or download from Internet.
if [ -f ./sqlite3.c ]; then
echo "Using the existing file sqlite3.c ..."
else
echo "Downloading latest SQLeet master branch archive..."
{ wget -q -O - https://github.com/resilar/sqleet/archive/master.tar.gz | tar -xz 2> /dev/null; } || { echo >&2 "Error: Can't download SQLeet sources."; exit 2;}
cd ./sqleet-master
echo "Building the amalgamation sqlite3.c ..."
script/amalgamate.sh < ./sqleet.c > ../sqlite3.c
cd ..
rm -rf ./sqleet-master/ &
# The following code downloads SQLite sources from the original web site without encryption support!
#
# if [ ! -f ./sqlite*.zip ] && [ ! -f ./sqlite*.tar.gz ]; then
# echo "Downloading latest SQLite source archive..."
# { wget -q -O - https://www.sqlite.org/cgi/src/tarball/sqlite3.tar.gz?r=release | tar -xz 2> /dev/null; } || { echo >&2 "Error: Can't download SQLite sources."; exit 2;}
# cd ./sqlite3
# echo "Building the amalgamation sqlite3.c ..."
# ./configure > /dev/null 2>&1 || { echo >&2 "Error: Can't configure SQLite sources"; exit 4; }
# make sqlite3.c > /dev/null 2>&1 || { echo >&2 "Error: Can't make sqlite3.c"; exit 4; }
# cd ..
# cp ./sqlite3/sqlite3.c ./
# rm -rf ./sqlite3/ &
# else
# if [ -f ./sqlite*.zip ]; then
# files=( sqlite*.zip )
# echo "Extracting sqlite from ${files[0]}..."
# unzip -joq "${files[0]}" *sqlite3.c || { echo >&2 "Error: Broken SQLite source archive."; exit 2; }
# else
# files=( sqlite*.tar.gz )
# echo "Extracting sqlite from ${files[0]}..."
# tar --wildcards --strip-components 1 -xzf "${files[0]}" */sqlite3.c || { echo >&2 "Error: Broken SQLite source archive."; exit 2; }
# fi
# fi
fi
# Second, find the MUSL sources. As an existing archive or download from Internet.
if [ ! -f ./musl*.tar.gz ]; then
echo "Downloading MUSL source archive..."
{ wget https://www.musl-libc.org/releases/musl-latest.tar.gz 2> /dev/null; } || { echo >&2 "Error: missing MUSL sources."; exit 1; }
fi
echo "Extracting MUSL source code..."
mkdir muslsrc
{ tar --wildcards --strip-components 1 -C ./muslsrc/ -xzf ./musl*.tar.gz 2> /dev/null; } || { echo "Error: Broken MUSL source archive."; exit 2; }
cd muslsrc
# Configure and compile MUSL;
echo "Compiling MUSL ..."
./configure --prefix=../musl --host=i386 CC="gcc -m32" CFLAGS="-Os -fno-omit-frame-pointer -mpreferred-stack-boundary=2 -march=x86-64" CROSS_COMPILE="/bin/" > /dev/null 2>&1 || { echo >&2 "Error: Can't configure MUSL."; exit 3; }
make -j 4 > /dev/null 2>&1 || { echo >&2 "Error: Can't compile MUSL."; exit 3; }
make -j 4 install > /dev/null 2>&1 || { echo >&2 "Error: Can't install MUSL to the current directory."; exit 3; }
cd ..
rm -rf ./muslsrc/ &
echo "Create gcc.specs file..."
# THE BLANK LINES IN THE BELOW TEXT ARE IMPORTANT!
# DON'T EDIT IF YOU DON'T KNOW WHAT YOU ARE DOING!
# IT IS A BLACK GCC MAGIC!
cat <<EOT > musl/musl-gcc.specs
*asm:
--32
%rename cpp_options old_cpp_options
*cpp_options:
-nostdinc -isystem ./musl/include -isystem include%s %(old_cpp_options)
*cc1:
%(cc1_cpu) -nostdinc -isystem ./musl/include -isystem include%s
*link_libgcc:
-L./musl/lib -L .%s
*libgcc:
32/libgcc.a%s %:if-exists(libgcc_eh.a%s)
*startfile:
%{!shared: ./musl/lib/%{pie:S}crt1.o} ./musl/lib/crti.o %{shared|pie:crtbeginS.o%s;:crtbeginS.o%s}
*endfile:
%{shared|pie:crtendS.o%s;:crtendS.o%s} ./musl/lib/crtn.o
*link:
-m elf_i386 -dynamic-linker /lib/ld-musl-i386.so.1 -nostdlib %{shared:-shared} %{static:-static} %{rdynamic:-export-dynamic}
*esp_link:
*esp_options:
*esp_cpp_options:
EOT
# Compile the sqlite3.so shared library.
echo "Compiling SQLite ..."
gcc -m32 -Os -shared -fno-stack-protector -mpreferred-stack-boundary=2 -march=x86-64 \
-fno-omit-frame-pointer \
-specs musl/musl-gcc.specs \
-DSQLITE_DEFAULT_MEMSTATUS=0 \
-DSQLITE_LIKE_DOESNT_MATCH_BLOBS \
-DSQLITE_MAX_EXPR_DEPTH=0 \
-DSQLITE_OMIT_DEPRECATED \
-DSQLITE_OMIT_PROGRESS_CALLBACK \
-DSQLITE_OMIT_SHARED_CACHE \
-DSQLITE_ENABLE_FTS5 \
-DSQLITE_OMIT_COMPLETE \
-DSQLITE_OMIT_GET_TABLE \
-DSQLITE_OMIT_UTF16 \
-DSQLITE_OMIT_AUTHORIZATION \
-DSQLITE_THREADSAFE=1 \
-DSQLITE_ENABLE_STAT4 \
./sqlite3.c -o ./libsqlite3.so \
|| { echo >&2 "Error: Can't compile SQLite."; exit 4; }
mv ./musl/lib/libc.so ./ld-musl-i386.so
rm -rf ./musl/ &
strip ./libsqlite3.so
strip ./ld-musl-i386.so
echo "Building process finished successfully."

Binary file not shown.

230004
musl_sqlite/sqlite3.c Normal file

File diff suppressed because it is too large Load Diff

4
server_robots_block.conf Normal file
View File

@ -0,0 +1,4 @@
location = /robots.txt {
access_log off;
alias /usr/local/openresty/nginx/robots.txt;
}

3
server_security_txt.conf Normal file
View File

@ -0,0 +1,3 @@
location = /.well-known/security.txt {
alias /usr/local/openresty/nginx/security.txt;
}

File diff suppressed because it is too large Load Diff

BIN
source/Documents/futex.pdf Normal file

Binary file not shown.

View File

@ -0,0 +1,843 @@
Internet Engineering Task Force (IETF) L. Masinter
Request for Comments: 7578 Adobe
Obsoletes: 2388 July 2015
Category: Standards Track
ISSN: 2070-1721
Returning Values from Forms: multipart/form-data
Abstract
This specification defines the multipart/form-data media type, which
can be used by a wide variety of applications and transported by a
wide variety of protocols as a way of returning a set of values as
the result of a user filling out a form. This document obsoletes
RFC 2388.
Status of This Memo
This is an Internet Standards Track document.
This document is a product of the Internet Engineering Task Force
(IETF). It represents the consensus of the IETF community. It has
received public review and has been approved for publication by the
Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 5741.
Information about the current status of this document, any errata,
and how to provide feedback on it may be obtained at
http://www.rfc-editor.org/info/rfc7578.
Copyright Notice
Copyright (c) 2015 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Masinter Standards Track [Page 1]
RFC 7578 multipart/form-data July 2015
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Percent-Encoding Option . . . . . . . . . . . . . . . . . . . 3
3. Advice for Forms and Form Processing . . . . . . . . . . . . 3
4. Definition of multipart/form-data . . . . . . . . . . . . . . 4
4.1. "Boundary" Parameter of multipart/form-data . . . . . . . 4
4.2. Content-Disposition Header Field for Each Part . . . . . 4
4.3. Multiple Files for One Form Field . . . . . . . . . . . . 5
4.4. Content-Type Header Field for Each Part . . . . . . . . . 5
4.5. The Charset Parameter for "text/plain" Form Data . . . . 5
4.6. The _charset_ Field for Default Charset . . . . . . . . . 6
4.7. Content-Transfer-Encoding Deprecated . . . . . . . . . . 6
4.8. Other "Content-" Header Fields . . . . . . . . . . . . . 7
5. Operability Considerations . . . . . . . . . . . . . . . . . 7
5.1. Non-ASCII Field Names and Values . . . . . . . . . . . . 7
5.1.1. Avoid Non-ASCII Field Names . . . . . . . . . . . . . 7
5.1.2. Interpreting Forms and Creating multipart/form-data
Data . . . . . . . . . . . . . . . . . . . . . . . . 7
5.1.3. Parsing and Interpreting Form Data . . . . . . . . . 8
5.2. Ordered Fields and Duplicated Field Names . . . . . . . . 8
5.3. Interoperability with Web Applications . . . . . . . . . 8
5.4. Correlating Form Data with the Original Form . . . . . . 9
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9
7. Security Considerations . . . . . . . . . . . . . . . . . . . 9
8. Media Type Registration for multipart/form-data . . . . . . . 10
9. References . . . . . . . . . . . . . . . . . . . . . . . . . 11
9.1. Normative References . . . . . . . . . . . . . . . . . . 11
9.2. Informative References . . . . . . . . . . . . . . . . . 12
Appendix A. Changes from RFC 2388 . . . . . . . . . . . . . . . 14
Appendix B. Alternatives . . . . . . . . . . . . . . . . . . . . 14
Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 15
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 15
1. Introduction
In many applications, it is possible for a user to be presented with
a form. The user will fill out the form, including information that
is typed, generated by user input, or included from files that the
user has selected. When the form is filled out, the data from the
form is sent from the user to the receiving application.
The definition of multipart/form-data is derived from one of those
applications, originally set out in [RFC1867] and subsequently
incorporated into HTML 3.2 [W3C.REC-html32-19970114], where forms are
expressed in HTML, and the form data is sent via HTTP or electronic
mail. This representation is widely implemented in numerous web
browsers and web servers.
Masinter Standards Track [Page 2]
RFC 7578 multipart/form-data July 2015
However, multipart/form-data is also used for forms that are
presented using representations other than HTML (spreadsheets, PDF,
etc.) and for transport using means other than electronic mail or
HTTP; it is used in distributed applications that do not involve
forms at all or do not have users filling out the form. For this
reason, this document defines a general syntax and semantics
independent of the application for which it is used, with specific
rules for web applications noted in context.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in BCP 14, RFC 2119
[RFC2119].
2. Percent-Encoding Option
Within this specification, "percent-encoding" (as defined in
[RFC3986]) is offered as a possible way of encoding characters in
file names that are otherwise disallowed, including non-ASCII
characters, spaces, control characters, and so forth. The encoding
is created replacing each non-ASCII or disallowed character with a
sequence, where each byte of the UTF-8 encoding of the character is
represented by a percent-sign (%) followed by the (case-insensitive)
hexadecimal of that byte.
3. Advice for Forms and Form Processing
The representation and interpretation of forms and the nature of form
processing is not specified by this document. However, for forms and
form processing that result in the generation of multipart/form-data,
some suggestions are included.
In a form, there is generally a sequence of fields, where each field
is expected to be supplied with a value, e.g., by a user who fills
out the form. Each field has a name. After a form has been filled
out and the form's data is "submitted", the form processing results
in a set of values for each field -- the "form data".
In forms that work with multipart/form-data, field names could be
arbitrary Unicode strings; however, restricting field names to ASCII
will help avoid some interoperability issues (see Section 5.1).
Within a given form, ensuring field names are unique is also helpful.
Some fields may have default values or presupplied values in the form
itself. Fields with presupplied values might be hidden or invisible;
this allows using generic processing for form data from a variety of
actual forms.
Masinter Standards Track [Page 3]
RFC 7578 multipart/form-data July 2015
4. Definition of multipart/form-data
The media type multipart/form-data follows the model of multipart
MIME data streams as specified in Section 5.1 of [RFC2046]; changes
are noted in this document.
A multipart/form-data body contains a series of parts separated by a
boundary.
4.1. "Boundary" Parameter of multipart/form-data
As with other multipart types, the parts are delimited with a
boundary delimiter, constructed using CRLF, "--", and the value of
the "boundary" parameter. The boundary is supplied as a "boundary"
parameter to the multipart/form-data type. As noted in Section 5.1
of [RFC2046], the boundary delimiter MUST NOT appear inside any of
the encapsulated parts, and it is often necessary to enclose the
"boundary" parameter values in quotes in the Content-Type header
field.
4.2. Content-Disposition Header Field for Each Part
Each part MUST contain a Content-Disposition header field [RFC2183]
where the disposition type is "form-data". The Content-Disposition
header field MUST also contain an additional parameter of "name"; the
value of the "name" parameter is the original field name from the
form (possibly encoded; see Section 5.1). For example, a part might
contain a header field such as the following, with the body of the
part containing the form data of the "user" field:
Content-Disposition: form-data; name="user"
For form data that represents the content of a file, a name for the
file SHOULD be supplied as well, by using a "filename" parameter of
the Content-Disposition header field. The file name isn't mandatory
for cases where the file name isn't available or is meaningless or
private; this might result, for example, when selection or drag-and-
drop is used or when the form data content is streamed directly from
a device.
If a "filename" parameter is supplied, the requirements of
Section 2.3 of [RFC2183] for the "receiving MUA" (i.e., the receiving
Mail User Agent) apply to receivers of multipart/form-data as well:
do not use the file name blindly, check and possibly change to match
local file system conventions if applicable, and do not use directory
path information that may be present.
Masinter Standards Track [Page 4]
RFC 7578 multipart/form-data July 2015
In most multipart types, the MIME header fields in each part are
restricted to US-ASCII; for compatibility with those systems, file
names normally visible to users MAY be encoded using the percent-
encoding method in Section 2, following how a "file:" URI
[URI-SCHEME] might be encoded.
NOTE: The encoding method described in [RFC5987], which would add a
"filename*" parameter to the Content-Disposition header field, MUST
NOT be used.
Some commonly deployed systems use multipart/form-data with file
names directly encoded including octets outside the US-ASCII range.
The encoding used for the file names is typically UTF-8, although
HTML forms will use the charset associated with the form.
4.3. Multiple Files for One Form Field
The form data for a form field might include multiple files.
[RFC2388] suggested that multiple files for a single form field be
transmitted using a nested "multipart/mixed" part. This usage is
deprecated.
To match widely deployed implementations, multiple files MUST be sent
by supplying each file in a separate part but all with the same
"name" parameter.
Receiving applications intended for wide applicability (e.g.,
multipart/form-data parsing libraries) SHOULD also support the older
method of supplying multiple files.
4.4. Content-Type Header Field for Each Part
Each part MAY have an (optional) "Content-Type" header field, which
defaults to "text/plain". If the contents of a file are to be sent,
the file data SHOULD be labeled with an appropriate media type, if
known, or "application/octet-stream".
4.5. The Charset Parameter for "text/plain" Form Data
In the case where the form data is text, the charset parameter for
the "text/plain" Content-Type MAY be used to indicate the character
encoding used in that part. For example, a form with a text field in
which a user typed "Joe owes <eu>100", where <eu> is the Euro symbol,
might have form data returned as:
Masinter Standards Track [Page 5]
RFC 7578 multipart/form-data July 2015
--AaB03x
content-disposition: form-data; name="field1"
content-type: text/plain;charset=UTF-8
content-transfer-encoding: quoted-printable
Joe owes =E2=82=AC100.
--AaB03x
In practice, many widely deployed implementations do not supply a
charset parameter in each part, but rather, they rely on the notion
of a "default charset" for a multipart/form-data instance.
Subsequent sections will explain how the default charset is
established.
4.6. The _charset_ Field for Default Charset
Some form-processing applications (including HTML) have the
convention that the value of a form entry with entry name "_charset_"
and type "hidden" is automatically set when the form is opened; the
value is used as the default charset of text field values (see form-
charset in Section 5.1.2). In such cases, the value of the default
charset for each "text/plain" part without a charset parameter is the
supplied value. For example:
--AaB03x
content-disposition: form-data; name="_charset_"
iso-8859-1
--AaB03x--
content-disposition: form-data; name="field1"
...text encoded in iso-8859-1 ...
AaB03x--
4.7. Content-Transfer-Encoding Deprecated
Previously, it was recommended that senders use a Content-Transfer-
Encoding encoding (such as "quoted-printable") for each non-ASCII
part of a multipart/form-data body because that would allow use in
transports that only support a "7bit" encoding. This use is
deprecated for use in contexts that support binary data such as HTTP.
Senders SHOULD NOT generate any parts with a Content-Transfer-
Encoding header field.
Currently, no deployed implementations that send such bodies have
been discovered.
Masinter Standards Track [Page 6]
RFC 7578 multipart/form-data July 2015
4.8. Other "Content-" Header Fields
The multipart/form-data media type does not support any MIME header
fields in parts other than Content-Type, Content-Disposition, and (in
limited circumstances) Content-Transfer-Encoding. Other header
fields MUST NOT be included and MUST be ignored.
5. Operability Considerations
5.1. Non-ASCII Field Names and Values
Normally, MIME header fields in multipart bodies are required to
consist only of 7-bit data in the US-ASCII character set. While
[RFC2388] suggested that non-ASCII field names be encoded according
to the method in [RFC2047], this practice doesn't seem to have been
followed widely.
This specification makes three sets of recommendations for three
different states of workflow.
5.1.1. Avoid Non-ASCII Field Names
For broadest interoperability with existing deployed software, those
creating forms SHOULD avoid non-ASCII field names. This should not
be a burden because, in general, the field names are not visible to
users. The field names in the underlying need not match what the
user sees on the screen.
If non-ASCII field names are unavoidable, form or application
creators SHOULD use UTF-8 uniformly. This will minimize
interoperability problems.
5.1.2. Interpreting Forms and Creating multipart/form-data Data
Some applications of this specification will supply a character
encoding to be used for interpretation of the multipart/form-data
body. In particular, HTML 5 [W3C.REC-html5-20141028] uses
o the content of a "_charset_" field, if there is one;
o the value of an accept-charset attribute of the <form> element, if
there is one;
o the character encoding of the document containing the form, if it
is US-ASCII compatible;
o otherwise, UTF-8.
Masinter Standards Track [Page 7]
RFC 7578 multipart/form-data July 2015
Call this value the form-charset. Any text, whether field name,
field value, or ("text/plain") form data that uses characters outside
the ASCII range MAY be represented directly encoded in the form-
charset.
5.1.3. Parsing and Interpreting Form Data
While this specification provides guidance for the creation of
multipart/form-data, parsers and interpreters should be aware of the
variety of implementations. File systems differ as to whether and
how they normalize Unicode names, for example. The matching of form
elements to form-data parts may rely on a fuzzier match. In
particular, some multipart/form-data generators might have followed
the previous advice of [RFC2388] and used the "encoded-word" method
of encoding non-ASCII values, as described in [RFC2047]:
encoded-word = "=?" charset "?" encoding "?" encoded-text "?="
Others have been known to follow [RFC2231], to send unencoded UTF-8,
or even to send strings encoded in the form-charset.
For this reason, interpreting multipart/form-data (even from
conforming generators) may require knowing the charset used in form
encoding in cases where the _charset_ field value or a charset
parameter of a "text/plain" Content-Type header field is not
supplied.
5.2. Ordered Fields and Duplicated Field Names
Form processors given forms with a well-defined ordering SHOULD send
back results in order. (Note that there are some forms that do not
define a natural order.) Intermediaries MUST NOT reorder the
results. Form parts with identical field names MUST NOT be
coalesced.
5.3. Interoperability with Web Applications
Many web applications use the "application/x-www-form-urlencoded"
method for returning data from forms. This format is quite compact,
for example:
name=Xavier+Xantico&verdict=Yes&colour=Blue&happy=sad&Utf%F6r=Send
However, there is no opportunity to label the enclosed data with a
content type, apply a charset, or use other encoding mechanisms.
Masinter Standards Track [Page 8]
RFC 7578 multipart/form-data July 2015
Many form-interpreting programs (primarily web browsers) now
implement and generate multipart/form-data, but a receiving
application might also need to support the
"application/x-www-form-urlencoded" format.
5.4. Correlating Form Data with the Original Form
This specification provides no specific mechanism by which multipart/
form-data can be associated with the form that caused it to be
transmitted. This separation is intentional; many different forms
might be used for transmitting the same data. In practice,
applications may supply a specific form processing resource (in HTML,
the ACTION attribute in a FORM tag) for each different form.
Alternatively, data about the form might be encoded in a "hidden
field" (a field that is part of the form but that has a fixed value
to be transmitted back to the form-data processor).
6. IANA Considerations
The media type registration of multipart/form-data has been updated
to point to this document, using the template in Section 8. In
addition, the registrations of the "name" parameter and the "form-
data" value in the "Content Disposition Values and Parameters"
registry have been updated to both point to this document.
7. Security Considerations
All form-processing software should treat user supplied form-data
with sensitivity, as it often contains confidential or personally
identifying information. There is widespread use of form "auto-fill"
features in web browsers; these might be used to trick users to
unknowingly send confidential information when completing otherwise
innocuous tasks. multipart/form-data does not supply any features
for checking integrity, ensuring confidentiality, avoiding user
confusion, or other security features; those concerns must be
addressed by the form-filling and form-data-interpreting
applications.
Applications that receive forms and process them must be careful not
to supply data back to the requesting form-processing site that was
not intended to be sent.
It is important when interpreting the filename of the Content-
Disposition header field to not inadvertently overwrite files in the
recipient's file space.
Masinter Standards Track [Page 9]
RFC 7578 multipart/form-data July 2015
User applications that request form information from users must be
careful not to cause a user to send information to the requestor or a
third party unwillingly or unwittingly. For example, a form might
request that spam information be sent to an unintended third party or
private information be sent to someone that the user might not
actually intend. While this is primarily an issue for the
representation and interpretation of forms themselves (rather than
the data representation of the form data), the transportation of
private information must be done in a way that does not expose it to
unwanted prying.
With the introduction of form-data that can reasonably send back the
content of files from a user's file space, the possibility arises
that a user might be sent an automated script that fills out a form
and then sends one of the user's local files to another address.
Thus, additional caution is required when executing automated
scripting where form-data might include a user's files.
Files sent via multipart/form-data may contain arbitrary executable
content, and precautions against malicious content are necessary.
The considerations of Sections 2.3 and 5 of [RFC2183], with respect
to the "filename" parameter of the Content-Disposition header field,
also apply to its usage here.
8. Media Type Registration for multipart/form-data
This section is the media type registration using the template from
[RFC6838].
Type name: multipart
Subtype name: form-data
Required parameters: boundary
Optional parameters: none
Encoding considerations: Common use is BINARY.
In limited use (or transports that restrict the encoding to 7bit
or 8bit), each part is encoded separately using Content-Transfer-
Encoding; see Section 4.7.
Security considerations: See Section 7 of this document.
Interoperability considerations: This document makes several
recommendations for interoperability with deployed
implementations, including Section 4.7.
Masinter Standards Track [Page 10]
RFC 7578 multipart/form-data July 2015
Published specification: This document.
Applications that use this media type: Numerous web browsers,
servers, and web applications.
Fragment identifier considerations: None; fragment identifiers are
not defined for this type.
Additional information:
Additional information:
Deprecated alias names for this type: N/A
Magic number(s): N/A
File extension(s): N/A
Macintosh file type code(s): N/A
Person & email address to contact for further information: Author of
this document.
Intended usage: COMMON
Restrictions on usage: none
Author: Author of this document.
Change controller: IETF
Provisional registration: N/A
9. References
9.1. Normative References
[RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
Extensions (MIME) Part Two: Media Types", RFC 2046,
DOI 10.17487/RFC2046, November 1996,
<http://www.rfc-editor.org/info/rfc2046>.
[RFC2047] Moore, K., "MIME (Multipurpose Internet Mail Extensions)
Part Three: Message Header Extensions for Non-ASCII Text",
RFC 2047, DOI 10.17487/RFC2047, November 1996,
<http://www.rfc-editor.org/info/rfc2047>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<http://www.rfc-editor.org/info/rfc2119>.
Masinter Standards Track [Page 11]
RFC 7578 multipart/form-data July 2015
[RFC2183] Troost, R., Dorner, S., and K. Moore, Ed., "Communicating
Presentation Information in Internet Messages: The
Content-Disposition Header Field", RFC 2183,
DOI 10.17487/RFC2183, August 1997,
<http://www.rfc-editor.org/info/rfc2183>.
[RFC2231] Freed, N. and K. Moore, "MIME Parameter Value and Encoded
Word Extensions: Character Sets, Languages, and
Continuations", RFC 2231, DOI 10.17487/RFC2231, November
1997, <http://www.rfc-editor.org/info/rfc2231>.
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
Resource Identifier (URI): Generic Syntax", STD 66,
RFC 3986, DOI 10.17487/RFC3986, January 2005,
<http://www.rfc-editor.org/info/rfc3986>.
9.2. Informative References
[RFC1867] Nebel, E. and L. Masinter, "Form-based File Upload in
HTML", RFC 1867, DOI 10.17487/RFC1867, November 1995,
<http://www.rfc-editor.org/info/rfc1867>.
[RFC2388] Masinter, L., "Returning Values from Forms: multipart/
form-data", RFC 2388, DOI 10.17487/RFC2388, August 1998,
<http://www.rfc-editor.org/info/rfc2388>.
[RFC5987] Reschke, J., "Character Set and Language Encoding for
Hypertext Transfer Protocol (HTTP) Header Field
Parameters", RFC 5987, DOI 10.17487/RFC5987, August 2010,
<http://www.rfc-editor.org/info/rfc5987>.
[RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type
Specifications and Registration Procedures", BCP 13,
RFC 6838, DOI 10.17487/RFC6838, January 2013,
<http://www.rfc-editor.org/info/rfc6838>.
[URI-SCHEME]
Kerwin, M., "The file URI Scheme", Work in Progress,
draft-ietf-appsawg-file-scheme-02, May 2015.
[W3C.REC-html32-19970114]
Raggett, D., "HTML 3.2 Reference Specification", W3C
Recommendation REC-html32-19970114, January 1997,
<http://www.w3.org/TR/REC-html32-19970114>.
Masinter Standards Track [Page 12]
RFC 7578 multipart/form-data July 2015
[W3C.REC-html5-20141028]
Hickson, I., Berjon, R., Faulkner, S., Leithead, T.,
Navara, E., O'Connor, E., and S. Pfeiffer, "HTML5", W3C
Recommendation REC-html5-20141028, October 2014,
<http://www.w3.org/TR/2014/REC-html5-20141028>.
Masinter Standards Track [Page 13]
RFC 7578 multipart/form-data July 2015
Appendix A. Changes from RFC 2388
The handling of non-ASCII field names has changed -- the method
described in RFC 2047 is no longer recommended; instead, it is
suggested that senders send UTF-8 field names directly and that file
names be sent directly in the form-charset.
The handling of multiple files submitted as the result of a single
form field (e.g., HTML's <input type=file multiple> element) results
in each file having its own top-level part with the same name
parameter; the method of using a nested "multipart/mixed" from
[RFC2388] is no longer recommended for creators and is not required
for receivers as there are no known implementations of senders.
The _charset_ convention and use of an explicit "form-data" charset
is documented; also, "boundary" is now a required parameter in
Content-Type.
The relationship of the ordering of fields within a form and the
ordering of returned values within multipart/form-data was not
defined before, nor was the handling of the case where a form has
multiple fields with the same name.
Various editorial changes were made; they include removing the
obsolete discussion of alternatives from the appendix, updating the
references, and moving the outline of form processing into the
introduction.
Appendix B. Alternatives
There are numerous alternative ways in which form data can be
encoded; many are listed in Section 5.2 of [RFC2388]. The multipart/
form-data encoding is verbose, especially if there are many fields
with short values. In most use cases, this overhead isn't
significant.
More problematic are the differences introduced when implementors
opted to not follow [RFC2388] when encoding non-ASCII field names
(perhaps because "may" should have been "MUST"). As a result,
parsers need to be more complex for matching against the possible
outputs of various encoding methods.
Masinter Standards Track [Page 14]
RFC 7578 multipart/form-data July 2015
Acknowledgements
Many thanks to the those who reviewed this document -- Alexey
Melnikov, Salvatore Loreto, Chris Lonvick, Kathleen Moriarty, Barry
Leiba, Julian Reschke, Tom Petch, Ned Freed, Cedric Brancourt, as
well as others, including Ian Hickson, who requested it be produced
in the first place.
Author's Address
Larry Masinter
Adobe
Email: masinter@adobe.com
URI: http://larry.masinter.net
Masinter Standards Track [Page 15]

205
source/Linux/sqleet.inc Normal file
View File

@ -0,0 +1,205 @@
; _______________________________________________________________________________________
;| |
;| ..::FreshLib::.. Free, open source. Licensed under "BSD 2-clause" license." |
;|_______________________________________________________________________________________|
;
; Description: sqlite3.dll API calls
;
; Target OS: Win32
;
; Dependencies:
;
; Notes:
;_________________________________________________________________________________________
import_proto './libsqleet.so', \
sqliteAggregateContext, <.context, .nbytes>, 'sqlite3_aggregate_context', \
sqliteAutoExtension, <.ptrCallback>, 'sqlite3_auto_extension', \
sqliteBackupFinish, <.ptrBackup>, 'sqlite3_backup_finish', \
sqliteBackupInit, <.ptrDestDB, .ptrDestName, .ptrSourceDB, .ptrSourceName>, 'sqlite3_backup_init', \
sqliteBackupPageCount, <.ptrBackup>, 'sqlite3_backup_pagecount', \
sqliteBackupRemaining, <.ptrBackup>, 'sqlite3_backup_remaining', \
sqliteBackupStep, <.ptrBackup, .nPage>, 'sqlite3_backup_step', \
sqliteBindBlob, <.stmt, .index, .ptrData, .nbytes, .destructor>, 'sqlite3_bind_blob', \
sqliteBindDouble, <.stmt, .index, .value>, 'sqlite3_bind_double', \
sqliteBindInt, <.stmt, .index, .value>, 'sqlite3_bind_int', \
sqliteBindInt64, <.stmt, .index, .valueLo, .valueHi>, 'sqlite3_bind_int64', \
sqliteBindNull, <.stmt, .index>, 'sqlite3_bind_null', \
sqliteBindParameterCount, <.stmt>, 'sqlite3_bind_parameter_count', \
sqliteBindParameterIndex, <.stmt, .paramName>, 'sqlite3_bind_parameter_index', \
sqliteBindParameterName, <.stmt, .paramIndex>, 'sqlite3_bind_parameter_name', \
sqliteBindText, <.stmt, .index, .ptrText, .nbytes, .destructor>, 'sqlite3_bind_text', \
sqliteBindText16, <.stmt, .index, .ptrText, .nbytes, .destructor>, 'sqlite3_bind_text16', \
sqliteBindValue, <.stmt, .index, .ptrValue>, 'sqlite3_bind_value', \
sqliteBindZeroblob, <.stmt, .index, .size>, 'sqlite3_bind_zeroblob', \
sqliteBlobBytes, <.hBlob>, 'sqlite3_blob_bytes', \
sqliteBlobClose, <.hBlob>, 'sqlite3_blob_close', \
sqliteBlobOpen, <.ptrDB, .DBname, .Table, .Column, .iRow, .flags, .ptrVarBlob>, 'sqlite3_blob_open', \
sqliteBlobRead, <.hBlob, .ptrBuffer, .bytes, .iOffset>, 'sqlite3_blob_read', \
sqliteBlobWrite, <.hBlob, .ptrBuffer, .bytes, .iOffset>, 'sqlite3_blob_write', \
sqliteBusyHandler, <.ptrDB, .ptrProc, .lParam>, 'sqlite3_busy_handler', \
sqliteBusyTimeout, <.ptrDB, .time_ms>, 'sqlite3_busy_timeout', \
sqliteChanges, <.ptrDB>, 'sqlite3_changes', \
sqliteClearBindings, <.stmt>, 'sqlite3_clear_bindings', \
sqliteClose, <.ptrDatabase>, 'sqlite3_close', \
sqliteCollationNeeded, <.ptrDB, .lparam, .ptrCallback>, 'sqlite3_collation_needed', \
sqliteCollationNeeded16, <.ptrDB, .lparam, .ptrCallback>, 'sqlite3_collation_needed16', \
sqliteColumnBlob, <.stmt, .iCol>, 'sqlite3_column_blob', \
sqliteColumnBytes, <.stmt, .iCol>, 'sqlite3_column_bytes', \
sqliteColumnBytes16, <.stmt, .iCol>, 'sqlite3_column_bytes16', \
sqliteColumnCount, <.stmt>, 'sqlite3_column_count', \
sqliteColumnDatabaseName, <.stmt, .index>, 'sqlite3_column_database_name', \
sqliteColumnDatabaseName16, <.stmt, .index>, 'sqlite3_column_database_name16', \
sqliteColumnDeclType, <.stmt, .index>, 'sqlite3_column_decltype', \
sqliteColumnDeclType16, <.stmt, .index>, 'sqlite3_column_decltype16', \
sqliteColumnDouble, <.stmt, .iCol>, 'sqlite3_column_double', \
sqliteColumnInt, <.stmt, .iCol>, 'sqlite3_column_int', \
sqliteColumnInt64, <.stmt, .iCol>, 'sqlite3_column_int64', \
sqliteColumnName, <.stmt, .index>, 'sqlite3_column_name', \
sqliteColumnName16, <.stmt, .index>, 'sqlite3_column_name16', \
sqliteColumnOriginName, <.stmt, .index>, 'sqlite3_column_origin_name', \
sqliteColumnOriginName16, <.stmt, .index>, 'sqlite3_column_origin_name16', \
sqliteColumnTableName, <.stmt, .index>, 'sqlite3_column_table_name', \
sqliteColumnTableName16, <.stmt, .index>, 'sqlite3_column_table_name16', \
sqliteColumnText, <.stmt, .iCol>, 'sqlite3_column_text', \
sqliteColumnText16, <.stmt, .iCol>, 'sqlite3_column_text16', \
sqliteColumnType, <.stmt, .iCol>, 'sqlite3_column_type', \
sqliteColumnValue, <.stmt, .iCol>, 'sqlite3_column_value', \
sqliteCommitHook, <.ptrDB, .ptrHook, .lparam>, 'sqlite3_commit_hook', \
sqliteCompileOptionGet, <.N>, 'sqlite3_compileoption_get', \
sqliteCompileOptionUsed, <.ptrOptName>, 'sqlite3_compileoption_used', \
sqliteComplete, <.ptrSQL>, 'sqlite3_complete', \
sqliteComplete16, <.ptrSQL>, 'sqlite3_complete16', \
sqliteConfig, <.index, ...>, 'sqlite3_config', \
sqliteContextDBHandle, <.context>, 'sqlite3_context_db_handle', \
sqliteCreateCollation, <.ptrDB, .ptrName, .eTextRep, .lparam, .procCompare>, 'sqlite3_create_collation', \
sqliteCreateCollation16, <.ptrDB, .ptrName, .eTextRep, .lparam, .procCompare>, 'sqlite3_create_collation16', \
sqliteCreateCollation_v2, <.ptrDB, .ptrName, .eTextRep, .lparam, .procCompare, .ptrDestroy>, 'sqlite3_create_collation_v2', \
sqliteCreateFunction, <.ptrDB, .ptrFunctionName, .nArg, .eTextRep, .lparam, .procFunc, .procStep, .procFinal>, 'sqlite3_create_function', \
sqliteCreateFunction16, <.ptrDB, .ptrFunctionName, .nArg, .eTextRep, .lparam, .procFunc, .procStep, .procFinal>, 'sqlite3_create_function16', \
sqliteCreateFunction_v2, <.ptrDB, .ptrFunctionName, .nArg, .eTextRep, .lparam, .procFunc, .procStep, .procFinal, .procDestroy>, 'sqlite3_create_function_v2', \
sqliteCreateModule, <.ptrDB, .ptrModuleName, .ptrVTableModule, .lparam>, 'sqlite3_create_module', \
sqliteCreateModule_v2, <.ptrDB, .ptrModuleName, .ptrVTableModule, .lparam, .procDestroy>, 'sqlite3_create_module_v2', \
sqliteDBConfig, <.ptrDB, .index, ...>, 'sqlite3_db_config', \
sqliteDBHandle, <.stmt>, 'sqlite3_db_handle', \
sqliteDBMutex, <.ptrDB>, 'sqlite3_db_mutex', \
sqliteDBStatus, <.ptrDB, .index, .ptrRetCurrent, .ptrRetHighest, .flagReset>, 'sqlite3_db_status', \
sqliteDataCount, <.stmt>, 'sqlite3_data_count', \
sqliteDeclareVtab, <.ptrDB, .ptrSQL>, 'sqlite3_declare_vtab', \
sqliteEnableLoadExtension, <.ptrDB, .flagEnable>, 'sqlite3_enable_load_extension', \
sqliteEnableSharedCache, <.flagEnable>, 'sqlite3_enable_shared_cache', \
sqliteErrCode, <.ptrDB>, 'sqlite3_errcode', \
sqliteErrMsg, <.ptrDB>, 'sqlite3_errmsg', \
sqliteErrMsg16, <.ptrDB>, 'sqlite3_errmsg16', \
sqliteErrStr, <.err_code>, 'sqlite3_errstr', \
sqliteExec, <.ptrDB, .ptrSQL, .procCallback, .lparam, .ptrVarErrMsg>, 'sqlite3_exec', \
sqliteExtendedErrCode, <.ptrDB>, 'sqlite3_extended_errcode', \
sqliteExtendedResultCodes, <.ptrDB, .flagEnable>, 'sqlite3_extended_result_codes', \
sqliteFileControl, <.ptrDB, .ptrDBName, .wparam, .lparam>, 'sqlite3_file_control', \
_sqliteFinalize, <.stmt>, 'sqlite3_finalize', \
sqliteFree, <.ptrmem>, 'sqlite3_free', \
sqliteFreeTable, <.ptrVarResult>, 'sqlite3_free_table', \
sqliteGetAutocommit, <.ptrDB>, 'sqlite3_get_autocommit', \
sqliteGetAuxdata, <.context, .N>, 'sqlite3_get_auxdata', \
sqliteGetTable, <.ptrDB, .ptrSQL, .ptrVarResult, .ptrVarRows, .ptrVarColumns, .ptrVarErrorMsg>, 'sqlite3_get_table', \
sqliteInitialize, <VOID>, 'sqlite3_initialize', \
sqliteInterrupt, <.ptrDB>, 'sqlite3_interrupt', \
sqliteLastInsertRowID, <.ptrDB>, 'sqlite3_last_insert_rowid', \
sqliteLibVersion, <VOID>, 'sqlite3_libversion', \
sqliteLibversionNumber, <VOID>, 'sqlite3_libversion_number', \
sqliteLimit, <.ptrDB, .idLimit, .newVal>, 'sqlite3_limit', \
sqliteLoadExtension, <.ptrDB, .nameDLL, .entryProc, .ptrVarErrMsg>, 'sqlite3_load_extension', \
sqliteLog, <.iErrCode, .ptrFormat, ...>, 'sqlite3_log', \
sqliteKey, <.ptrDB, .pKey, .pKeyLen>, 'sqlite3_key', \
sqliteKey_v2, <.ptrDB, .pDbName, .pKey, .pKeyLen>, 'sqlite3_key_v2', \
sqliteMAlloc, <.size>, 'sqlite3_malloc', \
sqliteMemoryHighWater, <.flagReset>, 'sqlite3_memory_highwater', \
sqliteMemoryUsed, <VOID>, 'sqlite3_memory_used', \
sqliteMprintf, <.ptrString, ...>, 'sqlite3_mprintf', \
sqliteMutexAlloc, <.type>, 'sqlite3_mutex_alloc', \
sqliteMutexEnter, <.hMutex>, 'sqlite3_mutex_enter', \
sqliteMutexFree, <.hMutex>, 'sqlite3_mutex_free', \
sqliteMutexLeave, <.hMutex>, 'sqlite3_mutex_leave', \
sqliteMutexTry, <.hMutex>, 'sqlite3_mutex_try', \
sqliteNextStmt, <.ptrDB, .stmt>, 'sqlite3_next_stmt', \
sqliteOSEnd, <VOID>, 'sqlite3_os_end', \
sqliteOSInit, <VOID>, 'sqlite3_os_init', \
sqliteOpen, <.ptrFileName, .ptrVarDB>, 'sqlite3_open', \
sqliteOpen16, <.ptrFileName, .ptrVarDB>, 'sqlite3_open16', \
sqliteOpen_v2, <.ptrFileName, .ptrVarDB, .flags, .ptrVFSName>, 'sqlite3_open_v2', \
sqliteOverloadFunction, <.ptrDB, .ptrFuncName, .lparam>, 'sqlite3_overload_function', \
sqlitePrepare, <.ptrDB, .ptrSQL, .lenSQL, .ptrVarStmt, .ptrVarNext>, 'sqlite3_prepare', \
sqlitePrepare16, <.ptrDB, .ptrSQL, .lenSQL, .ptrVarStmt, .ptrVarNext>, 'sqlite3_prepare16', \
sqlitePrepare16_v2, <.ptrDB, .ptrSQL, .lenSQL, .ptrVarStmt, .ptrVarNext>, 'sqlite3_prepare16_v2', \
_sqlitePrepare_v2, <.ptrDB, .ptrSQL, .lenSQL, .ptrVarStmt, .ptrVarNext>, 'sqlite3_prepare_v2', \
sqliteProfile, <.ptrDB, .procProfiler, .lparam>, 'sqlite3_profile', \
sqliteProgressHandler, <.ptrDB, .N, .procProgress, .lparam>, 'sqlite3_progress_handler', \
sqliteRandomness, <.bytes, .buffer>, 'sqlite3_randomness', \
sqliteReAlloc, <.ptrmem, .newsize>, 'sqlite3_realloc', \
sqliteRekey, <.ptrDB, .pNewKey, .nKeyLen>, 'sqlite3_rekey', \
sqliteRekey_v2, <.ptrDB, .pDbName, .pNewKey, .nKeyLen>, 'sqlite3_rekey_v2', \
sqliteReleaseMemory, <.bytes>, 'sqlite3_release_memory', \
sqliteReset, <.stmt>, 'sqlite3_reset', \
sqliteResetAutoExtension, <VOID>, 'sqlite3_reset_auto_extension', \
sqliteResultBlob, <.context, .ptrdata, .size, .procDestroy>, 'sqlite3_result_blob', \
sqliteResultDouble, <.context, .double>, 'sqlite3_result_double', \
sqliteResultError, <.context, .ptrErrMsg, .size>, 'sqlite3_result_error', \
sqliteResultError16, <.context, .ptrErrMsg, .size>, 'sqlite3_result_error16', \
sqliteResultErrorCode, <.context, .errcode>, 'sqlite3_result_error_code', \
sqliteResultErrorNoMem, <.context>, 'sqlite3_result_error_nomem', \
sqliteResultErrorTooBig, <.context>, 'sqlite3_result_error_toobig', \
sqliteResultInt, <.context, .integer>, 'sqlite3_result_int', \
sqliteResultInt64, <.context, .int64Lo, .int64Hi>, 'sqlite3_result_int64', \
sqliteResultNULL, <.context>, 'sqlite3_result_null', \
sqliteResultText, <.context, .ptrText, .size, .procDestroy>, 'sqlite3_result_text', \
sqliteResultText16, <.context, .ptrText, .size, .procDestroy>, 'sqlite3_result_text16', \
sqliteResultText16be, <.context, .ptrText, .size, .procDestroy>, 'sqlite3_result_text16be', \
sqliteResultText16le, <.context, .ptrText, .size, .procDestroy>, 'sqlite3_result_text16le', \
sqliteResultValue, <.context, .ptrValue>, 'sqlite3_result_value', \
sqliteResultZeroBlob, <.context, .size>, 'sqlite3_result_zeroblob', \
sqliteRollbackHook, <.ptrDB, .ptrHook, .lparam>, 'sqlite3_rollback_hook', \
sqliteRtreeGeometryCallback, <NONE>, 'sqlite3_rtree_geometry_callback', \
sqliteSQL, <.stmt>, 'sqlite3_sql', \
sqliteSetAuthorizer, <.ptrDB, .procAuthorizer, .lparam>, 'sqlite3_set_authorizer', \
sqliteSetAuxdata, <.context, .N, .ptrData, .procDestructor>, 'sqlite3_set_auxdata', \
sqliteShutdown, <VOID>, 'sqlite3_shutdown', \
sqliteSleep, <.sleep_ms>, 'sqlite3_sleep', \
sqliteSnprintf, <.size, .ptrBuffer, .ptrString, ...>, 'sqlite3_snprintf', \
sqliteSoftHeapLimit, <.N>, 'sqlite3_soft_heap_limit', \
sqliteSoftHeapLimit64, <.sizeLo, .sizeHi>, 'sqlite3_soft_heap_limit64', \
sqliteSourceID, <VOID>, 'sqlite3_sourceid', \
sqliteStatus, <.paramIndex, .ptrVarResult, .ptrVarHighwater, .flagReset>, 'sqlite3_status', \
sqliteStep, <.stmt>, 'sqlite3_step', \
sqliteStmtStatus, <.stmt, .paramIndex, .flagReset>, 'sqlite3_stmt_status', \
sqliteStrnicmp, <.ptrStr1, .ptrStr2, .size>, 'sqlite3_strnicmp', \
sqliteTableColumnMetadata, <.ptrDB, .ptrDBName, .ptrTableName, .ptrColumnName, .ptrVarDataType, .ptrVarCollSeq, .ptrVarNotNull, \
.ptrVarPrimaryKey, .ptrVarAutoInc>, 'sqlite3_table_column_metadata', \
sqliteTestControl, <.opCode, ...>, 'sqlite3_test_control', \
sqliteThreadsafe, <VOID>, 'sqlite3_threadsafe', \
sqliteTotalChanges, <.ptrDB>, 'sqlite3_total_changes', \
sqliteTrace, <.ptrDB, .procTrace, .lparam>, 'sqlite3_trace', \
sqliteUpdateHook, <.ptrDB, .procUpdateHook, .lparam>, 'sqlite3_update_hook', \
sqliteUserData, <.context>, 'sqlite3_user_data', \
sqliteValueBlob, <.ptrValue>, 'sqlite3_value_blob', \
sqliteValueBytes, <.ptrValue>, 'sqlite3_value_bytes', \
sqliteValueBytes16, <.ptrValue>, 'sqlite3_value_bytes16', \
sqliteValueDouble, <.ptrValue>, 'sqlite3_value_double', \
sqliteValueInt, <.ptrValue>, 'sqlite3_value_int', \
sqliteValueInt64, <.ptrValue>, 'sqlite3_value_int64', \
sqliteValueNumericType, <.ptrValue>, 'sqlite3_value_numeric_type', \
sqliteValueText, <.ptrValue>, 'sqlite3_value_text', \
sqliteValueText16, <.ptrValue>, 'sqlite3_value_text16', \
sqliteValueText16be, <.ptrValue>, 'sqlite3_value_text16be', \
sqliteValueText16le, <.ptrValue>, 'sqlite3_value_text16le', \
sqliteValueType, <.ptrValue>, 'sqlite3_value_type', \
sqliteVersion, <VOID>, 'sqlite3_version', \
sqliteVfsFind, <.ptrVFSName>, 'sqlite3_vfs_find', \
sqliteVfsRegister, <.hVFS, .flagDefault>, 'sqlite3_vfs_register', \
sqliteVfsUnregister, <.hVFS>, 'sqlite3_vfs_unregister', \
sqliteVmprintf, <.ptrString, .va_list>, 'sqlite3_vmprintf', \
sqliteWalAutocheckpoint, <.ptrDB, .N>, 'sqlite3_wal_autocheckpoint', \
sqliteWalCheckpoint, <.ptrDB, .ptrDBName>, 'sqlite3_wal_checkpoint', \
sqliteWalCheckpoint_v2, <.ptrDB, .ptrDBName, .eMode, .pvarLog, .pvarCkpt>, 'sqlite3_wal_checkpoint_v2', \
sqliteWalHook, <.ptrDB, .procCommitHook, .lparam>, 'sqlite3_wal_hook', \
sqliteWin32_MbcsToUtf8, <NONE>, 'sqlite3_win32_mbcs_to_utf8'

201
source/Linux/sqlite3.inc Normal file
View File

@ -0,0 +1,201 @@
; _______________________________________________________________________________________
;| |
;| ..::FreshLib::.. Free, open source. Licensed under "BSD 2-clause" license." |
;|_______________________________________________________________________________________|
;
; Description: sqlite3.dll API calls
;
; Target OS: Win32
;
; Dependencies:
;
; Notes:
;_________________________________________________________________________________________
import_proto './libsqlite3.so', \
sqliteAggregateContext, <.context, .nbytes>, 'sqlite3_aggregate_context', \
sqliteAutoExtension, <.ptrCallback>, 'sqlite3_auto_extension', \
sqliteBackupFinish, <.ptrBackup>, 'sqlite3_backup_finish', \
sqliteBackupInit, <.ptrDestDB, .ptrDestName, .ptrSourceDB, .ptrSourceName>, 'sqlite3_backup_init', \
sqliteBackupPageCount, <.ptrBackup>, 'sqlite3_backup_pagecount', \
sqliteBackupRemaining, <.ptrBackup>, 'sqlite3_backup_remaining', \
sqliteBackupStep, <.ptrBackup, .nPage>, 'sqlite3_backup_step', \
sqliteBindBlob, <.stmt, .index, .ptrData, .nbytes, .destructor>, 'sqlite3_bind_blob', \
sqliteBindDouble, <.stmt, .index, .value>, 'sqlite3_bind_double', \
sqliteBindInt, <.stmt, .index, .value>, 'sqlite3_bind_int', \
sqliteBindInt64, <.stmt, .index, .valueLo, .valueHi>, 'sqlite3_bind_int64', \
sqliteBindNull, <.stmt, .index>, 'sqlite3_bind_null', \
sqliteBindParameterCount, <.stmt>, 'sqlite3_bind_parameter_count', \
sqliteBindParameterIndex, <.stmt, .paramName>, 'sqlite3_bind_parameter_index', \
sqliteBindParameterName, <.stmt, .paramIndex>, 'sqlite3_bind_parameter_name', \
sqliteBindText, <.stmt, .index, .ptrText, .nbytes, .destructor>, 'sqlite3_bind_text', \
sqliteBindText16, <.stmt, .index, .ptrText, .nbytes, .destructor>, 'sqlite3_bind_text16', \
sqliteBindValue, <.stmt, .index, .ptrValue>, 'sqlite3_bind_value', \
sqliteBindZeroblob, <.stmt, .index, .size>, 'sqlite3_bind_zeroblob', \
sqliteBlobBytes, <.hBlob>, 'sqlite3_blob_bytes', \
sqliteBlobClose, <.hBlob>, 'sqlite3_blob_close', \
sqliteBlobOpen, <.ptrDB, .DBname, .Table, .Column, .iRow, .flags, .ptrVarBlob>, 'sqlite3_blob_open', \
sqliteBlobRead, <.hBlob, .ptrBuffer, .bytes, .iOffset>, 'sqlite3_blob_read', \
sqliteBlobWrite, <.hBlob, .ptrBuffer, .bytes, .iOffset>, 'sqlite3_blob_write', \
sqliteBusyHandler, <.ptrDB, .ptrProc, .lParam>, 'sqlite3_busy_handler', \
sqliteBusyTimeout, <.ptrDB, .time_ms>, 'sqlite3_busy_timeout', \
sqliteChanges, <.ptrDB>, 'sqlite3_changes', \
sqliteClearBindings, <.stmt>, 'sqlite3_clear_bindings', \
sqliteClose, <.ptrDatabase>, 'sqlite3_close', \
sqliteCollationNeeded, <.ptrDB, .lparam, .ptrCallback>, 'sqlite3_collation_needed', \
sqliteCollationNeeded16, <.ptrDB, .lparam, .ptrCallback>, 'sqlite3_collation_needed16', \
sqliteColumnBlob, <.stmt, .iCol>, 'sqlite3_column_blob', \
sqliteColumnBytes, <.stmt, .iCol>, 'sqlite3_column_bytes', \
sqliteColumnBytes16, <.stmt, .iCol>, 'sqlite3_column_bytes16', \
sqliteColumnCount, <.stmt>, 'sqlite3_column_count', \
sqliteColumnDatabaseName, <.stmt, .index>, 'sqlite3_column_database_name', \
sqliteColumnDatabaseName16, <.stmt, .index>, 'sqlite3_column_database_name16', \
sqliteColumnDeclType, <.stmt, .index>, 'sqlite3_column_decltype', \
sqliteColumnDeclType16, <.stmt, .index>, 'sqlite3_column_decltype16', \
sqliteColumnDouble, <.stmt, .iCol>, 'sqlite3_column_double', \
sqliteColumnInt, <.stmt, .iCol>, 'sqlite3_column_int', \
sqliteColumnInt64, <.stmt, .iCol>, 'sqlite3_column_int64', \
sqliteColumnName, <.stmt, .index>, 'sqlite3_column_name', \
sqliteColumnName16, <.stmt, .index>, 'sqlite3_column_name16', \
sqliteColumnOriginName, <.stmt, .index>, 'sqlite3_column_origin_name', \
sqliteColumnOriginName16, <.stmt, .index>, 'sqlite3_column_origin_name16', \
sqliteColumnTableName, <.stmt, .index>, 'sqlite3_column_table_name', \
sqliteColumnTableName16, <.stmt, .index>, 'sqlite3_column_table_name16', \
sqliteColumnText, <.stmt, .iCol>, 'sqlite3_column_text', \
sqliteColumnText16, <.stmt, .iCol>, 'sqlite3_column_text16', \
sqliteColumnType, <.stmt, .iCol>, 'sqlite3_column_type', \
sqliteColumnValue, <.stmt, .iCol>, 'sqlite3_column_value', \
sqliteCommitHook, <.ptrDB, .ptrHook, .lparam>, 'sqlite3_commit_hook', \
sqliteCompileOptionGet, <.N>, 'sqlite3_compileoption_get', \
sqliteCompileOptionUsed, <.ptrOptName>, 'sqlite3_compileoption_used', \
sqliteComplete, <.ptrSQL>, 'sqlite3_complete', \
sqliteComplete16, <.ptrSQL>, 'sqlite3_complete16', \
sqliteConfig, <.index, ...>, 'sqlite3_config', \
sqliteContextDBHandle, <.context>, 'sqlite3_context_db_handle', \
sqliteCreateCollation, <.ptrDB, .ptrName, .eTextRep, .lparam, .procCompare>, 'sqlite3_create_collation', \
sqliteCreateCollation16, <.ptrDB, .ptrName, .eTextRep, .lparam, .procCompare>, 'sqlite3_create_collation16', \
sqliteCreateCollation_v2, <.ptrDB, .ptrName, .eTextRep, .lparam, .procCompare, .ptrDestroy>, 'sqlite3_create_collation_v2', \
sqliteCreateFunction, <.ptrDB, .ptrFunctionName, .nArg, .eTextRep, .lparam, .procFunc, .procStep, .procFinal>, 'sqlite3_create_function', \
sqliteCreateFunction16, <.ptrDB, .ptrFunctionName, .nArg, .eTextRep, .lparam, .procFunc, .procStep, .procFinal>, 'sqlite3_create_function16', \
sqliteCreateFunction_v2, <.ptrDB, .ptrFunctionName, .nArg, .eTextRep, .lparam, .procFunc, .procStep, .procFinal, .procDestroy>, 'sqlite3_create_function_v2', \
sqliteCreateModule, <.ptrDB, .ptrModuleName, .ptrVTableModule, .lparam>, 'sqlite3_create_module', \
sqliteCreateModule_v2, <.ptrDB, .ptrModuleName, .ptrVTableModule, .lparam, .procDestroy>, 'sqlite3_create_module_v2', \
sqliteDBConfig, <.ptrDB, .index, ...>, 'sqlite3_db_config', \
sqliteDBHandle, <.stmt>, 'sqlite3_db_handle', \
sqliteDBMutex, <.ptrDB>, 'sqlite3_db_mutex', \
sqliteDBStatus, <.ptrDB, .index, .ptrRetCurrent, .ptrRetHighest, .flagReset>, 'sqlite3_db_status', \
sqliteDataCount, <.stmt>, 'sqlite3_data_count', \
sqliteDeclareVtab, <.ptrDB, .ptrSQL>, 'sqlite3_declare_vtab', \
sqliteEnableLoadExtension, <.ptrDB, .flagEnable>, 'sqlite3_enable_load_extension', \
sqliteEnableSharedCache, <.flagEnable>, 'sqlite3_enable_shared_cache', \
sqliteErrCode, <.ptrDB>, 'sqlite3_errcode', \
sqliteErrMsg, <.ptrDB>, 'sqlite3_errmsg', \
sqliteErrMsg16, <.ptrDB>, 'sqlite3_errmsg16', \
sqliteErrStr, <.err_code>, 'sqlite3_errstr', \
sqliteExec, <.ptrDB, .ptrSQL, .procCallback, .lparam, .ptrVarErrMsg>, 'sqlite3_exec', \
sqliteExtendedErrCode, <.ptrDB>, 'sqlite3_extended_errcode', \
sqliteExtendedResultCodes, <.ptrDB, .flagEnable>, 'sqlite3_extended_result_codes', \
sqliteFileControl, <.ptrDB, .ptrDBName, .wparam, .lparam>, 'sqlite3_file_control', \
_sqliteFinalize, <.stmt>, 'sqlite3_finalize', \
sqliteFree, <.ptrmem>, 'sqlite3_free', \
sqliteFreeTable, <.ptrVarResult>, 'sqlite3_free_table', \
sqliteGetAutocommit, <.ptrDB>, 'sqlite3_get_autocommit', \
sqliteGetAuxdata, <.context, .N>, 'sqlite3_get_auxdata', \
sqliteGetTable, <.ptrDB, .ptrSQL, .ptrVarResult, .ptrVarRows, .ptrVarColumns, .ptrVarErrorMsg>, 'sqlite3_get_table', \
sqliteInitialize, <VOID>, 'sqlite3_initialize', \
sqliteInterrupt, <.ptrDB>, 'sqlite3_interrupt', \
sqliteLastInsertRowID, <.ptrDB>, 'sqlite3_last_insert_rowid', \
sqliteLibVersion, <VOID>, 'sqlite3_libversion', \
sqliteLibversionNumber, <VOID>, 'sqlite3_libversion_number', \
sqliteLimit, <.ptrDB, .idLimit, .newVal>, 'sqlite3_limit', \
sqliteLoadExtension, <.ptrDB, .nameDLL, .entryProc, .ptrVarErrMsg>, 'sqlite3_load_extension', \
sqliteLog, <.iErrCode, .ptrFormat, ...>, 'sqlite3_log', \
sqliteMAlloc, <.size>, 'sqlite3_malloc', \
sqliteMemoryHighWater, <.flagReset>, 'sqlite3_memory_highwater', \
sqliteMemoryUsed, <VOID>, 'sqlite3_memory_used', \
sqliteMprintf, <.ptrString, ...>, 'sqlite3_mprintf', \
sqliteMutexAlloc, <.type>, 'sqlite3_mutex_alloc', \
sqliteMutexEnter, <.hMutex>, 'sqlite3_mutex_enter', \
sqliteMutexFree, <.hMutex>, 'sqlite3_mutex_free', \
sqliteMutexLeave, <.hMutex>, 'sqlite3_mutex_leave', \
sqliteMutexTry, <.hMutex>, 'sqlite3_mutex_try', \
sqliteNextStmt, <.ptrDB, .stmt>, 'sqlite3_next_stmt', \
sqliteOSEnd, <VOID>, 'sqlite3_os_end', \
sqliteOSInit, <VOID>, 'sqlite3_os_init', \
sqliteOpen, <.ptrFileName, .ptrVarDB>, 'sqlite3_open', \
sqliteOpen16, <.ptrFileName, .ptrVarDB>, 'sqlite3_open16', \
sqliteOpen_v2, <.ptrFileName, .ptrVarDB, .flags, .ptrVFSName>, 'sqlite3_open_v2', \
sqliteOverloadFunction, <.ptrDB, .ptrFuncName, .lparam>, 'sqlite3_overload_function', \
sqlitePrepare, <.ptrDB, .ptrSQL, .lenSQL, .ptrVarStmt, .ptrVarNext>, 'sqlite3_prepare', \
sqlitePrepare16, <.ptrDB, .ptrSQL, .lenSQL, .ptrVarStmt, .ptrVarNext>, 'sqlite3_prepare16', \
sqlitePrepare16_v2, <.ptrDB, .ptrSQL, .lenSQL, .ptrVarStmt, .ptrVarNext>, 'sqlite3_prepare16_v2', \
_sqlitePrepare_v2, <.ptrDB, .ptrSQL, .lenSQL, .ptrVarStmt, .ptrVarNext>, 'sqlite3_prepare_v2', \
sqliteProfile, <.ptrDB, .procProfiler, .lparam>, 'sqlite3_profile', \
sqliteProgressHandler, <.ptrDB, .N, .procProgress, .lparam>, 'sqlite3_progress_handler', \
sqliteRandomness, <.bytes, .buffer>, 'sqlite3_randomness', \
sqliteReAlloc, <.ptrmem, .newsize>, 'sqlite3_realloc', \
sqliteReleaseMemory, <.bytes>, 'sqlite3_release_memory', \
sqliteReset, <.stmt>, 'sqlite3_reset', \
sqliteResetAutoExtension, <VOID>, 'sqlite3_reset_auto_extension', \
sqliteResultBlob, <.context, .ptrdata, .size, .procDestroy>, 'sqlite3_result_blob', \
sqliteResultDouble, <.context, .double>, 'sqlite3_result_double', \
sqliteResultError, <.context, .ptrErrMsg, .size>, 'sqlite3_result_error', \
sqliteResultError16, <.context, .ptrErrMsg, .size>, 'sqlite3_result_error16', \
sqliteResultErrorCode, <.context, .errcode>, 'sqlite3_result_error_code', \
sqliteResultErrorNoMem, <.context>, 'sqlite3_result_error_nomem', \
sqliteResultErrorTooBig, <.context>, 'sqlite3_result_error_toobig', \
sqliteResultInt, <.context, .integer>, 'sqlite3_result_int', \
sqliteResultInt64, <.context, .int64Lo, .int64Hi>, 'sqlite3_result_int64', \
sqliteResultNULL, <.context>, 'sqlite3_result_null', \
sqliteResultText, <.context, .ptrText, .size, .procDestroy>, 'sqlite3_result_text', \
sqliteResultText16, <.context, .ptrText, .size, .procDestroy>, 'sqlite3_result_text16', \
sqliteResultText16be, <.context, .ptrText, .size, .procDestroy>, 'sqlite3_result_text16be', \
sqliteResultText16le, <.context, .ptrText, .size, .procDestroy>, 'sqlite3_result_text16le', \
sqliteResultValue, <.context, .ptrValue>, 'sqlite3_result_value', \
sqliteResultZeroBlob, <.context, .size>, 'sqlite3_result_zeroblob', \
sqliteRollbackHook, <.ptrDB, .ptrHook, .lparam>, 'sqlite3_rollback_hook', \
sqliteRtreeGeometryCallback, <NONE>, 'sqlite3_rtree_geometry_callback', \
sqliteSQL, <.stmt>, 'sqlite3_sql', \
sqliteSetAuthorizer, <.ptrDB, .procAuthorizer, .lparam>, 'sqlite3_set_authorizer', \
sqliteSetAuxdata, <.context, .N, .ptrData, .procDestructor>, 'sqlite3_set_auxdata', \
sqliteShutdown, <VOID>, 'sqlite3_shutdown', \
sqliteSleep, <.sleep_ms>, 'sqlite3_sleep', \
sqliteSnprintf, <.size, .ptrBuffer, .ptrString, ...>, 'sqlite3_snprintf', \
sqliteSoftHeapLimit, <.N>, 'sqlite3_soft_heap_limit', \
sqliteSoftHeapLimit64, <.sizeLo, .sizeHi>, 'sqlite3_soft_heap_limit64', \
sqliteSourceID, <VOID>, 'sqlite3_sourceid', \
sqliteStatus, <.paramIndex, .ptrVarResult, .ptrVarHighwater, .flagReset>, 'sqlite3_status', \
sqliteStep, <.stmt>, 'sqlite3_step', \
sqliteStmtStatus, <.stmt, .paramIndex, .flagReset>, 'sqlite3_stmt_status', \
sqliteStrnicmp, <.ptrStr1, .ptrStr2, .size>, 'sqlite3_strnicmp', \
sqliteTableColumnMetadata, <.ptrDB, .ptrDBName, .ptrTableName, .ptrColumnName, .ptrVarDataType, .ptrVarCollSeq, .ptrVarNotNull, \
.ptrVarPrimaryKey, .ptrVarAutoInc>, 'sqlite3_table_column_metadata', \
sqliteTestControl, <.opCode, ...>, 'sqlite3_test_control', \
sqliteThreadsafe, <VOID>, 'sqlite3_threadsafe', \
sqliteTotalChanges, <.ptrDB>, 'sqlite3_total_changes', \
sqliteTrace, <.ptrDB, .procTrace, .lparam>, 'sqlite3_trace', \
sqliteUpdateHook, <.ptrDB, .procUpdateHook, .lparam>, 'sqlite3_update_hook', \
sqliteUserData, <.context>, 'sqlite3_user_data', \
sqliteValueBlob, <.ptrValue>, 'sqlite3_value_blob', \
sqliteValueBytes, <.ptrValue>, 'sqlite3_value_bytes', \
sqliteValueBytes16, <.ptrValue>, 'sqlite3_value_bytes16', \
sqliteValueDouble, <.ptrValue>, 'sqlite3_value_double', \
sqliteValueInt, <.ptrValue>, 'sqlite3_value_int', \
sqliteValueInt64, <.ptrValue>, 'sqlite3_value_int64', \
sqliteValueNumericType, <.ptrValue>, 'sqlite3_value_numeric_type', \
sqliteValueText, <.ptrValue>, 'sqlite3_value_text', \
sqliteValueText16, <.ptrValue>, 'sqlite3_value_text16', \
sqliteValueText16be, <.ptrValue>, 'sqlite3_value_text16be', \
sqliteValueText16le, <.ptrValue>, 'sqlite3_value_text16le', \
sqliteValueType, <.ptrValue>, 'sqlite3_value_type', \
sqliteVersion, <VOID>, 'sqlite3_version', \
sqliteVfsFind, <.ptrVFSName>, 'sqlite3_vfs_find', \
sqliteVfsRegister, <.hVFS, .flagDefault>, 'sqlite3_vfs_register', \
sqliteVfsUnregister, <.hVFS>, 'sqlite3_vfs_unregister', \
sqliteVmprintf, <.ptrString, .va_list>, 'sqlite3_vmprintf', \
sqliteWalAutocheckpoint, <.ptrDB, .N>, 'sqlite3_wal_autocheckpoint', \
sqliteWalCheckpoint, <.ptrDB, .ptrDBName>, 'sqlite3_wal_checkpoint', \
sqliteWalCheckpoint_v2, <.ptrDB, .ptrDBName, .eMode, .pvarLog, .pvarCkpt>, 'sqlite3_wal_checkpoint_v2', \
sqliteWalHook, <.ptrDB, .procCommitHook, .lparam>, 'sqlite3_wal_hook', \
sqliteWin32_MbcsToUtf8, <NONE>, 'sqlite3_win32_mbcs_to_utf8'

82
source/ResetPassword.asm Normal file
View File

@ -0,0 +1,82 @@
; _______________________________________________________________________________________
;| |
;| ..:: Fresh IDE ::.. template project. |
;|_______________________________________________________________________________________|
;
; Description: FreshLib portable console application.
;
; Target OS: Any, supported by FreshLib
;
; Dependencies: FreshLib
;
; Notes:
;_________________________________________________________________________________________
include "%lib%/freshlib.inc"
@BinaryType console, compact
include "%lib%/freshlib.asm"
start:
InitializeAll
stdcall GetCmdArguments
xor ecx, ecx
cmp [eax+TArray.count], 2
jb .show_help
cmp [eax+TArray.count], 3
jb .new_salt
mov ecx, [eax+TArray.array+8]
.new_salt:
stdcall HashPassword, [eax+TArray.array+4], ecx
push eax
stdcall FileWriteString, [STDOUT], "Hash: "
stdcall FileWriteString, [STDOUT] ; from the stack
stdcall FileWriteString, [STDOUT], cCRLF
stdcall FileWriteString, [STDOUT], "Salt: "
stdcall FileWriteString, [STDOUT], edx
stdcall FileWriteString, [STDOUT], cCRLF
.finish:
FinalizeAll
stdcall TerminateAll, 0
cCRLF text 13, 10
CRLF equ 13, 10
.show_help:
stdcall FileWriteString, [STDOUT], <"This program computes the hash of password for AsmBB,", CRLF, "using the given salt or generating a new salt string.", CRLF, CRLF, "Syntax:", CRLF, CRLF, "ResetPassword password [salt]", CRLF, CRLF>
jmp .finish
proc HashPassword, .hPassword, .hSalt
begin
; First the salt:
mov eax, [.hSalt]
test eax, eax
jnz .salt_ok
stdcall GetRandomString, 32
jc .finish
.salt_ok:
mov edx, eax
stdcall StrDup, eax
push eax
stdcall StrCat, eax, [.hPassword]
stdcall StrMD5, eax
stdcall StrDel ; from the stack
clc
.finish:
return
endp

BIN
source/ResetPassword.fpr Normal file

Binary file not shown.

38
source/TestsWithTags.sql Normal file
View File

@ -0,0 +1,38 @@
drop table Tags2;
drop table ThreadTags2;
create table Tags2 (
Tag text primary key,
Importance integer not null default 0,
Description text,
Count integer not null default 0
);
create index idxTag2Importance on Tags2(Importance desc);
create index idxTags2TagImp on Tags2(tag, importance desc);
create table ThreadTags2 (
ThreadID integer references Threads(id) on delete cascade,
Tag text references Tags2(Tag) on delete cascade on update cascade
);
create unique index idxThreadTags2Unique on ThreadTags2 ( ThreadID, Tag );
create index idxThreadsTags2Tags on ThreadTags2 (Tag);
CREATE TRIGGER TagsAI AFTER INSERT ON ThreadTags2 BEGIN
update Tags2 set Count = Count + 1 where Tags2.Tag = new.Tag;
END;
CREATE TRIGGER TagsAD AFTER DELETE ON ThreadTags2 BEGIN
update Tags2 set Count = Count - 1 where Tags2.Tag = old.Tag;
END;
CREATE TRIGGER TagsAU AFTER UPDATE ON ThreadTags2 BEGIN
update Tags2 set Count = Count + 1 where Tags2.Tag = new.Tag;
update Tags2 set Count = Count - 1 where Tags2.Tag = old.Tag;
END;
insert into Tags2(tag, description, importance) select Tag, Description, Importance from Tags;
insert into ThreadTags2(ThreadID, Tag) select ThreadID, Tag from ThreadTags;

46
source/ToDo.txt Normal file
View File

@ -0,0 +1,46 @@
---FIXED: To check the skins (especially Terminal) for the new implemented features: download/attach, access, etc.
---FIXED: The tabbed edit form not working good in Light skin. Another are not tested as well.
---FIXED: The tabbed edit is not styling properly in Chromium! Check the tricks about flex auto scaling!
On logout, all sessions for this IP are deleted. Should be more relaxed...
---DONE: The attached files must be encrypted in the database in order to not allow them to the file system in original form.
The tabs still working weird, because the absolute positioning.
---DONE: The permLogin for the anon users to work as permRegister in order to allow the forum to close the registration.
Write operations on a request:
; For all requests:
GetLoggedUser -> SetUserLastSeen -> update Users; (only for logged-in users)
-> InsertGuest -> insert into Guests;
-> update Guests;
-> insert into GuestRequests;
-> delete from Guests; (clip the log size);
; For all requests for forum resources/features (thread lists, login, logout, etc.)
LogUserActivity -> insert into UserLog
-> delete from UserLog (clip the log size)
; For thread show requests: ( not for refresh requests, detected by HTTP_CACHE_CONTROL="max-age=0" )
Update PostCNT table for every post rendered.
Delete from UnreadPosts for every post rendered.
Update Threads(ReadCount)
; For all form requests:
SetUniqueTicket -> insert into Tickets;

210
source/Win32/sqleet.inc Normal file
View File

@ -0,0 +1,210 @@
; _______________________________________________________________________________________
;| |
;| ..::FreshLib::.. Free, open source. Licensed under "BSD 2-clause" license." |
;|_______________________________________________________________________________________|
;
; Description: sqlite3.dll API calls
;
; Target OS: Win32
;
; Dependencies:
;
; Notes:
;_________________________________________________________________________________________
import_proto sqleet, \
sqliteAggregateContext, <.context, .nbytes>, 'sqlite3_aggregate_context', \
sqliteAggregateCount_OLD, <VOID>, 'sqlite3_aggregate_count', \
sqliteAutoExtension, <.ptrCallback>, 'sqlite3_auto_extension', \
sqliteBackupFinish, <.ptrBackup>, 'sqlite3_backup_finish', \
sqliteBackupInit, <.ptrDestDB, .ptrDestName, .ptrSourceDB, .ptrSourceName>, 'sqlite3_backup_init', \
sqliteBackupPageCount, <.ptrBackup>, 'sqlite3_backup_pagecount', \
sqliteBackupRemaining, <.ptrBackup>, 'sqlite3_backup_remaining', \
sqliteBackupStep, <.ptrBackup, .nPage>, 'sqlite3_backup_step', \
sqliteBindBlob, <.stmt, .index, .ptrData, .nbytes, .destructor>, 'sqlite3_bind_blob', \
sqliteBindDouble, <.stmt, .index, .value>, 'sqlite3_bind_double', \
sqliteBindInt, <.stmt, .index, .value>, 'sqlite3_bind_int', \
sqliteBindInt64, <.stmt, .index, .valueLo, .valueHi>, 'sqlite3_bind_int64', \
sqliteBindNull, <.stmt, .index>, 'sqlite3_bind_null', \
sqliteBindParameterCount, <.stmt>, 'sqlite3_bind_parameter_count', \
sqliteBindParameterIndex, <.stmt, .paramName>, 'sqlite3_bind_parameter_index', \
sqliteBindParameterName, <.stmt, .paramIndex>, 'sqlite3_bind_parameter_name', \
sqliteBindText, <.stmt, .index, .ptrText, .nbytes, .destructor>, 'sqlite3_bind_text', \
sqliteBindText16, <.stmt, .index, .ptrText, .nbytes, .destructor>, 'sqlite3_bind_text16', \
sqliteBindValue, <.stmt, .index, .ptrValue>, 'sqlite3_bind_value', \
sqliteBindZeroblob, <.stmt, .index, .size>, 'sqlite3_bind_zeroblob', \
sqliteBlobBytes, <.hBlob>, 'sqlite3_blob_bytes', \
sqliteBlobClose, <.hBlob>, 'sqlite3_blob_close', \
sqliteBlobOpen, <.ptrDB, .DBname, .Table, .Column, .iRow, .flags, .ptrVarBlob>, 'sqlite3_blob_open', \
sqliteBlobRead, <.hBlob, .ptrBuffer, .bytes, .iOffset>, 'sqlite3_blob_read', \
sqliteBlobWrite, <.hBlob, .ptrBuffer, .bytes, .iOffset>, 'sqlite3_blob_write', \
sqliteBusyHandler, <.ptrDB, .ptrProc, .lParam>, 'sqlite3_busy_handler', \
sqliteBusyTimeout, <.ptrDB, .time_ms>, 'sqlite3_busy_timeout', \
sqliteChanges, <.ptrDB>, 'sqlite3_changes', \
sqliteClearBindings, <.stmt>, 'sqlite3_clear_bindings', \
sqliteClose, <.ptrDatabase>, 'sqlite3_close', \
sqliteCollationNeeded, <.ptrDB, .lparam, .ptrCallback>, 'sqlite3_collation_needed', \
sqliteCollationNeeded16, <.ptrDB, .lparam, .ptrCallback>, 'sqlite3_collation_needed16', \
sqliteColumnBlob, <.stmt, .iCol>, 'sqlite3_column_blob', \
sqliteColumnBytes, <.stmt, .iCol>, 'sqlite3_column_bytes', \
sqliteColumnBytes16, <.stmt, .iCol>, 'sqlite3_column_bytes16', \
sqliteColumnCount, <.stmt>, 'sqlite3_column_count', \
sqliteColumnDatabaseName, <.stmt, .index>, 'sqlite3_column_database_name', \
sqliteColumnDatabaseName16, <.stmt, .index>, 'sqlite3_column_database_name16', \
sqliteColumnDeclType, <.stmt, .index>, 'sqlite3_column_decltype', \
sqliteColumnDeclType16, <.stmt, .index>, 'sqlite3_column_decltype16', \
sqliteColumnDouble, <.stmt, .iCol>, 'sqlite3_column_double', \
sqliteColumnInt, <.stmt, .iCol>, 'sqlite3_column_int', \
sqliteColumnInt64, <.stmt, .iCol>, 'sqlite3_column_int64', \
sqliteColumnName, <.stmt, .index>, 'sqlite3_column_name', \
sqliteColumnName16, <.stmt, .index>, 'sqlite3_column_name16', \
sqliteColumnOriginName, <.stmt, .index>, 'sqlite3_column_origin_name', \
sqliteColumnOriginName16, <.stmt, .index>, 'sqlite3_column_origin_name16', \
sqliteColumnTableName, <.stmt, .index>, 'sqlite3_column_table_name', \
sqliteColumnTableName16, <.stmt, .index>, 'sqlite3_column_table_name16', \
sqliteColumnText, <.stmt, .iCol>, 'sqlite3_column_text', \
sqliteColumnText16, <.stmt, .iCol>, 'sqlite3_column_text16', \
sqliteColumnType, <.stmt, .iCol>, 'sqlite3_column_type', \
sqliteColumnValue, <.stmt, .iCol>, 'sqlite3_column_value', \
sqliteCommitHook, <.ptrDB, .ptrHook, .lparam>, 'sqlite3_commit_hook', \
sqliteCompileOptionGet, <.N>, 'sqlite3_compileoption_get', \
sqliteCompileOptionUsed, <.ptrOptName>, 'sqlite3_compileoption_used', \
sqliteComplete, <.ptrSQL>, 'sqlite3_complete', \
sqliteComplete16, <.ptrSQL>, 'sqlite3_complete16', \
sqliteConfig, <.index, ...>, 'sqlite3_config', \
sqliteContextDBHandle, <.context>, 'sqlite3_context_db_handle', \
sqliteCreateCollation, <.ptrDB, .ptrName, .eTextRep, .lparam, .procCompare>, 'sqlite3_create_collation', \
sqliteCreateCollation16, <.ptrDB, .ptrName, .eTextRep, .lparam, .procCompare>, 'sqlite3_create_collation16', \
sqliteCreateCollation_v2, <.ptrDB, .ptrName, .eTextRep, .lparam, .procCompare, .ptrDestroy>, 'sqlite3_create_collation_v2', \
sqliteCreateFunction, <.ptrDB, .ptrFunctionName, .nArg, .eTextRep, .lparam, .procFunc, .procStep, .procFinal>, 'sqlite3_create_function', \
sqliteCreateFunction16, <.ptrDB, .ptrFunctionName, .nArg, .eTextRep, .lparam, .procFunc, .procStep, .procFinal>, 'sqlite3_create_function16', \
sqliteCreateFunction_v2, <.ptrDB, .ptrFunctionName, .nArg, .eTextRep, .lparam, .procFunc, .procStep, .procFinal, .procDestroy>, 'sqlite3_create_function_v2', \
sqliteCreateModule, <.ptrDB, .ptrModuleName, .ptrVTableModule, .lparam>, 'sqlite3_create_module', \
sqliteCreateModule_v2, <.ptrDB, .ptrModuleName, .ptrVTableModule, .lparam, .procDestroy>, 'sqlite3_create_module_v2', \
sqliteDBConfig, <.ptrDB, .index, ...>, 'sqlite3_db_config', \
sqliteDBHandle, <.stmt>, 'sqlite3_db_handle', \
sqliteDBMutex, <.ptrDB>, 'sqlite3_db_mutex', \
sqliteDBStatus, <.ptrDB, .index, .ptrRetCurrent, .ptrRetHighest, .flagReset>, 'sqlite3_db_status', \
sqliteDataCount, <.stmt>, 'sqlite3_data_count', \
sqliteDeclareVtab, <.ptrDB, .ptrSQL>, 'sqlite3_declare_vtab', \
sqliteEnableLoadExtension, <.ptrDB, .flagEnable>, 'sqlite3_enable_load_extension', \
sqliteEnableSharedCache, <.flagEnable>, 'sqlite3_enable_shared_cache', \
sqliteErrCode, <.ptrDB>, 'sqlite3_errcode', \
sqliteErrMsg, <.ptrDB>, 'sqlite3_errmsg', \
sqliteErrMsg16, <.ptrDB>, 'sqlite3_errmsg16', \
sqliteExec, <.ptrDB, .ptrSQL, .procCallback, .lparam, .ptrVarErrMsg>, 'sqlite3_exec', \
sqliteExpired, <VOID>, 'sqlite3_expired', \
sqliteExtendedErrCode, <.ptrDB>, 'sqlite3_extended_errcode', \
sqliteExtendedResultCodes, <.ptrDB, .flagEnable>, 'sqlite3_extended_result_codes', \
sqliteFileControl, <.ptrDB, .ptrDBName, .wparam, .lparam>, 'sqlite3_file_control', \
_sqliteFinalize, <.stmt>, 'sqlite3_finalize', \
sqliteFree, <.ptrmem>, 'sqlite3_free', \
sqliteFreeTable, <.ptrVarResult>, 'sqlite3_free_table', \
sqliteGetAutocommit, <.ptrDB>, 'sqlite3_get_autocommit', \
sqliteGetAuxdata, <.context, .N>, 'sqlite3_get_auxdata', \
sqliteGetTable, <.ptrDB, .ptrSQL, .ptrVarResult, .ptrVarRows, .ptrVarColumns, .ptrVarErrorMsg>, 'sqlite3_get_table', \
sqliteGlobalRecover_OLD, <VOID>, 'sqlite3_global_recover', \
sqliteInitialize, <VOID>, 'sqlite3_initialize', \
sqliteInterrupt, <.ptrDB>, 'sqlite3_interrupt', \
sqliteKey, <.ptrDB, .pKey, .pKeyLen>, 'sqlite3_key', \
sqliteKey_v2, <.ptrDB, .pDbName, .pKey, .pKeyLen>, 'sqlite3_key_v2', \
sqliteLastInsertRowID, <.ptrDB>, 'sqlite3_last_insert_rowid', \
sqliteLibVersion, <VOID>, 'sqlite3_libversion', \
sqliteLibversionNumber, <VOID>, 'sqlite3_libversion_number', \
sqliteLimit, <.ptrDB, .idLimit, .newVal>, 'sqlite3_limit', \
sqliteLoadExtension, <.ptrDB, .nameDLL, .entryProc, .ptrVarErrMsg>, 'sqlite3_load_extension', \
sqliteLog, <.iErrCode, .ptrFormat, ...>, 'sqlite3_log', \
sqliteMAlloc, <.size>, 'sqlite3_malloc', \
sqliteMemoryAlarm_OLD, <VOID>, 'sqlite3_memory_alarm', \
sqliteMemoryHighWater, <.flagReset>, 'sqlite3_memory_highwater', \
sqliteMemoryUsed, <VOID>, 'sqlite3_memory_used', \
sqliteMprintf, <.ptrString, ...>, 'sqlite3_mprintf', \
sqliteMutexAlloc, <.type>, 'sqlite3_mutex_alloc', \
sqliteMutexEnter, <.hMutex>, 'sqlite3_mutex_enter', \
sqliteMutexFree, <.hMutex>, 'sqlite3_mutex_free', \
sqliteMutexLeave, <.hMutex>, 'sqlite3_mutex_leave', \
sqliteMutexTry, <.hMutex>, 'sqlite3_mutex_try', \
sqliteNextStmt, <.ptrDB, .stmt>, 'sqlite3_next_stmt', \
sqliteOSEnd, <VOID>, 'sqlite3_os_end', \
sqliteOSInit, <VOID>, 'sqlite3_os_init', \
sqliteOpen, <.ptrFileName, .ptrVarDB>, 'sqlite3_open', \
sqliteOpen16, <.ptrFileName, .ptrVarDB>, 'sqlite3_open16', \
sqliteOpen_v2, <.ptrFileName, .ptrVarDB, .flags, .ptrVFSName>, 'sqlite3_open_v2', \
sqliteOverloadFunction, <.ptrDB, .ptrFuncName, .lparam>, 'sqlite3_overload_function', \
sqlitePrepare, <.ptrDB, .ptrSQL, .lenSQL, .ptrVarStmt, .ptrVarNext>, 'sqlite3_prepare', \
sqlitePrepare16, <.ptrDB, .ptrSQL, .lenSQL, .ptrVarStmt, .ptrVarNext>, 'sqlite3_prepare16', \
sqlitePrepare16_v2, <.ptrDB, .ptrSQL, .lenSQL, .ptrVarStmt, .ptrVarNext>, 'sqlite3_prepare16_v2', \
_sqlitePrepare_v2, <.ptrDB, .ptrSQL, .lenSQL, .ptrVarStmt, .ptrVarNext>, 'sqlite3_prepare_v2', \
sqliteProfile, <.ptrDB, .procProfiler, .lparam>, 'sqlite3_profile', \
sqliteProgressHandler, <.ptrDB, .N, .procProgress, .lparam>, 'sqlite3_progress_handler', \
sqliteRandomness, <.bytes, .buffer>, 'sqlite3_randomness', \
sqliteReAlloc, <.ptrmem, .newsize>, 'sqlite3_realloc', \
sqliteRekey, <.ptrDB, .pNewKey, .nKeyLen>, 'sqlite3_rekey', \
sqliteRekey_v2, <.ptrDB, .pDbName, .pNewKey, .nKeyLen>, 'sqlite3_rekey_v2', \
sqliteReleaseMemory, <.bytes>, 'sqlite3_release_memory', \
sqliteReset, <.stmt>, 'sqlite3_reset', \
sqliteResetAutoExtension, <VOID>, 'sqlite3_reset_auto_extension', \
sqliteResultBlob, <.context, .ptrdata, .size, .procDestroy>, 'sqlite3_result_blob', \
sqliteResultDouble, <.context, .double>, 'sqlite3_result_double', \
sqliteResultError, <.context, .ptrErrMsg, .size>, 'sqlite3_result_error', \
sqliteResultError16, <.context, .ptrErrMsg, .size>, 'sqlite3_result_error16', \
sqliteResultErrorCode, <.context, .errcode>, 'sqlite3_result_error_code', \
sqliteResultErrorNoMem, <.context>, 'sqlite3_result_error_nomem', \
sqliteResultErrorTooBig, <.context>, 'sqlite3_result_error_toobig', \
sqliteResultInt, <.context, .integer>, 'sqlite3_result_int', \
sqliteResultInt64, <.context, .int64Lo, .int64Hi>, 'sqlite3_result_int64', \
sqliteResultNULL, <.context>, 'sqlite3_result_null', \
sqliteResultText, <.context, .ptrText, .size, .procDestroy>, 'sqlite3_result_text', \
sqliteResultText16, <.context, .ptrText, .size, .procDestroy>, 'sqlite3_result_text16', \
sqliteResultText16be, <.context, .ptrText, .size, .procDestroy>, 'sqlite3_result_text16be', \
sqliteResultText16le, <.context, .ptrText, .size, .procDestroy>, 'sqlite3_result_text16le', \
sqliteResultValue, <.context, .ptrValue>, 'sqlite3_result_value', \
sqliteResultZeroBlob, <.context, .size>, 'sqlite3_result_zeroblob', \
sqliteRollbackHook, <.ptrDB, .ptrHook, .lparam>, 'sqlite3_rollback_hook', \
sqliteRtreeGeometryCallback, <NONE>, 'sqlite3_rtree_geometry_callback', \
sqliteSQL, <.stmt>, 'sqlite3_sql', \
sqliteSetAuthorizer, <.ptrDB, .procAuthorizer, .lparam>, 'sqlite3_set_authorizer', \
sqliteSetAuxdata, <.context, .N, .ptrData, .procDestructor>, 'sqlite3_set_auxdata', \
sqliteShutdown, <VOID>, 'sqlite3_shutdown', \
sqliteSleep, <.sleep_ms>, 'sqlite3_sleep', \
sqliteSnprintf, <.size, .ptrBuffer, .ptrString, ...>, 'sqlite3_snprintf', \
sqliteSoftHeapLimit, <.N>, 'sqlite3_soft_heap_limit', \
sqliteSoftHeapLimit64, <.sizeLo, .sizeHi>, 'sqlite3_soft_heap_limit64', \
sqliteSourceID, <VOID>, 'sqlite3_sourceid', \
sqliteStatus, <.paramIndex, .ptrVarResult, .ptrVarHighwater, .flagReset>, 'sqlite3_status', \
sqliteStep, <.stmt>, 'sqlite3_step', \
sqliteStmtStatus, <.stmt, .paramIndex, .flagReset>, 'sqlite3_stmt_status', \
sqliteStrnicmp, <.ptrStr1, .ptrStr2, .size>, 'sqlite3_strnicmp', \
sqliteTableColumnMetadata, <.ptrDB, .ptrDBName, .ptrTableName, .ptrColumnName, .ptrVarDataType, .ptrVarCollSeq, .ptrVarNotNull, \
.ptrVarPrimaryKey, .ptrVarAutoInc>, 'sqlite3_table_column_metadata', \
sqliteTestControl, <.opCode, ...>, 'sqlite3_test_control', \
sqliteThreadCleanup, <VOID>, 'sqlite3_thread_cleanup', \
sqliteThreadsafe, <VOID>, 'sqlite3_threadsafe', \
sqliteTotalChanges, <.ptrDB>, 'sqlite3_total_changes', \
sqliteTrace, <.ptrDB, .procTrace, .lparam>, 'sqlite3_trace', \
sqliteTransferBindings, <VOID>, 'sqlite3_transfer_bindings', \
sqliteUpdateHook, <.ptrDB, .procUpdateHook, .lparam>, 'sqlite3_update_hook', \
sqliteUserData, <.context>, 'sqlite3_user_data', \
sqliteValueBlob, <.ptrValue>, 'sqlite3_value_blob', \
sqliteValueBytes, <.ptrValue>, 'sqlite3_value_bytes', \
sqliteValueBytes16, <.ptrValue>, 'sqlite3_value_bytes16', \
sqliteValueDouble, <.ptrValue>, 'sqlite3_value_double', \
sqliteValueInt, <.ptrValue>, 'sqlite3_value_int', \
sqliteValueInt64, <.ptrValue>, 'sqlite3_value_int64', \
sqliteValueNumericType, <.ptrValue>, 'sqlite3_value_numeric_type', \
sqliteValueText, <.ptrValue>, 'sqlite3_value_text', \
sqliteValueText16, <.ptrValue>, 'sqlite3_value_text16', \
sqliteValueText16be, <.ptrValue>, 'sqlite3_value_text16be', \
sqliteValueText16le, <.ptrValue>, 'sqlite3_value_text16le', \
sqliteValueType, <.ptrValue>, 'sqlite3_value_type', \
sqliteVersion, <VOID>, 'sqlite3_version', \
sqliteVfsFind, <.ptrVFSName>, 'sqlite3_vfs_find', \
sqliteVfsRegister, <.hVFS, .flagDefault>, 'sqlite3_vfs_register', \
sqliteVfsUnregister, <.hVFS>, 'sqlite3_vfs_unregister', \
sqliteVmprintf, <.ptrString, .va_list>, 'sqlite3_vmprintf', \
sqliteWalAutocheckpoint, <.ptrDB, .N>, 'sqlite3_wal_autocheckpoint', \
sqliteWalCheckpoint, <.ptrDB, .ptrDBName>, 'sqlite3_wal_checkpoint', \
sqliteWalCheckpoint_v2, <.ptrDB, .ptrDBName, .eMode, .pvarLog, .pvarCkpt>, 'sqlite3_wal_checkpoint_v2', \
sqliteWalHook, <.ptrDB, .procCommitHook, .lparam>, 'sqlite3_wal_hook', \
sqliteWin32_MbcsToUtf8, <NONE>, 'sqlite3_win32_mbcs_to_utf8'

206
source/Win32/sqlite3.inc Normal file
View File

@ -0,0 +1,206 @@
; _______________________________________________________________________________________
;| |
;| ..::FreshLib::.. Free, open source. Licensed under "BSD 2-clause" license." |
;|_______________________________________________________________________________________|
;
; Description: sqlite3.dll API calls
;
; Target OS: Win32
;
; Dependencies:
;
; Notes:
;_________________________________________________________________________________________
import_proto sqlite3, \
sqliteAggregateContext, <.context, .nbytes>, 'sqlite3_aggregate_context', \
sqliteAggregateCount_OLD, <VOID>, 'sqlite3_aggregate_count', \
sqliteAutoExtension, <.ptrCallback>, 'sqlite3_auto_extension', \
sqliteBackupFinish, <.ptrBackup>, 'sqlite3_backup_finish', \
sqliteBackupInit, <.ptrDestDB, .ptrDestName, .ptrSourceDB, .ptrSourceName>, 'sqlite3_backup_init', \
sqliteBackupPageCount, <.ptrBackup>, 'sqlite3_backup_pagecount', \
sqliteBackupRemaining, <.ptrBackup>, 'sqlite3_backup_remaining', \
sqliteBackupStep, <.ptrBackup, .nPage>, 'sqlite3_backup_step', \
sqliteBindBlob, <.stmt, .index, .ptrData, .nbytes, .destructor>, 'sqlite3_bind_blob', \
sqliteBindDouble, <.stmt, .index, .value>, 'sqlite3_bind_double', \
sqliteBindInt, <.stmt, .index, .value>, 'sqlite3_bind_int', \
sqliteBindInt64, <.stmt, .index, .valueLo, .valueHi>, 'sqlite3_bind_int64', \
sqliteBindNull, <.stmt, .index>, 'sqlite3_bind_null', \
sqliteBindParameterCount, <.stmt>, 'sqlite3_bind_parameter_count', \
sqliteBindParameterIndex, <.stmt, .paramName>, 'sqlite3_bind_parameter_index', \
sqliteBindParameterName, <.stmt, .paramIndex>, 'sqlite3_bind_parameter_name', \
sqliteBindText, <.stmt, .index, .ptrText, .nbytes, .destructor>, 'sqlite3_bind_text', \
sqliteBindText16, <.stmt, .index, .ptrText, .nbytes, .destructor>, 'sqlite3_bind_text16', \
sqliteBindValue, <.stmt, .index, .ptrValue>, 'sqlite3_bind_value', \
sqliteBindZeroblob, <.stmt, .index, .size>, 'sqlite3_bind_zeroblob', \
sqliteBlobBytes, <.hBlob>, 'sqlite3_blob_bytes', \
sqliteBlobClose, <.hBlob>, 'sqlite3_blob_close', \
sqliteBlobOpen, <.ptrDB, .DBname, .Table, .Column, .iRow, .flags, .ptrVarBlob>, 'sqlite3_blob_open', \
sqliteBlobRead, <.hBlob, .ptrBuffer, .bytes, .iOffset>, 'sqlite3_blob_read', \
sqliteBlobWrite, <.hBlob, .ptrBuffer, .bytes, .iOffset>, 'sqlite3_blob_write', \
sqliteBusyHandler, <.ptrDB, .ptrProc, .lParam>, 'sqlite3_busy_handler', \
sqliteBusyTimeout, <.ptrDB, .time_ms>, 'sqlite3_busy_timeout', \
sqliteChanges, <.ptrDB>, 'sqlite3_changes', \
sqliteClearBindings, <.stmt>, 'sqlite3_clear_bindings', \
sqliteClose, <.ptrDatabase>, 'sqlite3_close', \
sqliteCollationNeeded, <.ptrDB, .lparam, .ptrCallback>, 'sqlite3_collation_needed', \
sqliteCollationNeeded16, <.ptrDB, .lparam, .ptrCallback>, 'sqlite3_collation_needed16', \
sqliteColumnBlob, <.stmt, .iCol>, 'sqlite3_column_blob', \
sqliteColumnBytes, <.stmt, .iCol>, 'sqlite3_column_bytes', \
sqliteColumnBytes16, <.stmt, .iCol>, 'sqlite3_column_bytes16', \
sqliteColumnCount, <.stmt>, 'sqlite3_column_count', \
sqliteColumnDatabaseName, <.stmt, .index>, 'sqlite3_column_database_name', \
sqliteColumnDatabaseName16, <.stmt, .index>, 'sqlite3_column_database_name16', \
sqliteColumnDeclType, <.stmt, .index>, 'sqlite3_column_decltype', \
sqliteColumnDeclType16, <.stmt, .index>, 'sqlite3_column_decltype16', \
sqliteColumnDouble, <.stmt, .iCol>, 'sqlite3_column_double', \
sqliteColumnInt, <.stmt, .iCol>, 'sqlite3_column_int', \
sqliteColumnInt64, <.stmt, .iCol>, 'sqlite3_column_int64', \
sqliteColumnName, <.stmt, .index>, 'sqlite3_column_name', \
sqliteColumnName16, <.stmt, .index>, 'sqlite3_column_name16', \
sqliteColumnOriginName, <.stmt, .index>, 'sqlite3_column_origin_name', \
sqliteColumnOriginName16, <.stmt, .index>, 'sqlite3_column_origin_name16', \
sqliteColumnTableName, <.stmt, .index>, 'sqlite3_column_table_name', \
sqliteColumnTableName16, <.stmt, .index>, 'sqlite3_column_table_name16', \
sqliteColumnText, <.stmt, .iCol>, 'sqlite3_column_text', \
sqliteColumnText16, <.stmt, .iCol>, 'sqlite3_column_text16', \
sqliteColumnType, <.stmt, .iCol>, 'sqlite3_column_type', \
sqliteColumnValue, <.stmt, .iCol>, 'sqlite3_column_value', \
sqliteCommitHook, <.ptrDB, .ptrHook, .lparam>, 'sqlite3_commit_hook', \
sqliteCompileOptionGet, <.N>, 'sqlite3_compileoption_get', \
sqliteCompileOptionUsed, <.ptrOptName>, 'sqlite3_compileoption_used', \
sqliteComplete, <.ptrSQL>, 'sqlite3_complete', \
sqliteComplete16, <.ptrSQL>, 'sqlite3_complete16', \
sqliteConfig, <.index, ...>, 'sqlite3_config', \
sqliteContextDBHandle, <.context>, 'sqlite3_context_db_handle', \
sqliteCreateCollation, <.ptrDB, .ptrName, .eTextRep, .lparam, .procCompare>, 'sqlite3_create_collation', \
sqliteCreateCollation16, <.ptrDB, .ptrName, .eTextRep, .lparam, .procCompare>, 'sqlite3_create_collation16', \
sqliteCreateCollation_v2, <.ptrDB, .ptrName, .eTextRep, .lparam, .procCompare, .ptrDestroy>, 'sqlite3_create_collation_v2', \
sqliteCreateFunction, <.ptrDB, .ptrFunctionName, .nArg, .eTextRep, .lparam, .procFunc, .procStep, .procFinal>, 'sqlite3_create_function', \
sqliteCreateFunction16, <.ptrDB, .ptrFunctionName, .nArg, .eTextRep, .lparam, .procFunc, .procStep, .procFinal>, 'sqlite3_create_function16', \
sqliteCreateFunction_v2, <.ptrDB, .ptrFunctionName, .nArg, .eTextRep, .lparam, .procFunc, .procStep, .procFinal, .procDestroy>, 'sqlite3_create_function_v2', \
sqliteCreateModule, <.ptrDB, .ptrModuleName, .ptrVTableModule, .lparam>, 'sqlite3_create_module', \
sqliteCreateModule_v2, <.ptrDB, .ptrModuleName, .ptrVTableModule, .lparam, .procDestroy>, 'sqlite3_create_module_v2', \
sqliteDBConfig, <.ptrDB, .index, ...>, 'sqlite3_db_config', \
sqliteDBHandle, <.stmt>, 'sqlite3_db_handle', \
sqliteDBMutex, <.ptrDB>, 'sqlite3_db_mutex', \
sqliteDBStatus, <.ptrDB, .index, .ptrRetCurrent, .ptrRetHighest, .flagReset>, 'sqlite3_db_status', \
sqliteDataCount, <.stmt>, 'sqlite3_data_count', \
sqliteDeclareVtab, <.ptrDB, .ptrSQL>, 'sqlite3_declare_vtab', \
sqliteEnableLoadExtension, <.ptrDB, .flagEnable>, 'sqlite3_enable_load_extension', \
sqliteEnableSharedCache, <.flagEnable>, 'sqlite3_enable_shared_cache', \
sqliteErrCode, <.ptrDB>, 'sqlite3_errcode', \
sqliteErrMsg, <.ptrDB>, 'sqlite3_errmsg', \
sqliteErrMsg16, <.ptrDB>, 'sqlite3_errmsg16', \
sqliteExec, <.ptrDB, .ptrSQL, .procCallback, .lparam, .ptrVarErrMsg>, 'sqlite3_exec', \
sqliteExpired, <VOID>, 'sqlite3_expired', \
sqliteExtendedErrCode, <.ptrDB>, 'sqlite3_extended_errcode', \
sqliteExtendedResultCodes, <.ptrDB, .flagEnable>, 'sqlite3_extended_result_codes', \
sqliteFileControl, <.ptrDB, .ptrDBName, .wparam, .lparam>, 'sqlite3_file_control', \
_sqliteFinalize, <.stmt>, 'sqlite3_finalize', \
sqliteFree, <.ptrmem>, 'sqlite3_free', \
sqliteFreeTable, <.ptrVarResult>, 'sqlite3_free_table', \
sqliteGetAutocommit, <.ptrDB>, 'sqlite3_get_autocommit', \
sqliteGetAuxdata, <.context, .N>, 'sqlite3_get_auxdata', \
sqliteGetTable, <.ptrDB, .ptrSQL, .ptrVarResult, .ptrVarRows, .ptrVarColumns, .ptrVarErrorMsg>, 'sqlite3_get_table', \
sqliteGlobalRecover_OLD, <VOID>, 'sqlite3_global_recover', \
sqliteInitialize, <VOID>, 'sqlite3_initialize', \
sqliteInterrupt, <.ptrDB>, 'sqlite3_interrupt', \
sqliteLastInsertRowID, <.ptrDB>, 'sqlite3_last_insert_rowid', \
sqliteLibVersion, <VOID>, 'sqlite3_libversion', \
sqliteLibversionNumber, <VOID>, 'sqlite3_libversion_number', \
sqliteLimit, <.ptrDB, .idLimit, .newVal>, 'sqlite3_limit', \
sqliteLoadExtension, <.ptrDB, .nameDLL, .entryProc, .ptrVarErrMsg>, 'sqlite3_load_extension', \
sqliteLog, <.iErrCode, .ptrFormat, ...>, 'sqlite3_log', \
sqliteMAlloc, <.size>, 'sqlite3_malloc', \
sqliteMemoryAlarm_OLD, <VOID>, 'sqlite3_memory_alarm', \
sqliteMemoryHighWater, <.flagReset>, 'sqlite3_memory_highwater', \
sqliteMemoryUsed, <VOID>, 'sqlite3_memory_used', \
sqliteMprintf, <.ptrString, ...>, 'sqlite3_mprintf', \
sqliteMutexAlloc, <.type>, 'sqlite3_mutex_alloc', \
sqliteMutexEnter, <.hMutex>, 'sqlite3_mutex_enter', \
sqliteMutexFree, <.hMutex>, 'sqlite3_mutex_free', \
sqliteMutexLeave, <.hMutex>, 'sqlite3_mutex_leave', \
sqliteMutexTry, <.hMutex>, 'sqlite3_mutex_try', \
sqliteNextStmt, <.ptrDB, .stmt>, 'sqlite3_next_stmt', \
sqliteOSEnd, <VOID>, 'sqlite3_os_end', \
sqliteOSInit, <VOID>, 'sqlite3_os_init', \
sqliteOpen, <.ptrFileName, .ptrVarDB>, 'sqlite3_open', \
sqliteOpen16, <.ptrFileName, .ptrVarDB>, 'sqlite3_open16', \
sqliteOpen_v2, <.ptrFileName, .ptrVarDB, .flags, .ptrVFSName>, 'sqlite3_open_v2', \
sqliteOverloadFunction, <.ptrDB, .ptrFuncName, .lparam>, 'sqlite3_overload_function', \
sqlitePrepare, <.ptrDB, .ptrSQL, .lenSQL, .ptrVarStmt, .ptrVarNext>, 'sqlite3_prepare', \
sqlitePrepare16, <.ptrDB, .ptrSQL, .lenSQL, .ptrVarStmt, .ptrVarNext>, 'sqlite3_prepare16', \
sqlitePrepare16_v2, <.ptrDB, .ptrSQL, .lenSQL, .ptrVarStmt, .ptrVarNext>, 'sqlite3_prepare16_v2', \
_sqlitePrepare_v2, <.ptrDB, .ptrSQL, .lenSQL, .ptrVarStmt, .ptrVarNext>, 'sqlite3_prepare_v2', \
sqliteProfile, <.ptrDB, .procProfiler, .lparam>, 'sqlite3_profile', \
sqliteProgressHandler, <.ptrDB, .N, .procProgress, .lparam>, 'sqlite3_progress_handler', \
sqliteRandomness, <.bytes, .buffer>, 'sqlite3_randomness', \
sqliteReAlloc, <.ptrmem, .newsize>, 'sqlite3_realloc', \
sqliteReleaseMemory, <.bytes>, 'sqlite3_release_memory', \
sqliteReset, <.stmt>, 'sqlite3_reset', \
sqliteResetAutoExtension, <VOID>, 'sqlite3_reset_auto_extension', \
sqliteResultBlob, <.context, .ptrdata, .size, .procDestroy>, 'sqlite3_result_blob', \
sqliteResultDouble, <.context, .double>, 'sqlite3_result_double', \
sqliteResultError, <.context, .ptrErrMsg, .size>, 'sqlite3_result_error', \
sqliteResultError16, <.context, .ptrErrMsg, .size>, 'sqlite3_result_error16', \
sqliteResultErrorCode, <.context, .errcode>, 'sqlite3_result_error_code', \
sqliteResultErrorNoMem, <.context>, 'sqlite3_result_error_nomem', \
sqliteResultErrorTooBig, <.context>, 'sqlite3_result_error_toobig', \
sqliteResultInt, <.context, .integer>, 'sqlite3_result_int', \
sqliteResultInt64, <.context, .int64Lo, .int64Hi>, 'sqlite3_result_int64', \
sqliteResultNULL, <.context>, 'sqlite3_result_null', \
sqliteResultText, <.context, .ptrText, .size, .procDestroy>, 'sqlite3_result_text', \
sqliteResultText16, <.context, .ptrText, .size, .procDestroy>, 'sqlite3_result_text16', \
sqliteResultText16be, <.context, .ptrText, .size, .procDestroy>, 'sqlite3_result_text16be', \
sqliteResultText16le, <.context, .ptrText, .size, .procDestroy>, 'sqlite3_result_text16le', \
sqliteResultValue, <.context, .ptrValue>, 'sqlite3_result_value', \
sqliteResultZeroBlob, <.context, .size>, 'sqlite3_result_zeroblob', \
sqliteRollbackHook, <.ptrDB, .ptrHook, .lparam>, 'sqlite3_rollback_hook', \
sqliteRtreeGeometryCallback, <NONE>, 'sqlite3_rtree_geometry_callback', \
sqliteSQL, <.stmt>, 'sqlite3_sql', \
sqliteSetAuthorizer, <.ptrDB, .procAuthorizer, .lparam>, 'sqlite3_set_authorizer', \
sqliteSetAuxdata, <.context, .N, .ptrData, .procDestructor>, 'sqlite3_set_auxdata', \
sqliteShutdown, <VOID>, 'sqlite3_shutdown', \
sqliteSleep, <.sleep_ms>, 'sqlite3_sleep', \
sqliteSnprintf, <.size, .ptrBuffer, .ptrString, ...>, 'sqlite3_snprintf', \
sqliteSoftHeapLimit, <.N>, 'sqlite3_soft_heap_limit', \
sqliteSoftHeapLimit64, <.sizeLo, .sizeHi>, 'sqlite3_soft_heap_limit64', \
sqliteSourceID, <VOID>, 'sqlite3_sourceid', \
sqliteStatus, <.paramIndex, .ptrVarResult, .ptrVarHighwater, .flagReset>, 'sqlite3_status', \
sqliteStep, <.stmt>, 'sqlite3_step', \
sqliteStmtStatus, <.stmt, .paramIndex, .flagReset>, 'sqlite3_stmt_status', \
sqliteStrnicmp, <.ptrStr1, .ptrStr2, .size>, 'sqlite3_strnicmp', \
sqliteTableColumnMetadata, <.ptrDB, .ptrDBName, .ptrTableName, .ptrColumnName, .ptrVarDataType, .ptrVarCollSeq, .ptrVarNotNull, \
.ptrVarPrimaryKey, .ptrVarAutoInc>, 'sqlite3_table_column_metadata', \
sqliteTestControl, <.opCode, ...>, 'sqlite3_test_control', \
sqliteThreadCleanup, <VOID>, 'sqlite3_thread_cleanup', \
sqliteThreadsafe, <VOID>, 'sqlite3_threadsafe', \
sqliteTotalChanges, <.ptrDB>, 'sqlite3_total_changes', \
sqliteTrace, <.ptrDB, .procTrace, .lparam>, 'sqlite3_trace', \
sqliteTransferBindings, <VOID>, 'sqlite3_transfer_bindings', \
sqliteUpdateHook, <.ptrDB, .procUpdateHook, .lparam>, 'sqlite3_update_hook', \
sqliteUserData, <.context>, 'sqlite3_user_data', \
sqliteValueBlob, <.ptrValue>, 'sqlite3_value_blob', \
sqliteValueBytes, <.ptrValue>, 'sqlite3_value_bytes', \
sqliteValueBytes16, <.ptrValue>, 'sqlite3_value_bytes16', \
sqliteValueDouble, <.ptrValue>, 'sqlite3_value_double', \
sqliteValueInt, <.ptrValue>, 'sqlite3_value_int', \
sqliteValueInt64, <.ptrValue>, 'sqlite3_value_int64', \
sqliteValueNumericType, <.ptrValue>, 'sqlite3_value_numeric_type', \
sqliteValueText, <.ptrValue>, 'sqlite3_value_text', \
sqliteValueText16, <.ptrValue>, 'sqlite3_value_text16', \
sqliteValueText16be, <.ptrValue>, 'sqlite3_value_text16be', \
sqliteValueText16le, <.ptrValue>, 'sqlite3_value_text16le', \
sqliteValueType, <.ptrValue>, 'sqlite3_value_type', \
sqliteVersion, <VOID>, 'sqlite3_version', \
sqliteVfsFind, <.ptrVFSName>, 'sqlite3_vfs_find', \
sqliteVfsRegister, <.hVFS, .flagDefault>, 'sqlite3_vfs_register', \
sqliteVfsUnregister, <.hVFS>, 'sqlite3_vfs_unregister', \
sqliteVmprintf, <.ptrString, .va_list>, 'sqlite3_vmprintf', \
sqliteWalAutocheckpoint, <.ptrDB, .N>, 'sqlite3_wal_autocheckpoint', \
sqliteWalCheckpoint, <.ptrDB, .ptrDBName>, 'sqlite3_wal_checkpoint', \
sqliteWalCheckpoint_v2, <.ptrDB, .ptrDBName, .eMode, .pvarLog, .pvarCkpt>, 'sqlite3_wal_checkpoint_v2', \
sqliteWalHook, <.ptrDB, .procCommitHook, .lparam>, 'sqlite3_wal_hook', \
sqliteWin32_MbcsToUtf8, <NONE>, 'sqlite3_win32_mbcs_to_utf8'

1817
source/accounts.asm Normal file

File diff suppressed because it is too large Load Diff

17
source/alltags.sql Normal file
View File

@ -0,0 +1,17 @@
select
Tag,
ThreadCnt,
Description,
( select
count()
from
unreadposts up
left join
threadtags tt on tt.threadid = up.threadid
where up.userid = ?1 and tt.tag = tags.tag and tt.Limited = ?2
) as unread
from
Tags
where
Importance > -1
order by

18
source/alltags2.sql Normal file
View File

@ -0,0 +1,18 @@
select
Tag,
ThreadCnt,
Description,
( select
count()
from
unreadposts up
left join
threadtags tt on tt.threadid = up.threadid
where up.userid = ?1 and tt.tag = tags.tag and tt.Limited = ?2
) as unread
from
Tags
where
Importance > -1
order by
Tag

25
source/atom_list.sql Normal file
View File

@ -0,0 +1,25 @@
select
T.id as threadid,
T.LastChanged,
T.Caption,
T.Slug,
T.PostCount,
T.ReadCount,
strftime('%Y-%m-%dT%H:%M:%SZ', T.LastChanged, 'unixepoch') as TimeChanged,
(select group_concat(html_encode(nick),', ')
from ThreadPosters left join Users on userID = id where threadID = T.id order by firstPost
) as Posters,
'AllThreads' as FeedID,
'All threads' as FeedTitle,
'' as URL,
'' as tag,
(select Content from Posts where threadid = T.id order by id desc limit 1) as Content,
(select format from Posts where threadid = T.id order by id desc limit 1) as format,
(select nick from Posts P left join users U on U.id = P.userid where P.threadid = T.id order by P.id desc limit 1) as UserName
from
threads T
where
limited = 0
order by
LastChanged desc
limit ?1;

View File

@ -0,0 +1,21 @@
select
P.id as postid,
P.postTime,
T.Caption,
T.PostCount,
U.nick as UserName,
strftime('%Y-%m-%dT%H:%M:%SZ', P.postTime, 'unixepoch') as TimeChanged,
P.Content,
P.format,
'Thread' || P.threadID as FeedID,
T.Caption as FeedTitle,
?2 || '/' as URL
from
Posts P
left join Users U on U.id = P.userID
left join (select id, Caption, PostCount from threads where slug = ?2) as T on T.id = P.threadid
where
P.threadID = (select id from threads where slug = ?2)
order by
P.postTime desc
limit ?1

31
source/atom_tag_list.sql Normal file
View File

@ -0,0 +1,31 @@
select
S.threadid,
T.LastChanged,
T.Caption,
T.Slug,
T.PostCount,
T.ReadCount,
strftime('%Y-%m-%dT%H:%M:%SZ', T.LastChanged, 'unixepoch') as TimeChanged,
(select group_concat(html_encode(nick),', ')
from ThreadPosters left join Users on userID = id where threadID = T.id order by firstPost
) as Posters,
?2 as FeedID,
'Threads for tag [' || ?2 || ']' as FeedTitle,
?2 || '/' as URL,
?2 || '/' as tag,
(select Content from Posts where threadid = T.id order by id desc limit 1) as Content,
(select format from Posts where threadid = T.id order by id desc limit 1) as format,
(select nick from Posts P left join users U on U.id = P.userid where P.threadid = T.id order by P.id desc limit 1) as UserName
from
(
select
threadid
from
threadtags tt
where
tag = ?2 and limited = 0
order by
LastChanged desc
limit ?1
) as S
left join threads T on T.id = S.threadid;

162
source/atomfeed.asm Normal file
View File

@ -0,0 +1,162 @@
iglobal
sqlAtomList StripText "atom_list.sql", SQL
sqlAtomTagList StripText "atom_tag_list.sql", SQL
sqlAtomThread StripText "atom_one_thread.sql", SQL
endg
tplPost text "atom_entry_post.tpl"
tplThread text "atom_entry_thread.tpl"
proc CreateAtomFeed, .pSpecial
.stmt dd ?
.date TDateTime
.timeLo dd ?
.timeHi dd ?
BenchVar .rss
begin
pushad
BenchmarkStart .rss
xor edi, edi
mov esi, [.pSpecial]
cmp [esi+TSpecialParams.Limited], edi
clc
jne .finish ; no limited threads in the feed. return 404 not found
test [esi+TSpecialParams.userStatus], permRead
jz .error_403 ; the user have no permissions to read the forum. So, don't generate the feed.
stdcall LogUserActivity, esi, uaAtomFeedUpdate, 0
stdcall TextCreate, sizeof.TText
mov edi, eax
mov ecx, sqlAtomThread
mov ebx, tplPost
cmp [esi+TSpecialParams.thread], 0
jne .sql_ok
mov ecx, sqlAtomTagList
mov ebx, tplThread
cmp [esi+TSpecialParams.dir], 0
jne .sql_ok
mov ecx, sqlAtomList
.sql_ok:
lea eax, [.stmt]
cinvoke sqlitePrepare_v2, [hMainDatabase], ecx, -1, eax, 0
cinvoke sqliteBindInt, [.stmt], 1, [esi+TSpecialParams.page_length]
mov eax, [esi+TSpecialParams.thread]
test eax, eax
cmovz eax, [esi+TSpecialParams.dir]
test eax, eax
jz .param_ok
stdcall StrPtr, eax
cinvoke sqliteBindText, [.stmt], 2, eax, [eax+string.len], SQLITE_STATIC
.param_ok:
cinvoke sqliteStep, [.stmt]
cmp eax, SQLITE_ROW
jne .error_404
; compare the browser cached date:
mov [.timeLo], 0
mov [.timeHi], 0
stdcall ValueByName, [esi+TSpecialParams.params], txt "HTTP_IF_MODIFIED_SINCE"
jc .do_create
lea edx, [.date]
stdcall DecodeHTTPDate, eax, edx
jc .do_create
stdcall DateTimeToTime, edx
mov [.timeLo], eax
mov [.timeHi], edx
cinvoke sqliteColumnInt64, [.stmt], 1 ; the time is always column 1 in the queries!!!
cmp edx, [.timeHi]
ja .do_create
jb .not_changed_304
cmp eax, [.timeLo]
jbe .not_changed_304
; Create the XML file of the feed...
.do_create:
stdcall TextCat, edi, <txt "Content-Type: application/atom+xml; charset=UTF-8", 13, 10, "Cache-control: max-age=3600", 13, 10, "Last-modified: ">
mov edi, edx
cinvoke sqliteColumnInt64, [.stmt], 1 ; the time is always column 1 in the queries!!!
stdcall FormatHTTPTime, eax, edx
stdcall TextCat, edi, eax
stdcall StrDel, eax
stdcall TextCat, edx, <txt 13, 10, 13, 10>
stdcall RenderTemplate, edi, "atom_start.tpl", [.stmt], esi
mov edi, eax
.loop:
stdcall RenderTemplate, edi, ebx, [.stmt], esi
mov edi, eax
cinvoke sqliteStep, [.stmt]
cmp eax, SQLITE_ROW
je .loop
stdcall TextCat, edi, txt "</feed>" ; finalizes the <feed> tag.
mov edi, edx
.finalize:
cinvoke sqliteFinalize, [.stmt]
stc
.finish:
pushf
Benchmark "Atom feed processing: "
BenchmarkEnd
popf
mov [esp+4*regEAX], edi
popad
return
.error_404:
cinvoke sqliteFinalize, [.stmt]
stdcall TextFree, edi
xor edi, edi
clc
jmp .finalize
.error_403:
stdcall TextCreate, sizeof.TText
stdcall AppendError, eax, txt "403 Forbidden", esi
mov edi, edx
stc
jmp .finish
.not_changed_304:
stdcall TextCat, edi, <"Status: 304 Not Modified", 13, 10, 13, 10>
mov edi, edx
jmp .finalize
endp

423
source/attachments.asm Normal file
View File

@ -0,0 +1,423 @@
MAX_ATTACHMENT_COUNT = 10
MAX_ATTACHMENT_SIZE = 1024*1024
sqlGetAttachedFile text "select filename, file, key from Attachments where id = ?1"
sqlGetFileDate text "select changed from Attachments where id = ?1"
proc GetAttachedFile, .pSpecial
.stmt dd ?
.fileid dd ?
.pKey dd ?
.pKeyLen dd ?
.date TDateTime
.timelo dd ?
.timehi dd ?
.timeRetLo dd ?
.timeRetHi dd ?
BenchVar .attachit
begin
pushad
BenchmarkStart .attachit
xor eax, eax
mov [.stmt], eax
mov [.timelo], eax
mov [.timehi], eax
mov esi, [.pSpecial]
stdcall TextCreate, sizeof.TText
mov edi, eax
; check permissions
test [esi+TSpecialParams.userStatus], permDownload or permAdmin
jz .error_403
mov edx, [esi+TSpecialParams.cmd_list]
cmp [edx+TArray.count], 0
je .error_404
stdcall StrToNumEx, [edx+TArray.array]
jc .error_404
mov [.fileid], eax
; Check the caching.
stdcall ValueByName, [esi + TSpecialParams.params], "HTTP_IF_MODIFIED_SINCE"
jc .file_time
lea edx, [.date]
stdcall DecodeHTTPDate, eax, edx
jc .file_time
stdcall DateTimeToTime, edx
mov [.timelo], eax
mov [.timehi], edx
.file_time:
lea eax, [.stmt]
cinvoke sqlitePrepare_v2, [hMainDatabase], sqlGetFileDate, sqlGetFileDate.length, eax, 0
cinvoke sqliteBindInt, [.stmt], 1, [.fileid]
cinvoke sqliteStep, [.stmt]
cmp eax, SQLITE_ROW
jne .error_404
cinvoke sqliteColumnInt64, [.stmt], 0
mov [.timeRetLo], eax
mov [.timeRetHi], edx
cinvoke sqliteFinalize, [.stmt]
and [.stmt], 0
mov edx, [.timeRetHi]
mov eax, [.timeRetLo]
cmp edx, [.timehi]
jg .extract_the_file ; the file is newer than in the client.
jl .return_304
cmp eax, [.timelo]
jg .extract_the_file ; the file is newer than in the client.
.return_304:
stdcall TextCat, edi, <"Status: 304 Not Modified", 13, 10, 13, 10>
mov edi, edx
jmp .finish
; extract the file from the database
.extract_the_file:
lea eax, [.stmt]
cinvoke sqlitePrepare_v2, [hMainDatabase], sqlGetAttachedFile, sqlGetAttachedFile.length, eax, 0
cinvoke sqliteBindInt, [.stmt], 1, [.fileid]
cinvoke sqliteStep, [.stmt]
cmp eax, SQLITE_ROW
jne .error_404
; Generate the headers. Only for download.
stdcall TextCat, edi, <"Cache-control: max-age=1000000", 13, 10>
stdcall FormatHTTPTime, [.timeRetLo], [.timeRetHi]
stdcall TextCat, edx, "Last-modified: "
stdcall TextCat, edx, eax
stdcall StrDel, eax
stdcall TextCat, edx, <13, 10, "Content-type: application/octet-stream", 13, 10, "Content-Disposition: attachment; filename*=utf-8''">
mov edi, edx
cinvoke sqliteColumnText, [.stmt], 0 ; the filename.
stdcall StrURLEncode, eax
stdcall TextCat, edi, eax
stdcall StrDel, eax
stdcall TextCat, edx, <txt 13, 10, 13, 10>
mov edi, edx
cinvoke sqliteColumnBlob, [.stmt], 2
mov [.pKey], eax
cinvoke sqliteColumnBytes, [.stmt], 2
test eax, 3
jnz .error_403 ; broken file!
mov [.pKeyLen], eax
cinvoke sqliteColumnBlob, [.stmt], 1
mov ebx, eax
cinvoke sqliteColumnBytes, [.stmt], 1
mov ecx, eax
stdcall XorMemory, ebx, ecx, [.pKey], [.pKeyLen]
; OutputValue "Attached file size: ", ecx, 10, -1
stdcall TextAddBytes, edi, -1, ebx, ecx
mov edi, edx
stdcall AttachmentIncDownloadCount, [.fileid]
.finalize:
cinvoke sqliteFinalize, [.stmt]
.finish:
Benchmark "Time to process one attached file: "
BenchmarkEnd
mov [esp+4*regEAX], edi
stc
popad
return
.error_404:
stdcall AppendError, edi, "404 Not Found", esi
mov edi, edx
jmp .finalize
.error_403:
stdcall AppendError, edi, "403 Forbidden", esi
mov edi, edx
jmp .finalize
endp
sqlIncDownloadCnt text "update attachCnt set count = count + 1 where fileid = ?1"
proc AttachmentIncDownloadCount, .fileID
.stmt dd ?
begin
pushad
lea eax, [.stmt]
cinvoke sqlitePrepare_v2, [hMainDatabase], sqlIncDownloadCnt, sqlIncDownloadCnt.length, eax, 0
cinvoke sqliteBindInt, [.stmt], 1, [.fileID]
cinvoke sqliteStep, [.stmt]
cinvoke sqliteFinalize, [.stmt]
popad
return
endp
sqlAttach text "insert into Attachments(postID, filename, file, changed, md5sum, key) values (?1, ?2, ?3, strftime('%s','now'), ?4, ?5)"
sqlAttachCnt text "select count() from Attachments where postid = ?1"
proc WriteAttachments, .postID, .pSpecial
.stmt dd ?
.max_size dd ?
.max_count dd ?
begin
pushad
mov ebx, [.pSpecial]
DebugMsg "Write attachments"
test [ebx+TSpecialParams.userStatus], permAttach or permAdmin
jz .error_permissions
stdcall ValueByName, [ebx+TSpecialParams.post_array], txt "attach"
jc .error_post_data
mov esi, eax ; TArray of TPostFileItem
and eax, $c0000000
jnz .error_post_data ; it is a string instead of array of attached files.
; get the limits.
mov eax, MAX_ATTACHMENT_SIZE
stdcall GetParam, "max_attachment_size", gpInteger
mov [.max_size], eax
OutputValue "Max attachment size:", eax, 10, -1
mov eax, MAX_ATTACHMENT_COUNT
stdcall GetParam, "max_attachment_count", gpInteger
mov [.max_count], eax
OutputValue "Max attachment count:", eax, 10, -1
OutputValue "Post ID = ", [.postID], 10, -1
lea eax, [.stmt]
cinvoke sqlitePrepare_v2, [hMainDatabase], sqlAttachCnt, sqlAttachCnt.length, eax, 0
cinvoke sqliteBindInt, [.stmt], 1, [.postID]
cinvoke sqliteStep, [.stmt]
cmp eax, SQLITE_ROW
jne .error_finalize
cinvoke sqliteColumnInt, [.stmt], 0
mov ebx, eax
cinvoke sqliteFinalize, [.stmt]
OutputValue "Attachment count now:", eax, 10, -1
sub [.max_count], ebx
jle .error_limits
lea eax, [.stmt]
cinvoke sqlitePrepare_v2, [hMainDatabase], sqlAttach, sqlAttach.length, eax, 0
mov ebx, [esi+TArray.count]
lea esi, [esi+TArray.array]
.loop:
dec ebx
js .end_of_files
mov eax, [esi+TPostFileItem.size]
test eax, eax
jz .next
cmp eax, [.max_size]
ja .next
cinvoke sqliteBindInt, [.stmt], 1, [.postID]
stdcall StrPtr, [esi+TPostFileItem.filename]
cinvoke sqliteBindText, [.stmt], 2, eax, [eax+string.len], SQLITE_STATIC
stdcall DataMD5, [esi+TPostFileItem.data], [esi+TPostFileItem.size]
push eax
stdcall StrPtr, eax
cinvoke sqliteBindText, [.stmt], 4, eax, [eax+string.len], SQLITE_TRANSIENT
stdcall StrDel ; from the stack
DebugMsg "MD4 computed."
stdcall GetRandomBytes, 256
jc .clear
mov edi, eax
DebugMsg "Encription key created."
stdcall XorMemory, [esi+TPostFileItem.data], [esi+TPostFileItem.size], edi, 256
DebugMsg "File encripted."
cinvoke sqliteBindBlob, [.stmt], 3, [esi+TPostFileItem.data], [esi+TPostFileItem.size], SQLITE_STATIC
cinvoke sqliteBindBlob, [.stmt], 5, edi, 256, SQLITE_STATIC
cinvoke sqliteStep, [.stmt]
OutputValue "Write file SQL return: ", eax, 10, -1
stdcall FreeMem, edi
cmp eax, SQLITE_DONE
jne .clear
dec [.max_count]
jz .end_of_files
.clear:
cinvoke sqliteClearBindings, [.stmt]
cinvoke sqliteReset, [.stmt]
.next:
add esi, sizeof.TPostFileItem
jmp .loop
.end_of_files:
cinvoke sqliteFinalize, [.stmt]
clc
popad
return
.error_finalize:
cinvoke sqliteFinalize, [.stmt]
.error_limits:
.error_permissions:
.error_post_data:
stc
popad
return
endp
proc DelAttachments, .postID, .pSpecial
begin
pushad
mov esi, [.pSpecial]
mov edx, [esi+TSpecialParams.post_array]
; now search the files that need to be deleted:
mov ecx, [edx+TArray.count]
.loop:
dec ecx
js .finish
stdcall StrCompNoCase, [edx+TArray.array + 8*ecx], txt 'attch_del'
jnc .loop
mov eax, [edx+TArray.array + 8*ecx + 4]
cmp eax, $c0000000
jb .loop
stdcall StrToNumEx, eax
jc .loop
stdcall __DelOneFile, [.postID], eax
jmp .loop
.finish:
popad
return
endp
sqlDelFile text "delete from Attachments where id = ?1 and postid = ?2"
proc __DelOneFile, .postID, .fileID
.stmt dd ?
begin
pushad
lea eax, [.stmt]
cinvoke sqlitePrepare_v2, [hMainDatabase], sqlDelFile, sqlDelFile.length, eax, 0
cinvoke sqliteBindInt, [.stmt], 1, [.fileID]
cinvoke sqliteBindInt, [.stmt], 2, [.postID]
cinvoke sqliteStep, [.stmt]
cinvoke sqliteFinalize, [.stmt]
popad
return
endp
proc XorMemory, .pData, .DataSize, .pKey, .KeyLen
begin
pushad
shr [.KeyLen], 2 ; MUST BE DWORD SIZED
mov esi, [.pData]
mov ecx, [.DataSize]
.loop_key:
mov edi, [.pKey]
mov edx, [.KeyLen]
.loop:
cmp ecx, 4
jb .final_bytes
mov eax, [esi]
xor eax, [edi]
mov [esi], eax
add esi, 4
add edi, 4
sub ecx, 4
dec edx
jnz .loop
jmp .loop_key
.final_bytes:
dec ecx
js .finish
mov al, [esi]
xor al, [edi]
mov [esi], al
inc esi
inc edi
jmp .final_bytes
.finish:
popad
return
endp

45
source/benchmark.asm Normal file
View File

@ -0,0 +1,45 @@
macro BenchmarkStart tempvar {
if defined options.Benchmark & options.Benchmark
push eax
stdcall GetFineTimestamp
mov [tempvar], eax
pop eax
end if
macro Benchmark [txtLabel] \{
\common
if defined options.Benchmark & options.Benchmark
push eax
\forward
stdcall FileWriteString, [STDERR], txtLabel
\common
stdcall GetFineTimestamp
sub eax, [tempvar]
stdcall NumToStr, eax, ntsDec or ntsUnsigned
push eax
stdcall FileWriteString, [STDERR], eax
stdcall FileWriteString, [STDERR], <txt 13, 10>
stdcall StrDel ; from the stack
pop eax
end if
\}
}
macro BenchVar name {
if defined options.Benchmark & options.Benchmark
name dd ?
end if
}
macro BenchmarkEnd {
purge Benchmark
}

67
source/categories.asm Normal file
View File

@ -0,0 +1,67 @@
sqlReadCats StripText 'categories.sql', SQL
proc Categories, .pSpecial
.stmt dd ?
begin
pushad
mov esi, [.pSpecial]
test [esi+TSpecialParams.userStatus], permRead or permAdmin
jz .error_cant_read
stdcall LogUserActivity, esi, uaCategoriesList, 0
stdcall StrCat, [esi+TSpecialParams.page_title], ' Categories'
stdcall TextCreate, sizeof.TText
stdcall TextCat, eax, '<div class="threads_list">'
stdcall RenderTemplate, edx, "nav_categories.tpl", 0, esi
stdcall TextCat, eax, '<div class="multi_content">'
mov edi, edx
stdcall TextCreate, sizeof.TText
mov edx, eax
stdcall TextAddStr2, edx, 0, sqlReadCats, sqlReadCats.length
stdcall RenderTemplate, edx, 0, 0, esi
stdcall TextCompact, eax
push edx
lea ecx, [.stmt]
cinvoke sqlitePrepare_v2, [hMainDatabase], edx, eax, ecx, 0
stdcall TextFree ; from the stack
cinvoke sqliteBindInt, [.stmt], 1, [esi+TSpecialParams.userID]
.loop:
cinvoke sqliteStep, [.stmt]
cmp eax, SQLITE_ROW
jne .end_cats
stdcall RenderTemplate, edi, "one_category.tpl", [.stmt], esi
mov edi, eax
jmp .loop
.end_cats:
cinvoke sqliteFinalize, [.stmt]
stdcall TextCat, edi, '</div></div>'
mov [esp+4*regEAX], edx
clc
popad
return
; the user have no permissions to read posts!
.error_cant_read:
stdcall TextMakeRedirect, 0, "/!message/cant_read/"
mov [esp+4*regEAX], edi
stc
popad
return
endp

21
source/categories.sql Normal file
View File

@ -0,0 +1,21 @@
-- This is the fastest variant I was able to invent...
select
t.Tag,
t.importance,
t.Description,
t.PostCnt,
t.ThreadCnt,
( select
count()
from
unreadposts up
left join threadtags tt on tt.threadid = up.threadid
where
up.userid = ?1 and tt.tag = t.tag
) as unread
from
tags t
where
t.importance >= 0 and t.Description is not null
order by
importance desc;

450
source/chat.asm Normal file
View File

@ -0,0 +1,450 @@
CHAT_MAX_USER_NAME = 20
CHAT_MAX_MESSAGE = 1000
CHAT_BACKLOG_DEFAULT = 100
sqlSelectChat text "select id, time, user, original, message from ChatLog where id in (select id from chatlog order by id desc limit ?1)"
proc SendMessageLog, .session
.stmt dd ?
begin
pushad
xor ebx, ebx ; the count of the fetched messages.
lea eax, [.stmt]
cinvoke sqlitePrepare_v2, [hMainDatabase], sqlSelectChat, sqlSelectChat.length, eax, 0
mov eax, CHAT_BACKLOG_DEFAULT
stdcall GetParam, 'chat_backlog_length', gpInteger
cinvoke sqliteBindInt, [.stmt], 1, eax
stdcall StrDupMem, <txt '{ "msgs": [ '> ; start of the messages data set.
mov edi, eax
.fetch_loop_msg:
cinvoke sqliteStep, [.stmt]
cmp eax, SQLITE_ROW
jne .finish_msg_set
; is there previous record?
test ebx, ebx
jz .comma_ok1
stdcall StrCat, edi, txt ", "
.comma_ok1:
stdcall StrCat, edi, '{ "id": '
cinvoke sqliteColumnText, [.stmt], 0
stdcall StrCat, edi, eax
stdcall StrCat, edi, txt ', "time": '
cinvoke sqliteColumnText, [.stmt], 1
stdcall StrCat, edi, eax
stdcall StrCat, edi, txt ', "user": "'
cinvoke sqliteColumnText, [.stmt], 2
test eax, eax
jz @f
stdcall StrEncodeJS, eax
stdcall StrCat, edi, eax
stdcall StrDel, eax
@@:
stdcall StrCat, edi, txt '", "originalname": "'
cinvoke sqliteColumnText, [.stmt], 3
stdcall StrCat, edi, eax
stdcall StrCat, edi, txt '", "text": "'
cinvoke sqliteColumnText, [.stmt], 4
stdcall StrEncodeJS, eax
stdcall StrCat, edi, eax
stdcall StrDel, eax
stdcall StrCat, edi, txt '" }'
inc ebx
jmp .fetch_loop_msg
.finish_msg_set:
cinvoke sqliteFinalize, [.stmt]
test ebx, ebx
jz .messages_ok
stdcall StrCat, edi, txt " ] }"
stdcall AddEvent, evMessage, edi, [.session]
.messages_ok:
stdcall StrDel, edi
popad
return
endp
sqlPostChatMessage text "insert into chatlog (time, user, original, message) values (?1, ?2, ?3, ?4);"
sqlGetChatUser text "select username from EventSessions where session = ?1;"
proc ChatPage, .pSpecial
.stmt dd ?
begin
pushad
mov esi, [.pSpecial]
; the user permissions
stdcall ChatPermissions, esi
jc .error_no_permissions
cmp [esi+TSpecialParams.post_array], 0
jne .post_new_message
mov eax, [esi+TSpecialParams.userLang]
stdcall StrCat, [esi+TSpecialParams.page_title], [cChatTitle+8*eax]
stdcall LogUserActivity, esi, uaChatting, 0
stdcall AddActivitySimple, cActivityChat, esi
stdcall RenderTemplate, 0, txt "chat.tpl", 0, [.pSpecial]
clc
mov [esp+4*regEAX], eax
popad
return
.error_no_permissions:
stdcall TextCreate, sizeof.TText
stdcall AppendError, eax, "403 Forbidden", esi
jmp .finish_replace
.post_new_message:
xor edi, edi
stdcall GetQueryParam, esi, txt 'session='
mov edi, eax
test edi, edi
jz .error_no_permissions
; stdcall FileWriteString, [STDERR], "Chat request session: "
; stdcall FileWriteString, [STDERR], edi
; stdcall FileWriteString, [STDERR], <txt "<<<", 13, 10>
stdcall GetPostString, [esi+TSpecialParams.post_array], txt "cmd", 0
test eax, eax
jz .finish
mov ecx, .post_message
stdcall StrCompCase, eax, txt "message"
jc .do_it
mov ecx, .rename_user
stdcall StrCompCase, eax, txt "rename"
jc .do_it
mov ecx, .change_status
stdcall StrCompCase, eax, txt "status"
jc .do_it
mov ecx, .finish
.do_it:
stdcall StrDel, eax
jmp ecx
.post_message:
locals
.id dd ?
.time dd ?
.user dd ?
.original dd ?
.text dd ?
endl
stdcall GetTime
xor ecx, ecx
mov [.id], ecx
mov [.time], eax
mov [.user], ecx
mov [.original], ecx
mov [.text], ecx
stdcall GetPostString, [esi+TSpecialParams.post_array], txt "chat_message", 0
mov [.text], eax
test eax, eax
jz .finish
; message text sanitation
stdcall StrByteUtf8, [.text], CHAT_MAX_MESSAGE
stdcall StrTrim, [.text], eax
stdcall StrClipSpacesR, [.text]
stdcall StrClipSpacesL, [.text]
stdcall StrLen, [.text]
test eax, eax
jz .finish
lea eax, [.stmt]
cinvoke sqlitePrepare_v2, [hMainDatabase], sqlGetChatUser, sqlGetChatUser.length, eax, 0
stdcall StrPtr, edi
cinvoke sqliteBindText, [.stmt], 1, eax, [eax+string.len], SQLITE_STATIC
cinvoke sqliteStep, [.stmt]
cmp eax, SQLITE_ROW
jne .username_ok
cinvoke sqliteColumnText, [.stmt], 0
stdcall StrDupMem, eax
mov [.user], eax
.username_ok:
cinvoke sqliteFinalize, [.stmt]
stdcall EventUserName, [.pSpecial]
mov [.original], eax
cinvoke sqliteExec, [hMainDatabase], sqlBegin, 0, 0, 0
lea eax, [.stmt]
cinvoke sqlitePrepare_v2, [hMainDatabase], sqlPostChatMessage, sqlPostChatMessage.length, eax, 0
cinvoke sqliteBindInt, [.stmt], 1, [.time]
cmp [.user], 0
je .username_ok2
stdcall StrPtr, [.user]
cinvoke sqliteBindText, [.stmt], 2, eax, [eax+string.len], SQLITE_STATIC
.username_ok2:
stdcall StrPtr, [.original]
cinvoke sqliteBindText, [.stmt], 3, eax, [eax+string.len], SQLITE_STATIC
stdcall StrPtr, [.text]
cinvoke sqliteBindText, [.stmt], 4, eax, [eax+string.len], SQLITE_STATIC
cinvoke sqliteStep, [.stmt]
mov ebx, sqlRollback
cmp eax, SQLITE_DONE
jne .finish_query
mov ebx, sqlCommit
cinvoke sqliteLastInsertRowID, [hMainDatabase]
mov [.id], eax
.finish_query:
cinvoke sqliteFinalize, [.stmt]
cinvoke sqliteExec, [hMainDatabase], ebx, 0, 0, 0
cmp [.id], 0 ; the insert in the chatlog has been failed and the ID is unknown.
je .finish ; ... so, don't create an event.
stdcall FormatJsonMessage, [.id], [.time], [.user], [.original], [.text]
stdcall AddEvent, evMessage, eax, 0
stdcall StrDel, eax
.finish:
stdcall StrDel, [.user]
stdcall StrDel, [.original]
stdcall StrDel, [.text]
stdcall StrDel, edi ; the chatsid string.
stdcall TextCreate, sizeof.TText
stdcall TextCat, eax, <"Content-type: text/plain", 13, 10, 13, 10, "OK", 13, 10>
.finish_replace:
stc
mov [esp+4*regEAX], edx
popad
return
.rename_user:
stdcall GetPostString, [esi+TSpecialParams.post_array], "username", txt " "
mov edx, eax
stdcall EventUserName, esi
stdcall RenameEventUser, edi, edx, eax
stdcall StrDel, eax
stdcall StrDel, edx
jmp .finish
.change_status:
stdcall GetPostString, [esi+TSpecialParams.post_array], "status", 0
test eax, eax
jz .finish
push eax
stdcall StrToNumEx, eax
stdcall StrDel ; from the stack
stdcall SetEventUserStatus, edi, eax
jmp .finish
endp
proc ChatPermissions, .pSpecial
begin
push eax esi
mov esi, [.pSpecial]
stdcall GetParam, "chat_enabled", gpInteger
jc .not_ok
test eax, eax
jz .not_ok
test [esi+TSpecialParams.userStatus], permChat or permAdmin
jnz .permissions_ok
.not_ok:
stc
pop esi eax
return
.permissions_ok:
clc
pop esi eax
return
endp
proc FormatJsonMessage, .id, .time, .user, .original, .text
begin
pushad
stdcall StrDupMem, txt '{ "msgs": [ '
mov edi, eax
stdcall StrCat, edi, '{ "id": '
stdcall NumToStr, [.id], ntsDec or ntsUnsigned
stdcall StrCat, edi, eax
stdcall StrDel, eax
stdcall StrCat, edi, txt ', "time": '
stdcall NumToStr, [.time], ntsDec or ntsUnsigned
stdcall StrCat, edi, eax
stdcall StrDel, eax
stdcall StrCat, edi, txt ', "user": "'
cmp [.user], 0
je @f
stdcall StrEncodeJS, [.user]
stdcall StrCat, edi, eax
stdcall StrDel, eax
@@:
stdcall StrCat, edi, txt '", "originalname": "'
stdcall StrCat, edi, [.original]
stdcall StrCat, edi, txt '", "text": "'
stdcall StrEncodeJS, [.text]
stdcall StrCat, edi, eax
stdcall StrDel, eax
stdcall StrCat, edi, txt '" } ] }'
mov [esp+4*regEAX], edi
popad
return
endp
cCRLF2 text 13, 10, 13, 10
if defined options.DebugWebSSE & options.DebugWebSSE
cContentTypeEvent2 text 'Content-Type: text/event-stream', 13, 10, "X-Accel-Buffering: yes", 13, 10, 13, 10, "retry: 1000", 13, 10, 13, 10
proc EchoRealTime, .pSpecialParams
.bytes dd ?
begin
pushad
DebugMsg "Started echo long life thread!"
mov esi, [.pSpecialParams]
cmp [fEventsTerminate], 0
jne .finish_socket
mov edi, cContentTypeEvent
mov ecx, cContentTypeEvent.length
cmp [esi+TSpecialParams.page_num], 0
je @f
mov edi, cContentTypeEvent2
mov ecx, cContentTypeEvent2.length
@@:
stdcall FCGI_output, [esi+TSpecialParams.hSocket], [esi+TSpecialParams.requestID], edi, ecx, FALSE
stdcall StrDupMem, <txt 'event: message', 13, 10, 'data: '> ; echo message
mov edi, eax
mov ebx, cContentTypeEvent.length
.event_loop_msg:
stdcall StrPtr, edi
stdcall FCGI_output, [esi+TSpecialParams.hSocket], [esi+TSpecialParams.requestID], eax, [eax+string.len], FALSE
jc .finish
stdcall NumToStr, ebx, ntsDec or ntsUnsigned or ntsFixedWidth + 6
push eax
stdcall StrPtr, eax
stdcall FCGI_output, [esi+TSpecialParams.hSocket], [esi+TSpecialParams.requestID], eax, [eax+string.len], FALSE
stdcall StrDel ; from the stack
jc .finish
stdcall FCGI_output, [esi+TSpecialParams.hSocket], [esi+TSpecialParams.requestID], cCRLF2, cCRLF2.length, FALSE
jc .finish
cmp [fEventsTerminate], 0
jne .finish_socket
add ebx, 32 ; one event lenght
stdcall Sleep, 100
jmp .event_loop_msg
.finish_socket:
stdcall FCGI_output, [esi+TSpecialParams.hSocket], [esi+TSpecialParams.requestID], 0, 0, TRUE
.finish:
stdcall StrDel, edi
DebugMsg "Finished echo long life thread!"
popad
xor eax, eax
stc
return
endp
else
EchoRealTime = 0
end if

1975
source/commands.asm Normal file

File diff suppressed because it is too large Load Diff

612
source/create.sql Normal file
View File

@ -0,0 +1,612 @@
BEGIN TRANSACTION;
/* Data tables */
create table Counters (
id text primary key,
val integer default 0
) without rowid;
insert into Counters(id) values ('posts'), ('threads');
create table Params (
id text primary key,
val text
) without rowid;
insert into Params values ('default_lang', 0);
insert into Params values ('user_perm', 1887); -- permLogin + permRead + permPost + permThreadStart + permEditOwn + permDelOwn + permChat + permDownload + permAttach
insert into Params values ('anon_perm', 3); -- permLogin + permRead
insert into Params values ('chat_enabled', 1);
insert into Params values ('default_skin', 'Urban Sunrise');
insert into Params values ('default_mobile_skin', 'Urban Sunrise');
insert into Params values ('email_confirm', 1);
insert into Params values ('forum_header', '<h1 style="font-weight: 800">AsmBB</h1>
<b style="text-align: center">Power<br>
<svg version="1.1" width="64" height="16" viewBox="0 0 64 16" xmlns="http://www.w3.org/2000/svg">
<path d="m0 6 8 10h34l-6-6 28-2-50-8 8 8z"/>
</svg>
</b>
'
);
create table Guests (
addr integer primary key not null,
LastSeen integer,
Client text
);
create index idxGuests_time on Guests(LastSeen);
create index idxGuestsDesc on Guests(addr desc);
create table GuestRequests (
addr integer references Guests(addr) on delete cascade,
time integer,
method text,
request text,
referer text,
client text
);
create index idxGuestRequests on GuestRequests(addr);
create table Users (
id integer primary key autoincrement,
nick text unique collate nocase,
passHash text unique,
salt text unique,
status integer, -- see permXXXXX constants.
user_desc text, -- free text user description.
avatar blob, -- copy of the user avatar.
av_time integer, -- the time the avatar has been latest changed.
email text unique, -- user email.
Register integer, -- the time when the user has activated the account.
LastSeen integer, -- the time when the user has been last seen by taking some action.
Lang text, -- the language of the user interface.
Skin text, -- the name of the UI skin.
PostCount integer default 0 -- Speed optimization in order to not count the posts every time. Need automatic count.
);
create index idxUsersRegister on Users(Register);
create index idxUsers_email on Users(email);
create index idxUsersX on Users(id, nick, avatar);
create index idxUsers_LastSeen on Users(LastSeen);
create index idxUsersBack on Users(id desc);
CREATE TABLE UserLog (
userID integer,
remoteIP integer,
Time integer,
Activity integer,
Param integer,
Client text,
foreign key (userID) references Users(id) on delete cascade on update cascade
);
create index idxUserLogIP on userlog(remoteIP);
create index idxUserLogTime on UserLog(time); -- Any other index on UserLog ruins the performance. See users_online.sql for the query.
create table WaitingActivation (
a_secret text primary key,
operation integer not null, -- 0 = Registering account; 1 = change email; 2 = reseting password.
nick text unique collate nocase,
passHash text unique,
salt text unique,
email text unique,
ip_from integer not null,
time_reg integer,
time_email integer
);
create table Threads (
id integer primary key autoincrement,
Slug text unique,
Caption text,
LastChanged integer,
UserID integer references Users(id),
Pinned integer default 0,
PostCount integer default 0,
ReadCount integer default 0,
Limited integer default 0
);
create index idxThreadsPinnedLastChangedLimited on threads (Limited, Pinned desc, Lastchanged desc);
create index idxThreadsPinnedLastChanged on Threads (Pinned desc, Lastchanged desc); -- needed for the old threadlist sql!
create index idxThreadsLimitedLastChanged on Threads(Limited, LastChanged desc);
create index idxThreadsSlug on Threads (Slug);
create table ThreadPosters (
firstPost integer references Posts(id) on delete cascade on update cascade,
threadID integer references Threads(id) on delete cascade on update cascade,
userID integer references Users(id) on delete cascade on update cascade
);
create unique index idxThreadPosters on ThreadPosters(threadID, userID);
create index idxThreadPostersOrder on ThreadPosters(threadid, firstPost, userid);
create table ThreadsHistory (
threadid integer,
Slug text,
Caption text,
LastChanged integer,
UserID integer,
Pinned integer
);
-- in order to avoid duplicated information in the history.
create unique index idxThreadsHistory on ThreadsHistory(Slug, Caption, Pinned);
create trigger ThreadsAI after insert on Threads begin
update Counters set val = val + 1 where id = 'threads';
end;
create trigger ThreadsAU after update of Slug, Caption, UserID, Pinned on Threads begin
insert or ignore into ThreadsHistory(threadid, Slug, Caption, LastChanged, Pinned) values (
old.id,
old.Slug,
old.Caption,
old.LastChanged,
old.Pinned
);
end;
create trigger ThreadsAD after delete on Threads begin
insert or ignore into ThreadsHistory(threadid, Slug, Caption, LastChanged, Pinned) values (
old.id,
old.Slug,
old.Caption,
old.LastChanged,
old.Pinned
);
update Counters set val = val - 1 where id = 'threads';
end;
create table Posts (
id integer primary key autoincrement,
threadID integer references Threads(id) on delete cascade,
userID integer references Users(id) on delete cascade,
anon text,
postTime integer,
editUserID integer default NULL references Users(id) on delete cascade,
editTime integer default NULL,
format integer,
Content text
);
create index idxPosts_UserID on Posts (userID);
create index idxPosts_ThreadID on Posts (threadID);
create index idxPostsThreadUser on posts(threadid, userid);
create index idxPosts_ThreadID_ID on Posts(threadID, id);
create table PostCnt (
postID integer references Posts(id) on delete cascade on update cascade,
count integer
);
create index idxPostCount on PostCnt(postid);
create table PostsHistory (
postID integer,
threadID integer,
userID integer,
anon text,
postTime integer,
editUserID integer,
editTime integer,
format integer,
Content text
);
create unique index idxPostsHistory on PostsHistory(postID, Content);
CREATE VIRTUAL TABLE PostFTS using fts5(Content, Caption, slug, User, Tags, prefix="1 2 3", tokenize='porter unicode61 remove_diacritics 1');
CREATE TRIGGER PostsAI AFTER INSERT ON Posts BEGIN
insert into PostFTS(rowid, Content, Caption, slug, user, tags) VALUES (
new.id,
new.Content,
(select Caption from Threads where id=new.threadid),
(select slug from Threads where id = new.threadid),
ifnull((select nick from users where id = new.userid), new.anon),
(select group_concat(TT.Tag, ", ") from ThreadTags TT where TT.threadID = new.threadid)
);
insert into PostCNT(postid,count) VALUES (new.id, 0);
insert or ignore into ThreadPosters(firstPost, threadID, userID) values (new.id, new.threadID, new.userID);
update Users set PostCount = PostCount + 1 where Users.id = new.UserID;
update Threads set PostCount = PostCount + 1 where id = new.threadID;
update Counters set val = val + 1 where id = 'posts';
update Tags set PostCnt = PostCnt + 1 where Tags.tag in (select tag from ThreadTags where ThreadID = new.ThreadID);
END;
CREATE TRIGGER PostsAD AFTER DELETE ON Posts BEGIN
delete from PostFTS where rowid = old.id;
delete from ThreadPosters where threadid = old.threadid and userid = old.userid;
insert or ignore into ThreadPosters(firstPost, threadID, userID) select min(id), threadid, userid from posts where threadid = old.threadid and userid = old.userid;
update Users set PostCount = PostCount - 1 where Users.id = old.UserID;
update Threads set PostCount = PostCount - 1 where id = old.threadID;
update Counters set val = val - 1 where id = 'posts';
update Tags set PostCnt = PostCnt - 1 where Tags.tag in (select tag from threadtags where threadid = old.threadid);
insert or ignore into PostsHistory(postID, threadID, userID, anon, postTime, editUserID, editTime, format, Content) values (
old.id,
old.threadID,
old.userID,
old.anon,
old.postTime,
old.editUserID,
old.editTime,
old.format,
old.Content
);
END;
CREATE TRIGGER PostsAU AFTER UPDATE OF Content, editTime, editUserID, threadID, format ON Posts BEGIN
update PostFTS set
rowid = new.id,
Content = new.Content,
Caption = (select Caption from Threads where id=new.threadid),
slug = (select slug from Threads where id = new.threadid),
user = ifnull((select nick from users where id = new.userid), new.anon),
tags = (select group_concat(TT.Tag, ", ") from ThreadTags TT where TT.threadID = new.threadid)
where rowid = old.id;
insert or ignore into PostsHistory(postID, threadID, userID, anon, postTime, editUserID, editTime, format, Content) values (
old.id,
old.threadID,
old.userID,
old.anon,
old.postTime,
old.editUserID,
old.editTime,
old.format,
old.Content
);
update Threads set PostCount = PostCount - 1 where id = old.threadID;
update Threads set PostCount = PostCount + 1 where id = new.threadID;
update Tags set PostCnt = PostCnt - 1 where tags.tag in (select tag from threadtags where threadid = old.threadid);
update Tags set PostCnt = PostCnt + 1 where tags.tag in (select tag from threadtags where threadid = new.threadid);
END;
create table LimitedAccessThreads (
threadID integer references Threads(id) on delete cascade,
userID integer references Users(id) on delete cascade,
LastChanged integer default 0
);
create unique index idxLimitedAccessThreads on LimitedAccessThreads(threadID, userID);
create index idxLimitedAccessThreadsLastChanged on LimitedAccessThreads(LastChanged desc);
create index idxLimitedAccessThreadsUserLastChanged on LimitedAccessThreads(userID, LastChanged desc);
create trigger LimitedAccessThreadsAI after insert on LimitedAccessThreads begin
update LimitedAccessThreads set LastChanged = (select LastChanged from threads where id = new.threadid);
end;
create table Tags (
Tag text primary key,
Importance integer default 0,
ThreadCnt integer default 0,
PostCnt integer default 0,
Description text
) without rowid;
create index idxTagImportance on Tags(Importance desc);
create index idxTagsTagImp on Tags(tag, importance desc);
/* Relation tables */
create table ThreadTags (
ThreadID integer references Threads(id) on delete cascade,
Tag text references Tags(Tag) on delete cascade on update cascade,
Pinned integer default 0,
LastChanged integer default 0,
Limited integer default 0
);
create unique index idxThreadTagsUnique on ThreadTags ( ThreadID, Tag );
-- no need for so many indixes!!!???
create index idxThreadsTagsTags on ThreadTags (Tag);
create index idxThreadTagsTagLimitedPinnedLastChanged ON ThreadTags(Tag, Limited, Pinned desc, LastChanged desc);
create index idxThreadTagsTagPinnedLastChanged on ThreadTags(tag, pinned desc, lastchanged desc);
create index idxThreadTagsLimitedTag on ThreadTags(Limited, tag);
create index idxThreadTagsLimitedTagThread on ThreadTags (Limited, tag, threadid);
create index idxThreadTagsTagLimitedLastChanged on ThreadTags (tag, Limited, LastChanged desc);
CREATE TRIGGER ThreadTagsAI AFTER INSERT ON ThreadTags BEGIN
update Tags set ThreadCnt = ThreadCnt + 1 where tag = new.tag;
END;
CREATE TRIGGER ThreadTagsAD AFTER DELETE ON ThreadTags BEGIN
update Tags set ThreadCnt = ThreadCnt - 1 where tag = old.tag;
END;
CREATE TRIGGER ThreadTagsAU AFTER UPDATE OF Tag, Limited ON ThreadTags BEGIN
update Tags set ThreadCnt = ThreadCnt - 1 where tag = old.tag;
update Tags set ThreadCnt = ThreadCnt + 1 where tag = new.tag;
END;
CREATE TRIGGER ThreadsAUtt AFTER UPDATE OF LastChanged, Pinned, Limited ON Threads BEGIN
update threadtags set LastChanged = new.LastChanged, Pinned = new.Pinned, Limited = new.Limited where threadid = new.id;
update LimitedAccessThreads set LastChanged = new.LastChanged where threadid = new.id;
END;
create table UnreadPosts (
UserID integer references Users(id) on delete cascade,
PostID integer references Posts(id) on delete cascade,
ThreadID integer references Threads(id) on delete cascade on update cascade,
Time integer
);
create unique index idxUnreadPosts on UnreadPosts(UserID, PostID);
create index idxThreadUnread on UnreadPosts(userID, threadID);
create index idxUnreadPostsPostID on UnreadPosts(PostID);
create table Attachments (
id integer primary key autoincrement,
postID integer references Posts(id) on delete cascade,
filename text,
changed integer,
file blob,
key blob, -- the random key for xor encrypting the blob
md5sum text
);
create index idxAttachments on Attachments(postID);
create unique index idxAttachmentsUnique on Attachments(postID, md5sum);
create table AttachCnt (
fileID integer references Attachments(id) on delete cascade,
count integer not null default 0
);
create index idxAttachCnt on AttachCnt(fileID);
create trigger AttachmentsAI after insert on Attachments begin
insert into AttachCnt(fileid, count) VALUES (new.id, 0);
end;
create table Sessions (
id integer primary key autoincrement,
userID integer references Users(id) on delete cascade on update cascade,
fromIP text,
fromPort integer,
sid text,
last_seen integer,
unique (userID, fromIP)
);
create index idxSessions_UserID on Sessions(UserID);
create index idxSessions_Sid on Sessions(sid);
create table Tickets (
ssn integer references Sessions(id) on delete cascade on update cascade,
time integer,
ticket text unique
);
create index idxTickets_time on Tickets(time);
create table Messages (
id text primary key,
msg text,
header text,
link text
);
insert into Messages VALUES ('login_bad_password','Login incorrect.
Only perfect spellers may
enter this system.','Incorrect user or password!',NULL);
insert into Messages VALUES ('register_passwords_different','Passwords different.
Only perfect spellers may
register this forum.','Not matching passwords!',NULL);
insert into Messages VALUES ('register_short_pass','Short password
has been chosen. However,
I disagree !','The password is too short!',NULL);
insert into Messages VALUES ('login_missing_data','So many fields,
you have to fill.
Missed some.','Empty field!',NULL);
insert into Messages VALUES ('register_user_exists','Maybe the nickname,
or maybe the email,
is already taken.','Not available nickname or email!',NULL);
insert into Messages VALUES ('register_short_name','Short nick is not an
advantage, but burden.
Get longer.','The nickname too short!',NULL);
insert into Messages VALUES ('register_short_email','Queer email,
never saw alike before.
Don''t like it!','Too short email address!',NULL);
insert into Messages VALUES ('register_technical','Foreboding of evil,
quick shadow in very cold day.
A server is dying.','Server problem!',NULL);
insert into Messages VALUES ('user_created','Just step remains,
the secret, magic mail
you shall receive.','Yes!','<a href="/">Home</a>');
insert into Messages VALUES ('congratulations','It happened,
the journey ended at the door.
You''re welcome.','Hooray!','<a href="/!login/">Come in</a>');
insert into Messages VALUES ('bad_secret','Defeats and wins
take turns each other.
Now is the first.','Oh, no!','<a href="/">Home</a>');
insert into Messages VALUES ('login_bad_permissions','You are a sinner,
because some man of power
have banned you.','Forbidden!',NULL);
insert into Messages VALUES ('error_cant_post','You can''t post here,
still have no privileges.
Or have no longer.','Missing privileges!',NULL);
insert into Messages VALUES ('error_cant_create_threads','New thread,
new hurricane of passions,
but not for you.','Can''t start threads!',NULL);
insert into Messages VALUES ('register_bad_email','This email
does not looks like real.
It shall not pass!','Invalid email address!',NULL);
insert into Messages VALUES ('error_post_not_exists','With searching comes loss
and the presence of absence:
post not exists.','Missing post!',NULL);
insert into Messages VALUES ('error_cant_write','Write has failed.
I can''t tell you where or why.
Lazy programmers.','Unknown error!',NULL);
insert into Messages VALUES ('error_thread_not_exists','With searching comes loss
and the presence of absence:
thread not exists.','Missing thread!',NULL);
insert into Messages VALUES ('error_invalid_caption','The title is
missing, it''s pointless
to post, after all.','Empty title!',NULL);
insert into Messages VALUES ('error_invalid_content','Silence is golden.
But try to be silent without
posting void.','Empty post body!',NULL);
insert into Messages VALUES ('register_bot','Attempt to cheat
was miserable failure.
So, shame on you!','Cheat attempt detected!',NULL);
insert into Messages VALUES ('error_bad_ticket','Simple, deep, and still.
The old masters were patient.
Without desires.','Can''t post right now!',NULL);
insert into Messages VALUES ('password_changed','Your worthy password,
successfully has been changed.
You''r on the safe side.','Pasword changed!','<a href="/!login/">Login</a>');
insert into Messages VALUES ('change_different','Passwords different.
Only perfect spellers may
change their password.','Not matching passwords!',NULL);
insert into Messages VALUES ('change_password','Your present password,
you must provide as evidence
of your intentions.','Password does not match!',NULL);
insert into Messages VALUES ('email_activation_sent','The secret token
was sent to your new email.
To check the channel.','Check your mailbox!',NULL);
insert into Messages VALUES ('email_changed','The new address to send
a messages will never change
the old relationship.','E-mail has been changed!','<a href="/">Home</a>');
insert into Messages VALUES ('error_cant_delete','You can''t delete it,
still have no privileges.
Or have no longer.','Missing privileges!',NULL);
insert into Messages VALUES ('only_for_admins','Too dangerous place.
Not allowed to enter right now.
Maybe some day...
','For administrators only!','<a href="/">Home</a>');
insert into Messages VALUES ('missing_query','Looking for something,
Unknown but so desired.
Do meditate first.
','What are you looking for?',NULL);
insert into Messages VALUES ('cant_read','Knocking on the door
Please introduce yourself.
Are you expected?
','Private place!','<a href="/!login">Login first</a>');
insert into Messages VALUES ('closed_registration','This very place
Is not a place for you.
Go elsewhere now.
','Closed forum!','<a href="https://duckduckgo.com">A good place to start</a>');
create table ScratchPad (
name text primary key not null,
source text
);
create table ChatLog (
id integer primary key autoincrement,
time integer,
user text,
original text,
Message text
);
create table EventSessions (
session text primary key not null,
username text,
original text,
status integer,
events integer default 0
) without rowid;
create table EventQueue (
id integer primary key autoincrement,
type integer,
event text,
receiver text -- the sessionID of the receiver. If NULL then broadcast to all subscribed.
);
COMMIT;

Some files were not shown because too many files have changed in this diff Show More