From 4a6b9cfaae3c98493be33201b77d3423c71b211d Mon Sep 17 00:00:00 2001 From: Providers Commitment for Privacy Date: Thu, 8 Oct 2015 09:08:06 -0300 Subject: Support for static site generation --- .gitignore | 1 + Makefile | 36 ++++ bin/post-receive | 7 + bin/post-update | 16 ++ ikiwiki.setup | 640 ++++++++++++++++++------------------------------------- 5 files changed, 273 insertions(+), 427 deletions(-) create mode 100644 Makefile create mode 100755 bin/post-receive create mode 100755 bin/post-update diff --git a/.gitignore b/.gitignore index eecda60..3bd88ce 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /.ikiwiki +www diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..d26d2c6 --- /dev/null +++ b/Makefile @@ -0,0 +1,36 @@ +# +# Ikiwiki Makefile +# +# This Makefile is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by the Free +# Software Foundation; either version 3 of the License, or any later version. +# +# This Makefile is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along with +# this program; if not, write to the Free Software Foundation, Inc., 59 Temple +# Place - Suite 330, Boston, MA 02111-1307, USA +# + +web: + @ikiwiki --setup ikiwiki.setup + @chmod +x bin/* + +web_deploy: + #git push web + #git annex sync + @rsync -avz --delete www/ policy:/var/sites/policy/www/ + +post_update: + git config receive.denyCurrentBranch ignore + cd .git/hooks && ln -sf ../../bin/post-update + +post_receive: + git config receive.denyCurrentBranch ignore + cd .git/hooks && ln -sf ../../bin/post-receive + +whoami: + git config user.name "Providers Commitment for Privacy" + git config user.email pcp@nothingtohide.is diff --git a/bin/post-receive b/bin/post-receive new file mode 100755 index 0000000..996189d --- /dev/null +++ b/bin/post-receive @@ -0,0 +1,7 @@ +#!/bin/sh + +cd .. +unset GIT_DIR + +git checkout -f +git submodule update --init --recursive diff --git a/bin/post-update b/bin/post-update new file mode 100755 index 0000000..48a6a16 --- /dev/null +++ b/bin/post-update @@ -0,0 +1,16 @@ +#!/bin/sh + +cd .. +unset GIT_DIR + +if [ -d ".git/annex" ]; then + git annex sync +else + git reset HEAD + git checkout -f +fi + +git submodule update --init --recursive + +cd - +exec git update-server-info diff --git a/ikiwiki.setup b/ikiwiki.setup index aa88182..9882784 100644 --- a/ikiwiki.setup +++ b/ikiwiki.setup @@ -1,430 +1,216 @@ -# IkiWiki::Setup::Yaml - YAML formatted setup file +#!/usr/bin/perl +# Configuration file for ikiwiki. +# Passing this to ikiwiki --setup will make ikiwiki generate wrappers and +# build the wiki. # -# Setup file for ikiwiki. -# -# Passing this to ikiwiki --setup will make ikiwiki generate -# wrappers and build the wiki. -# # Remember to re-run ikiwiki --setup any time you edit this file. -# -# name of the wiki -wikiname: Providers' Commitment for Privacy -# contact email for wiki -adminemail: root@localhost -# users who are wiki admins -adminuser: - - https://id.koumbit.net/anarcat -# users who are banned from the wiki -banned_users: [] -# where the source of the wiki is located -srcdir: /home/a-policy/source -# where to build the wiki -destdir: /home/a-policy/public_html -# base url to the wiki -url: http://policy.anarcat.ath.cx -# url to the ikiwiki.cgi -cgiurl: http://policy.anarcat.ath.cx/ikiwiki.cgi -# filename of cgi wrapper to generate -cgi_wrapper: /var/www/a-policy/ikiwiki.cgi -# mode for cgi_wrapper (can safely be made suid) -cgi_wrappermode: 0755 -# rcs backend to use -rcs: git -# plugins to add to the default configuration -add_plugins: - - goodstuff - - websetup - - 404 - - ikiwikihosting - - recentchangesdiff - - theme - - prettydate - - version - - headinganchors - - editdiff - - format - - relativedate - - sortnaturally - - branchable - - sidebar -# plugins to disable -disable_plugins: - - search -# additional directory to search for template files -templatedir: /usr/share/ikiwiki/templates -# base wiki source location -underlaydir: /usr/share/ikiwiki/basewiki -# display verbose messages? -#verbose: 1 -# log to syslog? -syslog: 1 -# create output files named page/index.html? -usedirs: 1 -# use '!'-prefixed preprocessor directives? -prefix_directives: 1 -# use page/index.mdwn source files -indexpages: 0 -# enable Discussion pages? -discussion: 1 -# name of Discussion pages -discussionpage: Discussion -# generate HTML5? -html5: 0 -# only send cookies over SSL connections? -sslcookie: 0 -# extension to use for new pages -default_pageext: mdwn -# extension to use for html files -htmlext: html -# strftime format string to display date -timeformat: '%c' -# UTF-8 locale to use -#locale: en_US.UTF-8 -# put user pages below specified page -userdir: users -# how many backlinks to show before hiding excess (0 to show all) -numbacklinks: 10 -# attempt to hardlink source files? (optimisation for large files) -hardlink: 1 -# force ikiwiki to use a particular umask -#umask: 022 -# group for wrappers to run in -#wrappergroup: ikiwiki -# extra library and plugin directory -libdir: /home/a-policy/.ikiwiki -# environment variables -ENV: - TMPDIR: /home/a-policy/tmp -# time zone name -timezone: GMT -# regexp of normally excluded files to include -#include: '^\.htaccess$' -# regexp of files that should be skipped -#exclude: '^(*\.private|Makefile)$' -# specifies the characters that are allowed in source filenames -wiki_file_chars: '-[:alnum:]+/.:_' -# allow symlinks in the path leading to the srcdir (potentially insecure) -allow_symlinks_before_srcdir: 0 - -###################################################################### -# core plugins -# (branchable, editpage, git, gitpush, htmlscrubber, ikiwikihosting, -# inline, link, meta, parentlinks) -###################################################################### - -# branchable plugin -# Allow anyone to branch, check out, and copy this site? -branchable: 1 -# Allow anyone to git push verified changes to this site? -anonpush: 0 -# Display "Branchable" link on action bar? -branchable_action: 1 - -# git plugin -# git hook to generate -git_wrapper: /home/a-policy/source.git/hooks/post-update -# shell command for git_wrapper to run, in the background -#git_wrapper_background_command: git push github -# mode for git_wrapper (can safely be made suid) -git_wrappermode: 6755 -# git pre-receive hook to generate -#git_test_receive_wrapper: /git/wiki.git/hooks/pre-receive -# unix users whose commits should be checked by the pre-receive hook -untrusted_committers: - - ikiwiki-anon -# gitweb url to show file history ([[file]] substituted) -#historyurl: 'http://git.example.com/gitweb.cgi?p=wiki.git;a=history;f=[[file]];hb=HEAD' -# gitweb url to show a diff ([[file]], [[sha1_to]], [[sha1_from]], [[sha1_commit]], and [[sha1_parent]] substituted) -#diffurl: 'http://git.example.com/gitweb.cgi?p=wiki.git;a=blobdiff;f=[[file]];h=[[sha1_to]];hp=[[sha1_from]];hb=[[sha1_commit]];hpb=[[sha1_parent]]' -# where to pull and push changes (set to empty string to disable) -gitorigin_branch: origin -# branch that the wiki is stored in -gitmaster_branch: master - -# gitpush plugin -# git repository urls that changes are pushed to -#git_push_to: [] - -# htmlscrubber plugin -# PageSpec specifying pages not to scrub -#htmlscrubber_skip: '!*/Discussion' - -# ikiwikihosting plugin -# list of urls that alias to the main url -#urlalias: [] -# openid of primary site owner -owner: https://id.koumbit.net/ -# optional hostname of site this one was branched from -#parent: '' -# internal hostname of this site -hostname: policy.anarcat.ath.cx -# site creation datestamp -created: 1324138932 -# how many days to retain logs -#log_period: 7 -# disable IPv6? -ipv6_disabled: 0 - -# inline plugin -# enable rss feeds by default? -rss: 1 -# enable atom feeds by default? -atom: 1 -# allow rss feeds to be used? -#allowrss: 0 -# allow atom feeds to be used? -#allowatom: 0 -# urls to ping (using XML-RPC) on feed update -pingurl: [] - -###################################################################### -# auth plugins -# (anonok, blogspam, httpauth, lockedit, moderatedcomments, -# opendiscussion, openid, passwordauth, signinedit) -###################################################################### - -# anonok plugin -# PageSpec to limit which pages anonymous users can edit -#anonok_pagespec: '*/discussion' - -# blogspam plugin -# PageSpec of pages to check for spam -#blogspam_pagespec: postcomment(*) -# options to send to blogspam server -#blogspam_options: 'blacklist=1.2.3.4,blacklist=8.7.6.5,max-links=10' -# blogspam server XML-RPC url -#blogspam_server: '' - -# httpauth plugin -# url to redirect to when authentication is needed -#cgiauthurl: http://example.com/wiki/auth/ikiwiki.cgi -# PageSpec of pages where only httpauth will be used for authentication -#httpauth_pagespec: '!*/Discussion' - -# lockedit plugin -# PageSpec controlling which pages are locked -#locked_pages: '!*/Discussion' - -# moderatedcomments plugin -# PageSpec matching users or comment locations to moderate -#moderate_pagespec: '*' - -# openid plugin -# url pattern of openid realm (default is cgiurl) -openid_realm: http://*.orangeseeds.org/ -# url to ikiwiki cgi to use for openid authentication (default is cgiurl) -openid_cgiurl: http://policy.anarcat.ath.cx/ikiwiki.cgi - -# passwordauth plugin -# a password that must be entered when signing up for an account -#account_creation_password: s3cr1t -# cost of generating a password using Authen::Passphrase::BlowfishCrypt -#password_cost: 8 - -###################################################################### -# format plugins -# (creole, highlight, hnb, html, mdwn, otl, po, rawhtml, rst, textile, -# txt) -###################################################################### - -# highlight plugin -# types of source files to syntax highlight -#tohighlight: .c .h .cpp .pl .py Makefile:make -# location of highlight's filetypes.conf -filetypes_conf: /etc/highlight/filetypes.conf -# location of highlight's langDefs directory -langdefdir: /usr/share/highlight/langDefs/ - -# mdwn plugin -# enable multimarkdown features? -multimarkdown: 1 - -# po plugin -# master language (non-PO files) -#po_master_language: en|English -# slave languages (translated via PO files) format: ll|Langname -#po_slave_languages: -# - fr|Français -# - es|Español -# - de|Deutsch -# PageSpec controlling which pages are translatable -po_translatable_pages: '' -# internal linking behavior (default/current/negotiated) -po_link_to: default - -###################################################################### -# misc plugins -# (filecheck) -###################################################################### - -###################################################################### -# web plugins -# (404, attachment, comments, editdiff, edittemplate, google, goto, -# mirrorlist, repolist, search, theme, userlist, websetup, wmd) -###################################################################### - -# attachment plugin -# enhanced PageSpec specifying what attachments are allowed -#allowed_attachments: virusfree() and mimetype(image/*) and maxsize(50kb) -# virus checker program (reads STDIN, returns nonzero if virus found) -#virus_checker: clamdscan - - -# comments plugin -# PageSpec of pages where comments are allowed -comments_pagespec: '' -# PageSpec of pages where posting new comments is not allowed -comments_closed_pagespec: '' -# Base name for comments, e.g. "comment_" for pages like "sandbox/comment_12" -comments_pagename: comment_ -# Interpret directives in comments? -#comments_allowdirectives: 0 -# Allow anonymous commenters to set an author name? -#comments_allowauthor: 0 -# commit comments to the VCS -comments_commit: 1 - -# mirrorlist plugin -# list of mirrors -#mirrorlist: {} - -# repolist plugin -# URIs of repositories containing the wiki's source -repositories: - - ssh://a-policy@policy.anarcat.ath.cx/ - - git://policy.anarcat.ath.cx/ - -# search plugin -# path to the omega cgi program -omega_cgi: /usr/lib/cgi-bin/omega/omega - -# theme plugin -# name of theme to enable -theme: pcp - -# websetup plugin -# list of plugins that cannot be enabled/disabled via the web interface -websetup_force_plugins: - - httpauth - - openid - - mdwn - - wmd - - aggregate -# list of additional setup field keys to treat as unsafe -websetup_unsafe: - - url - - cgiurl - - verbose - - syslog - - usedirs - - prefix_directives - - indexpages - - repositories -# show unsafe settings, read-only, in web interface? -websetup_show_unsafe: 0 - -###################################################################### -# widget plugins -# (calendar, color, conditional, cutpaste, date, format, fortune, -# graphviz, haiku, headinganchors, img, linkmap, listdirectives, map, -# more, orphans, pagecount, pagestats, poll, polygen, postsparkline, -# progress, shortcut, sparkline, table, template, teximg, toc, toggle, -# version) -###################################################################### - -# calendar plugin -# base of the archives hierarchy -#archivebase: archives -# PageSpec of pages to include in the archives; used by ikiwiki-calendar command -#archive_pagespec: page(posts/*) and !*/Discussion - -# listdirectives plugin -# directory in srcdir that contains directive descriptions -directive_description_dir: ikiwiki/directive - -# teximg plugin -# Should teximg use dvipng to render, or dvips and convert? -#teximg_dvipng: '' -# LaTeX prefix for teximg plugin -#teximg_prefix: | -# \documentclass{article} -# \usepackage[utf8]{inputenc} -# \usepackage{amsmath} -# \usepackage{amsfonts} -# \usepackage{amssymb} -# \pagestyle{empty} -# \begin{document} -# LaTeX postfix for teximg plugin -#teximg_postfix: '\end{document}' - -###################################################################### -# other plugins -# (aggregate, autoindex, brokenlinks, camelcase, ddate, embed, favicon, -# flattr, goodstuff, htmlbalance, localstyle, missingsite, pagetemplate, -# parked, pingee, pinger, prettydate, recentchanges, recentchangesdiff, -# relativedate, rsync, sidebar, smiley, sortnaturally, tag, -# testpagespec, transient, typography, underlay) -###################################################################### - -# aggregate plugin -# enable aggregation to internal pages? -aggregateinternal: 1 -# allow aggregation to be triggered via the web? -#aggregate_webtrigger: 0 -# cookie control -cookiejar: - file: /home/a-policy/.ikiwiki/cookies - -# autoindex plugin -# commit autocreated index pages -autoindex_commit: 1 - -# camelcase plugin -# list of words to not turn into links -#camelcase_ignore: [] - -# flattr plugin -# userid or user name to use by default for Flattr buttons -#flattr_userid: joeyh - -# parked plugin -# An optional message explaining why this site is parked. -#parked_message: '' - -# pinger plugin -# how many seconds to try pinging before timing out -#pinger_timeout: 15 - -# prettydate plugin -# format to use to display date -prettydateformat: '%X, %B %o, %Y' - -# recentchanges plugin -# name of the recentchanges page -recentchangespage: recentchanges -# number of changes to track -recentchangesnum: 100 - -# rsync plugin -# command to run to sync updated pages -#rsync_command: rsync -qa --delete . user@host:/path/to/docroot/ - -# sidebar plugin -# show sidebar page on all pages? -global_sidebars: 1 - -# tag plugin -# parent page tags are located under -#tagbase: tag -# autocreate new tag pages? -#tag_autocreate: 1 -# commit autocreated tag pages -tag_autocreate_commit: 1 - -# typography plugin -# Text::Typography attributes value -#typographyattributes: 3 -# underlay plugin -# extra underlay directories to add -#add_underlays: -# - /home/a-policy/wiki.underlay +use IkiWiki::Setup::Standard { + wikiname => "Providers' Commitment for Privacy (PCP)", + adminuser => ["policy", ], + adminemail => 'pcp@nothingtohide.is', + + # Be sure to customise these.. + srcdir => ".", + destdir => "www", + + url => "https://policy.sarava.org", + cgiurl => "https://policy.sarava.org/ikiwiki.cgi", + #templatedir => "/usr/share/ikiwiki/templates", + #underlaydir => "/usr/share/ikiwiki/basewiki", + + # Subversion stuff. + #rcs => "svn", + #historyurl => "http://svn.sarava.org/trunk/[[file]]", + #diffurl => "http://svn.sarava.org/trunk/[[file]]?root=wiki&r1=[[r1]]&r2=[[r2]]", + #svnrepo => "/svn/wiki", + #svnpath => "trunk", + + # Git stuff. + rcs => "git", + historyurl => "https://git.sarava.org/?p=policy.git;a=history;f=[[file]]", + diffurl => "https://git.sarava.org/?p=policy.git;a=blobdiff;h=[[sha1_to]];hp=[[sha1_from]];hb=[[sha1_parent]];f=[[file]]", + #gitorigin_branch => "origin", + #gitmaster_branch => "master", + # See https://ikiwiki.info/tips/laptop_wiki_with_git/ + gitorigin_branch => '', + + # Tla stuff. + #rcs => "tla" + #historyurl => ??, + #diffurl => ??, + + # Mercurial stuff. + #rcs => "mercurial", + #historyurl => "http://localhost:8000/log/tip/[[file]]", # hg serve'd local repository + #diffurl => "http://localhost:8000/?fd=[[r2]];file=[[file]]", + + # Bazaar stuff. + #rcs => "bzr", + #historyurl => "", + #diffurl => "http://example.com/revision?start_revid=[[r2]]#[[file]]-s", # using loggerhead + + # Monotone stuff + #rcs => "monotone", + #mtnkey => "web\@machine.company.com", + #historyurl => "http://viewmtn.example.com/branch/head/filechanges/com.example.branch/[[file]]", + #diffurl => "http://viewmtn.example.com/revision/diff/[[r1]]/with/[[r2]]/[[file]]", + # Set if you want the wiki to sync on update and commit. + #mtnsync => 0, + # The path to your workspace (defaults to the srcdir itself) + # e.g. use if your srcdir is a subdirectory of the workspace. + #mtnrootdir => "path/to/root/of/workspace", + + wrappers => [ + #{ + # # The cgi wrapper. + # cgi => 0, + # wrapper => "/var/sites/rhatto/ikiwiki/ikiwiki.cgi", + # wrappermode => "06550", + # wrappergroup => "www-data", + #}, + #{ + # # The svn post-commit wrapper. + # # Note that this will overwrite any existing + # # post-commit hook script, which may not be + # # what you want. + # wrapper => "/svn/wikirepo/hooks/post-commit", + # wrappermode => "04755", + # # Log to syslog since svn post-commit hooks + # # hide output and errors. + # syslog => 1, + #}, + #{ + # # The git post-update wrapper. + # # Note that this will overwrite any existing + # # post-update hook script, which may not be + # # what you want. + # wrapper => "/var/git/repositories/rhatto.git/hooks/post-update", + # wrappermode => "06550", + # wrappergroup => "git", + #}, + #{ + # # The monotone netsync hook. + # wrapper => "path/to/root/of/workspace/_MTN/ikiwiki-netsync-hook", + # wrappermode => "06755", + #}, + ], + + # Default to generating rss feeds for pages with feeds? + rss => 1, + # Default to generating atom feeds for pages with feeds? + #atom => 1, + # Allow generating feeds even if not generated by default? + #allowrss => 1, + #allowatom => 1, + # Urls to ping with XML-RPC when feeds are updated + #pingurl => [qw{http://rpc.technorati.com/rpc/ping}], + # Include discussion links on all pages? + discussion => 0, + # To exclude files matching a regexp from processing. This adds to + # the default exclude list. + #exclude => qr/\.wav$/, + exclude => qr/www/, + # To change the extension used for generated html files. + #htmlext => 'htm', + # Time format (for strftime) + #timeformat => '%c', + # Locale to use. Must be a UTF-8 locale. + #locale => 'en_US.UTF-8', + # Only send cookies over SSL connections. + #sslcookie => 1, + # Logging settings: + #verbose => 1, + syslog => 0, + # To link to user pages in a subdirectory of the wiki. + #userdir => "users", + # To create output files named page.html rather than page/index.html. + #usedirs => 0, + # Simple spam prevention: require an account-creation password. + #account_creation_password => "guesswhat", + # Cost of generating a password using Authen::Passphrase::BlowfishCrypt + #password_cost => 8, + # Uncomment to force ikiwiki to run with a particular umask. + umask => 002, + # Default settings for the recentchanges page. + #recentchangespage => "recentchanges", + #recentchangesnum => 100, + # Use new '!'-prefixed preprocessor directive syntax + #prefix_directives => 0, + # Attempt to make hardlinks to source files instead of copying them. + # Useful if the wiki contains large media files. + #hardlink => 1, + # Enable use of multimarkdown features in .mdwn files. + #multimarkdown => 1, + + # To add plugins, list them here. + #add_plugins => [qw{goodstuff search wikitext camelcase + # htmltidy fortune sidebar map rst anonok}], + add_plugins => [qw{goodstuff sidebar}], + # If you want to disable any of the default plugins, list them here. + #disable_plugins => [qw{inline htmlscrubber passwordauth openid}], + disable_plugins => [qw{openid editpage}], + # To add a directory to the perl search path, use this. + #libdir => "/home/me/.ikiwiki/", + + # To override environment variable settings, you can list values here. + #ENV => { + # TZ => "America/New_York", + # PATH => "/home/me/bin:/usr/local/bin:/usr/bin:/bin", + #}, + + # For use with the tag plugin, make all tags be located under a + # base page. + #tagbase => "tag", + + # For use with the search plugin if the omega cgi is located + # somewhere else. + #omega_cgi => "/usr/lib/cgi-bin/omega/omega", + + # For use with the openid plugin, to give an url to a page users + # can use to signup for an OpenID. + #openidsignup => "http://myopenid.com/", + + # For use with the mirrorlist plugin, a list of mirrors. + #mirrorlist => { + # mirror1 => "http://hostname1", + # mirror2 => "http://hostname2/mirror", + #}, + + # For use with the anonok plugin, a PageSpec specifying what + # pages anonymous users can edit + #anonok_pagespec => "*", + + # For use with the aggregate plugin, to allow aggregation to be + # triggered via the web. + #aggregate_webtrigger => 1, + + # For use with the pinger plugin, how many seconds to wait before + # timing out. + #pinger_timeout => 15. + + # For use with the amazon S3 plugin, your public access key id. + #amazon_s3_key_id => 'XXXXXXXXXXXXXXXXXXXX', + # And a file holding your secret key. This file *must* not be + # readable by others! + #amazon_s3_key_file => "/home/me/.hide/.s3_key + # The globally unique name of the bucket to use to store the wiki. + #amazon_s3_bucket => "mywiki", + # A prefix to prepend to each page name. + #amazon_s3_prefix => "wiki/", + # Uncomment to use the S3 European datacenter. + #amazon_s3_location => "EU", + # Uncomment if you need to store each index file twice. + #amazon_s3_dupindex => 1, + + # For use with the attachment plugin, a program that returns + # nonzero if its standard input contains an virus. + #virus_checker => "clamdscan -", + + # See https://ikiwiki.info/plugins/po/ + #po_master_language => 'en|English', + #po_slave_languages => [ 'pt|Portuguese' ], + + # See http://ikiwiki.info/plugins/rsync/ + #rsync_command => 'rsync -qa --delete . user@host:/path/to/docroot/', +} -- cgit v1.2.3