|
Packit |
ae5a87 |
#!/usr/bin/env perl
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
# short example script
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
use lib 'lib';
|
|
Packit |
ae5a87 |
use Authen::SASL;
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
# This part is in the user script
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
my $sasl = Authen::SASL->new(
|
|
Packit |
ae5a87 |
mechanism => 'PLAIN CRAM-MD5 EXTERNAL ANONYMOUS',
|
|
Packit |
ae5a87 |
callback => {
|
|
Packit |
ae5a87 |
user => 'gbarr',
|
|
Packit |
ae5a87 |
pass => 'fred',
|
|
Packit |
ae5a87 |
authname => 'none'
|
|
Packit |
ae5a87 |
},
|
|
Packit |
ae5a87 |
);
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
# $sasl is then passed to a library (eg Net::LDAP)
|
|
Packit |
ae5a87 |
# which will then do
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
my $conn = $sasl->client_new("ldap","localhost", "noplaintext noanonymous");
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
# The library would also set properties on the connection
|
|
Packit |
ae5a87 |
#$conn->property(
|
|
Packit |
ae5a87 |
# iplocal => $socket->sockname,
|
|
Packit |
ae5a87 |
# ipremote => $socket->peername,
|
|
Packit |
ae5a87 |
#);
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
# It would then start things off and send this info to the server
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
my $initial = $conn->client_start;
|
|
Packit |
ae5a87 |
my $mech = $conn ->mechanism;
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
print "$mech;", unpack("H*",$initial),";\n";
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
# When the server want more information, the library would call
|
|
Packit |
ae5a87 |
|
|
Packit |
ae5a87 |
print unpack "H*", $conn->client_step("xyz");
|
|
Packit |
ae5a87 |
print "\n";
|