Quantcast
Channel: AskApache
Viewing all 58 articles
Browse latest View live

Mod_Status tricks to View Apache Module Directives

$
0
0

AskApache.com

Apache Server Info in Lynx generated by mod_statusQuick and easy method to get a list of all Apache Modules currently loaded, a list of all the directives each module provides, a list of currently used directives, etc... These directives can be used in httpd.conf and/or .htaccess files so it is definately useful to know which ones are available and which ones are currently being used.

Example Server Info - Mod_Rewrite

Here is what you will see when viewing the server-info page for Mod_Rewrite

Lynx

Terminal view of Mod_Rewrite.c Directives provided by Apache mod_status

Firefox

Browser view of Mod_Rewrite.c Directives provided by Apache mod_status

Enable mod_status

First you will need to have mod_status loaded, (which 99.9% of you do). If not already enabled, add this to your httpd.conf and restart apache.

LoadModule status_module modules/mod_status.so

This module provides apache with 2 new handlers you can use:

  1. server-status
  2. server-info

You may have seen special cases where other handlers were used in .htaccess files like SetHandler send-as-is or SetHandler cgi-script, but basically a handler is something apache will use to render a request in a way other than normal files are rendered. So what we need to do is add the server-info handler for a specific request so that the special info is rendered.

Setup for httpd.conf

If you have access to modify the httpd.conf you can set up /server-status and /server-info to always be handled by mod_status, no matter which site/vhost.

<location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from localhost
</location>
 
<location /server-info>
SetHandler server-info
Order deny,allow
Deny from all
Allow from localhost
</location>

Setup for Htaccess

Create 2 files, named server-info and server-status in a web-accessible location, like your main htdocs. This will force requests to either file to be handled by mod_status. Then in the same folders .htaccess file add:

<files server-info>
SetHandler server-info
Order deny,allow
Deny from all
Allow from localhost
</files>
 
<files server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from localhost
</files>

Bash Script for Grabbing Info

Requirements: lynx, bash, sed. This is pretty cool, basically you set the SERVER_URL var below to the location of the server-info you setup. Then you run this script to output a list of each module currently loaded into Apache and its corresponding directives. It outputs this in a commented out fashion so you can copy and paste it into your httpd.conf or keep for notes.

#!/bin/bash
 
SERVER_URL=http://localhost/server-info
for m in $(lynx -dump ${SERVER_URL}?list|sed '/.c$/!d; s/^[^a-z]*([^.]*).c.*$/1.c/g');
do
  echo "# ${m}";
  lynx -dump -width=300 ${SERVER_URL}?${m}|sed '/Directives:/,/^$/!d'|sed '/Module /d;s/^[^a-zA-Z<]*(.*)$/# 1/g';
done

Sample Output

# mod_suphp.c
# suPHP_Engine - Whether suPHP is on or off, default is off
# suPHP_ConfigPath - Wheres the php.ini resides, default is the PHP default
# suPHP_UserGroup - User and group scripts shall be run as
# suPHP_AddHandler - Tells mod_suphp to handle these MIME-types
# suPHP_RemoveHandler - Tells mod_suphp not to handle these MIME-types
# suPHP_PHPPath - Path to the PHP binary used to render source view
#
# mod_rewrite.c
# RewriteEngine - On or Off to enable or disable (default) the whole rewriting engine
# RewriteOptions - List of option strings to set
# RewriteBase - the base URL of the per-directory context
# RewriteCond - an input string and a to be applied regexp-pattern
# RewriteRule - an URL-applied regexp-pattern and a substitution URL
# RewriteMap - a mapname and a filename
# RewriteLock - the filename of a lockfile used for inter-process synchronization
# RewriteLog - the filename of the rewriting logfile
# RewriteLogLevel - the level of the rewriting logfile verbosity (0=none, 1=std, .., 9=max)
#
# mod_alias.c
# Alias - a fakename and a realname
# ScriptAlias - a fakename and a realname
# Redirect - an optional status, then document to be redirected and destination URL
# AliasMatch - a regular expression and a filename
# ScriptAliasMatch - a regular expression and a filename
# RedirectMatch - an optional status, then a regular expression and destination URL
# RedirectTemp - a document to be redirected, then the destination URL
# RedirectPermanent - a document to be redirected, then the destination URL
#
# mod_actions.c
# Action - a media type followed by a script name
# Script - a method followed by a script name
#
# mod_dir.c
# FallbackResource - Set a default handler
# DirectoryIndex - a list of file names
# DirectorySlash - On or Off
#
# mod_negotiation.c
# CacheNegotiatedDocs - Either 'on' or 'off' (default)
# LanguagePriority - space-delimited list of MIME language abbreviations
# ForceLanguagePriority - Force LanguagePriority elections, either None, or Fallback and/or Prefer
#
# mod_vhost_alias.c
# VirtualScriptAlias - how to create a ScriptAlias based on the host
# VirtualDocumentRoot - how to create the DocumentRoot based on the host
# VirtualScriptAliasIP - how to create a ScriptAlias based on the host
# VirtualDocumentRootIP - how to create the DocumentRoot based on the host
#
# mod_cgi.c
# ScriptLog - the name of a log for script debugging info
# ScriptLogLength - the maximum length (in bytes) of the script debug log
# ScriptLogBuffer - the maximum size (in bytes) to record of a POST request
#
# mod_suexec.c
# SuexecUserGroup - User and group for spawned processes
#
# mod_info.c
# AddModuleInfo - a module name and additional information on that module
#
# mod_autoindex.c
# AddIcon - an icon URL followed by one or more filenames
# AddIconByType - an icon URL followed by one or more MIME types
# AddIconByEncoding - an icon URL followed by one or more content encodings
# AddAlt - alternate descriptive text followed by one or more filenames
# AddAltByType - alternate descriptive text followed by one or more MIME types
# AddAltByEncoding - alternate descriptive text followed by one or more content encodings
# IndexOptions - one or more index options [+|-][]
# IndexOrderDefault - {Ascending,Descending} {Name,Size,Description,Date}
# IndexIgnore - one or more file extensions
# AddDescription - Descriptive text followed by one or more filenames
# HeaderName - a filename
# ReadmeName - a filename
# FancyIndexing - The FancyIndexing directive is no longer supported. Use IndexOptions FancyIndexing.
# DefaultIcon - an icon URL
# IndexStyleSheet - URL to style sheet
# IndexHeadInsert - String to insert in HTML HEAD section
#
# mod_status.c
# ExtendedStatus - "On" to enable extended status information, "Off" to disable
# SeeRequestTail - For verbose requests, "On" to see the last 63 chars of the request, "Off" (default) to see the first 63 in extended status display
#
# mod_mime.c
# AddCharset - a charset (e.g., iso-2022-jp), followed by one or more file extensions
# AddEncoding - an encoding (e.g., gzip), followed by one or more file extensions
# AddHandler - a handler name followed by one or more file extensions
# AddInputFilter - input filter name (or ; delimited names) followed by one or more file extensions
# AddLanguage - a language (e.g., fr), followed by one or more file extensions
# AddOutputFilter - output filter name (or ; delimited names) followed by one or more file extensions
# AddType - a mime type followed by one or more file extensions
# DefaultLanguage - language to use for documents with no other language file extension
# MultiviewsMatch - NegotiatedOnly (default), Handlers and/or Filters, or Any
# RemoveCharset - one or more file extensions
# RemoveEncoding - one or more file extensions
# RemoveHandler - one or more file extensions
# RemoveInputFilter - one or more file extensions
# RemoveLanguage - one or more file extensions
# RemoveOutputFilter - one or more file extensions
# RemoveType - one or more file extensions
# TypesConfig - the MIME types config file
# ModMimeUsePathInfo - Set to 'yes' to allow mod_mime to use path info for type checking
#
# mod_ssl.c
# SSLMutex - Valid SSLMutex mechanisms are: `none', `default', `flock:/path/to/file', `fcntl:/path/to/file', `sysvsem', `posixsem', `pthread', `file:/path/to/file', `sem'
# SSLPassPhraseDialog - SSL dialog mechanism for the pass phrase query (`builtin', `|/path/to/pipe_program`, or `exec:/path/to/cgi_program')
# SSLSessionCache - SSL Session Cache storage (`none', `nonenotnull', `dbm:/path/to/file')
# SSLCryptoDevice - SSL external Crypto Device usage (`builtin', `...')
# SSLRandomSeed - SSL Pseudo Random Number Generator (PRNG) seeding source (`startup|connect builtin|file:/path|exec:/path [bytes]')
# SSLEngine - SSL switch for the protocol engine (`on', `off')
# SSLFIPS - Enable FIPS-140 mode (`on', `off')
# SSLCipherSuite - Colon-delimited list of permitted SSL Ciphers (`XXX:...:XXX' - see manual)
# SSLCertificateFile - SSL Server Certificate file (`/path/to/file' - PEM or DER encoded)
# SSLCertificateKeyFile - SSL Server Private Key file (`/path/to/file' - PEM or DER encoded)
# SSLCertificateChainFile - SSL Server CA Certificate Chain file (`/path/to/file' - PEM encoded)
# SSLCACertificatePath - SSL CA Certificate path (`/path/to/dir' - contains PEM encoded files)
# SSLCACertificateFile - SSL CA Certificate file (`/path/to/file' - PEM encoded)
# SSLCADNRequestPath - SSL CA Distinguished Name path (`/path/to/dir' - symlink hashes to PEM of acceptable CA names to request)
# SSLCADNRequestFile - SSL CA Distinguished Name file (`/path/to/file' - PEM encoded to derive acceptable CA names to request)
# SSLCARevocationPath - SSL CA Certificate Revocation List (CRL) path (`/path/to/dir' - contains PEM encoded files)
# SSLCARevocationFile - SSL CA Certificate Revocation List (CRL) file (`/path/to/file' - PEM encoded)
# SSLVerifyClient - SSL Client verify type (`none', `optional', `require', `optional_no_ca')
# SSLVerifyDepth - SSL Client verify depth (`N' - number of intermediate certificates)
# SSLSessionCacheTimeout - SSL Session Cache object lifetime (`N' - number of seconds)
# SSLProtocol - Enable or disable various SSL protocols(`[+-][SSLv2|SSLv3|TLSv1] ...' - see manual)
# SSLHonorCipherOrder - Use the server's cipher ordering preference
# SSLInsecureRenegotiation - Enable support for insecure renegotiation
# SSLUserName - Set user name to SSL variable value
# SSLStrictSNIVHostCheck - Strict SNI virtual host checking
# SSLProxyEngine - SSL switch for the proxy protocol engine (`on', `off')
# SSLProxyProtocol - SSL Proxy: enable or disable SSL protocol flavors (`[+-][SSLv2|SSLv3|TLSv1] ...' - see manual)
# SSLProxyCipherSuite - SSL Proxy: colon-delimited list of permitted SSL ciphers (`XXX:...:XXX' - see manual)
# SSLProxyVerify - SSL Proxy: whether to verify the remote certificate (`on' or `off')
# SSLProxyVerifyDepth - SSL Proxy: maximum certificate verification depth (`N' - number of intermediate certificates)
# SSLProxyCACertificateFile - SSL Proxy: file containing server certificates (`/path/to/file' - PEM encoded certificates)
# SSLProxyCACertificatePath - SSL Proxy: directory containing server certificates (`/path/to/dir' - contains PEM encoded certificates)
# SSLProxyCARevocationPath - SSL Proxy: CA Certificate Revocation List (CRL) path (`/path/to/dir' - contains PEM encoded files)
# SSLProxyCARevocationFile - SSL Proxy: CA Certificate Revocation List (CRL) file (`/path/to/file' - PEM encoded)
# SSLProxyMachineCertificateFile - SSL Proxy: file containing client certificates (`/path/to/file' - PEM encoded certificates)
# SSLProxyMachineCertificatePath - SSL Proxy: directory containing client certificates (`/path/to/dir' - contains PEM encoded certificates)
# SSLProxyCheckPeerExpire - SSL Proxy: check the peers certificate expiration date
# SSLProxyCheckPeerCN - SSL Proxy: check the peers certificate CN
# SSLOptions - Set one or more options to configure the SSL engine(`[+-]option[=value] ...' - see manual)
# SSLRequireSSL - Require the SSL protocol for the per-directory context (no arguments)
# SSLRequire - Require a boolean expression to evaluate to true for granting access(arbitrary complex boolean expression - see manual)
# SSLRenegBufferSize - Configure the amount of memory that will be used for buffering the request body if a per-location SSL renegotiation is required due to changed access control requirements
# SSLLog - SSLLog directive is no longer supported - use ErrorLog.
# SSLLogLevel - SSLLogLevel directive is no longer supported - use LogLevel.
#
# mod_version.c
# <ifVersion> - a comparison operator, a version (and a delimiter)
#
# mod_setenvif.c
# SetEnvIf - A header-name, regex and a list of variables.
# SetEnvIfNoCase - a header-name, regex and a list of variables.
# BrowserMatch - A browser regex and a list of variables.
# BrowserMatchNoCase - A browser regex and a list of variables.
#
# mod_unique_id.c
#
#
# mod_headers.c
# Header - an optional condition, an action, header and value followed by optional env clause
# RequestHeader - an action, header and value followed by optional env clause
#
# mod_expires.c
# ExpiresActive - Limited to 'on' or 'off'
# ExpiresByType - a MIME type followed by an expiry date code
# ExpiresDefault - an expiry date code
#
# mod_mime_magic.c
# MimeMagicFile - Path to MIME Magic file (in file(1) format)
#
# mod_env.c
# PassEnv - a list of environment variables to pass to CGI.
# SetEnv - an environment variable name and optional value to pass to CGI.
# UnsetEnv - a list of variables to remove from the CGI environment.
#
# mod_logio.c
#
#
# mod_log_forensic.c
# ForensicLog - the filename of the forensic log
#
# mod_log_config.c
# CustomLog - a file name, a custom log format string or format name, and an optional "env=" clause (see docs)
# TransferLog - the filename of the access log
# LogFormat - a log format string (see docs) and an optional format name
# CookieLog - the filename of the cookie log
# BufferedLogs - Enable Buffered Logging (experimental)
#
# mod_deflate.c
# DeflateFilterNote - Set a note to report on compression ratio
# DeflateWindowSize - Set the Deflate window size (1-15)
# DeflateBufferSize - Set the Deflate Buffer Size
# DeflateMemLevel - Set the Deflate Memory Level (1-9)
# DeflateCompressionLevel - Set the Deflate Compression Level (1-9)
#
# mod_filter.c
# FilterDeclare - filter-name [, filter-type]
# FilterProvider - filter-name, provider-name, dispatch--criterion, dispatch-match
# FilterChain - list of filter names with optional [+-=!@]
# FilterTrace - Debug level
# FilterProtocol - filter-name [provider-name] protocol-args
#
# mod_include.c
# XBitHack - Off, On, or Full
# SSIErrorMsg - a string
# SSITimeFormat - a strftime(3) formatted string
# SSIStartTag - SSI Start String Tag
# SSIEndTag - SSI End String Tag
# SSIUndefinedEcho - String to be displayed if an echoed variable is undefined
# SSIAccessEnable - Whether testing access is enabled. Limited to 'on' or 'off'
# SSILastModified - Whether to set the last modified header or respect an existing header. Limited to 'on' or 'off'
# SSIEtag - Whether to allow the generation of ETags within the server. Existing ETags will be preserved. Limited to 'on' or 'off'
#
# mod_ext_filter.c
# ExtFilterOptions - valid options: DebugLevel=n, LogStderr, NoLogStderr
# ExtFilterDefine - Define an external filter
#
# mod_dbd.c
# DBDriver - SQL Driver
# DBDParams - SQL Driver Params
# DBDPersist - Use persistent connection/pool
# DBDPrepareSQL - SQL statement to prepare (or nothing, to override statement inherited from main server) and label
# DBDMin - Minimum number of connections
# DBDKeep - Maximum number of sustained connections
# DBDMax - Maximum number of connections
# DBDExptime - Keepalive time for idle connections
#
# mod_mem_cache.c
# MCacheSize - The maximum amount of memory used by the cache in KBytes
# MCacheMaxObjectCount - The maximum number of objects allowed to be placed in the cache
# MCacheMinObjectSize - The minimum size (in bytes) of an object to be placed in the cache
# MCacheMaxObjectSize - The maximum size (in bytes) of an object to be placed in the cache
# MCacheRemovalAlgorithm - The algorithm used to remove entries from the cache (default: GDSF)
# MCacheMaxStreamingBuffer - Maximum number of bytes of content to buffer for a streamed response
#
# mod_disk_cache.c
# CacheRoot - The directory to store cache files
# CacheDirLevels - The number of levels of subdirectories in the cache
# CacheDirLength - The number of characters in subdirectory names
# CacheMinFileSize - The minimum file size to cache a document
# CacheMaxFileSize - The maximum file size to cache a document
#
# mod_cache.c
# CacheEnable - A cache type and partial URL prefix below which caching is enabled
# CacheDisable - A partial URL prefix below which caching is disabled
# CacheMaxExpire - The maximum time in seconds to cache a document
# CacheDefaultExpire - The default time in seconds to cache a document
# CacheIgnoreNoLastMod - Ignore Responses where there is no Last Modified Header
# CacheIgnoreCacheControl - Ignore requests from the client for uncached content
# CacheStorePrivate - Ignore 'Cache-Control: private' and store private content
# CacheStoreNoStore - Ignore 'Cache-Control: no-store' and store sensitive content
# CacheIgnoreHeaders - A space separated list of headers that should not be stored by the cache
# CacheIgnoreQueryString - Ignore query-string when caching
# CacheIgnoreURLSessionIdentifiers - A space separated list of session identifiers that should be ignored for creating the key of the cached entity.
# CacheLastModifiedFactor - The factor used to estimate Expires date from LastModified date
# CacheLock - Enable or disable the thundering herd lock.
# CacheLockPath - The thundering herd lock path. Defaults to the '/mod_cache-lock' directory in the system temp directory.
# CacheLockMaxAge - Maximum age of any thundering herd lock.
#
# mod_file_cache.c
# cachefile - A space separated list of files to add to the file handle cache at config time
# mmapfile - A space separated list of files to mmap at config time
#
# mod_auth_digest.c
# AuthName - The authentication realm (e.g. "Members Only")
# AuthDigestProvider - specify the auth providers for a directory or location
# AuthDigestQop - A list of quality-of-protection options
# AuthDigestNonceLifetime - Maximum lifetime of the server nonce (seconds)
# AuthDigestNonceFormat - The format to use when generating the server nonce
# AuthDigestNcCheck - Whether or not to check the nonce-count sent by the client
# AuthDigestAlgorithm - The algorithm used for the hash calculation
# AuthDigestDomain - A list of URI's which belong to the same protection space as the current URI
# AuthDigestShmemSize - The amount of shared memory to allocate for keeping track of clients
#
# mod_auth_basic.c
# AuthBasicProvider - specify the auth providers for a directory or location
# AuthBasicAuthoritative - Set to 'Off' to allow access control to be passed along to lower modules if the UserID is not known to this module
#
# mod_authz_default.c
# AuthzDefaultAuthoritative - Set to 'Off' to allow access control to be passed along to lower modules. (default is On.)
#
# mod_authz_owner.c
# AuthzOwnerAuthoritative - Set to 'Off' to allow access control to be passed along to lower modules. (default is On.)
#
# mod_authz_dbm.c
# AuthDBMGroupFile - database file containing group names and member user IDs
# AuthzDBMType - what type of DBM file the group file is
# AuthzDBMAuthoritative - Set to 'Off' to allow access control to be passed along to lower modules, if the group required is not found or empty, or the user is not in the required groups. (default is On.)
#
# mod_authz_user.c
# AuthzUserAuthoritative - Set to 'Off' to allow access control to be passed along to lower modules if the 'require user' or 'require valid-user' statement is not met. (default: On).
#
# mod_authz_groupfile.c
# AuthGroupFile - text file containing group names and member user IDs
# AuthzGroupFileAuthoritative - Set to 'Off' to allow access control to be passed along to lower modules if the 'require group' fails. (default is On).
#
# mod_authz_host.c
# order - 'allow,deny', 'deny,allow', or 'mutual-failure'
# allow - 'from' followed by hostnames or IP-address wildcards
# deny - 'from' followed by hostnames or IP-address wildcards
#
# mod_authn_alias.c
# <authnProviderAlias> - Container for authentication directives grouped under a provider alias
#
# mod_authn_default.c
# AuthDefaultAuthoritative - Set to 'Off' to allow access control to be passed along to lower modules if the UserID is not known to this module. (default is On).
#
# mod_authn_dbd.c
# AuthDBDUserPWQuery - Query used to fetch password for user
# AuthDBDUserRealmQuery - Query used to fetch password for user+realm
#
# mod_authn_anon.c
# Anonymous - a space-separated list of user IDs
# Anonymous_MustGiveEmail - Limited to 'on' or 'off'
# Anonymous_NoUserId - Limited to 'on' or 'off'
# Anonymous_VerifyEmail - Limited to 'on' or 'off'
# Anonymous_LogEmail - Limited to 'on' or 'off'
#
# mod_authn_dbm.c
# AuthDBMUserFile - dbm database file containing user IDs and passwords
# AuthDBMType - what type of DBM file the user file is
#
# mod_authn_file.c
# AuthUserFile - text file containing user IDs and passwords
#
# mod_so.c
# LoadFile - shared object file or library to load into the server at runtime
#
# http_core.c
# KeepAliveTimeout - Keep-Alive timeout duration (sec)
# MaxKeepAliveRequests - Maximum number of Keep-Alive requests per connection, or 0 for infinite
# KeepAlive - Whether persistent connections should be On or Off
#
# prefork.c
# User - Effective user id for this server
# Group - Effective group id for this server
# ChrootDir - The directory to chroot(2) into
# ListenBacklog - Maximum length of the queue of pending connections, as used by listen(2)
# Listen - A port number or a numeric IP address and a port number, and an optional protocol
# SendBufferSize - Send buffer size in bytes
# ReceiveBufferSize - Receive buffer size in bytes
# StartServers - Number of child processes launched at server startup
# MinSpareServers - Minimum number of idle children, to handle request spikes
# MaxSpareServers - Maximum number of idle children
# MaxClients - Maximum number of children alive at the same time
# ServerLimit - Maximum value of MaxClients for this run of Apache
# GracefulShutdownTimeout - Maximum time in seconds to wait for child processes to complete transactions during shutdown
#
# core.c
# <directory> - Container for directives affecting resources located in the specified directories
# <location> - Container for directives affecting resources accessed through the specified URL paths
# <virtualHost> - Container to map directives to a particular virtual host, takes one or more host addresses
# <files> - Container for directives affecting files matching specified patterns
# <limit> - Container for authentication directives when accessed using specified HTTP methods
# <limitExcept> - Container for authentication directives to be applied when any HTTP method other than those specified is used to access the resource
# <ifModule> - Container for directives based on existance of specified modules
# <ifDefine> - Container for directives based on existance of command line defines
# <directoryMatch> - Container for directives affecting resources located in the specified directories
# <locationMatch> - Container for directives affecting resources accessed through the specified URL paths
# <filesMatch> - Container for directives affecting files matching specified patterns
# AuthType - An HTTP authorization type (e.g., "Basic")
# AuthName - The authentication realm (e.g. "Members Only")
# Require - Selects which authenticated users or groups may access a protected space
# Satisfy - access policy if both allow and require used ('all' or 'any')
# AddDefaultCharset - The name of the default charset to add to any Content-Type without one or 'Off' to disable
# AcceptPathInfo - Set to on or off for PATH_INFO to be accepted by handlers, or default for the per-handler preference
# AccessFileName - Name(s) of per-directory config files (default: .htaccess)
# DocumentRoot - Root directory of the document tree
# ErrorDocument - Change responses for HTTP errors
# AllowOverride - Controls what groups of directives can be configured by per-directory config files
# Options - Set a number of attributes for a given directory
# DefaultType - the default MIME type for untypable files
# FileETag - Specify components used to construct a file's ETag
# EnableMMAP - Controls whether memory-mapping may be used to read files
# EnableSendfile - Controls whether sendfile may be used to transmit files
# Protocol - Set the Protocol for httpd to use.
# AcceptFilter - Set the Accept Filter to use for a protocol
# Port - Port was replaced with Listen in Apache 2.0
# HostnameLookups - "on" to enable, "off" to disable reverse DNS lookups, or "double" to enable double-reverse DNS lookups
# ServerAdmin - The email address of the server administrator
# ServerName - The hostname and port of the server
# ServerSignature - En-/disable server signature (on|off|email)
# ServerRoot - Common directory of server-related files (logs, confs, etc.)
# ErrorLog - The filename of the error log
# ServerAlias - A name or names alternately used to access the server
# ServerPath - The pathname the server can be reached at
# Timeout - Timeout duration (sec)
# ContentDigest - whether or not to send a Content-MD5 header with each request
# UseCanonicalName - How to work out the ServerName : Port when constructing URLs
# UseCanonicalPhysicalPort - Whether to use the physical Port when constructing URLs
# Include - Name of the config file to be included
# LogLevel - Level of verbosity in error logging
# NameVirtualHost - A numeric IP address:port, or the name of a host
# ServerTokens - Determine tokens displayed in the Server: header - Min(imal), OS or Full
# LimitRequestLine - Limit on maximum size of an HTTP request line
# LimitRequestFieldsize - Limit on maximum size of an HTTP request header field
# LimitRequestFields - Limit (0 = unlimited) on max number of header fields in a request message
# LimitRequestBody - Limit (in bytes) on maximum size of request message body
# LimitXMLRequestBody - Limit (in bytes) on maximum size of an XML-based request body
# RLimitCPU - Soft/hard limits for max CPU usage in seconds
# RLimitMEM - Soft/hard limits for max memory usage per process
# RLimitNPROC - soft/hard limits for max number of processes per uid
# LimitInternalRecursion - maximum recursion depth of internal redirects and subrequests
# ForceType - a mime type that overrides other configured type
# SetHandler - a handler name that overrides any other configured handler
# SetOutputFilter - filter (or ; delimited list of filters) to be run on the request content
# SetInputFilter - filter (or ; delimited list of filters) to be run on the request body
# AddOutputFilterByType - output filter name followed by one or more content-types
# AllowEncodedSlashes - Allow URLs containing '/' encoded as '%2F'
# PidFile - A file for logging the server process ID
# ScoreBoardFile - A file for Apache to maintain runtime process management information
# LockFile - The lockfile used when Apache needs to lock the accept() call
# MaxRequestsPerChild - Maximum number of requests a particular child serves before dying.
# CoreDumpDirectory - The location of the directory Apache changes to before dumping core
# AcceptMutex - Valid accept mutexes for this platform and MPM are: default, flock, fcntl, sysvsem, posixsem, pthread.
# MaxMemFree - Maximum number of 1k blocks a particular childs allocator may hold.
# TraceEnable - 'on' (default), 'off' or 'extended' to trace request body content

Mod_Status tricks to View Apache Module Directives originally appeared on AskApache.com


Mod_Rewrite Variables Cheatsheet

$
0
0

AskApache.com

We've figured out what mod_rewrite variables look like so we can create rewriterules and condition patterns based on the actual value. This cheatsheet is where we'll lay them all out for quick reference. This cheatsheet changed my life, way more than 301 redirect htaccess.

This article is meant to prepare us for the advanced mod_rewrite examples that are soon to be published. The upcoming article is going to be examples using mod_rewrite to achieve some crazy stuff... Here the focus is on identifying mod_rewrite variables and defining the limits of the module by checking the mod_rewrite source code.

List of Mod_Rewrite Variables

Jump to:

Variable Values and Examples


API_VERSION: 20020903:12
RewriteCond %{API_VERSION} ^(.*)$
RewriteRule .* http://www.askapache.com?API_VERSION=%1 [R=307,L]

AUTH_TYPE: Digest
RewriteRule .* - [E=IN_AUTH_TYPE:%{AUTH_TYPE}]
RequestHeader set AUTH_TYPE "%{IN_AUTH_TYPE}e"

CACHE_CONTROL: max-age=0
RewriteCond %{ENV:CACHE_CONTROL} no-cache [NC]
RewriteRule . %{REQUEST_URI}?nocache [L]

CONNECTION: keep-alive

CONTENT_LENGTH: (null)
RewriteCond %{REQUEST_METHOD} =POST
RewriteCond %{HTTP:Content-Length}%{CONTENT_LENGTH} ^$
RewriteRule .* - [F,NS,L]

CONTENT_TYPE: (null)

DOCUMENT_ROOT: /home/webroot/askapache.com
RewriteCond %{DOCUMENT_ROOT}/cache%{REQUEST_URI}/index.html -f
RewriteRule . /cache%{REQUEST_URI}/index.html

HOST: www.askapache.com
RewriteCond %{HTTP_HOST} !^www.askapache.com$ [NC]
RewriteRule . http://www.askapache.com%{REQUEST_URI} [R=301,L]

HTTP:
RewriteCond %{HTTP:Accept-Encoding} gzip [NC]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.gz -f
RewriteRule . %{REQUEST_URI}.gz [L]

HTTPS: off
RewriteCond %{HTTPS} !=on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

HTTP_ACCEPT: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

HTTP_COOKIE: __qca=1176541205adf28-5553185; ASKAPACHEID=fdadfa4f33e62a878468; __utmc=1df3893
RewriteCond %{HTTP_COOKIE} ^.*autostart=on.*$
RewriteRule ^(.*).swf$ /$1?autostart=true [NE,L]

HTTP_HOST: www.askapache.com

HTTP_REFERER: http://www.askapache.com/pro/mod_rewrite/catch.php?k=i
RewriteCond %{HTTP_REFERER} badhost [NC]
RewriteRule . - [F]

HTTP_USER_AGENT: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9) Firefox/3.0.1
RewriteCond %{HTTP_USER_AGENT} ^.*(Android|2.0 MMP|240x320|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|hiptop|IEMobile|iPhone).*$ [NC]
RewriteRule ^(.+)$ /mobile/$1 [L]

IS_SUBREQ: false

KEEP_ALIVE: 300

PATH: /bin:/usr/bin:/sbin:/usr/sbin

QUERY_STRING: k=i
RewriteCond %{QUERY_STRING} showtime [NC]
RewriteCond T:%{TIME}_TY:%{TIME_YEAR}_TMO:%{TIME_MON}_TWD:%{TIME_WDAY}_TD:%{TIME_DAY}_TH:%{TIME_HOUR}_TMI:%{TIME_MIN}_TS:%{TIME_SEC} ^(.*)$
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI}?time=%1 [R,L]

REMOTE_ADDR: 22.162.134.211
RewriteCond %{REMOTE_ADDR} !^22.162.134.211$
RewriteRule . http://www.askapache.com/maintenance-in-progress.html [R=307,L]

REMOTE_HOST: 22.162.134.211

REMOTE_PORT: 4220

REMOTE_USER: askapache
RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization}]

REQUEST_FILENAME: /home/webroot/askapache.com/pro/mod_rewrite/index.php

REQUEST_METHOD: GET
RewriteCond %{REQUEST_METHOD} !^(POST|GET|HEAD|PROPFIND|OPTIONS)$
RewriteRule .* - [F,L]

REQUEST_PROTOCOL: HTTP/1.1
RewriteCond %{REQUEST_PROTOCOL} !^HTTP/(0.9|1.[01])$
RewriteRule . [F,L]

REQUEST_URI: /pro/mod_rewrite/index.php
RewriteCond %{REQUEST_URI} ^(robots.txt|favicon|ico)$ [NC]
RewriteRule . - [S=1]
RewriteCond %{HTTP_HOST} ^www
RewriteRule .* http://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

SCRIPT_FILENAME: /home/webroot/askapache.com/pro/mod_rewrite/index.php

SCRIPT_GROUP: daemong

