------------------------------------------------------------------------------
-- Ada Web Server --
-- --
-- Copyright (C) 2000-2019, AdaCore --
-- --
-- This library is free software; you can redistribute it and/or modify --
-- it under terms of the GNU General Public License as published by the --
-- Free Software Foundation; either version 3, or (at your option) any --
-- later version. This library is distributed in the hope that it will be --
-- useful, but WITHOUT ANY WARRANTY; without even the implied warranty of --
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. --
-- --
-- As a special exception under Section 7 of GPL version 3, you are --
-- granted additional permissions described in the GCC Runtime Library --
-- Exception, version 3.1, as published by the Free Software Foundation. --
-- --
-- You should have received a copy of the GNU General Public License and --
-- a copy of the GCC Runtime Library Exception along with this program; --
-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
-- . --
-- --
-- As a special exception, if other files instantiate generics from this --
-- unit, or you link this unit with other files to produce an executable, --
-- this unit does not by itself cause the resulting executable to be --
-- covered by the GNU General Public License. This exception does not --
-- however invalidate any other reasons why the executable file might be --
-- covered by the GNU Public License. --
------------------------------------------------------------------------------
-- This package can be used to Set any AWS parameters
package AWS.Config.Set is
------------------------
-- Per Server Options --
------------------------
------------
-- Server --
------------
procedure Server_Name (O : in out Object; Value : String);
-- This is the name of the server as set by AWS.Server.Start
procedure Protocol_Family (O : in out Object; Value : String);
-- Set the server protocol family. Family_Inet for IPv4, Family_Inet6 for
-- IPv6 and Family_Unspec for unspecified protocol family.
procedure IPv6_Only (O : in out Object; Value : Boolean);
-- Set the mode when IPv6 server allows connect only IPv6 clients
procedure Server_Host (O : in out Object; Value : String);
-- This is the server host as set by the HTTP object declaration
procedure Server_Port (O : in out Object; Value : Natural);
-- This is the server port as set by the HTTP object declaration
procedure Hotplug_Port (O : in out Object; Value : Positive);
-- This is the hotplug communication port needed to register and
-- un-register an hotplug module.
procedure Session (O : in out Object; Value : Boolean);
-- Enable session handling is Value is True
procedure Case_Sensitive_Parameters (O : in out Object; Value : Boolean);
-- Parameters are handled with the case if Value is True
procedure Line_Stack_Size (O : in out Object; Value : Positive);
-- HTTP lines stack size
procedure Reuse_Address (O : in out Object; Value : Boolean);
-- Set the reuse address policy allowing a bind without a dealy to the same
-- address and port.
procedure Session_Name (O : in out Object; Value : String);
-- Name of the cookie session
procedure Server_Priority (O : in out Object; Value : System.Any_Priority);
-- Set the priority used by the HTTP and WebSockets servers
procedure Server_Header (O : in out Object; Value : String);
-- Set the server header (value used by the Server: request header)
----------------
-- Connection --
----------------
procedure Max_Connection (O : in out Object; Value : Positive);
-- This is the max simultaneous connections as set by the HTTP object
-- declaration.
procedure Send_Buffer_Size (O : in out Object; Value : Positive);
-- This is the socket buffer size used for sending data. Increasing this
-- value will give better performances on slow or long distances
-- connections.
procedure TCP_No_Delay (O : in out Object; Value : Boolean);
-- Set the TCP_NODELAY option for this server
procedure Free_Slots_Keep_Alive_Limit
(O : in out Object; Value : Natural);
-- The minimum number of free slots where keep-alive connections are still
-- enabled. After this limit no more keep-alive connection will be
-- accepted by the server. This parameter must be used for heavy-loaded
-- servers to make sure the server will never run out of slots. This limit
-- must be less than Max_Connection.
procedure Keep_Alive_Force_Limit (O : in out Object; Value : Natural);
-- Define maximum number of keep alive sockets where server process it with
-- normal timeouts. If number of keep-alive sockets become more than
-- Keep_Alive_Force_Limit, server start to use shorter force timeouts.
-- If this parameter not defined in configuration or defined as 0 value
-- server use calculated value Max_Connection * 2.
procedure Accept_Queue_Size (O : in out Object; Value : Positive);
-- This is the size of the queue for the incoming requests. Higher this
-- value will be and less "connection refused" will be reported to the
-- client.
----------
-- Data --
----------
procedure WWW_Root (O : in out Object; Value : String);
-- This is the root directory name for the server. This variable is not
-- used internally by AWS. It is supposed to be used by the callback
-- procedures who want to retrieve physical objects (images, Web
-- pages...). The default value is the current working directory.
procedure Upload_Directory (O : in out Object; Value : String);
-- This point to the directory where uploaded files will be stored. The
-- directory returned will end with a directory separator.
procedure Upload_Size_Limit (O : in out Object; Value : Positive);
-- Set the maximum size accepted for uploaded files
procedure Directory_Browser_Page (O : in out Object; Value : String);
-- Filename for the directory browser template page
procedure Max_POST_Parameters (O : in out Object; Value : Positive);
-- Set the maximum number of POST parameters handled. Past this limit
-- the exception Too_Many_Parameters is raised.
---------
-- Log --
---------
procedure Log_Activated (O : in out Object; Value : Boolean);
-- Whether the default log should be activated
procedure Log_File_Directory (O : in out Object; Value : String);
-- This point to the directory where log files will be written. The
-- directory returned will end with a directory separator.
procedure Log_Filename_Prefix (O : in out Object; Value : String);
-- This is the prefix to use for the log filename
procedure Log_Size_Limit (O : in out Object; Value : Natural);
-- If Log_Size_Limit is more than zero and size of log file
-- become more than Log_Size_Limit, log file is be split.
procedure Log_Split_Mode (O : in out Object; Value : String);
-- This is split mode for the log file. Possible values are : Each_Run,
-- Daily, Monthly and None. Any other values will raise an exception.
procedure Log_Extended_Fields (O : in out Object; Value : String);
-- Comma separated list of the extended log field names. If this parameter
-- is empty, the HTTP log would have fixed apache compartible format:
--
-- 127.0.0.1 - - [25/Apr/1998:15:37:29 +0200] "GET / HTTP/1.0" 200 1363
--
-- If the extended fields list is not empty, the log file format would have
-- user defined fields set:
--
-- #Version: 1.0
-- #Date: 2006-01-09 00:00:01
-- #Fields: date time cs-method cs-uri cs-version sc-status sc-bytes
-- 2006-01-09 00:34:23 GET /foo/bar.html HTTP/1.1 200 30
--
-- Fields in the list could be:
--
-- date Date at which transaction completed
-- time Time at which transaction completed
-- c-ip Client side connected IP address
-- c-port Client side connected port
-- s-ip Server side connected IP address
-- s-port Server side connected port
-- cs-method HTTP request method
-- cs-username Client authentication username
-- cs-version Client supported HTTP version
-- cs-uri Request URI
-- cs-uri-stem Stem portion alone of URI (omitting query)
-- cs-uri-query Query portion alone of URI
-- sc-status Responce status code
-- sc-bytes Length of response message body
-- cs() Any header field name sent from client to server
-- sc() Any header field name sent from server to client
-- x- Any application defined field name
procedure Error_Log_Activated (O : in out Object; Value : Boolean);
-- Whether the error log should be activated
procedure Error_Log_Filename_Prefix (O : in out Object; Value : String);
-- This is the prefix to use for the log filename
procedure Error_Log_Split_Mode (O : in out Object; Value : String);
-- This is split mode for the log file. Possible values are : Each_Run,
-- Daily, Monthly and None. Any other values will raise an exception.
------------
-- Status --
------------
procedure Admin_Password (O : in out Object; Value : String);
-- This is the password for the admin server page as set by
-- AWS.Server.Start. The password must be created with the aws_password
-- tool.
procedure Admin_URI (O : in out Object; Value : String);
-- This is the name of the admin server page as set by AWS.Server.Start
procedure Status_Page (O : in out Object; Value : String);
-- Filename for the status template page
procedure Up_Image (O : in out Object; Value : String);
-- Filename for the up arrow image used in the status page
procedure Down_Image (O : in out Object; Value : String);
-- Filename for the down arrow image used in the status page
procedure Logo_Image (O : in out Object; Value : String);
-- Filename for the AWS logo image used in the status page
--------------
-- Timeouts --
--------------
procedure Cleaner_Wait_For_Client_Timeout
(O : in out Object;
Value : Duration);
-- Number of seconds to timout on waiting for a client request.
-- This is a timeout for regular cleaning task.
procedure Cleaner_Client_Header_Timeout
(O : in out Object;
Value : Duration);
-- Number of seconds to timout on waiting for client header.
-- This is a timeout for regular cleaning task.
procedure Cleaner_Client_Data_Timeout
(O : in out Object;
Value : Duration);
-- Number of seconds to timout on waiting for client message body.
-- This is a timeout for regular cleaning task.
procedure Cleaner_Server_Response_Timeout
(O : in out Object;
Value : Duration);
-- Number of seconds to timout on waiting for client to accept answer.
-- This is a timeout for regular cleaning task.
procedure Force_Wait_For_Client_Timeout
(O : in out Object;
Value : Duration);
-- Number of seconds to timout on waiting for a client request.
-- This is a timeout for urgent request when resources are missing.
procedure Force_Client_Header_Timeout
(O : in out Object;
Value : Duration);
-- Number of seconds to timout on waiting for client header.
-- This is a timeout for urgent request when resources are missing.
procedure Force_Client_Data_Timeout
(O : in out Object;
Value : Duration);
-- Number of seconds to timout on waiting for client message body.
-- This is a timeout for urgent request when resources are missing.
procedure Force_Server_Response_Timeout
(O : in out Object;
Value : Duration);
-- Number of seconds to timout on waiting for client to accept answer.
-- This is a timeout for urgent request when resources are missing.
procedure Send_Timeout (O : in out Object; Value : Duration);
-- Number of seconds to timeout when sending chunck of data
procedure Receive_Timeout (O : in out Object; Value : Duration);
-- Number of seconds to timeout when receiving chunck of data
--------------
-- Security --
--------------
procedure Check_URL_Validity (O : in out Object; Value : Boolean);
-- Set the check URL validity flag. If True an URL that reference a
-- resource above the Web root will be rejected.
procedure Security (O : in out Object; Value : Boolean);
-- Enable security (HTTPS/SSL) if Value is True
procedure Certificate (O : in out Object; Filename : String);
-- Set the certificate filename in PEM format to be used with the secure
-- server.
procedure Key (O : in out Object; Filename : String);
-- Set the key to be used with the secure server
procedure Security_Mode (O : in out Object; Mode : String);
-- Set the security mode to be used with the secure server. Only values
-- from AWS.Net.SSL.Method can be used.
procedure Cipher_Priorities (O : in out Object; Value : String);
-- Sets priorities for the cipher suites supported by SSL implementation.
-- GNUTLS and OpenSSL implementations has different sintax for this
-- parameter.
procedure TLS_Ticket_Support (O : in out Object; Value : Boolean);
-- Set to True for security communication side support stateless TLS
-- session resumption. See RFC 5077.
procedure Exchange_Certificate (O : in out Object; Value : Boolean);
-- Set to True to request the client to send its certificate to the server
procedure Certificate_Required (O : in out Object; Value : Boolean);
-- Returns True if the server must abort the connection if the
-- client did not provide a certificate. If this option is set
-- the Exchange_Certificate must also be set.
procedure Trusted_CA (O : in out Object; Filename : String);
-- Returns the filename containing a list of trusted CA, this is to be used
-- with the Exchange_Certificate option. The filename is on bundle of CAs
-- that can be trusted. A client certificate signed with one of those CA
-- will be accetped by the server.
procedure CRL_File (O : in out Object; Filename : String);
-- Returns the filename containing the Certificate Revocation List. This
-- list is used by the server to check for revoked certificate.
procedure SSL_Session_Cache_Size (O : in out Object; Value : Natural);
-------------------------
-- Per Process Options --
-------------------------
procedure Session_Cleanup_Interval (Value : Duration);
-- Number of seconds between each run of the cleaner task to remove
-- obsolete session data.
procedure Session_Lifetime (Value : Duration);
-- Number of seconds to keep a session if not used. After this period the
-- session data is obsoleted and will be removed during next cleanup.
procedure Session_Id_Length (Value : Positive);
-- Returns the length (number of characters) of the session id
procedure Session_Cleaner_Priority (Value : System.Any_Priority);
-- Set the priority used by the session cleaner task
procedure Service_Priority (Value : System.Any_Priority);
-- Set the priority used by the others services (SMTP server, Jabber
-- server, Push server...).
procedure Config_Directory (Value : String);
-- Directory where AWS parameter files are located
procedure Transient_Cleanup_Interval (Value : Duration);
-- Number of seconds between each run of the cleaner task to remove
-- transient pages.
procedure Transient_Lifetime (Value : Duration);
-- Number of seconds to keep a transient page. After this period the
-- transient page is obsoleted and will be removed during next cleanup.
procedure Context_Lifetime (Value : Duration);
-- Number of seconds to keep a context if not used. After this period the
-- context data is obsoleted and will be removed during next cleanup.
procedure Max_Concurrent_Download (Value : Positive);
-- Control the maximum number of parallel downloads accepted by the
-- download manager.
procedure Max_WebSocket (Value : Positive);
-- The maximum number of simultaneous WebSocket opened. Note that that
-- there could be more WebSocket registered when counting the closing
-- WebSockets.
procedure Max_WebSocket_Handler (Value : Positive);
-- This is the max simultaneous connections handling WebSocket's messages
procedure MIME_Types (Value : String);
-- The name of the file containing the MIME types associations
procedure WebSocket_Message_Queue_Size (Value : Positive);
-- This is the size of the queue containing incoming messages
procedure WebSocket_Send_Message_Queue_Size (Value : Positive);
-- This is the size of the queue containing messages to send
procedure WebSocket_Origin (Value : String);
-- This is regular expression to restrict WebSocket to a specific origin
procedure WebSocket_Priority (Value : System.Any_Priority);
-- Set the priority used by the WebSocket service
procedure WebSocket_Timeout (Value : Duration);
-- Returns the WebSocket activity timeout. After this number of seconds
-- without any activity the WebSocket can be closed when needed.
procedure Input_Line_Size_Limit (Value : Positive);
-- Maximum length of an HTTP parameter
procedure User_Agent (Value : String);
-- Set the user agent for client request heaser
procedure Parameter
(Config : in out Object;
Name : String;
Value : String;
Error_Context : String := "");
-- Set one of the AWS HTTP per server parameters. Raises Constraint_Error
-- in case of wrong parameter name or wrong parameter value.
-- Error_Context may contain additional information about the parameter.
-- This message will be added to the Constraint_Error exception.
-- One way to use Error_Context is to set it with information about
-- where this parameter come form.
procedure Parameter
(Name : String;
Value : String;
Error_Context : String := "");
-- Set one of the AWS HTTP per process parameters. See description above
end AWS.Config.Set;