NAME

Captive::Portal::Role::Utils - common utils for Captive::Portal

DESCRIPTION

Utility roles needed by other modules. All roles die on error.

ROLES

$capo->find_mac($ip)

Returns the corresponding MAC address for given IP address from /proc/net/arp on success or undef on failure.

$capo->ip2hex($ip)

Helper method, convert ipv4 address to hexadecimal representation.

Example: '10.1.2.254' -> '0a0102fe'

$capo->normalize_ip($ip)

Helper method, normalize ip adresses, strip leading zeros in octets.

Example: '012.2.3.000' -> '12.2.3.0'

$capo->drop_privileges()

Running under root, like normal cronjobs do, should drop to the same uid/gid as the http daemon (and fcgi script). uid/gid is taken from config as RUN_USER/RUN_GROUP.

$capo->spawn_cmd(@cmd_with_options, [$spawn_cmd_options])

Wrapper to run external commands, capture and return (stdout/stderr).

Last optional parameter item is a hashref with options for spawn_cmd itself:

{
    timeout           => 2,    # default 2s
    ignore_exit_codes => [],   # exit codes without exception
}

If the external command doesn't return after timeout, the command is interrupted and an exception is thrown.

Exit codes != 0 and not defined in ignore_exit_codes throw exceptions.

$capo->ipv4_aton($hosts)

Template callback converting DNS name(s) to ip address(es), see perldoc Template::Manual::Variables. With this helper, DNS-names in firewall templates are translated to ipv4 adresses.

Example:

'10.10.10.10'                    ->  '10.10.10.10'
'www.acme.rog'                   -> [10.1.2.3, 10.1.2.4, 10.1.2.5, ...]
[ftp.uni-ulm.de, www.uni-ulm.de] -> [134.60.1.5, 134.60.1.25]

AUTHOR

Karl Gaissmaier, <gaissmai at cpan.org>

LICENSE AND COPYRIGHT

Copyright 2010-2013 Karl Gaissmaier, all rights reserved.

This distribution is free software; you can redistribute it and/or modify it under the terms of either:

a) the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version, or

b) the Artistic License version 2.0.