Annotation of embedaddon/strongswan/src/libcharon/plugins/vici/perl/Vici-Session/README.pod, revision 1.1

1.1     ! misho       1: 
        !             2: =head1 NAME
        !             3: 
        !             4: Vici::Session - Perl binding for the strongSwan VICI configuration interface
        !             5: 
        !             6: =head1 DESCRIPTION
        !             7: 
        !             8: The Vici::Session module allows a Perl script to communicate with the open
        !             9: source strongSwan IPsec daemon (https://www.strongswan.org) via the documented
        !            10: Versatile IKE Configuration Interface (VICI). VICI allows the configuration,
        !            11: management and monitoring of multiple IPsec connections.
        !            12: 
        !            13: =head1 INSTALLATION
        !            14: 
        !            15: To install this module type the following:
        !            16: 
        !            17:   perl Makefile.PL
        !            18:   make
        !            19:   make install
        !            20: 
        !            21: =head1 DEPENDENCIES
        !            22: 
        !            23: This module requires the standard networking module:
        !            24: 
        !            25:   IO::Socket::UNIX
        !            26: 
        !            27: =head1 METHODS
        !            28: 
        !            29: The following examples show the use of the Vici::Session interface in a
        !            30: a "net-net" connection between the VPN gateways "moon" and "sun".
        !            31: 
        !            32: =cut
        !            33: 
        !            34: use strict;
        !            35: use warnings;
        !            36: use IO::Socket::UNIX;
        !            37: use Vici::Message;
        !            38: use Vici::Session;
        !            39: 
        !            40: my $moon_key = "-----BEGIN RSA PRIVATE KEY-----\n" .
        !            41:     "MIIEowIBAAKCAQEApHwF+sUXQdH+WwYzdPMzpjuwhGGvHgsmBah1IQsPsddL9gZy" .
        !            42:     "gerzpTM1vvQ4kbRuvE3SZWLf9uKEbiQV9IABr87L9JAva56EHIAiUMuG8WizVbIK" .
        !            43:     "IhQlZc8S2mIwAW0Jc6EmnoJv9j6F/tVD9+6xvMJbwHLi0h7BUO9tBVLPy72YeGNB" .
        !            44:     "Y6Cob4CrOuFOJyACezJ7i9vZ+XzOfnXpu7qL0DgYP/n2maPEJGEivTFunkJD/mJ8" .
        !            45:     "DecyLTQcchsCj2118BMuf2qjVn4UWPCBBuhyYK5wsATB1ANeAtlFfgH+wsuHjZwt" .
        !            46:     "TJru05lGHBZ3F2hZ9PO68hVHbIZZj6SB8X47nwIDAQABAoIBAAQDXqX6rxGVDQ6t" .
        !            47:     "fQ3qbSUuKaVhOMOT5A6ZSJpQycY+CYVsLNkMoXszX6lUDhlH/Letcme03OAKMM77" .
        !            48:     "JGn9wYzHj+RcrDuE95Y2bh/oh1dWhaGeoW6pbSwpvD0FzkQKpANlOCr/5bltVxmb" .
        !            49:     "nHftI/sGBvUQGIal53ORE+jgV1+SK6I0oAIWiCpU2oZpYMAtp7WxOngsAJaGtk//" .
        !            50:     "m2ckH+T8uVHwe9gJ9HZnEk+Io6BXScMNNrsbd2J+pQ75wQXfzHEzHAj+ElhWzhtc" .
        !            51:     "5XefqHw/DfpPDX/lby3VoSoagqzsVuUx7LylgzIDxTsb9HQVOLjDzOQ+vn22Xj7g" .
        !            52:     "UCEjwLkCgYEA2EZguuzJdxRIWBSnIyzpCzfqm0EgybpeLuJVfzWla0yKWI6AeLhW" .
        !            53:     "cr+7o9UE8nCQHVffIrgjWksjc/S5FhzC9TYSHpPa8TPgebTQK4VxnP9Qkh/XRpJj" .
        !            54:     "CqgJ8k2MYleHYxa+AKQv/25yNhLdowkNR0iU1kbiaYRJMP0WigAmdAUCgYEAwrJe" .
        !            55:     "Y3LAawOkalJFMFTtLXsqZE91TFwMt9TQnzysGH3Q6+9N+qypS5KCes650+qgrwBV" .
        !            56:     "RmRNc1ixylToP3B0BKY5OD/BwMx1L/zSO3x7I4ZDasCu33y2ukGLcVSxrxTPTGdd" .
        !            57:     "8fhEiVO1CDXcM08/kSeQa049J8ziY3M+4NDchlMCgYEAw2VCO1923Tjb64gtQOBw" .
        !            58:     "ZAxOz5nVz6urL9yYted33is2yq9kbqzMnbuQAYKRh6Ae9APRuwJ2HjvIehjdp5aw" .
        !            59:     "pO4HDM00f7sI0ayEbu2PKfKZjotp6X6UMKqE4f8iGC9QSDvhyZ6NJs9YLHZ6+7NP" .
        !            60:     "5dkzbyx3njFAFxxxYpikJSkCgYByShB8YlUvvKCcRRUWbRQZWa6l2brqizJwCz43" .
        !            61:     "636+lcS5au2klAyBL0zm2Elfa+DNOe3U93Y7mrorIrJ+4v1H6We3bD3JdnvoIooq" .
        !            62:     "n0UNsngKx3cf++6r4WQAsA3pz9ZsbFVKgEmDL58aZbuQZxnSlJ4DT5c4sN3IMVOc" .
        !            63:     "1x5MvwKBgHudAaLvioIopBpYzOsK2OtEn6NQ7SwH0BLEUulHysaHqan5oExmM1bm" .
        !            64:     "YeivMDc9hj0YLXA47ryQHTx4vB5Nv3TI/LoUG6VrCvZvocQOXe/n7TguwAjJj7ef" .
        !            65:     "E55Gy8lXDRENyJMP1vif3N2iH8eQ1ASf8k/+gnBNkjSlYSSQUDfV\n" .
        !            66:     "-----END RSA PRIVATE KEY-----\n";
        !            67: 
        !            68: my $moon_cert = "-----BEGIN CERTIFICATE-----\n" .
        !            69:     "MIIEIjCCAwqgAwIBAgIBKzANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJDSDEZ" .
        !            70:     "MBcGA1UEChMQTGludXggc3Ryb25nU3dhbjEbMBkGA1UEAxMSc3Ryb25nU3dhbiBS" .
        !            71:     "b290IENBMB4XDTE0MDgyNzE0NDQ1NloXDTE5MDgyNjE0NDQ1NlowRjELMAkGA1UE" .
        !            72:     "BhMCQ0gxGTAXBgNVBAoTEExpbnV4IHN0cm9uZ1N3YW4xHDAaBgNVBAMTE21vb24u" .
        !            73:     "c3Ryb25nc3dhbi5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCk" .
        !            74:     "fAX6xRdB0f5bBjN08zOmO7CEYa8eCyYFqHUhCw+x10v2BnKB6vOlMzW+9DiRtG68" .
        !            75:     "TdJlYt/24oRuJBX0gAGvzsv0kC9rnoQcgCJQy4bxaLNVsgoiFCVlzxLaYjABbQlz" .
        !            76:     "oSaegm/2PoX+1UP37rG8wlvAcuLSHsFQ720FUs/LvZh4Y0FjoKhvgKs64U4nIAJ7" .
        !            77:     "MnuL29n5fM5+dem7uovQOBg/+faZo8QkYSK9MW6eQkP+YnwN5zItNBxyGwKPbXXw" .
        !            78:     "Ey5/aqNWfhRY8IEG6HJgrnCwBMHUA14C2UV+Af7Cy4eNnC1Mmu7TmUYcFncXaFn0" .
        !            79:     "87ryFUdshlmPpIHxfjufAgMBAAGjggEaMIIBFjAJBgNVHRMEAjAAMAsGA1UdDwQE" .
        !            80:     "AwIDqDAdBgNVHQ4EFgQU2CY9Iex8275aOQxbcMsDgCHerhMwbQYDVR0jBGYwZIAU" .
        !            81:     "XafdcAZRMn7ntm2zteXgYOouTe+hSaRHMEUxCzAJBgNVBAYTAkNIMRkwFwYDVQQK" .
        !            82:     "ExBMaW51eCBzdHJvbmdTd2FuMRswGQYDVQQDExJzdHJvbmdTd2FuIFJvb3QgQ0GC" .
        !            83:     "AQAwHgYDVR0RBBcwFYITbW9vbi5zdHJvbmdzd2FuLm9yZzATBgNVHSUEDDAKBggr" .
        !            84:     "BgEFBQcDATA5BgNVHR8EMjAwMC6gLKAqhihodHRwOi8vY3JsLnN0cm9uZ3N3YW4u" .
        !            85:     "b3JnL3N0cm9uZ3N3YW4uY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQCpnj6Nc+PuPLPi" .
        !            86:     "4E3g5hyJkr5VZy7SSglcs1uyVP2mfwj6JR9SLd5+JOsL1aCTm0y9qLcqdbHBxG8i" .
        !            87:     "LNLtwVKU3s1hV4EIO3saHe4XUEjxN9bDtLWEoeq5ipmYX8RJ/fXKR8/8vurBARP2" .
        !            88:     "xu1+wqwEhymp4jBmF0LVovT1+o+GhH66zIJnx3zR9BtfMkaeL6804hrx2ygeopeo" .
        !            89:     "buGvMDQ8HcnMB9OU7Y8fK0oY1kULl6hf36K5ApPA6766sRRKRvBSKlmViKSQTq5a" .
        !            90:     "4c8gCWAZbtdT+N/fa8hKDlZt5q10EgjTqDfGTj50xKvAneq7XdfKmYYGnIWoNLY9" .
        !            91:     "ga8NOzX8\n" .
        !            92:     "-----END CERTIFICATE-----\n";
        !            93: 
        !            94: my $ca_cert = "-----BEGIN CERTIFICATE-----\n" .
        !            95:     "MIIDuDCCAqCgAwIBAgIBADANBgkqhkiG9w0BAQsFADBFMQswCQYDVQQGEwJDSDEZ" .
        !            96:     "MBcGA1UEChMQTGludXggc3Ryb25nU3dhbjEbMBkGA1UEAxMSc3Ryb25nU3dhbiBS" .
        !            97:     "b290IENBMB4XDTA0MDkxMDEwMDExOFoXDTE5MDkwNzEwMDExOFowRTELMAkGA1UE" .
        !            98:     "BhMCQ0gxGTAXBgNVBAoTEExpbnV4IHN0cm9uZ1N3YW4xGzAZBgNVBAMTEnN0cm9u" .
        !            99:     "Z1N3YW4gUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL/y" .
        !           100:     "X2LqPVZuWLPIeknK86xhz6ljd3NNhC2z+P1uoCP3sBMuZiZQEjFzhnKcbXxCeo2f" .
        !           101:     "FnvhOOjrrisSuVkzuu82oxXD3fIkzuS7m9V4E10EZzgmKWIf+WuNRfbgAuUINmLc" .
        !           102:     "4YGAXBQLPyzpP4Ou48hhz/YQo58Bics6PHy5v34qCVROIXDvqhj91P8g+pS+F21/" .
        !           103:     "7P+CH2jRcVIEHZtG8M/PweTPQ95dPzpYd2Ov6SZ/U7EWmbMmT8VcUYn1aChxFmy5" .
        !           104:     "gweVBWlkH6MP+1DeE0/tL5c87xo5KCeGK8Tdqpe7sBRC4pPEEHDQciTUvkeuJ1Pr" .
        !           105:     "K+1LwdqRxo7HgMRiDw8CAwEAAaOBsjCBrzASBgNVHRMBAf8ECDAGAQH/AgEBMAsG" .
        !           106:     "A1UdDwQEAwIBBjAdBgNVHQ4EFgQUXafdcAZRMn7ntm2zteXgYOouTe8wbQYDVR0j" .
        !           107:     "BGYwZIAUXafdcAZRMn7ntm2zteXgYOouTe+hSaRHMEUxCzAJBgNVBAYTAkNIMRkw" .
        !           108:     "FwYDVQQKExBMaW51eCBzdHJvbmdTd2FuMRswGQYDVQQDExJzdHJvbmdTd2FuIFJv" .
        !           109:     "b3QgQ0GCAQAwDQYJKoZIhvcNAQELBQADggEBACOSmqEBtBLR9aV3UyCI8gmzR5in" .
        !           110:     "Lte9aUXXS+qis6F2h2Stf4sN+Nl6Gj7REC6SpfEH4wWdwiUL5J0CJhyoOjQuDl3n" .
        !           111:     "1Dw3dE4/zqMZdyDKEYTU75TmvusNJBdGsLkrf7EATAjoi/nrTOYPPhSUZvPp/D+Y" .
        !           112:     "vORJ9Ej51GXlK1nwEB5iA8+tDYniNQn6BD1MEgIejzK+fbiy7braZB1kqhoEr2Si" .
        !           113:     "7luBSnU912sw494E88a2EWbmMvg2TVHPNzCpVkpNk7kifCiwmw9VldkqYy9y/lCa" .
        !           114:     "Epyp7lTfKw7cbD04Vk8QJW782L6Csuxkl346b17wmOqn8AZips3tFsuAY3w=\n" .
        !           115:     "-----END CERTIFICATE-----\n" ;
        !           116: 
        !           117: =pod
        !           118: 
        !           119: The VICI interface requires a UNIX socket in order to communicate with the
        !           120: strongSwan charon daemon:
        !           121: 
        !           122:   use IO::Socket::UNIX;
        !           123: 
        !           124:   my $socket = IO::Socket::UNIX->new(
        !           125:           Type => SOCK_STREAM,
        !           126:           Peer => '/var/run/charon.vici',
        !           127:   ) or die "Vici socket: $!";
        !           128: 
        !           129: =cut
        !           130: 
        !           131: my $socket = IO::Socket::UNIX->new(
        !           132:             Type => SOCK_STREAM,
        !           133:             Peer => '/var/run/charon.vici',
        !           134: ) or die "Vici socket: $!";
        !           135: 
        !           136: =over
        !           137: 
        !           138: =item new()
        !           139: 
        !           140: creates a new Vici::Session object.
        !           141: 
        !           142:   use Vici::Session;
        !           143:   use Vici::Message;
        !           144: 
        !           145:   my $session = Vici::Session->new($socket);
        !           146: 
        !           147: =cut
        !           148: 
        !           149: my $session = Vici::Session->new($socket);
        !           150: 
        !           151: =item version()
        !           152: 
        !           153: returns daemon and system specific version information.
        !           154: 
        !           155:   my $version = $session->version();
        !           156: 
        !           157: =cut
        !           158: 
        !           159: print "----- version -----\n";
        !           160: my $version = $session->version();
        !           161: print $version->raw(), "\n";
        !           162: 
        !           163: =item load_cert()
        !           164: 
        !           165: loads a certificate into the daemon.
        !           166: 
        !           167:   my %vars = ( type => 'X509', flag => 'CA', data => $ca_cert );
        !           168:   my ($res, $errmsg) = $session->load_cert(Vici::Message->new(\%vars));
        !           169: 
        !           170: =cut
        !           171: 
        !           172: print "----- load-cert -----\n";
        !           173: my %vars = ( type => 'X509', flag => 'CA', data => $ca_cert );
        !           174: my ($res, $errmsg) = $session->load_cert(Vici::Message->new(\%vars));
        !           175: print $res ? "ok\n" : "failed: $errmsg\n";
        !           176: 
        !           177: =item load_key()
        !           178: 
        !           179: loads a private key into the daemon.
        !           180: 
        !           181:   my %vars = ( type => 'RSA', data => $moon_key );
        !           182:   my ($res, $errmsg) = $session->load_key(Vici::Message->new(\%vars));
        !           183: 
        !           184: =cut
        !           185: 
        !           186: print "----- load-key -----\n";
        !           187: %vars = ( type => 'RSA', data => $moon_key );
        !           188: ($res, $errmsg) = $session->load_key(Vici::Message->new(\%vars));
        !           189: print $res ? "ok\n" : "failed: $errmsg\n";
        !           190: 
        !           191: =item load_shared()
        !           192: 
        !           193: loads a shared IKE PSK, EAP or XAuth secret into the daemon.
        !           194: 
        !           195:   my @owners = ( 'carol' );
        !           196:   my %vars = ( type => 'EAP', data => 'Ar3etTnp', owners => \@owners );
        !           197:   my ($res, $errmsg) = $session->load_shared(Vici::Message->new(\%vars));
        !           198: 
        !           199: =cut
        !           200: 
        !           201: print "----- load-shared -----\n";
        !           202: my @owners = ( 'carol' );
        !           203: %vars = ( type => 'EAP', data => 'Ar3etTnp', owners => \@owners );
        !           204: ($res, $errmsg) = $session->load_shared(Vici::Message->new(\%vars));
        !           205: print $res ? "ok\n" : "failed: $errmsg\n";
        !           206: 
        !           207: =item load_authority()
        !           208: 
        !           209: loads a single certification authority definition into the daemon. An existing
        !           210: authority with the same name gets replaced.
        !           211: 
        !           212:   my @crl_uris  = ( 'http://crl.strongswan.org/strongswan.crl' );
        !           213:   my @ocsp_uris = ( 'http://ocsp.strongswan.org:8880' );
        !           214: 
        !           215:   my %auth = (
        !           216:       cacert => $ca_cert,
        !           217:       crl_uris  => \@crl_uris,
        !           218:       ocsp_uris => \@ocsp_uris
        !           219:   );
        !           220: 
        !           221:   my %vars = ( strongswan => \%auth );
        !           222:   my ($res, $errmsg) = $session->load_authority(Vici::Message->new(\%vars));
        !           223: 
        !           224: =cut
        !           225: 
        !           226: print "----- load-authority -----\n";
        !           227: my @crl_uris  = ( 'http://crl.strongswan.org/strongswan.crl' );
        !           228: my @ocsp_uris = ( 'http://ocsp.strongswan.org:8880' );
        !           229: my %auth = (
        !           230:     cacert => $ca_cert,
        !           231:     crl_uris  => \@crl_uris,
        !           232:     ocsp_uris => \@ocsp_uris
        !           233: );
        !           234: %vars = ( strongswan => \%auth );
        !           235: ($res, $errmsg) = $session->load_authority(Vici::Message->new(\%vars));
        !           236: print $res ? "ok\n" : "failed: $errmsg\n";
        !           237: 
        !           238: =item load_conn()
        !           239: 
        !           240: loads a single connection definition into the daemon. An existing connection
        !           241: with the same name gets updated or replaced.
        !           242: 
        !           243:   my @l_ts = ( '10.1.0.0/16' );
        !           244:   my @r_ts = ( '10.2.0.0/16' );
        !           245:   my @esp  = ( 'aes128gcm128-modp3072' );
        !           246: 
        !           247:   my %child = (
        !           248:       local_ts  => \@l_ts,
        !           249:       remote_ts => \@r_ts,
        !           250:       esp_proposals => \@esp,
        !           251:   );
        !           252:   my %children = ( 'net-net' => \%child );
        !           253: 
        !           254:   my @l_addrs = ( '192.168.0.1' );
        !           255:   my @r_addrs = ( '192.168.0.2' );
        !           256:   my @l_certs = ( $moon_cert );
        !           257:   my %l = ( auth => 'pubkey', id => 'moon.strongswan.org',
        !           258:             certs => \@l_certs );
        !           259:   my %r = ( auth => 'pubkey', id => 'sun.strongswan.org');
        !           260:   my @ike = ( 'aes128-sha256-modp3072' );
        !           261: 
        !           262:   my %gw = (
        !           263:       version => 2,
        !           264:       mobike => 'no',
        !           265:       proposals => \@ike,
        !           266:       local_addrs  => \@l_addrs,
        !           267:       remote_addrs => \@r_addrs,
        !           268:       local  => \%l,
        !           269:       remote => \%r,
        !           270:       children => \%children,
        !           271:   );
        !           272: 
        !           273:   my %vars = ( 'gw-gw' => \%gw);
        !           274:   my ($res, $errmsg) = $session->load_conn(Vici::Message->new(\%vars));
        !           275: 
        !           276: =cut
        !           277: 
        !           278: print "----- load-conn -----\n";
        !           279: my @l_ts = ( '10.1.0.0/16' );
        !           280: my @r_ts = ( '10.2.0.0/16' );
        !           281: my @esp  = ( 'aes128gcm128-modp3072' );
        !           282: my %child = (
        !           283:     local_ts  => \@l_ts,
        !           284:     remote_ts => \@r_ts,
        !           285:     esp_proposals => \@esp,
        !           286: );
        !           287: my %children = ( 'net-net' => \%child );
        !           288: my @l_addrs = ( '192.168.0.1' );
        !           289: my @r_addrs = ( '192.168.0.2' );
        !           290: my @l_certs = ( $moon_cert );
        !           291: my %l = ( auth => 'pubkey', id => 'moon.strongswan.org', certs => \@l_certs );
        !           292: my %r = ( auth => 'pubkey', id => 'sun.strongswan.org');
        !           293: my @ike = ( 'aes128-sha256-modp3072' );
        !           294: my %gw = (
        !           295:     version => 2,
        !           296:     mobike => 'no',
        !           297:     proposals => \@ike,
        !           298:     local_addrs  => \@l_addrs,
        !           299:     remote_addrs => \@r_addrs,
        !           300:     local  => \%l,
        !           301:     remote => \%r,
        !           302:     children => \%children,
        !           303: );
        !           304: %vars = ( 'gw-gw' => \%gw);
        !           305: ($res, $errmsg) = $session->load_conn(Vici::Message->new(\%vars));
        !           306: print $res ? "ok\n" : "failed: $errmsg\n";
        !           307: 
        !           308: =item get_algorithms()
        !           309: 
        !           310: lists all currently loaded algorithms and their implementation.
        !           311: 
        !           312:   my $algs = $session->get_algorithms();
        !           313: 
        !           314: =cut
        !           315: 
        !           316: print "----- get-algorithms -----\n";
        !           317: my $algs = $session->get_algorithms();
        !           318: print $algs->raw(), "\n";
        !           319: 
        !           320: =item get_conns()
        !           321: 
        !           322: returns a list of connection names loaded exclusively over VICI, not including
        !           323: connections found in other backends.
        !           324: 
        !           325:   my $conns = $session->get_conns();
        !           326: 
        !           327: =cut
        !           328: 
        !           329: print "----- get-conns -----\n";
        !           330: my $conns = $session->get_conns();
        !           331: print $conns->raw(), "\n";
        !           332: 
        !           333: =item list_conns()
        !           334: 
        !           335: lists currently loaded connections by streaming list-conn events. This
        !           336: call includes all connections known by the daemon, not only those loaded
        !           337: over VICI.
        !           338: 
        !           339:   my $conns = $session->list_conns();
        !           340: 
        !           341:   foreach my $conn (@$conns)
        !           342:   {
        !           343:       print $conn->raw(), "\n";
        !           344:   }
        !           345: 
        !           346: =cut
        !           347: 
        !           348: print "----- list-conns -----\n";
        !           349: $conns = $session->list_conns();
        !           350: foreach my $conn (@$conns)
        !           351: {
        !           352:     print $conn->raw(), "\n";
        !           353: }
        !           354: 
        !           355: =item initiate()
        !           356: 
        !           357: initiates a CHILD_SA.
        !           358: 
        !           359:   my %vars = ( child => 'net-net' );
        !           360:   my($res, $errmsg) = $session->initiate(Vici::Message->new(\%vars));
        !           361: 
        !           362: =cut
        !           363: 
        !           364: print "----- initiate -----\n";
        !           365: %vars = ( child => 'net-net' );
        !           366: ($res, $errmsg) = $session->initiate(Vici::Message->new(\%vars));
        !           367: print $res ? "ok\n" : "failed: $errmsg\n";
        !           368: 
        !           369: =item list_sas()
        !           370: 
        !           371: lists currently active IKE_SAs and associated CHILD_SAs by streaming list-sa
        !           372: events.
        !           373: 
        !           374:   my $sas = $session->list_sas();
        !           375: 
        !           376:   foreach my $sa (@$sas)
        !           377:   {
        !           378:       print $sa->raw(), "\n";
        !           379:   }
        !           380: 
        !           381: =cut
        !           382: 
        !           383: print "----- list-sas -----\n";
        !           384: my $sas = $session->list_sas();
        !           385: foreach my $sa (@$sas)
        !           386: {
        !           387:     print $sa->raw(), "\n";
        !           388: }
        !           389: 
        !           390: =item get_authorities()
        !           391: 
        !           392: returns a list of currently loaded certification authority names.
        !           393: 
        !           394:   my $auths = $session->get_authorities();
        !           395: 
        !           396: =cut
        !           397: 
        !           398: print "----- get-authorities -----\n";
        !           399: my $auths = $session->get_authorities();
        !           400: print $auths->raw(), "\n";
        !           401: 
        !           402: =item list-authorities()
        !           403: 
        !           404: lists currently loaded certification authority information by streaming
        !           405: list-authority events.
        !           406: 
        !           407:   my $auths = $session->list_authorities();
        !           408: 
        !           409:   foreach my $auth (@$auths)
        !           410:   {
        !           411:       print $auth->raw(), "\n";
        !           412:   }
        !           413: 
        !           414: =cut
        !           415: 
        !           416: print "----- list-authorities -----\n";
        !           417: $auths = $session->list_authorities();
        !           418: foreach my $auth (@$auths)
        !           419: {
        !           420:     print $auth->raw(), "\n";
        !           421: }
        !           422: 
        !           423: =item list_certs()
        !           424: 
        !           425: lists currently loaded certificates by streaming list-cert events. This
        !           426: call includes all certificates known by the daemon, not only those loaded
        !           427: over VICI.
        !           428: 
        !           429:   my %vars = ( subject => 'C=CH, O=Linux strongSwan, CN=moon.strongswan.org' );
        !           430:   my $certs = $session->list_certs(Vici::Message->new(\%vars));
        !           431: 
        !           432: =cut
        !           433: 
        !           434: print "----- list-certs -----\n";
        !           435: %vars = ( subject => 'C=CH, O=Linux strongSwan, CN=moon.strongswan.org' );
        !           436: my $certs = $session->list_certs(Vici::Message->new(\%vars));
        !           437: foreach my $cert (@$certs)
        !           438: {
        !           439:     my $hash = $cert->hash();
        !           440:     print $hash->{'type'}, ": ", length($hash->{'data'}), ' bytes',
        !           441:           $hash->{'has_privkey'} ? ', has private key' : '', "\n";
        !           442: }
        !           443: 
        !           444: =item stats()
        !           445: 
        !           446: returns IKE daemon statistics and load information.
        !           447: 
        !           448:   my $stats = $session->stats();
        !           449: 
        !           450: =cut
        !           451: 
        !           452: print "----- stats -----\n";
        !           453: my $stats = $session->stats();
        !           454: print $stats->raw(), "\n";
        !           455: 
        !           456: =item terminate()
        !           457: 
        !           458: terminates an IKE_SA or CHILD_SA.
        !           459: 
        !           460:   my %vars = ( ike => 'gw-gw' );
        !           461:   my ($res, $errmsg) = $session->terminate(Vici::Message->new(\%vars));
        !           462: 
        !           463: =cut
        !           464: 
        !           465: print "----- terminate -----\n";
        !           466: %vars = ( ike => 'gw-gw' );
        !           467: ($res, $errmsg) = $session->terminate(Vici::Message->new(\%vars));
        !           468: print $res ? "ok\n" : "failed: $errmsg\n";
        !           469: 
        !           470: =item install()
        !           471: 
        !           472: installs a trap, drop or bypass policy defined by a CHILD_SA config.
        !           473: 
        !           474:   my %vars = ( child => 'net-net' );
        !           475:   my ($res, $errmsg) = $session->install(Vici::Message->new(\%vars));
        !           476: 
        !           477: =cut
        !           478: 
        !           479: print "----- install -----\n";
        !           480: %vars = ( child => 'net-net' );
        !           481: ($res, $errmsg) = $session->install(Vici::Message->new(\%vars));
        !           482: print $res ? "ok\n" : "failed: $errmsg\n";
        !           483: 
        !           484: =item list_policies()
        !           485: 
        !           486: lists currently installed trap, drop and bypass policies by streaming
        !           487: list-policy events.
        !           488: 
        !           489:   my %vars = ( trap => 'yes' );
        !           490:   my $pols = $session->list_policies(Vici::Message->new(\%vars));
        !           491: 
        !           492:   foreach my $pol (@$pols)
        !           493:   {
        !           494:       print $pol->raw(), "\n";
        !           495:   }
        !           496: 
        !           497: =cut
        !           498: 
        !           499: print "----- list-policies -----\n";
        !           500: %vars = ( trap => 'yes' );
        !           501: my $pols = $session->list_policies(Vici::Message->new(\%vars));
        !           502: foreach my $pol (@$pols)
        !           503: {
        !           504:     print $pol->raw(), "\n";
        !           505: }
        !           506: 
        !           507: =item uninstall()
        !           508: 
        !           509: uninstalls a trap, drop or bypass policy defined by a CHILD_SA config.
        !           510: 
        !           511:   my %vars = ( child => 'net-net' );
        !           512:   my ($res, $errmsg) = $session->uninstall(Vici::Message->new(\%vars));
        !           513: 
        !           514: =cut
        !           515: 
        !           516: print "----- uninstall -----\n";
        !           517: %vars = ( child => 'net-net' );
        !           518: ($res, $errmsg) = $session->uninstall(Vici::Message->new(\%vars));
        !           519: print $res ? "ok\n" : "failed: $errmsg\n";
        !           520: 
        !           521: =item reload_settings()
        !           522: 
        !           523: reloads strongswan.conf settings and all plugins supporting configuration
        !           524: reload.
        !           525: 
        !           526:   my ($res, $errmsg) = $session->reload_settings();
        !           527:   print $res ? "ok\n" : "failed: $errmsg\n";
        !           528: 
        !           529: =cut
        !           530: 
        !           531: print "----- reload-settings -----\n";
        !           532: ($res, $errmsg) = $session->reload_settings();
        !           533: print $res ? "ok\n" : "failed: $errmsg\n";
        !           534: 
        !           535: =item unload_conn()
        !           536: 
        !           537: unloads a previously loaded connection definition by name.
        !           538: 
        !           539:   my %vars = ( name => 'gw-gw' );
        !           540:   my ($res, $errmsg) = $session->unload_conn(Vici::Message->new(\%vars));
        !           541: 
        !           542: =cut
        !           543: 
        !           544: print "----- unload-conn -----\n";
        !           545: %vars = ( name => 'gw-gw' );
        !           546: ($res, $errmsg) = $session->unload_conn(Vici::Message->new(\%vars));
        !           547: print $res ? "ok\n" : "failed: $errmsg\n";
        !           548: 
        !           549: =item unload_authority()
        !           550: 
        !           551: unloads a previously loaded certification authority definition by name.
        !           552: 
        !           553:   my %vars = ( name => 'strongswan' );
        !           554:   my ($res, $errmsg) = $session->unload_authority(Vici::Message->new(\%vars));
        !           555: 
        !           556: =cut
        !           557: 
        !           558: print "----- unload-authority -----\n";
        !           559: %vars = ( name => 'strongswan' );
        !           560: ($res, $errmsg) = $session->unload_authority(Vici::Message->new(\%vars));
        !           561: print $res ? "ok\n" : "failed: $errmsg\n";
        !           562: 
        !           563: =item flush_certs()
        !           564: 
        !           565: flushes the volatile certificate cache. Optionally only a given certificate
        !           566: type is flushed.
        !           567: 
        !           568:   my %vars = ( type => 'x509_crl' );
        !           569:   my ($res, $errmsg) = $session->flush_certs(Vici::Message->new(\%vars));
        !           570: 
        !           571: =cut
        !           572: 
        !           573: print "----- flush-certs -----\n";
        !           574: %vars = ( type => 'x509_crl' );
        !           575: ($res, $errmsg) = $session->flush_certs(Vici::Message->new(\%vars));
        !           576: print $res ? "ok\n" : "failed: $errmsg\n";
        !           577: 
        !           578: =item clear_creds()
        !           579: 
        !           580: clears all loaded certificate, private key and shared key credentials. This
        !           581: affects only credentials loaded over vici, but additionally flushes the
        !           582: credential cache.
        !           583: 
        !           584:   my ($res, $errmsg) = $session->clear_creds();
        !           585: 
        !           586: =cut
        !           587: 
        !           588: print "----- clear-creds -----\n";
        !           589: ($res, $errmsg) = $session->clear_creds();
        !           590: print $res ? "ok\n" : "failed: $errmsg\n";
        !           591: 
        !           592: =item load_pool()
        !           593: 
        !           594: loads an in-memory virtual IP and configuration attribute pool. Existing
        !           595: pools with the same name get updated, if possible.
        !           596: 
        !           597:   my %pool = ( addrs => '10.3.0.0/23' );
        !           598:   my %vars = ( my_pool => \%pool );
        !           599:   my ($res, $errmsg) = $session->load_pool(Vici::Message->new(\%vars));
        !           600: 
        !           601: =cut
        !           602: 
        !           603: print "----- load-pool -----\n";
        !           604: my %pool = ( addrs => '10.3.0.0/23' );
        !           605: %vars = ( my_pool => \%pool );
        !           606: ($res, $errmsg) = $session->load_pool(Vici::Message->new(\%vars));
        !           607: print $res ? "ok\n" : "failed: $errmsg\n";
        !           608: 
        !           609: =item get_pools()
        !           610: 
        !           611: lists the currently loaded pools.
        !           612: 
        !           613:   my $pools = $session->get_pools();
        !           614: 
        !           615: =cut
        !           616: 
        !           617: print "----- get-pools -----\n";
        !           618: my $pools = $session->get_pools();
        !           619: print $pools->raw(), "\n";
        !           620: 
        !           621: =item unload_pool()
        !           622: 
        !           623: unloads a previously loaded virtual IP and configuration attribute pool.
        !           624: Unloading fails for pools with leases currently online.
        !           625: 
        !           626:   my %vars = ( name => 'my_pool' );
        !           627:   my ($res, $errmsg) = $session->unload_pool(Vici::Message->new(\%vars));
        !           628: 
        !           629: =cut
        !           630: 
        !           631: print "----- unload-pool -----\n";
        !           632: %vars = ( name => 'my_pool' );
        !           633: ($res, $errmsg) = $session->unload_pool(Vici::Message->new(\%vars));
        !           634: print $res ? "ok\n" : "failed: $errmsg\n";
        !           635: 
        !           636: =back
        !           637: 
        !           638: =cut
        !           639: 
        !           640: # close vici socket
        !           641: close($socket);
        !           642: 
        !           643: =head1 COPYRIGHT AND LICENCE
        !           644: 
        !           645: Copyright (c) 2015 Andreas Steffen
        !           646: 
        !           647: Permission is hereby granted, free of charge, to any person obtaining a copy
        !           648: of this software and associated documentation files (the "Software"), to deal
        !           649: in the Software without restriction, including without limitation the rights
        !           650: to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        !           651: copies of the Software, and to permit persons to whom the Software is
        !           652: furnished to do so, subject to the following conditions:
        !           653: 
        !           654: The above copyright notice and this permission notice shall be included in
        !           655: all copies or substantial portions of the Software.
        !           656: 
        !           657: THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        !           658: IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        !           659: FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        !           660: AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        !           661: LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        !           662: OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
        !           663: THE SOFTWARE.
        !           664: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>