The cl-cheshire-cat Reference Manual

Table of Contents

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 2.3 "Robert April" on Tue Feb 20 07:55:35 2018 GMT+0.


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

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.


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

2 Systems

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


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

2.1 cl-cheshire-cat

Author

Mathieu Lemoine <mlemoine@mentel.com>

License

3-clause BSD

Description

Cheshire Cat HTTP Redirection Server

Version

0.1

Dependencies
Source

cl-cheshire-cat.asd (file)

Component

sources (module)


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

3 Modules

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


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

3.1 cl-cheshire-cat/sources

Parent

cl-cheshire-cat (system)

Location

sources/

Components

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

3.2 cl-cheshire-cat/sources/classes

Dependency

utils.lisp (file)

Parent

sources (module)

Location

sources/classes/

Components

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

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


Next: , Previous: , Up: Lisp files   [Contents][Index]

4.1.1 cl-cheshire-cat.asd

Location

cl-cheshire-cat.asd

Systems

cl-cheshire-cat (system)


Next: , Previous: , Up: Lisp files   [Contents][Index]

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

Parent

sources (module)

Location

sources/package.lisp

Packages

cl-cheshire-cat


Next: , Previous: , Up: Lisp files   [Contents][Index]

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

Dependency

package.lisp (file)

Parent

sources (module)

Location

sources/utils.lisp

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

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

Parent

classes (module)

Location

sources/classes/singleton-class.lisp

Packages

org.tfeb.hax.singleton-classes

Exported Definitions
Internal Definitions

*singleton-classes* (special variable)


Next: , Previous: , Up: Lisp files   [Contents][Index]

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

Dependency

singleton-class.lisp (file)

Parent

classes (module)

Location

sources/classes/conditions.lisp

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

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

Dependency

conditions.lisp (file)

Parent

classes (module)

Location

sources/classes/two-steps-start-acceptor.lisp

Internal Definitions

two-steps-start-acceptor (class)


Next: , Previous: , Up: Lisp files   [Contents][Index]

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

Dependency

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

Parent

classes (module)

Location

sources/classes/query-string.lisp

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

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

Dependency

query-string.lisp (file)

Parent

classes (module)

Location

sources/classes/rules.lisp

Exported Definitions
Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

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

Dependency

classes (module)

Parent

sources (module)

Location

sources/behavior.lisp

Internal Definitions

Next: , Previous: , Up: Lisp files   [Contents][Index]

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

Dependency

behavior.lisp (file)

Parent

sources (module)

Location

sources/admin-handler.lisp

Internal Definitions

Previous: , Up: Lisp files   [Contents][Index]

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

Dependency

admin-handler.lisp (file)

Parent

sources (module)

Location

sources/server.lisp

Exported Definitions
Internal Definitions

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

5 Packages

Packages are listed by definition order.


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

5.1 cl-cheshire-cat

Cheshire Cat (HTTP Redirection Server) main package

Source

package.lisp (file)

Nicknames
Use List
Exported Definitions
Internal Definitions

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

5.2 org.tfeb.hax.singleton-classes

Source

singleton-class.lisp (file)

Use List
Exported Definitions
Internal Definitions

*singleton-classes* (special variable)


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

6 Definitions

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


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

6.1 Exported definitions


Next: , Previous: , Up: Exported definitions   [Contents][Index]

6.1.1 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 (file)

Function: reset-singleton-classes ()
Package

org.tfeb.hax.singleton-classes

Source

singleton-class.lisp (file)


Next: , Previous: , Up: Exported definitions   [Contents][Index]

6.1.2 Generic functions

Generic Function: drr-uri-rules OBJECT
Generic Function: (setf drr-uri-rules) NEW-VALUE OBJECT
Package

cl-cheshire-cat

Methods
Method: drr-uri-rules (DOMAIN-REDIRECTION-RULE domain-redirection-rule)
Method: (setf drr-uri-rules) NEW-VALUE (DOMAIN-REDIRECTION-RULE domain-redirection-rule)

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

Source

rules.lisp (file)


Previous: , Up: Exported definitions   [Contents][Index]

6.1.3 Classes

Class: redirection-acceptor ()

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

Package

cl-cheshire-cat

Source

server.lisp (file)

Direct superclasses

two-steps-start-acceptor (class)

Direct methods
Direct slots
Slot: admin-host

The domain name used to manage this redirection acceptor.

Type

