module Opensips::Pi

Constants

VERSION

Public Class Methods

add(user, pass, domain=nil) click to toggle source

Add a new OpenSIPS user.

@param user [String] @param pass [String] @param domain [String]

# File lib/opensips-pi.rb, line 51
def self.add(user, pass, domain=nil)
  call("#{bin} add #{identifier(user,domain).shellescape} #{pass.shellescape}")
end
bin() click to toggle source

Returns the OpenSIPS control tool, that is “opensipsctl” by default. You can customize this with {.bin=}.

@return [String]

# File lib/opensips-pi.rb, line 15
def self.bin
  @@bin || "opensipsctl"
end
bin=(cmd) click to toggle source

Customize the OpenSIPS control tool. See {.bin} for more information.

@example

Opensips::Pi.bin = "/usr/sbin/opensipsctl"
Opensips::Pi.bin #=> "/usr/sbin/opensipsctl"

@param cmd [String] Path to OpenSIPS control tool.

# File lib/opensips-pi.rb, line 25
def self.bin=(cmd)
  @@bin = cmd
end
logger() click to toggle source

Returns an instance of Ruby’s {www.ruby-doc.org/stdlib-1.9.3/libdoc/logger/rdoc/Logger.html Logger} (by default) or a logger set with {.logger=}.

@return [Logger]

# File lib/opensips-pi.rb, line 33
def self.logger
  @@logger ||= Logger.new(STDOUT)
end
logger=(klass) click to toggle source

Customize the logger. See {.logger} for more information.

@example

Opensips::Pi.logger = Rails.logger

@param [Logger]

# File lib/opensips-pi.rb, line 42
def self.logger=(klass)
  @@logger = klass
end
password(user, pass, domain=nil) click to toggle source

Change user’s password.

@param user [String] @param pass [String] New password @param domain [String]

# File lib/opensips-pi.rb, line 68
def self.password(user, pass, domain=nil)
  call("#{bin} passwd #{identifier(user,domain).shellescape} #{pass.shellescape}")
end
remove(user, domain=nil) click to toggle source

Remove an user from OpenSIPS.

@param user [String] @param domain [String]

# File lib/opensips-pi.rb, line 59
def self.remove(user, domain=nil)
  call("#{bin} rm #{identifier(user,domain).shellescape}")
end

Private Class Methods

call(cmd) click to toggle source
# File lib/opensips-pi.rb, line 77
def self.call(cmd)
  out, err, code = Open3.capture3(cmd)

  logger.info("Opensips::Pi") { out }
  logger.error("Opensips::Pi") { err }

  [code.success?,out,err]
end
identifier(user, domain) click to toggle source
# File lib/opensips-pi.rb, line 73
def self.identifier(user, domain)
  domain ? "#{user}@#{domain}" : user
end