version 0.3.33
[fms.git] / src / optionssetup.cpp
1 #include "../include/optionssetup.h"\r
2 #include "../include/db/sqlite3db.h"\r
3 #include "../include/global.h"\r
4 \r
5 #include <Poco/Message.h>\r
6 \r
7 #include <string>\r
8 #include <sstream>\r
9 \r
10 void SetupDefaultOptions(SQLite3DB::DB *db)\r
11 {\r
12         // OptionValue should always be inserted as a string, even if the option really isn't a string - just to keep the field data type consistent\r
13 \r
14         db->Execute("BEGIN;");\r
15 \r
16         std::ostringstream tempstr;     // must set tempstr to "" between db inserts\r
17         SQLite3DB::Statement st=db->Prepare("INSERT INTO tblOption(Option,OptionValue) VALUES(?,?);");\r
18         SQLite3DB::Statement upd=db->Prepare("UPDATE tblOption SET Section=?, SortOrder=?, ValidValues=?, OptionDescription=?, DisplayType=?, DisplayParam1=?, DisplayParam2=?, Mode=? WHERE Option=?;");\r
19         int order=0;\r
20 \r
21         // LogLevel\r
22         tempstr.str("");\r
23         tempstr << Poco::Message::PRIO_DEBUG;\r
24         st.Bind(0,"LogLevel");\r
25         st.Bind(1,tempstr.str());\r
26         st.Step();\r
27         st.Reset();\r
28         upd.Bind(0,"Program");\r
29         upd.Bind(1,order++);\r
30         upd.Bind(2,"1|1 - Fatal Errors|2|2 - Critical Errors|3|3 - Errors|4|4 - Warnings|5|5 - Notices|6|6 - Informational Messages|7|7 - Debug Messages|8|8 - Trace Messages");\r
31         upd.Bind(3,"The maximum logging level that will be written to file.  Higher levels will include all messages from the previous levels.");\r
32         upd.Bind(4,"select");\r
33         upd.Bind(5);\r
34         upd.Bind(6);\r
35         upd.Bind(7,"simple");\r
36         upd.Bind(8,"LogLevel");\r
37         upd.Step();\r
38         upd.Reset();\r
39 \r
40         st.Bind(0,"VacuumOnStartup");\r
41         st.Bind(1,"false");\r
42         st.Step();\r
43         st.Reset();\r
44         upd.Bind(0,"Program");\r
45         upd.Bind(1,order++);\r
46         upd.Bind(2,"true|true|false|false");\r
47         upd.Bind(3,"VACUUM the database every time FMS starts.  This will defragment the free space in the database and create a smaller database file.  Vacuuming the database can be CPU and disk intensive.");\r
48         upd.Bind(4,"select");\r
49         upd.Bind(5);\r
50         upd.Bind(6);\r
51         upd.Bind(7,"simple");\r
52         upd.Bind(8,"VacuumOnStartup");\r
53         upd.Step();\r
54         upd.Reset();\r
55 \r
56         st.Bind(0,"MessageBase");\r
57         st.Bind(1,"fms");\r
58         st.Step();\r
59         st.Reset();\r
60         upd.Bind(0,"Program");\r
61         upd.Bind(1,order++);\r
62         upd.Bind(2);\r
63         upd.Bind(3,"A unique string shared by all clients who want to communicate with each other.  This should not be changed unless you want to create your own separate communications network.");\r
64         upd.Bind(4,"textbox");\r
65         upd.Bind(5);\r
66         upd.Bind(6);\r
67         upd.Bind(7,"advanced");\r
68         upd.Bind(8,"MessageBase");\r
69         upd.Step();\r
70         upd.Reset();\r
71 \r
72         st.Bind(0,"FMSVersionKey");\r
73         st.Bind(1,"USK@0npnMrqZNKRCRoGojZV93UNHCMN-6UU3rRSAmP6jNLE,~BG-edFtdCC1cSH4O3BWdeIYa8Sw5DfyrSV-TKdO5ec,AQACAAE/fmsversion/");\r
74         st.Step();\r
75         st.Reset();\r
76         upd.Bind(0,"Program");\r
77         upd.Bind(1,order++);\r
78         upd.Bind(2);\r
79         upd.Bind(3,"The USK key which contains information about the latest version of FMS.");\r
80         upd.Bind(4,"textbox");\r
81         upd.Bind(5,"80");\r
82         upd.Bind(6);\r
83         upd.Bind(7,"advanced");\r
84         upd.Bind(8,"FMSVersionKey");\r
85         upd.Step();\r
86         upd.Reset();\r
87 \r
88         st.Bind(0,"FMSVersionEdition");\r
89         st.Bind(1,FMS_VERSION_EDITION);\r
90         st.Step();\r
91         st.Reset();\r
92         upd.Bind(0,"Program");\r
93         upd.Bind(1,order++);\r
94         upd.Bind(2);\r
95         upd.Bind(3,"The latest found edition of the FMS version USK.");\r
96         upd.Bind(4,"textbox");\r
97         upd.Bind(5);\r
98         upd.Bind(6);\r
99         upd.Bind(7,"advanced");\r
100         upd.Bind(8,"FMSVersionEdition");\r
101         upd.Step();\r
102         upd.Reset();\r
103 \r
104         // StartNNTP\r
105         st.Bind(0,"StartNNTP");\r
106         st.Bind(1,"true");\r
107         st.Step();\r
108         st.Reset();\r
109         upd.Bind(0,"NNTP Server");\r
110         upd.Bind(1,order++);\r
111         upd.Bind(2,"true|true|false|false");\r
112         upd.Bind(3,"Start NNTP server.");\r
113         upd.Bind(4,"select");\r
114         upd.Bind(5);\r
115         upd.Bind(6);\r
116         upd.Bind(7,"simple");\r
117         upd.Bind(8,"StartNNTP");\r
118         upd.Step();\r
119         upd.Reset();\r
120 \r
121         // NNTPListenPort\r
122         st.Bind(0,"NNTPListenPort");\r
123         st.Bind(1,"1119");\r
124         st.Step();\r
125         st.Reset();\r
126         upd.Bind(0,"NNTP Server");\r
127         upd.Bind(1,order++);\r
128         upd.Bind(2);\r
129         upd.Bind(3,"The port that the NNTP service will listen for incoming connections.");\r
130         upd.Bind(4,"textbox");\r
131         upd.Bind(5);\r
132         upd.Bind(6);\r
133         upd.Bind(7,"simple");\r
134         upd.Bind(8,"NNTPListenPort");\r
135         upd.Step();\r
136         upd.Reset();\r
137 \r
138         // NNTPBindAddresses\r
139         st.Bind(0,"NNTPBindAddresses");\r
140         st.Bind(1,"localhost,127.0.0.1");\r
141         st.Step();\r
142         st.Reset();\r
143         upd.Bind(0,"NNTP Server");\r
144         upd.Bind(1,order++);\r
145         upd.Bind(2);\r
146         upd.Bind(3,"A comma separated list of valid IPv4 or IPv6 addresses/hostnames that the NNTP service will try to bind to.");\r
147         upd.Bind(4,"textbox");\r
148         upd.Bind(5);\r
149         upd.Bind(6);\r
150         upd.Bind(7,"simple");\r
151         upd.Bind(8,"NNTPBindAddresses");\r
152         upd.Step();\r
153         upd.Reset();\r
154 \r
155         st.Bind(0,"NNTPAllowPost");\r
156         st.Bind(1,"true");\r
157         st.Step();\r
158         st.Reset();\r
159         upd.Bind(0,"NNTP Server");\r
160         upd.Bind(1,order++);\r
161         upd.Bind(2,"true|true|false|false");\r
162         upd.Bind(3,"Allow posting messages from NNTP.  Setting to false will make the newsgroups read only.");\r
163         upd.Bind(4,"select");\r
164         upd.Bind(5);\r
165         upd.Bind(6);\r
166         upd.Bind(7,"simple");\r
167         upd.Bind(8,"NNTPAllowPost");\r
168         upd.Step();\r
169         upd.Reset();\r
170 \r
171         st.Bind(0,"StartHTTP");\r
172         st.Bind(1,"true");\r
173         st.Step();\r
174         st.Reset();\r
175         upd.Bind(0,"HTTP Server");\r
176         upd.Bind(1,order++);\r
177         upd.Bind(2,"true|true|false|false");\r
178         upd.Bind(3,"Start HTTP server.  WARNING: If you turn this off, you won't be able to access the administration pages.");\r
179         upd.Bind(4,"select");\r
180         upd.Bind(5);\r
181         upd.Bind(6);\r
182         upd.Bind(7,"simple");\r
183         upd.Bind(8,"StartHTTP");\r
184         upd.Step();\r
185         upd.Reset();\r
186 \r
187         st.Bind(0,"HTTPListenPort");\r
188         st.Bind(1,"8080");\r
189         st.Step();\r
190         st.Reset();\r
191         upd.Bind(0,"HTTP Server");\r
192         upd.Bind(1,order++);\r
193         upd.Bind(2);\r
194         upd.Bind(3,"Port HTTP server will listen on.");\r
195         upd.Bind(4,"textbox");\r
196         upd.Bind(5);\r
197         upd.Bind(6);\r
198         upd.Bind(7,"simple");\r
199         upd.Bind(8,"HTTPListenPort");\r
200         upd.Step();\r
201         upd.Reset();\r
202 \r
203         st.Bind(0,"HTTPAccessControl");\r
204         st.Bind(1,"-0.0.0.0/0,+127.0.0.1");\r
205         st.Step();\r
206         st.Reset();\r
207         upd.Bind(0,"HTTP Server");\r
208         upd.Bind(1,order++);\r
209         upd.Bind(2);\r
210         upd.Bind(3,"Comma separated list of addresses and/or subnet masks that are allowed access to the administration pages.  Default is localhost only. + allows a host, - denies a host.");\r
211         upd.Bind(4,"textbox");\r
212         upd.Bind(5);\r
213         upd.Bind(6);\r
214         upd.Bind(7,"simple");\r
215         upd.Bind(8,"HTTPAccessControl");\r
216         upd.Step();\r
217         upd.Reset();\r
218 \r
219         // StartFreenetUpdater\r
220         st.Bind(0,"StartFreenetUpdater");\r
221         st.Bind(1,"true");\r
222         st.Step();\r
223         st.Reset();\r
224         upd.Bind(0,"Freenet Connection");\r
225         upd.Bind(1,order++);\r
226         upd.Bind(2,"true|true|false|false");\r
227         upd.Bind(3,"Set to true to start the Freenet Updater thread and connect to Freenet.  Set to false to prevent communication with Freenet.");\r
228         upd.Bind(4,"select");\r
229         upd.Bind(5);\r
230         upd.Bind(6);\r
231         upd.Bind(7,"simple");\r
232         upd.Bind(8,"StartFreenetUpdater");\r
233         upd.Step();\r
234         upd.Reset();\r
235 \r
236         // FCPHost\r
237         st.Bind(0,"FCPHost");\r
238         st.Bind(1,"127.0.0.1");\r
239         st.Step();\r
240         st.Reset();\r
241         upd.Bind(0,"Freenet Connection");\r
242         upd.Bind(1,order++);\r
243         upd.Bind(2);\r
244         upd.Bind(3,"Host name or address of Freenet node.");\r
245         upd.Bind(4,"textbox");\r
246         upd.Bind(5);\r
247         upd.Bind(6);\r
248         upd.Bind(7,"simple");\r
249         upd.Bind(8,"FCPHost");\r
250         upd.Step();\r
251         upd.Reset();\r
252 \r
253         // FCPPort\r
254         st.Bind(0,"FCPPort");\r
255         st.Bind(1,"9481");\r
256         st.Step();\r
257         st.Reset();\r
258         upd.Bind(0,"Freenet Connection");\r
259         upd.Bind(1,order++);\r
260         upd.Bind(2);\r
261         upd.Bind(3,"The port that Freenet is listening for FCP connections on.");\r
262         upd.Bind(4,"textbox");\r
263         upd.Bind(5);\r
264         upd.Bind(6);\r
265         upd.Bind(7,"simple");\r
266         upd.Bind(8,"FCPPort");\r
267         upd.Step();\r
268         upd.Reset();\r
269 \r
270         st.Bind(0,"FProxyPort");\r
271         st.Bind(1,"8888");\r
272         st.Step();\r
273         st.Reset();\r
274         upd.Bind(0,"Freenet Connection");\r
275         upd.Bind(1,order++);\r
276         upd.Bind(2);\r
277         upd.Bind(3,"The port that Freenet is listening for http connections on.");\r
278         upd.Bind(4,"textbox");\r
279         upd.Bind(5);\r
280         upd.Bind(6);\r
281         upd.Bind(7,"simple");\r
282         upd.Bind(8,"FProxyPort");\r
283         upd.Step();\r
284         upd.Reset();\r
285 \r
286         st.Bind(0,"MaxIdentityRequests");\r
287         st.Bind(1,"5");\r
288         st.Step();\r
289         st.Reset();\r
290         upd.Bind(0,"Requests");\r
291         upd.Bind(1,order++);\r
292         upd.Bind(2);\r
293         upd.Bind(3,"Maximum number of concurrent requests for new Identity xml files");\r
294         upd.Bind(4,"textbox");\r
295         upd.Bind(5);\r
296         upd.Bind(6);\r
297         upd.Bind(7,"advanced");\r
298         upd.Bind(8,"MaxIdentityRequests");\r
299         upd.Step();\r
300         upd.Reset();\r
301 \r
302         st.Bind(0,"MaxIdentityIntroductionRequests");\r
303         st.Bind(1,"5");\r
304         st.Step();\r
305         st.Reset();\r
306         upd.Bind(0,"Requests");\r
307         upd.Bind(1,order++);\r
308         upd.Bind(2);\r
309         upd.Bind(3,"Maximum number of concurrent identities requesting IdentityIntroduction xml files.  Each identity may have multiple requests pending.");\r
310         upd.Bind(4,"textbox");\r
311         upd.Bind(5);\r
312         upd.Bind(6);\r
313         upd.Bind(7,"advanced");\r
314         upd.Bind(8,"MaxIdentityIntroductionRequests");\r
315         upd.Step();\r
316         upd.Reset();\r
317 \r
318         st.Bind(0,"MaxIntroductionPuzzleRequests");\r
319         st.Bind(1,"5");\r
320         st.Step();\r
321         st.Reset();\r
322         upd.Bind(0,"Requests");\r
323         upd.Bind(1,order++);\r
324         upd.Bind(2);\r
325         upd.Bind(3,"Maximum number of concurrent requests for new IntroductionPuzzle xml files");\r
326         upd.Bind(4,"textbox");\r
327         upd.Bind(5);\r
328         upd.Bind(6);\r
329         upd.Bind(7,"advanced");\r
330         upd.Bind(8,"MaxIntroductionPuzzleRequests");\r
331         upd.Step();\r
332         upd.Reset();\r
333 \r
334         st.Bind(0,"MaxTrustListRequests");\r
335         st.Bind(1,"5");\r
336         st.Step();\r
337         st.Reset();\r
338         upd.Bind(0,"Requests");\r
339         upd.Bind(1,order++);\r
340         upd.Bind(2);\r
341         upd.Bind(3,"Maximum number of concurrent requests for new Trust Lists");\r
342         upd.Bind(4,"textbox");\r
343         upd.Bind(5);\r
344         upd.Bind(6);\r
345         upd.Bind(7,"advanced");\r
346         upd.Bind(8,"MaxTrustListRequests");\r
347         upd.Step();\r
348         upd.Reset();\r
349 \r
350         st.Bind(0,"MaxMessageListRequests");\r
351         st.Bind(1,"5");\r
352         st.Step();\r
353         st.Reset();\r
354         upd.Bind(0,"Requests");\r
355         upd.Bind(1,order++);\r
356         upd.Bind(2);\r
357         upd.Bind(3,"Maximum number of concurrent requests for new Message Lists");\r
358         upd.Bind(4,"textbox");\r
359         upd.Bind(5);\r
360         upd.Bind(6);\r
361         upd.Bind(7,"advanced");\r
362         upd.Bind(8,"MaxMessageListRequests");\r
363         upd.Step();\r
364         upd.Reset();\r
365 \r
366         st.Bind(0,"MaxMessageRequests");\r
367         st.Bind(1,"20");\r
368         st.Step();\r
369         st.Reset();\r
370         upd.Bind(0,"Requests");\r
371         upd.Bind(1,order++);\r
372         upd.Bind(2);\r
373         upd.Bind(3,"Maximum number of concurrent requests for new Messages");\r
374         upd.Bind(4,"textbox");\r
375         upd.Bind(5);\r
376         upd.Bind(6);\r
377         upd.Bind(7,"advanced");\r
378         upd.Bind(8,"MaxMessageRequests");\r
379         upd.Step();\r
380         upd.Reset();\r
381 \r
382         st.Bind(0,"MaxBoardListRequests");\r
383         st.Bind(1,"5");\r
384         st.Step();\r
385         st.Reset();\r
386         upd.Bind(0,"Requests");\r
387         upd.Bind(1,order++);\r
388         upd.Bind(2);\r
389         upd.Bind(3,"The maximum number of concurrent requests for new Board Lists.  Set to 0 to disable.");\r
390         upd.Bind(4,"textbox");\r
391         upd.Bind(5);\r
392         upd.Bind(6);\r
393         upd.Bind(7,"advanced");\r
394         upd.Bind(8,"MaxBoardListRequests");\r
395         upd.Step();\r
396         upd.Reset();\r
397 \r
398         st.Bind(0,"MaxFailureCount");\r
399         st.Bind(1,"1000");\r
400         st.Step();\r
401         st.Reset();\r
402         upd.Bind(0,"Requests");\r
403         upd.Bind(1,order++);\r
404         upd.Bind(2);\r
405         upd.Bind(3,"The maximum number of failed message requests an identity must accumulate before you will completely ignore an identity.  Request failures can happen even under the best circumstances, and may accumulate rapidly, so it is best to keep this at a high level to avoid false positives.");\r
406         upd.Bind(4,"textbox");\r
407         upd.Bind(5);\r
408         upd.Bind(6);\r
409         upd.Bind(7,"advanced");\r
410         upd.Bind(8,"MaxFailureCount");\r
411         upd.Step();\r
412         upd.Reset();\r
413 \r
414         st.Bind(0,"FailureCountReduction");\r
415         st.Bind(1,"500");\r
416         st.Step();\r
417         st.Reset();\r
418         upd.Bind(0,"Requests");\r
419         upd.Bind(1,order++);\r
420         upd.Bind(2);\r
421         upd.Bind(3,"Each identity's failure count will be reduced by this amount every day.");\r
422         upd.Bind(4,"textbox");\r
423         upd.Bind(5);\r
424         upd.Bind(6);\r
425         upd.Bind(7,"advanced");\r
426         upd.Bind(8,"FailureCountReduction");\r
427         upd.Step();\r
428         upd.Reset();\r
429 \r
430         st.Bind(0,"MinLocalMessageTrust");\r
431         st.Bind(1,"50");\r
432         st.Step();\r
433         st.Reset();\r
434         upd.Bind(0,"Trust");\r
435         upd.Bind(1,order++);\r
436         upd.Bind(2);\r
437         upd.Bind(3,"Specifies a local message trust level that a peer must have before its messages will be downloaded.");\r
438         upd.Bind(4,"textbox");\r
439         upd.Bind(5);\r
440         upd.Bind(6);\r
441         upd.Bind(7,"simple");\r
442         upd.Bind(8,"MinLocalMessageTrust");\r
443         upd.Step();\r
444         upd.Reset();\r
445 \r
446         st.Bind(0,"MinPeerMessageTrust");\r
447         st.Bind(1,"30");\r
448         st.Step();\r
449         st.Reset();\r
450         upd.Bind(0,"Trust");\r
451         upd.Bind(1,order++);\r
452         upd.Bind(2);\r
453         upd.Bind(3,"Specifies a peer message trust level that a peer must have before its messages will be downloaded.");\r
454         upd.Bind(4,"textbox");\r
455         upd.Bind(5);\r
456         upd.Bind(6);\r
457         upd.Bind(7,"simple");\r
458         upd.Bind(8,"MinPeerMessageTrust");\r
459         upd.Step();\r
460         upd.Reset();\r
461 \r
462         st.Bind(0,"MinLocalTrustListTrust");\r
463         st.Bind(1,"50");\r
464         st.Step();\r
465         st.Reset();\r
466         upd.Bind(0,"Trust");\r
467         upd.Bind(1,order++);\r
468         upd.Bind(2);\r
469         upd.Bind(3,"Specifies a local trust list trust level that a peer must have before its trust list will be included in the weighted average.  Any peers below this number will be excluded from the results.");\r
470         upd.Bind(4,"textbox");\r
471         upd.Bind(5);\r
472         upd.Bind(6);\r
473         upd.Bind(7,"simple");\r
474         upd.Bind(8,"MinLocalTrustListTrust");\r
475         upd.Step();\r
476         upd.Reset();\r
477 \r
478         st.Bind(0,"MinPeerTrustListTrust");\r
479         st.Bind(1,"30");\r
480         st.Step();\r
481         st.Reset();\r
482         upd.Bind(0,"Trust");\r
483         upd.Bind(1,order++);\r
484         upd.Bind(2);\r
485         upd.Bind(3,"Specifies a peer trust list trust level that a peer must have before its trust list will be included in the weighted average.  Any peers below this number will be excluded from the results.");\r
486         upd.Bind(4,"textbox");\r
487         upd.Bind(5);\r
488         upd.Bind(6);\r
489         upd.Bind(7,"simple");\r
490         upd.Bind(8,"MinPeerTrustListTrust");\r
491         upd.Step();\r
492         upd.Reset();\r
493 \r
494         st.Bind(0,"LocalTrustOverridesPeerTrust");\r
495         st.Bind(1,"false");\r
496         st.Step();\r
497         st.Reset();\r
498         upd.Bind(0,"Trust");\r
499         upd.Bind(1,order++);\r
500         upd.Bind(2,"true|true|false|false");\r
501         upd.Bind(3,"Set to true if you want your local trust levels to override the peer levels when determining which identities you will poll.");\r
502         upd.Bind(4,"select");\r
503         upd.Bind(5);\r
504         upd.Bind(6);\r
505         upd.Bind(7,"simple");\r
506         upd.Bind(8,"LocalTrustOverridesPeerTrust");\r
507         upd.Step();\r
508         upd.Reset();\r
509 \r
510         st.Bind(0,"MessageDownloadMaxDaysBackward");\r
511         st.Bind(1,"5");\r
512         st.Step();\r
513         st.Reset();\r
514         upd.Bind(0,"Messages");\r
515         upd.Bind(1,order++);\r
516         upd.Bind(2);\r
517         upd.Bind(3,"The maximum number of days backward that messages will be downloaded from each identity");\r
518         upd.Bind(4,"textbox");\r
519         upd.Bind(5);\r
520         upd.Bind(6);\r
521         upd.Bind(7,"simple");\r
522         upd.Bind(8,"MessageDownloadMaxDaysBackward");\r
523         upd.Step();\r
524         upd.Reset();\r
525 \r
526         st.Bind(0,"MessageListDaysBackward");\r
527         st.Bind(1,"5");\r
528         st.Step();\r
529         st.Reset();\r
530         upd.Bind(0,"Messages");\r
531         upd.Bind(1,order++);\r
532         upd.Bind(2);\r
533         upd.Bind(3,"The number of days backward that messages you have inserted will appear in your MessageLists");\r
534         upd.Bind(4,"textbox");\r
535         upd.Bind(5);\r
536         upd.Bind(6);\r
537         upd.Bind(7,"simple");\r
538         upd.Bind(8,"MessageListDaysBackward");\r
539         upd.Step();\r
540         upd.Reset();\r
541 \r
542         st.Bind(0,"MaxPeerMessagesPerDay");\r
543         st.Bind(1,"200");\r
544         st.Step();\r
545         st.Reset();\r
546         upd.Bind(0,"Messages");\r
547         upd.Bind(1,order++);\r
548         upd.Bind(2);\r
549         upd.Bind(3,"The maximum number of messages you will download from each peer on a given day.");\r
550         upd.Bind(4,"textbox");\r
551         upd.Bind(5);\r
552         upd.Bind(6);\r
553         upd.Bind(7,"simple");\r
554         upd.Bind(8,"MaxPeerMessagesPerDay");\r
555         upd.Step();\r
556         upd.Reset();\r
557 \r
558         st.Bind(0,"MaxBoardsPerMessage");\r
559         st.Bind(1,"8");\r
560         st.Step();\r
561         st.Reset();\r
562         upd.Bind(0,"Messages");\r
563         upd.Bind(1,order++);\r
564         upd.Bind(2);\r
565         upd.Bind(3,"The maximum number of boards a received message may be sent to.  Boards over this limit will be ignored.");\r
566         upd.Bind(4,"textbox");\r
567         upd.Bind(5);\r
568         upd.Bind(6);\r
569         upd.Bind(7,"simple");\r
570         upd.Bind(8,"MaxBoardsPerMessage");\r
571         upd.Step();\r
572         upd.Reset();\r
573 \r
574         st.Bind(0,"SaveMessagesFromNewBoards");\r
575         st.Bind(1,"true");\r
576         st.Step();\r
577         st.Reset();\r
578         upd.Bind(0,"Messages");\r
579         upd.Bind(1,order++);\r
580         upd.Bind(2,"true|true|false|false");\r
581         upd.Bind(3,"Set to true to automatically save messages posted to new boards.  Set to false to ignore messages to new boards.");\r
582         upd.Bind(4,"select");\r
583         upd.Bind(5);\r
584         upd.Bind(6);\r
585         upd.Bind(7,"simple");\r
586         upd.Bind(8,"SaveMessagesFromNewBoards");\r
587         upd.Step();\r
588         upd.Reset();\r
589 \r
590         st.Bind(0,"ChangeMessageTrustOnReply");\r
591         st.Bind(1,"0");\r
592         st.Step();\r
593         st.Reset();\r
594         upd.Bind(0,"Messages");\r
595         upd.Bind(1,order++);\r
596         upd.Bind(2);\r
597         upd.Bind(3,"How much the local message trust level of an identity should change when you reply to one of their messages.");\r
598         upd.Bind(4,"textbox");\r
599         upd.Bind(5);\r
600         upd.Bind(6);\r
601         upd.Bind(7,"simple");\r
602         upd.Bind(8,"ChangeMessageTrustOnReply");\r
603         upd.Step();\r
604         upd.Reset();\r
605 \r
606         st.Bind(0,"AddNewPostFromIdentities");\r
607         st.Bind(1,"false");\r
608         st.Step();\r
609         st.Reset();\r
610         upd.Bind(0,"Messages");\r
611         upd.Bind(1,order++);\r
612         upd.Bind(2,"true|true|false|false");\r
613         upd.Bind(3,"Set to true to automatically create new identities when you send a message using a new name.  If you set this to false, posting messages will fail until you manually create the identity.");\r
614         upd.Bind(4,"select");\r
615         upd.Bind(5);\r
616         upd.Bind(6);\r
617         upd.Bind(7,"simple");\r
618         upd.Bind(8,"AddNewPostFromIdentities");\r
619         upd.Step();\r
620         upd.Reset();\r
621 \r
622         st.Bind(0,"DeleteMessagesOlderThan");\r
623         st.Bind(1,"180");\r
624         st.Step();\r
625         st.Reset();\r
626         upd.Bind(0,"Messages");\r
627         upd.Bind(1,order++);\r
628         upd.Bind(2);\r
629         upd.Bind(3,"Automatically delete messages older than this many days.");\r
630         upd.Bind(4,"textbox");\r
631         upd.Bind(5);\r
632         upd.Bind(6);\r
633         upd.Bind(7,"simple");\r
634         upd.Bind(8,"DeleteMessagesOlderThan");\r
635         upd.Step();\r
636         upd.Reset();\r
637 \r
638 #ifdef FROST_SUPPORT\r
639 \r
640         st.Bind(0,"DownloadFrostMessages");\r
641         st.Bind(1,"false");\r
642         st.Step();\r
643         st.Reset();\r
644         upd.Bind(0,"Frost Support");\r
645         upd.Bind(1,order++);\r
646         upd.Bind(2,"true|true|false|false");\r
647         upd.Bind(3,"Enable downloading of Frost messages.");\r
648         upd.Bind(4,"select");\r
649         upd.Bind(5);\r
650         upd.Bind(6);\r
651         upd.Bind(7,"simple");\r
652         upd.Bind(8,"DownloadFrostMessages");\r
653         upd.Step();\r
654         upd.Reset();\r
655 \r
656         st.Bind(0,"FrostMessageBase");\r
657         st.Bind(1,"frost");\r
658         st.Step();\r
659         st.Reset();\r
660         upd.Bind(0,"Frost Support");\r
661         upd.Bind(1,order++);\r
662         upd.Bind(2);\r
663         upd.Bind(3,"A unique string used by Frost clients who want to communicate with each other.");\r
664         upd.Bind(4,"textbox");\r
665         upd.Bind(5);\r
666         upd.Bind(6);\r
667         upd.Bind(7,"advanced");\r
668         upd.Bind(8,"FrostMessageBase");\r
669         upd.Step();\r
670         upd.Reset();\r
671 \r
672         st.Bind(0,"FrostBoardPrefix");\r
673         st.Bind(1,"frost.");\r
674         st.Step();\r
675         st.Reset();\r
676         upd.Bind(0,"Frost Support");\r
677         upd.Bind(1,order++);\r
678         upd.Bind(2);\r
679         upd.Bind(3,"Messages to boards defined in FMS with this prefix will be downloaded from Frost.  You must manually add boards with this prefix to FMS to download Frost messages from those boards.  The prefix is removed to determine the name of the Frost board to download messages from.");\r
680         upd.Bind(4,"textbox");\r
681         upd.Bind(5);\r
682         upd.Bind(6);\r
683         upd.Bind(7,"advanced");\r
684         upd.Bind(8,"FrostBoardPrefix");\r
685         upd.Step();\r
686         upd.Reset();\r
687 \r
688         st.Bind(0,"FrostSaveAnonymousMessages");\r
689         st.Bind(1,"true");\r
690         st.Step();\r
691         st.Reset();\r
692         upd.Bind(0,"Frost Support");\r
693         upd.Bind(1,order++);\r
694         upd.Bind(2,"true|true|false|false");\r
695         upd.Bind(3,"Save Frost messages posted by Anonymous authors.");\r
696         upd.Bind(4,"select");\r
697         upd.Bind(5);\r
698         upd.Bind(6);\r
699         upd.Bind(7,"simple");\r
700         upd.Bind(8,"FrostSaveAnonymousMessages");\r
701         upd.Step();\r
702         upd.Reset();\r
703 \r
704         st.Bind(0,"FrostMessageMaxDaysBackward");\r
705         st.Bind(1,"5");\r
706         st.Step();\r
707         st.Reset();\r
708         upd.Bind(0,"Frost Support");\r
709         upd.Bind(1,order++);\r
710         upd.Bind(2);\r
711         upd.Bind(3,"The maximum number of days backward that Frost messages will be downloaded.");\r
712         upd.Bind(4,"textbox");\r
713         upd.Bind(5);\r
714         upd.Bind(6);\r
715         upd.Bind(7,"simple");\r
716         upd.Bind(8,"FrostMessageMaxDaysBackward");\r
717         upd.Step();\r
718         upd.Reset();\r
719 \r
720         st.Bind(0,"FrostMaxMessageRequests");\r
721         st.Bind(1,"20");\r
722         st.Step();\r
723         st.Reset();\r
724         upd.Bind(0,"Frost Support");\r
725         upd.Bind(1,order++);\r
726         upd.Bind(2);\r
727         upd.Bind(3,"The maximum number of concurrent requests for new Frost messages.");\r
728         upd.Bind(4,"textbox");\r
729         upd.Bind(5);\r
730         upd.Bind(6);\r
731         upd.Bind(7,"simple");\r
732         upd.Bind(8,"FrostMaxMessageRequests");\r
733         upd.Step();\r
734         upd.Reset();\r
735 \r
736 #endif  // FROST_SUPPORT\r
737 \r
738         db->Execute("COMMIT;");\r
739 \r
740 }\r