string

Initargs

:admin-host

Initform

"management.invalid"

Readers

redirection-acceptor-admin-host (generic function)

Writers

(setf redirection-acceptor-admin-host) (generic function)

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

Initargs

:admin-allowed

Initform

(quote (("127.0.0.1")))

Readers

redirection-acceptor-admin-allowed (generic function)

Writers

(setf redirection-acceptor-admin-allowed) (generic function)

Slot: rules

The list of redirection rules used by this acceptor.

Type

list

Initform

(quote nil)

Readers

redirection-acceptor-rules (generic function)

Writers

(setf redirection-acceptor-rules) (generic function)

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 (generic function)

Writers

(setf redirection-acceptor-rules-directory) (generic function)

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 (generic function)

Class: singleton-class ()
Package

org.tfeb.hax.singleton-classes

Source

singleton-class.lisp (file)

Direct superclasses

standard-class (class)

Direct methods
  • initialize-instance (method)
  • make-instance (method)
  • validate-superclass (method)
  • validate-superclass (method)
  • validate-superclass (method)
Direct slots
Slot: instance

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

6.2 Internal definitions


Next: , Previous: , Up: Internal definitions   [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 (file)

Special Variable: *singleton-classes*
Package

org.tfeb.hax.singleton-classes

Source

singleton-class.lisp (file)

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 (file)

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

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

Package

cl-cheshire-cat

Source

rules.lisp (file)

Special Variable: +qsu-code+

cl-store type-code for query string updates.

Package

cl-cheshire-cat

Source

query-string.lisp (file)

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

cl-store type-code for URI redirection rules.

Package

cl-cheshire-cat

Source

rules.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

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 (file)

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 (file)

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 (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

6.2.3 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 (file)

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 (file)

Function: admin-domain-name-rules-handler% PATH REDIRECTION-ACCEPTOR

Handler for domain name rules management

Package

cl-cheshire-cat

Source

admin-handler.lisp (file)

Function: admin-handler REDIRECTION-ACCEPTOR

Management handler.

Package

cl-cheshire-cat

Source

admin-handler.lisp (file)

Function: admin-query-string-handler% PATH RULE

Handler for query-string operation

Package

cl-cheshire-cat

Source

admin-handler.lisp (file)

Function: admin-uri-rules-handler% PATH DOMAIN-NAME-RULE

Handler for URI rules management.

Package

cl-cheshire-cat

Source

admin-handler.lisp (file)

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 (file)

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 (file)

Function: class<-qsu-operation OPERATION

Returns the class corresponding to this query-string operation.

Package

cl-cheshire-cat

Source

query-string.lisp (file)

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 (file)

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 (file)

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 (file)

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 (file)

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 (file)

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 (file)

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 (file)

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 (file)

Function: load-rules REDIRECTION-ACCEPTOR FILE

Save all the rules in mentioned file.

Package

cl-cheshire-cat

Source

server.lisp (file)

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 (file)

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 (file)

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 (file)

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 (file)

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 (file)

Function: qsu-operation<-class CLASS

Returns the query-string operation corresponding to this class.

Package

cl-cheshire-cat

Source

query-string.lisp (file)

Function: redirection-rule= RULE1 RULE2 &rest RULES

This function checks whether two redirection rules are equals.

Package

cl-cheshire-cat

Source

rules.lisp (file)

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 (file)

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 (file)

Function: rr-key RULE

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

Package

cl-cheshire-cat

Source

rules.lisp (file)

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 (file)

Function: save-rules REDIRECTION-ACCEPTOR FILE

Save all the rules in mentioned file.

Package

cl-cheshire-cat

Source

server.lisp (file)

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 (file)

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 (file)

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 (file)


Next: , Previous: , Up: Internal definitions   [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 (file)

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 (file)

Methods
Method: qsu-match (QS-UPDATE qs-update)

Regex to match the old value of the parameter

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

Default value for MATCH reader.

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

conditions.lisp (file)

Generic Function: qsu-matcher OBJECT
Package

cl-cheshire-cat

Methods
Method: qsu-matcher (QS-UPDATE qs-update)

Compiled regex matcher

Source

query-string.lisp (file)

Generic Function: qsu-name UPDATE

Generic query string update reader for NAME.

Package

cl-cheshire-cat

Source

query-string.lisp (file)

Methods
Method: qsu-name (QS-DELETE qs-delete)

Name of the parameter to delete.

Method: qsu-name (QS-UPDATE qs-update)

Name of the parameter to update.

Method: qsu-name (QS-RENAME qs-rename)

Name of the parameter to rename (old name).

Method: qsu-name (QS-ADD qs-add)

Name of the parameter to create.

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

Default value for NAME reader.

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

conditions.lisp (file)

Generic Function: qsu-new-name UPDATE

Generic query string update reader for NEW-NAME.

Package

cl-cheshire-cat

Source

query-string.lisp (file)

Methods
Method: qsu-new-name (QS-RENAME qs-rename)

New name for the parameter to rename.

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 (file)

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

conditions.lisp (file)

Generic Function: qsu-replacement UPDATE

Generic query string update reader for REPLACEMENT.

Package

cl-cheshire-cat

Source

query-string.lisp (file)

Methods
Method: qsu-replacement (QS-UPDATE qs-update)

Replacement string to generate the new value of the parameter

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 (file)

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 (file)

Methods
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.

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

Default value for VALUE reader.

Generic Function: redirection-acceptor-admin-allowed OBJECT
Generic Function: (setf redirection-acceptor-admin-allowed) NEW-VALUE OBJECT
Package

cl-cheshire-cat

Methods
Method: redirection-acceptor-admin-allowed (REDIRECTION-ACCEPTOR redirection-acceptor)
Method: (setf redirection-acceptor-admin-allowed) NEW-VALUE (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 (file)

Generic Function: redirection-acceptor-admin-host OBJECT
Generic Function: (setf redirection-acceptor-admin-host) NEW-VALUE OBJECT
Package

cl-cheshire-cat

Methods
Method: redirection-acceptor-admin-host (REDIRECTION-ACCEPTOR redirection-acceptor)
Method: (setf redirection-acceptor-admin-host) NEW-VALUE (REDIRECTION-ACCEPTOR redirection-acceptor)

The domain name used to manage this redirection acceptor.

Source

server.lisp (file)

Generic Function: redirection-acceptor-rules OBJECT
Generic Function: (setf redirection-acceptor-rules) NEW-VALUE OBJECT
Package

cl-cheshire-cat

Methods
Method: redirection-acceptor-rules (REDIRECTION-ACCEPTOR redirection-acceptor)
Method: (setf redirection-acceptor-rules) NEW-VALUE (REDIRECTION-ACCEPTOR redirection-acceptor)

The list of redirection rules used by this acceptor.

Source

server.lisp (file)

Generic Function: redirection-acceptor-rules-directory OBJECT
Generic Function: (setf redirection-acceptor-rules-directory) NEW-VALUE OBJECT
Package

cl-cheshire-cat

Methods
Method: redirection-acceptor-rules-directory (REDIRECTION-ACCEPTOR redirection-acceptor)
Method: (setf redirection-acceptor-rules-directory) NEW-VALUE (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 (file)

Method: (setf redirection-acceptor-rules-directory) NEW-DIRECTORY (ACCEPTOR redirection-acceptor) around

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

Source

server.lisp (file)

Generic Function: redirection-acceptor-rules-file OBJECT
Package

cl-cheshire-cat

Methods
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 (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 (file)

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 Function: rr-http-code OBJECT
Generic Function: (setf rr-http-code) NEW-VALUE OBJECT
Package

cl-cheshire-cat

Methods
Method: rr-http-code (REDIRECTION-RULE redirection-rule)
Method: (setf rr-http-code) NEW-VALUE (REDIRECTION-RULE redirection-rule)

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

Source

rules.lisp (file)

Method: (setf rr-http-code) NEW-HTTP-CODE (RULE redirection-rule) before

Ensures the type of the http-code slot.

Source

rules.lisp (file)

Generic Function: rr-kind CONDITION
Generic Function: (setf rr-kind) NEW-VALUE OBJECT
Package

cl-cheshire-cat

Methods
Method: rr-kind (REDIRECTION-RULE redirection-rule)

A selector for the matching alogrithm used for this rule.

Source

rules.lisp (file)

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

conditions.lisp (file)

Method: (setf rr-kind) NEW-KIND (RULE redirection-rule) after

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

Source

rules.lisp (file)

Method: (setf rr-kind) NEW-VALUE (REDIRECTION-RULE redirection-rule)

A selector for the matching alogrithm used for this rule.

Source

rules.lisp (file)

Generic Function: rr-match CONDITION
Generic Function: (setf rr-match) NEW-VALUE OBJECT
Package

cl-cheshire-cat

Methods
Method: rr-match (REDIRECTION-RULE redirection-rule)

The matching pattern used for this rule.

Source

rules.lisp (file)

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

conditions.lisp (file)

Method: (setf rr-match) NEW-MATCH (RULE redirection-rule) after

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

Source

rules.lisp (file)

Method: (setf rr-match) NEW-VALUE (REDIRECTION-RULE redirection-rule)

The matching pattern used for this rule.

Source

rules.lisp (file)

Generic Function: rr-matcher OBJECT
Package

cl-cheshire-cat

Methods
Method: rr-matcher (REDIRECTION-RULE redirection-rule)

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

Source

rules.lisp (file)

Generic Function: rr-port OBJECT
Generic Function: (setf rr-port) NEW-VALUE OBJECT
Package

cl-cheshire-cat

Methods
Method: rr-port (REDIRECTION-RULE redirection-rule)
Method: (setf rr-port) NEW-VALUE (REDIRECTION-RULE redirection-rule)

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

Source

rules.lisp (file)

Generic Function: rr-protocol OBJECT
Generic Function: (setf rr-protocol) NEW-VALUE OBJECT
Package

cl-cheshire-cat

Methods
Method: rr-protocol (REDIRECTION-RULE redirection-rule)
Method: (setf rr-protocol) NEW-VALUE (REDIRECTION-RULE redirection-rule)

The protocol to use after
redirection (HTTP or HTTPS)

Source

rules.lisp (file)

Generic Function: rr-qs-updates OBJECT
Generic Function: (setf rr-qs-updates) NEW-VALUE OBJECT
Package

cl-cheshire-cat

Methods
Method: rr-qs-updates (REDIRECTION-RULE redirection-rule)
Method: (setf rr-qs-updates) NEW-VALUE (REDIRECTION-RULE redirection-rule)

List of query string update performed
when this rule match.

Source

rules.lisp (file)

Generic Function: rr-replacement OBJECT
Generic Function: (setf rr-replacement) NEW-VALUE OBJECT
Package

cl-cheshire-cat

Methods
Method: rr-replacement (REDIRECTION-RULE redirection-rule)
Method: (setf rr-replacement) NEW-VALUE (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 (file)

Method: (setf rr-replacement) NEW-REPLACEMENT (RULE redirection-rule) after

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

Source

rules.lisp (file)

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 (file)

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 (file)

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 Function: urr-domain-name-rule CONDITION
Generic Function: (setf urr-domain-name-rule) NEW-VALUE CONDITION
Package

cl-cheshire-cat

Methods
Method: urr-domain-name-rule (CONDITION rs-no-such-uri-rule)
Method: (setf urr-domain-name-rule) NEW-VALUE (CONDITION rs-no-such-uri-rule)
Source

conditions.lisp (file)


Next: , Previous: , Up: Internal definitions   [Contents][Index]

6.2.5 Conditions

Condition: rs-error ()

Root condition for redirection server errors.

Package

cl-cheshire-cat

Source

conditions.lisp (file)

Direct superclasses

error (condition)

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 (file)

Direct superclasses

rs-error (condition)

Condition: rs-no-such-domain-rule ()

Error raised if a domain name rule cannot be found.

Package

cl-cheshire-cat

Source

conditions.lisp (file)

Direct superclasses

rs-no-such-rule (condition)

Condition: rs-no-such-qs-update ()

Error raised if a query string update cannot be found.

Package

cl-cheshire-cat

Source

conditions.lisp (file)

Direct superclasses

rs-error (condition)

Direct methods
Direct slots
Slot: operation
Initargs

:operation

Readers

qsu-operation (generic function)

Slot: name
Initargs

:name

Initform

(quote nil)

Readers

qsu-name (generic function)

Slot: match
Initargs

:match

Initform

(quote nil)

Readers

qsu-match (generic function)

Condition: rs-no-such-rule ()

Error raised if a rule cannot be found.

Package

cl-cheshire-cat

Source

conditions.lisp (file)

Direct superclasses

rs-error (condition)

Direct subclasses
Direct methods
Direct slots
Slot: kind
Initargs

:kind

Readers

rr-kind (generic function)

Slot: match
Initargs

:match

Readers

rr-match (generic function)

Condition: rs-no-such-uri-rule ()

Error raised if an URI rule cannot be found.

Package

cl-cheshire-cat

Source

conditions.lisp (file)

Direct superclasses

rs-no-such-rule (condition)

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

:domain-name-rule

Readers

urr-domain-name-rule (generic function)

Writers

(setf urr-domain-name-rule) (generic function)


Previous: , Up: Internal definitions   [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 (file)

Direct superclasses

redirection-rule (class)

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 (generic function)

Writers

(setf drr-uri-rules) (generic function)

Class: qs-add ()

Add a new parameter at the beginning the query string.

Package

cl-cheshire-cat

Source

query-string.lisp (file)

Direct superclasses

query-string-update (class)

Direct methods
Direct slots
Slot: name

Name of the parameter to create.

Type

string

Initargs

:name

Readers

qsu-name (generic function)

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 (generic function)

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 (file)

Direct superclasses

query-string-update (class)

Direct methods
Class: qs-delete ()

Remove a parameter from the query string.

Package

cl-cheshire-cat

Source

query-string.lisp (file)

Direct superclasses

query-string-update (class)

Direct methods
Direct slots
Slot: name

Name of the parameter to delete.

Type

string

Initargs

:name

Readers

qsu-name (generic function)

Class: qs-rename ()

Rename the parameter in the query string.

Package

cl-cheshire-cat

Source

query-string.lisp (file)

Direct superclasses

query-string-update (class)

Direct methods
Direct slots
Slot: name

Name of the parameter to rename (old name).

Type

string

Initargs

:name

Readers

qsu-name (generic function)

Slot: new-name

New name for the parameter to rename.

Type

string

Initargs

:new-name

Readers

qsu-new-name (generic function)

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 (file)

Direct superclasses

query-string-update (class)

Direct methods
Direct slots
Slot: name

Name of the parameter to update.

Type

string

Initargs

:name

Readers

qsu-name (generic function)

Slot: match

Regex to match the old value of the parameter

Type

string

Initargs

:match

Readers

qsu-match (generic function)

Slot: replacement

Replacement string to generate the new value of the parameter

Type

string

Initargs

:replacement

Readers

qsu-replacement (generic function)

Slot: matcher

Compiled regex matcher

Readers

qsu-matcher (generic function)

Class: query-string-update ()

Root class for Query String operations.

Package

cl-cheshire-cat

Source

query-string.lisp (file)

Direct superclasses

standard-object (class)

Direct subclasses
Direct methods
Class: redirection-rule ()

Root class for redirection rules.

Package

cl-cheshire-cat

Source

rules.lisp (file)

Direct superclasses

standard-object (class)

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 (generic function)

Writers

(setf rr-kind) (generic function)

Slot: match

The matching pattern used for this rule.

Type

(or string list)

Initargs

:match

Readers

rr-match (generic function)

Writers

(setf rr-match) (generic function)

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 (generic function)

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 (generic function)

Writers

(setf rr-replacement) (generic function)

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 (generic function)

Writers

(setf rr-http-code) (generic function)

Slot: protocol

The protocol to use after
redirection (HTTP or HTTPS)

Type

(or null (member :http :https))

Initargs

:protocol

Readers

rr-protocol (generic function)

Writers

(setf rr-protocol) (generic function)

Slot: port

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

Type

(or null unsigned-byte)

Initargs

:port

Readers

rr-port (generic function)

Writers

(setf rr-port) (generic function)

Slot: query-string-updates

List of query string update performed
when this rule match.

Type

list

Initform

(quote nil)

Readers

rr-qs-updates (generic function)

Writers

(setf rr-qs-updates) (generic function)

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 (file)

Direct superclasses

acceptor (class)

Direct subclasses

redirection-acceptor (class)

Direct methods
  • start (method)
  • start-listening (method)
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 (file)

Direct superclasses

redirection-rule (class)

Direct methods

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

Appendix A Indexes


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

A.1 Concepts

Jump to:   C   F   L   M  
Index Entry  Section

C
cl-cheshire-cat.asd: The cl-cheshire-cat<dot>asd file
cl-cheshire-cat/sources: The cl-cheshire-cat/sources module
cl-cheshire-cat/sources/admin-handler.lisp: The cl-cheshire-cat/sources/admin-handler<dot>lisp file
cl-cheshire-cat/sources/behavior.lisp: The cl-cheshire-cat/sources/behavior<dot>lisp file
cl-cheshire-cat/sources/classes: The cl-cheshire-cat/sources/classes module
cl-cheshire-cat/sources/classes/conditions.lisp: The cl-cheshire-cat/sources/classes/conditions<dot>lisp file
cl-cheshire-cat/sources/classes/query-string.lisp: The cl-cheshire-cat/sources/classes/query-string<dot>lisp file
cl-cheshire-cat/sources/classes/rules.lisp: The cl-cheshire-cat/sources/classes/rules<dot>lisp file
cl-cheshire-cat/sources/classes/singleton-class.lisp: The cl-cheshire-cat/sources/classes/singleton-class<dot>lisp file
cl-cheshire-cat/sources/classes/two-steps-start-acceptor.lisp: The cl-cheshire-cat/sources/classes/two-steps-start-acceptor<dot>lisp file
cl-cheshire-cat/sources/package.lisp: The cl-cheshire-cat/sources/package<dot>lisp file
cl-cheshire-cat/sources/server.lisp: The cl-cheshire-cat/sources/server<dot>lisp file
cl-cheshire-cat/sources/utils.lisp: The cl-cheshire-cat/sources/utils<dot>lisp file

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

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

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

Jump to:   C   F   L   M  

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

A.2 Functions

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

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

A
add-domain-name-rule: Internal macros
add-qs-update: Internal functions
add-uri-rule: Internal functions
admin-domain-name-rules-handler%: Internal functions
admin-handler: Internal functions
admin-query-string-handler%: Internal functions
admin-uri-rules-handler%: Internal functions
apply-default-domain-name-rule: Internal functions
apply-rules: Internal functions

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

D
define-generic-qsu-reader: Internal macros
drr-is-loop-p: Internal functions
drr-uri-rules: Exported generic functions
drr-uri-rules: Exported generic functions

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

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

I
ip-cidr-match-p: Internal functions

L
load-rules: Internal functions

M
Macro, add-domain-name-rule: Internal macros
Macro, define-generic-qsu-reader: Internal macros
Macro, remove-domain-name-rule: Internal macros
make-query-string-update: Internal functions
merge-redirection-parameter: Internal functions
merge-redirection-parameters-list: Internal functions
Method, (setf drr-uri-rules): Exported generic functions
Method, (setf redirection-acceptor-admin-allowed): Internal generic functions
Method, (setf redirection-acceptor-admin-host): Internal generic functions
Method, (setf redirection-acceptor-rules): Internal generic functions
Method, (setf redirection-acceptor-rules-directory): Internal generic functions
Method, (setf redirection-acceptor-rules-directory): Internal generic functions
Method, (setf rr-http-code): Internal generic functions
Method, (setf rr-http-code): Internal generic functions
Method, (setf rr-kind): Internal generic functions
Method, (setf rr-kind): Internal generic functions
Method, (setf rr-match): Internal generic functions
Method, (setf rr-match): Internal generic functions
Method, (setf rr-port): Internal generic functions
Method, (setf rr-protocol): Internal generic functions
Method, (setf rr-qs-updates): Internal generic functions
Method, (setf rr-replacement): Internal generic functions
Method, (setf rr-replacement): Internal generic functions
Method, (setf urr-domain-name-rule): Internal generic functions
Method, drr-uri-rules: Exported generic functions
Method, qsu-key: Internal generic functions
Method, qsu-key: Internal generic functions
Method, qsu-key: Internal generic functions
Method, qsu-match: Internal generic functions
Method, qsu-match: Internal generic functions
Method, qsu-match: Internal generic functions
Method, qsu-matcher: Internal generic functions
Method, qsu-name: Internal generic functions
Method, qsu-name: Internal generic functions
Method, qsu-name: Internal generic functions
Method, qsu-name: Internal generic functions
Method, qsu-name: Internal generic functions
Method, qsu-name: Internal generic functions
Method, qsu-new-name: Internal generic functions
Method, qsu-new-name: Internal generic functions
Method, qsu-operation: Internal generic functions
Method, qsu-operation: Internal generic functions
Method, qsu-replacement: Internal generic functions
Method, qsu-replacement: Internal generic functions
Method, qsu-summary: Internal generic functions
Method, qsu-value: Internal generic functions
Method, qsu-value: Internal generic functions
Method, redirection-acceptor-admin-allowed: Internal generic functions
Method, redirection-acceptor-admin-host: Internal generic functions
Method, redirection-acceptor-rules: Internal generic functions
Method, redirection-acceptor-rules-directory: Internal generic functions
Method, redirection-acceptor-rules-file: Internal generic functions
Method, resolve-rr-matcher: Internal generic functions
Method, resolve-rr-matcher: Internal generic functions
Method, rr-http-code: Internal generic functions
Method, rr-kind: Internal generic functions
Method, rr-kind: Internal generic functions
Method, rr-match: Internal generic functions
Method, rr-match: Internal generic functions
Method, rr-matcher: Internal generic functions
Method, rr-port: Internal generic functions
Method, rr-protocol: Internal generic functions
Method, rr-qs-updates: Internal generic functions
Method, rr-replacement: Internal generic functions
Method, rr-summary: Internal generic functions
Method, rr-summary: Internal generic functions
Method, update-query-string: Internal generic functions
Method, update-query-string: Internal generic functions
Method, update-query-string: Internal generic functions
Method, update-query-string: Internal generic functions
Method, update-query-string: Internal generic functions
Method, urr-domain-name-rule: Internal generic functions

P
parse-cidr-list: Internal functions
parse-integer-or-nil: Internal functions
preload-rules: Exported functions

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

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

S
save-rules: Internal functions
send-bad-request: Internal functions

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

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

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*: Internal special variables
*singleton-classes*: Internal special variables

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

A
admin-allowed: Exported classes
admin-host: Exported classes

D
domain-name-rule: Internal conditions

H
http-code: Internal classes

I
instance: Exported classes

K
kind: Internal conditions
kind: Internal classes

M
match: Internal conditions
match: Internal conditions
match: Internal classes
match: Internal classes
matcher: Internal classes
matcher: Internal classes

N
name: Internal conditions
name: Internal classes
name: Internal classes
name: Internal classes
name: Internal classes
new-name: Internal classes

O
operation: Internal conditions

P
port: Internal classes
protocol: Internal classes

Q
query-string-updates: Internal classes

R
replacement: Internal classes
replacement: Internal classes
rules: Exported classes
rules-directory: Exported classes
rules-file: Exported classes

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

U
uri-rules: Internal classes

V
value: Internal 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:   C   D   O   P   Q   R   S   T   U  
Index Entry  Section

C
cl-cheshire-cat: The cl-cheshire-cat system
cl-cheshire-cat: The cl-cheshire-cat package
Class, domain-redirection-rule: Internal classes
Class, qs-add: Internal classes
Class, qs-clear: Internal classes
Class, qs-delete: Internal classes
Class, qs-rename: Internal classes
Class, qs-update: Internal classes
Class, query-string-update: Internal classes
Class, redirection-acceptor: Exported classes
Class, redirection-rule: Internal classes
Class, singleton-class: Exported classes
Class, two-steps-start-acceptor: Internal classes
Class, uri-redirection-rule: Internal classes
Condition, rs-error: Internal conditions
Condition, rs-loop-detected: Internal conditions
Condition, rs-no-such-domain-rule: Internal conditions
Condition, rs-no-such-qs-update: Internal conditions
Condition, rs-no-such-rule: Internal conditions
Condition, rs-no-such-uri-rule: Internal conditions

D
domain-redirection-rule: Internal classes

O
org.tfeb.hax.singleton-classes: The org<dot>tfeb<dot>hax<dot>singleton-classes package

P
Package, cl-cheshire-cat: The cl-cheshire-cat package
Package, org.tfeb.hax.singleton-classes: The org<dot>tfeb<dot>hax<dot>singleton-classes package

Q
qs-add: Internal classes
qs-clear: Internal classes
qs-delete: Internal classes
qs-rename: Internal classes
qs-update: Internal classes
query-string-update: Internal classes

R
redirection-acceptor: Exported classes
redirection-rule: Internal classes
rs-error: Internal conditions
rs-loop-detected: Internal conditions
rs-no-such-domain-rule: Internal conditions
rs-no-such-qs-update: Internal conditions
rs-no-such-rule: Internal conditions
rs-no-such-uri-rule: Internal conditions

S
singleton-class: Exported classes
System, cl-cheshire-cat: The cl-cheshire-cat system

T
two-steps-start-acceptor: Internal classes

U
uri-redirection-rule: Internal classes

Jump to:   C   D   O   P   Q   R   S   T   U