Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save mikesavtechnology/5330bb0f0129d5b29a9b482311036b8c to your computer and use it in GitHub Desktop.
Save mikesavtechnology/5330bb0f0129d5b29a9b482311036b8c to your computer and use it in GitHub Desktop.
class OpenVPNAccessServer < Scout::Plugin
def build_report
user_output = JSON.parse(`sudo /usr/local/openvpn_as/scripts/sacli VPNSummary`)
license_output = `sudo /usr/local/openvpn_as/scripts/liman info`[5..-1]
license_output.gsub!("'", '"')
license_output.chomp!
license_output.downcase!
license_output = JSON.parse(license_output)
available_licenses = license_output["concurrent_connections"] - user_output["n_clients"]
report(:Connected => user_output["n_clients"], :Licensed => license_output["concurrent_connections"], :Available => available_licenses)
end
end
@havenwood
Copy link

class OpenVPNAccessServer < Scout::Plugin
  SACLI_SCRIPT = 'sudo /usr/local/openvpn_as/scripts/sacli VPNSummary'
  LIMAN_SCRIPT = 'sudo /usr/local/openvpn_as/scripts/liman info'

  def build_report
    connected = user_output['n_clients']
    licensed = license['concurrent_connections']
    available = connected - licensed

    report connected: connected, licensed: licensed, available: available
  end

  private

  def user_output
    JSON.parse `#{SACLI_SCRIPT}`
  end

  def license
    JSON.parse `#{LIMAN_SCRIPT}`[5..-1].gsub("'", '"').chomp.downcase
  end
end

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment