factor/extra/websites/concatenative/concatenative.factor

118 lines
3.5 KiB
Factor
Raw Normal View History

2008-06-17 01:10:46 -04:00
! Copyright (c) 2008 Slava Pestov
! See http://factorcode.org/license.txt for BSD license.
USING: accessors kernel sequences assocs io.files io.sockets
io.sockets.secure io.servers.connection
namespaces db db.tuples db.sqlite smtp urls
logging.insomniac
2008-09-08 02:11:36 -04:00
html.templates.chloe
2008-06-17 01:10:46 -04:00
http.server
http.server.dispatchers
http.server.redirection
2008-09-29 22:18:49 -04:00
http.server.static
http.server.cgi
2008-06-17 01:10:46 -04:00
furnace.alloy
furnace.auth.login
furnace.auth.providers.db
furnace.auth.features.edit-profile
furnace.auth.features.recover-password
furnace.auth.features.registration
2008-06-18 04:26:50 -04:00
furnace.auth.features.deactivate-user
2008-06-17 01:10:46 -04:00
furnace.boilerplate
furnace.redirection
webapps.pastebin
webapps.planet
webapps.wiki
2008-09-29 06:13:44 -04:00
webapps.user-admin
webapps.help ;
2008-06-17 01:10:46 -04:00
IN: websites.concatenative
2008-07-08 17:15:51 -04:00
: test-db ( -- params db ) "resource:test.db" sqlite-db ;
2008-06-17 01:10:46 -04:00
: init-factor-db ( -- )
test-db [
init-furnace-tables
{
paste annotation
blog posting
article revision
} ensure-tables
] with-db ;
TUPLE: factor-website < dispatcher ;
2008-09-29 05:10:29 -04:00
: <factor-boilerplate> ( responder -- responder' )
<boilerplate>
{ factor-website "page" } >>template ;
2008-09-28 20:39:26 -04:00
: <configuration> ( responder -- responder' )
2008-06-17 01:10:46 -04:00
"Factor website" <login-realm>
"Factor website" >>name
allow-registration
allow-password-recovery
allow-edit-profile
2008-06-18 04:26:50 -04:00
allow-deactivation
2008-06-17 01:10:46 -04:00
test-db <alloy> ;
2008-09-28 20:39:26 -04:00
: <factor-website> ( -- responder )
factor-website new-dispatcher
<wiki> "wiki" add-responder
<user-admin> "user-admin" add-responder
URL" /wiki/view/Front Page" <redirect-responder> "" add-responder ;
2008-06-18 04:40:05 -04:00
SYMBOL: key-password
SYMBOL: key-file
SYMBOL: dh-file
: common-configuration ( -- )
"concatenative.org" 25 <inet> smtp-server set-global
2008-06-18 03:54:11 -04:00
"noreply@concatenative.org" lost-password-from set-global
"website@concatenative.org" insomniac-sender set-global
2008-06-17 01:10:46 -04:00
"slava@factorcode.org" insomniac-recipients set-global
2008-06-18 04:40:05 -04:00
init-factor-db ;
: init-testing ( -- )
2008-09-04 21:11:28 -04:00
"resource:basis/openssl/test/dh1024.pem" dh-file set-global
"resource:basis/openssl/test/server.pem" key-file set-global
2008-06-18 04:40:05 -04:00
"password" key-password set-global
common-configuration
2008-09-28 20:39:26 -04:00
<factor-website>
2008-09-29 23:33:06 -04:00
<pastebin> <factor-boilerplate> "pastebin" add-responder
<planet> <factor-boilerplate> "planet" add-responder
2008-09-29 06:14:34 -04:00
"/tmp/docs/" <help-webapp> "docs" add-responder
2008-09-28 20:39:26 -04:00
<configuration>
main-responder set-global ;
2008-09-29 22:18:49 -04:00
: <gitweb> ( path -- responder )
<dispatcher>
swap <static> enable-cgi >>default
URL" /gitweb.cgi" <redirect-responder> "" add-responder ;
2008-06-18 04:40:05 -04:00
: init-production ( -- )
common-configuration
<vhost-dispatcher>
2008-09-29 22:18:49 -04:00
<factor-website> <factor-boilerplate> <configuration> "concatenative.org" add-responder
<pastebin> <factor-boilerplate> <configuration> "paste.factorcode.org" add-responder
<planet> <factor-boilerplate> <configuration> "planet.factorcode.org" add-responder
home "docs" append-path <help-webapp> <configuration> "docs.factorcode.org" add-responder
home "cgi" append-path <gitweb> "gitweb.factorcode.org" add-responder
main-responder set-global ;
2008-06-17 01:10:46 -04:00
: <factor-secure-config> ( -- config )
<secure-config>
2008-06-18 04:40:05 -04:00
key-file get >>key-file
dh-file get >>dh-file
key-password get >>password ;
2008-06-17 01:10:46 -04:00
: <factor-website-server> ( -- threaded-server )
<http-server>
<factor-secure-config> >>secure-config
8080 >>insecure
8431 >>secure ;
2008-06-18 04:40:05 -04:00
: start-website ( -- )
2008-06-17 01:10:46 -04:00
test-db start-expiring
test-db start-update-task
http-insomniac
<factor-website-server> start-server ;