Files
Geneweb/lib/config.mli
2024-03-05 22:01:20 +01:00

128 lines
3.3 KiB
OCaml

open Def
open Gwdb
(** Authentication scheme data type *)
type auth_scheme_kind =
| NoAuth
| TokenAuth of token_auth_scheme
| HttpAuth of http_auth_scheme
and token_auth_scheme = { ts_user : string; ts_pass : string }
(** Authentication via security token *)
(** Authentication via HTTP *)
and http_auth_scheme =
| Basic of basic_auth_scheme
| Digest of digest_auth_scheme
and basic_auth_scheme = {
bs_realm : string;
bs_user : string;
bs_pass : string;
}
(** Basic authentication scheme inside {i Autorization} HTTP header *)
and digest_auth_scheme = {
ds_username : string;
ds_realm : string;
ds_nonce : string;
ds_meth : string;
ds_uri : string;
ds_qop : string;
ds_nc : string;
ds_cnonce : string;
ds_response : string;
}
(** Digest authentication scheme inside {i Autorization} HTTP header *)
type output_conf = {
status : Def.httpStatus -> unit;
header : string -> unit;
body : string -> unit;
flush : unit -> unit;
}
(** HTTP printer, that prints and sends requests on the user's socket *)
type env = (string * Adef.encoded_string) list
(** Geneweb configuration data type *)
type config = {
from : string;
api_mode : bool;
manitou : bool;
supervisor : bool;
wizard : bool;
is_printed_by_template : bool;
debug : bool;
query_start : float;
friend : bool;
just_friend_wizard : bool;
user : string;
username : string;
userkey : string;
auth_scheme : auth_scheme_kind;
command : string;
indep_command : string;
highlight : string;
lang : string;
vowels : string list;
default_lang : string;
browser_lang : string;
default_sosa_ref : iper * Gwdb.person option;
multi_parents : bool;
authorized_wizards_notes : bool;
public_if_titles : bool;
public_if_no_date : bool;
mutable setup_link : bool;
access_by_key : bool;
private_years : int;
private_years_death : int;
private_years_marriage : int;
hide_names : bool;
use_restrict : bool;
no_image : bool;
no_note : bool;
bname : string;
nb_of_persons : int;
cgi_passwd : string;
env : env;
mutable senv : env;
mutable henv : env;
base_env : (string * string) list (* content of .gwf file *);
allowed_titles : string list Lazy.t;
denied_titles : string list Lazy.t;
request : string list;
lexicon : (string, string) Hashtbl.t;
mutable charset : string;
is_rtl : bool;
left : string;
right : string;
auth_file : string;
border : int;
mutable n_connect : (int * int * int * (string * float) list) option;
today : dmy;
today_wd : int;
time : int * int * int;
ctime : float;
mutable output_conf : output_conf;
(* HTTP printer *)
(* prefix for image urls:
the value of argument -images_url if specified, otherwise
command ^ "?m=IM&v=" in CGI mode
"images" otherwise *)
gw_prefix : string;
images_prefix : string;
(* if true, the base name is in the b argument of the query string: ?b=BASE&...
if false, the base name is the last element of the uri path: .../base?... *)
etc_prefix : string;
(* in CGI mode, provides location of etc files to Apache for direct loading *)
cgi : bool;
forced_plugins : string list;
plugins : string list;
}
(** Geneweb configuration data type *)
val empty : config
(** A dummy {!type:config} value, with uninitialized fields.
Used for testing purpose *)