[ "?good" >url <redirect> ] >>submit
{ recaptcha-app "example" } >>template ;
+: <test-recaptcha> ( responder -- recaptcha )
+ <recaptcha>
+ "concatenative.org" >>domain
+ "6LeJWQgAAAAAAFlYV7SuBClE9uSpGtV_ZS-qVON7" >>public-key
+ "6LeJWQgAAAAAALh-XJgSSQ6xKygRgJ8-029Ip2Xv" >>private-key ;
+
: <recaptcha-app> ( -- obj )
\ recaptcha-app new-dispatcher
<recaptcha-challenge> "" add-responder
- <recaptcha>
- "concatenative.org" >>domain
- "6LeJWQgAAAAAAFlYV7SuBClE9uSpGtV_ZS-qVON7" >>public-key
- "6LeJWQgAAAAAALh-XJgSSQ6xKygRgJ8-029Ip2Xv" >>private-key
+ <test-recaptcha>
recaptcha-db <alloy> ;
--- /dev/null
+USING: accessors calendar db db.sqlite db.tuples furnace.alloy
+furnace.recaptcha.example http.server io.directories
+io.encodings.ascii io.files io.files.temp io.servers
+io.sockets.secure.debug kernel namespaces sequences splitting
+webapps.wiki websites.concatenative ;
+IN: webapps.wiki.example
+
+: wiki-db ( -- db )
+ "wiki.db" temp-file <sqlite-db> ;
+
+: insert-page ( file-name -- )
+ dup ".txt" ?tail [
+ swap ascii file-contents
+ f <revision>
+ swap >>content
+ swap >>title
+ "slava" >>author
+ now >>date
+ add-revision
+ ] [ 2drop ] if ;
+
+: insert-pages ( -- )
+ "resource:extra/webapps/wiki/initial-content" [
+ [ insert-page ] each
+ ] with-directory-files ;
+
+: init-wiki-db ( -- )
+ wiki-db [
+ init-furnace-tables
+ article ensure-table
+ revision ensure-table
+ insert-pages
+ ] with-db ;
+
+: <wiki-app> ( -- dispatcher )
+ <wiki>
+ <test-recaptcha>
+ <login-config>
+ <factor-boilerplate>
+ wiki-db <alloy> ;
+
+: <wiki-website-server> ( -- threaded-server )
+ <http-server>
+ <test-secure-config> >>secure-config
+ 8080 >>insecure
+ 8431 >>secure ;
+
+: run-wiki ( -- )
+ init-wiki-db
+ <wiki-app> main-responder set-global
+ wiki-db start-expiring
+ <wiki-website-server> start-server drop ;
+
+MAIN: run-wiki
<boilerplate>
[ init-sidebars init-relative-link-prefix ] >>init
{ wiki "wiki-common" } >>template ;
-
-: init-wiki ( -- )
- "resource:extra/webapps/wiki/initial-content" [
- [
- dup ".txt" ?tail [
- swap ascii file-contents
- f <revision>
- swap >>content
- swap >>title
- "slava" >>author
- now >>date
- add-revision
- ] [ 2drop ] if
- ] each
- ] with-directory-files ;