=============
GNU ANASTASIS
=============

This package includes the Anastasis core logic.  The code is released
under the GNU Affero General Public License (v3 or later).  See
COPYING for details.

Description
===========

GNU Anastasis is a key backup and recovery tool from the GNU project.
This package includes the backend run by the Anastasis providers as
well as libraries for clients and a command-line interface.

Installation instructions can be found in INSTALL and
also in the handbook at https://docs.anastasis.lu/ which
is also in the doc/ folder. Please note that you must run
'make install' before you can run the testsuite using
'make check'.


Dependencies
============

Build tools for compiling Anastasis from source:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

- gcc or clang
- autoconf           >= 2.69        (building from git)
- automake           >= 1.11.1      (building from git)
- recutils           >= 1.0         (building from git)
- libtool            >= 2.2
- makeinfo           >= 4.8
- make[*3]
- pkgconf or pkg-config
- sphinx
- sphinx-rtd-theme
- sphinx-multiversion


Direct dependencies
~~~~~~~~~~~~~~~~~~~

These are the direct dependencies for running Anastasis:

- GNU Taler merchant >= 0.14.0
- PostgreSQL         >= 15.0


Directory structure
===================

src/include/ includes installed (public) headers
src/util/ implements helper and crypto routines
src/backend/ contains the REST service
src/stasis/ implements the database logic for the backend
src/authorization/ contains various authorization plugins
src/restclient/ implements a REST client for the backend
src/lib/ implements the main client-side backup and recovery logic
src/testing/ contains test cases for 'src/restclient/' and 'src/lib/'
src/reducer/ implements a reducer API on top of 'src/lib/'
src/cli/ includes a reducer-based command-line interface
contrib/ contains resource files, like what identity attributes to ask for
doc/ contains documentation files, like TeXinfo
po/ internationalization via GNU gettext


Development note
================

To test against a local development service, add

	{
	    "code" : "xx",
	    "name" : "Testland",
	    "continent" : "Demoworld",
	    "call_code" : "+00"
	}

to contrib/redux.countries.json, and also append something like

	{
            "url" : "http://localhost:8086/",
            "restricted" : "xx"
	},
	{
            "url" : "http://localhost:8087/",
            "restricted" : "xx"
	},
	{
            "url" : "http://localhost:8088/",
            "restricted" : "xx"
	},
	{
            "url" : "http://localhost:8089/",
            "restricted" : "xx"
	}

to contrib/provider-list.json. Then the reducer will use these
providers on loopback for the "testland" country.


Experimental providers
======================

We hope to have another provider running soon. Once it is operational,
we should add

        {
            "url" : "https://v1.anastasis.openw3b.org/",
            "name" : "Openw3b Foundation, India"
        },

to the contrib/provider-list.json.
