mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-10 03:06:37 +00:00
32_withings: safer json decoding
git-svn-id: https://svn.fhem.de/fhem/trunk@14248 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
c859a43b46
commit
97232b5448
@ -1,5 +1,6 @@
|
|||||||
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
||||||
# Do not insert empty lines here, update check depends on it.
|
# Do not insert empty lines here, update check depends on it.
|
||||||
|
- bugfix: 32_withings: safer json decoding
|
||||||
- feature: 38_netatmo: home notification settings
|
- feature: 38_netatmo: home notification settings
|
||||||
- feature: 98_alarmclock: New feature RepRoutine
|
- feature: 98_alarmclock: New feature RepRoutine
|
||||||
- feature: 31_PLAYBULB: support for new Garden Model, move battery Reading to
|
- feature: 31_PLAYBULB: support for new Garden Model, move battery Reading to
|
||||||
|
@ -362,7 +362,7 @@ sub withings_Define($$) {
|
|||||||
|
|
||||||
my $username = withings_encrypt($user);
|
my $username = withings_encrypt($user);
|
||||||
my $password = withings_encrypt($pass);
|
my $password = withings_encrypt($pass);
|
||||||
Log3 $name, 3, "$name: encrypt $user/$pass to $username/$password";
|
Log3 $name, 3, "$name: encrypt $user/$pass to $username/$password" if($user ne $username || $pass ne $password);
|
||||||
|
|
||||||
#$hash->{DEF} =~ s/$user/$username/g;
|
#$hash->{DEF} =~ s/$user/$username/g;
|
||||||
#$hash->{DEF} =~ s/$pass/$password/g;
|
#$hash->{DEF} =~ s/$pass/$password/g;
|
||||||
@ -500,8 +500,13 @@ sub withings_getToken($) {
|
|||||||
#my $response = $agent->request($request);
|
#my $response = $agent->request($request);
|
||||||
return undef if(!defined($data));
|
return undef if(!defined($data));
|
||||||
|
|
||||||
my $json = ();
|
my $json = eval { JSON->new->utf8(0)->decode($data) };
|
||||||
$json = JSON->new->utf8(0)->decode($data) if( $data =~ m/^{.*}$/ );
|
if($@)
|
||||||
|
{
|
||||||
|
Log3 "withings", 2, "withings: json evaluation error on getToken ".$@;
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
|
||||||
my $once = $json->{body}{once};
|
my $once = $json->{body}{once};
|
||||||
$hash->{Once} = $once;
|
$hash->{Once} = $once;
|
||||||
my $hashstring = withings_decrypt($hash->{helper}{username}).':'.md5_hex(withings_decrypt($hash->{helper}{password})).':'.$once;
|
my $hashstring = withings_decrypt($hash->{helper}{username}).':'.md5_hex(withings_decrypt($hash->{helper}{password})).':'.$once;
|
||||||
@ -625,8 +630,12 @@ sub withings_getSessionKey($) {
|
|||||||
|
|
||||||
if( $data =~ m/^{.*}$/ )
|
if( $data =~ m/^{.*}$/ )
|
||||||
{
|
{
|
||||||
my $json = ();
|
my $json = eval { JSON->new->utf8(0)->decode($data) };
|
||||||
$json = JSON->new->utf8(0)->decode($data);
|
if($@)
|
||||||
|
{
|
||||||
|
Log3 $name, 2, "$name: json evaluation error on getSessionKey ".$@;
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
|
||||||
foreach my $account (@{$json->{body}{account}}) {
|
foreach my $account (@{$json->{body}{account}}) {
|
||||||
next if( !defined($account->{id}) );
|
next if( !defined($account->{id}) );
|
||||||
@ -929,8 +938,12 @@ sub withings_getUsers($) {
|
|||||||
#my $response = $ua->request($request);
|
#my $response = $ua->request($request);
|
||||||
return undef if(!defined($data));
|
return undef if(!defined($data));
|
||||||
|
|
||||||
my $json = ();
|
my $json = eval { JSON->new->utf8(0)->decode($data) };
|
||||||
$json = JSON->new->utf8(0)->decode($data) if( $data =~ m/^{.*}$/ );
|
if($@)
|
||||||
|
{
|
||||||
|
Log3 $name, 2, "$name: json evaluation error on getUsers ".$@;
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
|
||||||
my @users = ();
|
my @users = ();
|
||||||
foreach my $user (@{$json->{body}{users}}) {
|
foreach my $user (@{$json->{body}{users}}) {
|
||||||
@ -965,8 +978,12 @@ sub withings_getDevices($) {
|
|||||||
#my $response = $ua->request($request);
|
#my $response = $ua->request($request);
|
||||||
return undef if(!defined($data));
|
return undef if(!defined($data));
|
||||||
|
|
||||||
my $json = ();
|
my $json = eval { JSON->new->utf8(0)->decode($data) };
|
||||||
$json = JSON->new->utf8(0)->decode($data) if( $data =~ m/^{.*}$/ );;
|
if($@)
|
||||||
|
{
|
||||||
|
Log3 $name, 2, "$name: json evaluation error on getDevices ".$@;
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
Log3 "withings", 5, "$name: getdevices ".Dumper($json);
|
Log3 "withings", 5, "$name: getdevices ".Dumper($json);
|
||||||
|
|
||||||
my @devices = ();
|
my @devices = ();
|
||||||
@ -998,8 +1015,12 @@ sub withings_getDeviceDetail($) {
|
|||||||
#Log3 "withings", 5, "$name: getdevicedetaildata ".Dumper($data);
|
#Log3 "withings", 5, "$name: getdevicedetaildata ".Dumper($data);
|
||||||
return undef if(!defined($data));
|
return undef if(!defined($data));
|
||||||
|
|
||||||
my $json = ();
|
my $json = eval { JSON->new->utf8(0)->decode($data) };
|
||||||
$json = JSON->new->utf8(0)->decode($data) if( $data =~ m/^{.*}$/ );
|
if($@)
|
||||||
|
{
|
||||||
|
Log3 $name, 2, "$name: json evaluation error on getDeviceDetail ".$@;
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
|
||||||
if($json)
|
if($json)
|
||||||
{
|
{
|
||||||
@ -1045,8 +1066,12 @@ sub withings_getDeviceLink($) {
|
|||||||
#my $response = $ua->request($request);
|
#my $response = $ua->request($request);
|
||||||
return undef if(!defined($data));
|
return undef if(!defined($data));
|
||||||
|
|
||||||
my $json = ();
|
my $json = eval { JSON->new->utf8(0)->decode($data) };
|
||||||
$json = JSON->new->utf8(0)->decode($data) if( $data =~ m/^{.*}$/ );
|
if($@)
|
||||||
|
{
|
||||||
|
Log3 $name, 2, "$name: json evaluation error on getDeviceLink ".$@;
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
|
||||||
return $json->{body};
|
return $json->{body};
|
||||||
}
|
}
|
||||||
@ -1308,8 +1333,12 @@ sub withings_getVideoLink($) {
|
|||||||
});
|
});
|
||||||
return undef if(!defined($data));
|
return undef if(!defined($data));
|
||||||
|
|
||||||
my $json = ();
|
my $json = eval { JSON->new->utf8(0)->decode($data) };
|
||||||
$json = JSON->new->utf8(0)->decode($data) if( $data =~ m/^{.*}$/ );
|
if($@)
|
||||||
|
{
|
||||||
|
Log3 $name, 2, "$name: json evaluation error on getVideoLink ".$@;
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
|
||||||
if(defined($json->{body}{device}))
|
if(defined($json->{body}{device}))
|
||||||
{
|
{
|
||||||
@ -1340,8 +1369,12 @@ sub withings_getS3Credentials($) {
|
|||||||
});
|
});
|
||||||
return undef if(!defined($data));
|
return undef if(!defined($data));
|
||||||
|
|
||||||
my $json = ();
|
my $json = eval { JSON->new->utf8(0)->decode($data) };
|
||||||
$json = JSON->new->utf8(0)->decode($data) if( $data =~ m/^{.*}$/ );
|
if($@)
|
||||||
|
{
|
||||||
|
Log3 $name, 2, "$name: json evaluation error on getS3Credentials ".$@;
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
|
||||||
if(defined($json->{body}{sts}))
|
if(defined($json->{body}{sts}))
|
||||||
{
|
{
|
||||||
@ -1397,8 +1430,12 @@ sub withings_getUserDetail($) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
return undef if(!defined($data));
|
return undef if(!defined($data));
|
||||||
my $json = ();
|
my $json = eval { JSON->new->utf8(0)->decode($data) };
|
||||||
$json = JSON->new->utf8(0)->decode($data) if( $data =~ m/^{.*}$/ );
|
if($@)
|
||||||
|
{
|
||||||
|
Log3 $name, 2, "$name: json evaluation error on getUserDetail ".$@;
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
|
||||||
return $json->{body}{users}[0];
|
return $json->{body}{users}[0];
|
||||||
}
|
}
|
||||||
@ -3080,8 +3117,12 @@ sub withings_Dispatch($$$) {
|
|||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $json;
|
my $json = eval { JSON->new->utf8(0)->decode($data) };
|
||||||
$json = JSON->new->utf8(0)->decode($data);
|
if($@)
|
||||||
|
{
|
||||||
|
Log3 $name, 2, "$name: json evaluation error on dispatch type ".$param->{type}." ".$@;
|
||||||
|
return undef;
|
||||||
|
}
|
||||||
|
|
||||||
Log3 $name, 4, "$name: json returned: ".Dumper($json);
|
Log3 $name, 4, "$name: json returned: ".Dumper($json);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user