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
domaindns.t_hostnameDomain name
servicecommons.t_keyService
service_entity_namedns.t_hostnameent. name
subservicecommons.t_keySubservice (e.g. account, alias)
backend_statusNULL | 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'
sitedns.t_hostnameSite
site_portcommons.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
domaindns.t_hostnameDomain name
servicecommons.t_keyService
service_entity_namedns.t_hostnameent. name
subservicecommons.t_keySubservice (e.g. account, alias)
backend_statusNULL | 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'
optionjsonbFree options in JSON format
- Default
'{}'
owneruser.t_userOwner
References user.user.owner
On Update: CASCADE
portcommons.t_portPort
userserver_access.t_userServer account under which the htdocs reside
httpsboolHTTPS
Functions¶
web.del_alias¶
del
- Parameters
p_domaindns.t_hostnamep_site_portcommons.t_port
- Variables defined for body
v_owneruser.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_domaindns.t_hostnamep_portcommons.t_port
- Variables defined for body
v_owneruser.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_domaindns.t_hostnamep_sitedns.t_hostnamep_site_portcommons.t_port
- Variables defined for body
v_owneruser.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_domaindns.t_hostnamep_portcommons.t_portp_httpsboolp_userserver_access.t_userp_service_entity_namedns.t_hostname
- Variables defined for body
v_owneruser.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_owneruser.t_user
- Returns
- TABLE
- Returned columns
domaindns.t_hostnamesitedns.t_hostnamesite_portcommons.t_portbackend_statusbackend.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_owneruser.t_user
- Returns
- TABLE
- Returned columns
servicecommons.t_keysubservicecommons.t_keydomaindns.t_hostnameportcommons.t_portuserserver_access.t_userservice_entity_namedns.t_hostnamehttpsboolbackend_statusbackend.t_statusoptionjsonb
- 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_inactiveboolean
- Returns
- TABLE
- Returned columns
domaindns.t_hostnamesitedns.t_hostnamesite_portcommons.t_portbackend_statusbackend.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_inactiveboolean
- Returns
- TABLE
- Returned columns
domaindns.t_hostnameportcommons.t_portuserserver_access.t_userservice_entity_namedns.t_hostnamehttpsboolsubservicecommons.t_keyoptionjsonbbackend_statusbackend.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;