Merge branch 'master' of ../www.fuck
Conflicts: .gitignore src/config.d.sample
This commit is contained in:
commit
d0a579ab51
|
@ -1,3 +1,5 @@
|
||||||
srv/*
|
srv/*
|
||||||
bin/web
|
bin/web
|
||||||
.nfs*
|
.nfs*
|
||||||
|
.htaccess
|
||||||
|
src/config.d
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
dweb - A simple website written in D
|
||||||
|
=====
|
||||||
|
dweb is a simple website framework based off the [werc][werc] software.
|
||||||
|
|
||||||
|
Its principles are:
|
||||||
|
|
||||||
|
- Database free, uses files and directories instead.
|
||||||
|
- Written using the D programming language.
|
||||||
|
- Minimize tedious work: eg., no need to ever write HTML, use markdown instead.
|
||||||
|
- Very minimalist yet extensible codebase. Handlers for special things should be easy to add.
|
||||||
|
|
||||||
|
It was created because werc was annoying to deploy on UW Computer Science Club's Apache setup and because [Not Invented Here](http://en.wikipedia.org/wiki/Not_Invented_Here).
|
||||||
|
|
||||||
|
[werc]:http://werc.cat-v.org/
|
||||||
|
[md]:http://daringfireball.net/projects/markdown
|
||||||
|
|
||||||
|
Install Guide
|
||||||
|
------
|
||||||
|
You will need:
|
||||||
|
- An HTTP server with CGI support.
|
||||||
|
- The D compiler.
|
||||||
|
|
||||||
|
Extract the contents into the location you want to serve webpages from. Create <code>$DWEB\_ROOT/.htaccess</code> and <code>$DWEB\_ROOT/src/config.d</code> by copying the provided sample files. Then edit the following files:
|
||||||
|
|
||||||
|
- <code>$DWEB_ROOT/.htaccess</code>: make the paths work for your setup.
|
||||||
|
- <code>$DWEB_ROOT/src/config.d</code>: change these strings as necessary.
|
||||||
|
- <code>$DWEB_ROOT/src/web.d</code>: this is the main web code.
|
||||||
|
- <code>$DWEB_ROOT/pub/</code>: static content goes here.
|
||||||
|
- <code>$DWEB_ROOT/srv/</code>: directories, markdown webpages etc. go in here.
|
||||||
|
- <code>$DWEB_ROOT/bin/</code>: custom handlers go here.
|
||||||
|
|
||||||
|
Run <code>build</code> in <code>$DWEB_ROOT/src</code> to recompile the website software.
|
||||||
|
|
||||||
|
Source
|
||||||
|
--------
|
||||||
|
|
||||||
|
You can get the source code on [github](https://github.com/j3parker/dweb) or by running
|
||||||
|
|
||||||
|
git clone git://github.com/j3parker/dweb.git
|
||||||
|
|
||||||
|
Contact
|
||||||
|
--------
|
||||||
|
For questions, suggestions, bug reports and contributing patches email [j3parker](mailto:j3parker@csclub.uwaterloo.ca)
|
||||||
|
|
||||||
|
License
|
||||||
|
-------
|
||||||
|
Public domain.
|
||||||
|
|
||||||
|
Credits
|
||||||
|
-------
|
||||||
|
The idea and css stolen from [werc][werc]. This page itself also plagarised.
|
||||||
|
|
||||||
|
Thanks to John Gruber for the [Markdown.pl][md] script.
|
|
@ -0,0 +1,4 @@
|
||||||
|
RewriteEngine on
|
||||||
|
RewriteBase /
|
||||||
|
RewriteRule ^pub/(.*) - [L]
|
||||||
|
RewriteRule ^(.*) bin/web [L]
|
|
@ -1 +1,2 @@
|
||||||
|
cd "$(dirname $0)"
|
||||||
dmd config.d web.d -ofweb && rm web.o && mv web ../bin/
|
dmd config.d web.d -ofweb && rm web.o && mv web ../bin/
|
||||||
|
|
18
src/config.d
18
src/config.d
|
@ -1,18 +0,0 @@
|
||||||
const string url_root = "/~j3parker/pub/csc/";
|
|
||||||
|
|
||||||
const string site_title = "CSC";
|
|
||||||
const string site_subtitle = "UW Computer Science Club";
|
|
||||||
|
|
||||||
const bool nav_tree_vert = false;
|
|
||||||
const bool nav_tree_chev = false;
|
|
||||||
const bool page_container = true;
|
|
||||||
|
|
||||||
string[string] handlers;
|
|
||||||
|
|
||||||
void init_handlers() {
|
|
||||||
handlers["*.md"] = "contrib/Markdown.pl";
|
|
||||||
handlers["changelog"] = "changelog.sh";
|
|
||||||
handlers["About/Members/"] = "members.py";
|
|
||||||
handlers["About/Members/?*"] = "member_info.py";
|
|
||||||
handlers["About/Executive/"] = "exec_positions.py";
|
|
||||||
}
|
|
|
@ -108,7 +108,7 @@ void do_content(string url) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// if that failed, see if we can handle the file
|
// if that failed, see if we can handle the file
|
||||||
if (url == "" ? false : url[$-1] == '/') url ~= "index";
|
if (url == "" ? true : url[$-1] == '/') url ~= "index";
|
||||||
foreach (f; array(map!"a.name"(dirEntries(dirName(dweb_root ~ "/srv/" ~ url), SpanMode.shallow)))) {
|
foreach (f; array(map!"a.name"(dirEntries(dirName(dweb_root ~ "/srv/" ~ url), SpanMode.shallow)))) {
|
||||||
if (isDir(f)) continue;
|
if (isDir(f)) continue;
|
||||||
string name = baseName(f); name = name[0] == '@' ? name[1..$] : name;
|
string name = baseName(f); name = name[0] == '@' ? name[1..$] : name;
|
||||||
|
@ -153,7 +153,7 @@ void main(string[] args) {
|
||||||
html("<!DOCTYPE html>");
|
html("<!DOCTYPE html>");
|
||||||
html_push("<html>\n");
|
html_push("<html>\n");
|
||||||
|
|
||||||
string url = getenv("SCRIPT_URL")[url_root.length..$];
|
string url = getenv("REQUEST_URI")[url_root.length..$];
|
||||||
if (evil(url)) { html ("bad url."); return; }
|
if (evil(url)) { html ("bad url."); return; }
|
||||||
|
|
||||||
string pagename = baseName(url);
|
string pagename = baseName(url);
|
||||||
|
|
16
srv/@dweb.md
16
srv/@dweb.md
|
@ -1,6 +1,6 @@
|
||||||
dweb - A simple website written in D
|
dweb - A simple website written in D
|
||||||
=====
|
=====
|
||||||
dweb is a simple website framework based off the [werc][werc] software.
|
dweb is a simple website framework inspired by the [werc][werc] software.
|
||||||
|
|
||||||
Its principles are:
|
Its principles are:
|
||||||
|
|
||||||
|
@ -22,14 +22,14 @@ You will need:
|
||||||
|
|
||||||
Extract the contents into the location you want to serve webpages from. Edit the following files:
|
Extract the contents into the location you want to serve webpages from. Edit the following files:
|
||||||
|
|
||||||
- <code>$DWEB_ROOT/.htaccess</code>: make the paths work for your setup.
|
- `$DWEB_ROOT/.htaccess`: make the rewrite path work for your setup.
|
||||||
- <code>$DWEB_ROOT/src/config.d</code>: change these strings as necessary.
|
- `$DWEB_ROOT/src/config.d`: change these things as desired. Custom handlers are added in init_handlers. The key is the glob to activate the handler, and the value is the `bin/` relative path of the handler.
|
||||||
- <code>$DWEB_ROOT/src/web.d</code>: this is the main web code.
|
- `$DWEB_ROOT/src/web.d`: this is the core code.
|
||||||
- <code>$DWEB_ROOT/pub/</code>: static content goes here.
|
- `$DWEB_ROOT/pub/`: static content goes here.
|
||||||
- <code>$DWEB_ROOT/srv/</code>: directories, markdown webpages etc. go in here.
|
- `$DWEB_ROOT/srv/`: directories, markdown webpages etc. go in here.
|
||||||
- <code>$DWEB_ROOT/bin/</code>: custom handlers go here.
|
- `$DWEB_ROOT/bin/`: custom handlers go here.
|
||||||
|
|
||||||
Run <code>build</code> in <code>$DWEB_ROOT/src</code> to recompile the website software.
|
Run `./build` in `$DWEB_ROOT/src` to recompile the website software.
|
||||||
|
|
||||||
Source
|
Source
|
||||||
--------
|
--------
|
||||||
|
|
Loading…
Reference in New Issue