SCRIPT_URI: http://www.askapache.com/pro/mod_rewrite/index.php

SCRIPT_URL: /pro/mod_rewrite/index.php

SCRIPT_USER: askapache

SERVER_ADDR: 208.113.134.190

SERVER_ADMIN: webmaster@askapache.com

SERVER_NAME: www.askapache.com

SERVER_PORT: 80

SERVER_PROTOCOL: HTTP/1.1

SERVER_SOFTWARE: Apache/2.0.61 (Unix) PHP/5.5 OpenSSL/0.9.7e

SSL_CIPHER: DHE-RSA-AES256-SHA

SSL_CIPHER_ALGKEYSIZE: 256

SSL_CIPHER_EXPORT: false

SSL_CIPHER_USEKEYSIZE: 256

SSL_CLIENT_VERIFY: NONE

SSL_PROTOCOL: TLSv1

SSL_SERVER_A_KEY: rsaEncryption

SSL_SERVER_A_SIG: sha1WithRSAEncryption

SSL_SERVER_CERT: -----BEGIN CERTIFICATE----- ... MIIFkTC ... -----END CERTIFICATE-----

SSL_SERVER_I_DN: /C=US/ST=Arizona/L=Scottsdale/O=Starfield Technologies, Inc./OU=http://certificates.starfieldtech.com/repository/CN=Starfield Secure Certification Authority/serialNumber=10688435

SSL_SERVER_I_DN_C: US

SSL_SERVER_I_DN_CN: Starfield Secure Certification Authority

SSL_SERVER_I_DN_L: Scottsdale

SSL_SERVER_I_DN_O: Starfield Technologies, Inc.

SSL_SERVER_I_DN_OU: http://certificates.starfieldtech.com/repository

SSL_SERVER_I_DN_ST: Arizona

SSL_SERVER_M_SERIAL: 042840B88A2352

SSL_SERVER_M_VERSION: 3

SSL_SERVER_S_DN: /O=www.askapache.com/OU=Domain Control Validated/CN=www.askapache.com

SSL_SERVER_S_DN_CN: www.askapache.com

SSL_SERVER_S_DN_O: www.askapache.com

SSL_SERVER_S_DN_OU: Domain Control Validated

SSL_SERVER_V_END: Jul 14 16:53:43 2012 GMT

SSL_SERVER_V_START: Jul 14 20:25:17 2010 GMT

SSL_SESSION_ID: 4184083DD1C74547553018174950D88987BD7ED03CE54EBB6638539C34814376

SSL_VERSION_INTERFACE: mod_ssl/2.2.16

SSL_VERSION_LIBRARY: OpenSSL/0.9.8e-fips-rhel5

THE_REQUEST: GET /pro/mod_rewrite/index.php?k=i HTTP/1.1
RewriteCond %{THE_REQUEST} ^(GET|POST) /.*?(s|search)=(.+) HTTP/ [NC]
RewriteRule .* http://www.askapache.com/search/%3/? [R=302,L,NE]

TIME: 20080915152142
RewriteCond %{QUERY_STRING} showtime [NC]
RewriteCond T:%{TIME}_TY:%{TIME_YEAR}_TMO:%{TIME_MON}_TWD:%{TIME_WDAY}_TD:%{TIME_DAY}_TH:%{TIME_HOUR}_TMI:%{TIME_MIN}_TS:%{TIME_SEC} ^(.*)$
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI}?time=%1 [R,L]

TIME_DAY: 15

TIME_HOUR: 15

TIME_MIN: 21

TIME_MON: 09

TIME_SEC: 42

TIME_WDAY: 1

TIME_YEAR: 2008

UNIQUE_ID: qOr5tEBvcm8AAE-VoiUAAAAQ

Htaccess Time Cheatsheet

#      300   5 MIN
#      600  10 MIN
#      900  15 MIN
#     1800  30 MIN
#     2700  45 MIN
#     3600   1 HR
#     7200   2 HR
#    10800   3 HR
#    14400   4 HR
#    18000   5 HR
#    36000  10 HR
#    39600  11 HR
#    43200  12 HR
#    46800  13 HR
#    50400  14 HR
#    54000  15 HR
#    86400   1 DAY
#   172800   2 DAY
#   259200   3 DAY
#   345600   4 DAY
#   432000   5 DAY
#   518400   6 DAY
#   604800   1 WEEK
#  1209600   2 WEEK
#  1814400   3 WEEK
#  2419200   4 WEEK
#  4838400   2 MONTH
#  7257600   3 MONTH
#  9676800   4 MONTH
# 12096000   5 MONTH
# 14515200   6 MONTH
# 16934400   7 MONTH
# 19353600   8 MONTH
# 21772800   9 MONTH
# 24192000  10 MONTH
# 26611200  11 MONTH
# 29030400  12 MONTH

For a broader mod_rewrite cheat sheet, check this printable cheat sheet.

Mod_Rewrite Directives

RewriteEngine
RewriteEngine on|off
On or Off to enable or disable (default) the whole rewriting engine
RewriteOptions
RewriteOptions Options
List of option strings to set
RewriteBase
RewriteBase URL-path
the base URL of the per-directory context
RewriteCond
RewriteCond TestString CondPattern
an input string and a to be applied regexp-pattern
RewriteRule
RewriteRule Pattern Substitution [flags]
an URL-applied regexp-pattern and a substitution URL
RewriteMap
RewriteMap MapName MapType:MapSource
a mapname and a filename
RewriteLock
RewriteLock file-path
the filename of a lockfile used for inter-process synchronization
RewriteLog
RewriteLog file-path
the filename of the rewriting logfile
RewriteLogLevel
RewriteLogLevel Level
the level of the rewriting logfile verbosity (0=none, 1=std, .., 9=max)

Rules and Conditions Processing Order

  1. The Pattern of the RewriteRule (^/.*$) is checked first.
  2. If the pattern matches, then the RewriteCond's are checked.
  3. If the RewriteConditions also match, the RewriteRule is applied.

RewriteRule Flags

C
Using the [Chain], or [C] flag, allows you to indicate that several rules should be chained together as a single logical transation. This is usually used when a transformation is sufficiently complicated to warrant breaking into several smaller steps.
CO
cookie|CO=Name:Value:Domain[:Lifetime[:Path]]

This sets a cookie on the client's browser. The cookie's name is specified by NAME and the value is VAL. The domain field is the domain of the cookie, such as '.apache.org',the optional lifetime is the lifetime of the cookie in minutes, and the optional path is the path of the cookie.
E
'env|E=VAR:VAL' (set environment variable)

RewriteRule (root|cmd).exe - [E=worm:nimda]
F
'forbidden|F' (force URL to be forbidden)

G
'gone|G' (force URL to be gone)

H
'handler|H=Content-handler' (force Content handler)

L
'last|L' (last rule)

N
'next|N' (next round)

NC
'nocase|NC' (no case)

NE
'noescape|NE' (no URI escaping of output)

NS
'nosubreq|NS' (not for internal sub-requests)

P
'proxy|P' (force proxy)

PT
'passthrough|PT' (pass through to next handler)

QSA
'qsappend|QSA' (query string append)

R
'redirect|R  [=code]' (force redirect)

S
'skip|S=num' (skip next rule(s))

This flag forces the rewriting engine to skip the next num rules in sequence, if the current rule matches. Use this to make pseudo if-then-else constructs: The last rule of the then-clause becomes skip=N, where N is the number of rules in the else-clause. (This is not the same as the 'chain|C' flag!)
T
'type|T=MIME-type' (force MIME type)

Force the MIME-type of the target file to be MIME-type. This can be used to set up the content-type based on some conditions. For example, the following snippet allows .php files to be displayed by mod_php if they are called with the .phps extension:

RewriteRule Special Variables

  1. ENV_
  2. SSL_
  3. HTTP_
  4. LA-U_
  5. LA-F_

RewriteCond Tests

  • f - FILE_EXISTS
  • s - FILE_SIZE
  • l - FILE_LINK
  • d - FILE_DIR
  • x - FILE_XBIT
  • U - LU_URL
  • F - LU_FILE
  • > - STR_GT
  • < - STR_LT
  • = - STR_EQ

Mod_Rewrite Variables, from Source

  • TIME - %04d%02d%02d%02d%02d%02d
  • HTTPS - flag ? "on" : "off"
  • TIME_DAY
  • TIME_SEC
  • TIME_MIN
  • TIME_HOUR
  • TIME_MON
  • TIME_WDAY
  • TIME_YEAR
  • IS_SUBREQ - (main ? "true" : "false");
  • PATH_INFO - path_info;
  • AUTH_TYPE - ap_auth_type;
  • HTTP_HOST - lookup_header("Host", ctx);
  • SERVER_NAME - ap_get_server_name(r);
  • REMOTE_ADDR - connection->remote_ip;
  • SERVER_ADDR - connection->local_ip;
  • HTTP_ACCEPT - lookup_header("Accept", ctx);
  • THE_REQUEST - the_request;
  • API_VERSION - "%d:%d",MODULE_MAGIC_NUMBER_MAJOR,MODULE_MAGIC_NUMBER_MINOR);
  • HTTP_COOKIE - lookup_header("Cookie", ctx);
  • SERVER_PORT - ap_get_server_port(r);
  • REMOTE_HOST
  • REMOTE_NAME, NULL);
  • REMOTE_PORT - r->connection->remote_addr->port
  • REMOTE_USER - user;
  • SCRIPT_USER - "<unknown>";
  • APR_FINFO_USER
  • REQUEST_URI - uri;
  • SCRIPT_GROUP - "<unknown>";
  • REMOTE_IDENT - ap_get_remote_logname(r);
  • HTTP_REFERER - lookup_header("Referer", ctx);
  • QUERY_STRING - args;
  • SERVER_ADMIN - server->server_admin;
  • DOCUMENT_ROOT - ap_document_root(r);
  • HTTP_FORWARDED - lookup_header("Forwarded", ctx);
  • REQUEST_METHOD - method;
  • HTTP_USER_AGENT - lookup_header("User-Agent", ctx);
  • SCRIPT_FILENAME - same as request_filename
  • REQUEST_FILENAME - same as script_filename
  • SERVER_PROTOCOL - protocol
  • SERVER_SOFTWARE - ap_get_server_banner();
  • HTTP_PROXY_CONNECTION - lookup_header("Proxy-Connection", ctx);

Special Rewrite Redirects

  1. "permanent" - HTTP_MOVED_PERMANENTLY
  2. "temp" - HTTP_MOVED_TEMPORARILY
  3. "seeother" - HTTP_SEE_OTHER
  4. digit

Protocols Recognized by Mod_Rewrite

  1. ajp://
  2. balancer://
  3. ftp://
  4. gopher://
  5. http://
  6. https://
  7. ldap://
  8. mailto:
  9. news:
  10. nntp://

Mod_Rewrite Terms and Definitions

pattern
the RegExp pattern string
regexp
the RegExp pattern compilation
flags
Flags which control the substitution
forced_mimetype
forced MIME type of substitution
forced_handler
forced content handler of subst.
forced_responsecode
forced HTTP response status
env
added environment variables
cookie
added cookies
skip
number of next rules to skip
state
the RewriteEngine state
options
the RewriteOption state
rewritelogfile
the RewriteLog filename
rewritelogfp
the RewriteLog open filepointer
rewritelog: level
the RewriteLog level of verbosity
rewritemaps
the RewriteMap entries
rewriteconds
the RewriteCond entries (temp.)
rewriterules
the RewriteRule entries
directory
the directory where it applies
baseurl
the base-URL where it applies

REGEX Rewrite Guides

URL Rewriting Module

This module uses a rule-based rewriting engine (based on a regular-expression parser) to rewrite requested URLs on the fly.

It supports an unlimited number of additional rule conditions (which can operate on a lot of variables, even on HTTP headers) for granular matching and even external database lookups (either via plain text tables, DBM hash files or even external processes) for advanced URL substitution.

It operates on the full URLs (including the PATH_INFO part) both in per-server context (httpd.conf) and per-dir context (.htaccess) and even can generate QUERY_STRING parts on result. The rewriting result finally can lead to internal subprocessing, external request redirection or even to internal proxy throughput.

This module was originally written in April 1996 and gifted exclusively to the The Apache Software Foundation in July 1997 by

Ralf S. Engelschall

Mod_Rewrite Errors

  • Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: %s
  • RewriteCond: bad argument line
  • RewriteCond: NoCase option for non-regex pattern %s is not supported and will be ignored.
  • RewriteCond: cannot compile regular expression
  • RewriteRule: invalid HTTP response code %s for flag R
  • RewriteRule: unknown flag
  • RewriteRule: cannot compile regular expression
  • RewriteOptions: MaxRedirects option has been removed in favor of the global LimitInternalRecursion directive and will be ignored.
  • RewriteOptions: unknown option
  • RewriteMap: bad path to txt map:
  • RewriteMap: bad path to rnd map:
  • RewriteMap: bad map:
  • RewriteMap: bad path to dbm map:
  • RewriteMap: dbm type
  • RewriteMap: bad path to prg map:
  • RewriteMap: internal map not found:
  • RewriteMap: bad path to txt map:
  • RewriteMap: file for map not found:
  • Invalid RewriteLock path
  • RewriteBase: only valid in per-directory config files
  • RewriteBase: empty URL not allowed
  • RewriteBase: argument is not a valid URL
  • RewriteCond: bad flag delimiters
  • RewriteCond: unknown flag
  • RewriteLog and RewriteLogLevel are not supported by this build of mod_rewrite because it was compiled using the -DREWRITELOG_DISABLED compiler option. You have to recompile mod_rewrite WITHOUT this option in order to use the rewrite log.
  • mod_rewrite: Invalid RewriteLog path %s
  • mod_rewrite: could not open reliable pipe to RewriteLog filter %s
  • mod_rewrite: Invalid RewriteLog path %s
  • mod_rewrite: could not open RewriteLog file %s
  • mod_rewrite: Running external rewrite maps without defining a RewriteLock is DANGEROUS!
  • mod_rewrite: could not start RewriteMap program %s
  • mod_rewrite: cant access text RewriteMap file %s
  • mod_rewrite: cant access DBM RewriteMap file %s
  • mod_rewrite: Parent could not create RewriteLock file %s
  • mod_rewrite: Parent could not set permissions on RewriteLock check User and Group directives
  • mod_rewrite: could not create rewrite_log_lock
  • mod_rewrite: Could not set permissions on rewrite_log_lock check User and Group directives
  • mod_rewrite: could not init rewrite_mapr_lock_acquire in child
  • mod_rewrite: could not init rewrite log lock in child
  • mod_rewrite: could not init map cache in child
  • split uri=%s -> uri=%s, args=%s
  • reduce %s -> %s
  • strip matching prefix: %s -> %s
  • add subst prefix: %s -> %s
  • cant open RewriteMap file, see error log
  • cache lookup FAILED, forcing new map lookup
  • map lookup FAILED: map=%s[txt] key=%s
  • map lookup OK: map=%s[txt] key=%s -> val=%s
  • cache lookup OK: map=%s[txt] key=%s -> val=%s
  • randomly chosen the subvalue `%s
  • cant open DBM RewriteMap file, see error log
  • cache lookup FAILED, forcing new map lookup
  • map lookup FAILED: map=%s[dbm] key=%s
  • map lookup OK: map=%s[dbm] key=%s -> val=%s
  • cache lookup OK: map=%s[dbm] key=%s -> val=%s
  • map lookup FAILED: map=%s key=%s
  • map lookup OK: map=%s key=%s -> val=%s
  • map lookup FAILED: map=%s key=%s
  • map lookup OK: map=%s key=%s -> val=%s
  • lookahead: path=%s var=%s -> val=%s
  • lookahead: path=%s var=%s -> val=%s
  • RESULT=%s
  • escaping backreference %s to %s
  • setting env variable %s to %s
  • setting cookie %s, cookie
  • skipping already set cookie %s
  • RewriteCond URI (-U) check: path=%s -> status=%d
  • RewriteCond file (-F) check: path=%s -> file=%s status=%d
  • RewriteCond: input=%s pattern=%s%s%s%s => %s
  • remember %s to have MIME-type %s
  • remember %s to have Content-handler %s
  • add path info postfix: %s -> %s%s
  • strip per-dir prefix: %s -> %s
  • applying pattern %s to uri %s
  • rewrite %s -> %s, ctx->uri
  • forcing responsecode %d for %s
  • add per-dir prefix: %s -> %s%s
  • forcing proxy-throughput with %s
  • explicitly forcing redirect with %s
  • implicitly forcing redirect (rc=%d) with %s
  • forcing %s to get passed through to next API URI-to-filename handler
  • init rewrite engine with requested uri %s
  • go-ahead with proxy request %s [OK]
  • dconf->directory,trying to replace prefix %s with %s
  • escaping %s for redirect
  • redirect to %s [REDIRECT/%d]
  • initial URL equal rewritten URL: %s [IGNORING REWRITE]
  • dconf->directory, trying to replace prefix %s with %s
  • strip document_root prefix: %s -> %s
  • internal redirect with %s [INTERNAL REDIRECT]
  • pass through %s
  • force filename %s to have MIME-type %s
  • force filename %s to have the Content-handler %s,
  • init rewrite engine with requested uri %s
  • init rewrite engine with passed filename %s. Original uri = %s
  • uri already rewritten. Status %s, Uri %s, %s
  • attempt to make remote request from mod_rewrite without proxy enabled: %s
  • go-ahead with proxy request %s [OK]
  • escaping %s for redirect
  • redirect to %s [REDIRECT/%d]
  • local path result: %s
  • prefixing with document_root of %s FAILED
  • prefixed with document_root to %s
  • go-ahead with %s [OK]
  • pass through %s

Mod_Rewrite Variables Cheatsheet originally appeared on AskApache.com

No Budget Developer Wishlist

$
0
0

AskApache.com

Night Sky

  • I need no software, I lack for nothing when it comes to software. winners don't do warez
  • Well obviously if I could have anything I would want access to NSA computing power, googles server farms as a backup, and the worlds most expensive computer monitor the size of my wall with virtual screens as big as I want and touch screen and 3d and holograms.
  • I would want the best office chair made for comfort.
  • an iphone docking station to keep my phone charging and docked on my desk
  • an F5 device I could beat up gangland style with a baseball bat, and an F5 device I could install locally and experiment with until I had it mastered
  • an ipad to read emails on the treadmill and view websites while mobile
  • I would love to have my adobe software paid for, it's costing me like 50/month for dreamweaver and photoshop
  • love to have a enterprise battery backup
  • love to have a satellite link for fast internet access even during a power outage and anywhere on the planet so i could use encrypted shells and be on a safe network anywhere
  • really wish I had a a few thousand terabytes of raid storage for redundant and safe back ups and storage of everything.. EVERYTHING.
  • wish I had a new ti-92 (not 89) calculator which I used to use all the time for CSS work and programming.. then it broke :(
  • it would be great to get a mainframe in my office to run virtual servers off of
  • wouldn't mind access to a work vehicle, preferably electric like googles employee electric cars
  • I'd love a dedicated computer and monitor just for my email
  • I'd love a million dollar gift certificate to buy tech books on amazon
  • How about a 5k worth of high-end super tiny thumb drives so I can bring live operating systems with me to run from ram
  • I need a high end (or heck low end) ear phones for my iphone with a mic so I can use skype without having to hold my phone so i can type
  • i wish I had a small fridge in my office stocked with mountain dew and starbucks double shots and candy, the good kind
  • gosh I could really go on for days and days and days and love drooling but gotta crash..

No Budget Developer Wishlist originally appeared on AskApache.com

Basic WordPress Theme Guide

$
0
0

AskApache.com

This is a brief explanation of what is needed for an awesome theme, well awesome from my perspective. This is good stuff, memorize it.

This is a visual representation of all the different types of templates that can be used in a theme, it's just for your reference, you can skip over it.  Start at the left of the image, and go right.

Template Hierarchy

Main Theme Templates

  1. front-page.php - the Home Page - /
  2. single.php - a single post/article - /what-did-you-eat-on-thanksgiving/
  3. page.php - a single page - /about-us/
  4. category.php - a category page, usually a list of all the posts in a category - /category/seo/
  5. tag.php - a tag page, usually a list of all the posts tagged a certain tag - /tag/seo/
  6. author.php - an author page, usually a short bio and a list of all the posts written by that author - /author/mtom/
  7. search.php - search results page - /search/?s=thanksgiving
  8. 404.php - error page displayed when someone mistypes a url - /aboup-us/

For several of those main types further customization is possible.  This can let the designer do some cool things, like using a different color scheme on different categories, layout, or even totally different everything for different categories, authors, pages, etc..

  • single-{post_type}.php - If the post type were product, WordPress would look for single-product.php.
  • page-{slug}.php - If the page slug is recent-news, WordPress will look to use page-recent-news.php
  • category-{slug}.php - If the category's slug were news, WordPress would look for category-news.php
  • tag-{slug}.php - If the tag's slug were sometag, WordPress would look for tag-sometag.php
  • archive-{post_type}.php - If the post type were product, WordPress would look for archive-product.php
  • author-{nicename}.php - If the author's nice name were mtom, WordPress would look for author-mtom.php

For more reading, the codex.wordpress.org site is your friend, see:  Theme Development

Theme Layout

In order to create fluid, flexible layout, this is how I do it (after years of reading and trial and error).  The main thing for designers is that basically every page on the site will use the same header and footer, so keep that in mind when placing things like page titles, search forms, navigation menus, breadcrumbs, etc..   But also don't think too hard about it, with a flexible, fluid layout like this it frees the designer to be able to position things anywhere they want.  Also cross-browser perfect.

  • body
    • Global Container - for everything
      • Header Container - for header
      • National Container
        • Main Container
          • Content Container - for the main content area of page
          • Side Container - for the sidebar
      • Footer Container - for footer

CSS Developers

In Firefox using Firebug (if you aren't using firebug you are only using a fraction of your potential to be great) it looks like:

css theme layout

Each of the above (other than body) are divs, and all (including body) are position:relative;, which means anything  within the div can then be absolutely positioned or floated within the div.  Also the divs are overflow:hidden; to prevent anything from escaping.     One of the examples of why is below:

CSS Positioning

Notice that the navigation (NavM) and the search form is on the top left of the page, they are both absolutely positioned within the GlobalW container.  Doing layout like this gives you total control over the placement of things.  Layout divs should have an id. That's the gist in a nutshell, to dive deeper use firebug on askapache.com.

I hope this helps explain what types of things are needed for a world-class theme, good luck!

Basic WordPress Theme Guide originally appeared on AskApache.com

The Conscience of a Hacker – Hacker Manifesto

$
0
0

AskApache.com

The Conscience of a Hacker   Hacker ManifestoThe Conscience of a Hacker (also known as The Hacker Manifesto) is a small essay written January 8, 1986 by a computer security hacker who went by the handle (or pseudonym) of The Mentor (born Loyd Blankenship). It was written after the author's arrest, and first published in the underground hacker ezine Phrack in Volume One, Issue 7, Phile 3 of 10.

Loyd Blankenship

Loyd Blankenship (a.k.a. The Mentor, stylized as +++The Mentor+++) (born 1965) has been a well-known American computer hacker and writer since the 1970s, when he was a member of the hacker groups Extasyy Elite and Legion of Doom.

The Manifesto

It is considered a cornerstone of hacker culture, and it gives some insight into the psychology of early hackers. It is said to have shaped the hacker community's view of itself and its motivations. The Manifesto states that hackers choose to hack because it is a way for them to learn, and because they are often frustrated and bored by the limitations of standard society. It also expresses the satori of a hacker realizing his potential in the realm of computers.

The Manifesto acts as a guideline to hackers across the globe, especially those new to the field. It serves as an ethical foundation for hacking, and asserts that there is a point to hacking that supersedes selfish desires to exploit or harm other people, and that technology should be used to expand our horizons and try to keep the world free.

The Hacker Manifesto

File: archives/7/p7_0x03_Hacker's Manifesto_by_The Mentor.txt
                               ==Phrack Inc.==
 
                    Volume One, Issue 7, Phile 3 of 10
 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
The following was written shortly after my arrest...
 
                       \/\The Conscience of a Hacker/\/
 
                                      by
 
                               +++The Mentor+++
 
                          Written on January 8, 1986
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
        Another one got caught today, it's all over the papers.  "Teenager
Arrested in Computer Crime Scandal", "Hacker Arrested after Bank Tampering"...
        Damn kids.  They're all alike.
 
        But did you, in your three-piece psychology and 1950's technobrain,
ever take a look behind the eyes of the hacker?  Did you ever wonder what
made him tick, what forces shaped him, what may have molded him?
        I am a hacker, enter my world...
        Mine is a world that begins with school... I'm smarter than most of
the other kids, this crap they teach us bores me...
        Damn underachiever.  They're all alike.
 
        I'm in junior high or high school.  I've listened to teachers explain
for the fifteenth time how to reduce a fraction.  I understand it.  "No, Ms.
Smith, I didn't show my work.  I did it in my head..."
        Damn kid.  Probably copied it.  They're all alike.
 
        I made a discovery today.  I found a computer.  Wait a second, this is
cool.  It does what I want it to.  If it makes a mistake, it's because I
screwed it up.  Not because it doesn't like me...
                Or feels threatened by me...
                Or thinks I'm a smart ass...
                Or doesn't like teaching and shouldn't be here...
        Damn kid.  All he does is play games.  They're all alike.
 
        And then it happened... a door opened to a world... rushing through
the phone line like heroin through an addict's veins, an electronic pulse is
sent out, a refuge from the day-to-day incompetencies is sought... a board is
found.
        "This is it... this is where I belong..."
        I know everyone here... even if I've never met them, never talked to
them, may never hear from them again... I know you all...
        Damn kid.  Tying up the phone line again.  They're all alike...
 
        You bet your ass we're all alike... we've been spoon-fed baby food at
school when we hungered for steak... the bits of meat that you did let slip
through were pre-chewed and tasteless.  We've been dominated by sadists, or
ignored by the apathetic.  The few that had something to teach found us will-
ing pupils, but those few are like drops of water in the desert.
 
        This is our world now... the world of the electron and the switch, the
beauty of the baud.  We make use of a service already existing without paying
for what could be dirt-cheap if it wasn't run by profiteering gluttons, and
you call us criminals.  We explore... and you call us criminals.  We seek
after knowledge... and you call us criminals.  We exist without skin color,
without nationality, without religious bias... and you call us criminals.
You build atomic bombs, you wage wars, you murder, cheat, and lie to us
and try to make us believe it's for our own good, yet we're the criminals.
 
        Yes, I am a criminal.  My crime is that of curiosity.  My crime is
that of judging people by what they say and think, not what they look like.
My crime is that of outsmarting you, something that you will never forgive me
for.
 
        I am a hacker, and this is my manifesto.  You may stop this individual,
but you can't stop us all... after all, we're all alike.
 
                               +++The Mentor+++
_______________________________________________________________________________

This page contains content by Author of Article from Wikipedia and is licensed under the GNU FDL.

This page contains content by Author of Article from Wikipedia and is licensed under the GNU FDL.

The Conscience of a Hacker – Hacker Manifesto originally appeared on AskApache.com

Get The Alexa Toolbar

$
0
0

AskApache.com

Get The Alexa ToolbarThe Alexa Toolbar is a free search and navigation companion that accompanies you as you surf, providing useful information about the sites you visit without interrupting your Web browsing.

With over 10 million downloads, the Alexa toolbar is a sure winner. Whether you are new to the web, or a savvy surfing pro, this is the tool for you.


WayBack Machine

This is super cool! Been around forever.. it archives the Internet and lets you view a site or page the way it looked in the past!

Get The Alexa Toolbar

View in Status Bar

This is a screenshot of part of my status bar in firefox. Pretty helpful!

Get The Alexa Toolbar

Traffic Stats

These are good indicators of how well your SEO is really doing.

Get The Alexa Toolbar

Search Stats, SEO, Keywords

This information can be invaluable to ranking up for certain keywords and seeing what is popular on your site.

Get The Alexa Toolbar

Get it now, for free!

It works for the below browsers. Ready? Then go install it! Or take the Tour.

  • Firefox
  • Google Chrome
  • Internet Explorer

Get The Alexa Toolbar originally appeared on AskApache.com

Introducing the Online Figlet ASCII Generator

$
0
0

AskApache.com

Look at askapache. That's pretty boring huh? It would be cool to have a nerdy textual representation of that for extra nerdy stuff like styling my /robots.txt file, email list signatures, forum sigs, etc. But who has time to create that by hand?

This is more like it!
Introducing the Online Figlet ASCII Generator

That was generated using my Online Figlet ASCII Generator.

Online ASCII Textual Graphic Generator

Just type in text and select the ascii font you want and there you go. Please try it and let me know what you think!

Introducing the Online Figlet ASCII Generator

Example Output

The output is ascii text, stylized with CSS!

 
+--- 3-d
 
                   **                                         **             
                  /**               ******                   /**             
  ******    ******/**  **  ******  /**///**  ******    ***** /**       ***** 
 //////**  **//// /** **  //////** /**  /** //////**  **///**/******  **///**
  ******* //***** /****    ******* /******   ******* /**  // /**///**/*******
 **////**  /////**/**/**  **////** /**///   **////** /**   **/**  /**/**//// 
//******** ****** /**//**//********/**     //********//***** /**  /**//******
 //////// //////  //  //  //////// //       ////////  /////  //   //  ////// 
 
+--- 3x5
 
                                    
        #                   #       
 ##  ## # #  ## ###  ## ### ### ### 
# #  #  ##  # # # # # # #   # # ##  
### ##  # # ### ### ### ### # # ### 
                #                   
 
+--- 5lineoblique
 
                                                                                    
                                                                                    
                                                                                    
    ___      ___     / ___      ___      ___      ___      ___     / __      ___    
  //   ) ) ((   ) ) //\ \     //   ) ) //   ) ) //   ) ) //   ) ) //   ) ) //___) ) 
 //   / /   \ \    //  \ \   //   / / //___/ / //   / / //       //   / / //        
((___( ( //   ) ) //    \ \ ((___( ( //       ((___( ( ((____   //   / / ((____     
 
+--- acrobatic
 
                          o                                                      o                      
                         <|>                                                    <|>                     
                         / \                                                    / >                     
    o__ __o/      __o__  \o/  o/   o__ __o/  \o_ __o       o__ __o/      __o__  \o__ __o      o__  __o  
   /v     |      />  \    |  /v   /v     |    |    v\     /v     |      />  \    |     v\    /v      |> 
  />     / \     \o      / \/>   />     / \  / \    <\   />     / \   o/        / \     <\  />      //  
  \      \o/      v\     \o/\o   \      \o/  \o/     /   \      \o/  <|         \o/     o/  \o    o/    
   o      |        <\     |  v\   o      |    |     o     o      |    \\         |     <|    v\  /v __o 
   <\__  / \  _\o__</    / \  <\  <\__  / \  / \ __/>     <\__  / \    _\o__</  / \    / \    <\/> __/> 
                                             \o/                                                        
                                              |                                                         
                                             / \                                                        
 
+--- alligator
 
          :::     :::::::: :::    :::    :::    :::::::::    :::     :::::::: :::    ::::::::::::: 
       :+: :+:  :+:    :+::+:   :+:   :+: :+:  :+:    :+: :+: :+:  :+:    :+::+:    :+::+:         
     +:+   +:+ +:+       +:+  +:+   +:+   +:+ +:+    +:++:+   +:+ +:+       +:+    +:++:+          
   +#++:++#++:+#++:++#+++#++:++   +#++:++#++:+#++:++#++#++:++#++:+#+       +#++:++#+++#++:++#      
  +#+     +#+       +#++#+  +#+  +#+     +#++#+      +#+     +#++#+       +#+    +#++#+            
 #+#     #+##+#    #+##+#   #+# #+#     #+##+#      #+#     #+##+#    #+##+#    #+##+#             
###     ### ######## ###    ######     ######      ###     ### ######## ###    #############       
 
+--- alligator2
 
    :::     :::::::: :::    :::    :::    :::::::::    :::     :::::::: :::    ::::::::::::: 
  :+: :+:  :+:    :+::+:   :+:   :+: :+:  :+:    :+: :+: :+:  :+:    :+::+:    :+::+:        
 +:+   +:+ +:+       +:+  +:+   +:+   +:+ +:+    +:++:+   +:+ +:+       +:+    +:++:+        
+#++:++#++:+#++:++#+++#++:++   +#++:++#++:+#++:++#++#++:++#++:+#+       +#++:++#+++#++:++#   
+#+     +#+       +#++#+  +#+  +#+     +#++#+      +#+     +#++#+       +#+    +#++#+        
#+#     #+##+#    #+##+#   #+# #+#     #+##+#      #+#     #+##+#    #+##+#    #+##+#        
###     ### ######## ###    ######     ######      ###     ### ######## ###    ############# 
 
+--- alphabet
 
        k                      h        
        k k                    h        
 aa  ss kk    aa ppp   aa  ccc hhh  eee 
a a  s  k k  a a p  p a a c    h  h e e 
aaa ss  k  k aaa ppp  aaa  ccc h  h ee  
                 p                      
                 p                      
 
+--- avatar
 
 ____  ____  _  __ ____  ____  ____  ____ _     _____
/  _ \/ ___\/ |/ //  _ \/  __\/  _ \/   _Y \ /|/  __/
| / \||    \|   / | / \||  \/|| / \||  / | |_|||  \  
| |-||\___ ||   \ | |-|||  __/| |-|||  \_| | |||  /_ 
\_/ \|\____/\_|\_\\_/ \|\_/   \_/ \|\____|_/ \|\____\
                                                     
 
+--- banner
 
                                                               
  ##    ####  #    #   ##   #####    ##    ####  #    # ###### 
 #  #  #      #   #   #  #  #    #  #  #  #    # #    # #      
#    #  ####  ####   #    # #    # #    # #      ###### #####  
######      # #  #   ###### #####  ###### #      #    # #      
#    # #    # #   #  #    # #      #    # #    # #    # #      
#    #  ####  #    # #    # #      #    #  ####  #    # ###### 
                                                               
 
+--- banner3-D
 
:::'###:::::'######::'##:::'##::::'###::::'########:::::'###:::::'######::'##::::'##:'########:
::'## ##:::'##... ##: ##::'##::::'## ##::: ##.... ##:::'## ##:::'##... ##: ##:::: ##: ##.....::
:'##:. ##:: ##:::..:: ##:'##::::'##:. ##:: ##:::: ##::'##:. ##:: ##:::..:: ##:::: ##: ##:::::::
'##:::. ##:. ######:: #####::::'##:::. ##: ########::'##:::. ##: ##::::::: #########: ######:::
 #########::..... ##: ##. ##::: #########: ##.....::: #########: ##::::::: ##.... ##: ##...::::
 ##.... ##:'##::: ##: ##:. ##:: ##.... ##: ##:::::::: ##.... ##: ##::: ##: ##:::: ##: ##:::::::
 ##:::: ##:. ######:: ##::. ##: ##:::: ##: ##:::::::: ##:::: ##:. ######:: ##:::: ##: ########:
..:::::..:::......:::..::::..::..:::::..::..:::::::::..:::::..:::......:::..:::::..::........::
 
+--- banner3
 
   ###     ######  ##    ##    ###    ########     ###     ######  ##     ## ######## 
  ## ##   ##    ## ##   ##    ## ##   ##     ##   ## ##   ##    ## ##     ## ##       
 ##   ##  ##       ##  ##    ##   ##  ##     ##  ##   ##  ##       ##     ## ##       
##     ##  ######  #####    ##     ## ########  ##     ## ##       ######### ######   
#########       ## ##  ##   ######### ##        ######### ##       ##     ## ##       
##     ## ##    ## ##   ##  ##     ## ##        ##     ## ##    ## ##     ## ##       
##     ##  ######  ##    ## ##     ## ##        ##     ##  ######  ##     ## ######## 
 
+--- banner4
 
....###.....######..##....##....###....########.....###.....######..##.....##.########
...##.##...##....##.##...##....##.##...##.....##...##.##...##....##.##.....##.##......
..##...##..##.......##..##....##...##..##.....##..##...##..##.......##.....##.##......
.##.....##..######..#####....##.....##.########..##.....##.##.......#########.######..
.#########.......##.##..##...#########.##........#########.##.......##.....##.##......
.##.....##.##....##.##...##..##.....##.##........##.....##.##....##.##.....##.##......
.##.....##..######..##....##.##.....##.##........##.....##..######..##.....##.########
 
+--- barbwire
 
                 ><<                                                          
                 ><<                                        ><<               
   ><<     ><<<< ><<  ><<   ><<    >< ><<     ><<       ><<<><<        ><<    
 ><<  ><< ><<    ><< ><<  ><<  ><< ><  ><<  ><<  ><<  ><<   >< ><    ><   ><< 
><<   ><<   ><<< ><><<   ><<   ><< ><   ><<><<   ><< ><<    ><<  ><<><<<<< ><<
><<   ><<     ><<><< ><< ><<   ><< ><< ><< ><<   ><<  ><<   ><   ><<><        
  ><< ><<<><< ><<><<  ><<  ><< ><<<><<       ><< ><<<   ><<<><<  ><<  ><<<<   
                                   ><<                                        
 
+--- basic
 
 .d8b.  .d8888. db   dD  .d8b.  d8888b.  .d8b.   .o88b. db   db d88888b 
d8' `8b 88'  YP 88 ,8P' d8' `8b 88  `8D d8' `8b d8P  Y8 88   88 88'     
88ooo88 `8bo.   88,8P   88ooo88 88oodD' 88ooo88 8P      88ooo88 88ooooo 
88~~~88   `Y8b. 88`8b   88~~~88 88~~~   88~~~88 8b      88~~~88 88~~~~~ 
88   88 db   8D 88 `88. 88   88 88      88   88 Y8b  d8 88   88 88.     
YP   YP `8888Y' YP   YD YP   YP 88      YP   YP  `Y88P' YP   YP Y88888P 
                                                                        
                                                                        
 
