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.sockets
4 io.sockets.secure io.servers.connection
5 namespaces db db.tuples db.sqlite smtp urls
9 http.server.dispatchers
10 http.server.redirection
13 furnace.auth.providers.db
14 furnace.auth.features.edit-profile
15 furnace.auth.features.recover-password
16 furnace.auth.features.registration
17 furnace.auth.features.deactivate-user
27 IN: websites.concatenative
29 : test-db ( -- params db ) "resource:test.db" sqlite-db ;
31 : init-factor-db ( -- )
45 TUPLE: factor-website < dispatcher ;
47 : <factor-website> ( -- responder )
48 factor-website new-dispatcher
49 <blogs> "blogs" add-responder
50 <todo-list> "todo" add-responder
51 <pastebin> "pastebin" add-responder
52 <planet> "planet" add-responder
53 <wiki> "wiki" add-responder
54 <wee-url> "wee-url" add-responder
55 <user-admin> "user-admin" add-responder
56 URL" /wiki/view/Front Page" <redirect-responder> "" add-responder
57 "Factor website" <login-realm>
58 "Factor website" >>name
60 allow-password-recovery
64 { factor-website "page" } >>template
71 : common-configuration ( -- )
73 "concatenative.org" 25 <inet> smtp-server set-global
74 "noreply@concatenative.org" lost-password-from set-global
75 "website@concatenative.org" insomniac-sender set-global
76 "slava@factorcode.org" insomniac-recipients set-global
80 "resource:basis/openssl/test/dh1024.pem" dh-file set-global
81 "resource:basis/openssl/test/server.pem" key-file set-global
82 "password" key-password set-global
84 <factor-website> main-responder set-global ;
86 : no-www-prefix ( -- responder )
87 "http://concatenative.org" <permanent-redirect> <trivial-responder> ;
89 : init-production ( -- )
92 <factor-website> "concatenative.org" add-responder
93 no-www-prefix "www.concatenative.org" add-responder
94 main-responder set-global ;
96 : <factor-secure-config> ( -- config )
98 key-file get >>key-file
100 key-password get >>password ;
102 : <factor-website-server> ( -- threaded-server )
104 <factor-secure-config> >>secure-config
108 : start-website ( -- )
109 test-db start-expiring
110 test-db start-update-task
112 <factor-website-server> start-server ;