]> gitweb.ps.run Git - ps-cgit/blobdiff - cgitrc.5.txt
auth: add basic authentication filter framework
[ps-cgit] / cgitrc.5.txt
index 8b0ad21270d992fdebcc3469188df7b64a875a2f..c45dbd3681de8f7a258d8f84669d1bc08ca7d6d5 100644 (file)
@@ -42,6 +42,13 @@ agefile::
        hh:mm:ss". You may want to generate this file from a post-receive
        hook. Default value: "info/web/last-modified".
 
+auth-filter::
+       Specifies a command that will be invoked for authenticating repository
+       access. Receives quite a few arguments, and data on both stdin and
+       stdout for authentication processing. Details follow later in this
+       document. If no auth-filter is specified, no authentication is
+       performed. Default value: none. See also: "FILTER API".
+
 branch-sort::
        Flag which, when set to "age", enables date ordering in the branch ref
        list, and when set to "name" enables ordering by branch name. Default
@@ -117,6 +124,14 @@ css::
        Url which specifies the css document to include in all cgit pages.
        Default value: "/cgit.css".
 
+email-filter::
+       Specifies a command which will be invoked to format names and email
+       address of committers, authors, and taggers, as represented in various
+       places throughout the cgit interface. This command will receive an
+       email address and an origin page string as its command line arguments,
+       and the text to format on STDIN. It is to write the formatted text back
+       out onto STDOUT. Default value: none. See also: "FILTER API".
+
 embedded::
        Flag which, when set to "1", will make cgit generate a html fragment
        suitable for embedding in other html pages. Default value: none. See
@@ -133,8 +148,9 @@ enable-filter-overrides::
 
 enable-http-clone::
        If set to "1", cgit will act as an dumb HTTP endpoint for git clones.
-       If you use an alternate way of serving git repositories, you may wish
-       to disable this. Default value: "1".
+       You can add "http://$HTTP_HOST$SCRIPT_NAME/$CGIT_REPO_URL" to clone-url
+       to expose this feature. If you use an alternate way of serving git
+       repositories, you may wish to disable this. Default value: "1".
 
 enable-index-links::
        Flag which, when set to "1", will make cgit generate extra links for
@@ -176,7 +192,7 @@ enable-git-config::
        "scan-path", and must be defined prior, to augment repo-specific
        settings. The keys gitweb.owner, gitweb.category, and gitweb.description
        will map to the cgit keys repo.owner, repo.section, and repo.desc,
-       respectivly. All git config keys that begin with "cgit." will be mapped
+       respectively. All git config keys that begin with "cgit." will be mapped
        to the corresponding "repo." key in cgit. Default value: "0". See also:
        scan-path, section-from-path.
 
@@ -284,7 +300,7 @@ nocache::
        value: "0".
 
 noplainemail::
-       If set to "1" showing full author email adresses will be disabled.
+       If set to "1" showing full author email addresses will be disabled.
        Default value: "0".
 
 noheader::
@@ -381,10 +397,10 @@ side-by-side-diffs::
        default. Default value: "0".
 
 snapshots::
-       Text which specifies the default set of snapshot formats generated by
-       cgit. The value is a space-separated list of zero or more of the
-       values "tar", "tar.gz", "tar.bz2", "tar.xz" and "zip". Default value:
-       none.
+       Text which specifies the default set of snapshot formats that cgit
+       generates links for. The value is a space-separated list of zero or
+       more of the values "tar", "tar.gz", "tar.bz2", "tar.xz" and "zip".
+       Default value: none.
 
 source-filter::
        Specifies a command which will be invoked to format plaintext blobs
@@ -456,6 +472,10 @@ repo.defbranch::
 repo.desc::
        The value to show as repository description. Default value: none.
 