+--- bell
 
               \                                 _            
   ___    ____ |   ,   ___  \,___,   ___    ___  /        ___ 
  /   `  (     |  /   /   ` |    \  /   ` .'   ` |,---. .'   `
 |    |  `--.  |-<   |    | |    | |    | |      |'   ` |----'
 `.__/| \___.' /  \_ `.__/| |`---' `.__/|  `._.' /    | `.___,
                            \                                 
 
+--- big
 
           _                          _          
          | |                        | |         
  __ _ ___| | ____ _ _ __   __ _  ___| |__   ___ 
 / _` / __| |/ / _` | '_ \ / _` |/ __| '_ \ / _ \
| (_| \__ \   < (_| | |_) | (_| | (__| | | |  __/
 \__,_|___/_|\_\__,_| .__/ \__,_|\___|_| |_|\___|
                    | |                          
                    |_|                          
 
+--- bigchief
 
_________________________________________________________
                                                         
               /                                /        
----__---__---/-__----__------__----__----__---/__----__-
  /   ) (_ ` /(     /   )   /   ) /   ) /   ' /   ) /___)
_(___(_(__)_/___\__(___(___/___/_(___(_(___ _/___/_(___ _
                          /                              
                         /                               
 
+--- binary
 
01100001 01110011 01101011 01100001 01110000 01100001 01100011 01101000 01100101 
 
+--- block
 
                                                                                          
                    _|                                                _|                  
  _|_|_|    _|_|_|  _|  _|      _|_|_|  _|_|_|      _|_|_|    _|_|_|  _|_|_|      _|_|    
_|    _|  _|_|      _|_|      _|    _|  _|    _|  _|    _|  _|        _|    _|  _|_|_|_|  
_|    _|      _|_|  _|  _|    _|    _|  _|    _|  _|    _|  _|        _|    _|  _|        
  _|_|_|  _|_|_|    _|    _|    _|_|_|  _|_|_|      _|_|_|    _|_|_|  _|    _|    _|_|_|  
                                        _|                                                
                                        _|                                                
 
+--- broadway
 
                                                                                                                                                       
         .8.            d888888o.   8 8888     ,88'          .8.          8 888888888o      .8.           ,o888888o.    8 8888        8 8 8888888888   
        .888.         .`8888:' `88. 8 8888    ,88'          .888.         8 8888    `88.   .888.         8888     `88.  8 8888        8 8 8888         
       :88888.        8.`8888.   Y8 8 8888   ,88'          :88888.        8 8888     `88  :88888.     ,8 8888       `8. 8 8888        8 8 8888         
      . `88888.       `8.`8888.     8 8888  ,88'          . `88888.       8 8888     ,88 . `88888.    88 8888           8 8888        8 8 8888         
     .8. `88888.       `8.`8888.    8 8888 ,88'          .8. `88888.      8 8888.   ,88'.8. `88888.   88 8888           8 8888        8 8 888888888888 
    .8`8. `88888.       `8.`8888.   8 8888 88'          .8`8. `88888.     8 888888888P'.8`8. `88888.  88 8888           8 8888        8 8 8888         
   .8' `8. `88888.       `8.`8888.  8 888888<          .8' `8. `88888.    8 8888      .8' `8. `88888. 88 8888           8 8888888888888 8 8888         
  .8'   `8. `88888.  8b   `8.`8888. 8 8888 `Y8.       .8'   `8. `88888.   8 8888     .8'   `8. `88888.`8 8888       .8' 8 8888        8 8 8888         
 .888888888. `88888. `8b.  ;8.`8888 8 8888   `Y8.    .888888888. `88888.  8 8888    .888888888. `88888.  8888     ,88'  8 8888        8 8 8888         
.8'       `8. `88888. `Y8888P ,88P' 8 8888     `Y8. .8'       `8. `88888. 8 8888   .8'       `8. `88888.  `8888888P'    8 8888        8 8 888888888888 
 
+--- bubble
 
  _   _   _   _   _   _   _   _   _  
 / \ / \ / \ / \ / \ / \ / \ / \ / \ 
( a | s | k | a | p | a | c | h | e )
 \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ 
 
+--- bulbhead
 
   __    ___  _  _    __    ____   __    ___  _   _  ____ 
  /__\  / __)( )/ )  /__\  (  _ \ /__\  / __)( )_( )( ___)
 /(__)\ \__ \ )  (  /(__)\  )___//(__)\( (__  ) _ (  )__) 
(__)(__)(___/(_)\_)(__)(__)(__) (__)(__)\___)(_) (_)(____)
 
+--- calgphy2
 
                                                                                           
                       /                                                 /                 
                     #/                                                #/                  
                     ##                                                ##                  
                     ##                                                ##                  
                     ##                                                ##                  
   /###      /###    ##  /##      /###       /###     /###     /###    ##  /##      /##    
  / ###  /  / #### / ## / ###    / ###  /   / ###  / / ###  / / ###  / ## / ###    / ###   
 /   ###/  ##  ###/  ##/   /    /   ###/   /   ###/ /   ###/ /   ###/  ##/   ###  /   ###  
##    ##  ####       ##   /    ##    ##   ##    ## ##    ## ##         ##     ## ##    ### 
##    ##    ###      ##  /     ##    ##   ##    ## ##    ## ##         ##     ## ########  
##    ##      ###    ## ##     ##    ##   ##    ## ##    ## ##         ##     ## #######   
##    ##        ###  ######    ##    ##   ##    ## ##    ## ##         ##     ## ##        
##    /#   /###  ##  ##  ###   ##    /#   ##    ## ##    /# ###     /  ##     ## ####    / 
 ####/ ## / #### /   ##   ### / ####/ ##  #######   ####/ ## ######/   ##     ##  ######/  
  ###   ##   ###/     ##   ##/   ###   ## ######     ###   ## #####     ##    ##   #####   
                                          ##                                  /            
                                          ##                                 /             
                                          ##                                /              
                                           ##                              /               
 
+--- caligraphy
 
                                                                                                 
                        *                                                      *                 
                      **                                                     **                  
                      **                                                     **                  
                      **                                                     **                  
              ****    **                       ****                          **                  
   ****      * **** * **  ***       ****      * ***  *    ****       ****    **  ***      ***    
  * ***  *  **  ****  ** * ***     * ***  *  *   ****    * ***  *   * ***  * ** * ***    * ***   
 *   ****  ****       ***   *     *   ****  **    **    *   ****   *   ****  ***   ***  *   ***  
**    **     ***      **   *     **    **   **    **   **    **   **         **     ** **    *** 
**    **       ***    **  *      **    **   **    **   **    **   **         **     ** ********  
**    **         ***  ** **      **    **   **    **   **    **   **         **     ** *******   
**    **    ****  **  ******     **    **   **    **   **    **   **         **     ** **        
**    **   * **** *   **  ***    **    **   *******    **    **   ***     *  **     ** ****    * 
 ***** **     ****    **   *** *  ***** **  ******      ***** **   *******   **     **  *******  
  ***   **             **   ***    ***   ** **           ***   **   *****     **    **   *****   
                                            **                                      *            
                                            **                                     *             
                                             **                                   *              
                                                                                 *               
                                                                                                 
 
+--- catwalk
 
                 _//                                                          
                 _//                                        _//               
   _//     _//// _//  _//   _//    _/ _//     _//       _///_//        _//    
 _//  _// _//    _// _//  _//  _// _/  _//  _//  _//  _//   _/ _/    _/   _// 
_//   _//   _/// _/_//   _//   _// _/   _//_//   _// _//    _//  _//_///// _//
_//   _//     _//_// _// _//   _// _// _// _//   _//  _//   _/   _//_/        
  _// _///_// _//_//  _//  _// _///_//       _// _///   _///_//  _//  _////   
                                   _//                                        
 
+--- chunky
 
              __                            __          
.---.-.-----.|  |--.---.-.-----.---.-.----.|  |--.-----.
|  _  |__ --||    <|  _  |  _  |  _  |  __||     |  -__|
|___._|_____||__|__|___._|   __|___._|____||__|__|_____|
                         |__|                           
 
+--- coinstak
 
                 O))                                                          
                 O))                                        O))               
   O))     O)))) O))  O))   O))    O) O))     O))       O)))O))        O))    
 O))  O)) O))    O)) O))  O))  O)) O)  O))  O))  O))  O))   O) O)    O)   O)) 
O))   O))   O))) O)O))   O))   O)) O)   O))O))   O)) O))    O))  O))O))))) O))
O))   O))     O))O)) O)) O))   O)) O)) O)) O))   O))  O))   O)   O))O)        
  O)) O)))O)) O))O))  O))  O)) O)))O))       O)) O)))   O)))O))  O))  O))))   
                                   O))                                        
 
+--- colossal
 
                888                                     888              
                888                                     888              
                888                                     888              
 8888b. .d8888b 888  888 8888b. 88888b.  8888b.  .d8888b88888b.  .d88b.  
    "88b88K     888 .88P    "88b888 "88b    "88bd88P"   888 "88bd8P  Y8b 
.d888888"Y8888b.888888K .d888888888  888.d888888888     888  88888888888 
888  888     X88888 "88b888  888888 d88P888  888Y88b.   888  888Y8b.     
"Y888888 88888P'888  888"Y88888888888P" "Y888888 "Y8888P888  888 "Y8888  
                                888                                      
                                888                                      
                                888                                      
 
+--- computer
 
                                                     
eeeee eeeee e   e  eeeee eeeee eeeee eeee e   e eeee 
8   8 8   " 8   8  8   8 8   8 8   8 8  8 8   8 8    
8eee8 8eeee 8eee8e 8eee8 8eee8 8eee8 8e   8eee8 8eee 
88  8    88 88   8 88  8 88    88  8 88   88  8 88   
88  8 8ee88 88   8 88  8 88    88  8 88e8 88  8 88ee 
                                                     
 
+--- contessa
 
      .              .     
 _. __;_/ _.._  _. _.|_  _ 
