diff --git a/.gitignore b/.gitignore
index 523482a..277ad76 100644
--- a/.gitignore
+++ b/.gitignore
@@ -57,3 +57,6 @@ vendor/
# vim swap file
*.swp
+
+# rst doc stuff
+_build/
diff --git a/ChangeLog.rst b/ChangeLog.rst
new file mode 100644
index 0000000..a2766d8
--- /dev/null
+++ b/ChangeLog.rst
@@ -0,0 +1,5 @@
+Changelogs
+==========
+
+dev
+---
diff --git a/README.rst b/README.rst
index 894c161..a11272c 100644
--- a/README.rst
+++ b/README.rst
@@ -4,214 +4,33 @@ uts-server
.. image:: https://travis-ci.org/kakwa/uts-server.svg?branch=master
:target: https://travis-ci.org/kakwa/uts-server
+.. image:: https://readthedocs.org/projects/uts-server/badge/?version=latest
+ :target: http://uts-server.readthedocs.org/en/latest/?badge=latest
+ :alt: Documentation Status
+
Micro timestamp server (RFC 3161) written in C
+----
+
+:Doc: `Uts-Server documentation on ReadTheDoc `_
+:Dev: `Uts-Server source code on GitHub `_
+:License: MIT
+:Author: Pierre-Francois Carpentier - copyright © 2016
+
+----
+
Status
------
Alpha
-Dependencies
-------------
-
-Runtime dependencies
-~~~~~~~~~~~~~~~~~~~~
-
-* OpenSSL (https://github.com/openssl/openssl)
-* civetweb (https://github.com/civetweb/civetweb)
-
-Build dependencies
-~~~~~~~~~~~~~~~~~~
-
-* cmake
-* either gcc or clang
-
License
-------
Released under the MIT Public License
-Usage
------
-
-.. sourcecode:: bash
-
- $ ./uts-server --help
- Usage: uts-server [OPTION...] -c CONFFILE [-d] [-D] [-p ]
-
- UTS micro timestamp server (RFC 3161)
-
- -c, --conffile=CONFFILE Path to configuration file
- -d, --daemonize Launch as a daemon
- -D, --debug STDOUT debugging
- -p, --pidfile=PIDFILE Path to pid file
- -?, --help Give this help list
- --usage Give a short usage message
- -V, --version Print program version
-
- Mandatory or optional arguments to long options are also mandatory or optional
- for any corresponding short options.
-
- Report bugs to Pierre-Francois Carpentier .
-
-Configuration
--------------
-
-main
-~~~~
-
-Main configuration section (mostly http configuration).
-
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| param | description | example value |
-+=============================+=====================================================================+======================================+
-| access_control_allow_origin | Comma separated list of IP subnets to accept/deny | -0.0.0.0/0,+192.168/16 |
-| | | |
-| | Ex: -0.0.0.0/0,+192.168.0.0/16 | |
-| | (deny all accesses, only allow 192.168.0.0/16 subnet) | |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| enable_keep_alive | Allows clients to reuse TCP connection for subsequent | no |
-| | HTTP requests, which improves performance. | |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| listening_ports | Comma-separated list of ips:ports to listen on. | 127.0.0.1:2020 |
-| | If the port is SSL, a letter s must be appended. | |
-| | Ex: listening_ports = 80,443s | |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| log_level | Loglevel (debug, info, notice, warn, err, emerg, crit) | info |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| num_threads | Number of worker threads. | 50 |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| request_timeout_ms | Timeout for network read and network write operations. | 30000 |
-| | In milliseconds. | |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| run_as_user | Switch to given user credentials after startup. | uts-server |
-| | Required to run on privileged ports as non root user. | |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| ssl_ca_file | Path to a .pem file containing trusted certificates. | /etc/uts-server/ca.pem |
-| | The file may contain more than one certificate. | |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| ssl_ca_path | Name of a directory containing trusted CA certificates. | /etc/ssl/ca/ |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| ssl_certificate | Path to the SSL certificate file . | /etc/uts-server/cert.pem |
-| | PEM format must contain private key and certificate. | |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| ssl_cipher_list | See https://www.openssl.org/docs/manmaster/apps/ciphers.html | ALL:!eNULL |
-| | for more detailed | |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| ssl_default_verify_paths | Loads default trusted certificates | yes |
-| | locations set at openssl compile time. | |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| ssl_protocol_version | Sets the minimal accepted version of SSL/TLS protocol | 3 |
-| | according to the table: | |
-| | | |
-| | - SSL2+SSL3+TLS1.0+TLS1.1+TLS1.2 -> 0 | |
-| | | |
-| | - SSL3+TLS1.0+TLS1.1+TLS1.2 -> 1 | |
-| | | |
-| | - TLS1.0+TLS1.1+TLS1.2 -> 2 | |
-| | | |
-| | - TLS1.1+TLS1.2 -> 3 | |
-| | | |
-| | - TLS1.2 -> 4 | |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| ssl_short_trust | Enables the use of short lived certificates | no |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| ssl_verify_depth | Sets maximum depth of certificate chain. | 9 |
-| | If client's certificate chain is longer | |
-| | than the depth set here connection is refused. | |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| ssl_verify_peer | Enable client's certificate verification by the server. | yes |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| tcp_nodelay | Enable TCP_NODELAY socket option on client connections. | 0 |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| throttle | Limit download speed for clients. | \*=0 |
-| | | |
-| | Throttle is a comma-separated list of key=value pairs: | |
-| | | |
-| | - \* -> limit speed for all connections | |
-| | | |
-| | - x.x.x.x/mask -> limit speed for specified subnet | |
-| | | |
-| | The value is a floating-point number of bytes per second, | |
-| | optionally followed by a k or m character | |
-| | meaning kilobytes and megabytes respectively. | |
-| | | |
-| | A limit of 0 means unlimited rate. | |
-| | | |
-| | Ex: throttle = \*=1k,10.10.0.0/16=10m,10.20.0.0/16=0 | |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-
-oids
-~~~~
-
-Section for declarinG OID mapping. Just add = pairs.
-
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| param | description | example value |
-+=============================+=====================================================================+======================================+
-| tsa_policy1 | | 1.2.3.4.1 |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| tsa_policy2 | | 1.2.3.4.5.6 |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| tsa_policy3 | | 1.2.3.4.5.7 |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-
-tsa
-~~~
-
-Section defining which TSA section to use.
-
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| param | description | example value |
-+=============================+=====================================================================+======================================+
-| default_tsa | Name of the TSA section to use as default. | tsa_config1 |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-
-tsa_config1
-~~~~~~~~~~~
-
-Example of timestamp section configuration.
-
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| param | description | example value |
-+=============================+=====================================================================+======================================+
-| accuracy | Timestamp accuracy. (optional) | secs:1, millisecs:500, microsecs:100 |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| certs | Certificate chain to include in reply. (optional) | $dir/cacert.pem |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| clock_precision_digits | Number of decimals for timestamp. (optional) | 0 |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| crypto_device | OpenSSL engine to use for signing. | builtin |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| default_policy | Policy if request did not specify it. (optional) | tsa_policy1 |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| digests | Acceptable message digests. (mandatory) | md5, sha1 |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| dir | TSA root directory. | /etc/uts-server/pki |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| ess_cert_id_chain | Must the ESS cert id chain be included? (optional, default: no) | no |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| ordering | Is ordering defined for timestamps? (optional, default: no) | yes |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| other_policies | Acceptable policies. (optional) | tsa_policy2, tsa_policy3 |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| signer_cert | The TSA signing certificat. (optional) | $dir/tsacert.pem |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| signer_key | The TSA private key. (optional) | $dir/private/tsakey.pem |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-| tsa_name | Must the TSA name be included in the reply? (optional, default: no) | yes |
-+-----------------------------+---------------------------------------------------------------------+--------------------------------------+
-
-Building
---------
-
-.. sourcecode:: bash
-
- $ cmake .
- $ make -j 2
-
-Playing with it
----------------
+Quick Start
+-----------
.. sourcecode:: bash
diff --git a/conf/uts-server.cnf b/conf/uts-server.cnf
index 97d7f9d..3d61e9f 100644
--- a/conf/uts-server.cnf
+++ b/conf/uts-server.cnf
@@ -10,6 +10,7 @@ tsa_policy3 = 1.2.3.4.5.7
# Comma-separated list of ips:ports to listen on.
# If the port is SSL, a letter s must be appended.
+#
# Ex: listening_ports = 80,443s
listening_ports = 127.0.0.1:2020
diff --git a/docs/changelog.rst b/docs/changelog.rst
new file mode 120000
index 0000000..a1c5b37
--- /dev/null
+++ b/docs/changelog.rst
@@ -0,0 +1 @@
+../ChangeLog.rst
\ No newline at end of file
diff --git a/docs/conf.py b/docs/conf.py
index ae93ca6..d185ecd 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -1,10 +1,9 @@
# -*- coding: utf-8 -*-
#
-# uts-server documentation build configuration file, created by
-# sphinx-quickstart on Wed Dec 16 23:08:56 2015.
+# SST (selenium-simple-test) documentation build configuration file, created by
+# sphinx-quickstart on Mon May 16 14:23:09 2011.
#
-# This file is execfile()d with the current directory set to its
-# containing dir.
+# This file is execfile()d with the current directory set to its containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
@@ -12,26 +11,25 @@
# All configuration values have a default; values that are commented out
# serve to show the default.
-import sys
-import os
-
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
-#sys.path.insert(0, os.path.abspath('.'))
+import os
+import sys
-# -- General configuration ------------------------------------------------
+sys.path.insert(0, os.path.abspath('..'))
+
+# -- General configuration -----------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
#needs_sphinx = '1.0'
-# Add any Sphinx extension module names here, as strings. They can be
-# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
-# ones.
-extensions = []
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.viewcode']
# Add any paths that contain templates here, relative to this directory.
-templates_path = ['_templates']
+#templates_path = ['_templates']
# The suffix of source filenames.
source_suffix = '.rst'
@@ -43,17 +41,16 @@ source_suffix = '.rst'
master_doc = 'index'
# General information about the project.
-project = u'uts-server'
-copyright = u'2015, Pierre-Francois Carpentier'
+project = u'uts-server - RFC 3161 Timestamp Server'
+copyright = u'2016, Pierre-Francois Carpentier'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
-version = '0.1.0'
# The full version, including alpha/beta/rc tags.
-release = '0.1.0'
+release = '0.0.1'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
@@ -67,10 +64,9 @@ release = '0.1.0'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
-exclude_patterns = ['_build']
+#exclude_patterns = ['_build']
-# The reST default role (used for this markup: `text`) to use for all
-# documents.
+# The reST default role (used for this markup: `text`) to use for all documents.
#default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
@@ -90,15 +86,12 @@ pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
-# If true, keep warnings as "system message" paragraphs in the built documents.
-#keep_warnings = False
-
-# -- Options for HTML output ----------------------------------------------
+# -- Options for HTML output ---------------------------------------------------
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
-html_theme = 'default'
+html_theme = 'nature'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
@@ -110,33 +103,27 @@ html_theme = 'default'
# The name for this set of Sphinx documents. If None, it defaults to
# " v documentation".
-#html_title = None
+html_title = 'Uts-Server %s Docs' % release
# A shorter title for the navigation bar. Default is the same as html_title.
-#html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
-#html_logo = None
+html_logo = './_static/logo.svg'
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
-#html_favicon = None
+html_favicon = './_static/favicon.png'
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ['_static']
-
-# Add any extra paths that contain custom files (such as robots.txt or
-# .htaccess) here, relative to this directory. These files are copied
-# directly to the root of the documentation.
-#html_extra_path = []
+html_static_path = ['assets']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
-#html_last_updated_fmt = '%b %d, %Y'
+html_last_updated_fmt = '%b %d, %Y'
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
@@ -153,176 +140,27 @@ html_static_path = ['_static']
#html_domain_indices = True
# If false, no index is generated.
-#html_use_index = True
+html_use_index = False
# If true, the index is split into individual pages for each letter.
-#html_split_index = False
+html_split_index = False
# If true, links to the reST sources are added to the pages.
-#html_show_sourcelink = True
+html_show_sourcelink = False
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
-#html_show_sphinx = True
+html_show_sphinx = False
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
-#html_show_copyright = True
+html_show_copyright = True
-# If true, an OpenSearch description file will be output, and all pages will
+# If true, an Opendescription file will be output, and all pages will
# contain a tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''
# This is the file name suffix for HTML files (e.g. ".xhtml").
-#html_file_suffix = None
+html_file_suffix = ".html"
# Output file base name for HTML help builder.
-htmlhelp_basename = 'uts-serverdoc'
-
-
-# -- Options for LaTeX output ---------------------------------------------
-
-latex_elements = {
-# The paper size ('letterpaper' or 'a4paper').
-#'papersize': 'letterpaper',
-
-# The font size ('10pt', '11pt' or '12pt').
-#'pointsize': '10pt',
-
-# Additional stuff for the LaTeX preamble.
-#'preamble': '',
-}
-
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title,
-# author, documentclass [howto, manual, or own class]).
-latex_documents = [
- ('index', 'uts-server.tex', u'uts-server Documentation',
- u'Pierre-Francois Carpentier', 'manual'),
-]
-
-# The name of an image file (relative to this directory) to place at the top of
-# the title page.
-#latex_logo = None
-
-# For "manual" documents, if this is true, then toplevel headings are parts,
-# not chapters.
-#latex_use_parts = False
-
-# If true, show page references after internal links.
-#latex_show_pagerefs = False
-
-# If true, show URL addresses after external links.
-#latex_show_urls = False
-
-# Documents to append as an appendix to all manuals.
-#latex_appendices = []
-
-# If false, no module index is generated.
-#latex_domain_indices = True
-
-
-# -- Options for manual page output ---------------------------------------
-
-# One entry per manual page. List of tuples
-# (source start file, name, description, authors, manual section).
-man_pages = [
- ('index', 'uts-server', u'uts-server Documentation',
- [u'Pierre-Francois Carpentier'], 1)
-]
-
-# If true, show URL addresses after external links.
-#man_show_urls = False
-
-
-# -- Options for Texinfo output -------------------------------------------
-
-# Grouping the document tree into Texinfo files. List of tuples
-# (source start file, target name, title, author,
-# dir menu entry, description, category)
-texinfo_documents = [
- ('index', 'uts-server', u'uts-server Documentation',
- u'Pierre-Francois Carpentier', 'uts-server', 'One line description of project.',
- 'Miscellaneous'),
-]
-
-# Documents to append as an appendix to all manuals.
-#texinfo_appendices = []
-
-# If false, no module index is generated.
-#texinfo_domain_indices = True
-
-# How to display URL addresses: 'footnote', 'no', or 'inline'.
-#texinfo_show_urls = 'footnote'
-
-# If true, do not generate a @detailmenu in the "Top" node's menu.
-#texinfo_no_detailmenu = False
-
-
-# -- Options for Epub output ----------------------------------------------
-
-# Bibliographic Dublin Core info.
-epub_title = u'uts-server'
-epub_author = u'Pierre-Francois Carpentier'
-epub_publisher = u'Pierre-Francois Carpentier'
-epub_copyright = u'2015, Pierre-Francois Carpentier'
-
-# The basename for the epub file. It defaults to the project name.
-#epub_basename = u'uts-server'
-
-# The HTML theme for the epub output. Since the default themes are not optimized
-# for small screen space, using the same theme for HTML and epub output is
-# usually not wise. This defaults to 'epub', a theme designed to save visual
-# space.
-#epub_theme = 'epub'
-
-# The language of the text. It defaults to the language option
-# or en if the language is not set.
-#epub_language = ''
-
-# The scheme of the identifier. Typical schemes are ISBN or URL.
-#epub_scheme = ''
-
-# The unique identifier of the text. This can be a ISBN number
-# or the project homepage.
-#epub_identifier = ''
-
-# A unique identification for the text.
-#epub_uid = ''
-
-# A tuple containing the cover image and cover page html template filenames.
-#epub_cover = ()
-
-# A sequence of (type, uri, title) tuples for the guide element of content.opf.
-#epub_guide = ()
-
-# HTML files that should be inserted before the pages created by sphinx.
-# The format is a list of tuples containing the path and title.
-#epub_pre_files = []
-
-# HTML files shat should be inserted after the pages created by sphinx.
-# The format is a list of tuples containing the path and title.
-#epub_post_files = []
-
-# A list of files that should not be packed into the epub file.
-epub_exclude_files = ['search.html']
-
-# The depth of the table of contents in toc.ncx.
-#epub_tocdepth = 3
-
-# Allow duplicate toc entries.
-#epub_tocdup = True
-
-# Choose between 'default' and 'includehidden'.
-#epub_tocscope = 'default'
-
-# Fix unsupported image types using the PIL.
-#epub_fix_images = False
-
-# Scale large images.
-#epub_max_image_width = 0
-
-# How to display URL addresses: 'footnote', 'no', or 'inline'.
-#epub_show_urls = 'inline'
-
-# If false, no index is generated.
-#epub_use_index = True
+htmlhelp_basename = 'uts-server-docs'
diff --git a/docs/configure.rst b/docs/configure.rst
new file mode 100644
index 0000000..44fdb54
--- /dev/null
+++ b/docs/configure.rst
@@ -0,0 +1,153 @@
+Configuration Parameters
+========================
+Section [ main ]
+----------------
+
+Main configuration section (mostly http configuration).
+
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| Parameter | Description | Example Value |
++=============================+=====================================================================+======================================+
+| access_control_allow_origin | Comma separated list of IP subnets to accept/deny | -0.0.0.0/0,+192.168/16 |
+| | | |
+| | Ex: -0.0.0.0/0,+192.168.0.0/16 | |
+| | (deny all accesses, only allow 192.168.0.0/16 subnet) | |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| enable_keep_alive | Allows clients to reuse TCP connection for subsequent | no |
+| | HTTP requests, which improves performance. | |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| listening_ports | Comma-separated list of ips:ports to listen on. | 127.0.0.1:2020 |
+| | If the port is SSL, a letter s must be appended. | |
+| | | |
+| | Ex: listening_ports = 80,443s | |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| log_level | Loglevel (debug, info, notice, warn, err, emerg, crit) | info |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| num_threads | Number of worker threads. | 50 |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| request_timeout_ms | Timeout for network read and network write operations. | 30000 |
+| | In milliseconds. | |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| run_as_user | Switch to given user credentials after startup. | uts-server |
+| | Required to run on privileged ports as non root user. | |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| ssl_ca_file | Path to a .pem file containing trusted certificates. | /etc/uts-server/ca.pem |
+| | The file may contain more than one certificate. | |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| ssl_ca_path | Name of a directory containing trusted CA certificates. | /etc/ssl/ca/ |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| ssl_certificate | Path to the SSL certificate file . | /etc/uts-server/cert.pem |
+| | PEM format must contain private key and certificate. | |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| ssl_cipher_list | See https://www.openssl.org/docs/manmaster/apps/ciphers.html | ALL:!eNULL |
+| | for more detailed | |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| ssl_default_verify_paths | Loads default trusted certificates | yes |
+| | locations set at openssl compile time. | |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| ssl_protocol_version | Sets the minimal accepted version of SSL/TLS protocol | 3 |
+| | according to the table: | |
+| | | |
+| | - SSL2+SSL3+TLS1.0+TLS1.1+TLS1.2 -> 0 | |
+| | | |
+| | - SSL3+TLS1.0+TLS1.1+TLS1.2 -> 1 | |
+| | | |
+| | - TLS1.0+TLS1.1+TLS1.2 -> 2 | |
+| | | |
+| | - TLS1.1+TLS1.2 -> 3 | |
+| | | |
+| | - TLS1.2 -> 4 | |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| ssl_short_trust | Enables the use of short lived certificates | no |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| ssl_verify_depth | Sets maximum depth of certificate chain. | 9 |
+| | If client's certificate chain is longer | |
+| | than the depth set here connection is refused. | |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| ssl_verify_peer | Enable client's certificate verification by the server. | yes |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| tcp_nodelay | Enable TCP_NODELAY socket option on client connections. | 0 |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| throttle | Limit download speed for clients. | \*=0 |
+| | | |
+| | Throttle is a comma-separated list of key=value pairs: | |
+| | | |
+| | - \* -> limit speed for all connections | |
+| | | |
+| | - x.x.x.x/mask -> limit speed for specified subnet | |
+| | | |
+| | The value is a floating-point number of bytes per second, | |
+| | optionally followed by a k or m character | |
+| | meaning kilobytes and megabytes respectively. | |
+| | | |
+| | A limit of 0 means unlimited rate. | |
+| | | |
+| | Ex: throttle = \*=1k,10.10.0.0/16=10m,10.20.0.0/16=0 | |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+
+Section [ oids ]
+----------------
+
+Section for declarinG OID mapping. Just add = pairs.
+
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| Parameter | Description | Example Value |
++=============================+=====================================================================+======================================+
+| tsa_policy1 | | 1.2.3.4.1 |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| tsa_policy2 | | 1.2.3.4.5.6 |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| tsa_policy3 | | 1.2.3.4.5.7 |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+
+Section [ tsa ]
+---------------
+
+Section defining which TSA section to use.
+
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| Parameter | Description | Example Value |
++=============================+=====================================================================+======================================+
+| default_tsa | Name of the TSA section to use as default. | tsa_config1 |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+
+Section [ tsa_config1 ]
+-----------------------
+
+Example of timestamp section configuration.
+
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| Parameter | Description | Example Value |
++=============================+=====================================================================+======================================+
+| accuracy | Timestamp accuracy. (optional) | secs:1, millisecs:500, microsecs:100 |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| certs | Certificate chain to include in reply. (optional) | $dir/cacert.pem |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| clock_precision_digits | Number of decimals for timestamp. (optional) | 0 |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| crypto_device | OpenSSL engine to use for signing. | builtin |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| default_policy | Policy if request did not specify it. (optional) | tsa_policy1 |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| digests | Acceptable message digests. (mandatory) | md5, sha1 |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| dir | TSA root directory. | /etc/uts-server/pki |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| ess_cert_id_chain | Must the ESS cert id chain be included? (optional, default: no) | no |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| ordering | Is ordering defined for timestamps? (optional, default: no) | yes |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| other_policies | Acceptable policies. (optional) | tsa_policy2, tsa_policy3 |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| signer_cert | The TSA signing certificat. (optional) | $dir/tsacert.pem |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| signer_key | The TSA private key. (optional) | $dir/private/tsakey.pem |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+| tsa_name | Must the TSA name be included in the reply? (optional, default: no) | yes |
++-----------------------------+---------------------------------------------------------------------+--------------------------------------+
+
+Full Configuration File
+=======================
+
+.. literalinclude:: ../conf/uts-server.cnf
+ :language: ini
diff --git a/docs/deploy.rst b/docs/deploy.rst
new file mode 100644
index 0000000..13b8f22
--- /dev/null
+++ b/docs/deploy.rst
@@ -0,0 +1,43 @@
+Deploy
+======
+
+Usage
+-----
+
+.. sourcecode:: bash
+
+ $ ./uts-server --help
+ Usage: uts-server [OPTION...] -c CONFFILE [-d] [-D] [-p ]
+
+ UTS micro timestamp server (RFC 3161)
+
+ -c, --conffile=CONFFILE Path to configuration file
+ -d, --daemonize Launch as a daemon
+ -D, --debug STDOUT debugging
+ -p, --pidfile=PIDFILE Path to pid file
+ -?, --help Give this help list
+ --usage Give a short usage message
+ -V, --version Print program version
+
+ Mandatory or optional arguments to long options are also mandatory or optional
+ for any corresponding short options.
+
+ Report bugs to Pierre-Francois Carpentier .
+
+Running uts-sever
+-----------------
+
+To debug problems with uts-server, run it in the foreground in debug mode:
+
+.. sourcecode:: bash
+
+ # In debug mode with verbose debugging on stdout
+ $ ./uts-server -c -D
+
+To run it as a daemon:
+
+.. sourcecode:: bash
+
+ # In daemon mode
+ $ ./uts-server -c -d -p
+
diff --git a/docs/forkme.rst b/docs/forkme.rst
new file mode 100644
index 0000000..cef04f5
--- /dev/null
+++ b/docs/forkme.rst
@@ -0,0 +1,3 @@
+.. raw:: html
+
+
diff --git a/docs/index.rst b/docs/index.rst
index 489fbeb..7682b48 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -1,22 +1,16 @@
-.. uts-server documentation master file, created by
- sphinx-quickstart on Wed Dec 16 23:08:56 2015.
- You can adapt this file completely to your liking, but it should at least
- contain the root `toctree` directive.
-
-Welcome to uts-server's documentation!
-======================================
-
-Contents:
+Table of Content
+================
.. toctree::
- :maxdepth: 2
+ :maxdepth: 2
+
+ install
+ configure
+ deploy
+ changelog
+ goodies
+.. include:: ../README.rst
-
-Indices and tables
-==================
-
-* :ref:`genindex`
-* :ref:`modindex`
-* :ref:`search`
+.. include:: forkme.rst
diff --git a/docs/install.rst b/docs/install.rst
new file mode 100644
index 0000000..5bbba0b
--- /dev/null
+++ b/docs/install.rst
@@ -0,0 +1,38 @@
+Dependencies
+============
+
+Runtime dependencies
+--------------------
+
+List of dependencies uts-server relies on to run:
+
+* OpenSSL (https://github.com/openssl/openssl)
+* civetweb (https://github.com/civetweb/civetweb)
+
+Build dependencies
+------------------
+
+List of dependencies needed to build civetweb:
+
+* cmake
+* either gcc or clang
+
+Compilation
+===========
+
+uts-server is compiled using cmake:
+
+.. sourcecode:: bash
+
+ # If civetweb is already present on the system
+ $ cmake .
+ $ make
+
+ # If civetweb is not present
+ # this will get the proper tag of civetweb from upstream and compile it
+ $ cmake . -DBUNDLE_CIVETWEB=ON
+ $ make
+
+ # Compile with debug flags
+ $ cmake . -DDEBUG=ON
+ $ make
diff --git a/goodies/build_param_table.py b/goodies/build_param_table.py
index 62bdb6b..9ac12c9 100755
--- a/goodies/build_param_table.py
+++ b/goodies/build_param_table.py
@@ -37,7 +37,6 @@ with open(tsq_path) as f:
docs[cur_section]['vars'][var] = {'desc': text_buf, 'val': ex_val}
text_buf = ""
-#print docs
max_var = 0
max_desc = 0
max_val = 0
@@ -60,14 +59,18 @@ def print_line(var, desc, val):
' |')
+print('Configuration Parameters')
+print('=' * len('Configuration Parameters'))
+
+
for section in sorted(docs):
- print(section)
- print('~' * len(section))
+ print('Section [ ' + section + ' ]')
+ print('-' * len('Section [ ' + section + ' ]'))
print('')
print(docs[section]['text'])
print('')
print('+-' + '-' * max_var + '-+-' + '-' * max_desc + '-+-' + '-' * max_val + '-+')
- print_line('param', 'description', 'example value')
+ print_line('Parameter', 'Description', 'Example Value')
print('+=' + '=' * max_var + '=+=' + '=' * max_desc + '=+=' + '=' * max_val + '=+')
for var in sorted(docs[section]['vars']):
if docs[section]['vars'][var]:
@@ -84,3 +87,9 @@ for section in sorted(docs):
print_line('', re.sub('\*', '\\*', line), '')
print('+-' + '-' * max_var + '-+-' + '-' * max_desc + '-+-' + '-' * max_val + '-+')
print('')
+print('Full Configuration File')
+print('=' * len('Full Configuration File'))
+print('')
+print('.. literalinclude:: ../conf/uts-server.cnf')
+print(' :language: ini')
+