#!/usr/local/bin/scripts/sh # # ^pen: 'destroy' for every 'stacked level'. # #.Y / 70 83 / / / / 105 / / / / / / ;A4_QUER.Y #.YT 3 2 0 0 3 3 1 / / / #.H!a!0:linux//io/disk/mediaAccess/mediaHandlers.d/A8A2BB3C_78F0_11E6_B6F3_0000C00A45A9!0.!c # #/******************************************************************************* # io disk mediaAccess mediaHandlers.d/A8A2BB3C_78F0_11E6_B6F3_0000C00A45A9 # ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # # purpose : media handler for a 'sandwitch'-encrypted media, # with its key in a folder # # begin : Tue May 8 11:16:46 CEST 2018 # # changes : # # copyright : (C) 2018 by Thomas Bruecker # # email : public@thomas-r-bruecker.ch # # version : -0.0.0 # #*******************************************************************************/ #/*************************************************************************** # * * # * This program is free software; you can redistribute it and/or modify * # * it under the terms of the GNU General Public License as published by * # * the Free Software Foundation; either version 2 of the License, or * # * (at your option) any later version. * # * * # * This program is distributed in the hope that it will be useful, but * # * WITHOUT ANY WARRANTY; without even the implied warranty of * # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * # * General Public License for more details. * # * * # * You should have received a copy of the GNU General Public License * # * along with this program; if not, write to the Free Software * # * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * # * MA 02110-1301 USA. * # * * # ***************************************************************************/ # MyHash("A8A2BB3C_78F0_11E6_B6F3_0000C00A45A9") = 0x089C_3C # # * for every function: # * if returned result is not commented, the function returns 0 on no-error. . "/${SCRIPTS}/io/con/THIS" disk_mediaAccess_A8A2BB3C_78F0_11E6_B6F3_0000C00A45A9() { # handles a 'sandwitch'-encrypted media, with its key in a folder; # $1: command, in { # "2ChildDev", "2ChildMedia", "DESTROY", "REALIZE", "RealizeForced", # "SIZE", "VERIFY", "WAIT", "_:", "__:" # }, # * $1 in { # "2ChildDev", "2ChildMedia", "DESTROY", "REALIZE", "RealizeForced", # "SIZE", "VERIFY", "WAIT" # }: see "../CommonCommandsSpecification.TXT". local COMMAND FORCED FleshMediaCommand INDEX MediaInfo ParentMedia local ParentMediaPath COMMAND="$1" INDEX="$2" MediaInfo="$3" ParentMedia="$4" ParentMediaPath="$5" # echo $COMMAND >>/dev/stderr # echo $INDEX >>/dev/stderr # echo "$MediaInfo" >>/dev/stderr # echo $ParentMedia >>/dev/stderr # echo $ParentMediaPath >>/dev/stderr # quick, for verifying and 'wait': disk_mediaAccess__VerifyNoWait "$COMMAND" && return 0 # if ok, return 0; no # waiting for component # medias at all. disk_mediaAccess__RealizeForced2Forced "$COMMAND" # echo FORCED: $FORCED >>/dev/stderr case "$COMMAND" in # ^ 2ChildDev) disk_mediaAccess___2ChildDev \ "$INDEX" "$MediaInfo" "$ParentMedia" "$ParentMediaPath" ;; # ^ 2ChildMedia) disk_mediaAccess___2ChildMedia0 \ "$MediaInfo" ;; # ok. CHECK) disk_mediaAccess__0x089C_3C_CHECK \ "$INDEX" "$MediaInfo" "$ParentMedia" "$ParentMediaPath" ;; # ^ DESTROY) disk_mediaAccess__0x089C_3C_DESTROY \ "$MediaInfo" "$ParentMedia" "$ParentMediaPath" ;; # ^ FleshMediaCommand) FleshMediaCommand="$6" shift 6 # echo $FleshMediaCommand >>/dev/stderr disk_mediaAccess__0x089C_3C_FleshMediaCommand \ "$FleshMediaCommand" \ "$MediaInfo" "$ParentMedia" "$ParentMediaPath" \ "$@" ;; # ^ REALIZE|RealizeForced) disk_mediaAccess__0x089C_3C_REALIZE \ "$COMMAND" \ "$FORCED" "$INDEX" "$MediaInfo" "$ParentMedia" "$ParentMediaPath" ;; # ok. RealizeMediaDirect) disk_mediaAccess__0x089C_3C_RealizeMediaDirect \ "$FORCED" "$INDEX" "$MediaInfo" "$ParentMedia" "$ParentMediaPath" \ '' ;; # ok. RealizeMediaDirectRo) disk_mediaAccess__0x089C_3C_RealizeMediaDirect \ "$FORCED" "$INDEX" "$MediaInfo" "$ParentMedia" "$ParentMediaPath" \ 'ro' ;; # ok. REPAIR) disk_mediaAccess__0x089C_3C_REPAIR \ "$INDEX" "$MediaInfo" "$ParentMedia" "$ParentMediaPath" ;; # ok. SIZE) disk_mediaAccess__0x089C_3C_SIZE \ "$MediaInfo" ;; # ok. _DestroyBottomBreadTestBlockMedia) disk_mediaAccess___0x089C_3C_DestroyBottomBreadTestBlockMedia \ "$INDEX" "$MediaInfo" "$ParentMedia" ;; # ok. _DestroyTestBlockMedia) disk_mediaAccess___0x089C_3C_DestroyTestBlockMedia \ "$INDEX" "$MediaInfo" "$ParentMedia" ;; # ok. _HashBottomBreadTestBlock) disk_mediaAccess___0x089C_3C_HashBottomBreadTestBlock \ "$INDEX" "$MediaInfo" "$ParentMedia" "$ParentMediaPath" ;; # ok. _HashTestBlock) disk_mediaAccess___0x089C_3C_HashTestBlock \ "$INDEX" "$MediaInfo" "$ParentMedia" "$ParentMediaPath" ;; # ok. _InitializeTestBlock) disk_mediaAccess___0x089C_3C_InitializeTestBlock \ "$INDEX" "$MediaInfo" "$ParentMedia" "$ParentMediaPath" ;; # ok. _RealizeBottomBreadTestBlockMedia) disk_mediaAccess___0x089C_3C_RealizeBottomBreadTestBlockMedia \ "$INDEX" "$MediaInfo" "$ParentMedia" "$ParentMediaPath" ;; # ok. _RealizeTestBlockMedia) disk_mediaAccess___0x089C_3C_RealizeTestBlockMedia \ "$INDEX" "$MediaInfo" "$ParentMedia" "$ParentMediaPath" ;; *) disk_mediaAccess___NoContainer \ "$COMMAND" "$INDEX" "$ParentMedia" \ || return # return on error. disk_mediaAccess__InvalidCommandError \ "$COMMAND" "$INDEX" \ 'A8A2BB3C_78F0_11E6_B6F3_0000C00A45A9' \ "$ParentMedia" ;; esac # return result of previous } # command. disk_mediaAccess__0x089C_3C_CHECK() { # check for correct decryption; # $1: , # $2: , # $3: , # $4: . # global: FileSystemErrorsLeftUncorrected0x0EAA local BottomBreadTestBlockHash CalculatedBottomBreadTestBlockHash local CalculatedTestBlockHash INDEX MediaInfo ParentMedia local ParentMediaPath TestBlockHash TopBreadMediaFolderPath local TopBreadMediaName # parameters: local RealizationOptions INDEX="$1" MediaInfo="$2" ParentMedia="$3" ParentMediaPath="$4" # echo $INDEX >>/dev/stderr # echo "$MediaInfo" >>/dev/stderr # echo $ParentMedia >>/dev/stderr # echo $ParentMediaPath >>/dev/stderr ParametersFile="$(disk_mediaAccess__Parameters2File "$MediaInfo")" \ || return # return on error. . "$ParametersFile" || return # return on error. # echo $RealizationOptions >>/dev/stderr disk_mediaAccess__isRealizationOption "$RealizationOptions" 'peer' \ && return 0 TopBreadMediaName="$(disk_mediaAccess___2ChildUuid "$MediaInfo")" \ || return # return on error. TopBreadMediaFolderPath="$( disk_mediaAccess___0x088C_24_ChildMediaFolderPath "$TopBreadMediaName" \ )" || return # return on error. # echo $TopBreadMediaName >>/dev/stderr # echo $TopBreadMediaFolderPath >>/dev/stderr # get test block hash: [ -f "${TopBreadMediaFolderPath}/TestBlockHashes.TXT" ] || return 251 . "${TopBreadMediaFolderPath}/TestBlockHashes.TXT" CalculatedBottomBreadTestBlockHash="$( disk_mediaAccess___0x089C_3C_HashBottomBreadTestBlock \ "$INDEX" "$MediaInfo" "$ParentMedia" "$ParentMediaPath" )" || return # return on error. CalculatedTestBlockHash="$( disk_mediaAccess___0x089C_3C_HashTestBlock \ "$INDEX" "$MediaInfo" "$ParentMedia" "$ParentMediaPath" )" || return # return on error. # echo $BottomBreadTestBlockHash >>/dev/stderr # echo $CalculatedBottomBreadTestBlockHash >>/dev/stderr # echo $CalculatedTestBlockHash >>/dev/stderr # echo $TestBlockHash >>/dev/stderr [ "$BottomBreadTestBlockHash" != "$CalculatedBottomBreadTestBlockHash" \ -o "$TestBlockHash" != "$CalculatedTestBlockHash" \ ] || return 0 disk_mediaAccess___GeneralError \ 'The Media may not be decrypted correctly' \ "$INDEX" 'A8A2BB3C_78F0_11E6_B6F3_0000C00A45A9' "$ParentMedia" return "$FileSystemErrorsLeftUncorrected0x0EAA" } disk_mediaAccess__0x089C_3C_DESTROY() { # destroys the media; # $1: , # $2: , # $3: . # global: MediaInfoCommand0x0EAA Sleep0x0EAA local BottomBreadMediaName FleshMediaName FleshMethodMediaInfo MediaInfo local ParentMedia ParentMediaPath TopBreadMediaName # parameters: local RealizationOptions MediaInfo="$1" ParentMedia="$2" ParentMediaPath="$3" # echo "$MediaInfo" >>/dev/stderr # echo $ParentMedia >>/dev/stderr # echo $ParentMediaPath >>/dev/stderr ParametersFile="$(disk_mediaAccess__Parameters2File "$MediaInfo")" \ || return # return on error. . "$ParametersFile" || return # return on error. # echo $RealizationOptions >>/dev/stderr #^ disk_mediaAccess__isRealizationOption "$RealizationOptions" 'peer' && return # for 'top-bread media': TopBreadMediaName="$(disk_mediaAccess___2ChildUuid "$MediaInfo")" \ || return # return on error. # for 'flesh-media': FleshMethodMediaInfo="$( echo -n "$MediaInfo" | "$MediaInfoCommand0x0EAA" \ 'MediaInfo' 'FleshMethod' )" || return # return on error. # echo "$FleshMethodMediaInfo" >>/dev/stderr FleshMediaName="$( disk_mediaAccess___2ChildUuid "$FleshMethodMediaInfo" \ )" || return # return on error. BottomBreadMediaName="${TopBreadMediaName}.BottomBread" # echo $BottomBreadMediaName >>/dev/stderr # echo $FleshMediaName >>/dev/stderr # echo $TopBreadMediaName >>/dev/stderr # destroy 'top-bread media': disk_mediaAccess___Destroy0 "$MediaInfo" '' \ || return # return on error. "$Sleep0x0EAA" 5 # maybe destroy 'flesh-media': disk_mediaAccess___Uuid2AbsolutePath0 "$FleshMediaName" >/dev/null \ || return 0 # for a directly realized # media. disk_mediaAccess____0x089C_3C_FleshMediaCommand \ "$BottomBreadMediaName" 'DESTROY' "$FleshMethodMediaInfo" \ "$ParentMedia" "$ParentMediaPath" || return # return on error. disk_mediaAccess____Destroy "$BottomBreadMediaName" } disk_mediaAccess__0x089C_3C_FleshMediaCommand() { # pass a command to the flesh-media; # $1: , # $2: , # $3: , # $4: . # $5 ...: arguments # global: MediaInfoCommand0x0EAA local BottomBreadMediaName COMMAND FleshMethodMediaInfo MediaInfo local ParentMedia TopBreadMediaName # parameters: local RealizationOptions COMMAND="$1" MediaInfo="$2" ParentMedia="$3" ParentMediaPath="$4" shift 4 # echo $COMMAND >>/dev/stderr # echo "$MediaInfo" >>/dev/stderr # echo $ParentMedia >>/dev/stderr # echo $ParentMediaPath >>/dev/stderr # echo $@ >>/dev/stderr ParametersFile="$(disk_mediaAccess__Parameters2File "$MediaInfo")" \ || return # return on error. . "$ParametersFile" || return # return on error. # echo $RealizationOptions >>/dev/stderr #^ disk_mediaAccess__isRealizationOption "$RealizationOptions" 'peer' && return FleshMethodMediaInfo="$( echo -n "$MediaInfo" | "$MediaInfoCommand0x0EAA" \ 'MediaInfo' 'FleshMethod' )" || return # return on error. # echo "$FleshMethodMediaInfo" >>/dev/stderr TopBreadMediaName="$(disk_mediaAccess___2ChildUuid "$MediaInfo")" \ || return # return on error. BottomBreadMediaName="${TopBreadMediaName}.BottomBread" # echo $BottomBreadMediaName >>/dev/stderr # echo $TopBreadMediaName >>/dev/stderr disk_mediaAccess____0x089C_3C_FleshMediaCommand \ "$BottomBreadMediaName" "$COMMAND" "$FleshMethodMediaInfo" \ "$ParentMedia" "$ParentMediaPath" "$@" } disk_mediaAccess__0x089C_3C_InvalidPeerCommandError() { # prints the error message to "stdout"; # $1: command, # $2: index into container, # $3: . # global: InvalidCommand0x0EAA local COMMAND INDEX ParentMedia COMMAND="$1" INDEX="$2" ParentMedia="$3" disk_mediaAccess___GeneralError "Invalid Peer Media Command \"$COMMAND\"" \ "$INDEX" 'A8A2BB3C_78F0_11E6_B6F3_0000C00A45A9' "$ParentMedia" return "$InvalidCommand0x0EAA" } disk_mediaAccess__0x089C_3C_REALIZE() { # realizes the media or realizes the media forced; # $1: , # $2: , # $3: , # $4: , # $5: , # $6: . # global: ColRm0x0EAA MediaInfoCommand0x0EAA MediaInfoSize0x0EAA local BottomBreadMediaName COMMAND FleshMedia FleshMediaPath local FleshMediaSize FleshMethodMediaInfo FORCED INDEX MediaInfo local OnlyOnHostsOnParentMedia ParametersFile ParentMedia local ParentMediaPath RealizationOptionsOnParentMedia StartOnFleshMedia local StartOnParentMedia TopBreadMediaFolderPath TopBreadMediaName local TopBreadMediaSize # parameters: local COPYRIGHT CopyrightDetails KERNEL NOTES OnlyOnHosts local RealizationOptions SIZE START URL UUID COMMAND="$1" FORCED="$2" INDEX="$3" MediaInfo="$4" ParentMedia="$5" ParentMediaPath="$6" # echo $COMMAND >>/dev/stderr # echo $FORCED >>/dev/stderr # echo $INDEX >>/dev/stderr # echo "$MediaInfo" >>/dev/stderr # echo $ParentMedia >>/dev/stderr # echo $ParentMediaPath >>/dev/stderr # parameters for encryption: # clear global optional not ignored parameters. OnlyOnHosts='' RealizationOptions='' ParametersFile="$(disk_mediaAccess__Parameters2File "$MediaInfo")" \ || return # return on error. . "$ParametersFile" || return # return on error. # echo $COPYRIGHT >>/dev/stderr # echo $CopyrightDetails >>/dev/stderr # echo $KERNEL >>/dev/stderr # echo $NOTES >>/dev/stderr # echo $OnlyOnHosts >>/dev/stderr # echo $RealizationOptions >>/dev/stderr # echo $START >>/dev/stderr # echo $URL >>/dev/stderr # echo $UUID >>/dev/stderr if disk_mediaAccess__isRealizationOption "$RealizationOptions" 'peer'; then disk_mediaAccess__0x089C_3C_RealizePeer \ "$COMMAND" \ "$FORCED" "$INDEX" "$MediaInfo" "$ParentMedia" "$ParentMediaPath" \ return else OnlyOnHostsOnParentMedia="$OnlyOnHosts" RealizationOptionsOnParentMedia="$RealizationOptions" StartOnParentMedia="$START" TopBreadMediaName="$UUID" disk_mediaAccess_isHandled \ "$FORCED" "$OnlyOnHostsOnParentMedia" \ "$RealizationOptionsOnParentMedia" || return 0 # parameters for 'flesh-media': FleshMethodMediaInfo="$( echo -n "$MediaInfo" | "$MediaInfoCommand0x0EAA" \ 'MediaInfo' 'FleshMethod' )" || return # return on error. # echo "$FleshMethodMediaInfo" >>/dev/stderr # clear global optional not ignored parameters. OnlyOnHosts='' RealizationOptions='' ParametersFile="$( disk_mediaAccess__Parameters2File "$FleshMethodMediaInfo" )" || return # return on error. . "$ParametersFile" || return # return on error. # echo $ParametersFile | "$ColRm0x0EAA" 79 >>/dev/stderr # echo $SIZE >>/dev/stderr # echo $START >>/dev/stderr StartOnFleshMedia="$START" FleshMediaSize="$SIZE" BottomBreadMediaName="${TopBreadMediaName}.BottomBread" TopBreadMediaFolderPath="$( disk_mediaAccess___0x088C_24_ChildMediaFolderPath "$TopBreadMediaName" )" || return # return on error. # echo $BottomBreadMediaName >>/dev/stderr # echo $FleshMediaSize >>/dev/stderr # echo $RealizationOptionsOnParentMedia >>/dev/stderr # echo $StartOnFleshMedia >>/dev/stderr # echo $StartOnParentMedia >>/dev/stderr # echo $TopBreadMediaFolderPath >>/dev/stderr # echo $TopBreadMediaName >>/dev/stderr let "StartOnParentMedia += MediaInfoSize0x0EAA" disk_mediaAccess___0x088C_24_CryptTable \ "$TopBreadMediaFolderPath" "$BottomBreadMediaName" "$ParentMediaPath" \ "$RealizationOptionsOnParentMedia" "$FleshMediaSize" \ "$StartOnParentMedia" \ || return # return on error. disk_mediaAccess__LinkAndMap \ "$BottomBreadMediaName" "$INDEX" "$ParentMediaPath" >>/dev/stderr \ || return # return on error. FleshMedia="$( disk_mediaAccess____0x089C_3C_FleshMediaCommand \ "$BottomBreadMediaName" "$COMMAND" "$FleshMethodMediaInfo" \ "$ParentMedia" "$ParentMediaPath" )" || return # return on error. echo $FleshMedia >>/dev/stderr disk_mediaAccess____0x089C_3C_FleshMediaCommand \ "$BottomBreadMediaName" 'ROLE' "$FleshMethodMediaInfo" \ "$ParentMedia" "$ParentMediaPath" 'PRIMARY' || return # return on error. FleshMediaPath="$( disk_mediaAccess___Media2AbsolutePath "$FleshMedia" )" || return # return on error. TopBreadMediaSize="$(disk_SIZE "$FleshMediaPath" 'S')" disk_mediaAccess___0x088C_24_CryptTable \ "$TopBreadMediaFolderPath" "$TopBreadMediaName" "$FleshMediaPath" \ "$RealizationOptionsOnParentMedia" "$TopBreadMediaSize" \ "$StartOnFleshMedia" \ || return # return on error. disk_mediaAccess__LinkAndMap \ "$TopBreadMediaName" "$INDEX" "$ParentMediaPath" fi } disk_mediaAccess__0x089C_3C_RealizePeer() { # realizes the media or realizes the media forced; # $1: , # $2: , # $3: , # $4: , # $5: , # $6: . # global: ColRm0x0EAA MediaInfoCommand0x0EAA MediaInfoSize0x0EAA local BottomBreadMediaName COMMAND FleshMedia FleshMediaPath local FleshMediaSize FleshMethodMediaInfo FORCED INDEX MediaInfo local OnlyOnHostsOnParentMedia ParametersFile ParentMedia local ParentMediaPath RealizationOptionsOnParentMedia StartOnFleshMedia local StartOnParentMedia TopBreadMediaFolderPath TopBreadMediaName local TopBreadMediaSize # parameters: local COPYRIGHT CopyrightDetails KERNEL NOTES OnlyOnHosts local RealizationOptions SIZE START URL UUID COMMAND="$1" FORCED="$2" INDEX="$3" MediaInfo="$4" ParentMedia="$5" ParentMediaPath="$6" # echo $COMMAND >>/dev/stderr # echo $FORCED >>/dev/stderr # echo $INDEX >>/dev/stderr # echo "$MediaInfo" >>/dev/stderr # echo $ParentMedia >>/dev/stderr # echo $ParentMediaPath >>/dev/stderr # parameters for 'flesh-media': FleshMethodMediaInfo="$( echo -n "$MediaInfo" | "$MediaInfoCommand0x0EAA" \ 'MediaInfo' 'FleshMethod' )" || return # return on error. echo "$FleshMethodMediaInfo" >>/dev/stderr # clear global optional not ignored parameters. OnlyOnHosts='' RealizationOptions='' ParametersFile="$( disk_mediaAccess__Parameters2File "$FleshMethodMediaInfo" )" || return # return on error. . "$ParametersFile" || return # return on error. # echo $ParametersFile | "$ColRm0x0EAA" 79 >>/dev/stderr # echo $SIZE >>/dev/stderr # echo $START >>/dev/stderr return 237 disk_mediaAccess_isHandled \ "$FORCED" "$OnlyOnHosts" "$RealizationOptions" || return 0 let "StartOnFleshMedia = START + MediaInfoSize0x0EAA" FleshMediaSize="$SIZE" BottomBreadMediaName="${TopBreadMediaName}.BottomBread" TopBreadMediaFolderPath="$( disk_mediaAccess___0x088C_24_ChildMediaFolderPath "$TopBreadMediaName" )" || return # return on error. ^^^ # echo $BottomBreadMediaName >>/dev/stderr # echo $FleshMediaSize >>/dev/stderr # echo $RealizationOptionsOnParentMedia >>/dev/stderr # echo $StartOnFleshMedia >>/dev/stderr # echo $StartOnParentMedia >>/dev/stderr # echo $TopBreadMediaFolderPath >>/dev/stderr # echo $TopBreadMediaName >>/dev/stderr let "StartOnParentMedia += MediaInfoSize0x0EAA" FleshMedia="$( disk_mediaAccess____0x089C_3C_FleshMediaCommand \ "$BottomBreadMediaName" "$COMMAND" "$FleshMethodMediaInfo" \ "$ParentMedia" "$ParentMediaPath" )" || return # return on error. echo $FleshMedia >>/dev/stderr #^ FleshMediaPath="$( # disk_mediaAccess___Media2AbsolutePath "$FleshMedia" # )" || return # return on error. } disk_mediaAccess__0x089C_3C_RealizeMediaDirect() { # realizes the media or realizes media forced 'directly' (without the encryp- # tion-layers); # $1: , # $2: , # $3: , # $4: , # $5: , # $6: . # global: ColRm0x0EAA MediaInfoCommand0x0EAA MediaInfoSize0x0EAA local FleshMediaSize FleshMethodMediaInfo FORCED INDEX MediaInfo local OnlyOnHostsOnParentMedia ParametersFile ParentMedia local ParentMediaPath ReadOnly RealizationOptionsOnParentMedia local StartOnParentMedia TopBreadMediaName # parameters: local COPYRIGHT CopyrightDetails KERNEL NOTES OnlyOnHosts local RealizationOptions SIZE START URL UUID FORCED="$1" INDEX="$2" MediaInfo="$3" ParentMedia="$4" ParentMediaPath="$5" ReadOnly="$6" # echo $FORCED >>/dev/stderr # echo $INDEX >>/dev/stderr # echo "$MediaInfo" >>/dev/stderr # echo $ParentMediaPath >>/dev/stderr # echo $ReadOnly >>/dev/stderr # parameters for encryption: # clear global optional not ignored parameters. OnlyOnHosts='' RealizationOptions='' ParametersFile="$(disk_mediaAccess__Parameters2File "$MediaInfo")" \ || return # return on error. . "$ParametersFile" || return # return on error. # echo $COPYRIGHT >>/dev/stderr # echo $CopyrightDetails >>/dev/stderr # echo $KERNEL >>/dev/stderr # echo $NOTES >>/dev/stderr # echo $OnlyOnHosts >>/dev/stderr # echo $RealizationOptions >>/dev/stderr # echo $START >>/dev/stderr # echo $URL >>/dev/stderr # echo $UUID >>/dev/stderr disk_mediaAccess__isRealizationOption "$RealizationOptions" 'peer' \ && { disk_mediaAccess__0x089C_3C_InvalidPeerCommandError \ 'RealizeMediaDirect' "$INDEX" "$ParentMedia" return } OnlyOnHostsOnParentMedia="$OnlyOnHosts" RealizationOptionsOnParentMedia="$RealizationOptions" RealizationOptionsOnParentMedia+=" $ReadOnly" StartOnParentMedia="$START" TopBreadMediaName="$UUID" disk_mediaAccess_isHandled \ "$FORCED" "$OnlyOnHostsOnParentMedia" \ "$RealizationOptionsOnParentMedia" || return 0 # parameters for 'flesh-media': FleshMethodMediaInfo="$( echo -n "$MediaInfo" | "$MediaInfoCommand0x0EAA" \ 'MediaInfo' 'FleshMethod' )" || return # return on error. # echo "$FleshMethodMediaInfo" >>/dev/stderr # clear global optional not ignored parameters. RealizationOptions='' ParametersFile="$( disk_mediaAccess__Parameters2File "$FleshMethodMediaInfo" )" || return # return on error. . "$ParametersFile" || return # return on error. # echo $ParametersFile | "$ColRm0x0EAA" 79 >>/dev/stderr # echo $SIZE >>/dev/stderr FleshMediaSize="$SIZE" # echo $FleshMediaSize >>/dev/stderr # echo $StartOnParentMedia >>/dev/stderr # echo $RealizationOptionsOnParentMedia >>/dev/stderr # echo $TopBreadMediaName >>/dev/stderr let "StartOnParentMedia += MediaInfoSize0x0EAA" disk_mediaAccess____LinearTable \ "$TopBreadMediaName" "$ParentMediaPath" \ "$RealizationOptionsOnParentMedia" "$FleshMediaSize" \ "$StartOnParentMedia" \ || return # return on error. disk_mediaAccess__LinkAndMap \ "$TopBreadMediaName" "$INDEX" "$ParentMediaPath" } disk_mediaAccess__0x089C_3C_REPAIR() { # check or repair the media; # $1: , # $2: , # $3: , # $4: . # global: FileSystemErrorsLeftUncorrected0x0EAA local INDEX MediaInfo ParentMedia ParentMediaPath # parameters: local RealizationOptions INDEX="$1" MediaInfo="$2" ParentMedia="$3" ParentMediaPath="$4" # echo $INDEX >>/dev/stderr # echo "$MediaInfo" >>/dev/stderr # echo $ParentMedia >>/dev/stderr # echo $ParentMediaPath >>/dev/stderr ParametersFile="$(disk_mediaAccess__Parameters2File "$MediaInfo")" \ || return # return on error. . "$ParametersFile" || return # return on error. # echo $RealizationOptions >>/dev/stderr disk_mediaAccess__isRealizationOption "$RealizationOptions" 'peer' \ && return 0 disk_mediaAccess__0x089C_3C_CHECK \ "$INDEX" "$MediaInfo" "$ParentMedia" "$ParentMediaPath" \ && return # checking is ok. echo -e "\nThis media may not be repaired automatically;" >>/dev/stderr echo -e "Please contact your system-administrator." >>/dev/stderr >>/dev/stderr disk_mediaAccess___GeneralMediaDescription \ "$INDEX" 'A8A2BB3C_78F0_11E6_B6F3_0000C00A45A9' "$ParentMedia" ' ' return "$FileSystemErrorsLeftUncorrected0x0EAA" } disk_mediaAccess__0x089C_3C_SIZE() { # destroy media; # $1: . # global: MediaInfoCommand0x0EAA MediaInfoSize0x0EAA local AdditionalSize FleshMethodMediaInfo MediaInfo ParametersFile # parameters: local RealizationOptions MediaInfo="$1" # echo "$MediaInfo" >>/dev/stderr ParametersFile="$(disk_mediaAccess__Parameters2File "$MediaInfo")" \ || return # return on error. . "$ParametersFile" || return # return on error. # echo $RealizationOptions >>/dev/stderr FleshMethodMediaInfo="$( echo -n "$MediaInfo" | "$MediaInfoCommand0x0EAA" \ 'MediaInfo' 'FleshMethod' )" || return # return on error. # echo "$FleshMethodMediaInfo" >>/dev/stderr if disk_mediaAccess__isRealizationOption "$RealizationOptions" 'peer'; then AdditionalSize='0' else AdditionalSize="$MediaInfoSize0x0EAA" fi disk_mediaAccess__Size0 "$AdditionalSize" "$FleshMethodMediaInfo" } disk_mediaAccess___0x089C_3C_DestroyBottomBreadTestBlockMedia() { # destroys the bottom-bread test-block-media; # $1: , # $2: , # $3: . local INDEX MediaInfo ParentMedia TestBlockMediaName # parameters: local RealizationOptions INDEX="$1" MediaInfo="$2" ParentMedia="$3" # echo $INDEX >>/dev/stderr # echo "$MediaInfo" >>/dev/stderr # echo $ParentMedia >>/dev/stderr ParametersFile="$(disk_mediaAccess__Parameters2File "$MediaInfo")" \ || return # return on error. . "$ParametersFile" || return # return on error. # echo $RealizationOptions >>/dev/stderr disk_mediaAccess__isRealizationOption "$RealizationOptions" 'peer' \ && { disk_mediaAccess__0x089C_3C_InvalidPeerCommandError \ '_DestroyBottomBreadTestBlockMedia' "$INDEX" "$ParentMedia" return } TestBlockMediaName="$( disk_mediaAccess____0x089C_3C_TestBlockMediaName \ "$MediaInfo" 'BottomBread' )" || return # return on error. disk_mediaAccess___Destroy1 "$TestBlockMediaName" } disk_mediaAccess___0x089C_3C_DestroyTestBlockMedia() { # destroys the test-block-media; # $1: , # $2: , # $3: . local INDEX MediaInfo ParentMedia TestBlockMediaName # parameters: local RealizationOptions INDEX="$1" MediaInfo="$2" ParentMedia="$3" # echo $INDEX >>/dev/stderr # echo "$MediaInfo" >>/dev/stderr # echo $ParentMedia >>/dev/stderr ParametersFile="$(disk_mediaAccess__Parameters2File "$MediaInfo")" \ || return # return on error. . "$ParametersFile" || return # return on error. # echo $RealizationOptions >>/dev/stderr disk_mediaAccess__isRealizationOption "$RealizationOptions" 'peer' \ && { disk_mediaAccess__0x089C_3C_InvalidPeerCommandError \ '_DestroyTestBlockMedia' "$INDEX" "$ParentMedia" return } TestBlockMediaName="$( disk_mediaAccess____0x089C_3C_TestBlockMediaName "$MediaInfo" '' )" || return # return on error. disk_mediaAccess___Destroy1 "$TestBlockMediaName" \ || return # return on error. disk_mediaAccess___0x089C_3C_DestroyBottomBreadTestBlockMedia \ "$INDEX" "$MediaInfo" "$ParentMedia" } disk_mediaAccess___0x089C_3C_HashBottomBreadTestBlock() { # writes the sha512-sum of the bottom-bread test-block to "stdout"; # $1: , # $2: , # $3: , # $4: . # global: ColRm0x0EAA Sha512Sum0x0EAA local INDEX MediaInfo ParentMedia ParentMediaPath TestBlockMedia local TestBlockMediaPath # parameters: local RealizationOptions INDEX="$1" MediaInfo="$2" ParentMedia="$3" ParentMediaPath="$4" # echo $INDEX >>/dev/stderr # echo "$MediaInfo" >>/dev/stderr # echo $ParentMedia >>/dev/stderr # echo $ParentMediaPath >>/dev/stderr ParametersFile="$(disk_mediaAccess__Parameters2File "$MediaInfo")" \ || return # return on error. . "$ParametersFile" || return # return on error. # echo $RealizationOptions >>/dev/stderr disk_mediaAccess__isRealizationOption "$RealizationOptions" 'peer' \ && { disk_mediaAccess__0x089C_3C_InvalidPeerCommandError \ '_HashBottomBreadTestBlock' "$INDEX" "$ParentMedia" return } TestBlockMedia="$( disk_mediaAccess___0x089C_3C_RealizeBottomBreadTestBlockMedia \ "$INDEX" "$MediaInfo" "$ParentMedia" "$ParentMediaPath" )" || return # return on error. TestBlockMediaPath="$( disk_mediaAccess___QualifiedUuid2ByUuidPath "$TestBlockMedia" )" # echo $TestBlockMedia >>/dev/stderr # echo $TestBlockMediaPath >>/dev/stderr "$Sha512Sum0x0EAA" -b "$TestBlockMediaPath" | "$ColRm0x0EAA" 129 disk_mediaAccess___0x089C_3C_DestroyBottomBreadTestBlockMedia \ "$INDEX" "$MediaInfo" "$ParentMedia" } disk_mediaAccess___0x089C_3C_HashTestBlock() { # writes the sha512-sum of the test-block to "stdout"; # the child-media for the parent-media must have been realized; # $1: , # $2: , # $3: , # $4: . # global: ColRm0x0EAA Sha512Sum0x0EAA local INDEX MediaInfo ParentMedia ParentMediaPath TestBlockMedia local TestBlockMediaPath # parameters: local RealizationOptions INDEX="$1" MediaInfo="$2" ParentMedia="$3" ParentMediaPath="$4" # echo $INDEX >>/dev/stderr # echo "$MediaInfo" >>/dev/stderr # echo $ParentMedia >>/dev/stderr # echo $ParentMediaPath >>/dev/stderr ParametersFile="$(disk_mediaAccess__Parameters2File "$MediaInfo")" \ || return # return on error. . "$ParametersFile" || return # return on error. # echo $RealizationOptions >>/dev/stderr disk_mediaAccess__isRealizationOption "$RealizationOptions" 'peer' \ && { disk_mediaAccess__0x089C_3C_InvalidPeerCommandError \ '_HashTestBlock' "$INDEX" "$ParentMedia" return } TestBlockMedia="$( disk_mediaAccess___0x089C_3C_RealizeTestBlockMedia \ "$INDEX" "$MediaInfo" "$ParentMedia" "$ParentMediaPath" )" || return # return on error. TestBlockMediaPath="$( disk_mediaAccess___QualifiedUuid2ByUuidPath "$TestBlockMedia" )" # echo $TestBlockMedia >>/dev/stderr # echo $TestBlockMediaPath >>/dev/stderr "$Sha512Sum0x0EAA" -b "$TestBlockMediaPath" | "$ColRm0x0EAA" 129 disk_mediaAccess___0x089C_3C_DestroyTestBlockMedia \ "$INDEX" "$MediaInfo" "$ParentMedia" } disk_mediaAccess___0x089C_3C_InitializeTestBlock() { # initializes the test-block; # $1: , # $2: , # $3: , # $4: . # global: DD0x0EAA local INDEX MediaInfo ParentMedia ParentMediaPath RESULT TestBlockMedia local TestBlockMediaPath # parameters: local RealizationOptions INDEX="$1" MediaInfo="$2" ParentMedia="$3" ParentMediaPath="$4" # echo $INDEX >>/dev/stderr # echo "$MediaInfo" >>/dev/stderr # echo $ParentMedia >>/dev/stderr # echo $ParentMediaPath >>/dev/stderr ParametersFile="$(disk_mediaAccess__Parameters2File "$MediaInfo")" \ || return # return on error. . "$ParametersFile" || return # return on error. # echo $RealizationOptions >>/dev/stderr disk_mediaAccess__isRealizationOption "$RealizationOptions" 'peer' \ && { disk_mediaAccess__0x089C_3C_InvalidPeerCommandError \ '_InitializeTestBlock' "$INDEX" "$ParentMedia" return } echo -e "\n\nDo you really want to initialize the \"TestBlock\"?" \ >>/dev/stderr echo -n "Initializing a \"TestBlock\" on the wrong media may destroy " \ >>/dev/stderr echo "the media!!!" \ >>/dev/stderr disk_mediaAccess___GeneralMediaDescription \ "$INDEX" 'A8A2BB3C_78F0_11E6_B6F3_0000C00A45A9' "$ParentMedia" ' ' echo -en "\nEnter \"yes\", if you really want to initialize " >>/dev/stderr echo -e "the \"TestBlock\"." >>/dev/stderr con_YesQ >>/dev/stderr RESULT="$?" [ '0' != "$RESULT" ] && return # do not initialize. TestBlockMedia="$( disk_mediaAccess___0x089C_3C_RealizeTestBlockMedia \ "$INDEX" "$MediaInfo" "$ParentMedia" "$ParentMediaPath" )" || return # return on error. TestBlockMediaPath="$( disk_mediaAccess___QualifiedUuid2ByUuidPath "$TestBlockMedia" )" # echo $TestBlockMedia >>/dev/stderr # echo $TestBlockMediaPath >>/dev/stderr echo -en "\nInitializing the \"TestBlock\"." >>/dev/stderr "$DD0x0EAA" bs=4096 if=/dev/urandom of="$TestBlockMediaPath" 2>/dev/null disk_mediaAccess___0x089C_3C_DestroyTestBlockMedia \ "$INDEX" "$MediaInfo" "$ParentMedia" } disk_mediaAccess___0x089C_3C_RealizeBottomBreadTestBlockMedia() { # realizes the bottom-bread test-block-media and writes its qualified path to # "stdout"; # $1: , # $2: , # $3: , # $4: . # global: DeviceMapperBasePath0x0EAA MediaInfoSize0x0EAA local INDEX MediaInfo ParametersFile ParentMedia ParentMediaPath local TargetPath TestBlockMediaName TopBreadMediaFolderPath local TopBreadMediaName # parameters: local START UUID INDEX="$1" MediaInfo="$2" ParentMedia="$3" ParentMediaPath="$4" # echo $INDEX >>/dev/stderr # echo "$MediaInfo" >>/dev/stderr # echo $ParentMedia >>/dev/stderr # echo $ParentMediaPath >>/dev/stderr ParametersFile="$(disk_mediaAccess__Parameters2File "$MediaInfo")" \ || return # return on error. . "$ParametersFile" || return # return on error. # echo $RealizationOptions >>/dev/stderr # echo $START >>/dev/stderr # echo $UUID >>/dev/stderr disk_mediaAccess__isRealizationOption "$RealizationOptions" 'peer' \ && { disk_mediaAccess__0x089C_3C_InvalidPeerCommandError \ '_RealizeBottomBreadTestBlockMedia' "$INDEX" "$ParentMedia" return } TopBreadMediaName="$UUID" TopBreadMediaFolderPath="$( disk_mediaAccess___0x088C_24_ChildMediaFolderPath "$TopBreadMediaName" )" || return # return on error. TestBlockMediaName="$( disk_mediaAccess____0x089C_3C_TestBlockMediaName \ "$MediaInfo" 'BottomBread' )" || return # return on error. TargetPath="${DeviceMapperBasePath0x0EAA}/$TestBlockMediaName" # echo $TargetPath >>/dev/stderr # echo $TestBlockMediaName >>/dev/stderr # echo $TopBreadMediaFolderPath >>/dev/stderr # echo $TopBreadMediaName >>/dev/stderr disk_mediaAccess___0x088C_24_CryptTable \ "$TopBreadMediaFolderPath" "$TestBlockMediaName" "$ParentMediaPath" \ 'readahead=auto' "$MediaInfoSize0x0EAA" "$START" \ || return # return on error. disk_mediaAccess____Link "$TestBlockMediaName" "$TargetPath" } disk_mediaAccess___0x089C_3C_RealizeTestBlockMedia() { # realizes the test-block-media and writes its qualified path to "stdout"; # the child-media for the parent-media must have been realized; # $1: , # $2: , # $3: , # $4: . # global: DeviceMapperBasePath0x0EAA MediaInfoSize0x0EAA local INDEX BottomBreadTestBlockMedia BottomBreadTestBlockMediaPath local MediaInfo ParentMedia ParentMediaPath TargetPath local TestBlockMediaName TopBreadMediaName TopBreadMediaFolderPath # parameters: local RealizationOptions INDEX="$1" MediaInfo="$2" ParentMedia="$3" ParentMediaPath="$4" # echo $INDEX >>/dev/stderr # echo "$MediaInfo" >>/dev/stderr # echo $ParentMedia >>/dev/stderr # echo $ParentMediaPath >>/dev/stderr ParametersFile="$(disk_mediaAccess__Parameters2File "$MediaInfo")" \ || return # return on error. . "$ParametersFile" || return # return on error. # echo $RealizationOptions >>/dev/stderr disk_mediaAccess__isRealizationOption "$RealizationOptions" 'peer' \ && { disk_mediaAccess__0x089C_3C_InvalidPeerCommandError \ '_RealizeTestBlockMedia' "$INDEX" "$ParentMedia" return } BottomBreadTestBlockMedia="$( disk_mediaAccess___0x089C_3C_RealizeBottomBreadTestBlockMedia \ "$INDEX" "$MediaInfo" "$ParentMedia" "$ParentMediaPath" )" || return # return on error. BottomBreadTestBlockMediaPath="$( disk_mediaAccess___QualifiedUuid2ByUuidPath \ "$BottomBreadTestBlockMedia" \ )" TestBlockMediaName="$( disk_mediaAccess____0x089C_3C_TestBlockMediaName "$MediaInfo" '' )" || return # return on error. TargetPath="${DeviceMapperBasePath0x0EAA}/$TestBlockMediaName" TopBreadMediaName="$(disk_mediaAccess___2ChildUuid "$MediaInfo")" \ || return # return on error. TopBreadMediaFolderPath="$( disk_mediaAccess___0x088C_24_ChildMediaFolderPath "$TopBreadMediaName" \ )" || return # return on error. # echo $BottomBreadTestBlockMedia >>/dev/stderr # echo $BottomBreadTestBlockMediaPath >>/dev/stderr # echo $TargetPath >>/dev/stderr # echo $TestBlockMediaName >>/dev/stderr # echo $TopBreadMediaFolderPath >>/dev/stderr # echo $TopBreadMediaName >>/dev/stderr disk_mediaAccess___0x088C_24_CryptTable \ "$TopBreadMediaFolderPath" "$TestBlockMediaName" \ "$BottomBreadTestBlockMediaPath" \ 'readahead=auto' "$MediaInfoSize0x0EAA" '0' \ || return # return on error. disk_mediaAccess____Link "$TestBlockMediaName" "$TargetPath" } disk_mediaAccess____0x089C_3C_FleshMediaCommand() { # pass a command to the flesh-media; # $1: , # $2: , # $3: , # $4: , # $5: , # $6 ...: arguments. local BottomBreadMediaName COMMAND FleshMediaPath FleshMethodMediaHandlerUuid local FleshMethodMediaInfo FleshParentMedia FleshParentMediaPath ParentMedia local ParentMediaPath TopBreadMediaName BottomBreadMediaName="$1" COMMAND="$2" FleshMethodMediaInfo="$3" ParentMedia="$4" ParentMediaPath="$5" shift 5 # echo $BottomBreadMediaName >>/dev/stderr # echo $COMMAND >>/dev/stderr # echo "$FleshMethodMediaInfo" >>/dev/stderr # echo $ParentMedia >>/dev/stderr # echo $ParentMediaPath >>/dev/stderr # echo $@ >>/dev/stderr FleshMethodMediaHandlerUuid="$( disk_mediaAccess___GetMediaHandlerUuid \ "$INDEX" "$ParentMedia" "$ParentMediaPath" 'FleshMethod' \ )" || return # return on error. # echo $FleshMethodMediaHandlerUuid >>/dev/stderr disk_mediaAccess___VerifyMediaHandlerUuid \ "$INDEX" "$FleshMethodMediaHandlerUuid" \ "$ParentMedia" "$ParentMediaPath" 'FleshMethod' \ || return # return on error. FleshParentMedia="$( disk_mediaAccess__WriteQualifiedUuid "$BottomBreadMediaName" )" # echo $FleshParentMedia >>/dev/stderr FleshParentMediaPath="$( disk_mediaAccess___Media2AbsolutePath "$FleshParentMedia" )" || return # return on error. # echo $FleshParentMediaPath >>/dev/stderr disk_mediaAccess_____0x089C_3C_FleshMediaCommand \ "$COMMAND" "$FleshMethodMediaHandlerUuid" "$FleshMethodMediaInfo" \ "$FleshParentMedia" "$FleshParentMediaPath" "$@" } disk_mediaAccess____0x089C_3C_TestBlockMediaName() { # writes the name of the test-block-media to "stdout"; # $1: , # $2: . local ChildMediaName PREFIX MediaInfo="$1" PREFIX="$2" # echo "$MediaInfo" >>/dev/stderr # echo PREFIX >>/dev/stderr ChildMediaName="$(disk_mediaAccess___2ChildUuid "$MediaInfo")" \ || return # return on error. echo "${ChildMediaName}.${PREFIX}TestBlock" } disk_mediaAccess_____0x089C_3C_FleshMediaCommand() { # pass a command to the flesh-media; # $1: , # $2: , # $2: , # $3: , # $4: , # $5 ...: arguments. local COMMAND FleshMethodMediaHandlerUuid FleshMethodMediaInfo local FleshParentMedia FleshParentMediaPath COMMAND="$1" FleshMethodMediaHandlerUuid="$2" FleshMethodMediaInfo="$3" FleshParentMedia="$4" FleshParentMediaPath="$5" shift 5 # echo $COMMAND >>/dev/stderr # echo $FleshMethodMediaHandlerUuid >>/dev/stderr # echo "$FleshMethodMediaInfo" >>/dev/stderr # echo $FleshParentMedia >>/dev/stderr # echo $FleshParentMediaPath >>/dev/stderr # echo $@ >>/dev/stderr disk_mediaAccess_${FleshMethodMediaHandlerUuid} \ "$COMMAND" '0' \ "$FleshMethodMediaInfo" "$FleshParentMedia" "$FleshParentMediaPath" \ "$@" }