wikifs man page on Plan9

Man page or keyword search:  
man Server   549 pages
apropos Keyword Search (all sections)
Output format
Plan9 logo
[printable version]

WIKIFS(4)							     WIKIFS(4)

NAME
       wikifs, wikipost - wiki file system

SYNOPSIS
       wikifs [ -DM ] [ -a announce ]...  [ -m mtpt ] [ -p perm ] [ -s service
       ] dir

       ip/httpd/wikipost [-b inbuf] [-d domain] [-r remoteip] [-w webroot] [-N
       netdir] method version uri [search]

DESCRIPTION
       A  wiki	is  a web server that facilitates easy editing of the pages it
       contains.  Wikifs presents a wiki in two forms:	as  web	 pages	to  be
       served via httpd(8) and as text files to be viewed via the acme(1) wiki
       client (see /acme/wiki/guide).

       Wikifs presents a file system interface to the wiki data stored in dir.
       By  default, wikifs mounts itself at /mnt/wiki; the -m flag specifies a
       different mount point, and the -M flag causes wikifs not	 to  mount  at
       all.   Wikifs also announces 9P network services on the addresses given
       as arguments to -a options.  If the -s option  is  given,  wikifs  will
       post  a	service	 file  descriptor in /srv/service with permission perm
       (default 600).  The -D flag causes a transcript of the 9P  conversation
       to be written to standard error.

       The  wiki  holds	 both  the  current pages and also all versions of all
       pages that have ever existed.  All pages have  time  stamps  associated
       with them.  When a user wants to edit a page, he reads the current page
       from the wiki, noting the time stamp on the page.  When a  user	writes
       changes	to  a  page, he includes the time stamp of the page he started
       with.  If the page has been updated by someone else while he was	 edit‐
       ing, the write will fail.  This is called a ``conflicting write.''  The
       submission is still saved in the history, so that the user can  compare
       the  page  he  submitted	 with  the changes that were made while he was
       editing.

       Each version of each page is described by a text file containing one or
       more  metadata lines followed by the page contents.  The metadata lines
       begin with a capital letter specifying the type of data.	 Currently the
       metadata types are:

       D      The  date	 this  page  was written, in decimal seconds since the
	      epoch.

       A      The author of this version of the page.  Typically the  rest  of
	      the line takes the form name ip-address.

       X      This  page's  contents were submitted but rejected due to a con‐
	      flicting write.

       After the metadata comes the actual page contents; each	line  of  page
       contents is prefixed with a # character.

       The directory dir/d contains all the wiki data.	Typically it is world-
       writable so that wikifs can run as none.	 Each page on the wiki	has  a
       unique sequence number n; for each page, the d directory contains three
       files n, n.hist, and L.n.  The file n holds the current version of  the
       page:  the first line of n is the page title, followed by page metadata
       and contents as described above.	 The append-only file n.hist holds the
       history	of  the	 page.	 The  first line of n.hist is the title of the
       page.  The rest of the file is the metadata and contents of every  ver‐
       sion  of	 the  page that has been submitted to the wiki.	 L.n is a lock
       file for the page: it must be held  while  reading  or  writing	n  and
       n.hist.	 The  lock files allow multiple instances of wikifs to coexist
       peacefully.  Finally, the map file (with associated  lock  L.map)  pro‐
       vides a mapping from sequence numbers to to page titles.	 Each map line
       is a decimal n, a single space, and then the title.  Since  titles  are
       presented as names by wikifs, they cannot contain slashes.

       Wikifs presents a three-level file system.  The top level contains per-
       page directories named by the  page  titles  with  spaces  turned  into
       underscores.   Each  page also has a number associated with it (see the
       discussion of the wiki data files below).  The number corresponding  to
       a  page may also be used to access it, although directory listings will
       always present the title.  The new file is used to add new  or  revised
       pages  to  the  wiki: writes to the file should be in the usual textual
       format: a title line, metadata lines, and page contents.	 Once all  the
       contents have been written, a final zero-length message should be writ‐
       ten to mark the end of the page.	 This last write will return an	 error
       if  a  conflicting  write  has  occurred.   After writing the file, the
       client may read from new to obtain the canonical title for the page, as
       presented by the file system.

       The page directories contain subdirectories representing the history of
       the page, named by the decimal time stamp corresponding	to  each  ver‐
       sion.   In  addition to these history directories, the page directories
       contain the following files:

       current
	      The current raw data file for the page.

       diff.html
	      A web page listing the contents of every	version	 of  the  page
	      that  has	 ever  appeared	 on  the  wiki.	  The  text is grey by
	      default: differences between versions appear in black.

       edit.html
	      A web form for editing the the current version of the page.

       history.html
	      A web page listing the time stamps of the historical versions of
	      the  page.   Each	 time  stamp links to a page showing just that
	      version.

       history.txt
	      A textual formatting of the history.  Each time  stamp  is  pre‐
	      fixed  with the name of the directory corresponding to that ver‐
	      sion.

       index.html
	      An HTML formatting of the current version of the page.

       index.txt
	      A textual formatting of the current version of the page.

       werror.html
	      An HTML error page to be returned	 by  wikipost  on  conflicting
	      writes.

       The  HTML files are generated from the templates with the same names in
       dir, except that index.html and index.txt are generated from  the  tem‐
       plates page.html and page.txt.

       The  history  directories  are similar to the page directories but only
       contain	current,  index.html,  and  index.txt.	 This  index.html  and
       index.txt  are  generated  from	the  templates	oldpage.html  and old‐
       page.txt.

       The httpd(8)  helper  program  wikipost	is  used  to  process  editing
       requests posted to the web server by users.  It expects the posted form
       to contain these (usually hidden) fields: TITLE, the title of the page;
       VERSION,	 the time stamp of the page that is being edited; service, the
       service	name  associated  with	 this	wiki   (wikipost   looks   for
       /srv/wiki.service); and base, the base for wiki URLs in the response.

       After  mounting	the  wiki,  wikipost  writes  a page update request to
       /mnt/wiki/new and then  returns	the  contents  of  one	HTML  file  in
       /mnt/wiki/title.	  If  the write succeeds, wikipost returns index.html.
       if the write fails due to a conflicting write,  wikipost	 returns  wer‐
       ror.html.

EXAMPLE
       The Plan 9 wiki at Bell Labs is started by running:
	   wikifs -p 666 -s wiki.plan9 -a tcp!*!wiki /sys/lib/wiki

       The wiki is mounted for httpd(8) by an entry in /lib/namespace.httpd:
	   # wiki
	   mount -b #s/wiki.plan9 /usr/web/wiki/plan9
       Notice  that  the  wiki	service was explicitly posted with mode 666 so
       that httpd (running as none) would be able to mount it.

       In the Plan 9 distribution, the directory /sys/lib/wiki contains sample
       files similar to those used to start the current Plan 9 wiki.

SOURCE
       /sys/src/cmd/wikifs
       /sys/src/cmd/ip/httpd/wikipost.c

SEE ALSO
       The original wiki, http://c2.com/cgi/wiki?WikiWikiWeb
       /acme/wiki/guide

								     WIKIFS(4)
[top]
                             _         _         _ 
                            | |       | |       | |     
                            | |       | |       | |     
                         __ | | __ __ | | __ __ | | __  
                         \ \| |/ / \ \| |/ / \ \| |/ /  
                          \ \ / /   \ \ / /   \ \ / /   
                           \   /     \   /     \   /    
                            \_/       \_/       \_/ 
More information is available in HTML format for server Plan9

List of man pages available for Plan9

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net