4. Source code

The source code of FRED is divided into several subprojects.

The subprojects belong to one of the following groups depending on which tools are used to build them:

  • ::A:: stands for Autotools (used only in fred/db),

  • ::C:: stands for CMake (used with C++ code),

  • ::S:: stands for Python Setuptools.

Each subproject has its own GitHub repository.

4.1. Subprojects and repositories

Core

  • ::C:: fred/akm – a CLI CORBA client for automated keyset management

  • ::C:: fred/backend/gloss – gRPC logger simple service

  • ::C:: fred/backend/logger – Request logger implementation

  • ::C:: fred/backend/registry – FRED registry core services (gRPC)

  • ::C:: fred/cdnskey-scanner – a CLI tool to scan a set of domains for CDNSKEY records

  • ::S:: fred/client – a Python EPP client – a CLI application and an API library

  • ::A:: fred/db – a collection of SQL scripts to set up the database in PostgreSQL

  • ::S:: fred/doc2pdf – a Python wrapper over rml2pdf used for generation of PDF documents

  • ::C:: fred/ferda – FRED’s new webadmin tool (replacement of fred/webadmin)

  • ::C:: fred/idl – IDL interface definitions for CORBA inter-process communication

  • ::C:: fred/libfred – a C++ library implementing operations on core registry objects (dependency for fred/server)

  • ::C:: fred/mod-corba – an Apache module serving other two modules (EPP, WHOIS) the common functionality of CORBA communication

  • ::C:: fred/mod-eppd – an Apache module for parsing EPP commands and transforming them into CORBA calls to a back-end server (and vice versa)

  • ::C:: fred/mod-whoisd – an Apache module for processing WHOIS commands and transforming them into CORBA calls to a back-end server (and vice versa)

  • ::S:: fred/pyfred – a Python CORBA server and clients for zone-file generation, email communication, and technical checks, including file-manager components

  • ::S:: fred/rdap – an RDAP server (front end) prototype implemented with Django

  • ::C:: fred/server – C++ CORBA servers (back end) for the core registry functionality and a CLI administration tool

  • ::S:: fred/webadmin – the Daphne web administration server (front end) for registry customer support (mainly registrar creation and activity inspection)

  • ::S:: fred/webwhois – the web WHOIS server (front end) implemented with Django

Utilities

  • ::S:: fred/utils/grill – a gRPC interface logging library

  • ::S:: fred/utils/frgal – a FRED gRPC auxiliary library

  • ::S:: fred/utils/pyfco – a Python wrapper over CORBA (used by fred/rdap, fred/webwhois, fred/webadmin)

  • ::S:: fred/utils/pylogger – a Python wrapper over logging infrastructure for all Python clients (used by fred/rdap, fred/webwhois, fred/webadmin)

  • ::S:: fred/logger-maintenance – Python scripts for logger (audit log) database maintenance

PAIN (sample implementation of new billing)

  • ::S:: fred/transproc – a Python script for querying various sources of bank transactions (payments) and processing them with Django PAIN

  • ::S:: fred/django-pain – Django PAIN application

  • ::S:: fred/pain – FRED connector plugin for PAIN also based on Django