1 ! Copyright (c) 2008 Slava Pestov
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors kernel sequences assocs io.files io.pathnames
4 io.sockets io.sockets.secure io.servers.connection
5 namespaces db db.tuples db.sqlite smtp urls
9 http.server.dispatchers
10 http.server.redirection
15 furnace.auth.providers.db
16 furnace.auth.features.edit-profile
17 furnace.auth.features.recover-password
18 furnace.auth.features.registration
19 furnace.auth.features.deactivate-user
28 IN: websites.concatenative
30 : test-db ( -- db ) "resource:test.db" <sqlite-db> ;
32 : init-factor-db ( -- )
43 TUPLE: factor-website < dispatcher ;
45 : <factor-boilerplate> ( responder -- responder' )
47 { factor-website "page" } >>template ;
49 : <login-config> ( responder -- responder' )
50 "Factor website" <login-realm>
51 "Factor website" >>name
53 allow-password-recovery
57 : <factor-website> ( -- responder )
58 factor-website new-dispatcher
59 URL" /wiki/view/Front Page" <redirect-responder> "" add-responder ;
65 : common-configuration ( -- )
66 "concatenative.org" 25 <inet> smtp-server set-global
67 "noreply@concatenative.org" lost-password-from set-global
68 "website@concatenative.org" insomniac-sender set-global
69 { "slava@factorcode.org" } insomniac-recipients set-global
73 "vocab:openssl/test/dh1024.pem" dh-file set-global
74 "vocab:openssl/test/server.pem" key-file set-global
75 "password" key-password set-global
78 <wiki> <login-config> <factor-boilerplate> "wiki" add-responder
79 <user-admin> <login-config> <factor-boilerplate> "user-admin" add-responder
80 <pastebin> <login-config> <factor-boilerplate> "pastebin" add-responder
81 <planet> <login-config> <factor-boilerplate> "planet" add-responder
82 "/tmp/docs/" <help-webapp> "docs" add-responder
84 main-responder set-global ;
86 : <gitweb> ( path -- responder )
88 swap <static> enable-cgi >>default
89 URL" /gitweb.cgi" <redirect-responder> "" add-responder ;
91 : init-production ( -- )
94 <factor-website> <wiki> <login-config> <factor-boilerplate> "wiki" add-responder test-db <alloy> "concatenative.org" add-responder
95 <pastebin> <login-config> <factor-boilerplate> test-db <alloy> "paste.factorcode.org" add-responder
96 <planet> <login-config> <factor-boilerplate> test-db <alloy> "planet.factorcode.org" add-responder
97 home "docs" append-path <help-webapp> test-db <alloy> "docs.factorcode.org" add-responder
98 home "cgi" append-path <gitweb> "gitweb.factorcode.org" add-responder
99 <mason-app> "builds.factorcode.org" add-responder
100 main-responder set-global ;
102 : <factor-secure-config> ( -- config )
104 key-file get >>key-file
105 dh-file get >>dh-file
106 key-password get >>password ;
108 : <factor-website-server> ( -- threaded-server )
110 <factor-secure-config> >>secure-config
114 : start-website ( -- )
115 test-db start-expiring
116 test-db start-update-task
118 <factor-website-server> start-server ;