Save cookies to a file so we don't have to login at every invocation

GLPI #34449
This commit is contained in:
Daniel Berteaud 2018-12-10 11:57:23 +01:00
parent 0862bfa4bc
commit 54f98a5f27
2 changed files with 48 additions and 21 deletions

View File

@ -5,8 +5,11 @@ use warnings;
use JSON;
use Getopt::Long;
use LWP::UserAgent;
use HTTP::Cookies;
use Data::Dumper;
umask 077;
my $user = 'zabbix';
my $pass = 'secret';
my $site = 'default';
@ -36,22 +39,32 @@ GetOptions (
my @radio_proto = qw/a b g na ng ac/;
my $resp;
my $username = $ENV{LOGNAME} || $ENV{USER} || getpwuid($<);
my $cj = HTTP::Cookies->new(
file => "/tmp/.unifi_$username.txt",
autosave => 1,
ignore_discard => 1
);
my $ua = LWP::UserAgent->new(
ssl_opts => { verify_hostname => 0 },
cookie_jar => {}
cookie_jar => $cj
);
# Log into the API
$resp = $ua->post(
$url . '/api/login',
Content => to_json({ username => $user, password => $pass }),
Content_Type => 'application/json;charset=UTF-8'
);
die "Login failed: " . $resp->message . "\n" if $resp->is_error;
# Check if we need to login
$resp = $ua->get($url . '/api/self/sites');
if ($resp->is_error){
# Log into the API
$resp = $ua->post(
$url . '/api/login',
Content => to_json({ username => $user, password => $pass }),
Content_Type => 'application/json;charset=UTF-8'
);
die "Login failed: " . $resp->message . "\n" if $resp->is_error;
$resp = $ua->get($url . '/api/self/sites');
die $resp->message . "\n" if $resp->is_error;
}
# Now, we need to get the site ID
$resp = $ua->get($url . '/api/self/sites');
die $resp->message . "\n" if $resp->is_error;
foreach (@{from_json($resp->decoded_content)->{data}}){
if ($_->{name} eq $site || $_->{desc} eq $site){
$site_id = $_->{_id};

View File

@ -5,8 +5,11 @@ use warnings;
use JSON;
use Getopt::Long;
use LWP::UserAgent;
use HTTP::Cookies;
use Data::Dumper;
umask 077;
my $user = 'zabbix';
my $pass = 'secret';
my $site = 'default';
@ -32,21 +35,32 @@ GetOptions (
$type = 'all' if ($type eq '');
my $site_id;
my $resp;
my $username = $ENV{LOGNAME} || $ENV{USER} || getpwuid($<);
my $cj = HTTP::Cookies->new(
file => "/tmp/.unifi_$username.txt",
autosave => 1,
ignore_discard => 1
);
my $ua = LWP::UserAgent->new(
ssl_opts => { verify_hostname => 0 },
cookie_jar => {}
ssl_opts => { verify_hostname => 0 },
cookie_jar => $cj
);
# Login on the API
$resp = $ua->post(
$url . '/api/login',
Content => to_json({ username => $user, password => $pass }),
Content_Type => 'application/json;charset=UTF-8'
);
die "Login failed: " . $resp->message . "\n" if $resp->is_error;
# Now, we need to get the site ID
# Check if we need to login
$resp = $ua->get($url . '/api/self/sites');
die $resp->message . "\n" if $resp->is_error;
if ($resp->is_error){
# Login on the API
$resp = $ua->post(
$url . '/api/login',
Content => to_json({ username => $user, password => $pass }),
Content_Type => 'application/json;charset=UTF-8'
);
die "Login failed: " . $resp->message . "\n" if $resp->is_error;
$resp = $ua->get($url . '/api/self/sites');
die $resp->message . "\n" if $resp->is_error;
}
foreach (@{from_json($resp->decoded_content)->{data}}){
if ($_->{name} eq $site || $_->{desc} eq $site){
$site_id = $_->{_id};