The cl-cheshire-cat Reference Manual

Next: , Previous: , Up: (dir)   [Contents][Index]

The cl-cheshire-cat Reference Manual

This is the cl-cheshire-cat Reference Manual, version 0.1, generated automatically by Declt version 4.0 beta 2 "William Riker" on Tue Nov 15 04:36:11 2022 GMT+0.

Table of Contents


1 Introduction

Summary

cl-cheshire-cat is a project for a CL redirection server.

The core of the server is based on Edi Weitz (http://weitz.de/) CL librairies, in particular:

The persistence layer is ensured using CL-STORE (http://common-lisp.net/project/cl-store).

Installation

The recommended way to install cheshire is by using quicklisp as much as possible:

  1. Using quicklisp, you can install:
  1. You need to manually install sb-daemon

If you use the provided cheshire.sh and cheshire.lisp, you also need to install py-configparser (available via quicklisp).

How to use

The recommended usage requires you to use SBCL (and optionnaly swank) and is divided in a three component process:

  1. The cheshire.sh script which is responsible for daemon management operations.
  2. The cheshire.lisp script which is responsible for loading and starting the cheshire daemon.
  3. The daemon itself.

You are encouraged to modify and adapt the first two component in the way most convinient to your own use of the Cheshire.

As mentionned, the default process is dependent on SBCL. However we would like Cheshire to be compatible with as many CL distributions as possible. Any adaptation of the starting process be compatible with a different CL distribution is welcome.

cheshire.sh

The daemon operations are performed using scripts/cheshire.sh. The first argument of the script is either start, stop, restart or status and makes the script perform the appropriate action. The script should always be executed as root.

If you copy this script directly into /etc/init.d/, there is a slight possibility that the script will run when started as root, but not at boot time (e.g. on Debian 6.0). In this case, you will need to specify locale and/or home in the configuration file. That's because the environment is not exactly the same one when the service is started at boot time.

Second, if you see that the error log is populated with messages "Cannot open such file" or "Cannot create such directory" when you use daemonize and privilege dropping, make sure all the directories Cheshire tries to right into are owned by the appropriate user. This include in particular home/.cache, home/.slime and their sub-directories.

The second argument is expected to be a configuration file. If none is given, /etc/cheshire.conf is the default configuration file.

cheshire.sh is looking for a pidfile= entry in the configuration file. If there is no such entry, /var/run/cheshire.pid is used.

The required action is then performed by cheshire.sh. If it needs to run the server, it assumes that scripts/cheshire.lisp is located as /usr/share/cheshire/scripts/cheshire.lisp unless it finds a system= directive in the configuration file.

cheshire.lisp

cheshire.lisp is loading the configuration file and starting the daemon. (Please refer to config/cheshire.conf for the details of the documentation). cheshire.lisp expects the configuration file as its first command-line argument and assumes that the cl-cheshire-cat system is loadable via (asdf:load-system "cl-cheshire-cat").

The starting process includes:

  1. starting to listen on the specified port
  2. daemon bookeeping (debugging, dropping privileges, swank loading)
  3. loading the redirection rules

The privileges are dropped after Cheshire started listening. This is a limitation from usocket and hunchentoot. This means:

Customization

If the recommended usage does not fit your use of Cheshire, feel free to adapt any of the previously described steps. They are made to be highly and easily customizable.

Note that the debugging bookeeping step in cheshire.lisp is provided for convinience. If you skip this part, Hunchentoot defaults will be used:

Behavior

The server is listening on the HTTP port (80), awaiting an HTTP query. Other ports will work, but you must keep in mind that no port rewritting facility is currently offered.

The server first search for a domain name rule to apply and then for a URI rewritting rule. The details of each rule is descript is the following section.

The rules are always checked in turn, if a rule matches, it's applied (and the search stop).

If no domain name matching rule is found and the domain name does not start with www., the server will send a "301 Moved Permanently" to the same URL with an additional www. prefix to domain name. If the domain name already starts with www., the server will return a "404 Not Found" error in order to avoid redirection loop.

If a domain name rule matched, Cheshire then search its list of URI rule to apply any addition URI modification. If there is no URI matching rule and no domain rewritting in effect, the server will return a "404 Not Found" error in order to prevent redirection loops.

Domain name rules parameters are used as default for its associated URI rules.

The loop protections intend to protect you from mild obvious rule specification errors. Their goal is not to prevent willingful redirection loops or mischievious configurations. For example it is easy to trick Cheshire into issuing infinite redirection loops with a domain name rule with no URI rule, key (:exact "www.domain.example") and replacement "www.domain.example". In other words you are responsible for the correctness of your redirection rules. Cheshire will not check them for you and there is no plan to do so in the future.

Unspecified behavior

Since Cheshire intends to be a production-grade product, we made our best to keep unspecified behavior implementation on a fail-early and safe basis.

For example, if you provide an invalid argument for a rule specification, we try to fail and send an error message when you create or update the rule rather than at apply time.

However, this behavior may not be always easy to have, don't forget that unspecified behaviour is still unspecified and may make Cheshire to crash on each and every request it receives.

Rules

Each rule is composed of two main elements:

Domain rules

Key

Three rules matching algorithms (kinds) are used:

Following the DNS specification ([RFC1035]), domain name matches are always case-insensitive.

Effect

Domain rewritting

If the rewrite specification is not nil, the domain will be rewritten.

If the rule is an exact match, the rewritte specification is use to replace the whole domain name.

If the rule is a suffix match, the rewritte specification may contain once the special substring "\1", which will be replaced by the prefix (non matching part) of the original domain name.

If the rule is a regex match, any string replacement accepted by cl-ppcre:regex-replace will be accepted and the result will be equivalent to (cl-ppcre:regex-replace regex original-domain-name replacement). Function designators are not allowed since they cannot be saved easily.

URI rules

A list of URI rewritting rules can be used for each domain.

Key

Three rules matching algorithms (kinds) are used:

URI match are case-sensitive by default (this can be changed via regex flags).

URI replacements for exact and regex match occurs the same way as Domain rewritting.

If the rule is a prefix match, the rewritte specification may contain once the special substring "\1", which will be replaced by the suffix (non matching part) of the original URI.

Redirection parameters

Each redirection specification can also include redirection parameters.

HTTP Status Code

The first parameter supported is http-code and its default value is 301.

http-code must be one of 300, 301 (default), 302, 303 or 307. This status code will be the one used in the answer sent to the client. The behavior is unspecified if an invalid status code specification is given.

HTTP/HTTPS Protocol

The second parameter is protocol and its default value is http.

protocol must be one of http or https and it is the protocol that will be used as the redirection target.

Port

The third and last parameter is port and its default depends on the value of protocol (443 if protocol is https, 80 otherwise).

port must be a valid port number (i.e. an integer between 1 and 63565).

Query string manipulation

Each rule can be given a list of query string manipulation to do. These operations are run before any rewritting occurs.

There are 5 operations which can be exectued on the list of get parameters:

The default behaviour is to leave the query string unmodified.

Clear

The first operation is the basic clearing of the whole query string in order to have a fresh start. Any operation executed before that one will be without effect.

Add

You can choose to add any get parameter to the URL. If the parameter already exists, it will be twice in the query string, which may create unexpected behaviour on the other side of the redirection.

The new parameter's value can be:

Parameters:

Delete

Of course, if you can add, you can delete.

Parameter:

Update (the value)

The value update is performed by applying a regular expression substitution to the value of the parameter.

Parameters:

Rename

Often, it's easier to rename a parameter than delete and re-create it.

Parameters:

Management

Management options can be setup when creating the server.

Currently two management options are supported:

Each CIDR network specifications is a pair of two elements. The first one is an IPv4 address (either a string in dotted notation "127.0.0.1" or a vector of four integers in host order #(127 0 0 1)). The second is the prefix-length of the CIDR block. If the second part is missing, its default value is 32.

The recommended tool to manage Cheshire is curl or another low level HTTP or TCP tool such as nc(1) or telnet(1).

The management API is splited in three parts:

  1. Global management
  2. Domain rules management
  3. URI rules management

Each operation is specified using three mecanisms:

  1. The URI of the operation (to choose what you want to do).
  2. The GET parameters (URL query string) to select the rule you want to manage.
  3. The POST parameters to provide the information required by the operation you want to perform.

Global management

Global management operations are impacting the behavior of the whole server.

Save the current rules

Path: /save-rules

POST Parameter:

The file will be stored in the directory specified as the rules-directory configuration and with the crr extension. If there is no such configuration, the directory of the rules-file configuration will be used.

Example:

POST /save-rules HTTP/1.1
Host: management.invalid
Content-type: application/x-www-form-urlencoded

name=my-bkp

Load a new set of rules

Path: /load-rules

POST Parameter:

The file will be loaded from the directory specified as the rules-directory configuration and with the crr extension. If there is no such configuration, the directory of the rules-file configuration will be used.

Example:

POST /load-rules HTTP/1.1
Host: management.invalid
Content-type: application/x-www-form-urlencoded

name=my-bkp
erase-all=OK

Domain name rule management

The domain rule management operations are in the "folder" /domain-name-rule/. For each of the following rule, the path will therefore be prefixed by /domain-name-rule.

List domain name rules

Path: /list

GET parameters (all optionals):

Returns the list of domain names rules matching the parameters. If a criteria is omitted all rules will match this criteria.

Example:

GET /domain-name-rule/list?kind=exact HTTP/1.1
Host: management.invalid

Add a domain name rule

Path: /add

POST parameters:

Example:

POST /domain-name-rule/add HTTP/1.1
Host: management.invalid
Content-type: application/x-www-form-urlencoded

kind=exact&match=www.domain.example&position=3

Remove a domain name rule

Path: /remove

GET parameters:

POST parameter:

Example:

POST /domain-name-rule/remove?kind=exact&match=www.domain.example HTTP/1.1
Host: management.invalid
Content-type: application/x-www-form-urlencoded

confirmed=OK

Update a domain name rule

Path: /update

GET parameters:

POST parameters (all optional):

Update the query string operations

The query string operations management is in the "folder" /query-string-updates/. See Query string operation management for the details.

When applied to domain name rule, all these operations have two common GET parameters:

URI rule management

The URI rule management operations are in the "folder" /uri-rule/. For each of the following rule, the path will therefore be prefixed by /uri-rule.

All this operations need to know on wich parent domain name rule they operate. Thus, each rule has two common GET parameters:

List URI rules

Path: /list

GET parameters (all optionals):

Returns the list of URI rules matching the parameters. If a criteria is omitted all rules will match this criteria.

Example:

GET /uri-rule/list?domain-name-kind=exact&domain-name-match=www.domain.example&kind=exact HTTP/1.1
Host: management.invalid

Add a URI rule

Path: /add

POST parameters:

Example:

POST /uri-rule/add?domain-name-kind=exact&domain-name-match=www.domain.example HTTP/1.1
Host: management.invalid
Content-type: application/x-www-form-urlencoded

kind=prefix&match=%2Ffoo&position=2

Remove a URI rule

Path: /remove

GET parameters:

POST parameter:

Example:

POST /uri-rule/remove?domain-name-kind=exact&domain-name-match=www.domain.example&kind=exact&match=www.domain.example HTTP/1.1
Host: management.invalid
Content-type: application/x-www-form-urlencoded

confirmed=OK

Update a URI rule

Path: /update

GET parameters:

POST parameters (all optional):

Update the query string operations

The query string operations management is in the "folder" /query-string-updates/. See Query string operation management for the details.

When applied to domain name rule, all these operations have two more common GET parameters:

Query string operations management

Query string management is currently very simple.

List query string operations

Path: /list

GET parameters (all optionals):

Returns the list of query string operations matching the parameters. If a criteria is omitted all rules will match this criteria.

Example:

GET /domain-name-rule/query-string-updates/list?domain-name-kind=exact&domain-name-match=www.domain.example&operation=clear HTTP/1.1
Host: management.invalid

Add a query string operation

Path: /add

POST parameters:

When you create an add operation, you should provide one of the following parameters (they are mutually exclusive):

Example:

POST /uri-rule/query-string-updates/add?domain-name-kind=exact&domain-name-match=www.domain.example&uri-name=%2Ffoobar%2F&uri-kind=prefix HTTP/1.1
Host: management.invalid
Content-type: application/x-www-form-urlencoded

operation=add&name=redirect-from&domain-as-value=t

Remove a query string operation

Path: /remove

GET parameters:

If name or match is not supported by the operation you want to delete, you must omit them.

POST parameter:

Example:

POST /uri-rule/query-string-updates/remove?domain-name-kind=exact&domain-name-match=www.domain.example&uri-name=%2Ffoobar%2F&uri-kind=prefix&operation=rename&name=domain-name-match HTTP/1.1
Host: management.invalid
Content-type: application/x-www-form-urlencoded

confirmed=OK

Data Storage

The data are stored in memory by a hierarchy of classes, check redirection-rule and subclasses.

Limitations

License

This software has been originally developed by Mathieu Lemoine mlemoine@mentel.com and is the sole property of Mentel Inc. (www.mentel.com). This software is distributed under the terms of the 3-clause BSD, stated as follow:

Copyright © 2012, Mathieu Lemoine mlemoine@mentel.com, Mentel Inc. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


2 Systems

The main system appears first, followed by any subsystem dependency.


Previous: , Up: Systems   [Contents][Index]

2.1 cl-cheshire-cat

Cheshire Cat HTTP Redirection Server

Author

Mathieu Lemoine <mlemoine@mentel.com>

License

3-clause BSD

Version

0.1

Dependencies
  • cl-ppcre (system).
  • hunchentoot (system).
  • cl-store (system).
  • alexandria (system).
  • usocket (system).
  • split-sequence (system).
  • cl-fad (system).
Source

cl-cheshire-cat.asd.

Child Component

sources (module).


3 Modules

Modules are listed depth-first from the system components tree.


3.1 cl-cheshire-cat/sources

Source

cl-cheshire-cat.asd.

Parent Component

cl-cheshire-cat (system).

Child Components

3.2 cl-cheshire-cat/sources/classes

Dependency

utils.lisp (file).

Source

cl-cheshire-cat.asd.

Parent Component

sources (module).

Child Components

4 Files

Files are sorted by type and then listed depth-first from the systems components trees.


Previous: , Up: Files   [Contents][Index]

4.1 Lisp


4.1.1 cl-cheshire-cat/cl-cheshire-cat.asd

Source

cl-cheshire-cat.asd.

Parent Component

cl-cheshire-cat (system).

ASDF Systems

cl-cheshire-cat.


4.1.2 cl-cheshire-cat/sources/package.lisp

Source

cl-cheshire-cat.asd.

Parent Component

sources (module).

Packages

cl-cheshire-cat.


4.1.3 cl-cheshire-cat/sources/utils.lisp

Dependency

package.lisp (file).

Source

cl-cheshire-cat.asd.

Parent Component

sources (module).

Internals

4.1.4 cl-cheshire-cat/sources/classes/singleton-class.lisp

Source

cl-cheshire-cat.asd.

Parent Component

classes (module).

Packages

org.tfeb.hax.singleton-classes.

Public Interface
Internals

*singleton-classes* (special variable).


4.1.5 cl-cheshire-cat/sources/classes/conditions.lisp

Dependency

singleton-class.lisp (file).

Source

cl-cheshire-cat.asd.

Parent Component

classes (module).

Internals

4.1.6 cl-cheshire-cat/sources/classes/two-steps-start-acceptor.lisp

Dependency

conditions.lisp (file).

Source

cl-cheshire-cat.asd.

Parent Component

classes (module).

Public Interface
Internals

two-steps-start-acceptor (class).


4.1.7 cl-cheshire-cat/sources/classes/query-string.lisp

Dependency

two-steps-start-acceptor.lisp (file).

Source

cl-cheshire-cat.asd.

Parent Component

classes (module).

Public Interface
Internals

4.1.8 cl-cheshire-cat/sources/classes/rules.lisp

Dependency

query-string.lisp (file).

Source

cl-cheshire-cat.asd.

Parent Component

classes (module).

Public Interface
Internals

4.1.9 cl-cheshire-cat/sources/behavior.lisp

Dependency

classes (module).

Source

cl-cheshire-cat.asd.

Parent Component

sources (module).

Internals

4.1.10 cl-cheshire-cat/sources/admin-handler.lisp

Dependency

behavior.lisp (file).

Source

cl-cheshire-cat.asd.

Parent Component

sources (module).

Internals

4.1.11 cl-cheshire-cat/sources/server.lisp

Dependency

admin-handler.lisp (file).

Source

cl-cheshire-cat.asd.

Parent Component

sources (module).

Public Interface
Internals

5 Packages

Packages are listed by definition order.


Next: , Previous: , Up: Packages   [Contents][Index]

5.1 org.tfeb.hax.singleton-classes

Source

singleton-class.lisp.

Use List
  • common-lisp.
  • sb-mop.
Public Interface
Internals

*singleton-classes* (special variable).


5.2 cl-cheshire-cat

Cheshire Cat (HTTP Redirection Server) main package

Source

package.lisp.

Nicknames
  • cl-cc
  • cheshire-cat
  • cheshire
Use List
  • common-lisp.
  • split-sequence.
Public Interface
Internals

6 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


Next: , Previous: , Up: Definitions   [Contents][Index]

6.1 Public Interface


6.1.1 Ordinary functions

Function: preload-rules (redirection-acceptor file)

This function restore the list of rules from file and set them as the list of rules for this acceptor. It’s also registering the rule-file for future references.

Package

cl-cheshire-cat.

Source

server.lisp.

Function: reset-singleton-classes ()
Package

org.tfeb.hax.singleton-classes.

Source

singleton-class.lisp.


6.1.2 Generic functions

Generic Reader: drr-uri-rules (object)
Generic Writer: (setf drr-uri-rules) (object)
Package

cl-cheshire-cat.

Methods
Reader Method: drr-uri-rules ((domain-redirection-rule domain-redirection-rule))
Writer Method: (setf drr-uri-rules) ((domain-redirection-rule domain-redirection-rule))

List of URI redirection rules for the domain names matching this redirection rule.

Source

rules.lisp.

Target Slot

uri-rules.


6.1.3 Standalone methods

Method: acceptor-dispatch-request ((acceptor redirection-acceptor) request)

This request dispatcher processes each HTTP request and handle adequatly the request.

Package

hunchentoot.

Source

server.lisp.

Method: acceptor-log-access ((acceptor redirection-acceptor) &key return-code)

Adapted syntax for access log, just like the default, but include the host to.

Package

hunchentoot.

Source

server.lisp.

Method: initialize-instance :after ((c singleton-class) &key)
Source

singleton-class.lisp.

Method: initialize-instance :after ((instance redirection-acceptor) &rest initargs &key &allow-other-keys)

Ensures there is no error template directory.

Source

server.lisp.

Method: initialize-instance :after ((instance redirection-rule) &rest initargs &key &allow-other-keys)

Ensures the initialization of the <pre>matcher</pre> slot and the type of the http-code slot.

Source

rules.lisp.

Method: initialize-instance :after ((instance qs-update) &rest initargs &key &allow-other-keys)

Creates the regex matcher.

Source

query-string.lisp.

Method: internal-store-object ((g0 cl-store) (rule domain-redirection-rule) stream)

Definition for storing an object of type DOMAIN-REDIRECTION-RULE with backend CL-STORE

Package

cl-store.

Source

rules.lisp.

Method: internal-store-object ((g0 cl-store) (rule query-string-update) stream)

Definition for storing an object of type QUERY-STRING-UPDATE with backend CL-STORE

Package

cl-store.

Source

query-string.lisp.

Method: internal-store-object ((g0 cl-store) (rule uri-redirection-rule) stream)

Definition for storing an object of type URI-REDIRECTION-RULE with backend CL-STORE

Package

cl-store.

Source

rules.lisp.

Method: make-instance ((class singleton-class) &key)
Source

singleton-class.lisp.

Method: print-object ((object redirection-rule) stream)

Print a meaningful summarized representation of redirection rules. Redirection rules are not readably printable.

Source

rules.lisp.

Method: print-object ((object query-string-update) stream)

Print a meaningful summarized representation of redirection rules. Redirection rules are not readably printable.

Source

query-string.lisp.

Method: start ((acceptor two-steps-start-acceptor))

If the first step was not run yet, run it. Then start the acceptor taskmaster. Inspired from hunchentoot default implementation.

Package

hunchentoot.

Source

two-steps-start-acceptor.lisp.

Method: start-listening :before ((acceptor two-steps-start-acceptor))

Remove the shutdown state from the acceptor before starting to listen

Package

hunchentoot.

Source

two-steps-start-acceptor.lisp.

Method: validate-superclass ((class standard-class) (superclass singleton-class))
Package

sb-mop.

Source

singleton-class.lisp.

Method: validate-superclass ((class singleton-class) (superclass singleton-class))
Package

sb-mop.

Source

singleton-class.lisp.

Method: validate-superclass ((class singleton-class) (superclass standard-class))
Package

sb-mop.

Source

singleton-class.lisp.


6.1.4 Classes

Class: redirection-acceptor

Custom hunchentoot:acceptor implementing the behavior of the redirection server.

Package

cl-cheshire-cat.

Source

server.lisp.

Direct superclasses

two-steps-start-acceptor.

Direct methods
Direct slots
Slot: admin-host

The domain name used to manage this redirection acceptor.

Type

string

Initform

"management.invalid"

Initargs

:admin-host

Readers

redirection-acceptor-admin-host.

Writers

(setf redirection-acceptor-admin-host).

Slot: admin-allowed

A list of CIDR block specifications. Each item
of this list is a pair (IP prefix-length). IP is recommended to a string using the decimal dotted notation but could also be an host order 32 bytes integer or an host order byte vector.

Type

list

Initform

(quote (("127.0.0.1")))

Initargs

:admin-allowed

Readers

redirection-acceptor-admin-allowed.

Writers

(setf redirection-acceptor-admin-allowed).

Slot: rules

The list of redirection rules used by this acceptor.

Type

list

Initform

(quote nil)

Readers

redirection-acceptor-rules.

Writers

(setf redirection-acceptor-rules).

Slot: rules-directory

The directory in which rules will be
stored. Only the default rule file can be out of this directory.

Type

pathname

Initargs

:rule-directory

Readers

redirection-acceptor-rules-directory.

Writers

(setf redirection-acceptor-rules-directory).

Slot: rules-file

The default file used to store the
rules. This is set when loading the rules from the file.

Type

string

Readers

redirection-acceptor-rules-file.

Writers

This slot is read-only.

Class: singleton-class
Package

org.tfeb.hax.singleton-classes.

Source

singleton-class.lisp.

Direct superclasses

standard-class.

Direct methods
Direct slots
Slot: instance

6.2 Internals


Next: , Previous: , Up: Internals   [Contents][Index]

6.2.1 Special variables

Special Variable: *qsu-generic-readers*

List of query string update generic readers

Package

cl-cheshire-cat.

Source

query-string.lisp.

Special Variable: *singleton-classes*
Package

org.tfeb.hax.singleton-classes.

Source

singleton-class.lisp.

Special Variable: +default-domain-name-rule+

Domain name rule with default behaviour. This should be treated as a constant, If the object, value or binding is modified behaviour is undefined.

Package

cl-cheshire-cat.

Source

behavior.lisp.

Special Variable: +domain-redirection-rule-code+

cl-store type-code for domain name redirection rules.

Package

cl-cheshire-cat.

Source

rules.lisp.

Special Variable: +qsu-code+

cl-store type-code for query string updates.

Package

cl-cheshire-cat.

Source

query-string.lisp.

Special Variable: +uri-redirection-rule-code+

cl-store type-code for URI redirection rules.

Package

cl-cheshire-cat.

Source

rules.lisp.


6.2.2 Macros

Macro: add-domain-name-rule (rules rule &key position)

This macro adds <pre>rule</pre> (applying to domaine names) in <pre>rules</pre>. <pre>position</pre> is the position at which the rule will be inserted in <pre>rules</pre>. If <pre>position</pre> is nil or unspecified, <pre>rule</pre> will be inserted at the begining of <pre>rules</pre>.

Package

cl-cheshire-cat.

Source

behavior.lisp.

Macro: define-generic-qsu-reader (name &optional default-value)

Create a generic function and an associated method for query-string-update. This allow every reader to be used with any instance of query-string-update.

Package

cl-cheshire-cat.

Source

query-string.lisp.

Macro: remove-domain-name-rule (rules kind match)

This macro removes the rule from <pre>rule</pre> with matching <pre>kind</pre> and <pre>match</pre>. <pre>rule</pre> must match exactly. If no such rule is found, returns silently.

Package

cl-cheshire-cat.

Source

behavior.lisp.


Next: , Previous: , Up: Internals   [Contents][Index]

6.2.3 Ordinary functions

Function: add-qs-update (rule update &key position)

This function add a new query string update operation to a redirection rule. <pre>position</pre> is the position at which the rule will be inserted in <pre>rules</pre>. If <pre>position</pre> is nil or unspecified, <pre>rule</pre> will be inserted at the begining of <pre>rules</pre>.

Package

cl-cheshire-cat.

Source

behavior.lisp.

Function: add-uri-rule (domain-redirection-rule uri-rule &key position)

This function adds <pre>rule</pre> (applying to URIs) to <pre>domain-redirection-rule</pre>. <pre>position</pre> is the position at which the rule will be inserted in <pre>rules</pre>. If <pre>position</pre> is nil or unspecified, <pre>rule</pre> will be inserted at the begining of <pre>rules</pre>.

Package

cl-cheshire-cat.

Source

behavior.lisp.

Function: admin-domain-name-rules-handler% (path redirection-acceptor)

Handler for domain name rules management

Package

cl-cheshire-cat.

Source

admin-handler.lisp.

Function: admin-handler (redirection-acceptor)

Management handler.

Package

cl-cheshire-cat.

Source

admin-handler.lisp.

Function: admin-query-string-handler% (path rule)

Handler for query-string operation

Package

cl-cheshire-cat.

Source

admin-handler.lisp.

Function: admin-uri-rules-handler% (path domain-name-rule)

Handler for URI rules management.

Package

cl-cheshire-cat.

Source

admin-handler.lisp.

Function: apply-default-domain-name-rule (domain-name)

This function applies the default domain name redirection: if the domain-name does not start with a "www.",returns a permanent redirect to the same URL prepended with "www.", raise a rs-loop-detected condition otherwise.

Package

cl-cheshire-cat.

Source

behavior.lisp.

Function: apply-rules (target-string rules)

This function looks through the list of rules to find a matching rule for <pre>target-string</pre>. The three returns values are:

* Whether a rule was find or not,
* The rewritten target string,
* The matching rule.

If no such rule is found, all three values are nil.

Package

cl-cheshire-cat.

Source

behavior.lisp.

Function: class<-qsu-operation (operation)

Returns the class corresponding to this query-string operation.

Package

cl-cheshire-cat.

Source

query-string.lisp.

Function: compute-redirection (rules domain-name uri)

This function computes the actual value of the redirection for this domain-name and URI, following this set of rules. It return the list (new-domain-name new-uri . redirection-parameters)

Package

cl-cheshire-cat.

Source

behavior.lisp.

Function: compute-uri (path query-string)

Append each parameter in the query string to the path. path is expected not to have any query-string.

Package

cl-cheshire-cat.

Source

utils.lisp.

Function: create-regex-matcher (regex replacement)

This function creates the matcher for a rule based on a regex.

Package

cl-cheshire-cat.

Source

rules.lisp.

Function: drr-is-loop-p (drr &key error-p)

Check if the domain name rule effect is empty, thus resulting in a loop.

Package

cl-cheshire-cat.

Source

rules.lisp.

Function: find-domain-name-rule (rules kind match &key error-p)

This function returns the domain name rule with matching <pre>kind</pre> and <pre>match</pre> in <pre>rules</pre> or nil if none was found. if <pre>error-p</pre> is true, an error of type <pre>rs-no-such-domain-rule</pre> is raised instead.

Package

cl-cheshire-cat.

Source

behavior.lisp.

Function: find-qs-update (rule operation name match &key error-p)

This function returns the query string update designated by operation name and match.

Package

cl-cheshire-cat.

Source

behavior.lisp.

Function: find-uri-rule (domain-redirection-rule kind match &key error-p)

This function returns the URI rule with matching <pre>kind</pre> and <pre>match</pre> in <pre>domain-redirection-rule</pre> or nil if none was found. if <pre>error-p</pre> is true, an error of type <pre>rs-no-such-uri-rule</pre> is raised instead.

Package

cl-cheshire-cat.

Source

behavior.lisp.

Function: ip-cidr-match-p (ip1 ip2 &optional prefix-length)

Check if both IPs are in the same network with respect to this CIDR prefix-length.

Each IPs can be either:
* 32-bit positive integer (host order),
* a four element integer list representing IPv4 address, i.e. #(127 0 0 1),
* a string containing an IP addres in dotted notation.

For example, to check A.B.C.D against a.b.c.d/n, this function could be invoked as (ip-cidr-match-p #(A B C D) #(a b c d) n).

Package

cl-cheshire-cat.

Source

utils.lisp.

Function: load-rules (redirection-acceptor file)

Save all the rules in mentioned file.

Package

cl-cheshire-cat.

Source

server.lisp.

Function: make-query-string-update (operation &rest initargs)

Generic generation of a query string update. <pre>operation</pre> must be one of :clear, :add, :rename or :update and initargs is the list of initargs for the qs-{operation} class.

Package

cl-cheshire-cat.

Source

query-string.lisp.

Function: merge-redirection-parameter (&rest lists)

This function merges a set parameters (return the last non-null one).

Package

cl-cheshire-cat.

Source

behavior.lisp.

Function: merge-redirection-parameters-list (rules parameter-readers)

This function merges a list of parameters from a list of rules.
For each element of parameter-readers, a parameter is extracted from each rule and the last one non-null is returned.

Package

cl-cheshire-cat.

Source

behavior.lisp.

Function: parse-cidr-list (list)

Parse a comma-separated list of IPv4 CIDR specifications (such as "a.b.c.d/n, e.f.g.h/m"). The CIDR prefix may be omited. Return a list of CIDR specification, each being of the form (IP prefix-length).

Package

cl-cheshire-cat.

Source

utils.lisp.

Function: parse-integer-or-nil (string &rest keys)

Just like parse-integer, but if string is nil, returns (values nil nil) instead of throwing an error.

Package

cl-cheshire-cat.

Source

utils.lisp.

Function: qsu-operation<-class (class)

Returns the query-string operation corresponding to this class.

Package

cl-cheshire-cat.

Source

query-string.lisp.

Function: redirection-rule= (rule1 rule2 &rest rules)

This function checks whether two redirection rules are equals.

Package

cl-cheshire-cat.

Source

rules.lisp.

Function: remove-qs-update (rule operation name match)

This function removes the query string update designated by operation name and match.

Package

cl-cheshire-cat.

Source

behavior.lisp.

Function: remove-uri-rule (domain-redirection-rule kind match)

This macro removes the rule from <pre>rule</pre> with matching <pre>kind</pre> and <pre>match</pre>. <pre>rule</pre> must match exactly. If no such rule is found, returns silently.

Package

cl-cheshire-cat.

Source

behavior.lisp.

Function: rr-key (rule)

This function returns the pair (kind match) for this rule.

Package

cl-cheshire-cat.

Source

rules.lisp.

Function: rr-matching-p (rule target-string)

This function checks whether a redirection rule is matching for this haystack.

Package

cl-cheshire-cat.

Source

rules.lisp.

Function: save-rules (redirection-acceptor file)

Save all the rules in mentioned file.

Package

cl-cheshire-cat.

Source

server.lisp.

Function: send-bad-request (message &optional http-code)

Error handling, abort the URL processing to signal an error to the client.

Package

cl-cheshire-cat.

Source

utils.lisp.

Function: unsummarize-query-string-update% (summary)

Return the list of arguments to give to make-instance to recreate a similar query-string-update.

Package

cl-cheshire-cat.

Source

query-string.lisp.

Function: update-rule% (rule update-specs)

Updates a rule, each update spec should be ("new-{ATTRIBUTE}" . "{NEW-VALUE}").

Package

cl-cheshire-cat.

Source

admin-handler.lisp.


Next: , Previous: , Up: Internals   [Contents][Index]

6.2.4 Generic functions

Generic Function: qsu-key (update)

Return the information required to identify this
update. Usually a list of the form (operation &optional name match)

Package

cl-cheshire-cat.

Source

query-string.lisp.

Methods
Method: qsu-key ((update qs-update))

This methods returns (:update name match).

Method: qsu-key ((update qs-clear))

This method always returns ’(:clear).

Method: qsu-key (update)

Default method returns (operation name).

Generic Function: qsu-match (update)

Generic query string update reader for MATCH.

Package

cl-cheshire-cat.

Source

query-string.lisp.

Methods
Reader Method: qsu-match ((qs-update qs-update))

Regex to match the old value of the parameter

Target Slot

match.

Method: qsu-match ((update query-string-update))

Default value for MATCH reader.

Reader Method: qsu-match ((condition rs-no-such-qs-update))
Source

conditions.lisp.

Target Slot

match.

Generic Reader: qsu-matcher (object)
Package

cl-cheshire-cat.

Methods
Reader Method: qsu-matcher ((qs-update qs-update))

Compiled regex matcher

Source

query-string.lisp.

Target Slot

matcher.

Generic Function: qsu-name (update)

Generic query string update reader for NAME.

Package

cl-cheshire-cat.

Source

query-string.lisp.

Methods
Reader Method: qsu-name ((qs-delete qs-delete))

Name of the parameter to delete.

Target Slot

name.

Reader Method: qsu-name ((qs-update qs-update))

Name of the parameter to update.

Target Slot

name.

Reader Method: qsu-name ((qs-rename qs-rename))

Name of the parameter to rename (old name).

Target Slot

name.

Reader Method: qsu-name ((qs-add qs-add))

Name of the parameter to create.

Target Slot

name.

Method: qsu-name ((update query-string-update))

Default value for NAME reader.

Reader Method: qsu-name ((condition rs-no-such-qs-update))
Source

conditions.lisp.

Target Slot

name.

Generic Function: qsu-new-name (update)

Generic query string update reader for NEW-NAME.

Package

cl-cheshire-cat.

Source

query-string.lisp.

Methods
Reader Method: qsu-new-name ((qs-rename qs-rename))

New name for the parameter to rename.

Target Slot

new-name.

Method: qsu-new-name ((update query-string-update))

Default value for NEW-NAME reader.

Generic Function: qsu-operation (condition)
Package

cl-cheshire-cat.

Methods
Method: qsu-operation (update)

Returns the operation of this update.

Source

query-string.lisp.

Reader Method: qsu-operation ((condition rs-no-such-qs-update))
Source

conditions.lisp.

Target Slot

operation.

Generic Function: qsu-replacement (update)

Generic query string update reader for REPLACEMENT.

Package

cl-cheshire-cat.

Source

query-string.lisp.

Methods
Reader Method: qsu-replacement ((qs-update qs-update))

Replacement string to generate the new value of the parameter

Target Slot

replacement.

Method: qsu-replacement ((update query-string-update))

Default value for REPLACEMENT reader.

Generic Function: qsu-summary (update)

This method converts the redirection rule to the alist ((:operation . operation) params)

Package

cl-cheshire-cat.

Source

query-string.lisp.

Methods
Method: qsu-summary (update)
Generic Function: qsu-value (update)

Generic query string update reader for VALUE.

Package

cl-cheshire-cat.

Source

query-string.lisp.

Methods
Reader Method: qsu-value ((qs-add qs-add))

Value of the parameter to create. If the value
is :path or :domain, the corresponding part of the URL will be used as the value.

Target Slot

value.

Method: qsu-value ((update query-string-update))

Default value for VALUE reader.

Generic Reader: redirection-acceptor-admin-allowed (object)
Generic Writer: (setf redirection-acceptor-admin-allowed) (object)
Package

cl-cheshire-cat.

Methods
Reader Method: redirection-acceptor-admin-allowed ((redirection-acceptor redirection-acceptor))
Writer Method: (setf redirection-acceptor-admin-allowed) ((redirection-acceptor redirection-acceptor))

A list of CIDR block specifications. Each item
of this list is a pair (IP prefix-length). IP is recommended to a string using the decimal dotted notation but could also be an host order 32 bytes integer or an host order byte vector.

Source

server.lisp.

Target Slot

admin-allowed.

Generic Reader: redirection-acceptor-admin-host (object)
Generic Writer: (setf redirection-acceptor-admin-host) (object)
Package

cl-cheshire-cat.

Methods
Reader Method: redirection-acceptor-admin-host ((redirection-acceptor redirection-acceptor))
Writer Method: (setf redirection-acceptor-admin-host) ((redirection-acceptor redirection-acceptor))

The domain name used to manage this redirection acceptor.

Source

server.lisp.

Target Slot

admin-host.

Generic Reader: redirection-acceptor-rules (object)
Generic Writer: (setf redirection-acceptor-rules) (object)
Package

cl-cheshire-cat.

Methods
Reader Method: redirection-acceptor-rules ((redirection-acceptor redirection-acceptor))
Writer Method: (setf redirection-acceptor-rules) ((redirection-acceptor redirection-acceptor))

The list of redirection rules used by this acceptor.

Source

server.lisp.

Target Slot

rules.

Generic Reader: redirection-acceptor-rules-directory (object)
Package

cl-cheshire-cat.

Methods
Reader Method: redirection-acceptor-rules-directory ((redirection-acceptor redirection-acceptor))

The directory in which rules will be
stored. Only the default rule file can be out of this directory.

Source

server.lisp.

Target Slot

rules-directory.

Generic Function: (setf redirection-acceptor-rules-directory) (object)
Package

cl-cheshire-cat.

Methods
Writer Method: (setf redirection-acceptor-rules-directory) :around ((acceptor redirection-acceptor))

Ensures the directory is a directory with no name and the crr type.

Source

server.lisp.

Target Slot

rules-directory.

Method: (setf redirection-acceptor-rules-directory) ((redirection-acceptor redirection-acceptor))

The directory in which rules will be
stored. Only the default rule file can be out of this directory.

Source

server.lisp.

Generic Reader: redirection-acceptor-rules-file (object)
Package

cl-cheshire-cat.

Methods
Reader Method: redirection-acceptor-rules-file ((redirection-acceptor redirection-acceptor))

The default file used to store the
rules. This is set when loading the rules from the file.

Source

server.lisp.

Target Slot

rules-file.

Generic Function: resolve-rr-matcher (rule)

This function update the <pre>matcher</pre> slot of <pre>rule</pre> so <pre>rr-matching-p</pre> can be used. It is the only function allowed to modify the <pre>matcher</pre> slot

Package

cl-cheshire-cat.

Source

rules.lisp.

Methods
Method: resolve-rr-matcher ((rule domain-redirection-rule))

This function updates the <pre>matcher</pre> slot for a domain name redirection rule.

Method: resolve-rr-matcher ((rule uri-redirection-rule))

This function updates the <pre>matcher</pre> slot for a URI redirection rule.

Generic Reader: rr-http-code (object)
Package

cl-cheshire-cat.

Methods
Reader Method: rr-http-code ((redirection-rule redirection-rule))

The HTTP Status Code sent when this
rule is applied. Can be overwritten by a subsequent rule.

Source

rules.lisp.

Target Slot

http-code.

Generic Function: (setf rr-http-code) (object)
Package

cl-cheshire-cat.

Methods
Writer Method: (setf rr-http-code) :before ((rule redirection-rule))

Ensures the type of the http-code slot.

Source

rules.lisp.

Target Slot

http-code.

Method: (setf rr-http-code) ((redirection-rule redirection-rule))

The HTTP Status Code sent when this
rule is applied. Can be overwritten by a subsequent rule.

Source

rules.lisp.

Generic Reader: rr-kind (condition)
Package

cl-cheshire-cat.

Methods
Reader Method: rr-kind ((redirection-rule redirection-rule))

A selector for the matching alogrithm used for this rule.

Source

rules.lisp.

Target Slot

kind.

Reader Method: rr-kind ((condition rs-no-such-rule))
Source

conditions.lisp.

Target Slot

kind.

Generic Function: (setf rr-kind) (object)
Package

cl-cheshire-cat.

Methods
Writer Method: (setf rr-kind) :after ((rule redirection-rule))

Ensures that every modification of the <pre>kind</pre> slot is updating the <pre>matcher</pre> slot.

Source

rules.lisp.

Target Slot

kind.

Method: (setf rr-kind) ((redirection-rule redirection-rule))

A selector for the matching alogrithm used for this rule.

Source

rules.lisp.

Generic Reader: rr-match (condition)
Package

cl-cheshire-cat.

Methods
Reader Method: rr-match ((redirection-rule redirection-rule))

The matching pattern used for this rule.

Source

rules.lisp.

Target Slot

match.

Reader Method: rr-match ((condition rs-no-such-rule))
Source

conditions.lisp.

Target Slot

match.

Generic Function: (setf rr-match) (object)
Package

cl-cheshire-cat.

Methods
Writer Method: (setf rr-match) :after ((rule redirection-rule))

Ensures that every modification of the <pre>match</pre> slot is updating the <pre>matcher</pre> slot.

Source

rules.lisp.

Target Slot

match.

Method: (setf rr-match) ((redirection-rule redirection-rule))

The matching pattern used for this rule.

Source

rules.lisp.

Generic Reader: rr-matcher (object)
Package

cl-cheshire-cat.

Methods
Reader Method: rr-matcher ((redirection-rule redirection-rule))

The matching closure implementing this
rule matching algorithm and performing the replacement.

Source

rules.lisp.

Target Slot

matcher.

Generic Reader: rr-port (object)
Generic Writer: (setf rr-port) (object)
Package

cl-cheshire-cat.

Methods
Reader Method: rr-port ((redirection-rule redirection-rule))
Writer Method: (setf rr-port) ((redirection-rule redirection-rule))

Port to use for the
redirection. Default depends on the protocol

Source

rules.lisp.

Target Slot

port.

Generic Reader: rr-protocol (object)
Generic Writer: (setf rr-protocol) (object)
Package

cl-cheshire-cat.

Methods
Reader Method: rr-protocol ((redirection-rule redirection-rule))
Writer Method: (setf rr-protocol) ((redirection-rule redirection-rule))

The protocol to use after
redirection (HTTP or HTTPS)

Source

rules.lisp.

Target Slot

protocol.

Generic Reader: rr-qs-updates (object)
Generic Writer: (setf rr-qs-updates) (object)
Package

cl-cheshire-cat.

Methods
Reader Method: rr-qs-updates ((redirection-rule redirection-rule))
Writer Method: (setf rr-qs-updates) ((redirection-rule redirection-rule))

List of query string update performed
when this rule match.

Source

rules.lisp.

Target Slot

query-string-updates.

Generic Reader: rr-replacement (object)
Package

cl-cheshire-cat.

Methods
Reader Method: rr-replacement ((redirection-rule redirection-rule))

The replacement specification for this
string. If it’s null, this rule does not modify its target-string.

Source

rules.lisp.

Target Slot

replacement.

Generic Function: (setf rr-replacement) (object)
Package

cl-cheshire-cat.

Methods
Writer Method: (setf rr-replacement) :after ((rule redirection-rule))

Ensures that every modification of the <pre>replacement</pre> slot is updating the <pre>matcher</pre> slot.

Source

rules.lisp.

Target Slot

replacement.

Method: (setf rr-replacement) ((redirection-rule redirection-rule))

The replacement specification for this
string. If it’s null, this rule does not modify its target-string.

Source

rules.lisp.

Generic Function: rr-summary (rule &key serialize)

This method converts the redirection rule to the list (kind match replacement . options)

Package

cl-cheshire-cat.

Source

rules.lisp.

Methods
Method: rr-summary ((rule domain-redirection-rule) &key serialize)

This method adds the list of uri rules in the case of serialization.

Method: rr-summary (rule &key serialize)

This method converts the redirection rule to the list (kind match replacement http-code)

Generic Function: update-query-string (update query-string domain-name path)

This function (destructively) updates query-string to apply
the specified query-string update. query-string is expected to be an alist of get parameters.

Package

cl-cheshire-cat.

Source

query-string.lisp.

Methods
Method: update-query-string ((update qs-delete) query-string domain-name path)

This method deletes a query string parameter. If there are several query string parameters with this name, only the first one is deleted. If there is no such parameter, do nothing.

Method: update-query-string ((update qs-update) query-string domain-name path)

This method updates the value of a parameter using a regex replacement. If there are several query string parameters with this name, only the first one is renamed. If there is no such parameter, do nothing.

Method: update-query-string ((update qs-rename) query-string domain-name path)

This method renames a query string parameter. If there are several query string parameters with this name, only the first one is renamed. If there is no such parameter, do nothing.

Method: update-query-string ((update qs-add) query-string domain-name path)

This method adds a new parameter at the beginning of the query string

Method: update-query-string ((update qs-clear) query-string domain-name path)

This method return an empty new alist.

Generic Reader: urr-domain-name-rule (condition)
Generic Writer: (setf urr-domain-name-rule) (condition)
Package

cl-cheshire-cat.

Methods
Reader Method: urr-domain-name-rule ((condition rs-no-such-uri-rule))
Writer Method: (setf urr-domain-name-rule) ((condition rs-no-such-uri-rule))
Source

conditions.lisp.

Target Slot

domain-name-rule.


Next: , Previous: , Up: Internals   [Contents][Index]

6.2.5 Conditions

Condition: rs-error

Root condition for redirection server errors.

Package

cl-cheshire-cat.

Source

conditions.lisp.

Direct superclasses

error.

Direct subclasses
Condition: rs-loop-detected

Error raised if a loop is detected by the redirection
engine. If not caught, this loop will make the server reply with a "404 Not Found".

Package

cl-cheshire-cat.

Source

conditions.lisp.

Direct superclasses

rs-error.

Condition: rs-no-such-domain-rule

Error raised if a domain name rule cannot be found.

Package

cl-cheshire-cat.

Source

conditions.lisp.

Direct superclasses

rs-no-such-rule.

Condition: rs-no-such-qs-update

Error raised if a query string update cannot be found.

Package

cl-cheshire-cat.

Source

conditions.lisp.

Direct superclasses

rs-error.

Direct methods
Direct slots
Slot: operation
Initargs

:operation

Readers

qsu-operation.

Writers

This slot is read-only.

Slot: name
Initform

(quote nil)

Initargs

:name

Readers

qsu-name.

Writers

This slot is read-only.

Slot: match
Initform

(quote nil)

Initargs

:match

Readers

qsu-match.

Writers

This slot is read-only.

Condition: rs-no-such-rule

Error raised if a rule cannot be found.

Package

cl-cheshire-cat.

Source

conditions.lisp.

Direct superclasses

rs-error.

Direct subclasses
Direct methods
Direct slots
Slot: kind
Initargs

:kind

Readers

rr-kind.

Writers

This slot is read-only.

Slot: match
Initargs

:match

Readers

rr-match.

Writers

This slot is read-only.

Condition: rs-no-such-uri-rule

Error raised if an URI rule cannot be found.

Package

cl-cheshire-cat.

Source

conditions.lisp.

Direct superclasses

rs-no-such-rule.

Direct methods
Direct slots
Slot: domain-name-rule
Initargs

:domain-name-rule

Readers

urr-domain-name-rule.

Writers

(setf urr-domain-name-rule).


Previous: , Up: Internals   [Contents][Index]

6.2.6 Classes

Class: domain-redirection-rule

Class for redirection rules applied to domain names.

Package

cl-cheshire-cat.

Source

rules.lisp.

Direct superclasses

redirection-rule.

Direct methods
Direct slots
Slot: uri-rules

List of URI redirection rules for the domain names matching this redirection rule.

Type

list

Readers

drr-uri-rules.

Writers

(setf drr-uri-rules).

Class: qs-add

Add a new parameter at the beginning the query string.

Package

cl-cheshire-cat.

Source

query-string.lisp.

Direct superclasses

query-string-update.

Direct methods
Direct slots
Slot: name

Name of the parameter to create.

Type

string

Initargs

:name

Readers

qsu-name.

Writers

This slot is read-only.

Slot: value

Value of the parameter to create. If the value
is :path or :domain, the corresponding part of the URL will be used as the value.

Type

(or (member :path :domain) string)

Initargs

:value

Readers

qsu-value.

Writers

This slot is read-only.

Class: qs-clear

Clear the query string. Since this class has no state nor parameters, it’s a singleton.

Package

cl-cheshire-cat.

Source

query-string.lisp.

Direct superclasses

query-string-update.

Direct methods
Class: qs-delete

Remove a parameter from the query string.

Package

cl-cheshire-cat.

Source

query-string.lisp.

Direct superclasses

query-string-update.

Direct methods
Direct slots
Slot: name

Name of the parameter to delete.

Type

string

Initargs

:name

Readers

qsu-name.

Writers

This slot is read-only.

Class: qs-rename

Rename the parameter in the query string.

Package

cl-cheshire-cat.

Source

query-string.lisp.

Direct superclasses

query-string-update.

Direct methods
Direct slots
Slot: name

Name of the parameter to rename (old name).

Type

string

Initargs

:name

Readers

qsu-name.

Writers

This slot is read-only.

Slot: new-name

New name for the parameter to rename.

Type

string

Initargs

:new-name

Readers

qsu-new-name.

Writers

This slot is read-only.

Class: qs-update

Use a regex to modify the value of a parameter in the query string.

Package

cl-cheshire-cat.

Source

query-string.lisp.

Direct superclasses

query-string-update.

Direct methods
Direct slots
Slot: name

Name of the parameter to update.

Type

string

Initargs

:name

Readers

qsu-name.

Writers

This slot is read-only.

Slot: match

Regex to match the old value of the parameter

Type

string

Initargs

:match

Readers

qsu-match.

Writers

This slot is read-only.

Slot: replacement

Replacement string to generate the new value of the parameter

Type

string

Initargs

:replacement

Readers

qsu-replacement.

Writers

This slot is read-only.

Slot: matcher

Compiled regex matcher

Readers

qsu-matcher.

Writers

This slot is read-only.

Class: query-string-update

Root class for Query String operations.

Package

cl-cheshire-cat.

Source

query-string.lisp.

Direct subclasses
Direct methods
Class: redirection-rule

Root class for redirection rules.

Package

cl-cheshire-cat.

Source

rules.lisp.

Direct subclasses
Direct methods
Direct slots
Slot: kind

A selector for the matching alogrithm used for this rule.

Type

keyword

Initargs

:kind

Readers

rr-kind.

Writers

(setf rr-kind).

Slot: match

The matching pattern used for this rule.

Type

(or string list)

Initargs

:match

Readers

rr-match.

Writers

(setf rr-match).

Slot: matcher

The matching closure implementing this
rule matching algorithm and performing the replacement.

Type

(function (string) (values t string))

Initform

(lambda (cl-cheshire-cat::str) (declare (ignore cl-cheshire-cat::str)) (error "not implemented."))

Readers

rr-matcher.

Writers

This slot is read-only.

Slot: replacement

The replacement specification for this
string. If it’s null, this rule does not modify its target-string.

Type

(or string null)

Initargs

:replacement

Readers

rr-replacement.

Writers

(setf rr-replacement).

Slot: http-code

The HTTP Status Code sent when this
rule is applied. Can be overwritten by a subsequent rule.

Type

(or null (integer 300 399))

Initargs

:http-code

Readers

rr-http-code.

Writers

(setf rr-http-code).

Slot: protocol

The protocol to use after
redirection (HTTP or HTTPS)

Type

(or null (member :http :https))

Initargs

:protocol

Readers

rr-protocol.

Writers

(setf rr-protocol).

Slot: port

Port to use for the
redirection. Default depends on the protocol

Type

(or null unsigned-byte)

Initargs

:port

Readers

rr-port.

Writers

(setf rr-port).

Slot: query-string-updates

List of query string update performed
when this rule match.

Type

list

Initform

(quote nil)

Readers

rr-qs-updates.

Writers

(setf rr-qs-updates).

Class: two-steps-start-acceptor

This acceptor implementation allow a two-step start: 1. the
first step ‘start-listening‘ starts the socket without starting to accept connections 2. the second setp ‘start‘ starts to accept connection This system allow for example to daemonize the process and drop privileges before starting to accept connections.

Package

cl-cheshire-cat.

Source

two-steps-start-acceptor.lisp.

Direct superclasses

acceptor.

Direct subclasses

redirection-acceptor.

Direct methods
Class: uri-redirection-rule

Class for redirection rules applied to URIs (path part of the URL, no query-string).

Package

cl-cheshire-cat.

Source

rules.lisp.

Direct superclasses

redirection-rule.

Direct methods

Appendix A Indexes


Next: , Previous: , Up: Indexes   [Contents][Index]

A.1 Concepts


Next: , Previous: , Up: Indexes   [Contents][Index]

A.2 Functions

Jump to:   (  
A   C   D   F   G   I   L   M   P   Q   R   S   U   V  
Index Entry  Section

(
(setf drr-uri-rules): Public generic functions
(setf drr-uri-rules): Public generic functions
(setf redirection-acceptor-admin-allowed): Private generic functions
(setf redirection-acceptor-admin-allowed): Private generic functions
(setf redirection-acceptor-admin-host): Private generic functions
(setf redirection-acceptor-admin-host): Private generic functions
(setf redirection-acceptor-rules): Private generic functions
(setf redirection-acceptor-rules): Private generic functions
(setf redirection-acceptor-rules-directory): Private generic functions
(setf redirection-acceptor-rules-directory): Private generic functions
(setf redirection-acceptor-rules-directory): Private generic functions
(setf rr-http-code): Private generic functions
(setf rr-http-code): Private generic functions
(setf rr-http-code): Private generic functions
(setf rr-kind): Private generic functions
(setf rr-kind): Private generic functions
(setf rr-kind): Private generic functions
(setf rr-match): Private generic functions
(setf rr-match): Private generic functions
(setf rr-match): Private generic functions
(setf rr-port): Private generic functions
(setf rr-port): Private generic functions
(setf rr-protocol): Private generic functions
(setf rr-protocol): Private generic functions
(setf rr-qs-updates): Private generic functions
(setf rr-qs-updates): Private generic functions
(setf rr-replacement): Private generic functions
(setf rr-replacement): Private generic functions
(setf rr-replacement): Private generic functions
(setf urr-domain-name-rule): Private generic functions
(setf urr-domain-name-rule): Private generic functions

A
acceptor-dispatch-request: Public standalone methods
acceptor-log-access: Public standalone methods
add-domain-name-rule: Private macros
add-qs-update: Private ordinary functions
add-uri-rule: Private ordinary functions
admin-domain-name-rules-handler%: Private ordinary functions
admin-handler: Private ordinary functions
admin-query-string-handler%: Private ordinary functions
admin-uri-rules-handler%: Private ordinary functions
apply-default-domain-name-rule: Private ordinary functions
apply-rules: Private ordinary functions

C
class<-qsu-operation: Private ordinary functions
compute-redirection: Private ordinary functions
compute-uri: Private ordinary functions
create-regex-matcher: Private ordinary functions

D
define-generic-qsu-reader: Private macros
drr-is-loop-p: Private ordinary functions
drr-uri-rules: Public generic functions
drr-uri-rules: Public generic functions

F
find-domain-name-rule: Private ordinary functions
find-qs-update: Private ordinary functions
find-uri-rule: Private ordinary functions
Function, add-qs-update: Private ordinary functions
Function, add-uri-rule: Private ordinary functions
Function, admin-domain-name-rules-handler%: Private ordinary functions
Function, admin-handler: Private ordinary functions
Function, admin-query-string-handler%: Private ordinary functions
Function, admin-uri-rules-handler%: Private ordinary functions
Function, apply-default-domain-name-rule: Private ordinary functions
Function, apply-rules: Private ordinary functions
Function, class<-qsu-operation: Private ordinary functions
Function, compute-redirection: Private ordinary functions
Function, compute-uri: Private ordinary functions
Function, create-regex-matcher: Private ordinary functions
Function, drr-is-loop-p: Private ordinary functions
Function, find-domain-name-rule: Private ordinary functions
Function, find-qs-update: Private ordinary functions
Function, find-uri-rule: Private ordinary functions
Function, ip-cidr-match-p: Private ordinary functions
Function, load-rules: Private ordinary functions
Function, make-query-string-update: Private ordinary functions
Function, merge-redirection-parameter: Private ordinary functions
Function, merge-redirection-parameters-list: Private ordinary functions
Function, parse-cidr-list: Private ordinary functions
Function, parse-integer-or-nil: Private ordinary functions
Function, preload-rules: Public ordinary functions
Function, qsu-operation<-class: Private ordinary functions
Function, redirection-rule=: Private ordinary functions
Function, remove-qs-update: Private ordinary functions
Function, remove-uri-rule: Private ordinary functions
Function, reset-singleton-classes: Public ordinary functions
Function, rr-key: Private ordinary functions
Function, rr-matching-p: Private ordinary functions
Function, save-rules: Private ordinary functions
Function, send-bad-request: Private ordinary functions
Function, unsummarize-query-string-update%: Private ordinary functions
Function, update-rule%: Private ordinary functions

G
Generic Function, (setf drr-uri-rules): Public generic functions
Generic Function, (setf redirection-acceptor-admin-allowed): Private generic functions
Generic Function, (setf redirection-acceptor-admin-host): Private generic functions
Generic Function, (setf redirection-acceptor-rules): Private generic functions
Generic Function, (setf redirection-acceptor-rules-directory): Private generic functions
Generic Function, (setf rr-http-code): Private generic functions
Generic Function, (setf rr-kind): Private generic functions
Generic Function, (setf rr-match): Private generic functions
Generic Function, (setf rr-port): Private generic functions
Generic Function, (setf rr-protocol): Private generic functions
Generic Function, (setf rr-qs-updates): Private generic functions
Generic Function, (setf rr-replacement): Private generic functions
Generic Function, (setf urr-domain-name-rule): Private generic functions
Generic Function, drr-uri-rules: Public generic functions
Generic Function, qsu-key: Private generic functions
Generic Function, qsu-match: Private generic functions
Generic Function, qsu-matcher: Private generic functions
Generic Function, qsu-name: Private generic functions
Generic Function, qsu-new-name: Private generic functions
Generic Function, qsu-operation: Private generic functions
Generic Function, qsu-replacement: Private generic functions
Generic Function, qsu-summary: Private generic functions
Generic Function, qsu-value: Private generic functions
Generic Function, redirection-acceptor-admin-allowed: Private generic functions
Generic Function, redirection-acceptor-admin-host: Private generic functions
Generic Function, redirection-acceptor-rules: Private generic functions
Generic Function, redirection-acceptor-rules-directory: Private generic functions
Generic Function, redirection-acceptor-rules-file: Private generic functions
Generic Function, resolve-rr-matcher: Private generic functions
Generic Function, rr-http-code: Private generic functions
Generic Function, rr-kind: Private generic functions
Generic Function, rr-match: Private generic functions
Generic Function, rr-matcher: Private generic functions
Generic Function, rr-port: Private generic functions
Generic Function, rr-protocol: Private generic functions
Generic Function, rr-qs-updates: Private generic functions
Generic Function, rr-replacement: Private generic functions
Generic Function, rr-summary: Private generic functions
Generic Function, update-query-string: Private generic functions
Generic Function, urr-domain-name-rule: Private generic functions

I
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
initialize-instance: Public standalone methods
internal-store-object: Public standalone methods
internal-store-object: Public standalone methods
internal-store-object: Public standalone methods
ip-cidr-match-p: Private ordinary functions

L
load-rules: Private ordinary functions

M
Macro, add-domain-name-rule: Private macros
Macro, define-generic-qsu-reader: Private macros
Macro, remove-domain-name-rule: Private macros
make-instance: Public standalone methods
make-query-string-update: Private ordinary functions
merge-redirection-parameter: Private ordinary functions
merge-redirection-parameters-list: Private ordinary functions
Method, (setf drr-uri-rules): Public generic functions
Method, (setf redirection-acceptor-admin-allowed): Private generic functions
Method, (setf redirection-acceptor-admin-host): Private generic functions
Method, (setf redirection-acceptor-rules): Private generic functions
Method, (setf redirection-acceptor-rules-directory): Private generic functions
Method, (setf redirection-acceptor-rules-directory): Private generic functions
Method, (setf rr-http-code): Private generic functions
Method, (setf rr-http-code): Private generic functions
Method, (setf rr-kind): Private generic functions
Method, (setf rr-kind): Private generic functions
Method, (setf rr-match): Private generic functions
Method, (setf rr-match): Private generic functions
Method, (setf rr-port): Private generic functions
Method, (setf rr-protocol): Private generic functions
Method, (setf rr-qs-updates): Private generic functions
Method, (setf rr-replacement): Private generic functions
Method, (setf rr-replacement): Private generic functions
Method, (setf urr-domain-name-rule): Private generic functions
Method, acceptor-dispatch-request: Public standalone methods
Method, acceptor-log-access: Public standalone methods
Method, drr-uri-rules: Public generic functions
Method, initialize-instance: Public standalone methods
Method, initialize-instance: Public standalone methods
Method, initialize-instance: Public standalone methods
Method, initialize-instance: Public standalone methods
Method, internal-store-object: Public standalone methods
Method, internal-store-object: Public standalone methods
Method, internal-store-object: Public standalone methods
Method, make-instance: Public standalone methods
Method, print-object: Public standalone methods
Method, print-object: Public standalone methods
Method, qsu-key: Private generic functions
Method, qsu-key: Private generic functions
Method, qsu-key: Private generic functions
Method, qsu-match: Private generic functions
Method, qsu-match: Private generic functions
Method, qsu-match: Private generic functions
Method, qsu-matcher: Private generic functions
Method, qsu-name: Private generic functions
Method, qsu-name: Private generic functions
Method, qsu-name: Private generic functions
Method, qsu-name: Private generic functions
Method, qsu-name: Private generic functions
Method, qsu-name: Private generic functions
Method, qsu-new-name: Private generic functions
Method, qsu-new-name: Private generic functions
Method, qsu-operation: Private generic functions
Method, qsu-operation: Private generic functions
Method, qsu-replacement: Private generic functions
Method, qsu-replacement: Private generic functions
Method, qsu-summary: Private generic functions
Method, qsu-value: Private generic functions
Method, qsu-value: Private generic functions
Method, redirection-acceptor-admin-allowed: Private generic functions
Method, redirection-acceptor-admin-host: Private generic functions
Method, redirection-acceptor-rules: Private generic functions
Method, redirection-acceptor-rules-directory: Private generic functions
Method, redirection-acceptor-rules-file: Private generic functions
Method, resolve-rr-matcher: Private generic functions
Method, resolve-rr-matcher: Private generic functions
Method, rr-http-code: Private generic functions
Method, rr-kind: Private generic functions
Method, rr-kind: Private generic functions
Method, rr-match: Private generic functions
Method, rr-match: Private generic functions
Method, rr-matcher: Private generic functions
Method, rr-port: Private generic functions
Method, rr-protocol: Private generic functions
Method, rr-qs-updates: Private generic functions
Method, rr-replacement: Private generic functions
Method, rr-summary: Private generic functions
Method, rr-summary: Private generic functions
Method, start: Public standalone methods
Method, start-listening: Public standalone methods
Method, update-query-string: Private generic functions
Method, update-query-string: Private generic functions
Method, update-query-string: Private generic functions
Method, update-query-string: Private generic functions
Method, update-query-string: Private generic functions
Method, urr-domain-name-rule: Private generic functions
Method, validate-superclass: Public standalone methods
Method, validate-superclass: Public standalone methods
Method, validate-superclass: Public standalone methods

P
parse-cidr-list: Private ordinary functions
parse-integer-or-nil: Private ordinary functions
preload-rules: Public ordinary functions
print-object: Public standalone methods
print-object: Public standalone methods

Q
qsu-key: Private generic functions
qsu-key: Private generic functions
qsu-key: Private generic functions
qsu-key: Private generic functions
qsu-match: Private generic functions
qsu-match: Private generic functions
qsu-match: Private generic functions
qsu-match: Private generic functions
qsu-matcher: Private generic functions
qsu-matcher: Private generic functions
qsu-name: Private generic functions
qsu-name: Private generic functions
qsu-name: Private generic functions
qsu-name: Private generic functions
qsu-name: Private generic functions
qsu-name: Private generic functions
qsu-name: Private generic functions
qsu-new-name: Private generic functions
qsu-new-name: Private generic functions
qsu-new-name: Private generic functions
qsu-operation: Private generic functions
qsu-operation: Private generic functions
qsu-operation: Private generic functions
qsu-operation<-class: Private ordinary functions
qsu-replacement: Private generic functions
qsu-replacement: Private generic functions
qsu-replacement: Private generic functions
qsu-summary: Private generic functions
qsu-summary: Private generic functions
qsu-value: Private generic functions
qsu-value: Private generic functions
qsu-value: Private generic functions

R
redirection-acceptor-admin-allowed: Private generic functions
redirection-acceptor-admin-allowed: Private generic functions
redirection-acceptor-admin-host: Private generic functions
redirection-acceptor-admin-host: Private generic functions
redirection-acceptor-rules: Private generic functions
redirection-acceptor-rules: Private generic functions
redirection-acceptor-rules-directory: Private generic functions
redirection-acceptor-rules-directory: Private generic functions
redirection-acceptor-rules-file: Private generic functions
redirection-acceptor-rules-file: Private generic functions
redirection-rule=: Private ordinary functions
remove-domain-name-rule: Private macros
remove-qs-update: Private ordinary functions
remove-uri-rule: Private ordinary functions
reset-singleton-classes: Public ordinary functions
resolve-rr-matcher: Private generic functions
resolve-rr-matcher: Private generic functions
resolve-rr-matcher: Private generic functions
rr-http-code: Private generic functions
rr-http-code: Private generic functions
rr-key: Private ordinary functions
rr-kind: Private generic functions
rr-kind: Private generic functions
rr-kind: Private generic functions
rr-match: Private generic functions
rr-match: Private generic functions
rr-match: Private generic functions
rr-matcher: Private generic functions
rr-matcher: Private generic functions
rr-matching-p: Private ordinary functions
rr-port: Private generic functions
rr-port: Private generic functions
rr-protocol: Private generic functions
rr-protocol: Private generic functions
rr-qs-updates: Private generic functions
rr-qs-updates: Private generic functions
rr-replacement: Private generic functions
rr-replacement: Private generic functions
rr-summary: Private generic functions
rr-summary: Private generic functions
rr-summary: Private generic functions

S
save-rules: Private ordinary functions
send-bad-request: Private ordinary functions
start: Public standalone methods
start-listening: Public standalone methods

U
unsummarize-query-string-update%: Private ordinary functions
update-query-string: Private generic functions
update-query-string: Private generic functions
update-query-string: Private generic functions
update-query-string: Private generic functions
update-query-string: Private generic functions
update-query-string: Private generic functions
update-rule%: Private ordinary functions
urr-domain-name-rule: Private generic functions
urr-domain-name-rule: Private generic functions

V
validate-superclass: Public standalone methods
validate-superclass: Public standalone methods
validate-superclass: Public standalone methods

Jump to:   (  
A   C   D   F   G   I   L   M   P   Q   R   S   U   V  

Next: , Previous: , Up: Indexes   [Contents][Index]

A.3 Variables

Jump to:   *   +  
A   D   H   I   K   M   N   O   P   Q   R   S   U   V  
Index Entry  Section

*
*qsu-generic-readers*: Private special variables
*singleton-classes*: Private special variables

+
+default-domain-name-rule+: Private special variables
+domain-redirection-rule-code+: Private special variables
+qsu-code+: Private special variables
+uri-redirection-rule-code+: Private special variables

A
admin-allowed: Public classes
admin-host: Public classes

D
domain-name-rule: Private conditions

H
http-code: Private classes

I
instance: Public classes

K
kind: Private conditions
kind: Private classes

M
match: Private conditions
match: Private conditions
match: Private classes
match: Private classes
matcher: Private classes
matcher: Private classes

N
name: Private conditions
name: Private classes
name: Private classes
name: Private classes
name: Private classes
new-name: Private classes

O
operation: Private conditions

P
port: Private classes
protocol: Private classes

Q
query-string-updates: Private classes

R
replacement: Private classes
replacement: Private classes
rules: Public classes
rules-directory: Public classes
rules-file: Public classes

S
Slot, admin-allowed: Public classes
Slot, admin-host: Public classes
Slot, domain-name-rule: Private conditions
Slot, http-code: Private classes
Slot, instance: Public classes
Slot, kind: Private conditions
Slot, kind: Private classes
Slot, match: Private conditions
Slot, match: Private conditions
Slot, match: Private classes
Slot, match: Private classes
Slot, matcher: Private classes
Slot, matcher: Private classes
Slot, name: Private conditions
Slot, name: Private classes
Slot, name: Private classes
Slot, name: Private classes
Slot, name: Private classes
Slot, new-name: Private classes
Slot, operation: Private conditions
Slot, port: Private classes
Slot, protocol: Private classes
Slot, query-string-updates: Private classes
Slot, replacement: Private classes
Slot, replacement: Private classes
Slot, rules: Public classes
Slot, rules-directory: Public classes
Slot, rules-file: Public classes
Slot, uri-rules: Private classes
Slot, value: Private classes
Special Variable, *qsu-generic-readers*: Private special variables
Special Variable, *singleton-classes*: Private special variables
Special Variable, +default-domain-name-rule+: Private special variables
Special Variable, +domain-redirection-rule-code+: Private special variables
Special Variable, +qsu-code+: Private special variables
Special Variable, +uri-redirection-rule-code+: Private special variables

U
uri-rules: Private classes

V
value: Private classes

Jump to:   *   +  
A   D   H   I   K   M   N   O   P   Q   R   S   U   V  

Previous: , Up: Indexes   [Contents][Index]

A.4 Data types

Jump to:   A   B   C   D   F   M   O   P   Q   R   S   T   U  
Index Entry  Section

A
admin-handler.lisp: The cl-cheshire-cat/sources/admin-handler․lisp file

B
behavior.lisp: The cl-cheshire-cat/sources/behavior․lisp file

C
cl-cheshire-cat: The cl-cheshire-cat system
cl-cheshire-cat: The cl-cheshire-cat package
cl-cheshire-cat.asd: The cl-cheshire-cat/cl-cheshire-cat․asd file
Class, domain-redirection-rule: Private classes
Class, qs-add: Private classes
Class, qs-clear: Private classes
Class, qs-delete: Private classes
Class, qs-rename: Private classes
Class, qs-update: Private classes
Class, query-string-update: Private classes
Class, redirection-acceptor: Public classes
Class, redirection-rule: Private classes
Class, singleton-class: Public classes
Class, two-steps-start-acceptor: Private classes
Class, uri-redirection-rule: Private classes
classes: The cl-cheshire-cat/sources/classes module
Condition, rs-error: Private conditions
Condition, rs-loop-detected: Private conditions
Condition, rs-no-such-domain-rule: Private conditions
Condition, rs-no-such-qs-update: Private conditions
Condition, rs-no-such-rule: Private conditions
Condition, rs-no-such-uri-rule: Private conditions
conditions.lisp: The cl-cheshire-cat/sources/classes/conditions․lisp file

D
domain-redirection-rule: Private classes

F
File, admin-handler.lisp: The cl-cheshire-cat/sources/admin-handler․lisp file
File, behavior.lisp: The cl-cheshire-cat/sources/behavior․lisp file
File, cl-cheshire-cat.asd: The cl-cheshire-cat/cl-cheshire-cat․asd file
File, conditions.lisp: The cl-cheshire-cat/sources/classes/conditions․lisp file
File, package.lisp: The cl-cheshire-cat/sources/package․lisp file
File, query-string.lisp: The cl-cheshire-cat/sources/classes/query-string․lisp file
File, rules.lisp: The cl-cheshire-cat/sources/classes/rules․lisp file
File, server.lisp: The cl-cheshire-cat/sources/server․lisp file
File, singleton-class.lisp: The cl-cheshire-cat/sources/classes/singleton-class․lisp file
File, two-steps-start-acceptor.lisp: The cl-cheshire-cat/sources/classes/two-steps-start-acceptor․lisp file
File, utils.lisp: The cl-cheshire-cat/sources/utils․lisp file

M
Module, classes: The cl-cheshire-cat/sources/classes module
Module, sources: The cl-cheshire-cat/sources module

O
org.tfeb.hax.singleton-classes: The org․tfeb․hax․singleton-classes package

P
Package, cl-cheshire-cat: The cl-cheshire-cat package
Package, org.tfeb.hax.singleton-classes: The org․tfeb․hax․singleton-classes package
package.lisp: The cl-cheshire-cat/sources/package․lisp file

Q
qs-add: Private classes
qs-clear: Private classes
qs-delete: Private classes
qs-rename: Private classes
qs-update: Private classes
query-string-update: Private classes
query-string.lisp: The cl-cheshire-cat/sources/classes/query-string․lisp file

R
redirection-acceptor: Public classes
redirection-rule: Private classes
rs-error: Private conditions
rs-loop-detected: Private conditions
rs-no-such-domain-rule: Private conditions
rs-no-such-qs-update: Private conditions
rs-no-such-rule: Private conditions
rs-no-such-uri-rule: Private conditions
rules.lisp: The cl-cheshire-cat/sources/classes/rules․lisp file

S
server.lisp: The cl-cheshire-cat/sources/server․lisp file
singleton-class: Public classes
singleton-class.lisp: The cl-cheshire-cat/sources/classes/singleton-class․lisp file
sources: The cl-cheshire-cat/sources module
System, cl-cheshire-cat: The cl-cheshire-cat system

T
two-steps-start-acceptor: Private classes
two-steps-start-acceptor.lisp: The cl-cheshire-cat/sources/classes/two-steps-start-acceptor․lisp file

U
uri-redirection-rule: Private classes
utils.lisp: The cl-cheshire-cat/sources/utils․lisp file

Jump to:   A   B   C   D   F   M   O   P   Q   R   S   T   U