add trigger for password setter
geändert: lib/FHEM/backupToStorage.pm
This commit is contained in:
		@@ -1,2 +1,2 @@
 | 
				
			|||||||
UPD 2020-06-17_15:03:50 3368 FHEM/98_backupToStorage.pm
 | 
					UPD 2020-06-17_15:03:50 3368 FHEM/98_backupToStorage.pm
 | 
				
			||||||
UPD 2020-06-17_15:39:04 10502 lib/FHEM/backupToStorage.pm
 | 
					UPD 2020-06-17_16:07:42 10965 lib/FHEM/backupToStorage.pm
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -77,7 +77,7 @@ sub Define {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    my $name = shift @$aArg;
 | 
					    my $name = shift @$aArg;
 | 
				
			||||||
    $hash->{VERSION}   = version->parse($VERSION)->normal;
 | 
					    $hash->{VERSION}   = version->parse($VERSION)->normal;
 | 
				
			||||||
    $hash->{NOTIFYDEV} = 'global';
 | 
					    $hash->{NOTIFYDEV} = 'global,' . $name;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Log3( $name, 3, "backupToStorage ($name) - defined" );
 | 
					    Log3( $name, 3, "backupToStorage ($name) - defined" );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -137,26 +137,39 @@ sub Notify {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    CheckAttributsForCredentials($hash)
 | 
					    CheckAttributsForCredentials($hash)
 | 
				
			||||||
      if (
 | 
					      if (
 | 
				
			||||||
        (
 | 
					           (
 | 
				
			||||||
            grep m{^DELETEATTR.$name.(bTS_Host|bTS_User)$}xms,
 | 
					             (
 | 
				
			||||||
            @{$events}
 | 
					                (
 | 
				
			||||||
            or grep m{^ATTR.$name.(bTS_Host|bTS_User).\S+$}xms,
 | 
					                    grep m{^DELETEATTR.$name.(bTS_Host|bTS_User)$}xms,
 | 
				
			||||||
            @{$events}
 | 
					                    @{$events}
 | 
				
			||||||
        )
 | 
					                    or grep m{^ATTR.$name.(bTS_Host|bTS_User).\S+$}xms,
 | 
				
			||||||
        && $devname eq 'global'
 | 
					                    @{$events}
 | 
				
			||||||
        && $init_done
 | 
					                )
 | 
				
			||||||
 | 
					                && $devname eq 'global'
 | 
				
			||||||
 | 
					             )
 | 
				
			||||||
 | 
					             || (
 | 
				
			||||||
 | 
					                  (
 | 
				
			||||||
 | 
					                    $devname eq $name && grep m{^password:.(add|remove)$}xms,
 | 
				
			||||||
 | 
					                    @{$events}
 | 
				
			||||||
 | 
					                  )
 | 
				
			||||||
 | 
					             )
 | 
				
			||||||
 | 
					           )
 | 
				
			||||||
 | 
					           && $init_done
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
      
 | 
					
 | 
				
			||||||
    readingsSingleUpdate( $hash, 'state',
 | 
					    readingsSingleUpdate(
 | 
				
			||||||
        ( 
 | 
					        $hash, 'state',
 | 
				
			||||||
               (AttrVal( $name, 'bTS_Host', 'none' ) eq 'none'
 | 
					        (
 | 
				
			||||||
            || AttrVal( $name, 'bTS_User', 'none' ) eq 'none'
 | 
					            (
 | 
				
			||||||
            || !defined( ReadPassword( $hash, $name ) ) )
 | 
					                     AttrVal( $name, 'bTS_Host', 'none' ) eq 'none'
 | 
				
			||||||
          ? 'please set storage account credentials first'
 | 
					                  || AttrVal( $name, 'bTS_User', 'none' ) eq 'none'
 | 
				
			||||||
          : 'ready'
 | 
					                  || !defined( ReadPassword( $hash, $name ) )
 | 
				
			||||||
        )
 | 
					            )
 | 
				
			||||||
        , 1
 | 
					            ? 'please set storage account credentials first'
 | 
				
			||||||
    )
 | 
					            : 'ready'
 | 
				
			||||||
 | 
					        ),
 | 
				
			||||||
 | 
					        1
 | 
				
			||||||
 | 
					      )
 | 
				
			||||||
      if (
 | 
					      if (
 | 
				
			||||||
        (
 | 
					        (
 | 
				
			||||||
            grep m{^DEFINED.$name$}xms,
 | 
					            grep m{^DEFINED.$name$}xms,
 | 
				
			||||||
@@ -218,11 +231,12 @@ sub PushToStorage {
 | 
				
			|||||||
    my $hash = shift;
 | 
					    my $hash = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my $name = $hash->{NAME};
 | 
					    my $name = $hash->{NAME};
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    Log3 $name, 4, "backupToStorage ($name) - push to storage function";
 | 
					    Log3 $name, 4, "backupToStorage ($name) - push to storage function";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ( AttrVal( $name, 'bTSType', 'Nextcloud' ) eq 'Nextcloud' ) {
 | 
					    if ( AttrVal( $name, 'bTSType', 'Nextcloud' ) eq 'Nextcloud' ) {
 | 
				
			||||||
        Log3 $name, 4, "backupToStorage ($name) - push to storage function: Nextcloud detected";
 | 
					        Log3 $name, 4,
 | 
				
			||||||
 | 
					"backupToStorage ($name) - push to storage function: Nextcloud detected";
 | 
				
			||||||
        ncUpload( $hash, ReadingsVal( $name, 'fhemBackupFile', 'none' ) );
 | 
					        ncUpload( $hash, ReadingsVal( $name, 'fhemBackupFile', 'none' ) );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -234,7 +248,7 @@ sub ncUpload {
 | 
				
			|||||||
    my $backupFile = shift;
 | 
					    my $backupFile = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my $name = $hash->{NAME};
 | 
					    my $name = $hash->{NAME};
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    Log3 $name, 4, "backupToStorage ($name) - nextcloud upload function";
 | 
					    Log3 $name, 4, "backupToStorage ($name) - nextcloud upload function";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    open FD, '<',
 | 
					    open FD, '<',
 | 
				
			||||||
@@ -272,7 +286,7 @@ sub ncUpload {
 | 
				
			|||||||
        user     => $ncUser,
 | 
					        user     => $ncUser,
 | 
				
			||||||
        pwd      => $ncPass,
 | 
					        pwd      => $ncPass,
 | 
				
			||||||
        callback => \&FHEM::backup::ncUploadCb,
 | 
					        callback => \&FHEM::backup::ncUploadCb,
 | 
				
			||||||
      };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    HttpUtils_NonblockingGet($param);
 | 
					    HttpUtils_NonblockingGet($param);
 | 
				
			||||||
    $hash->{helper}->{HttpUtilsParam} = $param;
 | 
					    $hash->{helper}->{HttpUtilsParam} = $param;
 | 
				
			||||||
@@ -281,12 +295,12 @@ sub ncUpload {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub ncUploadCb {
 | 
					sub ncUploadCb {
 | 
				
			||||||
    my $param   = shift;
 | 
					    my $param = shift;
 | 
				
			||||||
    my $err     = shift;
 | 
					    my $err   = shift;
 | 
				
			||||||
    my $data    = shift;
 | 
					    my $data  = shift;
 | 
				
			||||||
    
 | 
					
 | 
				
			||||||
    my $hash    = $param->{hash};
 | 
					    my $hash = $param->{hash};
 | 
				
			||||||
    my $name    = $hash->{NAME};
 | 
					    my $name = $hash->{NAME};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Log( 1, 'backup URL: ' . $param->{url} );
 | 
					    Log( 1, 'backup URL: ' . $param->{url} );
 | 
				
			||||||
    Log( 1, 'backup User: ' . $param->{user} );
 | 
					    Log( 1, 'backup User: ' . $param->{user} );
 | 
				
			||||||
@@ -330,6 +344,8 @@ sub StorePassword {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my $err = setKeyValue( $index, $enc_pwd );
 | 
					    my $err = setKeyValue( $index, $enc_pwd );
 | 
				
			||||||
 | 
					    DoTrigger( $name, 'password add' );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return "error while saving the password - $err" if ( defined($err) );
 | 
					    return "error while saving the password - $err" if ( defined($err) );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return "password successfully saved";
 | 
					    return "password successfully saved";
 | 
				
			||||||
@@ -382,7 +398,10 @@ sub ReadPassword {
 | 
				
			|||||||
sub DeletePassword {
 | 
					sub DeletePassword {
 | 
				
			||||||
    my $hash = shift;
 | 
					    my $hash = shift;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    setKeyValue( $hash->{TYPE} . "_" . $hash->{NAME} . "_passwd", undef );
 | 
					    my $name = $hash->{NAME};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    setKeyValue( $hash->{TYPE} . "_" . $name . "_passwd", undef );
 | 
				
			||||||
 | 
					    DoTrigger( $name, 'password remove' );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return;
 | 
					    return;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -398,13 +417,13 @@ sub CheckAttributsForCredentials {
 | 
				
			|||||||
    my $ncPath = AttrVal( $name, 'bTS_Path', 'none' );
 | 
					    my $ncPath = AttrVal( $name, 'bTS_Path', 'none' );
 | 
				
			||||||
    my $status = 'ready';
 | 
					    my $status = 'ready';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $status = ($status eq 'ready'
 | 
					    $status = (
 | 
				
			||||||
            && $ncUser eq 'none'    ? 'no user credential attribut'
 | 
					        $status eq 'ready' && $ncUser eq 'none' ? 'no user credential attribut'
 | 
				
			||||||
      : $status eq 'ready'
 | 
					        : $status eq 'ready'
 | 
				
			||||||
            && $ncHost eq 'none'    ? 'no host credential attribut'
 | 
					          && $ncHost eq 'none' ? 'no host credential attribut'
 | 
				
			||||||
      : $status eq 'ready'
 | 
					        : $status eq 'ready' && !defined($ncPass) ? 'no password set'
 | 
				
			||||||
            && !defined($ncPass)    ? 'no password set'
 | 
					        :                                           $status
 | 
				
			||||||
      : $status);
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return readingsSingleUpdate( $hash, 'state', $status, 1 );
 | 
					    return readingsSingleUpdate( $hash, 'state', $status, 1 );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user