rockdaboot / libpsl

C library for the Public Suffix List
https://rockdaboot.github.io/libpsl
MIT License
172 stars 70 forks source link
hacktoberfest

Coverity Scan Coverage Status CodeQL

Solaris OpenCSW Build Status Solaris amd64 Build Status Solaris i386 Build Status Solaris Sparc Build Status Solaris SparcV9

libpsl - C library to handle the Public Suffix List

A Public Suffix List is a collection of Top Level Domains (TLDs) suffixes. TLDs include Global Top Level Domains (gTLDs) like .com and .net; Country Top Level Domains (ccTLDs) like .de and .cn; and Brand Top Level Domains like .apple and .google. Brand TLDs allows users to register their own top level domain that exist at the same level as ICANN's gTLDs. Brand TLDs are sometimes referred to as Vanity Domains.

Browsers, web clients and other user agents can use a public suffix list to:

Libpsl...

Find more information about the Public Suffix List here.

Download the Public Suffix List here.

The original DAFSA code is from the Chromium Project.

API Documentation

You find the current API documentation here.

Quick API example

#include <stdio.h>
#include <libpsl.h>

int main(int argc, char **argv)
{
    const char *domain = "www.example.com";
    const char *cookie_domain = ".com";
    const psl_ctx_t *psl = psl_builtin();
    int is_public, is_acceptable;

    is_public = psl_is_public_suffix(psl, domain);
    printf("%s %s a public suffix.\n", domain, is_public ? "is" : "is not");

    is_acceptable = psl_is_cookie_domain_acceptable(psl, domain, cookie_domain);
    printf("cookie domain '%s' %s acceptable for domain '%s'.\n",
        cookie_domain, is_acceptable ? "is" : "is not", domain);

    return 0;
}

Command Line Tool

Libpsl comes with a tool 'psl' that gives you access to most of the library API via command line.

$ psl --help

prints the usage.

Convert PSL into DAFSA

The DAFSA format is a compressed representation of strings. Here we use it to reduce the whole PSL to about 32k in size.

Generate psl.dafsa from list/public_suffix_list.dat

$ src/psl-make-dafsa --output-format=binary list/public_suffix_list.dat psl.dafsa

Test the result (example)

$ tools/psl --load-psl-file psl.dafsa aeroclub.aero

License

Libpsl is made available under the terms of the MIT license.
See the LICENSE file that accompanies this distribution for the full text of the license.

src/psl-make-dafsa and src/lookup_string_in_fixed_set.c are licensed under the term written in src/LICENSE.chromium.

Building from tarball

Choose a release from https://github.com/rockdaboot/libpsl/tags an download the tarball named libpsl-{version}.tar.*. Unpack with tar xf <filename>, cd into the libsl* directory.

Build with

./configure
make
make check

Install with

sudo make install

Building from git

Download project with

    git clone --recursive https://github.com/rockdaboot/libpsl
    cd libpsl

Building with GNU autotools

Prerequisites:

Building with meson

    meson builddir
    ninja -C builddir
    ninja -C builddir test

There is also an unofficial MSVC nmake build configuration in msvc/. Please see README.MSVC.md on building libpsl with Visual Studio via NMake or Meson.

Mailing List

Mailing List Archive

Mailing List

To join the mailing list send an email to

libpsl-bugs+subscribe@googlegroups.com

and follow the instructions provided by the answer mail.

Or click join.