! Copyright (c) 2008, 2010 Slava Pestov ! See http://factorcode.org/license.txt for BSD license. USING: accessors kernel sequences assocs io.files io.pathnames io.sockets io.sockets.secure io.servers.connection namespaces db db.tuples db.sqlite smtp urls logging.insomniac html.templates.chloe http.server http.server.dispatchers http.server.redirection http.server.static http.server.cgi furnace.alloy furnace.auth.login furnace.auth.providers.db furnace.auth.features.edit-profile furnace.auth.features.recover-password furnace.auth.features.registration furnace.auth.features.deactivate-user furnace.boilerplate furnace.redirection furnace.recaptcha webapps.pastebin webapps.planet webapps.wiki webapps.user-admin webapps.help webapps.mason ; IN: websites.concatenative : test-db ( -- db ) "resource:test.db" ; : init-factor-db ( -- ) test-db [ init-furnace-tables { paste annotation blog posting article revision } ensure-tables ] with-db ; TUPLE: factor-website < dispatcher ; : ( responder -- responder' ) { factor-website "page" } >>template ; : ( responder -- responder' ) "Factor website" "Factor website" >>name allow-registration allow-password-recovery allow-edit-profile allow-deactivation ; : ( responder -- responder' ) "concatenative.org" >>domain "6LeJWQgAAAAAAFlYV7SuBClE9uSpGtV_ZS-qVON7" >>public-key "6LeJWQgAAAAAALh-XJgSSQ6xKygRgJ8-029Ip2Xv" >>private-key ; : ( -- responder ) factor-website new-dispatcher URL" /wiki/view/Front Page" "" add-responder ; SYMBOL: key-password SYMBOL: key-file SYMBOL: dh-file : common-configuration ( -- ) "concatenative.org" 25 smtp-server set-global "noreply@concatenative.org" lost-password-from set-global "website@concatenative.org" insomniac-sender set-global { "slava@factorcode.org" } insomniac-recipients set-global init-factor-db ; : init-testing ( -- ) "vocab:openssl/test/dh1024.pem" dh-file set-global "vocab:openssl/test/server.pem" key-file set-global "password" key-password set-global common-configuration "wiki" add-responder "user-admin" add-responder "pastebin" add-responder "planet" add-responder "mason" add-responder "/tmp/docs/" "docs" add-responder test-db main-responder set-global ; : ( path -- responder ) swap enable-cgi >>default URL" /gitweb.cgi" "" add-responder ; : init-production ( -- ) common-configuration "wiki" add-responder "user-admin" add-responder test-db "concatenative.org" add-responder test-db "paste.factorcode.org" add-responder test-db "planet.factorcode.org" add-responder test-db "builds.factorcode.org" add-responder home "docs" append-path "docs.factorcode.org" add-responder home "cgi" append-path "gitweb.factorcode.org" add-responder main-responder set-global ; : ( -- config ) key-file get >>key-file dh-file get >>dh-file key-password get >>password ; : ( -- threaded-server ) >>secure-config 8080 >>insecure 8431 >>secure ; : start-website ( -- ) test-db start-expiring test-db start-update-task http-insomniac start-server ;