/etc/yate/register.conf is in yate-core 5.4.0-1-1ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 | [general]
; Global module settings that are read only at first initialization
; expires: int: Will execute the engine.timer query only every that many seconds
;expires=30
; stoperror: regexp: Regular expression matching errors that will stop fallback
;stoperror=busy
; The following parameters enable handling of individual messages
; Each must be enabled manually in this config file
; user.auth: bool: Activate handler on the "user.auth" message
;user.auth=no
; user.register: bool: Activate handler on the "user.register" message
;user.register=no
; user.unregister: bool: Activate handler on the "user.unregister" message
;user.unregister=no
; engine.timer: bool: Activate handler on the "engine.timer" message
;engine.timer=no
; call.preroute: bool: Activate handler on the "call.preroute" message
;call.preroute=no
; call.route: bool: Activate handler on the "call.route" message
;call.route=no
; call.cdr: bool: Activate handler on the "call.cdr" message
;call.cdr=no
; linetracker: bool: Activate line status tracking on "call.cdr"
;linetracker=no
; fallback: bool: Activate fallback routing handlers on the "chan.disconnected",
; "call.answered" and "chan.hangup" messages
;fallback=no
; accounts: bool: Activate client registrations on "user.notify" and "engine.timer"
;accounts=no
; subscriptions: bool: Activate resource subscriptions support
; You will also need to activate the handlers for the following messages:
; "resource.subscribe", "user.notify", "call.cdr", "engine.timer"
;subscriptions=no
; resource.subscribe: bool: Activate handler on the "resource.subscribe" message
;resource.subscribe=no
[default]
; This section holds default settings for each of the following message handlers
; All these settings can be overriden in individual handler sections
; priority: int: Priority in Yate's handlers chain
;priority=50
; account: string: Name of the database connection to use
;account=
; In each of the following sections you have to specify the following:
; - initial query to execute when module is initialized
; - query to execute for each received message
; - result field to copy in message's textual return value (only for some)
; You can also override the settings from section [default]
; Sample queries below are for PostgreSQL
; Timestamps and intervals are unfortunately non-portable
[user.auth]
; Query and result name for the user.auth message
; The result must not be empty for password authentication to work
; The designated result field is mandatory in the columns to prevent a
; configuration error from authorizing everybody. Use something
; like "SELECT NULL AS password" if you really don't need it ever
;query=SELECT password FROM users WHERE username='${username}' AND password IS NOT NULL AND password<>''
;result=password
[user.register]
; Query for the user.register message
;query=UPDATE users SET location='${data}',expires=CURRENT_TIMESTAMP + INTERVAL '${expires} s' WHERE username='${username}'
[user.unregister]
; Query for the user.unregister message
;query=UPDATE users SET location=NULL,expires=NULL WHERE expires IS NOT NULL AND username='${username}'
[engine.timer]
; Query for the timer message that expires registrations
; Also look at the expires setting in section [general]
;query=UPDATE users SET location=NULL,expires=NULL WHERE expires IS NOT NULL AND expires<=CURRENT_TIMESTAMP
[call.preroute]
; Query and result name for the prerouting message
;query=
;priority=120
[call.route]
; Query and result name for the routing message
; offlineauto: boolean: Set the "offline" error for queries that return records but no route
;offlineauto=yes
;query=SELECT location,(CASE WHEN location IS NULL THEN 'offline' ELSE NULL END) AS error FROM users WHERE username='${called}'
;result=location
;priority=120
[call.cdr]
; Queries for the CDR updating message
; critical: boolean: Reject all registrations and routing if query fails
;critical=yes
;initquery=UPDATE cdr SET ended=true WHERE ended IS NULL OR NOT ended
;cdr_initialize=INSERT INTO cdr VALUES(TIMESTAMP 'EPOCH' + INTERVAL '${time} s','${chan}',\
; '${address}','${direction}','${billid}','${caller}','${called}',INTERVAL '${duration} s',\
; INTERVAL '${billtime} s',INTERVAL '${ringtime} s','${status}','${reason}',false)
;cdr_update=UPDATE cdr SET address='${address}',direction='${direction}',billid='${billid}',\
; caller='${caller}',called='${called}',duration=INTERVAL '${duration} s',\
; billtime=INTERVAL '${billtime} s',ringtime=INTERVAL '${ringtime} s',status='${status}',\
; reason='${reason}' WHERE chan='${chan}' AND time=TIMESTAMP 'EPOCH' + INTERVAL '${time} s'
;cdr_finalize=UPDATE cdr SET address='${address}',direction='${direction}',\
; billid='${billid}',caller='${caller}',called='${called}',duration=INTERVAL '${duration} s',\
; billtime=INTERVAL '${billtime} s',ringtime=INTERVAL '${ringtime} s',status='${status}',\
; reason='${reason}',ended=true WHERE chan='${chan}' AND time=TIMESTAMP 'EPOCH' + INTERVAL '${time} s'
;cdr_combined=INSERT INTO cdr VALUES(TIMESTAMP 'EPOCH' + INTERVAL '${time} s','${chan}',\
; '${address}','${caller}','${called}',INTERVAL '${duration} s',INTERVAL '${billtime} s',\
; INTERVAL '${ringtime} s','${status}','${reason}','${out_leg.chan}','${out_leg.address}',\
; INTERVAL '${out_leg.billtime} s',INTERVAL '${out_leg.ringtime} s',\
; INTERVAL '${out_leg.duration} s','${out_leg.reason}'
[linetracker]
; Queries for the line usage tracker
; critical: boolean: Reject all registrations and routing if query fails
;critical=no
;initquery=UPDATE users SET inuse=0
;cdr_initialize=UPDATE users SET inuse=inuse+1 WHERE username='${external}'
;cdr_finalize=UPDATE users SET inuse=(CASE WHEN inuse>0 THEN inuse-1 ELSE 0 END) WHERE username='${external}'
[accounts]
; Queries for registering as client to other servers
; query executed only once to create client registrations at startup
;initquery=SELECT account,protocol,username,password,server FROM accounts WHERE enabled IS TRUE
; poll on timer to update registrations if database was changed externally
;timerquery=BEGIN; \
; SELECT (CASE WHEN enabled IS FALSE THEN 'logout' ELSE 'login' END) AS operation,\
; account,protocol,username,password,server FROM accounts WHERE modified IS TRUE; \
; UPDATE accounts SET modified=FALSE; \
; COMMIT
; update account status after receiving an user.notify
;statusquery=UPDATE accounts SET status='${status}' WHERE account='${internalaccount}'
[resource.subscribe]
; Queries used for event subscribe and event state changes notification
; query executed on subscribe requests to check authorisation and refresh a subscription
;subscribe_subscribe=SELECT * FROM subscriptions_subscribe('${notifier}','${event}','${subscriber}','${data}','${notifyto}',INTERVAL '${expires} s') as t(notifier text,data text,subscriber text,event text,notifyto text,notifyseq int8)
; query executed on unsubscribe requests to check authorisation and remove a subscription
;subscribe_unsubscribe=SELECT * FROM subscriptions_unsubscribe('${notifier}','${event}','${subscriber}')
; query executed when nedded to get all subscribers for a specified notifier's event
;subscribe_notify=SELECT * FROM subscriptions_notify('${notifier}','${event}') as t(notifier text,data text,subscriber text,event text,notifyto text,notifyseq int8)
; query used to expire subscriptions
;subscribe_expire=SELECT * FROM subscriptions_expires() AS t(notifier text,data text,subscriber text,event text,notifyto text,notifyseq int8)
|