+repo.email-filter::
+       Override the default email-filter. Default value: none. See also:
+       "enable-filter-overrides". See also: "FILTER API".
+
 repo.enable-commit-graph::
        A flag which can be used to disable the global setting
        `enable-commit-graph'. Default value: none.
@@ -525,8 +545,9 @@ repo.readme::
        file. Default value: <readme>.
 
 repo.snapshots::
-       A mask of allowed snapshot-formats for this repo, restricted by the
-       "snapshots" global setting. Default value: <snapshots>.
+       A mask of snapshot formats for this repo that cgit generates links for,
+       restricted by the global "snapshots" setting. Default value:
+       <snapshots>.
 
 repo.section::
        Override the current section name for this repository. Default value:
@@ -556,6 +577,47 @@ config files, e.g. "repo.desc" becomes "desc".
 
 FILTER API
 ----------
+By default, filters are separate processes that are executed each time they
+are needed.  Alternative technologies may be used by prefixing the filter
+specification with the relevant string; available values are:
+
+'exec:'::
+       The default "one process per filter" mode.
+
+'lua:'::
+       Executes the script using a built-in Lua interpreter. The script is
+       loaded once per execution of cgit, and may be called multiple times
+       during cgit's lifetime, making it a good choice for repeated filters
+       such as the 'email filter'. It responds to three functions:
+
+       'filter_open(argument1, argument2, argument3, ...)'::
+               This is called upon activation of the filter for a particular
+               set of data.
+       'filter_write(buffer)'::
+               This is called whenever cgit writes data to the webpage.
+       'filter_close()'::
+               This is called when the current filtering operation is
+               completed. It must return an integer value. Usually 0
+               indicates success.
+       
+       Additionally, cgit exposes to the Lua the following built-in functions:
+
+       'html(str)'::
+               Writes 'str' to the webpage.
+       'html_txt(str)'::
+               HTML escapes and writes 'str' to the webpage.
+       'html_attr(str)'::
+               HTML escapes for an attribute and writes "str' to the webpage.
+       'html_url_path(str)'::
+               URL escapes for a path and writes 'str' to the webpage.
+       'html_url_arg(str)'::
+               URL escapes for an argument and writes 'str' to the webpage.
+       'html_include(file)'::
+               Includes 'file' in webpage.
+
+
+Parameters are provided to filters as follows.
+
 about filter::
        This filter is given a single parameter: the filename of the source
        file to filter. The filter can use the filename to determine (for
@@ -568,6 +630,13 @@ commit filter::
        be filtered is available on standard input and the filtered text is
        expected on standard output.
 
+email filter::
+       This filter is given two parameters: the email address of the relevent
+       author and a string indicating the originating page. The filter will
+       then receive the text string to format on standard input and is
+       expected to write to standard output the formatted text to be included
+       in the page.
+
 source filter::
        This filter is given a single parameter: the filename of the source
        file to filter. The filter can use the filename to determine (for
@@ -575,7 +644,32 @@ source filter::
        file that is to be filtered is available on standard input and the
        filtered contents is expected on standard output.
 
-Also, all filters are handed the following environment variables:
+auth filter::
+       The authentication filter receives 11 parameters:
+         - filter action, explained below, which specifies which action the
+           filter is called for
+         - http cookie
+         - http method
+         - http referer
+         - http path
+         - http https flag
+         - cgit repo
+         - cgit page
+         - cgit url
+       When the filter action is "body", this filter must write to output the
+       HTML for displaying the login form, which POSTs to "/?p=login". When
+       the filter action is "authenticate-cookie", this filter must validate
+       the http cookie and return a 0 if it is invalid or 1 if it is invalid,
+       in the exit code / close function. If the filter action is
+       "authenticate-post", this filter receives POST'd parameters on
+       standard input, and should write to output one or more "Set-Cookie"
+       HTTP headers, each followed by a newline.
+
+       Please see `filters/simple-authentication.lua` for a clear example
+       script that may be modified.
+
+
+All filters are handed the following environment variables:
 
 - CGIT_REPO_URL (from repo.url)
 - CGIT_REPO_NAME (from repo.name)
@@ -592,8 +686,8 @@ environment variable will be unset.
 
 MACRO EXPANSION
 ---------------
-The following cgitrc options supports a simple macro expansion feature,
-where tokens prefixed with "$" are replaced with the value of a similary
+The following cgitrc options support a simple macro expansion feature,
+where tokens prefixed with "$" are replaced with the value of a similarly
 named environment variable:
 
 - cache-root
@@ -620,7 +714,7 @@ EXAMPLE CGITRC FILE
 -------------------
 
 ....
-# Enable caching of up to 1000 output entriess
+# Enable caching of up to 1000 output entries
 cache-size=1000
 
 
@@ -636,7 +730,7 @@ enable-index-owner=1
 
 
 # Allow http transport git clone
-enable-git-clone=1
+enable-http-clone=1
 
 
 # Show extra links for each repository on the index page
@@ -700,7 +794,7 @@ mimetype.png=image/png
 mimetype.svg=image/svg+xml
 
 
-# Highlight source code with python pygments-based highligher
+# Highlight source code with python pygments-based highlighter
 source-filter=/var/www/cgit/filters/syntax-highlighting.py
 
 # Format markdown, restructuredtext, manpages, text files, and html files