web¶
Websites
- This module sends the following signals:
- web/alias
- web/site
Schema Contents
Tables¶
web.alias
¶
Aliases
- Primary key
- domain
- site_port
- Foreign keys
reference dns (service)
- Local Columns
- domain
- service
- service_entity_name
- Referenced Columns
Reference subservice entity
- Local Columns
- service_entity_name
- service
- subservice
- Referenced Columns
site
- Local Columns
- site
- service_entity_name
- site_port
- Referenced Columns
dns
- Local Columns
- domain
- service
- service_entity_name
- Referenced Columns
- Columns
domain
dns.t_hostnameDomain name
service
commons.t_keyService
service_entity_name
dns.t_hostnameent. name
subservice
commons.t_keySubservice (e.g. account, alias)
backend_status
NULL | backend.t_statusStatus of database entry in backend. NULL: nothing pending, ‘ins’: entry not present on backend client, ‘upd’: update pending on backend client, ‘del’: deletion peding on backend client.
- Default
'ins'
site
dns.t_hostnameSite
site_port
commons.t_portport
- Default
80
web.site
¶
Website
- Primary key
- domain
- port
- Foreign keys
reference dns (service)
- Local Columns
- domain
- service
- service_entity_name
- Referenced Columns
Reference subservice entity
- Local Columns
- service_entity_name
- service
- subservice
- Referenced Columns
server_access
- Local Columns
- user
- service_entity_name
- owner
- Referenced Columns
- Columns
domain
dns.t_hostnameDomain name
service
commons.t_keyService
service_entity_name
dns.t_hostnameent. name
subservice
commons.t_keySubservice (e.g. account, alias)
backend_status
NULL | backend.t_statusStatus of database entry in backend. NULL: nothing pending, ‘ins’: entry not present on backend client, ‘upd’: update pending on backend client, ‘del’: deletion peding on backend client.
- Default
'ins'
option
jsonbFree options in JSON format
- Default
'{}'
owner
user.t_userOwner
References user.user.owner
On Update: CASCADE
port
commons.t_portPort
user
server_access.t_userServer account under which the htdocs reside
https
boolHTTPS
Functions¶
web.del_alias
¶
del
- Parameters
p_domain
dns.t_hostnamep_site_port
commons.t_port
- Variables defined for body
v_owner
user.t_user
- Returns
- void
- Execute privilege
-- begin userlogin prelude
v_owner := (SELECT t.act_as FROM "user"._get_login() AS t);
-- end userlogin prelude
UPDATE web.alias AS t
SET backend_status = 'del'
FROM web.site AS s, server_access.user AS u
WHERE
-- JOIN web.site
s.domain = t.site AND
-- JOIN server_access.user
u.service_entity_name = t.service_entity_name AND
u.user = s.user AND
u.owner = v_owner AND
t.domain = p_domain AND
t.site_port = p_site_port;
PERFORM backend._conditional_notify(FOUND, 'web', 'alias', p_domain);
web.del_site
¶
del
- Parameters
p_domain
dns.t_hostnamep_port
commons.t_port
- Variables defined for body
v_owner
user.t_user
- Returns
- void
- Execute privilege
-- begin userlogin prelude
v_owner := (SELECT t.act_as FROM "user"._get_login() AS t);
-- end userlogin prelude
UPDATE web.site AS t
SET backend_status = 'del'
FROM server_access.user AS s
WHERE
-- JOIN server_access.user
s.user = t.user AND
s.service_entity_name = t.service_entity_name AND
t.domain = p_domain AND
t.port = p_port AND
s.owner = v_owner;
PERFORM backend._conditional_notify(FOUND, 'web', 'site', p_domain);
web.ins_alias
¶
Insert alias
- Parameters
p_domain
dns.t_hostnamep_site
dns.t_hostnamep_site_port
commons.t_port
- Variables defined for body
v_owner
user.t_user
- Returns
- void
- Execute privilege
-- begin userlogin prelude
v_owner := (SELECT t.act_as FROM "user"._get_login() AS t);
-- end userlogin prelude
PERFORM commons._raise_inaccessible_or_missing(
EXISTS(
SELECT TRUE FROM web.site AS t
JOIN server_access.user AS s
USING ("user", service_entity_name)
WHERE
t.domain = p_site AND
t.port = p_site_port AND
s.owner = v_owner
)
);
INSERT INTO web.alias
(domain, service, subservice, site, site_port, service_entity_name)
VALUES
(
p_domain,
'web',
'alias',
p_site,
p_site_port,
(SELECT service_entity_name FROM web.site WHERE domain = p_site AND port = p_site_port)
);
PERFORM backend._notify_domain('web', 'alias', p_domain);
web.ins_site
¶
Insert site
Todo
check owner and contingent
- Parameters
p_domain
dns.t_hostnamep_port
commons.t_portp_https
boolp_user
server_access.t_userp_service_entity_name
dns.t_hostname
- Variables defined for body
v_owner
user.t_user
- Returns
- void
- Execute privilege
-- begin userlogin prelude
v_owner := (SELECT t.act_as FROM "user"._get_login() AS t);
-- end userlogin prelude
PERFORM system._contingent_ensure(
p_owner:=v_owner,
p_domain:=p_domain,
p_service:='web',
p_subservice:='site',
p_current_quantity_total:=
(SELECT COUNT(*) FROM web.site WHERE owner=v_owner)::int,
p_current_quantity_domain:=
(SELECT COUNT(*) FROM web.site WHERE owner=v_owner AND domain = p_domain)::int
);
INSERT INTO web.site
(domain, service, subservice, port, https, "user", service_entity_name, owner)
VALUES
(p_domain, 'web', 'site', p_port, p_https, p_user, p_service_entity_name, v_owner);
PERFORM backend._notify_domain('web', 'site', p_domain);
web.sel_alias
¶
Select alias
- Parameters
- None
- Variables defined for body
v_owner
user.t_user
- Returns
- TABLE
- Returned columns
domain
dns.t_hostnamesite
dns.t_hostnamesite_port
commons.t_portbackend_status
backend.t_status
- Execute privilege
-- begin userlogin prelude
v_owner := (SELECT t.act_as FROM "user"._get_login() AS t);
-- end userlogin prelude
RETURN QUERY
SELECT
t.domain,
t.site,
t.site_port,
t.backend_status
FROM web.alias AS t
JOIN web.site AS u
ON
u.domain = t.site AND
u.port = t.site_port
JOIN server_access.user AS s
ON
u.user = s.user AND
s.service_entity_name = t.service_entity_name
WHERE s.owner = v_owner
ORDER BY t.backend_status, t.domain;
web.sel_site
¶
Owner defined via server_access
- Parameters
- None
- Variables defined for body
v_owner
user.t_user
- Returns
- TABLE
- Returned columns
service
commons.t_keysubservice
commons.t_keydomain
dns.t_hostnameport
commons.t_portuser
server_access.t_userservice_entity_name
dns.t_hostnamehttps
boolbackend_status
backend.t_statusoption
jsonb
- Execute privilege
-- begin userlogin prelude
v_owner := (SELECT t.act_as FROM "user"._get_login() AS t);
-- end userlogin prelude
RETURN QUERY
SELECT
t.service,
t.subservice,
t.domain,
t.port,
t.user,
t.service_entity_name,
t.https,
t.backend_status,
t.option
FROM web.site AS t
JOIN server_access.user AS s
USING ("user", service_entity_name)
WHERE
s.owner = v_owner
ORDER BY t.backend_status, t.domain, t.port;
web.srv_alias
¶
backend web.alias
- Parameters
p_include_inactive
boolean
- Returns
- TABLE
- Returned columns
domain
dns.t_hostnamesite
dns.t_hostnamesite_port
commons.t_portbackend_status
backend.t_status
- Execute privilege
PERFORM backend._get_login();
RETURN QUERY
WITH
-- DELETE
d AS (
DELETE FROM web.alias AS t
WHERE
backend._deleted(t.backend_status) AND
backend._machine_priviledged(t.service, t.domain)
),
-- UPDATE
s AS (
UPDATE web.alias AS t
SET backend_status = NULL
WHERE
backend._machine_priviledged(t.service, t.domain) AND
backend._active(t.backend_status)
)
-- SELECT
SELECT
t.domain,
t.site,
t.site_port,
t.backend_status
FROM web.alias AS t
WHERE
backend._machine_priviledged(t.service, t.domain) AND
(backend._active(t.backend_status) OR p_include_inactive);
web.srv_site
¶
backend web.site
- Parameters
p_include_inactive
boolean
- Returns
- TABLE
- Returned columns
domain
dns.t_hostnameport
commons.t_portuser
server_access.t_userservice_entity_name
dns.t_hostnamehttps
boolsubservice
commons.t_keyoption
jsonbbackend_status
backend.t_status
- Execute privilege
PERFORM backend._get_login();
RETURN QUERY
WITH
-- DELETE
d AS (
DELETE FROM web.site AS t
WHERE
backend._deleted(t.backend_status) AND
backend._machine_priviledged(t.service, t.domain)
),
-- UPDATE
s AS (
UPDATE web.site AS t
SET backend_status = NULL
WHERE
backend._machine_priviledged(t.service, t.domain) AND
backend._active(t.backend_status)
)
-- SELECT
SELECT
t.domain,
t.port,
t.user,
t.service_entity_name,
t.https,
t.subservice,
t.option,
t.backend_status
FROM web.site AS t
WHERE
backend._machine_priviledged(t.service, t.domain) AND
(backend._active(t.backend_status) OR p_include_inactive)
ORDER BY t.domain, t.port;