jabber¶
Jabber (XMPP)
- This module sends the following signals:
- jabber/account
Schema Contents
Tables¶
jabber.account
¶
Jabber accounts
- Primary key
- node
- domain
- 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
- 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)
owner
user.t_userOwner
References user.user.owner
On Update: CASCADE
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'
node
email.t_localpartpart in front of the @ in account name
password
commons.t_passwordUnix shadow crypt format
Functions¶
jabber.del_account
¶
Delete jabber account
- Parameters
p_node
email.t_localpartp_domain
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
UPDATE jabber.account
SET backend_status = 'del'
WHERE
node = p_node AND
domain = p_domain AND
owner = v_owner;
PERFORM backend._conditional_notify(FOUND, 'jabber', 'account', p_domain);
jabber.ins_account
¶
Insert jabber account
- Parameters
p_node
email.t_localpartp_domain
dns.t_hostnamep_password
commons.t_password_plaintext
- Variables defined for body
v_num_total
integerv_num_domain
integerv_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
v_num_total := (SELECT COUNT(*) FROM jabber.account AS t WHERE t.owner=v_owner);
v_num_domain := (SELECT COUNT(*) FROM jabber.account AS t WHERE t.owner=v_owner AND t.domain = p_domain);
PERFORM system._contingent_ensure(
p_owner:=v_owner,
p_domain:=p_domain,
p_service:='jabber',
p_subservice:='account',
p_current_quantity_total:=v_num_total,
p_current_quantity_domain:=v_num_domain);
INSERT INTO jabber.account
(service, subservice, node, domain, owner, password, service_entity_name) VALUES
('jabber', 'account', p_node, p_domain, v_owner, commons._hash_password(p_password),
(SELECT service_entity_name FROM dns.service WHERE service='jabber' AND domain = p_domain));
PERFORM backend._notify_domain('jabber', 'account', p_domain);
jabber.sel_account
¶
Select jabber accounts
- Parameters
- None
- Variables defined for body
v_owner
user.t_user
- Returns
- TABLE
- Returned columns
node
email.t_localpartdomain
dns.t_hostnamebackend_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.node,
t.domain,
t.backend_status
FROM jabber.account AS t
WHERE
t.owner = v_owner
ORDER BY t.backend_status, t.node, t.domain;
jabber.srv_account
¶
Lists all jabber accounts
- Parameters
p_include_inactive
boolean
- Returns
- TABLE
- Returned columns
node
email.t_localpartdomain
dns.t_hostnamepassword
commons.t_passwordbackend_status
backend.t_status
- Execute privilege
PERFORM backend._get_login();
RETURN QUERY
WITH
-- DELETE
d AS (
DELETE FROM jabber.account AS t
WHERE
backend._deleted(t.backend_status) AND
backend._machine_priviledged(t.service, t.domain)
),
-- UPDATE
s AS (
UPDATE jabber.account AS t
SET backend_status = NULL
WHERE
backend._machine_priviledged(t.service, t.domain) AND
backend._active(t.backend_status)
)
-- SELECT
SELECT
t.node,
t.domain,
t.password,
t.backend_status
FROM jabber.account AS t
WHERE
backend._machine_priviledged(t.service, t.domain) AND
(backend._active(t.backend_status) OR p_include_inactive);
jabber.upd_account
¶
Change jabber account password
- Parameters
p_node
email.t_localpartp_domain
dns.t_hostnamep_password
commons.t_password_plaintext
- 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 jabber.account
SET
password = commons._hash_password(p_password)
WHERE
node = p_node AND
domain = p_domain AND
owner = v_owner;
PERFORM backend._conditional_notify(FOUND, 'jabber', 'account', p_domain);