sig
exception Eliom_404
exception Eliom_Wrong_parameter
exception Eliom_Session_expired
exception Eliom_Typing_Error of (string * exn) list
exception Eliom_function_forbidden_outside_site_loading of string
val eliom_link_too_old : bool Polytables.key
val eliom_service_session_expired : string list Polytables.key
exception Eliom_Suffix_redirection of string
type att_key_serv =
SAtt_no
| SAtt_named of string
| SAtt_anon of string
| SAtt_csrf_safe of (int * string option * bool option)
type na_key_serv =
SNa_no
| SNa_void_keep
| SNa_void_dontkeep
| SNa_get_ of string
| SNa_post_ of string
| SNa_get' of string
| SNa_post' of string
| SNa_get_csrf_safe of (int * string option * bool option)
| SNa_post_csrf_safe of (int * string option * bool option)
type att_key_req = RAtt_no | RAtt_named of string | RAtt_anon of string
type na_key_req =
RNa_no
| RNa_get_ of string
| RNa_post_ of string
| RNa_get' of string
| RNa_post' of string
exception Eliom_duplicate_registration of string
exception Eliom_there_are_unregistered_services of
(string list * string list list * Eliom_common.na_key_serv list)
exception Eliom_page_erasing of string
exception Eliom_error_while_loading_site of string
val defaultpagename : string
val eliom_suffix_name : string
val eliom_suffix_internal_name : string
val eliom_nosuffix_page : string
val naservice_num : string
val naservice_name : string
val get_state_param_name : string
val post_state_param_name : string
val get_numstate_param_name : string
val post_numstate_param_name : string
val co_param_prefix : string
val na_co_param_prefix : string
val nl_param_prefix : string
val datacookiename : string
val servicecookiename : string
val persistentcookiename : string
val sdatacookiename : string
val sservicecookiename : string
val spersistentcookiename : string
val persistent_cookie_table_version : string
val eliom_persistent_cookie_table : string
type cookie =
Set of Ocsigen_lib.url_path option * float option * string * string *
bool
| Unset of Ocsigen_lib.url_path option * string
type sess_info = {
si_other_get_params : (string * string) list;
si_all_get_params : (string * string) list;
si_all_post_params : (string * string) list;
si_service_session_cookies : string Ocsigen_lib.String_Table.t;
si_data_session_cookies : string Ocsigen_lib.String_Table.t;
si_persistent_session_cookies : string Ocsigen_lib.String_Table.t;
si_secure_cookie_info :
(string Ocsigen_lib.String_Table.t *
string Ocsigen_lib.String_Table.t * string Ocsigen_lib.String_Table.t)
option;
si_nonatt_info : Eliom_common.na_key_req;
si_state_info : Eliom_common.att_key_req * Eliom_common.att_key_req;
si_previous_extension_error : int;
si_na_get_params : (string * string) list Lazy.t;
si_nl_get_params : (string * string) list Ocsigen_lib.String_Table.t;
si_nl_post_params : (string * string) list Ocsigen_lib.String_Table.t;
si_persistent_nl_get_params :
(string * string) list Ocsigen_lib.String_Table.t Lazy.t;
si_all_get_but_na_nl : (string * string) list Lazy.t;
si_all_get_but_nl : (string * string) list;
}
module SessionCookies :
sig
type key = string
type 'a t
val create : int -> 'a t
val clear : 'a t -> unit
val copy : 'a t -> 'a t
val add : 'a t -> key -> 'a -> unit
val remove : 'a t -> key -> unit
val find : 'a t -> key -> 'a
val find_all : 'a t -> key -> 'a list
val replace : 'a t -> key -> 'a -> unit
val mem : 'a t -> key -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val length : 'a t -> int
end
type sessgrp =
string * (string, Ocsigen_lib.ip_address) Ocsigen_lib.leftright
type perssessgrp = string
type 'a session_cookie = SCNo_data | SCData_session_expired | SC of 'a
type cookie_exp = CENothing | CEBrowser | CESome of float
type timeout = TGlobal | TNone | TSome of float
type 'a one_service_cookie_info = {
sc_value : string;
sc_table : 'a Pervasives.ref;
sc_timeout : Eliom_common.timeout Pervasives.ref;
sc_exp : float option Pervasives.ref;
sc_cookie_exp : Eliom_common.cookie_exp Pervasives.ref;
sc_session_group : Eliom_common.sessgrp Pervasives.ref;
mutable sc_session_group_node : string Ocsigen_cache.Dlist.node;
}
type one_data_cookie_info = {
dc_value : string;
dc_timeout : Eliom_common.timeout Pervasives.ref;
dc_exp : float option Pervasives.ref;
dc_cookie_exp : Eliom_common.cookie_exp Pervasives.ref;
dc_session_group : Eliom_common.sessgrp Pervasives.ref;
mutable dc_session_group_node : string Ocsigen_cache.Dlist.node;
}
type one_persistent_cookie_info = {
pc_value : string;
pc_timeout : Eliom_common.timeout Pervasives.ref;
pc_cookie_exp : Eliom_common.cookie_exp Pervasives.ref;
pc_session_group : Eliom_common.perssessgrp option Pervasives.ref;
}
type 'a cookie_info1 =
(string option *
'a Eliom_common.one_service_cookie_info Eliom_common.session_cookie
Pervasives.ref)
Ocsigen_lib.String_Table.t Pervasives.ref *
(string option *
Eliom_common.one_data_cookie_info Eliom_common.session_cookie
Pervasives.ref)
Lazy.t Ocsigen_lib.String_Table.t Pervasives.ref *
((string * Eliom_common.timeout * float option *
Eliom_common.perssessgrp option)
option *
Eliom_common.one_persistent_cookie_info Eliom_common.session_cookie
Pervasives.ref)
Lwt.t Lazy.t Ocsigen_lib.String_Table.t Pervasives.ref
type 'a cookie_info =
'a Eliom_common.cookie_info1 * 'a Eliom_common.cookie_info1 option
type 'a servicecookiestablecontent =
string * 'a * float option Pervasives.ref *
Eliom_common.timeout Pervasives.ref *
Eliom_common.sessgrp Pervasives.ref * string Ocsigen_cache.Dlist.node
type 'a servicecookiestable =
'a Eliom_common.servicecookiestablecontent
Eliom_common.SessionCookies.t
type datacookiestablecontent =
string * float option Pervasives.ref *
Eliom_common.timeout Pervasives.ref *
Eliom_common.sessgrp Pervasives.ref * string Ocsigen_cache.Dlist.node
type datacookiestable =
Eliom_common.datacookiestablecontent Eliom_common.SessionCookies.t
type page_table_key = {
key_state : Eliom_common.att_key_serv * Eliom_common.att_key_serv;
key_kind : Ocsigen_http_frame.Http_header.http_method;
}
module NAserv_Table :
sig
type key = na_key_serv
type +'a t
val empty : 'a t
val is_empty : 'a t -> bool
val add : key -> 'a -> 'a t -> 'a t
val find : key -> 'a t -> 'a
val remove : key -> 'a t -> 'a t
val mem : key -> 'a t -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val map : ('a -> 'b) -> 'a t -> 'b t
val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
end
module Serv_Table :
sig
type key = page_table_key
type +'a t
val empty : 'a t
val is_empty : 'a t -> bool
val add : key -> 'a -> 'a t -> 'a t
val find : key -> 'a t -> 'a
val remove : key -> 'a t -> 'a t
val mem : key -> 'a t -> bool
val iter : (key -> 'a -> unit) -> 'a t -> unit
val map : ('a -> 'b) -> 'a t -> 'b t
val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
end
type dlist_ip_table
type anon_params_type = int
type server_params = {
sp_request : Ocsigen_extensions.request;
sp_si : Eliom_common.sess_info;
sp_sitedata : Eliom_common.sitedata;
sp_cookie_info : Eliom_common.tables Eliom_common.cookie_info;
sp_suffix : Ocsigen_lib.url_path option;
sp_fullsessname : string option;
}
and page_table = Eliom_common.page_table_content Eliom_common.Serv_Table.t
and page_table_content =
Ptc of
(Eliom_common.page_table Pervasives.ref * Eliom_common.page_table_key,
Eliom_common.na_key_serv)
Ocsigen_lib.leftright Ocsigen_cache.Dlist.node option *
((Eliom_common.anon_params_type * Eliom_common.anon_params_type) *
(int *
(int Pervasives.ref option *
(float * float Pervasives.ref) option *
(bool ->
Eliom_common.server_params -> Ocsigen_http_frame.result Lwt.t))))
list
and naservice_table_content =
int * int Pervasives.ref option *
(float * float Pervasives.ref) option *
(Eliom_common.server_params -> Ocsigen_http_frame.result Lwt.t) *
(Eliom_common.page_table Pervasives.ref * Eliom_common.page_table_key,
Eliom_common.na_key_serv)
Ocsigen_lib.leftright Ocsigen_cache.Dlist.node option
and naservice_table =
AVide
| ATable of
Eliom_common.naservice_table_content Eliom_common.NAserv_Table.t
and dircontent =
Vide
| Table of Eliom_common.direlt Pervasives.ref Ocsigen_lib.String_Table.t
and direlt =
Dir of Eliom_common.dircontent Pervasives.ref
| File of Eliom_common.page_table Pervasives.ref
and tables = {
table_services : Eliom_common.dircontent Pervasives.ref;
table_naservices : Eliom_common.naservice_table Pervasives.ref;
mutable table_contains_services_with_timeout : bool;
mutable table_contains_naservices_with_timeout : bool;
mutable csrf_get_or_na_registration_functions :
(sp:Eliom_common.server_params -> string) Ocsigen_lib.Int_Table.t;
mutable csrf_post_registration_functions :
(sp:Eliom_common.server_params -> Eliom_common.att_key_serv -> string)
Ocsigen_lib.Int_Table.t;
service_dlist_add :
?sp:Eliom_common.server_params ->
(Eliom_common.page_table Pervasives.ref * Eliom_common.page_table_key,
Eliom_common.na_key_serv)
Ocsigen_lib.leftright ->
(Eliom_common.page_table Pervasives.ref * Eliom_common.page_table_key,
Eliom_common.na_key_serv)
Ocsigen_lib.leftright Ocsigen_cache.Dlist.node;
}
and sitedata = {
site_dir : Ocsigen_lib.url_path;
site_dir_string : string;
mutable servtimeout :
(float option * bool) option * (string * (float option * bool)) list;
mutable datatimeout :
(float option * bool) option * (string * (float option * bool)) list;
mutable perstimeout :
(float option * bool) option * (string * (float option * bool)) list;
global_services : Eliom_common.tables;
session_services : Eliom_common.tables Eliom_common.servicecookiestable;
session_data : Eliom_common.datacookiestable;
mutable remove_session_data : string -> unit;
mutable not_bound_in_data_tables : string -> bool;
mutable exn_handler :
Eliom_common.server_params -> exn -> Ocsigen_http_frame.result Lwt.t;
mutable unregistered_services : Ocsigen_lib.url_path list;
mutable unregistered_na_services : Eliom_common.na_key_serv list;
mutable max_volatile_data_sessions_per_group : int * bool;
mutable max_volatile_data_sessions_per_subnet : int * bool;
mutable max_service_sessions_per_group : int * bool;
mutable max_service_sessions_per_subnet : int * bool;
mutable max_persistent_data_sessions_per_group : int option * bool;
mutable max_anonymous_services_per_session : int * bool;
mutable max_anonymous_services_per_subnet : int * bool;
dlist_ip_table : Eliom_common.dlist_ip_table;
mutable ipv4mask : int32 option * bool;
mutable ipv6mask : (int64 * int64) option * bool;
}
val make_server_params :
Eliom_common.sitedata ->
Eliom_common.tables Eliom_common.cookie_info ->
Ocsigen_extensions.request ->
Ocsigen_lib.url_path option ->
Eliom_common.sess_info -> string option -> Eliom_common.server_params
val empty_page_table : unit -> Eliom_common.page_table
val empty_dircontent : unit -> Eliom_common.dircontent
val empty_naservice_table : unit -> Eliom_common.naservice_table
val service_tables_are_empty : Eliom_common.tables -> bool
val empty_tables : int -> bool -> Eliom_common.tables
val new_service_session_tables :
Eliom_common.sitedata -> Eliom_common.tables
val split_prefix_param :
string -> (string * 'a) list -> (string * 'a) list * (string * 'a) list
val getcookies :
string -> 'a Ocsigen_lib.String_Table.t -> 'a Ocsigen_lib.String_Table.t
val get_session_info :
Ocsigen_extensions.request ->
int -> (Ocsigen_extensions.request * Eliom_common.sess_info) Lwt.t
type ('a, 'b) foundornot = Found of 'a | Notfound of 'b
val make_full_cookie_name : string -> string -> string
val make_fullsessname :
sp:Eliom_common.server_params -> string option -> string
val make_fullsessname2 : string -> string option -> string
exception Eliom_retry_with of
(Ocsigen_extensions.request * Eliom_common.sess_info *
Eliom_common.tables Eliom_common.cookie_info)
module Perstables :
sig
val empty : 'a list
val add : 'a -> 'a list -> 'a list
val fold : ('a -> 'b -> 'a) -> 'a -> 'b list -> 'a
end
val perstables : string list Pervasives.ref
val create_persistent_table : string -> 'a Ocsipersist.table
val persistent_cookies_table :
(string * float option * Eliom_common.timeout *
Eliom_common.perssessgrp option)
Ocsipersist.table Lazy.t
val remove_from_all_persistent_tables : string -> unit Lwt.t
val absolute_change_sitedata : Eliom_common.sitedata -> unit
val get_current_sitedata : unit -> Eliom_common.sitedata
val end_current_sitedata : unit -> unit
val add_unregistered :
Eliom_common.sitedata -> Ocsigen_lib.url_path -> unit
val add_unregistered_na :
Eliom_common.sitedata -> Eliom_common.na_key_serv -> unit
val remove_unregistered :
Eliom_common.sitedata -> Ocsigen_lib.url_path -> unit
val remove_unregistered_na :
Eliom_common.sitedata -> Eliom_common.na_key_serv -> unit
val verify_all_registered : Eliom_common.sitedata -> unit
val during_eliom_module_loading : unit -> bool
val begin_load_eliom_module : unit -> unit
val end_load_eliom_module : unit -> unit
val global_register_allowed :
unit -> (unit -> Eliom_common.sitedata) option
val eliom_params_after_action :
((string * string) list * (string * string) list *
(string * string) list Ocsigen_lib.String_Table.t *
(string * string) list Ocsigen_lib.String_Table.t *
(string * string) list)
Polytables.key
val att_key_serv_of_req :
Eliom_common.att_key_req -> Eliom_common.att_key_serv
val na_key_serv_of_req :
Eliom_common.na_key_req -> Eliom_common.na_key_serv
val remove_naservice_table :
Eliom_common.naservice_table ->
Eliom_common.NAserv_Table.key -> Eliom_common.naservice_table
val get_mask4 : Eliom_common.sitedata -> int32
val get_mask6 : Eliom_common.sitedata -> int64 * int64
val ipv4mask : int32 Pervasives.ref
val ipv6mask : (int64 * int64) Pervasives.ref
val create_dlist_ip_table : int -> Eliom_common.dlist_ip_table
val find_dlist_ip_table :
int32 option * 'a ->
(int64 * int64) option * 'a ->
Eliom_common.dlist_ip_table ->
Ocsigen_lib.ip_address ->
(Eliom_common.page_table Pervasives.ref * Eliom_common.page_table_key,
Eliom_common.na_key_serv)
Ocsigen_lib.leftright Ocsigen_cache.Dlist.t
end