Skip to content
@go-directory

Go Directory

A Go-based Directory System Agent

go-directory

The Go Directory project is working towards releasing an LDAP package suite written entirely in Go.

Status

This suite as a whole is undergoing heavy development and is considered purely EXPERIMENTAL. Breaking changes are guaranteed during this development phase. As such, it is not yet suitable for production environments.

License

All packages in this suite are released under the terms of the MIT license. See each repository's LICENSE file for details.

Help Wanted

Community participation is greatly desired. This project is a gargantuan effort, and every bit helps. Email me if interested.

Packages

The go-directory suite is comprised of the following packages.

go-directory/dsa

The UNRELEASED go-directory/dsa package implements the directory system agent (an LDAP server). It incorporates vjeantet/ldapserver and vjeantet/goldap/message through vendoring.

This package, though bulky in its own right, mainly serves as a conductor for all of the other packages (below) that are imported.

go-directory/common

The go-directory/common package provides fundamental "common elements", such as error constants, helpers. It is considered a LOW LEVEL package, in that it does not import any other suite package itself, while all other suite packages import it.

Over time, this package will grow in attempt to address this issue.

go-directory/config

The go-directory/config package implements a cn=config abstraction layer for use by go-directory/dsa. It serves as the persistent configuration element of the DSA, controlling runtime behavior and many other facets.

go-directory/dib

The go-directory/dib package implements the basis of the X.500 directory information base, from which directory information trees can emerge. The package supports both ephemeral (memory-based) and persistent (bolt DB file) storage backend options through simple transparent interfaces.

boltdb/bolt is an integral imported component of this package.

go-directory/dua

The go-directory/dua package implements the directory user agent (client). It is a (renamed) fork of go-ldap/ldap.

WARNING: Users should NOT import this package for their own client purposes. This package exists solely as a component of the go-directory/dsa package for communicating with other DSAs for the purposes of chaining, replication and other distribution-related functions.

Users should continue using the original go-ldap/ldap package.

This package is slated to be radically modified in service to this issue.

go-directory/ldif

The go-directory/ldif package implements the LDAP Data Interchange Format. It is a fork of go-ldap/ldif.

WARNING: Users should NOT import this package for their own purposes. This package exists solely as a component of the go-directory/dsa package for backend purposes.

Users should continue using the original go-ldap/ldif package.

go-directory/schema

The go-directory/schema package implements a complete RFC 4512-compliant schema definition store and parser. The package supports the concepts of views, in which an authoritative *schema.SubschemaSubentry instance can "seed" specific separate and independents subschemaSubentry contexts.

The package contains the ldapSyntaxes, matchingRules, attributeTypes, matchingRuleUses, objectClasses, dITContentRules, nameForms and dITStructureRules syntax definitions not included in the go-directory/syntax package merely for reasons of logical separation.

The package also includes a package subdirectory at go-directory/schema/indexer. This package serves to "digest" an instance of *schema.SubschemaSubentry into a matrix of fast-lookup tables (maps).

go-directory/syntax

The go-directory/syntax package is a near-complete implementation of RFC 4517. It contains myriad types and methods for most of the constructs defined in the aforementioned standard.

The main purpose of this package is to confirm a particular value complies with the associated syntax and, where applicable, to conduct EQUALITY, SUBSTR and ORDERING matching operations between so-called "real" values and an assertion value delivered by way of an LDAP search filter.

See the following subsections for more specialized syntaxes implemented from other standards or pseudo standards.

go-directory/syntax/aci

The go-directory/syntax/aci package is a complete Netscape/Sun ACIv3 implementation. It incorporates the ENTIRE specification into simple interrogative types produced by a reliable parser.

Though not a true standard, the ACIv3 specification has been adopted by nearly all directory server products on the market today. It is hardened and time tested.

This package does NOT include an ACDF (or, Access Control Decision Function). This functionality is intended to reside within the go-directory/dsa package itself, as it will involve both an analysis of one or more rules and correlative queries to the storage backend.

go-directory/syntax/filter

The go-directory/syntax/filter package is a complete interface-based RFC 4515 implementation. It offers a fast, reliable parser which produces easly-traversable types for assertion processing.

An ASN.1 BER codec is not yet implemented in this package, but this effort is coming.

go-directory/syntax/subspec

The go-directory/syntax/subspec package is a complete interface-based RFC 3672 subtreeSpecification implementation.

The package offers a fast, reliable parser which produces easily-traversable types for subtree processing. In many respects, it mirrors the design and functionality of go-directory/syntax/filter. This package will be pivotal in terms of subentries and collective attribute functionality implementation planned for later this year.

This package includes an ASN.1 DER codec.

go-directory/syntax/x509

The go-directory/syntax/x509 package is a near-complete RFC 4523 implementation, offering syntaxes and matching rules for X.509 elements defined in the standard.

This package includes an ASN.1 DER codec.

Members

  • Jesse Coretta (project lead, maintainer)

Acknowledgements

Pinned Loading

  1. schema schema Public

    RFC4512 Directory Schema

    Go

  2. syntax syntax Public

    LDAP syntaxes and matching rules implementation

    Go

  3. dib dib Public

    Directory Information Base

    Go

  4. dua dua Public

    Forked from go-ldap/ldap

    Directory User Agent

    Go

  5. config config Public

    Basic cn=config abstraction

    Go

Repositories

Showing 8 of 8 repositories

Top languages

Loading…

Most used topics

Loading…