(_]_) | \(_][_)(_](_.[ )(/,
            |              
 
+--- contrast
 
..%%%%....%%%%...%%..%%...%%%%...%%%%%....%%%%....%%%%...%%..%%..%%%%%%.
.%%..%%..%%......%%.%%...%%..%%..%%..%%..%%..%%..%%..%%..%%..%%..%%.....
.%%%%%%...%%%%...%%%%....%%%%%%..%%%%%...%%%%%%..%%......%%%%%%..%%%%...
.%%..%%......%%..%%.%%...%%..%%..%%......%%..%%..%%..%%..%%..%%..%%.....
.%%..%%...%%%%...%%..%%..%%..%%..%%......%%..%%...%%%%...%%..%%..%%%%%%.
........................................................................
 
+--- cosmic
 
  :::.     .::::::.  :::  .    :::.  ::::::::::. :::.       .,-:::::   ::   .: .,::::::  
  ;;`;;   ;;;`    `  ;;; .;;,. ;;`;;  `;;;```.;;;;;`;;    ,;;;'````'  ,;;   ;;,;;;;''''  
 ,[[ '[[, '[==/[[[[, [[[[[/'  ,[[ '[[, `]]nnn]]',[[ '[[,  [[[        ,[[[,,,[[[ [[cccc   
c$$$cc$$$c  '''    $_$$$$,   c$$$cc$$$c $$$""  c$$$cc$$$c $$$        "$$$"""$$$ $$""""   
 888   888,88b    dP"888"88o, 888   888,888o    888   888,`88bo,__,o, 888   "88o888oo,__ 
 YMM   ""`  "YMmMY"  MMM "MMP"YMM   ""` YMMMb   YMM   ""`   "YUMMMMMP"MMM    YMM""""YUMMM
 
+--- cosmike
 
  :::.     .::::::.  :::  .    :::.  ::::::::::. :::.       .,-:::::   ::   .: .,::::::  
  ;;`;;   ;;;`    `  ;;; .;;,. ;;`;;  `;;;```.;;;;;`;;    ,;;;'````'  ,;;   ;;,;;;;''''  
 ,[[ '[[, '[==/[[[[, [[[[[/'  ,[[ '[[, `]]nnn]]',[[ '[[,  [[[        ,[[[,,,[[[ [[cccc   
c$$$cc$$$c  '''    $_$$$$,   c$$$cc$$$c $$$""  c$$$cc$$$c $$$        "$$$"""$$$ $$""""   
 888   888,88b    dP"888"88o, 888   888,888o    888   888,`88bo,__,o, 888   "88o888oo,__ 
 YMM   ""`  "YMmMY"  MMM "MMP"YMM   ""` YMMMb   YMM   ""`   "YUMMMMMP"MMM    YMM""""YUMMM
 
+--- crawford
 
  ____  _____ __  _   ____  ____    ____    __  __ __    ___ 
 /    T/ ___/|  l/ ] /    T|    \  /    T  /  ]|  T  T  /  _]
Y  o  (   \_ |  ' / Y  o  ||  o  )Y  o  | /  / |  l  | /  [_ 
|     |\__  T|    \ |     ||   _/ |     |/  /  |  _  |Y    _]
|  _  |/  \ ||     Y|  _  ||  |   |  _  /   \_ |  |  ||   [_ 
|  |  |\    ||  .  ||  |  ||  |   |  |  \     ||  |  ||     T
l__j__j \___jl__j\_jl__j__jl__j   l__j__j\____jl__j__jl_____j
                                                             
 
+--- cricket
 
             __                           __          
.---.-.-----|  |--.---.-.-----.---.-.----|  |--.-----.
|  _  |__ --|    <|  _  |  _  |  _  |  __|     |  -__|
|___._|_____|__|__|___._|   __|___._|____|__|__|_____|
                        |__|                          
                                                      
                                                      
                                                      
 
+--- cyberlarge
 
 _______ _______ _     _ _______  _____  _______ _______ _     _ _______
 |_____| |______ |____/  |_____| |_____] |_____| |       |_____| |______
 |     | ______| |    \_ |     | |       |     | |_____  |     | |______
                                                                        
 
+--- cybermedium
 
____ ____ _  _ ____ ___  ____ ____ _  _ ____ 
|__| [__  |_/  |__| |__] |__| |    |__| |___ 
|  | ___] | \_ |  | |    |  | |___ |  | |___ 
                                             
 
+--- cybersmall
 
 ____ ____ _  _ ____ ___  ____ ____ _  _ ____
 |--| ==== |-:_ |--| |--' |--| |___ |--| |===
 
+--- decimal
 
97 115 107 97 112 97 99 104 101 
 
+--- diamond
 
                 /\\                                                          
                 /\\                                        /\\               
   /\\     /\\\\ /\\  /\\   /\\    /\ /\\     /\\       /\\\/\\        /\\    
 /\\  /\\ /\\    /\\ /\\  /\\  /\\ /\  /\\  /\\  /\\  /\\   /\ /\    /\   /\\ 
/\\   /\\   /\\\ /\/\\   /\\   /\\ /\   /\\/\\   /\\ /\\    /\\  /\\/\\\\\ /\\
/\\   /\\     /\\/\\ /\\ /\\   /\\ /\\ /\\ /\\   /\\  /\\   /\   /\\/\        
  /\\ /\\\/\\ /\\/\\  /\\  /\\ /\\\/\\       /\\ /\\\   /\\\/\\  /\\  /\\\\   
                                   /\\                                        
 
+--- digital
 
+-+-+-+-+-+-+-+-+-+
|a|s|k|a|p|a|c|h|e|
+-+-+-+-+-+-+-+-+-+
 
+--- doh
 
                                                                                                                                                                    
                                                                                                                                                                    
                                  kkkkkkkk                                                                                  hhhhhhh                                 
                                  k::::::k                                                                                  h:::::h                                 
                                  k::::::k                                                                                  h:::::h                                 
                                  k::::::k                                                                                  h:::::h                                 
  aaaaaaaaaaaaa      ssssssssss    k:::::k    kkkkkkkaaaaaaaaaaaaa  ppppp   ppppppppp     aaaaaaaaaaaaa      cccccccccccccccch::::h hhhhh           eeeeeeeeeeee    
  a::::::::::::a   ss::::::::::s   k:::::k   k:::::k a::::::::::::a p::::ppp:::::::::p    a::::::::::::a   cc:::::::::::::::ch::::hh:::::hhh      ee::::::::::::ee  
  aaaaaaaaa:::::ass:::::::::::::s  k:::::k  k:::::k  aaaaaaaaa:::::ap:::::::::::::::::p   aaaaaaaaa:::::a c:::::::::::::::::ch::::::::::::::hh   e::::::eeeee:::::ee
           a::::as::::::ssss:::::s k:::::k k:::::k            a::::app::::::ppppp::::::p           a::::ac:::::::cccccc:::::ch:::::::hhh::::::h e::::::e     e:::::e
    aaaaaaa:::::a s:::::s  ssssss  k::::::k:::::k      aaaaaaa:::::a p:::::p     p:::::p    aaaaaaa:::::ac::::::c     ccccccch::::::h   h::::::he:::::::eeeee::::::e
  aa::::::::::::a   s::::::s       k:::::::::::k     aa::::::::::::a p:::::p     p:::::p  aa::::::::::::ac:::::c             h:::::h     h:::::he:::::::::::::::::e 
 a::::aaaa::::::a      s::::::s    k:::::::::::k    a::::aaaa::::::a p:::::p     p:::::p a::::aaaa::::::ac:::::c             h:::::h     h:::::he::::::eeeeeeeeeee  
a::::a    a:::::assssss   s:::::s  k::::::k:::::k  a::::a    a:::::a p:::::p    p::::::pa::::a    a:::::ac::::::c     ccccccch:::::h     h:::::he:::::::e           
a::::a    a:::::as:::::ssss::::::sk::::::k k:::::k a::::a    a:::::a p:::::ppppp:::::::pa::::a    a:::::ac:::::::cccccc:::::ch:::::h     h:::::he::::::::e          
a:::::aaaa::::::as::::::::::::::s k::::::k  k:::::ka:::::aaaa::::::a p::::::::::::::::p a:::::aaaa::::::a c:::::::::::::::::ch:::::h     h:::::h e::::::::eeeeeeee  
 a::::::::::aa:::as:::::::::::ss  k::::::k   k:::::ka::::::::::aa:::ap::::::::::::::pp   a::::::::::aa:::a cc:::::::::::::::ch:::::h     h:::::h  ee:::::::::::::e  
  aaaaaaaaaa  aaaa sssssssssss    kkkkkkkk    kkkkkkkaaaaaaaaaa  aaaap::::::pppppppp      aaaaaaaaaa  aaaa   cccccccccccccccchhhhhhh     hhhhhhh    eeeeeeeeeeeeee  
                                                                     p:::::p                                                                                        
                                                                     p:::::p                                                                                        
                                                                    p:::::::p                                                                                       
                                                                    p:::::::p                                                                                       
                                                                    p:::::::p                                                                                       
                                                                    ppppppppp                                                                                       
                                                                                                                                                                    
 
+--- doom
 
           _                          _          
          | |                        | |         
  __ _ ___| | ____ _ _ __   __ _  ___| |__   ___ 
 / _` / __| |/ / _` | '_ \ / _` |/ __| '_ \ / _ \
| (_| \__ \   < (_| | |_) | (_| | (__| | | |  __/
 \__,_|___/_|\_\__,_| .__/ \__,_|\___|_| |_|\___|
                    | |                          
                    |_|                          
 
+--- dotmatrix
 
                               _                                                                _                              
                              (_)                                                              (_)                             
   _  _  _       _  _  _  _   (_)     _   _  _  _       _  _  _  _      _  _  _        _  _  _ (_) _  _  _     _  _  _  _      
  (_)(_)(_) _  _(_)(_)(_)(_)  (_)   _(_) (_)(_)(_) _   (_)(_)(_)(_)_   (_)(_)(_) _   _(_)(_)(_)(_)(_)(_)(_)_  (_)(_)(_)(_)_    
   _  _  _ (_)(_)_  _  _  _   (_) _(_)    _  _  _ (_)  (_)        (_)   _  _  _ (_) (_)        (_)        (_)(_) _  _  _ (_)   
 _(_)(_)(_)(_)  (_)(_)(_)(_)_ (_)(_)_   _(_)(_)(_)(_)  (_)        (_) _(_)(_)(_)(_) (_)        (_)        (_)(_)(_)(_)(_)(_)   
(_)_  _  _ (_)_  _  _  _  _(_)(_)  (_)_(_)_  _  _ (_)_ (_) _  _  _(_)(_)_  _  _ (_)_(_)_  _  _ (_)        (_)(_)_  _  _  _     
  (_)(_)(_)  (_)(_)(_)(_)(_)  (_)    (_) (_)(_)(_)  (_)(_)(_)(_)(_)    (_)(_)(_)  (_) (_)(_)(_)(_)        (_)  (_)(_)(_)(_)    
                                                       (_)                                                                     
                                                       (_)                                                                     
 
+--- double
 
 ___  __ __ __ ___ ____  ___   _____  __ ____
// \\(( \|| //// \\|| \\// \\ //  ||  ||||   
||=|| \\ ||<< ||=||||_//||=||((   ||==||||== 
|| ||\_))|| \\|| ||||   || || \\__||  ||||___
                                             
 
+--- drpepper
 
          _                        _        
 ___  ___| |__ ___  ___  ___  ___ | |_  ___ 
<_> |<_-<| / /<_> || . \<_> |/ | '| . |/ ._>
<___|/__/|_\_\<___||  _/<___|\_|_.|_|_|\___.
                   |_|                      
 
+--- dwhistled
 
 sk p  h 
X  X X. X
X  X X. X
.  . .. X
.  . .. X
.  . .. X
.  . .. .
         
askapache
         
 
+--- eftichess
 
         #########         #########         #########         ##################         #########         #########         #########         ##################         #########         #########         #########         ##################
  [`'`'] ##\`.'/##  ':v:`  ##/\:/\##  |:+:|  ##':v:`##  \`.'/  ##[`'`']###|`+'|##  [`'`'] ##\`.'/##  ':v:`  ##/\:/\##  |:+:|  ##':v:`##  \`.'/  ##[`'`']####(_)###  [`'`'] ##\`.'/##  ':v:`  ##/\:/\##  |:+:|  ##':v:`##  \`.'/  ##[`'`']###\`~'/##
   |::|  ##(o:o)##  (o:0)  #/(o:o)\#  (o:o)  ##(o:0)##  (o:o)  ###|::|####(o o)##   |::|  ##(o:o)##  (o:0)  #/(o:o)\#  (o:o)  ##(o:0)##  (o:o)  ###|::|#####| |###   |::|  ##(o:o)##  (o:0)  #/(o:o)\#  (o:o)  ##(o:0)##  (o:o)  ###|::|####(o o)##
   |::|  ###\:/:\#   (:)   ###(:)###   (:)   ###(:)###   \:/:\ ###|::|#####(_)###   |::|  ###\:/:\#   (:)   ###(:)###   (:)   ###(:)###   \:/:\ ###|::|#####|_|###   |::|  ###\:/:\#   (:)   ###(:)###   (:)   ###(:)###   \:/:\ ###|::|#####\ / \#
         ####"####         #########         #########    "    ##################         ####"####         #########         #########    "    ##################         ####"####         #########         #########    "    #############"####
 
+--- eftifont
 
                        
 _  _ ||  _  _ _  _|| _ 
/o\(c'|/7/o\/oYo\//| Yo\
\_,]_)L|\\_,]_|_,]\Ln\( 
            L|          
 
+--- eftipiti
 
         
askapache
         
 
+--- eftirobot
 
          _                       _        
         ( )                     ( )       
 ___  __ | | _  ___  ___  ___  __| |_  ___ 
( o )(_' ( _'( ( o )( o \( o )/ /( _ )( o_)
/_^_\/__)/_\\_|/_^_\/ __//_^_\\_\/_\|| \(  
                    |_|                    
 
+--- eftitalic
 
                                    
  _   __  /7   _   _   _   __ /7  __
,'o| (c' //_7,'o| /o|,'o|,','/ \,'o/
|_,7/__)//\\ |_,7/_,'|_,7\_\/n_/|_( 
                //                  
 
+--- eftiwall
 
   |                             ___         |          #                 #   |                             ___           |"|      
   |.===.       `  _ ,  '       /\#/\        |.===.     #=ooO=========Ooo=#   |.===.         ,,,,,         .|||.         _|_|_     
   {}o o{}     -  (o)o)  -     /(o o)\       {}o o{}    #  \\  (o o)  //  #   {}o o{}       /(o o)\        (o o)         (o o)     
ooO--(_)--Ooo--ooO'(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo---------(_)--------ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-ooO--(_)--Ooo-
 
+--- eftiwater
 
         _                     _      
 ___  __ )L, ___  __  ___  __  ))_  __
((_( _))((\ ((_( ((_)((_( ((_ ((`( (('
                  ))                  
 
+--- epic
 
 _______  _______  _        _______  _______  _______  _______           _______ 
(  ___  )(  ____ \| \    /\(  ___  )(  ____ )(  ___  )(  ____ \|\     /|(  ____ \
| (   ) || (    \/|  \  / /| (   ) || (    )|| (   ) || (    \/| )   ( || (    \/
| (___) || (_____ |  (_/ / | (___) || (____)|| (___) || |      | (___) || (__    
|  ___  |(_____  )|   _ (  |  ___  ||  _____)|  ___  || |      |  ___  ||  __)   
| (   ) |      ) ||  ( \ \ | (   ) || (      | (   ) || |      | (   ) || (      
| )   ( |/\____) ||  /  \ \| )   ( || )      | )   ( || (____/\| )   ( || (____/\
|/     \|\_______)|_/    \/|/     \||/       |/     \|(_______/|/     \|(_______/
                                                                                 
 
+--- fender
 
              '||                                    '||            
               ||                                     ||            
 '''|.  (''''  || //`   '''|.  '||''|,  '''|.  .|'',  ||''|, .|''|, 
.|''||   `'')  ||<<    .|''||   ||  || .|''||  ||     ||  || ||..|| 
`|..||. `...' .|| \\.  `|..||.  ||..|' `|..||. `|..' .||  || `|...  
                                ||                                  
                               .||                                  
 
+--- fourtops
 
      |                 |       
/~~|(~|_//~~||~~\/~~|/~~|/~\ /~/
\__|_)| \\__||__/\__|\__|   |\/_
             |                  
 
+--- fraktur
 
               .x+=:.         ..                                                                             
              z`    ^%  < .z@8"`                                                        .uef^"               
                 .   <k  !@88E                     .d``                               :d88E                  
      u        .@8Ned8"  '888E   u          u      @8Ne.   .u         u           .   `888E            .u    
   us888u.   .@^%8888"    888E u@8NL     us888u.   %8888:u@88N     us888u.   .udR88N   888E .z8k    ud8888.  
.@88 "8888" x88:  `)8b.   888E`"88*"  .@88 "8888"   `888I  888. .@88 "8888" <888'888k  888E~?888L :888'8888. 
9888  9888  8888N=*8888   888E .dN.   9888  9888     888I  888I 9888  9888  9888 'Y"   888E  888E d888 '88%" 
9888  9888   %8"    R88   888E~8888   9888  9888     888I  888I 9888  9888  9888       888E  888E 8888.+"    
9888  9888    @8Wou 9%    888E '888&  9888  9888   uW888L  888' 9888  9888  9888       888E  888E 8888L      
9888  9888  .888888P`     888E  9888. 9888  9888  '*88888Nu88P  9888  9888  ?8888u../  888E  888E '8888c. .+ 
"888*""888" `   ^"F     '"888*" 4888" "888*""888" ~ '88888F`    "888*""888"  "8888P'  m888N= 888>  "88888%   
 ^Y"   ^Y'                 ""    ""    ^Y"   ^Y'     888 ^       ^Y"   ^Y'     "P'     `Y"   888     "YP'    
                                                     *8E                                    J88"             
                                                     '8>                                    @%               
                                                      "                                   :"                 
 
+--- fuzzy
 
             .-.                             .-.         
             : :.-.                          : :         
 .--.   .--. : `'.' .--.  .---.  .--.   .--. : `-.  .--. 
' .; ; `._-.': . `.' .; ; : .; `' .; ; '  ..': .. :' '_.'
`.__,_;`.__.':_;:_;`.__,_;: ._.'`.__,_;`.__.':_;:_;`.__.'
                          : :                            
                          :_;                            
 
+--- goofy
 
____  ______       __     _    _____  _____     _______  _______    __    ___    _        __
   /  \     )  ____) \   | )  /    /  \    |    \     /  \     /  __) \  |   |  / \    ___) 
  /    \   (  (___    |  |/  /    /    \   |     )   /    \   |  /     |  \_/  |   |  (__   
 /  ()  \   \___  \   |     (    /  ()  \  |  __/   /  ()  \  | |      |   _   |   |   __)  
|   __   |  ____)  )  |  |\  \  |   __   | | |     |   __   | |  \__   |  / \  |   |  (___  
|  (__)  |_(      (__/   |_)  \_|  (__)  |_| |_____|  (__)  |__\    )_/  |___|  \_/       )_
 
+--- gothic
 
                                                    
            ,,                          ,,          
  _         ||     _           _        ||          
 < \,  _-_, ||/\  < \, -_-_   < \,  _-_ ||/\\  _-_  
 /-|| ||_.  ||_<  /-|| || \\  /-|| ||   || || || \\ 
(( ||  ~ || || | (( || || || (( || ||   || || ||/   
 \/\\ ,-_-  \\,\  \/\\ ||-'   \/\\ \\,/ \\ |/ \\,/  
                       |/                 _/        
                       '                            
 
+--- graceful
 
  __   ____  __ _   __   ____   __    ___  _  _  ____ 
 / _\ / ___)(  / ) / _\ (  _ \ / _\  / __)/ )( \(  __)
/    \\___ \ )  ( /    \ ) __//    \( (__ ) __ ( ) _) 
\_/\_/(____/(__\_)\_/\_/(__)  \_/\_/ \___)\_)(_/(____)
 
+--- gradient
 
.eeeeee...eeeeee.eee..eee..eeeeee..eeeeeee...eeeeee...eeeee.eee..eee.eeeeee.
@@@@@@@@:@@@@@@@:@@@::@@@:@@@@@@@@:@@@@@@@@:@@@@@@@@:@@@@@@:@@@::@@@:@@@@@@:
%%%--%%%-%%%-----%%%-%%%--%%%--%%%-%%%--%%%-%%%--%%%-%%%----%%%--%%%-%%%----
&&&&&&&&+&&&&&&++&&&&&&+++&&&&&&&&+&&&&&&&&+&&&&&&&&+&&&++++&&&&&&&&+&&&&&++
||||||||**||||||*||||||***||||||||*|||||||**||||||||*|||****||||||||*|||||**
!!!==!!!=====!!!=!!!=!!!==!!!==!!!=!!!======!!!==!!!=!!!====!!!==!!!=!!!====
:::##:::#:::::::#:::##:::#:::##:::#:::######:::##:::#::::::#:::##:::#::::::#
...@@...@......@@...@@...@...@@...@...@@@@@@...@@...@@.....@...@@...@......@
                                                                            
 
+--- graffiti
 
               __                               .__            
_____    _____|  | _______  ___________    ____ |  |__   ____  
\__  \  /  ___/  |/ /\__  \ \____ \__  \ _/ ___\|  |  \_/ __ \ 
 / __ \_\___ \|    <  / __ \|  |_> > __ \\  \___|   Y  \  ___/ 
(____  /____  >__|_ \(____  /   __(____  /\___  >___|  /\___  >
     \/     \/     \/     \/|__|       \/     \/     \/     \/ 
 
+--- hex
 
61 73 6B 61 70 61 63 68 65 
 
+--- hollywood
 
                                                                                 
                           /'  _/                                      /'        
                         /' _/~                                      /'          
     ____     ____    ,/'_/~  ____      ____     ____     ____     /'__     ____ 
   /'    )  /'    )--/\/~   /'    )   /'    )--/'    )  /'    )--/'    )  /'    )
 /'    /'  '---,   /'  \  /'    /'  /'    /' /'    /' /'       /'    /' /(___,/' 
(___,/(__(___,/  /'     \(___,/(__/(___,/'  (___,/(__(___,/  /'    /(__(________ 
                                /'                                               
                              /'                                                 
                            /'                                                   
 
+--- invita
 
                                   
         /)                 /)     
 _   _  (/_  _  __   _   _ (/    _ 
(_(_/_)_/(__(_(_/_)_(_(_(__/ )__(/_
             .-/                   
            (_/                    
 
+--- isometric1
 
      ___           ___           ___           ___           ___           ___           ___           ___           ___     
     /\  \         /\  \         /\__\         /\  \         /\  \         /\  \         /\  \         /\__\         /\  \    
    /::\  \       /::\  \       /:/  /        /::\  \       /::\  \       /::\  \       /::\  \       /:/  /        /::\  \   
   /:/\:\  \     /:/\ \  \     /:/__/        /:/\:\  \     /:/\:\  \     /:/\:\  \     /:/\:\  \     /:/__/        /:/\:\  \  
  /::\~\:\  \   _\:\~\ \  \   /::\__\____   /::\~\:\  \   /::\~\:\  \   /::\~\:\  \   /:/  \:\  \   /::\  \ ___   /::\~\:\  \ 
 /:/\:\ \:\__\ /\ \:\ \ \__\ /:/\:::::\__\ /:/\:\ \:\__\ /:/\:\ \:\__\ /:/\:\ \:\__\ /:/__/ \:\__\ /:/\:\  /\__\ /:/\:\ \:\__\
 \/__\:\/:/  / \:\ \:\ \/__/ \/_|:|~~|~    \/__\:\/:/  / \/__\:\/:/  / \/__\:\/:/  / \:\  \  \/__/ \/__\:\/:/  / \:\~\:\ \/__/
      \::/  /   \:\ \:\__\      |:|  |          \::/  /       \::/  /       \::/  /   \:\  \            \::/  /   \:\ \:\__\  
      /:/  /     \:\/:/  /      |:|  |          /:/  /         \/__/        /:/  /     \:\  \           /:/  /     \:\ \/__/  
     /:/  /       \::/  /       |:|  |         /:/  /                      /:/  /       \:\__\         /:/  /       \:\__\    
     \/__/         \/__/         \|__|         \/__/                       \/__/         \/__/         \/__/         \/__/    
 
+--- isometric2
 
      ___           ___           ___           ___           ___         ___           ___           ___           ___     
     /\  \         /\__\         /|  |         /\  \         /\  \       /\  \         /\__\         /\  \         /\__\    
    /::\  \       /:/ _/_       |:|  |        /::\  \       /::\  \     /::\  \       /:/  /         \:\  \       /:/ _/_   
   /:/\:\  \     /:/ /\  \      |:|  |       /:/\:\  \     /:/\:\__\   /:/\:\  \     /:/  /           \:\  \     /:/ /\__\  
  /:/ /::\  \   /:/ /::\  \   __|:|  |      /:/ /::\  \   /:/ /:/  /  /:/ /::\  \   /:/  /  ___   ___ /::\  \   /:/ /:/ _/_ 
 /:/_/:/\:\__\ /:/_/:/\:\__\ /\ |:|__|____ /:/_/:/\:\__\ /:/_/:/  /  /:/_/:/\:\__\ /:/__/  /\__\ /\  /:/\:\__\ /:/_/:/ /\__\
 \:\/:/  \/__/ \:\/:/ /:/  / \:\/:::::/__/ \:\/:/  \/__/ \:\/:/  /   \:\/:/  \/__/ \:\  \ /:/  / \:\/:/  \/__/ \:\/:/ /:/  /
  \::/__/       \::/ /:/  /   \::/~~/~      \::/__/       \::/__/     \::/__/       \:\  /:/  /   \::/__/       \::/_/:/  / 
   \:\  \        \/_/:/  /     \:\~~\        \:\  \        \:\  \      \:\  \        \:\/:/  /     \:\  \        \:\/:/  /  
    \:\__\         /:/  /       \:\__\        \:\__\        \:\__\      \:\__\        \::/  /       \:\__\        \::/  /   
     \/__/         \/__/         \/__/         \/__/         \/__/       \/__/         \/__/         \/__/         \/__/    
 
+--- isometric3
 
      ___           ___           ___           ___           ___         ___           ___           ___           ___     
     /  /\         /  /\         /__/|         /  /\         /  /\       /  /\         /  /\         /__/\         /  /\    
    /  /::\       /  /:/_       |  |:|        /  /::\       /  /::\     /  /::\       /  /:/         \  \:\       /  /:/_   
   /  /:/\:\     /  /:/ /\      |  |:|       /  /:/\:\     /  /:/\:\   /  /:/\:\     /  /:/           \__\:\     /  /:/ /\  
  /  /:/~/::\   /  /:/ /::\   __|  |:|      /  /:/~/::\   /  /:/~/:/  /  /:/~/::\   /  /:/  ___   ___ /  /::\   /  /:/ /:/_ 
 /__/:/ /:/\:\ /__/:/ /:/\:\ /__/\_|:|____ /__/:/ /:/\:\ /__/:/ /:/  /__/:/ /:/\:\ /__/:/  /  /\ /__/\  /:/\:\ /__/:/ /:/ /\
 \  \:\/:/__\/ \  \:\/:/~/:/ \  \:\/:::::/ \  \:\/:/__\/ \  \:\/:/   \  \:\/:/__\/ \  \:\ /  /:/ \  \:\/:/__\/ \  \:\/:/ /:/
  \  \::/       \  \::/ /:/   \  \::/~~~~   \  \::/       \  \::/     \  \::/       \  \:\  /:/   \  \::/       \  \::/ /:/ 
   \  \:\        \__\/ /:/     \  \:\        \  \:\        \  \:\      \  \:\        \  \:\/:/     \  \:\        \  \:\/:/  
    \  \:\         /__/:/       \  \:\        \  \:\        \  \:\      \  \:\        \  \::/       \  \:\        \  \::/   
     \__\/         \__\/         \__\/         \__\/         \__\/       \__\/         \__\/         \__\/         \__\/    
 
+--- isometric4
 
      ___           ___           ___           ___                         ___           ___           ___           ___     
     /  /\         /  /\         /  /\         /  /\          ___          /  /\         /  /\         /  /\         /  /\    
    /  /::\       /  /::\       /  /:/        /  /::\        /  /\        /  /::\       /  /::\       /  /:/        /  /::\   
   /  /:/\:\     /__/:/\:\     /  /:/        /  /:/\:\      /  /::\      /  /:/\:\     /  /:/\:\     /  /:/        /  /:/\:\  
  /  /::\ \:\   _\_ \:\ \:\   /  /::\____   /  /::\ \:\    /  /:/\:\    /  /::\ \:\   /  /:/  \:\   /  /::\ ___   /  /::\ \:\ 
 /__/:/\:\_\:\ /__/\ \:\ \:\ /__/:/\:::::\ /__/:/\:\_\:\  /  /::\ \:\  /__/:/\:\_\:\ /__/:/ \  \:\ /__/:/\:\  /\ /__/:/\:\ \:\
 \__\/  \:\/:/ \  \:\ \:\_\/ \__\/~|:|~~~~ \__\/  \:\/:/ /__/:/\:\_\:\ \__\/  \:\/:/ \  \:\  \__\/ \__\/  \:\/:/ \  \:\ \:\_\/
      \__\::/   \  \:\_\:\      |  |:|          \__\::/  \__\/  \:\/:/      \__\::/   \  \:\            \__\::/   \  \:\ \:\  
      /  /:/     \  \:\/:/      |  |:|          /  /:/        \  \::/       /  /:/     \  \:\           /  /:/     \  \:\_\/  
     /__/:/       \  \::/       |__|:|         /__/:/          \__\/       /__/:/       \  \:\         /__/:/       \  \:\    
     \__\/         \__\/         \__\|         \__\/                       \__\/         \__\/         \__\/         \__\/    
 
+--- italic
 
                    
 _  _ / _   _ _ / _ 
(/_) /((//)(/( /)(- 
        /           
 
+--- ivrit
 
       _                           _              
   ___| |__   ___ __ _ _ __   __ _| | _____  __ _ 
  / _ \ '_ \ / __/ _` | '_ \ / _` | |/ / __|/ _` |
 |  __/ | | | (_| (_| | |_) | (_| |   <\__ \ (_| |
  \___|_| |_|\___\__,_| .__/ \__,_|_|\_\___/\__,_|
                      |_|                         
 
+--- jazmine
 
                                                               
              8                                  8             
              8                                  8             
.oPYo. .oPYo. 8  .o  .oPYo. .oPYo. .oPYo. .oPYo. 8oPYo. .oPYo. 
.oooo8 Yb..   8oP'   .oooo8 8    8 .oooo8 8    ' 8    8 8oooo8 
8    8   'Yb. 8 `b.  8    8 8    8 8    8 8    . 8    8 8.     
`YooP8 `YooP' 8  `o. `YooP8 8YooP' `YooP8 `YooP' 8    8 `Yooo' 
:.....::.....:..::...:.....:8 ....::.....::.....:..:::..:.....:
::::::::::::::::::::::::::::8 :::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::..:::::::::::::::::::::::::::::::::
 
+--- katakana
 
#        ##########            #           # #     #                            #            
#   ###  #        #   ######   #   ###     # #     #   ###                     #  ########## 
####             #         #   ####        # #     ####       ##          #   #           #  
#               #          #   #           # #   # #         #  ##         # #           #   
#              #           #   #          #  #  #  #        #     ##        #         # #    
#            ##     ########## #         #   # #   #                ##    ## #         #     
 #######   ##                   ####### #    ##     #######             ##    #         #    
                                                                                             
 
+--- kban
 
               '||                                       '||              
 ....    ....   ||  ..   ....   ... ...   ....     ....   || ..     ....  
'' .||  ||. '   || .'   '' .||   ||'  || '' .||  .|   ''  ||' ||  .|...|| 
.|' ||  . '|..  ||'|.   .|' ||   ||    | .|' ||  ||       ||  ||  ||      
'|..'|' |'..|' .||. ||. '|..'|'  ||...'  '|..'|'  '|...' .||. ||.  '|...' 
                                 ||                                       
                                ''''                                      
 
+--- l4me
 
45k4p4ch3
 
+--- larry3d
 
                __                                         __                
               /\ \                                       /\ \               
   __      ____\ \ \/'\      __     _____      __      ___\ \ \___      __   
 /'__`\   /',__\\ \ , <    /'__`\  /\ '__`\  /'__`\   /'___\ \  _ `\  /'__`\ 
/\ \L\.\_/\__, `\\ \ \\`\ /\ \L\.\_\ \ \L\ \/\ \L\.\_/\ \__/\ \ \ \ \/\  __/ 
\ \__/.\_\/\____/ \ \_\ \_\ \__/.\_\\ \ ,__/\ \__/.\_\ \____\\ \_\ \_\ \____\
 \/__/\/_/\/___/   \/_/\/_/\/__/\/_/ \ \ \/  \/__/\/_/\/____/ \/_/\/_/\/____/
                                      \ \_\                                  
                                       \/_/                                  
 
+--- lcd
 
                         _                            
              |         | |               |           
 -       -    +-   -    |-     -     -    |-     -    
| |      \    |\  | |   |     | |   |     | |   |/    
 --      -         --          --    -           --   
                                                      
 
+--- lean
 
                                                                                            
                       _/                                                _/                 
    _/_/_/    _/_/_/  _/  _/      _/_/_/  _/_/_/      _/_/_/    _/_/_/  _/_/_/      _/_/    
 _/    _/  _/_/      _/_/      _/    _/  _/    _/  _/    _/  _/        _/    _/  _/_/_/_/   
_/    _/      _/_/  _/  _/    _/    _/  _/    _/  _/    _/  _/        _/    _/  _/          
 _/_/_/  _/_/_/    _/    _/    _/_/_/  _/_/_/      _/_/_/    _/_/_/  _/    _/    _/_/_/     
                                      _/                                                    
                                     _/                                                     
 
+--- letters
 
              kk                                    hh             
  aa aa  sss  kk  kk   aa aa pp pp     aa aa   cccc hh        eee  
 aa aaa s     kkkkk   aa aaa ppp  pp  aa aaa cc     hhhhhh  ee   e 
aa  aaa  sss  kk kk  aa  aaa pppppp  aa  aaa cc     hh   hh eeeee  
 aaa aa     s kk  kk  aaa aa pp       aaa aa  ccccc hh   hh  eeeee 
         sss                 pp                                    
 
+--- linux
 
.---..---..-.,-..---..---..---..---..-. .-..---.
| | | \ \ | . < | | || |-'| | || |  | |=| || |- 
`-^-'`---'`-'`-'`-^-'`-'  `-^-'`---'`-' `-'`---'
                                                
 
+--- lockergnome
 
          :|                       :|        
.::\ <::< :|_/ .::\ :::\ .::\ .::/ :::| :~~/ 
`::| >::> :|~\ `::| :::/ `::| `::\ :|:| :::, 
                    :|                       
 
+--- madrid
 
        |                  |       
/=| /== =/ /=| |=\ /=| /=: |=\ /=\ 
\=| ==/ |\ \=| |=/ \=| \=: | | \=  
               |                   
 
+--- marquee
 
                 .::                                                          
                 .::                                        .::               
   .::     .:::: .::  .::   .::    .: .::     .::       .:::.::        .::    
 .::  .:: .::    .:: .::  .::  .:: .:  .::  .::  .::  .::   .: .:    .:   .:: 
.::   .::   .::: .:.::   .::   .:: .:   .::.::   .:: .::    .::  .::.::::: .::
.::   .::     .::.:: .:: .::   .:: .:: .:: .::   .::  .::   .:   .::.:        
  .:: .:::.:: .::.::  .::  .:: .:::.::       .:: .:::   .:::.::  .::  .::::   
                                   .::                                        
 
+--- maxfour
 
      |                 |       
/~~|(~|_//~~||~~\/~~|/~~|/~\ /~/
\__|_)| \\__||__/\__|\__|   |\/_
             |                  
 
+--- mike
 
         |/               |   _
 //| //  |  //| |\ //| |_ |\ |/
                |              
 
+--- mini
 
                         
 _. _|  _.._  _. _|_  _  
(_|_>|<(_||_)(_|(_| |(/_ 
          |              
 
+--- mirror
 
          _                          _           
 ___   __| |___  _ __   __ _ _ ____ | |___ _ __  
/ _ \ / _` |__ \| '_ \ / _` | '_ \ \| |__ \ '_ \ 
\__  | | | |__) | |_) | (_| | |_) >   / __/ |_) |
|___/|_| |_|___/|_.__/ \__, |_.__/_/|_\___|_.__/ 
                          |_|                    
 
+--- mnemonic
 
askapache
 
+--- nancyj-fancy
 
                  dP                                           dP                
                  88                                           88                
.d8888b. .d8888b. 88  .dP  .d8888b. 88d888b. .d8888b. .d8888b. 88d888b. .d8888b. 
88'  `88 Y8ooooo. 88888"   88'  `88 88'  `88 88'  `88 88'  `"" 88'  `88 88ooood8 
88.  .88       88 88  `8b. 88.  .88 88.  .88 88.  .88 88.  ... 88    88 88.  ... 
`88888P8 `88888P' dP   `YP `88888P8 88Y888P' `88888P8 `88888P' dP    dP `88888P' 
                                    88                                           
                                    dP                                           
 
+--- nancyj-underlined
 
                  dP                                            dP                
                  88                                            88                
.d8888b. .d8888b. 88  .dP  .d8888b.  88d888b. .d8888b. .d8888b. 88d888b. .d8888b. 
88'  `88 Y8ooooo. 88888"   88'  `88  88'  `88 88'  `88 88'  `"" 88'  `88 88ooood8 
88.  .88       88 88  `8b. 88.  .88  88.  .88 88.  .88 88.  ... 88    88 88.  ... 
`88888P8 `88888P' dP   `YP `88888P8  88Y888P' `88888P8 `88888P' dP    dP `88888P' 
oooooooooooooooooooooooooooooooooooo~88~oooooooooooooooooooooooooooooooooooooooooo
                                     dP                                           
 
+--- nancyj
 
                  dP                                           dP                
                  88                                           88                
.d8888b. .d8888b. 88  .dP  .d8888b. 88d888b. .d8888b. .d8888b. 88d888b. .d8888b. 
88'  `88 Y8ooooo. 88888"   88'  `88 88'  `88 88'  `88 88'  `"" 88'  `88 88ooood8 
88.  .88       88 88  `8b. 88.  .88 88.  .88 88.  .88 88.  ... 88    88 88.  ... 
`88888P8 `88888P' dP   `YP `88888P8 88Y888P' `88888P8 `88888P' dP    dP `88888P' 
                                    88                                           
                                    dP                                           
 
+--- nipples
 
                 {__                                                          
                 {__                                        {__               
   {__     {____ {__  {__   {__    {_ {__     {__       {___{__        {__    
 {__  {__ {__    {__ {__  {__  {__ {_  {__  {__  {__  {__   {_ {_    {_   {__ 
{__   {__   {___ {_{__   {__   {__ {_   {__{__   {__ {__    {__  {__{_____ {__
{__   {__     {__{__ {__ {__   {__ {__ {__ {__   {__  {__   {_   {__{_        
  {__ {___{__ {__{__  {__  {__ {___{__       {__ {___   {___{__  {__  {____   
                                   {__                                        
 
+--- nvscript
 
                                                                                                   
                       ,dPYb,                                                   ,dPYb,             
                       IP'`Yb                                                   IP'`Yb             
                       I8  8I                                                   I8  8I             
                       I8  8bgg,                                                I8  8'             
   ,gggg,gg    ,g,     I8 dP" "8    ,gggg,gg  gg,gggg,      ,gggg,gg    ,gggg,  I8 dPgg,    ,ggg,  
  dP"  "Y8I   ,8'8,    I8d8bggP"   dP"  "Y8I  I8P"  "Yb    dP"  "Y8I   dP"  "Yb I8dP" "8I  i8" "8i 
 i8'    ,8I  ,8'  Yb   I8P' "Yb,  i8'    ,8I  I8'    ,8i  i8'    ,8I  i8'       I8P    I8  I8, ,8I 
,d8,   ,d8b,,8'_   8) ,d8    `Yb,,d8,   ,d8b,,I8 _  ,d8' ,d8,   ,d8b,,d8,_    _,d8     I8, `YbadP' 
P"Y8888P"`Y8P' "YY8P8P88P      Y8P"Y8888P"`Y8PI8 YY88888PP"Y8888P"`Y8P""Y8888PP88P     `Y8888P"Y888
                                              I8                                                   
                                              I8                                                   
                                              I8                                                   
                                              I8                                                   
                                              I8                                                   
                                              I8                                                   
 
+--- o8
 
                       oooo                                                    oooo                   
  ooooooo    oooooooo8  888  ooooo  ooooooo  ooooooooo     ooooooo    ooooooo   888ooooo   ooooooooo8 
  ooooo888  888ooooooo  888o888     ooooo888  888    888   ooooo888 888     888 888   888 888oooooo8  
888    888          888 8888 88o  888    888  888    888 888    888 888         888   888 888         
 88ooo88 8o 88oooooo88 o888o o888o 88ooo88 8o 888ooo88    88ooo88 8o  88ooo888 o888o o888o  88oooo888 
                                             o888                                                     
 
+--- octal
 
141 163 153 141 160 141 143 150 145 
 
+--- ogre
 
           _                          _          
  __ _ ___| | ____ _ _ __   __ _  ___| |__   ___ 
 / _` / __| |/ / _` | '_ \ / _` |/ __| '_ \ / _ \
| (_| \__ \   < (_| | |_) | (_| | (__| | | |  __/
 \__,_|___/_|\_\__,_| .__/ \__,_|\___|_| |_|\___|
                    |_|                          
 
+--- script
 
           _                          _         
          | |                        | |        
 __,   ,  | |   __,    _   __,   __  | |     _  
/  |  / \_|/_) /  |  |/ \_/  |  /    |/ \   |/  
\_/|_/ \/ | \_/\_/|_/|__/ \_/|_/\___/|   |_/|__/
                    /|                          
                    \|                          
 
+--- shadow
 
            |                           |          
  _` |  __| |  /  _` | __ \   _` |  __| __ \   _ \ 
 (   |\__ \   <  (   | |   | (   | (    | | |  __/ 
\__,_|____/_|\_\\__,_| .__/ \__,_|\___|_| |_|\___| 
                      _|                           
 
+--- slant
 
              __                          __       
  ____ ______/ /______ _____  ____ ______/ /_  ___ 
 / __ `/ ___/ //_/ __ `/ __ \/ __ `/ ___/ __ \/ _ \
/ /_/ (__  ) ,< / /_/ / /_/ / /_/ / /__/ / / /  __/
\__,_/____/_/|_|\__,_/ .___/\__,_/\___/_/ /_/\___/ 
                    /_/                            
 
+--- small
 
         _                      _        
 __ _ __| |____ _ _ __  __ _ __| |_  ___ 
/ _` (_-< / / _` | '_ \/ _` / _| ' \/ -_)
\__,_/__/_\_\__,_| .__/\__,_\__|_||_\___|
                 |_|                     
 
+--- smscript
 
                                       
 _,   ,  |)   _,       _,   _  |)    _ 
/ |  / \_|/) / |  |/\_/ |  /   |/\  |/ 
\/|_/ \/ | \/\/|_/|_/ \/|_/\__/|  |/|_/
                 (|                    
 
+--- smshadow
 
           |                       |         
  _` |(_-< | /  _` | _ \  _` |  _|   \   -_) 
\__,_|___/_\_\\__,_|.__/\__,_|\__|_| _|\___| 
                   _|                        
 
+--- smslant
 
           __                      __      
 ___ ____ / /_____ ____  ___ _____/ /  ___ 
/ _ `(_-</  '_/ _ `/ _ \/ _ `/ __/ _ \/ -_)
\_,_/___/_/\_\\_,_/ .__/\_,_/\__/_//_/\__/ 
                 /_/                       
 
+--- standard
 
           _                          _          
  __ _ ___| | ____ _ _ __   __ _  ___| |__   ___ 
 / _` / __| |/ / _` | '_ \ / _` |/ __| '_ \ / _ \
| (_| \__ \   < (_| | |_) | (_| | (__| | | |  __/
 \__,_|___/_|\_\__,_| .__/ \__,_|\___|_| |_|\___|
                    |_|                          
 
+--- term
 
askapache

That was generated using my Online Figlet ASCII Generator.

Introducing the Online Figlet ASCII Generator originally appeared on AskApache.com

The post Introducing the Online Figlet ASCII Generator appeared first on AskApache.

Generating AddDescription for all Files

$
0
0

AskApache.com

find . -type f -depth -print |xargs -iFF file FF|awk -F':' '{print $2}'|sed -e 's/ *(.*)$/AddDescription "1"/g'|sort|uniq
#!/bin/bash
 
sed -e 's/(application|audio|chemical|image|message|model|multipart|text|video|x-conference)/([^t]*)[t](.*)/1---2===3/g' ~/apache2/conf/mime.types > mime.types
sed -i '/---/!d;' mime.types
cat mime.types|tr -d 't' > mime2.types
sed -i 's/ / ./g' mime2.types
sed -i 's/(.*)---(.*)===(.*)/AddDescription "2 1" .3/g' mime2.types
rm mime.types && cat mime2.types && rm mime2.types
 
exit 0;

See Also:

  1. mod
#
# AddDescription allows you to place a short description after a file in
# server-generated indexes.  These are only displayed for FancyIndexed
# directories.
# Format: AddDescription "description" filename
#
AddDescription "3gpp video" .3gp
AddDescription "3gpp2 video" .3g2
AddDescription "andrew-inset application" .ez
AddDescription "atom+xml application" .atom
AddDescription "atomcat+xml application" .atomcat
AddDescription "atomsvc+xml application" .atomsvc
AddDescription "basic audio" .au .snd
AddDescription "bmp image" .bmp
AddDescription "calendar text" .ics .ifb
AddDescription "ccxml+xml application" .ccxml
AddDescription "cgm image" .cgm
AddDescription "css text" .css
AddDescription "csv text" .csv
AddDescription "davmount+xml application" .davmount
AddDescription "ecmascript application" .ecma
AddDescription "font-tdpfr application" .pfr
AddDescription "g3fax image" .g3
AddDescription "gif image" .gif
AddDescription "h261 video" .h261
AddDescription "h263 video" .h263
AddDescription "h264 video" .h264
AddDescription "html text" .html .htm
AddDescription "hyperstudio application" .stk
AddDescription "ief image" .ief
AddDescription "iges model" .igs .iges
AddDescription "javascript application" .js
AddDescription "jpeg image" .jpeg .jpg .jpe
AddDescription "jpeg video" .jpgv
AddDescription "jpm video" .jpm .jpgm
AddDescription "json application" .json
AddDescription "mac-binhex40 application" .hqx
AddDescription "mac-compactpro application" .cpt
AddDescription "marc application" .mrc
AddDescription "mathematica application" .ma .nb .mb
AddDescription "mathml+xml application" .mathml
AddDescription "mbox application" .mbox
AddDescription "mediaservercontrol+xml application" .mscml
AddDescription "mesh model" .msh .mesh .silo
AddDescription "midi audio" .mid .midi .kar .rmi
AddDescription "mj2 video" .mj2 .mjp2
AddDescription "mp4 application" .mp4s
AddDescription "mp4 audio" .mp4a
AddDescription "mp4 video" .mp4 .mp4v .mpg4
AddDescription "mpeg audio" .mpga .mp2 .mp2a .mp3 .m2a .m3a
AddDescription "mpeg video" .mpeg .mpg .mpe .m1v .m2v
AddDescription "msword application" .doc .dot
AddDescription "mxf application" .mxf
AddDescription "oda application" .oda
AddDescription "ogg application" .ogg
AddDescription "pdf application" .pdf
AddDescription "pgp-encrypted application" .pgp
AddDescription "pgp-signature application" .asc .sig
AddDescription "pics-rules application" .prf
AddDescription "pkcs10 application" .p10
AddDescription "pkcs7-mime application" .p7m .p7c
AddDescription "pkcs7-signature application" .p7s
AddDescription "pkix-cert application" .cer
AddDescription "pkix-crl application" .crl
AddDescription "pkix-pkipath application" .pkipath
AddDescription "pkixcmp application" .pki
AddDescription "plain text" .txt .text .conf .def .list .log .in
AddDescription "pls+xml application" .pls
AddDescription "png image" .png
AddDescription "postscript application" .ai .eps .ps
AddDescription "prs.btif image" .btif
AddDescription "prs.cww application" .cww
AddDescription "prs.lines.tag text" .dsc
AddDescription "quicktime video" .qt .mov
AddDescription "rdf+xml application" .rdf
AddDescription "reginfo+xml application" .rif
AddDescription "relax-ng-compact-syntax application" .rnc
AddDescription "resource-lists+xml application" .rl
AddDescription "rfc822 message" .eml .mime
AddDescription "richtext text" .rtx
AddDescription "rls-services+xml application" .rs
AddDescription "rsd+xml application" .rsd
AddDescription "rss+xml application" .rss
AddDescription "rtf application" .rtf
AddDescription "sbml+xml application" .sbml
AddDescription "scvp-cv-request application" .scq
AddDescription "scvp-cv-response application" .scs
AddDescription "scvp-vp-request application" .spq
AddDescription "scvp-vp-response application" .spp
AddDescription "sdp application" .sdp
AddDescription "set-payment-initiation application" .setpay
AddDescription "set-registration-initiation application" .setreg
AddDescription "sgml text" .sgml .sgm
AddDescription "shf+xml application" .shf
AddDescription "smil+xml application" .smi .smil
AddDescription "sparql-query application" .rq
AddDescription "sparql-results+xml application" .srx
AddDescription "srgs application" .gram
AddDescription "srgs+xml application" .grxml
AddDescription "ssml+xml application" .ssml
AddDescription "svg+xml image" .svg .svgz
AddDescription "tab-separated-values text" .tsv
AddDescription "tiff image" .tiff .tif
AddDescription "troff text" .t .tr .roff .man .me .ms
AddDescription "uri-list text" .uri .uris .urls
AddDescription "vnd.3gpp.pic-bw-large application" .plb
AddDescription "vnd.3gpp.pic-bw-small application" .psb
AddDescription "vnd.3gpp.pic-bw-var application" .pvb
AddDescription "vnd.3gpp2.tcap application" .tcap
AddDescription "vnd.3m.post-it-notes application" .pwn
AddDescription "vnd.accpac.simply.aso application" .aso
AddDescription "vnd.accpac.simply.imp application" .imp
AddDescription "vnd.acucobol application" .acu
AddDescription "vnd.acucorp application" .atc .acutc
AddDescription "vnd.adobe.photoshop image" .psd
AddDescription "vnd.adobe.xdp+xml application" .xdp
AddDescription "vnd.adobe.xfdf application" .xfdf
AddDescription "vnd.amiga.ami application" .ami
AddDescription "vnd.anser-web-certificate-issue-initiation application" .cii
AddDescription "vnd.anser-web-funds-transfer-initiation application" .fti
AddDescription "vnd.antix.game-component application" .atx
AddDescription "vnd.apple.installer+xml application" .mpkg
AddDescription "vnd.audiograph application" .aep
AddDescription "vnd.blueice.multipass application" .mpm
AddDescription "vnd.bmi application" .bmi
AddDescription "vnd.businessobjects application" .rep
AddDescription "vnd.chemdraw+xml application" .cdxml
AddDescription "vnd.chipnuts.karaoke-mmd application" .mmd
AddDescription "vnd.cinderella application" .cdy
AddDescription "vnd.claymore application" .cla
AddDescription "vnd.clonk.c4group application" .c4g .c4d .c4f .c4p .c4u
AddDescription "vnd.commonspace application" .csp .cst
AddDescription "vnd.contact.cmsg application" .cdbcmsg
AddDescription "vnd.cosmocaller application" .cmc
AddDescription "vnd.crick.clicker application" .clkx
AddDescription "vnd.crick.clicker.keyboard application" .clkk
AddDescription "vnd.crick.clicker.palette application" .clkp
AddDescription "vnd.crick.clicker.template application" .clkt
AddDescription "vnd.crick.clicker.wordbank application" .clkw
AddDescription "vnd.criticaltools.wbs+xml application" .wbs
AddDescription "vnd.ctc-posml application" .pml
AddDescription "vnd.cups-ppd application" .ppd
AddDescription "vnd.curl application" .curl
AddDescription "vnd.data-vision.rdz application" .rdz
AddDescription "vnd.denovo.fcselayout-link application" .fe_launch
AddDescription "vnd.digital-winds audio" .eol
AddDescription "vnd.djvu image" .djvu .djv
AddDescription "vnd.dna application" .dna
AddDescription "vnd.dolby.mlp application" .mlp
AddDescription "vnd.dpgraph application" .dpg
AddDescription "vnd.dreamfactory application" .dfac
AddDescription "vnd.dwf model" .dwf
AddDescription "vnd.dwg image" .dwg
AddDescription "vnd.dxf image" .dxf
AddDescription "vnd.ecowin.chart application" .mag
AddDescription "vnd.enliven application" .nml
AddDescription "vnd.epson.esf application" .esf
AddDescription "vnd.epson.msf application" .msf
AddDescription "vnd.epson.quickanime application" .qam
AddDescription "vnd.epson.salt application" .slt
AddDescription "vnd.epson.ssf application" .ssf
AddDescription "vnd.eszigno3+xml application" .es3 .et3
AddDescription "vnd.ezpix-album application" .ez2
AddDescription "vnd.ezpix-package application" .ez3
AddDescription "vnd.fastbidsheet image" .fbs
AddDescription "vnd.fdf application" .fdf
AddDescription "vnd.flographit application" .gph
AddDescription "vnd.fluxtime.clip application" .ftc
AddDescription "vnd.fly text" .fly
AddDescription "vnd.fmi.flexstor text" .flx
AddDescription "vnd.fpx image" .fpx
AddDescription "vnd.framemaker application" .fm .frame .maker
AddDescription "vnd.frogans.fnc application" .fnc
AddDescription "vnd.frogans.ltf application" .ltf
AddDescription "vnd.fsc.weblaunch application" .fsc
AddDescription "vnd.fst image" .fst
AddDescription "vnd.fujitsu.oasys application" .oas
AddDescription "vnd.fujitsu.oasys2 application" .oa2
AddDescription "vnd.fujitsu.oasys3 application" .oa3
AddDescription "vnd.fujitsu.oasysgp application" .fg5
AddDescription "vnd.fujitsu.oasysprs application" .bh2
AddDescription "vnd.fujixerox.ddd application" .ddd
AddDescription "vnd.fujixerox.docuworks application" .xdw
AddDescription "vnd.fujixerox.docuworks.binder application" .xbd
AddDescription "vnd.fujixerox.edmics-mmr image" .mmr
AddDescription "vnd.fujixerox.edmics-rlc image" .rlc
AddDescription "vnd.fuzzysheet application" .fzs
AddDescription "vnd.fvt video" .fvt
AddDescription "vnd.gdl model" .gdl
AddDescription "vnd.genomatix.tuxedo application" .txd
AddDescription "vnd.google-earth.kml+xml application" .kml
AddDescription "vnd.google-earth.kmz application" .kmz
AddDescription "vnd.grafeq application" .gqf .gqs
AddDescription "vnd.groove-account application" .gac
AddDescription "vnd.groove-help application" .ghf
AddDescription "vnd.groove-identity-message application" .gim
AddDescription "vnd.groove-injector application" .grv
AddDescription "vnd.groove-tool-message application" .gtm
AddDescription "vnd.groove-tool-template application" .tpl
AddDescription "vnd.groove-vcard application" .vcg
AddDescription "vnd.gtw model" .gtw
AddDescription "vnd.handheld-entertainment+xml application" .zmm
AddDescription "vnd.hbci application" .hbci
AddDescription "vnd.hhe.lesson-player application" .les
AddDescription "vnd.hp-hpgl application" .hpgl
AddDescription "vnd.hp-hpid application" .hpid
AddDescription "vnd.hp-hps application" .hps
AddDescription "vnd.hp-jlyt application" .jlt
AddDescription "vnd.hp-pcl application" .pcl
AddDescription "vnd.hp-pclxl application" .pclxl
AddDescription "vnd.hzn-3d-crossword application" .x3d
AddDescription "vnd.ibm.minipay application" .mpy
AddDescription "vnd.ibm.modcap application" .afp .listafp .list3820
AddDescription "vnd.ibm.rights-management application" .irm
AddDescription "vnd.ibm.secure-container application" .sc
AddDescription "vnd.igloader application" .igl
AddDescription "vnd.immervision-ivp application" .ivp
AddDescription "vnd.immervision-ivu application" .ivu
AddDescription "vnd.in3d.3dml text" .3dml
AddDescription "vnd.in3d.spot text" .spot
AddDescription "vnd.intercon.formnet application" .xpw .xpx
AddDescription "vnd.intu.qbo application" .qbo
AddDescription "vnd.intu.qfx application" .qfx
AddDescription "vnd.ipunplugged.rcprofile application" .rcprofile
AddDescription "vnd.irepository.package+xml application" .irp
AddDescription "vnd.is-xpr application" .xpr
AddDescription "vnd.jam application" .jam
AddDescription "vnd.jcp.javame.midlet-rms application" .rms
AddDescription "vnd.jisp application" .jisp
AddDescription "vnd.joost.joda-archive application" .joda
AddDescription "vnd.kahootz application" .ktz .ktr
AddDescription "vnd.kde.karbon application" .karbon
AddDescription "vnd.kde.kchart application" .chrt
AddDescription "vnd.kde.kformula application" .kfo
AddDescription "vnd.kde.kivio application" .flw
AddDescription "vnd.kde.kontour application" .kon
AddDescription "vnd.kde.kpresenter application" .kpr .kpt
AddDescription "vnd.kde.kspread application" .ksp
AddDescription "vnd.kde.kword application" .kwd .kwt
AddDescription "vnd.kenameaapp application" .htke
AddDescription "vnd.kidspiration application" .kia
AddDescription "vnd.kinar application" .kne .knp
AddDescription "vnd.koan application" .skp .skd .skt .skm
AddDescription "vnd.llamagraphics.life-balance.desktop application" .lbd
AddDescription "vnd.llamagraphics.life-balance.exchange+xml application" .lbe
AddDescription "vnd.lotus-1-2-3 application" .123
AddDescription "vnd.lotus-approach application" .apr
AddDescription "vnd.lotus-freelance application" .pre
AddDescription "vnd.lotus-notes application" .nsf
AddDescription "vnd.lotus-organizer application" .org
AddDescription "vnd.lotus-screencam application" .scm
AddDescription "vnd.lotus-wordpro application" .lwp
AddDescription "vnd.lucent.voice audio" .lvp
AddDescription "vnd.macports.portpkg application" .portpkg
AddDescription "vnd.mcd application" .mcd
AddDescription "vnd.medcalcdata application" .mc1
AddDescription "vnd.mediastation.cdkey application" .cdkey
AddDescription "vnd.mfer application" .mwf
AddDescription "vnd.mfmp application" .mfm
AddDescription "vnd.micrografx.flo application" .flo
AddDescription "vnd.micrografx.igx application" .igx
AddDescription "vnd.mif application" .mif
AddDescription "vnd.mobius.daf application" .daf
AddDescription "vnd.mobius.dis application" .dis
AddDescription "vnd.mobius.mbk application" .mbk
AddDescription "vnd.mobius.mqy application" .mqy
AddDescription "vnd.mobius.msl application" .msl
AddDescription "vnd.mobius.plc application" .plc
AddDescription "vnd.mobius.txf application" .txf
AddDescription "vnd.mophun.application application" .mpn
AddDescription "vnd.mophun.certificate application" .mpc
AddDescription "vnd.mozilla.xul+xml application" .xul
AddDescription "vnd.mpegurl video" .mxu .m4u
AddDescription "vnd.ms-artgalry application" .cil
AddDescription "vnd.ms-asf application" .asf
AddDescription "vnd.ms-cab-compressed application" .cab
AddDescription "vnd.ms-excel application" .xls .xlm .xla .xlc .xlt .xlw
AddDescription "vnd.ms-fontobject application" .eot
AddDescription "vnd.ms-htmlhelp application" .chm
AddDescription "vnd.ms-ims application" .ims
AddDescription "vnd.ms-lrm application" .lrm
AddDescription "vnd.ms-modi image" .mdi
AddDescription "vnd.ms-powerpoint application" .ppt .pps .pot
AddDescription "vnd.ms-project application" .mpp .mpt
AddDescription "vnd.ms-works application" .wps .wks .wcm .wdb
AddDescription "vnd.ms-wpl application" .wpl
AddDescription "vnd.ms-xpsdocument application" .xps
AddDescription "vnd.mseq application" .mseq
AddDescription "vnd.mts model" .mts
AddDescription "vnd.musician application" .mus
AddDescription "vnd.muvee.style application" .msty
AddDescription "vnd.net-fpx image" .npx
AddDescription "vnd.neurolanguage.nlu application" .nlu
AddDescription "vnd.noblenet-directory application" .nnd
AddDescription "vnd.noblenet-sealer application" .nns
AddDescription "vnd.noblenet-web application" .nnw
AddDescription "vnd.nokia.n-gage.data application" .ngdat
AddDescription "vnd.nokia.n-gage.symbian.install application" .n-gage
AddDescription "vnd.nokia.radio-preset application" .rpst
AddDescription "vnd.nokia.radio-presets application" .rpss
AddDescription "vnd.novadigm.edm application" .edm
AddDescription "vnd.novadigm.edx application" .edx
AddDescription "vnd.novadigm.ext application" .ext
AddDescription "vnd.nuera.ecelp4800 audio" .ecelp4800
AddDescription "vnd.nuera.ecelp7470 audio" .ecelp7470
AddDescription "vnd.nuera.ecelp9600 audio" .ecelp9600
AddDescription "vnd.oasis.opendocument.chart application" .odc
AddDescription "vnd.oasis.opendocument.chart-template application" .otc
AddDescription "vnd.oasis.opendocument.formula application" .odf
AddDescription "vnd.oasis.opendocument.formula-template application" .otf
AddDescription "vnd.oasis.opendocument.graphics application" .odg
AddDescription "vnd.oasis.opendocument.graphics-template application" .otg
AddDescription "vnd.oasis.opendocument.image application" .odi
AddDescription "vnd.oasis.opendocument.image-template application" .oti
AddDescription "vnd.oasis.opendocument.presentation application" .odp
AddDescription "vnd.oasis.opendocument.spreadsheet application" .ods
AddDescription "vnd.oasis.opendocument.spreadsheet-template application" .ots
AddDescription "vnd.oasis.opendocument.text application" .odt
AddDescription "vnd.oasis.opendocument.text-master application" .otm
AddDescription "vnd.oasis.opendocument.text-template application" .ott
AddDescription "vnd.oasis.opendocument.text-web application" .oth
AddDescription "vnd.olpc-sugar application" .xo
AddDescription "vnd.oma.dd2+xml application" .dd2
AddDescription "vnd.openofficeorg.extension application" .oxt
AddDescription "vnd.osgi.dp application" .dp
AddDescription "vnd.palm application" .prc .pdb .pqa .oprc
AddDescription "vnd.pg.format application" .str
AddDescription "vnd.pg.osasli application" .ei6
AddDescription "vnd.picsel application" .efif
AddDescription "vnd.pocketlearn application" .plf
AddDescription "vnd.powerbuilder6 application" .pbd
AddDescription "vnd.previewsystems.box application" .box
AddDescription "vnd.proteus.magazine application" .mgz
AddDescription "vnd.publishare-delta-tree application" .qps
AddDescription "vnd.pvi.ptid1 application" .ptid
AddDescription "vnd.quark.quarkxpress application" .qxd .qxt .qwd .qwt .qxl .qxb
AddDescription "vnd.recordare.musicxml application" .mxl
AddDescription "vnd.rn-realmedia application" .rm
AddDescription "vnd.seemail application" .see
AddDescription "vnd.sema application" .sema
AddDescription "vnd.semd application" .semd
AddDescription "vnd.semf application" .semf
AddDescription "vnd.shana.informed.formdata application" .ifm
AddDescription "vnd.shana.informed.formtemplate application" .itp
AddDescription "vnd.shana.informed.interchange application" .iif
AddDescription "vnd.shana.informed.package application" .ipk
AddDescription "vnd.simtech-mindmapper application" .twd .twds
AddDescription "vnd.smaf application" .mmf
AddDescription "vnd.solent.sdkm+xml application" .sdkm .sdkd
AddDescription "vnd.spotfire.dxp application" .dxp
AddDescription "vnd.spotfire.sfs application" .sfs
AddDescription "vnd.sun.j2me.app-descriptor text" .jad
AddDescription "vnd.sus-calendar application" .sus .susp
AddDescription "vnd.svd application" .svd
AddDescription "vnd.syncml+xml application" .xsm
AddDescription "vnd.syncml.dm+wbxml application" .bdm
AddDescription "vnd.syncml.dm+xml application" .xdm
AddDescription "vnd.tao.intent-module-archive application" .tao
AddDescription "vnd.tmobile-livetv application" .tmo
AddDescription "vnd.trid.tpt application" .tpt
AddDescription "vnd.triscape.mxs application" .mxs
AddDescription "vnd.trueapp application" .tra
AddDescription "vnd.ufdl application" .ufd .ufdl
AddDescription "vnd.uiq.theme application" .utz
AddDescription "vnd.umajin application" .umj
AddDescription "vnd.unity application" .unityweb
AddDescription "vnd.uoml+xml application" .uoml
AddDescription "vnd.vcx application" .vcx
AddDescription "vnd.visio application" .vsd .vst .vss .vsw
AddDescription "vnd.visionary application" .vis
AddDescription "vnd.vivo video" .viv
AddDescription "vnd.vsf application" .vsf
AddDescription "vnd.vtu model" .vtu
AddDescription "vnd.wap.wbmp image" .wbmp
AddDescription "vnd.wap.wbxml application" .wbxml
AddDescription "vnd.wap.wml text" .wml
AddDescription "vnd.wap.wmlc application" .wmlc
AddDescription "vnd.wap.wmlscript text" .wmls
AddDescription "vnd.wap.wmlscriptc application" .wmlsc
AddDescription "vnd.webturbo application" .wtb
AddDescription "vnd.wordperfect application" .wpd
AddDescription "vnd.wqd application" .wqd
AddDescription "vnd.wt.stf application" .stf
AddDescription "vnd.xara application" .xar
AddDescription "vnd.xfdl application" .xfdl
AddDescription "vnd.xiff image" .xif
AddDescription "vnd.yamaha.hv-dic application" .hvd
AddDescription "vnd.yamaha.hv-script application" .hvs
AddDescription "vnd.yamaha.hv-voice application" .hvp
AddDescription "vnd.yamaha.smaf-audio application" .saf
AddDescription "vnd.yamaha.smaf-phrase application" .spf
AddDescription "vnd.yellowriver-custom-menu application" .cmp
AddDescription "vnd.zzazz.deck+xml application" .zaz
AddDescription "voicexml+xml application" .vxml
AddDescription "vrml model" .wrl .vrml
AddDescription "wav audio" .wav
AddDescription "winhlp application" .hlp
AddDescription "wsdl+xml application" .wsdl
AddDescription "wspolicy+xml application" .wspolicy
AddDescription "x-ace-compressed application" .ace
AddDescription "x-aiff audio" .aif .aiff .aifc
AddDescription "x-asm text" .s .asm
AddDescription "x-bcpio application" .bcpio
AddDescription "x-bittorrent application" .torrent
AddDescription "x-bzip application" .bz
AddDescription "x-bzip2 application" .bz2 .boz
AddDescription "x-c text" .c .cc .cxx .cpp .h .hh .dic
AddDescription "x-cdlink application" .vcd
AddDescription "x-cdx chemical" .cdx
AddDescription "x-chat application" .chat
AddDescription "x-chess-pgn application" .pgn
AddDescription "x-cif chemical" .cif
AddDescription "x-cmdf chemical" .cmdf
AddDescription "x-cml chemical" .cml
AddDescription "x-cmu-raster image" .ras
AddDescription "x-cmx image" .cmx
AddDescription "x-cooltalk x-conference" .ice
AddDescription "x-cpio application" .cpio
AddDescription "x-csh application" .csh
AddDescription "x-csml chemical" .csml
AddDescription "x-director application" .dcr .dir .dxr .fgd
AddDescription "x-dvi application" .dvi
AddDescription "x-fli video" .fli
AddDescription "x-fortran text" .f .for .f77 .f90
AddDescription "x-futuresplash application" .spl
AddDescription "x-gtar application" .gtar
AddDescription "x-hdf application" .hdf
AddDescription "x-icon image" .ico
AddDescription "x-java-source text" .java
AddDescription "x-latex application" .latex
AddDescription "x-mpegurl audio" .m3u
AddDescription "x-ms-asf video" .asf .asx
AddDescription "x-ms-wax audio" .wax
AddDescription "x-ms-wm video" .wm
AddDescription "x-ms-wma audio" .wma
AddDescription "x-ms-wmd application" .wmd
AddDescription "x-ms-wmv video" .wmv
AddDescription "x-ms-wmx video" .wmx
AddDescription "x-ms-wmz application" .wmz
AddDescription "x-ms-wvx video" .wvx
AddDescription "x-msaccess application" .mdb
AddDescription "x-msbinder application" .obd
AddDescription "x-mscardfile application" .crd
AddDescription "x-msclip application" .clp
AddDescription "x-msdownload application" .exe .dll .com .bat .msi
AddDescription "x-msmediaview application" .mvb .m13 .m14
AddDescription "x-msmetafile application" .wmf
AddDescription "x-msmoney application" .mny
AddDescription "x-mspublisher application" .pub
AddDescription "x-msschedule application" .scd
AddDescription "x-msterminal application" .trm
AddDescription "x-msvideo video" .avi
AddDescription "x-mswrite application" .wri
AddDescription "x-netcdf application" .nc .cdf
AddDescription "x-pascal text" .p .pas
AddDescription "x-pcx image" .pcx
AddDescription "x-pdb chemical" .pdb
AddDescription "x-pict image" .pic .pct
AddDescription "x-pkcs12 application" .p12 .pfx
AddDescription "x-pkcs7-certificates application" .p7b .spc
AddDescription "x-pkcs7-certreqresp application" .p7r
AddDescription "x-pn-realaudio audio" .ram .ra
AddDescription "x-pn-realaudio-plugin audio" .rmp
AddDescription "x-portable-anymap image" .pnm
AddDescription "x-portable-bitmap image" .pbm
AddDescription "x-portable-graymap image" .pgm
AddDescription "x-portable-pixmap image" .ppm
AddDescription "x-rar-compressed application" .rar
AddDescription "x-rgb image" .rgb
AddDescription "x-setext text" .etx
AddDescription "x-sgi-movie video" .movie
AddDescription "x-sh application" .sh
AddDescription "x-shar application" .shar
AddDescription "x-shockwave-flash application" .swf
AddDescription "x-stuffit application" .sit
AddDescription "x-stuffitx application" .sitx
AddDescription "x-sv4cpio application" .sv4cpio
AddDescription "x-sv4crc application" .sv4crc
AddDescription "x-tar application" .tar
AddDescription "x-tcl application" .tcl
AddDescription "x-tex application" .tex
AddDescription "x-texinfo application" .texinfo .texi
AddDescription "x-ustar application" .ustar
AddDescription "x-uuencode text" .uu
AddDescription "x-vcalendar text" .vcs
AddDescription "x-vcard text" .vcf
AddDescription "x-wais-source application" .src
AddDescription "x-wav audio" .wav
AddDescription "x-x509-ca-cert application" .der .crt
AddDescription "x-xbitmap image" .xbm
AddDescription "x-xpixmap image" .xpm
AddDescription "x-xwindowdump image" .xwd
AddDescription "x-xyz chemical" .xyz
AddDescription "xenc+xml application" .xenc
AddDescription "xhtml+xml application" .xhtml .xht
AddDescription "xml application" .xml .xsl
AddDescription "xml-dtd application" .dtd
AddDescription "xop+xml application" .xop
AddDescription "xslt+xml application" .xslt
AddDescription "xspf+xml application" .xspf
AddDescription "xv+xml application" .mxml .xhvml .xvml .xvm
AddDescription "zip application" .zip

Generating AddDescription for all Files originally appeared on AskApache.com

The post Generating AddDescription for all Files appeared first on AskApache.


Google Web Fonts for Programming and Code

$
0
0

AskApache.com

Ok, so on a site like this one, there is a tremendous amount of 'code' that I share styled with CSS fonts and using the pre, code, var, tt, samp, and kbd html tags. When using a program like VIM to view/write the code it will be shown with a beautiful font and even excellent colors. So how then can a website like this be configured in such a way that a program called a 'browser' such as Firefox or Chrome would also show the code beautifully?

Here is a screenshot of my VIM in action. (It only looks this good thanks to my crazy awesome .vimrc)

Screenshot showing Local Code in Vim

So what is the solution? How to enable beautiful code fonts?
Google Web Fonts Logo

Google Web Fonts

Yet another killer free product provided by Google that is basically a font file server, an A+ product! It will serve different versions of a font depending on the user-agent making the request. Brilliant!

Select Fonts

Select Fonts and see Page Speed



You can use the google webfonts wizard to select and add any fonts.
Then grab the code to add them to your site. The webfonts wizard will show you 3 different methods for adding the fonts to your site. I recommend adding it using the <link method the way I am doing it on this site.

3 Options for adding Fonts to Site

Here is the one I use:

<link rel="stylesheet" type="text/css" media="all" href="//fonts.googleapis.com/css?family=Open+Sans:400,400italic,600,600italic,700,700italic,800,800italic|Inconsolata|Source+Code+Pro|Droid+Sans+Mono|Droid+Sans:400|Share+Tech+Mono|Ubuntu+Mono:400,400italic,700,700italic|Anonymous+Pro&effect=3d" />

Caveats and Recommendations

  1. Change the href= from https:// to // to prevent mixed ssl warnings.
  2. Add at the top of your <head> above your other css so that the fonts will be available as soon as possible for the page rendering.

CSS for Showing Code

Here are the 2 css rules I use.

kbd, samp, tt, pre, code, var, .code, pre {
    font-family: "Ubuntu Mono","Droid Sans Mono",Inconsolata,Courier,monospace;
    font-style: normal;
    font-variant: normal;
    font-weight: normal;
    word-wrap: break-word;
}
 
pre {
    background: none repeat scroll 0 0 #F3F5F7;
    border-color: #AAAAAA #AAAAAA #CCCCCC;
    border-image: none;
    border-style: solid;
    border-width: 1px;
    color: #000000;
    letter-spacing: normal;
    margin: 1em auto 2em 0;
    max-width: 97%;
    min-width: 50%;
    overflow: auto;
    padding: 0.5em 0.1em 0.5em 1em;
    text-transform: none;
    white-space: pre-wrap;
    word-spacing: normal;
}

Live Examples

Experiment with different browsers. FYI, the ascii "askapache" in all the below pre elements was created with my free online ascii art tool. Check it out! Also, each of the below examples use inline css to specify the font-family, and the text after Queen and Jack is appended with javascript (just fyi in case you do a view source).

Inconsolata

Grumpy wizards make toxic brew for the evil Queen and Jack

Source Code Pro

Grumpy wizards make toxic brew for the evil Queen and Jack

Droid Sans Mono

Grumpy wizards make toxic brew for the evil Queen and Jack

Share Tech Mono

Grumpy wizards make toxic brew for the evil Queen and Jack

Ubuntu Mono

Grumpy wizards make toxic brew for the evil Queen and Jack

Anonymous Pro

Grumpy wizards make toxic brew for the evil Queen and Jack

Consolas

Grumpy wizards make toxic brew for the evil Queen and Jack

Lucida Console

Grumpy wizards make toxic brew for the evil Queen and Jack

Droid Sans Mono

Grumpy wizards make toxic brew for the evil Queen and Jack

Anonymous Pro

Grumpy wizards make toxic brew for the evil Queen and Jack

BTW, the Grumpy Wizards sentence is called a pangram or a holalphabetic sentence because it contains all the letters of the alphabet. Of course google developers would be that smart to use a pangram for the wizard.

CSS: white-space

The CSS specification defines the white-space property in 16.6 White space.

The white-space property declares how white space inside the element is handled.

Values normal | pre | nowrap | pre-wrap | pre-line | inherit
Initial value normal
Applies to All elements
Inherited Yes
  • normal
    This value directs user agents to collapse sequences of white space, and break lines as necessary to fill line boxes.
  • pre
    This value prevents user agents from collapsing sequences of white space. Lines are only broken at newlines in the source, or at occurrences of "\A" in generated content.
  • nowrap
    This value collapses white space as for 'normal', but suppresses line breaks within text.
  • pre-wrap
    This value prevents user agents from collapsing sequences of white space. Lines are broken at newlines in the source, at occurrences of "\A" in generated content, and as necessary to fill line boxes.
  • pre-line
    This value directs user agents to collapse sequences of white space. Lines are broken at newlines in the source, at occurrences of "\A" in generated content, and as necessary to fill line boxes.
  • inherit
    Takes the same specified value as the property for the element's parent.

More Info and Software

Google Web Fonts for Programming and Code originally appeared on AskApache.com

The post Google Web Fonts for Programming and Code appeared first on AskApache.

RewriteCond Cheatsheet

$
0
0

AskApache.com

Request to http://www.askapache.com/cg/rewrite-test/?catch=caught&this=that

RewriteCond %{THE_REQUEST} = GET /cgi-bin/php/pro/rewrite-test/?catch=caught&this=that HTTP/1.1
RewriteCond %{REQUEST_URI} = /cg/rewrite-test/?catch=caught&this=that
RewriteCond %{QUERY_STRING} = catch=caught&this=that
RewriteCond %{HTTP_HOST} = www.askapache.com
RewriteCond %{HTTP_USER_AGENT} = Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0
RewriteCond %{REMOTE_ADDR} = 8.8.8.8

RewriteCond %{AUTH_TYPE} = Digest
RewriteCond %{DOCUMENT_ROOT} = /h/ah/sites/askapache.com/htdocs
RewriteCond %{GATEWAY_INTERFACE} = CGI/1.1

RewriteCond %{HTTP_ACCEPT} = text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
RewriteCond %{HTTP_ACCEPT_ENCODING} = gzip, deflate
RewriteCond %{HTTP_ACCEPT_LANGUAGE} = en-us,en;q=0.5
RewriteCond %{HTTP_AUTHORIZATION} = Digest username="digadmin", realm="DA BOSS", nonce="lCVPJajA=f199ddfa972f92178d", uri="/cg/rewrite-test/?catch=caught&this=that", algorithm=MD5, response="e41b00258297d651a6", qop=auth, nc=00008, cnonce="169237"
RewriteCond %{HTTP_CONNECTION} = keep-alive
RewriteCond %{HTTP_HOST} = www.askapache.com
RewriteCond %{HTTP_UNIQUE_ID} = URxwkNBWnsAAAF0rGjsAAAAd
RewriteCond %{HTTP_USER_AGENT} = Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0
RewriteCond %{HTTP_COOKIE} = __utmc=110037338; __utmb=110037338.14.10.1360812961

RewriteCond %{TIME} = 20130214001610
RewriteCond %{TIME_DAY} = 14
RewriteCond %{TIME_HOUR} = 00
RewriteCond %{TIME_MIN} = 16
RewriteCond %{TIME_MON} = 02
RewriteCond %{TIME_SEC} = 10
RewriteCond %{TIME_WDAY} = 4
RewriteCond %{TIME_YEAR} = 2013

RewriteCond %{PATH} = /bin:/usr/bin
RewriteCond %{PHPRC} = /h/ah/sites/askapache.com/inc
RewriteCond %{PHP_AUTH_DIGEST} = username="digadmin", realm="DA BOSS", nonce="lCVPJajA=f199ddfa972f92178d", uri="/cg/rewrite-test/?catch=caught&this=that", algorithm=MD5, response="e41b00258297d651a6", qop=auth, nc=00008, cnonce="169237"
RewriteCond %{PHP_SELF} = /cg/rewrite-test/index.php
RewriteCond %{REDIRECT_STATUS} = 200

RewriteCond %{REMOTE_ADDR} = 8.8.8.8
RewriteCond %{REMOTE_PORT} = 54853
RewriteCond %{REMOTE_USER} = digadmin

RewriteCond %{REQUEST_METHOD} = GET
RewriteCond %{REQUEST_PROTOCOL} = HTTP/1.1
RewriteCond %{REQUEST_TIME} = 1360818320
RewriteCond %{REQUEST_TIME_FLOAT} = 1360818320.6224
RewriteCond %{REQUEST_URI} = /cg/rewrite-test/?catch=caught&this=that
RewriteCond %{REQUEST_FILENAME} = /h/ah/sites/askapache.com/cg/rewrite-test/index.php

RewriteCond %{SCRIPT_FILENAME} = /h/ah/sites/askapache.com/cg/rewrite-test/index.php
RewriteCond %{SCRIPT_NAME} = /cg/rewrite-test/index.php

RewriteCond %{SERVER_ADDR} = 208.86.158.195
RewriteCond %{SERVER_ADMIN} = webmaster@askapache.com
RewriteCond %{SERVER_NAME} = www.askapache.com
RewriteCond %{SERVER_PORT} = 80
RewriteCond %{SERVER_PROTOCOL} = HTTP/1.1
RewriteCond %{SERVER_SIGNATURE} = <address>Apache Server at www.askapache.com Port 80</address>
RewriteCond %{SERVER_SOFTWARE} = Apache
RewriteCond %{UNIQUE_ID} = URxwkNBWnsAAAF0rGjsAAAAd

RewriteCond Cheatsheet originally appeared on AskApache.com

The post RewriteCond Cheatsheet appeared first on AskApache.

phpMyAdmin Shortcuts with .htaccess

$
0
0

AskApache.com

phpMyAdmin Shortcuts with .htaccess

Can I access directly to database or table pages?

Yes. Out of the box, you can use URL like http://server/phpMyAdmin/index.php?server=X&db=database&table=table&target=script. For server you use the server number which refers to the order of the server paragraph in config.inc.php. Table and script parts are optional.

If you want http://server/phpMyAdmin/database[/table][/script] URL, you need to do some configuration. Following lines apply only for Apache web server. First make sure, that you have enabled some features within global configuration. You need Options FollowSymLinks and AllowOverride FileInfo enabled for directory where phpMyAdmin is installed and you need mod_rewrite to be enabled. Then you just need to create following .htaccess file in root folder of phpMyAdmin installation (don’t forget to change directory name inside of it):

RewriteEngine On
RewriteBase /path_to_phpMyAdmin
RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([a-z_]+\.php)$ index.php?db=$1&table=$2&target=$3 [R]
RewriteRule ^([a-zA-Z0-9_]+)/([a-z_]+\.php)$ index.php?db=$1&target=$2 [R]
RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)$ index.php?db=$1&table=$2 [R]
RewriteRule ^([a-zA-Z0-9_]+)$ index.php?db=$1 [R]

My version

Instead of that, use this version. Just stick in the .htaccess file in the phpMyAdmin directory.

RewriteEngine On
RewriteBase /
 
RewriteRule ^index\.php$ - [L]
 
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule .* - [S=4]
 
RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/([a-z_]+\.php)$ /index.php?db=$1&table=$2&target=$3 [R]
RewriteRule ^([a-zA-Z0-9_]+)/([a-z_]+\.php)$ /index.php?db=$1&target=$2 [R]
RewriteRule ^([a-zA-Z0-9_]+)/([a-zA-Z0-9_]+)/?$ /index.php?db=$1&table=$2 [R]
RewriteRule ^([a-zA-Z0-9_]+)/?$ /index.php?db=$1 [R]

See Also

phpMyAdmin Shortcuts with .htaccess originally appeared on AskApache.com

The post phpMyAdmin Shortcuts with .htaccess appeared first on AskApache.

Alternate robots.txt files with Htaccess

$
0
0

AskApache.com

Alternate robots.txt files with HtaccessSo here's the basic idea: There are 2 sites, a development site and a live site. They are essentially mirrors of each other in terms of they have the same files. You need to disallow all search engine robots from indexing and crawling the development site, while allowing full crawling of your live site. Htaccess to the rescue!

Create a robots-off.txt

You already should have a robots.txt file, now you just need to create a robots-off.txt file in the same directory as the robots.txt file. This blocks all legitimate search engines.

User-agent: *
Disallow: /

Htaccess Rewrite for Alternate robots.txt

The below code is simple! It just checks the HTTP_HOST to see if it starts with "development", and if so (development.site.com) it internally rewrites (not redirects) requests for /robots.txt to /robots-off.txt

###
### Alt robots.txt ala askapache.com/htaccess/alternate-robots-txt-rewrite.html
###
RewriteCond %{HTTP_HOST} ^development.*$ [NC]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /.*robots\.txt.*\ HTTP/ [NC]
RewriteRule ^robots\.txt /robots-off.txt [NC,L]

Alternate robots.txt files with Htaccess originally appeared on AskApache.com

The post Alternate robots.txt files with Htaccess appeared first on AskApache.

Share a Mouse and Keyboard between Windows and Linux

$
0
0

AskApache.com

Share a Mouse and Keyboard between Windows and LinuxSynergy lets you easily share your mouse and keyboard between multiple computers on your desk, and it's Free and Open Source. Just move your mouse off the edge of one computer's screen on to another. You can even share all of your clipboards. All you need is a network connection. Synergy is cross-platform (works on Windows, Mac OS X and Linux).

Share a Mouse and Keyboard between Windows and Linux

Synergy Server and Client

In synergy, the computer with keyboard and mouse you want to share is called server. I choose whichever computer has the best keyboard software as the server. In this case a Windows 8 machine is the server.

Now I can add as many clients as I want which will connect to the Windows 8 server. I like to have Macs and Linux boxes run the client.

Local Hosts Setup

First determine the IP addresses and host names for each machine you want to use with synergy and make sure each has a correct entry in each machines hosts file.

Hosts File Locations

192.168.1.220      alienlinux.localdomain         alienlinux
192.168.1.240      win8devil.localdomain          win8devil
Note: Check that the clients can reach each other by pinging both the IP, the alias (alienlinux) and the FQDN (alienlinux.localdomain).

Starting Synergy Client on Linux

The place that makes the most sense to start the synergy client is in your $HOME/.xinitrc file. That file is run by X on startup. You should stick this above the part of the file where the window manager is execed. Like above 'exec kde4'.

This uses the pidof command to test if synergyc is already running. If it is not already running it starts synergyc in the background.

/bin/pidof synergyc &>/dev/null || ( ( /usr/bin/synergyc -f --debug ERROR --name alienlinux --restart win8devil:24800 ) & )

Configuration for Windows Server

synergy.sgc

section: screens
  win8devil:
    halfDuplexCapsLock = false
    halfDuplexNumLock = false
    halfDuplexScrollLock = false
    xtestIsXineramaUnaware = false
    switchCornerSize = 20
  alienlinux:
    halfDuplexCapsLock = false
    halfDuplexNumLock = false
    halfDuplexScrollLock = false
    xtestIsXineramaUnaware = false
    switchCornerSize = 20
end
 
section: aliases
  win8devil:
    win8devil.localdomain
  alienlinux:
    alienlinux.localdomain
end
 
section: links
  win8devil:
    left = alienlinux
  alienlinux:
    right = win8devil
end
 
section: options
  heartbeat = 5000
  relativeMouseMoves = false
  screenSaverSync = false
  win32KeepForeground = false
  switchCorners = none 
  switchCornerSize = 0
end

Synergy Links

Share a Mouse and Keyboard between Windows and Linux originally appeared on AskApache.com

The post Share a Mouse and Keyboard between Windows and Linux appeared first on AskApache.

Awesome WireLess Bluetooth Headset

$
0
0

AskApache.com



This impressive device will help you talk that talk -Rihanna.

100% no affiliation, just a simple google chat review. old school style

Awesome WireLess Bluetooth Headset

Awesome WireLess Bluetooth Headset

PC/iphone/skype/gchat/google meetup/gotomeeting headset

First impression:I got mine a couple days ago and it is almost flawless. It has a builtin siri-like voice commands.. comes with 3 different charges.. connected to both my iphone and my pc completely in about 30 seconds with no setup..

Second impression: ya it also has siri capabilities.. volume is really really good... lasts 7 hrs.. works on either ear.. install was 10 seconds to pair to my phone and pc

  • The range from my computer is about 100 ft, but after a 2 walls its more like 55.
  • Sound quality great, music from windows media player, pandora, iphone, etc.
  • And it's comfy, can barely feel it, you can jog with it.

I haven't been this impressed with a product since my iphone (and my new TI calculator). And I'm glad since it was $200

Plantronics Voyager Legend UC

Official Plantronics Site: Voyager Legend UC - $199.95

Know of Anything Better?

Please share any tips!

Talk that Talk

Awesome WireLess Bluetooth Headset originally appeared on AskApache.com

The post Awesome WireLess Bluetooth Headset appeared first on AskApache.

Speed Up init_connect in my.cnf for UTF8

$
0
0

AskApache.com

Most info on the Net says to do the below. So I wanted to combine those into just 1 statement instead of 2.

init-connect='SET NAMES utf8'
init_connect='SET CHARACTER SET=utf-8'

Combining init_connect

Add to your /etc/my.cnf

[mysqld]
init_connect='SET collation_connection = utf8_general_ci,NAMES utf8'
character-set-server = utf8
collation-server = utf8_general_ci

You can change the default server character set and collation with the --character-set-server and --collation-server options when you start the server. The collation must be a legal collation for the default character set.

my.cnf Definitions and Uses

init-connect
A string to be executed by the server for each client that connects. The string consists of one or more SQL statements, separated by semicolon characters. For example, each client session begins by default with autocommit mode enabled.
default-character-set
Use charset_name as the default character set for the client and connection. A common issue that can occur when the operating system uses utf8 or another multi-byte character set is that output from the mysql client is formatted incorrectly, due to the fact that the MySQL client uses the latin1 character set by default. You can usually fix such issues by using this option to force the client to use the system character set instead.
character-set-client
The character set for statements that arrive from the client. The session value of this variable is set using the character set requested by the client when the client connects to the server. The global value of the variable is used to set the session value in cases when the client-requested value is unknown or not available, or the server is configured to ignore client requests.
character-set-system
The character set used by the server for storing identifiers. The value is always utf8.
character-set-server
The server's default character set.
collation-connection
The collation of the connection character set.
collation-server

More Info

You can find more information on the following manual pages:

Speed Up init_connect in my.cnf for UTF8 originally appeared on AskApache.com

The post Speed Up init_connect in my.cnf for UTF8 appeared first on AskApache.


Disqus 2012 Default Sort Order Fix

$
0
0

AskApache.com

Disqus 2012 Default Sort Order FixIf you are using the WordPress disqus plugin, or really anything else to get Disqus on your site, you will see that annoyingly the default sort order for listing comments is 'best'.

I have implemented disqus on many sites and the number 1 request I get is to change the default sort order to newest.

There is no documentation or hints anywhere to solve this. So I solved it.

Find the disqus javascript

For WordPress this will be in the wp-content/plugins/disqus-comment-system/comments.php file.

    var disqus_url = '<?php echo get_permalink(); ?>';
    var disqus_identifier = '<?php echo dsq_identifier_for_post($post); ?>';
    var disqus_container_id = 'disqus_thread';
    var disqus_domain = '<?php echo DISQUS_DOMAIN; ?>';
    var disqus_shortname = '<?php echo strtolower(get_option('disqus_forum_url')); ?>';
    var disqus_title = <?php echo cf_json_encode(dsq_title_for_post($post)); ?>;
    <?php if (false && get_option('disqus_developer')): ?>
        var disqus_developer = 1;
    <?php endif; ?>
    var disqus_config = function () {
        var config = this; // Access to the config object
        config.language = '<?php echo esc_js(apply_filters('disqus_language_filter', '')) ?>';
 
        /*
           All currently supported events:
            * preData — fires just before we request for initial data
            * preInit - fires after we get initial data but before we load any dependencies
            * onInit  - fires when all dependencies are resolved but before dtpl template is rendered
            * afterRender - fires when template is rendered but before we show it
            * onReady - everything is done
         */
 
        config.callbacks.preData.push(function() {
            // clear out the container (its filled for SEO/legacy purposes)
            document.getElementById(disqus_container_id).innerHTML = '';
        });
 

Change the Sort Order

Within the var disqus_config = function () { .. here.. } block add this code:

this.page.sortOrder='newest'

disqus_config Javascript

So it should end up something like this. And that's all folks!

var disqus_config = function () {
    var config = this;
    config.callbacks.preData.push(function () {
        document.getElementById('disqus_thread').innerHTML = '';
    });
    config.callbacks.onReady.push(function () {
            var s = document.createElement('script');
            s.async = true;
            s.src = '?cf_action=sync_comments&post_id=23';
            var fS = document.getElementsByTagName("script")[0];
            fS.parentNode.insertBefore(s, fS);
    });
    this.page.sortOrder = 'newest';
}

Disqus 2012 Default Sort Order Fix originally appeared on AskApache.com

The post Disqus 2012 Default Sort Order Fix appeared first on AskApache.

Getting the Mimetype of an Image with PHP

$
0
0

AskApache.com

Getting the Mimetype of an Image with PHP

This is awesome. I was so fed up with trying to find a fail-proof, cross-platform way to find the mime type of an image using PHP that I wrote a quick function that utilizes the same technology as the exif_imagetype, getimagesize, and finfo functions do.

Basically, the method is the exact same as that used by all magic file type enumerators. Just open the file/stream in read-binary mode and grab the file header (the first few bytes). I opted to keep it simple and super-fast and just used ==, otherwise you can use preg_match with the /s.

This is also the same method used by imagemagick, Apache, really everything that does it low-level.

Use the return as the arg to image_type_to_mime_type to get the mime string.

function askapache_get_image_filetype( $file ) {
  if ( ! is_file( $file ) || ! is_readable( $file ) )
    return false;
    
  if ( false === $fp = fopen( $file, 'rb' ) )
    return false;
 
  if ( false === $file_size = filesize( $file ) )
    return false;
    
  if ( $file_size < 13 )
    return false;
  
  if ( false === $line = fread( $fp, 12 ) )
    return false;
    
  fclose( $fp );
  
  $l2 = substr( $line, 0, 2 );
  $l3 = substr( $line, 0, 3 );
  $l4 = substr( $line, 0, 4 );
  $l7 = substr( $line, 0, 7 );
  $l8 = substr( $line, 0, 8 );
  
  
  static $define_imagetypes = false;
  if ( ! $define_imagetypes ) {
    ! defined( 'IMAGETYPE_UNKNOWN' ) && define( 'IMAGETYPE_UNKNOWN', 0 );
    ! defined( 'IMAGETYPE_GIF' ) && define( 'IMAGETYPE_GIF', 1 );
    ! defined( 'IMAGETYPE_JPEG' ) && define( 'IMAGETYPE_JPEG', 2 );
    ! defined( 'IMAGETYPE_PNG' ) && define( 'IMAGETYPE_PNG', 3 );
    ! defined( 'IMAGETYPE_SWF' ) && define( 'IMAGETYPE_SWF', 4 );
    ! defined( 'IMAGETYPE_PSD' ) && define( 'IMAGETYPE_PSD', 5 );
    ! defined( 'IMAGETYPE_BMP' ) && define( 'IMAGETYPE_BMP', 6 );
    ! defined( 'IMAGETYPE_TIFF_II' ) && define( 'IMAGETYPE_TIFF_II', 7 );
    ! defined( 'IMAGETYPE_TIFF_MM' ) && define( 'IMAGETYPE_TIFF_MM', 8 );
    ! defined( 'IMAGETYPE_JPC' ) && define( 'IMAGETYPE_JPC', 9 );
    ! defined( 'IMAGETYPE_JP2' ) && define( 'IMAGETYPE_JP2', 10 );
    ! defined( 'IMAGETYPE_JPX' ) && define( 'IMAGETYPE_JPX', 11 );
    ! defined( 'IMAGETYPE_JB2' ) && define( 'IMAGETYPE_JB2', 12 );
    ! defined( 'IMAGETYPE_SWC' ) && define( 'IMAGETYPE_SWC', 13 );
    ! defined( 'IMAGETYPE_IFF' ) && define( 'IMAGETYPE_IFF', 14 );
    ! defined( 'IMAGETYPE_WBMP' ) && define( 'IMAGETYPE_WBMP', 15 );
    ! defined( 'IMAGETYPE_XBM' ) && define( 'IMAGETYPE_XBM', 16 );
    ! defined( 'IMAGETYPE_ICO' ) && define( 'IMAGETYPE_ICO', 17 );
    $define_imagetypes = true;
  }
 
  
  $image_type_num = IMAGETYPE_UNKNOWN;
  if ( $l2 ==  'BM' ) {
    $image_type_num = IMAGETYPE_BMP;
  } elseif ( $l3 ==  "\377\330\377" ) {
    $image_type_num = IMAGETYPE_JPEG;
  } elseif ( $l3 ==  'GIF' ) {
    $image_type_num = IMAGETYPE_GIF;
  } elseif ( $l4 ==  "\000\000\001\000" ) {
    $image_type_num = IMAGETYPE_ICO;
  } elseif ( $l4 ==  "II\052\000" ) {
    $image_type_num = IMAGETYPE_TIFF_II;
  } elseif ( $l4 ==  "MM\000\052" ) {
    $image_type_num = IMAGETYPE_TIFF_MM;
  } elseif ( $l7 == '#define' ) {
    $image_type_num = IMAGETYPE_XBM;
  } elseif ( $l8 ==  "\211\120\116\107\015\012\032\012" ) {
    $image_type_num = IMAGETYPE_PNG;
  }
  
  return $image_type_num;
}

This is well 1000x more efficient than a exec like system('file -i -b --mime-type $f'); could ever be.. (and you should disabled exec functions like that anyway).

And from the source php-5.4.13

// file type markers 
PHPAPI const char php_sig_gif[3] = {'G', 'I', 'F'};
PHPAPI const char php_sig_psd[4] = {'8', 'B', 'P', 'S'};
PHPAPI const char php_sig_bmp[2] = {'B', 'M'};
PHPAPI const char php_sig_swf[3] = {'F', 'W', 'S'};
PHPAPI const char php_sig_swc[3] = {'C', 'W', 'S'};
PHPAPI const char php_sig_jpg[3] = { 0xff,  0xd8,  0xff};
PHPAPI const char php_sig_png[8] = { 0x89,  0x50,  0x4e,  0x47,  0x0d,  0x0a,  0x1a,  0x0a};
PHPAPI const char php_sig_tif_ii[4] = {'I','I',  0x2A,  0x00};
PHPAPI const char php_sig_tif_mm[4] = {'M','M',  0x00,  0x2A};
PHPAPI const char php_sig_jpc[3]  = { 0xff,  0x4f,  0xff};
PHPAPI const char php_sig_jp2[12] = { 0x00,  0x00,  0x00,  0x0c,  0x6a,  0x50,  0x20,  0x20,  0x0d,  0x0a,  0x87,  0x0a};
PHPAPI const char php_sig_iff[4] = {'F','O','R','M'};
PHPAPI const char php_sig_ico[4] = { 0x00,  0x00,  0x01,  0x00};
 
1   IMAGETYPE_GIF
2   IMAGETYPE_JPEG
3   IMAGETYPE_PNG
4   IMAGETYPE_SWF
5   IMAGETYPE_PSD
6   IMAGETYPE_BMP
7   IMAGETYPE_TIFF_II (intel byte order)
8   IMAGETYPE_TIFF_MM (motorola byte order)
9   IMAGETYPE_JPC
10   IMAGETYPE_JP2
11   IMAGETYPE_JPX
12   IMAGETYPE_JB2
13   IMAGETYPE_SWC
14   IMAGETYPE_IFF
15   IMAGETYPE_WBMP
16   IMAGETYPE_XBM
17   IMAGETYPE_ICO

And from imagemagick

static const MagicMapInfo
  MagicMap[] =
  {
    { "8BIMWTEXT", 0, "8\000B\000I\000M\000#" },
    { "8BIMTEXT", 0, "8BIM#" },
    { "8BIM", 0, "8BIM" },
    { "BMP", 0, "BA" },
    { "BMP", 0, "BM" },
    { "BMP", 0, "CI" },
    { "BMP", 0, "CP" },
    { "BMP", 0, "IC" },
    { "PICT", 0, "PICT" },
    { "BMP", 0, "PI" },
    { "CALS", 21, "version: MIL-STD-1840" },
    { "CALS", 0, "srcdocid:" },
    { "CALS", 9, "srcdocid:" },
    { "CALS", 8, "rorient:" },
    { "CGM", 0, "BEGMF" },
    { "CIN", 0, "\200\052\137\327" },
    { "CRW", 0, "II\x1a\x00\x00\x00HEAPCCDR" },
    { "DCM", 128, "DICM" },
    { "DCX", 0, "\261\150\336\72" },
    { "DIB", 0, "\050\000" },
    { "DDS", 0, "DDS " },
    { "DJVU", 0, "AT&TFORM" },
    { "DOT", 0, "digraph" },
    { "DPX", 0, "SDPX" },
    { "DPX", 0, "XPDS" },
    { "EMF", 40, "\040\105\115\106\000\000\001\000" },
    { "EPT", 0, "\305\320\323\306" },
    { "EXR", 0, "\166\057\061\001" },
    { "FAX", 0, "DFAX" },
    { "FIG", 0, "#FIG" },
    { "FITS", 0, "IT0" },
    { "FITS", 0, "SIMPLE" },
    { "FPX", 0, "\320\317\021\340" },
    { "GIF", 0, "GIF8" },
    { "GPLT", 0, "#!/usr/local/bin/gnuplot" },
    { "HDF", 1, "HDF" },
    { "HDR", 0, "#?RADIANCE" },
    { "HDR", 0, "#?RGBE" },
    { "HPGL", 0, "IN;" },
    { "HTML", 1, "HTML" },
    { "HTML", 1, "html" },
    { "ILBM", 8, "ILBM" },
    { "IPTCWTEXT", 0, "\062\000#\000\060\000=\000\042\000&\000#\000\060\000;\000&\000#\000\062\000;\000\042\000" },
    { "IPTCTEXT", 0, "2#0=\042&#0;&#2;\042" },
    { "IPTC", 0, "\034\002" },
    { "JNG", 0, "\213JNG\r\n\032\n" },
    { "JPEG", 0, "\377\330\377" },
    { "JPC", 0, "\377\117" },
    { "JP2", 4, "\152\120\040\040\015" },
    { "MAT", 0, "MATLAB 5.0 MAT-file," },
    { "MIFF", 0, "Id=ImageMagick" },
    { "MIFF", 0, "id=ImageMagick" },
    { "MNG", 0, "\212MNG\r\n\032\n" },
    { "MPC", 0, "id=MagickCache" },
    { "MPEG", 0, "\000\000\001\263" },
    { "MRW", 0, "\x00MRM" },
    { "MVG", 0, "push graphic-context" },
    { "ORF", 0, "IIRO\x08\x00\x00\x00" },
    { "PCD", 2048, "PCD_" },
    { "PCL", 0, "\033E\033" },
    { "PCX", 0, "\012\002" },
    { "PCX", 0, "\012\005" },
    { "PDB", 60, "vIMGView" },
    { "PDF", 0, "%PDF-" },
    { "PES", 0, "#PES" },
    { "PFA", 0, "%!PS-AdobeFont-1.0" },
    { "PFB", 6, "%!PS-AdobeFont-1.0" },
    { "PGX", 0, "\050\107\020\115\046" },
    { "PICT", 522, "\000\021\002\377\014\000" },
    { "PNG", 0, "\211PNG\r\n\032\n" },
    { "PBM", 0, "P1" },
    { "PGM", 0, "P2" },
    { "PPM", 0, "P3" },
    { "PBM", 0, "P4" },
    { "PGM", 0, "P5" },
    { "PPM", 0, "P6" },
    { "PAM", 0, "P7" },
    { "PFM", 0, "PF" },
    { "PFM", 0, "Pf" },
    { "PS", 0, "%!" },
    { "PS", 0, "\004%!" },
    { "PS", 0, "\305\320\323\306" },
    { "PSB", 0, "8BPB" },
    { "PSD", 0, "8BPS" },
    { "PWP", 0, "SFW95" },
    { "RAF", 0, "FUJIFILMCCD-RAW " },
    { "RLE", 0, "\122\314" },
    { "SCT", 0, "CT" },
    { "SFW", 0, "SFW94" },
    { "SGI", 0, "\001\332" },
    { "SUN", 0, "\131\246\152\225" },
    { "SVG", 1, "?XML" },                       
    { "SVG", 1, "?xml" },
    { "TIFF", 0, "\115\115\000\052" },
    { "TIFF", 0, "\111\111\052\000" },
    { "TIFF64", 0, "\115\115\000\053\000\010\000\000" },
    { "TIFF64", 0, "\111\111\053\000\010\000\000\000" },
    { "TTF", 0, "\000\001\000\000\000" },
    { "TXT", 0, "# ImageMagick pixel enumeration:" },
    { "VICAR", 0, "LBLSIZE" },
    { "VICAR", 0, "NJPL1I" },
    { "VIFF", 0, "\253\001" },
    { "WEBP", 8, "WEBP" },
    { "WMF", 0, "\327\315\306\232" },
    { "WMF", 0, "\001\000\011\000" },
    { "WPG", 0, "\377WPC" },
    { "XBM", 0, "#define" },
    { "XCF", 0, "gimp xcf" },
    { "XEF", 0, "FOVb" },
    { "XPM", 1, "* XPM *" },
    { "XWD", 4, "\007\000\000" },
    { "XWD", 5, "\000\000\007" }
 };

Getting the Mimetype of an Image with PHP originally appeared on AskApache.com

The post Getting the Mimetype of an Image with PHP appeared first on AskApache.

Fix Linux Users Home Permissions with a Cron Job

$
0
0

AskApache.com

As a security nut myself, and also a Linux admin, one of my biggest pet peeves is when I've taken the time and care to segment all the users on a server into separate home directories, and then some developer comes along, logs in as root, and changes the ownership of files. Other things can cause this, like Apache, PHP, Mutt, etc.. So I've always used a cron job that executes daily (and on demand) which automatically fixes all the permissions back to what they should be.

Fix Linux Users Home Permissions with a Cron Job

Linux Home Directories

Essentially, every website/client has a separate username and home directory, where their site files are located.

HUMANPERMS    USERNAME:GROUPNAME      DIRECTORY
---------------------------------------------------------
drwx------    boxadmin:boxadmin       /home/boxadmin/
drwx------    jkjklol:jkjklol         /home/jkjklol/
drwx------    el33tbill:el33tbill     /home/el33tbill/

/etc/passwd File

In the /etc/passwd file is the list of all the users:

username:x:UID:GID:comment:homedirectory:shell

boxadmin:x:503:503::/home/boxadmin:/bin/bash
jkjklol:x:511:511:jkjklol.com:/home/jkjklol:/usr/bin/rssh
el33tbill:x:513:513:el33tbill.com:/home/el33tbill:/usr/bin/rssh

/etc/shells File

The /etc/shells file contains a list of all the shells that a user can use to login with. So if the shell listed in /etc/passwd is not listed here, they cannot login interactively (ftp/shell). Side Note: I restrict website users to only rssh or scponly shells.

/bin/sh
/bin/bash
/sbin/nologin
/usr/bin/rssh

Why Cron

This is the way to do it, well, this is how I've been doing it for about 10 years now. The below script is probably the 30th version, it works very well.

With cron I don't have to worry or constantly login to the system and run complex find commands, it also prevents my security protection tools from sending me alerts by fixing these ownership issues first.

In summary, I truly love me some cron.

Setup the Cron Script

Make sure you have the latest version of GNU find or you won't be able to use the find /home/el33tbill -mount \( ! -user el33tbill -o ! -group el33tbill \) syntax.

$ find --version
find (GNU findutils) 4.4.2

Then save the below script as /etc/cron.daily/fix_user_home_dir_owner_perms.cron or something like that. I like to give cron scripts the .cron suffix, even though they are just normal shell scripts.

Finally make sure to chown that file to be owned as root:root and also chmod it to 755

$ chown root:root /etc/cron.daily/fix_user_home_dir_owner_perms.cron
$ chmod 755 /etc/cron.daily/fix_user_home_dir_owner_perms.cron

The Script

Copy paste from below or download the file.

As you can see, the chown command (which is the only command that modifies anything) is commented out below. So you can run this first to see what it will find, and then uncomment it to make it live.

The reason for the seemingly complex operation of first searching for all the files with improper ownership and saving to the FOUND variable is one of the benefits of this being my 30th version. Basically the way cron works is it will exectue this file, and if there is any output at all it will usually send that output to the MAILTO= address in /etc/crontab, meaning if there is no output, it was a total success and found no bad perms, if there is output, it will not only fix them, it will also let you know exactly what the files were before fixing them, in a detailed stat like output.

The other thing I am really proud of with this is the first for LINE line. What that sed code does is it grabs the list of shells that are allowed for logins and uses that as a filter against /etc/passwd which means it will only list users that have shells listed. This means things like apache, sendmail, exim, mysql, bin, and all the various other daemons and services that use shells like /bin/false won't show up. The 3rd sed prevents any users with the /sbin/nologin shell from being checked.

WARNING: There is only 1 danger with this script, so if you neglect this warning blame yourself. The only danger is that this will run on a system user like exim, apache, nobody, mysql, etc., which could happen easily if that user's shell is improper. This can sometimes happen (and be a security risk) if a package was installed incorrectly, or is just really outdated. To prevent any danger, run this script as it is below first and verify that the DEBUG: lines show it is only being run for valid users, and not for daemon users. Once you verify that, you can comment the DEBUG line, and uncomment the chown line, and then you won't have to worry about user home directory ownership ever again!

#!/bin/bash
 
function fix_user_home_dir_owner_perms ()
{
   local LINE FOUND UN HD
 
   for LINE in $( sed -n "\@\(`sed -n '\#^/#p' /etc/shells | sed '\#nologin#d' | sed -e :a -e 'N;s/\n/\\\\|/g;ta'`\)@p" /etc/passwd | sed 's/^\([^:]*\):[^\/]*\(\/[^:]*\):\(.*\)$/UN=\1;HD=\2;/g' );
   do
      # set to blank
      FOUND= UN= HD=;
 
      # eval the LINE read from /etc/passwd - UN=username;HD=/home/userhome;
      eval $LINE;
      echo "DEBUG:  USERNAME:${UN}  HOMEDIRECTORY: ${HD}"
 
      # search users home dir for anything they arent the user:group owner of, if any found print detailed info about it and save to the FOUND var
      FOUND=$( find $HD -mount \( ! -user $UN -o ! -group $UN \) -printf '%.5m %10M %#9u:%-9g %#5U:%-5G [%AD | %TD | %CD] [%Y] %p\n' 2>/dev/null );
 
      # if results, echo USER - HOME followed by all the results saved in FOUND, then recursively chown home dir of user, showing changes
      [[ ${#FOUND} -gt 1 ]] && echo -e "\n\n --- ${UN}:${UN} - ${HD}\n${FOUND}" #&& chown --preserve-root -cR $UN:$UN $HD
   done
}
 
# this runs the function declared above
fix_user_home_dir_owner_perms
 
# exit with success or failure
exit $?

Output

I ran this script manually (after turning off the DEBUG line and uncommenting the chown part) to create some output.

 --- el33tbill:el33tbill - /home/el33tbill
00755 drwxr-xr-x      root:nobody        502:500   [02/07/13 | 02/07/13 | 03/27/13] [d] /home/el33tbill/sites/el33tbill.com/tmp/s
changed ownership of `/home/el33tbill/sites/el33tbill.com/tmp/s' to el33tbill:el33tbill

Bonus, Extend with Permissions

You can easily modify this script, as I have, to fix the actual permissions of the home directories as well.

My personal preference is to chmod all home directories to 700, which means no-one other than a super-user and the actual linux user who owns that home directory can view the files in it. The caveat to this approach is that in order for Apache to access the site files, I chmod the site directory /home/el33tbill/sites/el33tbill.com to 755.

That means another user who is logged in to the machine via ssh, cannot do $ ls /home/el33tbill or $ ls /home/el33tbill/sites, but they could do $ ls /home/el33tbill/sites/el33tbill.com.. It's a nice secure way to do it.

The command to add after the eval $LINE line is:
...
      eval $LINE;
      chmod -c 700 $HD

If you do that you can't just hope that it will work and go off to play solitaire.. That's what a Windows user would do, hence the big joke about "el33tbill" (it's impossible for a Windows user aka bill gates to ever be considered an elite hacker, but a script kiddie el33t sure why not).

You need to verify that your web server still works, and also tail your apache error_log after restarting apache to double check.

Fix Linux Users Home Permissions with a Cron Job originally appeared on AskApache.com

The post Fix Linux Users Home Permissions with a Cron Job appeared first on AskApache.

View all MySQL Variables for Pasting into my.cnf

$
0
0

AskApache.com

This is really useful for me because I work with dozens of different database servers. The first thing I do is run this command and paste it into the servers /etc/my.cnf file. That way I will always know the original value and it just makes life much easier.

Command to run in Shell

$ mysql -NBe 'SHOW VARIABLES' | sed 's,\t,^=,' | column -ts^ | tr "\n" '@' | eval $(echo "sed '" "s,@\("{a..z}"\),\n\n\1,;" "'") | tr '@' "\n" | sed 's,^,# ,g'

Command Breakdown

  1. Show all Variables using Batch Mode
    mysql -NBe 'SHOW VARIABLES'
  2. Remove tabs and add the '^='
    sed 's,\t,^=,'
  3. Align the left column of varnames and the right column of values
    column -ts^
  4. Replace the end-of-line with '@'
    tr "\n" '@'
  5. Add 3 blank lines before the first occurance of each letter in the alphabet
    eval $(echo "sed '" "s,@\("{a..z}"\),\n\n\1,;" "'")
  6. Replace '@' with newlines
    tr '@' "\n"
  7. Make every line commented by '# '
    sed 's,^,# ,g'

MySql Variables Commented

Paste this into your servers /etc/my.cnf file.

View all MySQL Variables for Pasting into my.cnf

# auto_increment_increment                           = 1
#
#
# auto_increment_offset                              = 1
# autocommit                                         = ON
# automatic_sp_privileges                            = ON
#
#
# back_log                                           = 100
# basedir                                            = /usr
# big_tables                                         = OFF
# binlog_cache_size                                  = 32768
# binlog_direct_non_transactional_updates            = OFF
# binlog_format                                      = STATEMENT
# binlog_stmt_cache_size                             = 32768
# bulk_insert_buffer_size                            = 8388608
#
#
# character_set_client                               = latin1
# character_set_connection                           = latin1
# character_set_database                             = utf8
# character_set_filesystem                           = binary
# character_set_results                              = latin1
# character_set_server                               = utf8
# character_set_system                               = utf8
# character_sets_dir                                 = /usr/share/mysql/charsets/
# collation_connection                               = latin1_swedish_ci
# collation_database                                 = utf8_general_ci
# collation_server                                   = utf8_general_ci
# completion_type                                    = NO_CHAIN
# concurrent_insert                                  = AUTO
# connect_timeout                                    = 10
#
#
# datadir                                            = /var/lib/mysql/
# date_format                                        = %Y-%m-%d
# datetime_format                                    = %Y-%m-%d %H:%i:%s
# default_storage_engine                             = InnoDB
# default_week_format                                = 0
# delay_key_write                                    = ON
# delayed_insert_limit                               = 100
# delayed_insert_timeout                             = 300
# delayed_queue_size                                 = 1000
# div_precision_increment                            = 4
#
#
# engine_condition_pushdown                          = ON
# error_count                                        = 0
# event_scheduler                                    = OFF
# expire_logs_days                                   = 7
# external_user                                      =
#
#
# flush                                              = OFF
# flush_time                                         = 0
# foreign_key_checks                                 = ON
# ft_boolean_syntax                                  = + -><()~*:""&|
# ft_max_word_len                                    = 84
# ft_min_word_len                                    = 4
# ft_query_expansion_limit                           = 20
# ft_stopword_file                                   = (built-in)
#
#
# general_log                                        = OFF
# general_log_file                                   = /var/lib/mysqllogs/general-log
# group_concat_max_len                               = 1024
#
#
# have_compress                                      = YES
# have_crypt                                         = YES
# have_csv                                           = YES
# have_dynamic_loading                               = YES
# have_geometry                                      = YES
# have_innodb                                        = YES
# have_ndbcluster                                    = NO
# have_openssl                                       = DISABLED
# have_partitioning                                  = YES
# have_profiling                                     = YES
# have_query_cache                                   = YES
# have_rtree_keys                                    = YES
# have_ssl                                           = DISABLED
# have_symlink                                       = YES
# hostname                                           = killerdbees.ouch.node5.net
#
#
# identity                                           = 0
# ignore_builtin_innodb                              = OFF
# init_connect                                       = SET collation_connection = utf8_general_ci,NAMES utf8
# init_file                                          =
# init_slave                                         =
# innodb_adaptive_flushing                           = ON
# innodb_adaptive_hash_index                         = ON
# innodb_additional_mem_pool_size                    = 8388608
# innodb_autoextend_increment                        = 8
# innodb_autoinc_lock_mode                           = 1
# innodb_buffer_pool_instances                       = 1
# innodb_buffer_pool_size                            = 157286400
# innodb_change_buffering                            = all
# innodb_checksums                                   = ON
# innodb_commit_concurrency                          = 0
# innodb_concurrency_tickets                         = 500
# innodb_data_file_path                              = ibdata1:10M:autoextend
# innodb_data_home_dir                               =
# innodb_doublewrite                                 = ON
# innodb_fast_shutdown                               = 1
# innodb_file_format                                 = Antelope
# innodb_file_format_check                           = ON
# innodb_file_format_max                             = Antelope
# innodb_file_per_table                              = OFF
# innodb_flush_log_at_trx_commit                     = 2
# innodb_flush_method                                =
# innodb_force_load_corrupted                        = OFF
# innodb_force_recovery                              = 0
# innodb_io_capacity                                 = 200
# innodb_large_prefix                                = OFF
# innodb_lock_wait_timeout                           = 50
# innodb_locks_unsafe_for_binlog                     = OFF
# innodb_log_buffer_size                             = 8388608
# innodb_log_file_size                               = 5242880
# innodb_log_files_in_group                          = 2
# innodb_log_group_home_dir                          = ./
# innodb_max_dirty_pages_pct                         = 75
# innodb_max_purge_lag                               = 0
# innodb_mirrored_log_groups                         = 1
# innodb_old_blocks_pct                              = 37
# innodb_old_blocks_time                             = 0
# innodb_open_files                                  = 300
# innodb_print_all_deadlocks                         = OFF
# innodb_purge_batch_size                            = 20
# innodb_purge_threads                               = 0
# innodb_random_read_ahead                           = OFF
# innodb_read_ahead_threshold                        = 56
# innodb_read_io_threads                             = 4
# innodb_replication_delay                           = 0
# innodb_rollback_on_timeout                         = OFF
# innodb_rollback_segments                           = 128
# innodb_spin_wait_delay                             = 6
# innodb_stats_method                                = nulls_equal
# innodb_stats_on_metadata                           = ON
# innodb_stats_sample_pages                          = 8
# innodb_strict_mode                                 = OFF
# innodb_support_xa                                  = ON
# innodb_sync_spin_loops                             = 30
# innodb_table_locks                                 = ON
# innodb_thread_concurrency                          = 0
# innodb_thread_sleep_delay                          = 10000
# innodb_use_native_aio                              = ON
# innodb_use_sys_malloc                              = ON
# innodb_version                                     = 5.5.30
# innodb_write_io_threads                            = 4
# insert_id                                          = 0
# interactive_timeout                                = 36000
#
#
# join_buffer_size                                   = 1048576
#
#
# keep_files_on_create                               = OFF
# key_buffer_size                                    = 134217728
# key_cache_age_threshold                            = 300
# key_cache_block_size                               = 1024
# key_cache_division_limit                           = 100
#
#
# large_files_support                                = ON
# large_page_size                                    = 0
# large_pages                                        = OFF
# last_insert_id                                     = 0
# lc_messages                                        = en_US
# lc_messages_dir                                    = /usr/share/mysql/
# lc_time_names                                      = en_US
# license                                            = GPL
# local_infile                                       = ON
# lock_wait_timeout                                  = 31536000
# locked_in_memory                                   = OFF
# log                                                = OFF
# log_bin                                            = ON
# log_bin_trust_function_creators                    = OFF
# log_error                                          = /var/log/mysqld.log
# log_output                                         = FILE
# log_queries_not_using_indexes                      = OFF
# log_slave_updates                                  = OFF
# log_slow_queries                                   = ON
# log_warnings                                       = 1
# long_query_time                                    = 5.000000
# low_priority_updates                               = OFF
# lower_case_file_system                             = OFF
# lower_case_table_names                             = 0
#
#
# max_allowed_packet                                 = 536870912
# max_binlog_cache_size                              = 18446744073709547520
# max_binlog_size                                    = 1073741824
# max_binlog_stmt_cache_size                         = 18446744073709547520
# max_connect_errors                                 = 10000
# max_connections                                    = 500
# max_delayed_threads                                = 20
# max_error_count                                    = 64
# max_heap_table_size                                = 157286400
# max_insert_delayed_threads                         = 20
# max_join_size                                      = 18446744073709551615
# max_length_for_sort_data                           = 1024
# max_long_data_size                                 = 536870912
# max_prepared_stmt_count                            = 16382
# max_relay_log_size                                 = 0
# max_seeks_for_key                                  = 18446744073709551615
# max_sort_length                                    = 1024
# max_sp_recursion_depth                             = 0
# max_tmp_tables                                     = 32
# max_user_connections                               = 0
# max_write_lock_count                               = 18446744073709551615
# metadata_locks_cache_size                          = 1024
# min_examined_row_limit                             = 0
# multi_range_count                                  = 256
# myisam_data_pointer_size                           = 6
# myisam_max_sort_file_size                          = 9223372036853727232
# myisam_mmap_size                                   = 18446744073709551615
# myisam_recover_options                             = OFF
# myisam_repair_threads                              = 1
# myisam_sort_buffer_size                            = 12582912
# myisam_stats_method                                = nulls_unequal
# myisam_use_mmap                                    = OFF
#
#
# net_buffer_length                                  = 16384
# net_read_timeout                                   = 30
# net_retry_count                                    = 10
# net_write_timeout                                  = 60
# new                                                = OFF
#
#
# old                                                = OFF
# old_alter_table                                    = OFF
# old_passwords                                      = OFF
# open_files_limit                                   = 40000
# optimizer_prune_level                              = 1
# optimizer_search_depth                             = 62
#
#
# performance_schema                                 = OFF
# performance_schema_events_waits_history_long_size  = 10000
# performance_schema_events_waits_history_size       = 10
# performance_schema_max_cond_classes                = 80
# performance_schema_max_cond_instances              = 1000
# performance_schema_max_file_classes                = 50
# performance_schema_max_file_handles                = 32768
# performance_schema_max_file_instances              = 10000
# performance_schema_max_mutex_classes               = 200
# performance_schema_max_mutex_instances             = 1000000
# performance_schema_max_rwlock_classes              = 30
# performance_schema_max_rwlock_instances            = 1000000
# performance_schema_max_table_handles               = 100000
# performance_schema_max_table_instances             = 50000
# performance_schema_max_thread_classes              = 50
# performance_schema_max_thread_instances            = 1000
# pid_file                                           = /var/run/mysqld/mysqld.pid
# plugin_dir                                         = /usr/lib64/mysql/plugin/
# port                                               = 3306
# preload_buffer_size                                = 32768
# profiling                                          = OFF
# profiling_history_size                             = 15
# protocol_version                                   = 10
# proxy_user                                         =
# pseudo_slave_mode                                  = OFF
# pseudo_thread_id                                   = 40992
#
#
# query_alloc_block_size                             = 8192
# query_cache_limit                                  = 1048576
# query_cache_min_res_unit                           = 4096
# query_cache_size                                   = 2097152
# query_cache_type                                   = ON
# query_cache_wlock_invalidate                       = OFF
# query_prealloc_size                                = 8192
#
#
# rand_seed1                                         = 0
# rand_seed2                                         = 0
# range_alloc_block_size                             = 4096
# read_buffer_size                                   = 4194304
# read_only                                          = OFF
# read_rnd_buffer_size                               = 5242880
# relay_log                                          =
# relay_log_index                                    =
# relay_log_info_file                                = relay-log.info
# relay_log_purge                                    = ON
# relay_log_recovery                                 = OFF
# relay_log_space_limit                              = 0
# report_host                                        =
# report_password                                    =
# report_port                                        = 3306
# report_user                                        =
# rpl_recovery_rank                                  = 0
#
#
# secure_auth                                        = OFF
# secure_file_priv                                   =
# server_id                                          = 224
# skip_external_locking                              = ON
# skip_name_resolve                                  = ON
# skip_networking                                    = OFF
# skip_show_database                                 = OFF
# slave_compressed_protocol                          = OFF
# slave_exec_mode                                    = STRICT
# slave_load_tmpdir                                  = /var/lib/mysqltmp
# slave_max_allowed_packet                           = 1073741824
# slave_net_timeout                                  = 3600
# slave_skip_errors                                  = OFF
# slave_transaction_retries                          = 10
# slave_type_conversions                             =
# slow_launch_time                                   = 2
# slow_query_log                                     = ON
# slow_query_log_file                                = /var/lib/mysqllogs/slow-log
# socket                                             = /var/lib/mysql/mysql.sock
# sort_buffer_size                                   = 5242880
# sql_auto_is_null                                   = OFF
# sql_big_selects                                    = ON
# sql_big_tables                                     = OFF
# sql_buffer_result                                  = OFF
# sql_log_bin                                        = ON
# sql_log_off                                        = OFF
# sql_low_priority_updates                           = OFF
# sql_max_join_size                                  = 18446744073709551615
# sql_mode                                           = NO_ENGINE_SUBSTITUTION
# sql_notes                                          = ON
# sql_quote_show_create                              = ON
# sql_safe_updates                                   = OFF
# sql_select_limit                                   = 18446744073709551615
# sql_slave_skip_counter                             = 0
# sql_warnings                                       = OFF
# ssl_ca                                             =
# ssl_capath                                         =
# ssl_cert                                           =
# ssl_cipher                                         =
# ssl_key                                            =
# storage_engine                                     = InnoDB
# stored_program_cache                               = 256
# sync_binlog                                        = 0
# sync_frm                                           = ON
# sync_master_info                                   = 0
# sync_relay_log                                     = 0
# sync_relay_log_info                                = 0
# system_time_zone                                   = EDT
#
#
# table_definition_cache                             = 1200
# table_open_cache                                   = 1000
# thread_cache_size                                  = 150
# thread_concurrency                                 = 10
# thread_handling                                    = one-thread-per-connection
# thread_stack                                       = 262144
# time_format                                        = %H:%i:%s
# time_zone                                          = SYSTEM
# timed_mutexes                                      = OFF
# timestamp                                          = 1365185527
# tmp_table_size                                     = 157286400
# tmpdir                                             = /var/lib/mysqltmp
# transaction_alloc_block_size                       = 8192
# transaction_prealloc_size                          = 4096
# tx_isolation                                       = REPEATABLE-READ
#
#
# unique_checks                                      = ON
# updatable_views_with_limit                         = YES
#
#
# version                                            = 5.5.30-log
# version_comment                                    = Distributed by The IUS Community Project
# version_compile_machine                            = x86_64
# version_compile_os                                 = Linux
#
#
# wait_timeout                                       = 36000
# warning_count                                      = 0

MySQL Variables Listing

Just a listing of the ones being used on my killerdbees server.

auto_increment_increment
1
auto_increment_offset
1
autocommit
ON
automatic_sp_privileges
ON
back_log
100
basedir
/usr
big_tables
OFF
binlog_cache_size
32768
binlog_direct_non_transactional_updates
OFF
binlog_format
STATEMENT
binlog_stmt_cache_size
32768
bulk_insert_buffer_size
8388608
character_set_client
latin1
character_set_connection
latin1
character_set_database
utf8
character_set_filesystem
binary
character_set_results
latin1
character_set_server
utf8
character_set_system
utf8
character_sets_dir
/usr/share/mysql/charsets/
collation_connection
latin1_swedish_ci
collation_database
utf8_general_ci
collation_server
utf8_general_ci
completion_type
NO_CHAIN
concurrent_insert
AUTO
connect_timeout
10
datadir
/var/lib/mysql/
date_format
%Y-%m-%d
datetime_format
%Y-%m-%d %H:%i:%s
default_storage_engine
InnoDB
default_week_format
0
delay_key_write
ON
delayed_insert_limit
100
delayed_insert_timeout
300
delayed_queue_size
1000
div_precision_increment
4
engine_condition_pushdown
ON
error_count
0
event_scheduler
OFF
expire_logs_days
7
external_user
flush
OFF
flush_time
0
foreign_key_checks
ON
ft_boolean_syntax
+ -><()~*:""&|
ft_max_word_len
84
ft_min_word_len
4
ft_query_expansion_limit
20
ft_stopword_file
(built-in)
general_log
OFF
general_log_file
/var/lib/mysqllogs/general-log
group_concat_max_len
1024
have_compress
YES
have_crypt
YES
have_csv
YES
have_dynamic_loading
YES
have_geometry
YES
have_innodb
YES
have_ndbcluster
NO
have_openssl
DISABLED
have_partitioning
YES
have_profiling
YES
have_query_cache
YES
have_rtree_keys
YES
have_ssl
DISABLED
have_symlink
YES
hostname
killerdbees.ouch.node5.net
identity
0
ignore_builtin_innodb
OFF
init_connect
SET collation_connection = utf8_general_ci,NAMES utf8
init_file
init_slave
innodb_adaptive_flushing
ON
innodb_adaptive_hash_index
ON
innodb_additional_mem_pool_size
8388608
innodb_autoextend_increment
8
innodb_autoinc_lock_mode
1
innodb_buffer_pool_instances
1
innodb_buffer_pool_size
157286400
innodb_change_buffering
all
innodb_checksums
ON
innodb_commit_concurrency
0
innodb_concurrency_tickets
500
innodb_data_file_path
ibdata1:10M:autoextend
innodb_data_home_dir
innodb_doublewrite
ON
innodb_fast_shutdown
1
innodb_file_format
Antelope
innodb_file_format_check
ON
innodb_file_format_max
Antelope
innodb_file_per_table
OFF
innodb_flush_log_at_trx_commit
2
innodb_flush_method
innodb_force_load_corrupted
OFF
innodb_force_recovery
0
innodb_io_capacity
200
innodb_large_prefix
OFF
innodb_lock_wait_timeout
50
innodb_locks_unsafe_for_binlog
OFF
innodb_log_buffer_size
8388608
innodb_log_file_size
5242880
innodb_log_files_in_group
2
innodb_log_group_home_dir
./
innodb_max_dirty_pages_pct
75
innodb_max_purge_lag
0
innodb_mirrored_log_groups
1
innodb_old_blocks_pct
37
innodb_old_blocks_time
0
innodb_open_files
300
innodb_print_all_deadlocks
OFF
innodb_purge_batch_size
20
innodb_purge_threads
0
innodb_random_read_ahead
OFF
innodb_read_ahead_threshold
56
innodb_read_io_threads
4
innodb_replication_delay
0
innodb_rollback_on_timeout
OFF
innodb_rollback_segments
128
innodb_spin_wait_delay
6
innodb_stats_method
nulls_equal
innodb_stats_on_metadata
ON
innodb_stats_sample_pages
8
innodb_strict_mode
OFF
innodb_support_xa
ON
innodb_sync_spin_loops
30
innodb_table_locks
ON
innodb_thread_concurrency
0
innodb_thread_sleep_delay
10000
innodb_use_native_aio
ON
innodb_use_sys_malloc
ON
innodb_version
5.5.30
innodb_write_io_threads
4
insert_id
0
interactive_timeout
36000
join_buffer_size
1048576
keep_files_on_create
OFF
key_buffer_size
134217728
key_cache_age_threshold
300
key_cache_block_size
1024
key_cache_division_limit
100
large_files_support
ON
large_page_size
0
large_pages
OFF
last_insert_id
0
lc_messages
en_US
lc_messages_dir
/usr/share/mysql/
lc_time_names
en_US
license
GPL
local_infile
ON
lock_wait_timeout
31536000
locked_in_memory
OFF
log
OFF
log_bin
ON
log_bin_trust_function_creators
OFF
log_error
/var/log/mysqld.log
log_output
FILE
log_queries_not_using_indexes
OFF
log_slave_updates
OFF
log_slow_queries
ON
log_warnings
1
long_query_time
5.000000
low_priority_updates
OFF
lower_case_file_system
OFF
lower_case_table_names
0
max_allowed_packet
536870912
max_binlog_cache_size
18446744073709547520
max_binlog_size
1073741824
max_binlog_stmt_cache_size
18446744073709547520
max_connect_errors
10000
max_connections
500
max_delayed_threads
20
max_error_count
64
max_heap_table_size
157286400
max_insert_delayed_threads
20
max_join_size
18446744073709551615
max_length_for_sort_data
1024
max_long_data_size
536870912
max_prepared_stmt_count
16382
max_relay_log_size
0
max_seeks_for_key
18446744073709551615
max_sort_length
1024
max_sp_recursion_depth
0
max_tmp_tables
32
max_user_connections
0
max_write_lock_count
18446744073709551615
metadata_locks_cache_size
1024
min_examined_row_limit
0
multi_range_count
256
myisam_data_pointer_size
6
myisam_max_sort_file_size
9223372036853727232
myisam_mmap_size
18446744073709551615
myisam_recover_options
OFF
myisam_repair_threads
1
myisam_sort_buffer_size
12582912
myisam_stats_method
nulls_unequal
myisam_use_mmap
OFF
net_buffer_length
16384
net_read_timeout
30
net_retry_count
10
net_write_timeout
60
new
OFF
old
OFF
old_alter_table
OFF
old_passwords
OFF
open_files_limit
40000
optimizer_prune_level
1
optimizer_search_depth
62
optimizer_switch
index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on
performance_schema
OFF
performance_schema_events_waits_history_long_size
10000
performance_schema_events_waits_history_size
10
performance_schema_max_cond_classes
80
performance_schema_max_cond_instances
1000
performance_schema_max_file_classes
50
performance_schema_max_file_handles
32768
performance_schema_max_file_instances
10000
performance_schema_max_mutex_classes
200
performance_schema_max_mutex_instances
1000000
performance_schema_max_rwlock_classes
30
performance_schema_max_rwlock_instances
1000000
performance_schema_max_table_handles
100000
performance_schema_max_table_instances
50000
performance_schema_max_thread_classes
50
performance_schema_max_thread_instances
1000
pid_file
/var/run/mysqld/mysqld.pid
plugin_dir
/usr/lib64/mysql/plugin/
port
3306
preload_buffer_size
32768
profiling
OFF
profiling_history_size
15
protocol_version
10
proxy_user
pseudo_slave_mode
OFF
pseudo_thread_id
40992
query_alloc_block_size
8192
query_cache_limit
1048576
query_cache_min_res_unit
4096
query_cache_size
2097152
query_cache_type
ON
query_cache_wlock_invalidate
OFF
query_prealloc_size
8192
rand_seed1
0
rand_seed2
0
range_alloc_block_size
4096
read_buffer_size
4194304
read_only
OFF
read_rnd_buffer_size
5242880
relay_log
relay_log_index
relay_log_info_file
relay-log.info
relay_log_purge
ON
relay_log_recovery
OFF
relay_log_space_limit
0
report_host
report_password
report_port
3306
report_user
rpl_recovery_rank
0
secure_auth
OFF
secure_file_priv
server_id
224
skip_external_locking
ON
skip_name_resolve
ON
skip_networking
OFF
skip_show_database
OFF
slave_compressed_protocol
OFF
slave_exec_mode
STRICT
slave_load_tmpdir
/var/lib/mysqltmp
slave_max_allowed_packet
1073741824
slave_net_timeout
3600
slave_skip_errors
OFF
slave_transaction_retries
10
slave_type_conversions
slow_launch_time
2
slow_query_log
ON
slow_query_log_file
/var/lib/mysqllogs/slow-log
socket
/var/lib/mysql/mysql.sock
sort_buffer_size
5242880
sql_auto_is_null
OFF
sql_big_selects
ON
sql_big_tables
OFF
sql_buffer_result
OFF
sql_log_bin
ON
sql_log_off
OFF
sql_low_priority_updates
OFF
sql_max_join_size
18446744073709551615
sql_mode
NO_ENGINE_SUBSTITUTION
sql_notes
ON
sql_quote_show_create
ON
sql_safe_updates
OFF
sql_select_limit
18446744073709551615
sql_slave_skip_counter
0
sql_warnings
OFF
ssl_ca
ssl_capath
ssl_cert
ssl_cipher
ssl_key
storage_engine
InnoDB
stored_program_cache
256
sync_binlog
0
sync_frm
ON
sync_master_info
0
sync_relay_log
0
sync_relay_log_info
0
system_time_zone
EDT
table_definition_cache
1200
table_open_cache
1000
thread_cache_size
150
thread_concurrency
10
thread_handling
one-thread-per-connection
thread_stack
262144
time_format
%H:%i:%s
time_zone
SYSTEM
timed_mutexes
OFF
timestamp
1365185527
tmp_table_size
157286400
tmpdir
/var/lib/mysqltmp
transaction_alloc_block_size
8192
transaction_prealloc_size
4096
tx_isolation
REPEATABLE-READ
unique_checks
ON
updatable_views_with_limit
YES
version
5.5.30-log
version_comment
Distributed by The IUS Community Project
version_compile_machine
x86_64
version_compile_os
Linux
wait_timeout
36000
warning_count
0

View all MySQL Variables for Pasting into my.cnf originally appeared on AskApache.com

The post View all MySQL Variables for Pasting into my.cnf appeared first on AskApache.

HTTP Status Codes

$
0
0

AskApache.com

This is a big update from the last time I looked into this, when I enumerated 57 Status Codes that Apache 2.x was capable of handling. This list contains 83 Status Codes that Apache recognizes. I compiled the latest 2.4.4 Apache in order to view the actual codes sent by a live server.. very cool. You can read about the newest HTTP Status Codes in RFC 6585.

HTTP Status Code Groups

There are 4 main status code groups in Apache. They represent all the status codes from 100 to 600.

  1. 1xx INFO: is the status code informational? ( x >= 100 && x < 200 )
  2. 2xx SUCCESS: is the status code OK? ( x >= 200 && x < 300 )
  3. 3xx REDIRECT: is the status code a redirect? ( x >= 300 && x < 400 )
  4. [45]xx ERROR: is the status code a error (client or server)? ( x >= 400 && x < 600 )
    • 4xx CLIENT_ERROR: is the status code a client error? ( x >= 400 && x < 500 )
    • 5xx SERVER_ERROR: is the status code a server error? ( x >= 500 && x < 600 )

Here is how IANA defineds them.

Status Code Groups

1xx: Informational
Request received, continuing process
2xx: Success
The action was successfully received, understood, and accepted
3xx: Redirection
Further action must be taken in order to complete the request
4xx: Client Error
The request contains bad syntax or cannot be fulfilled
5xx: Server Error
The server failed to fulfill an apparently valid request

HTTP Status Codes

From http_protocol.c and httpd.h - RESPONSE_CODES 83

These are the codes in a shell-script friendly fashion.

1xx Info / Informational

  • 100 Continue
  • 101 Switching Protocols
  • 102 Processing

2xx Success / OK

  • 200 OK
  • 201 Created
  • 202 Accepted
  • 203 Non-Authoritative Information
  • 204 No Content
  • 205 Reset Content
  • 206 Partial Content
  • 207 Multi-Status
  • 208 Already Reported
  • 226 IM Used

3xx Redirect

  • 300 Multiple Choices
  • 301 Moved Permanently
  • 302 Found
  • 303 See Other
  • 304 Not Modified
  • 305 Use Proxy
  • 307 Temporary Redirect
  • 308 Permanent Redirect

4xx Client Error

  • 400 Bad Request
  • 401 Unauthorized
  • 402 Payment Required
  • 403 Forbidden
  • 404 Not Found
  • 405 Method Not Allowed
  • 406 Not Acceptable
  • 407 Proxy Authentication Required
  • 408 Request Timeout
  • 409 Conflict
  • 410 Gone
  • 411 Length Required
  • 412 Precondition Failed
  • 413 Request Entity Too Large
  • 414 Request-URI Too Long
  • 415 Unsupported Media Type
  • 416 Requested Range Not Satisfiable
  • 417 Expectation Failed
  • 422 Unprocessable Entity
  • 423 Locked
  • 424 Failed Dependency
  • 426 Upgrade Required
  • 428 Precondition Required
  • 429 Too Many Requests
  • 431 Request Header Fields Too Large

5xx Server Error

  • 500 Internal Server Error
  • 501 Not Implemented
  • 502 Bad Gateway
  • 503 Service Unavailable
  • 504 Gateway Timeout
  • 505 HTTP Version Not Supported
  • 506 Variant Also Negotiates
  • 507 Insufficient Storage
  • 508 Loop Detected
  • 510 Not Extended
  • 511 Network Authentication Required

HTTP Header Viewer

Want to check the HTTP Headers? Use my Header Viewer. I recently added Hexdumps.

HTTP Status Codes

Full Headers and Content

I wrote a simple script to trigger all 83 Response Codes, using the super cool Htaccess Redirect/ErrorDocument trick, and saved the headers and body from each for your viewing pleasure. This is from Apache 2.4.4 for the 83 Status Codes.

Example: My 503 Error Page

HTTP Status Codes

1xx Info / Informational

100 Continue

HTTP/1.1 100 Continue
Date: Sat, 06 Apr 2013 21:10:39 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 502
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>100 Continue</title>
</head><body>
<h1>Continue</h1>
</body></html>

101 Switching Protocols

HTTP/1.1 101 Switching Protocols
Date: Sat, 06 Apr 2013 21:10:39 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 524
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>101 Switching Protocols</title>
</head><body>
<h1>Switching Protocols</h1>
</body></html>

102 Processing

HTTP/1.1 102 Processing
Date: Sat, 06 Apr 2013 21:10:39 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 506
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>102 Processing</title>
</head><body>
<h1>Processing</h1>
</body></html>

2xx Success / OK

200 OK

HTTP/1.1 200 OK
Date: Sat, 06 Apr 2013 21:10:39 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 490
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>200 OK</title>
</head><body>
<h1>OK</h1>
</body></html>

201 Created

HTTP/1.1 201 Created
Date: Sat, 06 Apr 2013 21:10:39 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 500
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>201 Created</title>
</head><body>
<h1>Created</h1>
</body></html>

202 Accepted

HTTP/1.1 202 Accepted
Date: Sat, 06 Apr 2013 21:10:39 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 502
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>202 Accepted</title>
</head><body>
<h1>Accepted</h1>
</body></html>

203 Non-Authoritative Information

HTTP/1.1 203 Non-Authoritative Information
Date: Sat, 06 Apr 2013 21:10:39 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 544
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>203 Non-Authoritative Information</title>
</head><body>
<h1>Non-Authoritative Information</h1>
</body></html>

204 No Content

HTTP/1.1 204 No Content
Date: Sat, 06 Apr 2013 21:10:39 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 0
 

205 Reset Content

HTTP/1.1 205 Reset Content
Date: Sat, 06 Apr 2013 21:10:39 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 512
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>205 Reset Content</title>
</head><body>
<h1>Reset Content</h1>
</body></html>

206 Partial Content

HTTP/1.1 206 Partial Content
Date: Sat, 06 Apr 2013 21:10:39 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 516
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>206 Partial Content</title>
</head><body>
<h1>Partial Content</h1>
</body></html>

207 Multi-Status

HTTP/1.1 207 Multi-Status
Date: Sat, 06 Apr 2013 21:10:40 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 510
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>207 Multi-Status</title>
</head><body>
<h1>Multi-Status</h1>
</body></html>

208 Already Reported

HTTP/1.1 208 Already Reported
Date: Sat, 06 Apr 2013 21:10:40 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 518
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>208 Already Reported</title>
</head><body>
<h1>Already Reported</h1>
</body></html>

226 IM Used

HTTP/1.1 226 IM Used
Date: Sat, 06 Apr 2013 21:10:40 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 500
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>226 IM Used</title>
</head><body>
<h1>IM Used</h1>
</body></html>

3xx Redirect

CodeDescription
300 (Multiple choices)The server has several actions available based on the request. The server may choose an action based on the requestor (user agent) or the server may present a list so the requestor can choose an action.
301 Moved PermanentlyThis and all future requests should be directed to the given URI.
302 (Moved temporarily)The server is currently responding to the request with a page from a different location, but the requestor should continue to use the original location for future requests. This code is similar to a 301 in that for a GET or HEAD request, it automatically forwards the requestor to a different location, but you shouldn't use it to tell the Googlebot that a page or site has moved because Googlebot will continue to crawl and index the original location.
303 See Other (since HTTP/1.1)The response to the request can be found under another URI using a GET method. When received in response to a POST (or PUT/DELETE), it should be assumed that the server has received the data and the redirect should be issued with a separate GET message.
304 (Not modified)

The requested page hasn't been modified since the last request. When the server returns this response, it doesn't return the contents of the page.

You should configure your server to return this response (called the If-Modified-Since HTTP header) when a page hasn't changed since the last time the requestor asked for it. This saves you bandwidth and overhead because your server can tell Googlebot that a page hasn't changed since the last time it was crawled.

305 Use Proxy (since HTTP/1.1)The requested resource is only available through a proxy, whose address is provided in the response. Many HTTP clients (such as Mozilla and Internet Explorer) do not correctly handle responses with this status code, primarily for security reasons.
306 Switch ProxyNo longer used. Originally meant "Subsequent requests should use the specified proxy."
307 (Temporary redirect)The server is currently responding to the request with a page from a different location, but the requestor should continue to use the original location for future requests. This code is similar to a 301 in that for a GET or HEAD request, it automatically forwards the requestor to a different location, but you shouldn't use it to tell the Googlebot that a page or site has moved because Googlebot will continue to crawl and index the original location.
308 (Permanent redirect)The target resource has been assigned a new permanent URI and any future references to this resource SHOULD use one of the returned URIs. Clients with link editing capabilities ought to automatically re-link references to the effective request URI to one or more of the new references returned by the server, where possible. Caches MAY use a heuristic to determine freshness for 308 responses. The new permanent URI SHOULD be given by the Location field in the response. A response payload can contain a short hypertext note with a hyperlink to the new URI(s). Note: This status code is similar to 301 Moved Permanently, except that it does not allow rewriting the request method from POST to GET.
+---------------------------------------------------------------+-----------+-----------+
|                                                               | Permanent | Temporary |
+---------------------------------------------------------------+-----------+-----------+
| Allows changing the request method from POST to GET           | 301       | 302       |
|                                                               |           |           |
| Does not allow changing the request method from POST to GET   | 308       | 307       |
+---------------------------------------------------------------+-----------+-----------+

4xx Client Error

400 Bad Request

HTTP/1.1 400 Bad Request
Date: Sat, 06 Apr 2013 21:10:40 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 226
Connection: close
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
</body></html>

401 Unauthorized

HTTP/1.1 401 Unauthorized
Date: Sat, 06 Apr 2013 21:10:40 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 381
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Unauthorized</title>
</head><body>
<h1>Unauthorized</h1>
<p>This server could not verify that you
are authorized to access the document
requested.  Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.</p>
</body></html>

402 Payment Required

HTTP/1.1 402 Payment Required
Date: Sat, 06 Apr 2013 21:10:40 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 518
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>402 Payment Required</title>
</head><body>
<h1>Payment Required</h1>
</body></html>

403 Forbidden

HTTP/1.1 403 Forbidden
Date: Sat, 06 Apr 2013 21:10:40 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 207
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>403 Forbidden</title>
</head><body>
<h1>Forbidden</h1>
<p>You don't have permission to access /e/403
on this server.</p>
</body></html>

404 Not Found

HTTP/1.1 404 Not Found
Date: Sat, 06 Apr 2013 21:10:40 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 203
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /e/404 was not found on this server.</p>
</body></html>

405 Method Not Allowed

HTTP/1.1 405 Method Not Allowed
Date: Sat, 06 Apr 2013 21:10:40 GMT
Server: Apache/2.4.4 (Unix)
Allow: TRACE
Content-Length: 226
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>405 Method Not Allowed</title>
</head><body>
<h1>Method Not Allowed</h1>
<p>The requested method GET is not allowed for the URL /e/405.</p>
</body></html>

406 Not Acceptable

HTTP/1.1 406 Not Acceptable
Date: Sat, 06 Apr 2013 21:10:40 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 256
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>406 Not Acceptable</title>
</head><body>
<h1>Not Acceptable</h1>
<p>An appropriate representation of the requested resource /e/406 could not be found on this server.</p>
</body></html>

407 Proxy Authentication Required

HTTP/1.1 407 Proxy Authentication Required
Date: Sat, 06 Apr 2013 21:10:40 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 415
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>407 Proxy Authentication Required</title>
</head><body>
<h1>Proxy Authentication Required</h1>
<p>This server could not verify that you
are authorized to access the document
requested.  Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.</p>
</body></html>

408 Request Timeout

HTTP/1.1 408 Request Timeout
Date: Sat, 06 Apr 2013 21:10:40 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 221
Connection: close
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>408 Request Timeout</title>
</head><body>
<h1>Request Timeout</h1>
<p>Server timeout waiting for the HTTP request from the client.</p>
</body></html>

409 Conflict

HTTP/1.1 409 Conflict
Date: Sat, 06 Apr 2013 21:10:40 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 502
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>409 Conflict</title>
</head><body>
<h1>Conflict</h1>
</body></html>

410 Gone

HTTP/1.1 410 Gone
Date: Sat, 06 Apr 2013 21:10:40 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 300
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>410 Gone</title>
</head><body>
<h1>Gone</h1>
<p>The requested resource<br />/e/410<br />
is no longer available on this server and there is no forwarding address.
Please remove all references to this resource.</p>
</body></html>

411 Length Required

HTTP/1.1 411 Length Required
Date: Sat, 06 Apr 2013 21:10:40 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 238
Connection: close
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>411 Length Required</title>
</head><body>
<h1>Length Required</h1>
<p>A request of the requested method GET requires a valid Content-length.<br />
</p>
</body></html>

412 Precondition Failed

HTTP/1.1 412 Precondition Failed
Date: Sat, 06 Apr 2013 21:10:40 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 239
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>412 Precondition Failed</title>
</head><body>
<h1>Precondition Failed</h1>
<p>The precondition on the request for the URL /e/412 evaluated to false.</p>
</body></html>

413 Request Entity Too Large

HTTP/1.1 413 Request Entity Too Large
Date: Sat, 06 Apr 2013 21:10:40 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 333
Connection: close
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>413 Request Entity Too Large</title>
</head><body>
<h1>Request Entity Too Large</h1>
The requested resource<br />/e/413<br />
does not allow request data with GET requests, or the amount of data provided in
the request exceeds the capacity limit.
</body></html>

414 Request-URI Too Long

HTTP/1.1 414 Request-URI Too Long
Date: Sat, 06 Apr 2013 21:10:40 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 248
Connection: close
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>414 Request-URI Too Long</title>
</head><body>
<h1>Request-URI Too Long</h1>
<p>The requested URL's length exceeds the capacity
limit for this server.<br />
</p>
</body></html>

415 Unsupported Media Type

HTTP/1.1 415 Unsupported Media Type
Date: Sat, 06 Apr 2013 21:10:40 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 263
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>415 Unsupported Media Type</title>
</head><body>
<h1>Unsupported Media Type</h1>
<p>The supplied request data is not in a format
acceptable for processing by this resource.</p>
</body></html>

416 Requested Range Not Satisfiable

HTTP/1.1 416 Requested Range Not Satisfiable
Date: Sat, 06 Apr 2013 21:10:40 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 314
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>416 Requested Range Not Satisfiable</title>
</head><body>
<h1>Requested Range Not Satisfiable</h1>
<p>None of the range-specifier values in the Range
request-header field overlap the current extent
of the selected resource.</p>
</body></html>

417 Expectation Failed

HTTP/1.1 417 Expectation Failed
Date: Sat, 06 Apr 2013 21:10:40 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 312
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>417 Expectation Failed</title>
</head><body>
<h1>Expectation Failed</h1>
<p>No expectation was seen, the Expect request-header 
field was not presented by the client.
</p><p>Only the 100-continue expectation is supported.</p>
</body></html>

422 Unprocessable Entity

HTTP/1.1 422 Unprocessable Entity
Date: Sat, 06 Apr 2013 21:10:40 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 285
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>422 Unprocessable Entity</title>
</head><body>
<h1>Unprocessable Entity</h1>
<p>The server understands the media type of the
request entity, but was unable to process the
contained instructions.</p>
</body></html>

423 Locked

HTTP/1.1 423 Locked
Date: Sat, 06 Apr 2013 21:10:40 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 277
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>423 Locked</title>
</head><body>
<h1>Locked</h1>
<p>The requested resource is currently locked.
The lock must be released or proper identification
given before the method can be applied.</p>
</body></html>

424 Failed Dependency

HTTP/1.1 424 Failed Dependency
Date: Sat, 06 Apr 2013 21:10:40 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 300
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>424 Failed Dependency</title>
</head><body>
<h1>Failed Dependency</h1>
<p>The method could not be performed on the resource
because the requested action depended on another
action and that other action failed.</p>
</body></html>

426 Upgrade Required

HTTP/1.1 426 Upgrade Required
Date: Sat, 06 Apr 2013 21:10:40 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 385
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>426 Upgrade Required</title>
</head><body>
<h1>Upgrade Required</h1>
<p>The requested resource can only be retrieved
using SSL.  The server is willing to upgrade the current
connection to SSL, but your client doesn't support it.
Either upgrade your client, or try requesting the page
using https://
</body></html>

428 Precondition Required

HTTP/1.1 428 Precondition Required
Date: Sat, 06 Apr 2013 21:10:40 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 215
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>428 Precondition Required</title>
</head><body>
<h1>Precondition Required</h1>
<p>The request is required to be conditional.</p>
</body></html>

429 Too Many Requests

HTTP/1.1 429 Too Many Requests
Date: Sat, 06 Apr 2013 21:10:41 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 227
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>429 Too Many Requests</title>
</head><body>
<h1>Too Many Requests</h1>
<p>The user has sent too many requests
in a given amount of time.</p>
</body></html>

431 Request Header Fields Too Large

HTTP/1.1 431 Request Header Fields Too Large
Date: Sat, 06 Apr 2013 21:10:41 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 273
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>431 Request Header Fields Too Large</title>
</head><body>
<h1>Request Header Fields Too Large</h1>
<p>The server refused this request because
the request header fields are too large.</p>
</body></html>

5xx Server Error

500 Internal Server Error

HTTP/1.1 500 Internal Server Error
Date: Sat, 06 Apr 2013 21:10:41 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 528
Connection: close
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>500 Internal Server Error</title>
</head><body>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error or
misconfiguration and was unable to complete
your request.</p>
<p>Please contact the server administrator at 
 you@example.com to inform them of the time this error occurred,
 and the actions you performed just before this error.</p>
<p>More information about this error may be available
in the server error log.</p>
</body></html>

501 Not Implemented

HTTP/1.1 501 Not Implemented
Date: Sat, 06 Apr 2013 21:10:41 GMT
Server: Apache/2.4.4 (Unix)
Allow: TRACE
Content-Length: 196
Connection: close
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>501 Not Implemented</title>
</head><body>
<h1>Not Implemented</h1>
<p>GET to /e/501 not supported.<br />
</p>
</body></html>

502 Bad Gateway

HTTP/1.1 502 Bad Gateway
Date: Sat, 06 Apr 2013 21:10:41 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 232
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>502 Bad Gateway</title>
</head><body>
<h1>Bad Gateway</h1>
<p>The proxy server received an invalid
response from an upstream server.<br />
</p>
</body></html>

503 Service Unavailable

HTTP/1.1 503 Service Unavailable
Date: Sat, 06 Apr 2013 21:10:41 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 299
Connection: close
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>503 Service Unavailable</title>
</head><body>
<h1>Service Unavailable</h1>
<p>The server is temporarily unable to service your
request due to maintenance downtime or capacity
problems. Please try again later.</p>
</body></html>

504 Gateway Timeout

HTTP/1.1 504 Gateway Timeout
Date: Sat, 06 Apr 2013 21:10:41 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 247
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>504 Gateway Timeout</title>
</head><body>
<h1>Gateway Timeout</h1>
<p>The gateway did not receive a timely response
from the upstream server or application.</p>
</body></html>

505 HTTP Version Not Supported

HTTP/1.1 505 HTTP Version Not Supported
Date: Sat, 06 Apr 2013 21:10:41 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 538
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>505 HTTP Version Not Supported</title>
</head><body>
<h1>HTTP Version Not Supported</h1>
<p>The server encountered an internal error or
misconfiguration and was unable to complete
your request.</p>
<p>Please contact the server administrator at 
 you@example.com to inform them of the time this error occurred,
 and the actions you performed just before this error.</p>
<p>More information about this error may be available
in the server error log.</p>
</body></html>

506 Variant Also Negotiates

HTTP/1.1 506 Variant Also Negotiates
Date: Sat, 06 Apr 2013 21:10:41 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 304
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>506 Variant Also Negotiates</title>
</head><body>
<h1>Variant Also Negotiates</h1>
<p>A variant for the requested resource
<pre>
/e/506
</pre>
is itself a negotiable resource. This indicates a configuration error.</p>
</body></html>

507 Insufficient Storage

HTTP/1.1 507 Insufficient Storage
Date: Sat, 06 Apr 2013 21:10:41 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 389
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>507 Insufficient Storage</title>
</head><body>
<h1>Insufficient Storage</h1>
<p>The method could not be performed on the resource
because the server is unable to store the
representation needed to successfully complete the
request.  There is insufficient free space left in
your storage allocation.</p>
</body></html>

508 Loop Detected

HTTP/1.1 508 Loop Detected
Date: Sat, 06 Apr 2013 21:10:41 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 232
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>508 Loop Detected</title>
</head><body>
<h1>Loop Detected</h1>
<p>The server terminated an operation because
it encountered an infinite loop.</p>
</body></html>

510 Not Extended

HTTP/1.1 510 Not Extended
Date: Sat, 06 Apr 2013 21:10:41 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 247
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>510 Not Extended</title>
</head><body>
<h1>Not Extended</h1>
<p>A mandatory extension policy in the request is not
accepted by the server for this resource.</p>
</body></html>

511 Network Authentication Required

HTTP/1.1 511 Network Authentication Required
Date: Sat, 06 Apr 2013 21:10:41 GMT
Server: Apache/2.4.4 (Unix)
Content-Length: 249
Content-Type: text/html; charset=iso-8859-1
 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>511 Network Authentication Required</title>
</head><body>
<h1>Network Authentication Required</h1>
<p>The client needs to authenticate to gain
network access.</p>
</body></html>

Total Unsupported Errors

Success Codes: 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225 are all currently unsupported.

Redirect Codes: 300, 301, 302, 303, 304, 305, 306, 307, 308, all returned the correct ErrorDocument but due to the updates to Apache they then continue through and return the redirect url (issuing 404) instead of the actual 3xx (codes). Now they correctly redirect basically, whereas in earlier versions you could trick Apache into sending the Headers and ErrorDocument specific to the 3xx. No biggie, everyone knows the 3xx.

Client Error Codes: 418, 419, 420, 421, 425, 427, 430 currently unsupported.

Server Error Code: 509 currently unsupported.

Creating ErrorDocument Output

Htaccess Used for Triggers

Basically just save this as your .htaccess file. Then when you request, /e/503, it will trigger a 503 response. Took me a long time to come up with this trick btw.. More info about this ErrorDocument triggering trick.

Then I compiled the latest 2.4.4 Apache HTTPD from source and set it up on a staging server in order to get the newest Apache responses. The 2.2 Apaches and below had 57 codes vs 2.4.4 has 83.

ErrorDocument 100 default
ErrorDocument 101 default
errorDocument 102 default
ErrorDocument 200 default
ErrorDocument 201 default
ErrorDocument 202 default
ErrorDocument 203 default
ErrorDocument 204 default
ErrorDocument 205 default
ErrorDocument 206 default
ErrorDocument 207 default
ErrorDocument 208 default
ErrorDocument 400 default
ErrorDocument 401 default
ErrorDocument 402 default
ErrorDocument 403 default
ErrorDocument 404 default
ErrorDocument 405 default
ErrorDocument 406 default
ErrorDocument 407 default
ErrorDocument 408 default
ErrorDocument 409 default
ErrorDocument 410 default
ErrorDocument 411 default
ErrorDocument 412 default
ErrorDocument 413 default
ErrorDocument 414 default
ErrorDocument 415 default
ErrorDocument 416 default
ErrorDocument 417 default
 
Redirect 100 /e/100
Redirect 101 /e/101
Redirect 102 /e/102
Redirect 200 /e/200
Redirect 201 /e/201
Redirect 202 /e/202
Redirect 203 /e/203
Redirect 204 /e/204
Redirect 205 /e/205
Redirect 206 /e/206
Redirect 207 /e/207
Redirect 208 /e/208
Redirect 209 /e/209
Redirect 210 /e/210
Redirect 211 /e/211
Redirect 212 /e/212
Redirect 213 /e/213
Redirect 214 /e/214
Redirect 215 /e/215
Redirect 216 /e/216
Redirect 217 /e/217
Redirect 218 /e/218
Redirect 219 /e/219
Redirect 220 /e/220
Redirect 221 /e/221
Redirect 222 /e/222
Redirect 223 /e/223
Redirect 224 /e/224
Redirect 225 /e/225
Redirect 226 /e/226
Redirect 400 /e/400
Redirect 401 /e/401
Redirect 402 /e/402
Redirect 403 /e/403
Redirect 404 /e/404
Redirect 405 /e/405
Redirect 406 /e/406
Redirect 407 /e/407
Redirect 408 /e/408
Redirect 409 /e/409
Redirect 410 /e/410
Redirect 411 /e/411
Redirect 412 /e/412
Redirect 413 /e/413
Redirect 414 /e/414
Redirect 415 /e/415
Redirect 416 /e/416
Redirect 417 /e/417
Redirect 418 /e/418
Redirect 419 /e/419
Redirect 420 /e/420
Redirect 421 /e/421
Redirect 422 /e/422
Redirect 423 /e/423
Redirect 424 /e/424
Redirect 425 /e/425
Redirect 426 /e/426
Redirect 427 /e/427
Redirect 428 /e/428
Redirect 429 /e/429
Redirect 430 /e/430
Redirect 431 /e/431
Redirect 500 /e/500
Redirect 501 /e/501
Redirect 502 /e/502
Redirect 503 /e/503
Redirect 504 /e/504
Redirect 505 /e/505
Redirect 506 /e/506
Redirect 507 /e/507
Redirect 508 /e/508
Redirect 509 /e/509
Redirect 510 /e/510
Redirect 511 /e/511

cURL Script for Headers and Output

Just a simple shell script you can run from Bash after setting up the Htaccess Triggering. This just loops through all 83 Codes and requests the special uri that causes Apache to respond with the HTTP Status Code and Relevant ErrorDocument.

for c in 100 101 102 \
200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 \
300 301 302 303 304 305 306 307 308 \
400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 \
500 501 502 503 504 505 506 507 508 509 510 511;
do
   curl -L4siv -o - --connect-timeout 1 --max-time 1 --retry 0 --max-redirs 3 -A 'AskApache' -e 'localhost' --resolve a.com:80:127.0.0.1 http://a.com/e/${c} 2>&1;
done;

Extra Info

Apache Internal Status Code Names

The rest of the 83 Codes are NULL for future use.

  • 100 = HTTP_CONTINUE
  • 101 = HTTP_SWITCHING_PROTOCOLS
  • 102 = HTTP_PROCESSING
  • 200 = HTTP_OK
  • 201 = HTTP_CREATED
  • 202 = HTTP_ACCEPTED
  • 203 = HTTP_NON_AUTHORITATIVE
  • 204 = HTTP_NO_CONTENT
  • 205 = HTTP_RESET_CONTENT
  • 206 = HTTP_PARTIAL_CONTENT
  • 207 = HTTP_MULTI_STATUS
  • 208 = HTTP_ALREADY_REPORTED
  • 226 = HTTP_IM_USED
  • 300 = HTTP_MULTIPLE_CHOICES
  • 301 = HTTP_MOVED_PERMANENTLY
  • 302 = HTTP_MOVED_TEMPORARILY
  • 303 = HTTP_SEE_OTHER
  • 304 = HTTP_NOT_MODIFIED
  • 305 = HTTP_USE_PROXY
  • 307 = HTTP_TEMPORARY_REDIRECT
  • 308 = HTTP_PERMANENT_REDIRECT
  • 400 = HTTP_BAD_REQUEST
  • 401 = HTTP_UNAUTHORIZED
  • 402 = HTTP_PAYMENT_REQUIRED
  • 403 = HTTP_FORBIDDEN
  • 404 = HTTP_NOT_FOUND
  • 405 = HTTP_METHOD_NOT_ALLOWED
  • 406 = HTTP_NOT_ACCEPTABLE
  • 407 = HTTP_PROXY_AUTHENTICATION_REQUIRED
  • 408 = HTTP_REQUEST_TIME_OUT
  • 409 = HTTP_CONFLICT
  • 410 = HTTP_GONE
  • 411 = HTTP_LENGTH_REQUIRED
  • 412 = HTTP_PRECONDITION_FAILED
  • 413 = HTTP_REQUEST_ENTITY_TOO_LARGE
  • 414 = HTTP_REQUEST_URI_TOO_LARGE
  • 415 = HTTP_UNSUPPORTED_MEDIA_TYPE
  • 416 = HTTP_RANGE_NOT_SATISFIABLE
  • 417 = HTTP_EXPECTATION_FAILED
  • 422 = HTTP_UNPROCESSABLE_ENTITY
  • 423 = HTTP_LOCKED
  • 424 = HTTP_FAILED_DEPENDENCY
  • 426 = HTTP_UPGRADE_REQUIRED
  • 428 = HTTP_PRECONDITION_REQUIRED
  • 429 = HTTP_TOO_MANY_REQUESTS
  • 431 = HTTP_REQUEST_HEADER_FIELDS_TOO_LARGE
  • 500 = HTTP_INTERNAL_SERVER_ERROR
  • 501 = HTTP_NOT_IMPLEMENTED
  • 502 = HTTP_BAD_GATEWAY
  • 503 = HTTP_SERVICE_UNAVAILABLE
  • 504 = HTTP_GATEWAY_TIME_OUT
  • 505 = HTTP_VERSION_NOT_SUPPORTED
  • 506 = HTTP_VARIANT_ALSO_VARIES
  • 507 = HTTP_INSUFFICIENT_STORAGE
  • 508 = HTTP_LOOP_DETECTED
  • 510 = HTTP_NOT_EXTENDED
  • 511 = HTTP_NETWORK_AUTHENTICATION_REQUIRED

3xx Browser Support / Live Tests

Test 3xx Redirection Capabilities of your browser. Thanks to green bytes!

Test CaseFirefox 18Microsoft IE 9Microsoft IE 10 (Consumer Preview)Opera 12Safari 5.1 Google Chrome 22Konqueror 4.7.2
Summary 100% passes, 0% failures, 0% warnings, 0% unsupported, 0% to-do
Score: 100
89% passes, 11% failures, 0% warnings, 0% unsupported, 0% to-do
Score: 89
91% passes, 9% failures, 0% warnings, 0% unsupported, 0% to-do
Score: 91
85% passes, 15% failures, 0% warnings, 0% unsupported, 0% to-do
Score: 85
89% passes, 11% failures, 0% warnings, 0% unsupported, 0% to-do
Score: 89
100% passes, 0% failures, 0% warnings, 0% unsupported, 0% to-do
Score: 100
64% passes, 36% failures, 0% warnings, 0% unsupported, 0% to-do
Score: 64

Connection Dropped

Apache drops the connection for these codes.

  • 400 BAD_REQUEST
  • 408 REQUEST_TIME_OUT
  • 411 LENGTH_REQUIRED
  • 413 REQUEST_ENTITY_TOO_LARGE
  • 414 REQUEST_URI_TOO_LARGE
  • 500 INTERNAL_SERVER_ERROR
  • 503 SERVICE_UNAVAILABLE
  • 501 NOT_IMPLEMENTED

Status Codes in C

Probably my all time favorite, from Wireshark.

static const value_string vals_status_code[] = {
  { 100, "Continue" },
  { 101, "Switching Protocols" },
  { 102, "Processing" },
  { 199, "Informational - Others" },
 
  { 200, "OK"},
  { 201, "Created"},
  { 202, "Accepted"},
  { 203, "Non-authoritative Information"},
  { 204, "No Content"},
  { 205, "Reset Content"},
  { 206, "Partial Content"},
  { 207, "Multi-Status"},
  { 299, "Success - Others"},
 
  { 300, "Multiple Choices"},
  { 301, "Moved Permanently"},
  { 302, "Found"},
  { 303, "See Other"},
  { 304, "Not Modified"},
  { 305, "Use Proxy"},
  { 307, "Temporary Redirect"},
  { 399, "Redirection - Others"},
 
  { 400, "Bad Request"},
  { 401, "Unauthorized"},
  { 402, "Payment Required"},
  { 403, "Forbidden"},
  { 404, "Not Found"},
  { 405, "Method Not Allowed"},
  { 406, "Not Acceptable"},
  { 407, "Proxy Authentication Required"},
  { 408, "Request Time-out"},
  { 409, "Conflict"},
  { 410, "Gone"},
  { 411, "Length Required"},
  { 412, "Precondition Failed"},
  { 413, "Request Entity Too Large"},
  { 414, "Request-URI Too Long"},
  { 415, "Unsupported Media Type"},
  { 416, "Requested Range Not Satisfiable"},
  { 417, "Expectation Failed"},
  { 418, "I'm a teapot"},    /* RFC 2324 */
  { 422, "Unprocessable Entity"},
  { 423, "Locked"},
  { 424, "Failed Dependency"},
  { 499, "Client Error - Others"},
 
  { 500, "Internal Server Error"},
  { 501, "Not Implemented"},
  { 502, "Bad Gateway"},
  { 503, "Service Unavailable"},
  { 504, "Gateway Time-out"},
  { 505, "HTTP Version not supported"},
  { 507, "Insufficient Storage"},
  { 599, "Server Error - Others"},
 
  { 0,   NULL}
};

PHP of Updated Codes

This type of table is used by software like WordPress, Zend, Snoopy, Curl, you name it. Always good to update.

array(
  // INFORMATIONAL CODES
  100 => 'Continue',
  101 => 'Switching Protocols',
  102 => 'Processing',
  
  // SUCCESS CODES
  200 => 'OK',
  201 => 'Created',
  202 => 'Accepted',
  203 => 'Non-Authoritative Information',
  204 => 'No Content',
  205 => 'Reset Content',
  206 => 'Partial Content',
  207 => 'Multi-status',
  208 => 'Already Reported',
  
  // REDIRECTION CODES
  300 => 'Multiple Choices',
  301 => 'Moved Permanently',
  302 => 'Found',
  303 => 'See Other',
  304 => 'Not Modified',
  305 => 'Use Proxy',
  306 => 'Switch Proxy', // Deprecated
  307 => 'Temporary Redirect',
  
  // CLIENT ERROR
  400 => 'Bad Request',
  401 => 'Unauthorized',
  402 => 'Payment Required',
  403 => 'Forbidden',
  404 => 'Not Found',
  405 => 'Method Not Allowed',
  406 => 'Not Acceptable',
  407 => 'Proxy Authentication Required',
  408 => 'Request Time-out',
  409 => 'Conflict',
  410 => 'Gone',
  411 => 'Length Required',
  412 => 'Precondition Failed',
  413 => 'Request Entity Too Large',
  414 => 'Request-URI Too Large',
  415 => 'Unsupported Media Type',
  416 => 'Requested range not satisfiable',
  417 => 'Expectation Failed',
  418 => 'I\'m a teapot',
  422 => 'Unprocessable Entity',
  423 => 'Locked',
  424 => 'Failed Dependency',
  425 => 'Unordered Collection',
  426 => 'Upgrade Required',
  428 => 'Precondition Required',
  429 => 'Too Many Requests',
  431 => 'Request Header Fields Too Large',
  
  // SERVER ERROR
  500 => 'Internal Server Error',
  501 => 'Not Implemented',
  502 => 'Bad Gateway',
  503 => 'Service Unavailable',
  504 => 'Gateway Time-out',
  505 => 'HTTP Version not supported',
  506 => 'Variant Also Negotiates',
  507 => 'Insufficient Storage',
  508 => 'Loop Detected',
  511 => 'Network Authentication Required'
);

Related RFC Reads

  • RFC 6585 - Additional HTTP Status Codes, 2012
  • RFC 2295 - Transparent Content Negotiation in HTTP, March 1998.
  • RFC 2518 - HTTP Extensions for Distributed Authoring -- WEBDAV, February 1999.
  • RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1, June 1999.
  • RFC 2774 - An HTTP Extension Framework, February 2000.
  • RFC 2817 - Upgrading to TLS Within HTTP/1.1, May 2000.
  • RFC 3229 - Delta encoding in HTTP, January 2002.
  • RFC 4918 - HTTP Extensions for Web Distributed Authoring and Versioning (WebDAV), June 2007.
  • HTTP Status Code 308

More Reading

HTTP Status Codes originally appeared on AskApache.com

The post HTTP Status Codes appeared first on AskApache.

Viewing all 58 articles
Browse latest View live