C library for the Public Suffix List
Go to file
Tim Ruehsen 79cd551b17 fixed libicu implementation, use pkg-config for libicu detection 2014-06-05 11:39:28 +02:00
data Updated to the latest PSL 2014-04-25 16:03:32 +02:00
docs/libpsl added psl_get_version(), bumped version to 0.2.5 2014-05-31 19:33:30 +02:00
include added psl_get_version(), bumped version to 0.2.5 2014-05-31 19:33:30 +02:00
po autoconf first version 2014-03-20 22:43:04 +01:00
src fixed libicu implementation, use pkg-config for libicu detection 2014-06-05 11:39:28 +02:00
tests remove LIBPSL_API_VERSION for simplicity 2014-05-31 18:56:07 +02:00
tools added --version to psl utility 2014-06-01 12:01:47 +02:00
.dir-locals.el document indentation conventions for emacs users 2014-03-21 14:39:17 -04:00
.gitignore git should ignore ephemeral files. 2014-03-21 14:19:25 -04:00
.travis.yml added IDNA2008 UTS#46 via libicu 2014-06-04 13:20:34 +02:00
ABOUT-NLS autoconf first version 2014-03-20 22:43:04 +01:00
AUTHORS prepared for initial release 2014-04-25 12:36:59 +02:00
COPYING LGPL->MIT license, some cleanups 2014-03-24 20:41:46 +01:00
ChangeLog autoconf first version 2014-03-20 22:43:04 +01:00
LICENSE LGPL->MIT license, some cleanups 2014-03-24 20:41:46 +01:00
Makefile.am remove LIBPSL_API_VERSION for simplicity 2014-05-31 18:56:07 +02:00
NEWS added psl_get_version(), bumped version to 0.2.5 2014-05-31 19:33:30 +02:00
README inital commit 2014-03-20 17:17:24 +01:00
README.md added IDNA2008 UTS#46 via libicu 2014-06-04 13:20:34 +02:00
autogen.sh create m4 directory before gtkdocize 2014-04-02 11:23:38 +02:00
configure.ac fixed libicu implementation, use pkg-config for libicu detection 2014-06-05 11:39:28 +02:00
libpsl.pc.in remove LIBPSL_API_VERSION for simplicity 2014-05-31 18:56:07 +02:00

README.md

Build Status

libpsl - C library to handle the Public Suffix List

A "public suffix" is a domain name under which Internet users can directly register own names.

Browsers and other web clients can use it to

  • avoid privacy-leaking "supercookies"
  • avoid privacy-leaking "super domain" certificates (see post from Jeffry Walton)
  • domain highlighting parts of the domain in a user interface
  • sorting domain lists by site

Libpsl...

  • has built-in PSL data for fast access
  • allows to load PSL data from files
  • checks if a given domain is a "public suffix"
  • provides immediate cookie domain verification
  • finds the longest public part of a given domain
  • finds the shortest private part of a given domain
  • works with international domains (UTF-8 and IDNA2008 Punycode)
  • is thread-safe
  • handles IDNA2008 UTS#46 (library has to be compiled with libicu)

Find more information about the Publix Suffix List here.

Download the Public Suffix List here.

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.

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.

Building from git

Download project and prepare sources with

	git clone http://github.com/rockdaboot/libpsl
	./autogen.sh
	./configure
	make
	make check

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.