0.0
No commit activity in last 3 years
No release in over 3 years
Converts all .erb files to .conf files inside asterisk configuration directory
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.15
>= 5.10.3, ~> 5.10
>= 1.1.14, ~> 1.1
~> 10.0

Runtime

~> 4.5
 Project Readme

erb_asterisk

This gem is add ability to declare asterisk configuration with ERB files.

Installation

$ gem install erb_asterisk

Usage

Create ERB configuration files and templates

├── asterisk
...
│   ├── entities
│   │   ├── office
│   │   │   ├── pjsip_endpoints.conf
│   │   │   └── pjsip_endpoints.conf.erb
│   │   ├── taxi
│   │   │   ├── pjsip_endpoints.conf
│   │   │   ├── pjsip_endpoints.conf.erb
│   │   │   ├── queues.conf
│   │   │   └── queues.conf.erb
...
│   ├── pjsip_endpoints.conf
│   ├── pjsip_endpoints.conf.includes
...
│   ├── queues.conf
│   ├── queues.conf.includes
...
│   ├── templates
│   │   ├── pjsip_operators.erb
│   │   └── queues.erb

Templates

Templates can be defined in asterisk/templates, user home directory ~/.erb_asterisk/templastes, or via command line argument --templates.

pjsip_operators.erb:

[<%= op %>](operator)
auth=<%= op %>
aors=<%= op %>
set_var=GROUP()=operator<%= op %>
[<%= op %>](operator-auth)
username=<%= op %>
[<%= op %>](aor-single-reg)
<% end %>

queues.erb:

[operators-<%= name %>]
strategy = rrmemory
joinempty = yes
musicclass = queue
<% members.times.each do |i| %>
<% op = offset + i %>
<% group = 100 + i %>
member => Local/<%= "#{group}#{op}" %>@queue-dial-control,0,,SIP/<%= op %>
<% end %>
ringinuse = no
announce-frequency = 30
announce-holdtime = no
retry = 0

ERB extensions

render: render template

<%= render 'template_file_name_without_ext', variable_name: variable_value %>

include_to: define inclusion to external configuration file

<%= include_to 'pjsip_endpoints.conf.includes' %>

This will create (overwrite) file pjsip_endpoints.conf.includes with #include command of current processed erb file. For example:

pjsip_endpoints.conf.includes:

#include "entities/office/pjsip_endpoints.conf"
#include "entities/taxi/pjsip_endpoints.conf"
...

You can include this file to your actual pjsip_endpoints.conf.

Also, you can define priority argument for inclusion:

<%= include_to 'pjsip_endpoints.conf.includes' %>
<%= include_to 'pjsip_endpoints.conf.includes', priority: 999 %>

This will render to:

; priority: 999
#include "entities/taxi/pjsip_endpoints.conf"
#include "entities/office/pjsip_endpoints.conf"

apply_line_to: apply line to a tag

office/extensions.conf.erb:

[office-inbound]
<% apply_line_to :global_inbound_context, 'include => office-inbound' %>

extensions.conf.erb:

[inbound]
<%= yield_here :global_inbound_context %>

This will render to:

extensions.conf:

[inbound]
; Yield for :global_inbound_context
include => office-inbound

content_for: apply block to a tag

office/extensions.conf.erb:

<% content_for :global_outbound_context do %>
<% exten = 'super_extension-' -%>
exten => _<%= escape_exten exten %>X.,1,NoOp
same => n,Goto(another-extension,${EXTEN:<%= exten.size %>},1)
<% end %>

extensions.conf.erb:

[outbound]
<%= yield_here :global_outbound_context %>

extensions.conf:

[outbound]
; Yield for :outbound
exten => _super_e[x]te[n]sio[n]-X.,1,NoOp
same => n,Goto(another-extension,${EXTEN:16},1)

apply_line_to and content_for can has priority argument, just like include_to method:

<% content_for :global_outbound_context, priority: 999 do %>
...
<% apply_line_to :outbound_glob, 'include => outbound', priority: -10 %>

escape_exten: escape special symbols in extension name

exten => _<%= escape_exten 'LongExtension1234!' %>-X.,1,NoOp

Renders to:

exten => _Lo[n]gE[x]te[n]sio[n]1234[!]-X.,1,NoOp

Global variables

Project available global variables can be defined inside file erb_asterisk_project.rb, e.g.:

OPERATORS_SIZE = 31

LAN = '192.168.1.0/255.255.255.0'
EXTERNAL_HOST = 'no-ip.some.host.eg'

Command line arguments

usage: erb_asterisk [options] [asterisk_config_path]
    -t, --templates  set templates path (e.g.: ~/.erb_asterisk)
    -v, --version    print the version
    -h, --help       print this help

Run erb_asterisk

$ cd /etc/asterisk
$ erb_asterisk