====== Base de données VHFFS ====== Cette page décrit la base de données de VHFFS (les champs et leur utilité). Elle est à compléter et se rapporte à la versin 4.1 de VHFFS. ===== vhffs_object ===== Il s'agit de la table de base. Elle permet l'implantation d'un système d'héritage. Ainsi, les utilisateurs, les groupes, les différentes entités composant les services sont tous des objets. Cela permet d'éviter la duplication de champs. \d vhffs_object Table «public.vhffs_object» Colonne | Type | Modificateurs ---------------+-----------------------------+------------------------------------------------------------------ object_id | integer | not null default nextval('vhffs_object_object_id_seq'::regclass) owner_uid | integer | date_creation | timestamp without time zone | state | character varying | not null description | text | type | integer | default 0 Index : «vhffs_object_pkey» PRIMARY KEY, btree (object_id) «idx_vhffs_object_state» btree (state) * ''object_id'' : identifiant de l'objet * ''owner_uid'' : identifiant de l'utilisateur propriétaire de l'objet * ''date_creation'' : date de création de l'objet * ''state'' : état de l'objet (défini dans ''Vhffs::Constants'') * ''description'' : description de l'objet (saisie par l'utilisateur) * ''type'' : type de l'objet (défini dans ''Vhffs::Constants'') ===== DNS ===== ==== vhffs_dns ==== Table contenant les données globales sur une zone. Cette table était auparavant décomposée en plusieurs tables (''vhffs_dns_global'' et ''vhffs_dns_soa''). Les données qu'elle contient sont destinées à [[http://mydns.bboy.net||MyDNS]], elles lui sont présentées //via// la vue ''vhffs_dns_soa'' qui assure la conversion des noms de champs. \d vhffs_dns Table «public.vhffs_dns» Colonne | Type | Modificateurs -----------+------------------------+------------------------------------------------------------------- dns_id | integer | not null default nextval('vhffs_dns_global_dns_id_seq'::regclass) domain | character varying(255) | not null owner_gid | integer | owner_uid | integer | object_id | integer | ns | character varying(255) | not null mbox | character varying(255) | not null serial | integer | not null default 1 refresh | integer | not null default 28800 retry | integer | not null default 7200 expire | integer | not null default 604800 minimum | integer | not null default 86400 ttl | integer | not null default 86400 Index : «vhffs_dns_pkey4» PRIMARY KEY, btree (dns_id) Contraintes de clés secondaires : «fk_vhffs_dns_vhffs_groups» FOREIGN KEY (owner_gid) REFERENCES vhffs_groups(gid) «fk_vhffs_dns_vhffs_object» FOREIGN KEY (object_id) REFERENCES vhffs_object(object_id) ON DELETE CASCADE «fk_vhffs_dns_vhffs_users» FOREIGN KEY (owner_uid) REFERENCES vhffs_users(uid) Les cinq premiers champs formaient auparavant la table ''vhffs_dns_global'', les suivant ''vhffs_dns_soa''. * ''dns_id'' : identifiant autogénéré du domaine * ''domain'' : nom du domaine * ''owner_gid'' : identifiant du groupe propriétaire * ''owner_uid'' : identifiant de l'utilisateur propriétaire * ''object_id'' : identifiant de l'objet correspondant * ''ns'' : nom du serveur de nom primaire (c-à-d. nom du serveur de nom MyDNS, paramètre ''default_ns1'' de la configuration VHFFS) * ''mbox'' : adresse email de la personne gérant le serveur DNS (''default_mbox'') * ''serial'' : numéro de série des données de zone (format ''AAAAMMJJVV'') * ''refresh'' : période de rafraîchissement des serveurs secondaires en secondes * ''retry'' : délai avant de réessayer un rafraîchissement si le transfert échoue (en seconde) * ''expire'' : délai d'expiration des données lorsque le serveur ne répond plus * ''minimum'' : TTL minimum pour tous les rr de ce domaine, si un enregistrement de ''vhffs_dns_rr'' contient une valeur inférieure pour son champ ''ttl'', c'est la valeur de minimum qui est utilisée * ''ttl'' : Durée de conservation dans les caches DNS. ==== vhffs_dns_rr ==== Table contenant les "resource records" d'une zone. \d vhffs_dns_rr Table «public.vhffs_dns_rr» Colonne | Type | Modificateurs ---------+------------------------+----------------------------------------------------------- id | integer | not null default nextval('vhffs_dns_rr_id_seq'::regclass) zone | integer | not null name | character varying(64) | not null type | character varying(5) | not null data | character varying(128) | not null aux | integer | not null default 0 ttl | integer | not null default 86400 Index : «vhffs_dns_rr_pkey» PRIMARY KEY, btree (id) Contraintes : «fk_vhffs_dns_rr_chk_type» CHECK ("type"::text = 'A'::text OR "type"::text = 'AAAA'::text OR "type"::text = 'CNAME'::text OR "type"::text = 'HINFO'::text OR "type"::text = 'MX'::text OR "type"::text = 'NS'::text OR "type"::text = 'PTR'::text OR "type"::text = 'RP'::text OR "type"::text = 'SRV'::text OR "type"::text = 'TXT'::text) Contraintes de clés secondaires : «fk_vhffs_dns_rr_vhffs_dns» FOREIGN KEY ("zone") REFERENCES vhffs_dns(dns_id) ON DELETE CASCADE * ''id'' : identifiant de l'enregistrement (autogénéré) * ''zone'' : identifiant du SOA auquel se rapporte l'enregistrement * ''type'' : type de l'enregistrement (''A'', ''AAAA'', ''CNAME'', //etc//.) * ''name'' et ''data'' : nom auquel se rapporte l'enregistrement et données correspondantes. La signification varie selon les cas : * type ''A'' ou ''AAAA'' : nom d'hôte et IP correspondante * type ''CNAME'' : alias et nom réel de la machine * type ''MX'' : hôte et serveur mail correspondant * type ''NS'' : nom d'hôte et nameserver correspondant * type ''PTR'' : adresse IP et nom d'hôte correspondant * type ''SRV'' : ''name'' contient le nom du service et ''data'' contient ''[poids] [port] [machine]'' * type ''TXT'' : Nom de l'hote et texte associé * ''aux'' : Informations complémentaires (priorité dans le cas d'enregistrements ''MX'' ou ''SRV'') * ''ttl'' : Temps de vie dans le cache ===== Mailing lists ===== ==== vhffs_ml ==== Table contenant les informations sur les mailing lists de la plateforme. \d vhffs_ml Table «public.vhffs_ml» Colonne | Type | Modificateurs --------------+------------------------+---------------------------------------------------------- ml_id | integer | not null default nextval('vhffs_ml_ml_id_seq'::regclass) local_part | character varying | not null domain | character varying | prefix | character varying | owner_uid | integer | owner_gid | integer | object_id | integer | admin | character varying(250) | open_post | boolean | open_archive | boolean | open_sub | boolean | reply_to | boolean | moderated | boolean | signature | character varying(250) | Index : «vhffs_ml_pkey» PRIMARY KEY, btree (ml_id) «vhffs_ml_unique_address» UNIQUE, btree (local_part, "domain") Contraintes de clés secondaires : «fk_vhffs_ml_vhffs_groups» FOREIGN KEY (owner_gid) REFERENCES vhffs_groups(gid) «fk_vhffs_ml_vhffs_object» FOREIGN KEY (object_id) REFERENCES vhffs_object(object_id) ON DELETE CASCADE «fk_vhffs_ml_vhffs_users» FOREIGN KEY (owner_uid) REFERENCES vhffs_users(uid) **__Note__** : il n'existe pas de contrainte entre le domaine et la table ''vhffs_mxdomain''. Cette contrainte est vérifiée logiciellement **sauf** dans le cas où le domaine est celui défini par ''default_domain'' dans la section ''mailing'' de la configuration. * ''ml_id'' : Identifiant autogénéré de la mailing list * ''local_part'' : préfixe de la mailing list (partie avant le @) * ''domain'' : domaine de la mailing list (après le @) * ''prefix'' : préfixe ajouté à tous les mails envoyés sur la mailing list * ''owner_uid'' : identifiant de l'utilisateur propriétaire * ''owner_gid'' : identifiant du groupe propriétaire * ''object_id'' : identifiant de l'objet correspondant * ''admin'' : adresse email de l'administrateur de la liste (par défaut, adresse email de l'utilisateur créateur) * ''open_post'' : indique si les personnes non inscrites à la mailing list peuvent poster * ''open_archive'' : indique si les archives sont disponibles publiquement * ''open_sub'' : indique si les inscriptions sont publique (sinon il est possible d'ajouter des membres //via// le panel * ''reply_to'' : valeur du champ ''Reply To'' des mails envoyés * ''moderated'' : indique si la liste est modérée * ''url'' : ???? * ''signature'' : Signature de la ml ajoutée à chaque pied de mail ==== vhffs_ml_subscribers ==== Table répertoriant toutes les personnes ayant souscrit à une mailing list. \d vhffs_ml_subscribers Table «public.vhffs_ml_subscribers» Colonne | Type | Modificateurs ----------+-----------------------+----------------------------------------------------------------------- sub_id | integer | not null default nextval('vhffs_ml_subscribers_sub_id_seq'::regclass) member | character varying | not null perm | integer | not null hash | character varying | ml_id | integer | not null language | character varying(16) | Index : «vhffs_ml_subscribers_pkey» PRIMARY KEY, btree (sub_id) Contraintes de clés secondaires : «fk_vhffs_ml_subscribers_vhffs_ml» FOREIGN KEY (ml_id) REFERENCES vhffs_ml(ml_id) ON DELETE CASCADE * ''sub_id'' : Identifiant de l'abonné * ''member'' : Adresse de l'abonné * ''perm'' : Niveau d'autorisation de l'abonné : * ''ML_RIGHT_SUB_WAITING_FOR_REPLY'' : Utilisateur ayant demandé une inscription mais ne l'ayant pas encore validée * ''ML_RIGHT_SUB'' : Utilisateur classique (ajouté directement ou ayant confirmé son inscription) * ''ML_RIGHT_ADMIN'' : Administrateur de la liste (accès aux commandes d'administration //via// xxx-request@domain.com * ''ML_RIGHT_SUB_WAITING_FOR_DEL'' : Utilisateur ayant demandé sa désinscription mais ne l'ayant pas encore confirmée * ''active'' : Indique si l'utilisateur est actif (??? semble inutilisé) * ''hash'' : Hash lié à la requête de l'utilisateur (pour inscription ou désinscription) * ''ml_id'' : Identifiant de la liste à laquelle l'utilisateur est inscrit * ''language'' : Langue de l'utilisateur (pour les tâches administratives) La clé ''fk_vhffs_ml_subscribers_vhffs_ml'' permet la suppression de tous les abonnés à une liste lors de la suppression de celle-ci. ===== vhffs_acl ===== Cette table contient les autorisations au niveau du panel pour les différents objets. Elle permet d'indiquer quels sont les groupes et/ou utilisateurs qui vont pouvoir consulter, modifier, supprimer, //etc//. un service. \d vhffs_acl Table «public.vhffs_acl» Colonne | Type | Modificateurs ---------+---------+------------------------------------------------------------ acl_id | integer | not null default nextval('vhffs_acl_acl_id_seq'::regclass) oid_src | integer | perm | integer | not null oid_dst | integer | Index : «vhffs_acl_pkey» PRIMARY KEY, btree (acl_id) Contraintes de clés secondaires : «fk_vhffs_acl_vhffs_object_dst» FOREIGN KEY (oid_dst) REFERENCES vhffs_object(object_id) ON DELETE CASCADE «fk_vhffs_acl_vhffs_object_src» FOREIGN KEY (oid_src) REFERENCES vhffs_object(object_id) ON DELETE CASCADE * ''acl_id'' : Identifiant de l'ACL ; * ''oid_src'' : Identifiant de l'objet correspondant au groupe ou à la personne disposant d'un accès (FIXME renommer le champ) ; * ''perm'' : Niveau d'accès de l'utilisateur/groupe ; * ''oid_dst'' : Objet (service) concerné par l'ACL.