File Actions
Add Access Control Entry (ACE) to a file/directory on an SMB/CIFS file system.
Property | Value | Description |
---|---|---|
smbFilesystem* | expression, variable | the filesystem definition to use (must be SMB/CIFS filesystem) |
path* | text, expression, variable | the path of the target file or directory |
principal* | text, expression, variable | The user or group to which the ACE applies. For single-domain environments, this will be the |
type* | choice (ALLOW, DENY), text, expression, variable | the ACE type |
mask* | choice (NONE, READ_ONLY, READ_EXECUTE, CHANGE, FULL), text, expression, variable | the permissions mask |
containerInherit* | boolean, expression, variable | the ACE will be inherited by directories |
objectInherit* | boolean, expression, variable | the ACE will by files |
inheritOnly* | boolean, expression, variable | the ACE does not apply to the current file/directory |
noPropagateInherit* | boolean, expression, variable | the ACE does not propagate inheritance |
returnVariable | expression, variable | name of the variable to be assigned to the return value |
Example
smbFS = defineRemoteFilesystem("smb", "smbtestserver", "/testdir") result = addSMBFileACE(smbFS, "/testdir", "testuser", "ALLOW", "CHANGE", true, true, false, false)
Build a file path from a directory path, file name, and optional added extension.
Property | Value | Description |
---|---|---|
parentPath* | text, expression, variable | the parent path of the file |
name* | text, expression, variable | the file name |
ext | text, expression, variable | the added extension |
returnVariable | expression, variable | name of the variable to be assigned to the return value |
Example
path = buildFilePath("/home/bsmith","students","csv")
Clear Access Control Entry (ACE) from a file/directory on an SMB/CIFS file system.
Property | Value | Description |
---|---|---|
smbFilesystem* | expression, variable | the filesystem definition to use (must be SMB/CIFS filesystem) |
path* | text, expression, variable | the path of the target file or directory |
principal* | text, expression, variable | the User or Group to clear |
returnVariable | expression, variable | name of the variable to be assigned to the return value |
Example
smbFS = defineRemoteFilesystem("smb", "smbtestserver", "/testdir") result = clearSMBFileACE(smbFS, "/testdir", "testuser")
Copy a file or directory.
Property | Value | Description |
---|---|---|
srcFilesystem | expression, variable | the source filesystem definition to use (default: dss server managed files) |
srcPath* | text, expression, variable | the path of the source file or directory |
destFilesystem | expression, variable | the destination filesystem definition to use (default: dss server managed files) |
destPath* | text, expression, variable | the path of the destination file or directory |
returnVariable | expression, variable | name of the variable to be assigned to the return value |
Example
srcfs = defineRemoteFilesystem("sftp","host1","user","password","/") destfs = defineRemoteFilesystem("sftp","host2","user","password","/") result = copyFile(srcfs,"etc/hosts",destfs,"etc/hosts")
Create a directory.
Property | Value | Description |
---|---|---|
filesystem | expression, variable | the filesystem definition to use (default: dss server managed files) |
path* | text, expression, variable | the path of the directory |
returnVariable | expression, variable | name of the variable to be assigned to the return value |
Example
fs = defineRemoteFilesystem("sftp","host","user","password", "/home/bsmith") createDirectory(fs,"dir1")
Define a remote filesystem.
Property | Value | Description |
---|---|---|
protocol* | choice (sftp, ftp, ftps, smb, s3), text, expression, variable | The remote access protocol |
host* | text, expression, variable | The remote host name, address, or s3 [<region-or-endpoint>:]<bucket-name> |
port | expression, variable | The remote port (default: depends on protocol) |
user | text, expression, variable | The remote username (default:none) |
password | password, string, expression, variable | The remote password (default:none) |
basePath* | text, expression, variable | The path to the base of the filesystem object or Record containing extra configuration properties to customize the connection |
extraProperties | expression, variable | Defined below as applicable |
Field | Value |
---|---|
connectTimeout | S3/FTP/FTPS Connection Timeout (in milliseconds (ms)) |
dataTimeout | FTP/FTPS Data Timeout or S3 Request Timeout (ms) |
ftpsImplicitMode | Set to true to use implicit mode (default explicit) |
ftpsProtC | Set to true to use PROT C (default is P) |
ftpsProtS | Set to true to use PROT S (default is P) |
ftpsProtE | Set to true to use PROT E (default is P) |
ftpsTrustAll | Set to true to trust all TLS Certificates |
ftpsTrustSelfSigned | Set to true to trust a self-signed TLS Certificate from the defined host |
sftp.passPhrase | The passphrase for sftp.privateKey (required if sftp.privateKey is passphrase protected). |
sftp.privateKey | SSH private key as a String in OpenSSH/PEM format. |
sftp.publicKey | SSH public key as a String in OpenSSH/PEM format (required if the sftp.privateKey is in a format that does not include the public key). |
socketTimeout | S3/FTP/FTPS Socket Timeout or SFTP Timeout (ms) |
userDirIsRoot | true = basePath is relative to the user's home directory false= (default) basePath is relative to the root directory where home is the directory where the user is initially placed upon login and root directory corresponds to the path / which may be the actual root of the physical file system or may be a virtual root, depending on how the file server is configured. Applies only to ftp and sftp. |
Various Properties for JCIFS NG | Multiple properties for JCIFS NG are now supported in RapidIdentity. These properties can be used for troubleshooting, performance enhancements, etc. as needed. NoteThis is only applicable when |
Property | Value | Description |
---|---|---|
returnVariable | expression, variable | name of the variable to be assigned to the return value |
Example
fs = defineRemoteFilesystem("sftp","host","user","password", "/home/bsmith")
Delete a file or directory.
Property | Value | Description |
---|---|---|
filesystem | expression, variable | the filesystem definition to use (default: dss server managed files) |
path* | text, expression, variable | the path of the file |
returnVariable | expression, variable | name of the variable to be assigned to the return value |
Example
fs = defineRemoteFilesystem("sftp","host","user","password", "/home/bsmith") fileExists = isFile(fs,"deleteme") if(fileExists) { deleteFile(fs,"deleteme") } else { log("There is no file to delete") }
Get the extension from a file name or file path.
Property | Value | Description |
---|---|---|
path* | text, expression, variable | the path of the file |
returnVariable | expression, variable | name of the variable to be assigned to the return value |
Example
# should return "log" ext = getFileExtension("apache.log")
Get the name from a file path.
Property | Value | Description |
---|---|---|
path* | text, expression, variable | the path of the file |
returnVariable | expression, variable | name of the variable to be assigned to the return value |
Example
# should return ".XAuthority" ext = getFileName("/home/jdoe/.XAuthority")
Get the parent directory path from a file path
Property | Value | Description |
---|---|---|
path* | text, expression, variable | the path of the file |
returnVariable | expression, variable | name of the variable to be assigned to the return value |
Example
# should return "/home/jdoe" ext = getFileParentDirectory("/home/jdoe/.XAuthority")
Gets the file size in bytes.
Property | Value | Description |
---|---|---|
filesystem | expression, variable | the filesystem definition to use (default: dss server managed files) |
path* | text, expression, variable | the path of the file |
returnVariable | expression, variable | name of the variable to be assigned to the return value |
Example
size = getFileSize("/tmp/temp.jpg")
Get the file timestamp.
Property | Value | Description |
---|---|---|
filesystem | expression, variable | the filesystem definition to use (default: dss server managed files) |
path* | text, expression, variable | the path of the file |
returnVariable | expression, variable | name of the variable to be assigned to the return value |
Example
fileTimestamp = getFileTimestamp("/tmp/temp.jpg")
Test if a path is a directory.
Property | Value | Description |
---|---|---|
filesystem | expression, variable | the filesystem definition to use (default: dss server managed files) |
path* | text, expression, variable | the path to test |
returnVariable | expression, variable | name of the variable to be assigned to the return value |
Example
isDir = isDirectory("/tmp")
Test if a path is a file.
Property | Value | Description |
---|---|---|
filesystem | expression, variable | the filesystem definition to use (default: dss server managed files) |
path* | text, expression, variable | the path to test |
returnVariable | expression, variable | name of the variable to be assigned to the return value |
Example
isFile = isFile("/tmp/temp.jpg")
List the files in a directory.
Property | Value | Description |
---|---|---|
filesystem | expression, variable | the filesystem definition to use (default: dss server managed files) |
path* | text, expression, variable | the path of the directory |
returnVariable | expression, variable | name of the variable to be assigned to the return value |
Example
logDirs = listFiles("log/jobs") forEach(dir, logDirs) { # process log directory }
Load the contents of a file as byte array.
Property | Value | Description |
---|---|---|
filesystem | expression, variable | the filesystem definition to use (default: dss server managed files) |
path* | text, expression, variable | the path of the file |
returnVariable | expression, variable | name of the variable to be assigned to the return value |
Example
image = loadFileAsBytes("images/test.jpg")
Load the contents of a file as a string.
Property | Value | Description |
---|---|---|
filesystem | expression, variable | the filesystem definition to use (default: dss server managed files) |
path* | text, expression, variable | the path of the file |
encoding | text, expression, variable | The character encoding of the file. Defaults ISO-8859-1 |
returnVariable | expression, variable | name of the variable to be assigned to the return value |
Example
templateText = loadFileAsString("template/test.json") template = parseJSON(templateText)
Load the contents of a file as XML.
Property | Value | Description |
---|---|---|
filesystem | expression, variable | the filesystem definition to use (default: dss server managed files) |
path* | text, expression, variable | the path of the file |
returnVariable | expression, variable | name of the variable to be assigned to the return value |
Example
soapTemplate = loadFileAsXML("template/soapEnvelope.xml")
Move and/or rename a file or directory.
Property | Value | Description |
---|---|---|
srcFilesystem | expression, variable | the source filesystem definition to use (default: dss server managed files) |
srcPath* | text, expression, variable | The path of the source file or directory. |
destFilesystem | expression, variable | the destination filesystem definition to use (default: dss server managed files) |
destPath* | text, expression, variable | the path of the destination file or directory |
returnVariable | expression, variable | name of the variable to be assigned to the return value |
Example
srcfs = defineRemoteFilesystem("sftp","host1","user","password","/") destfs = defineRemoteFilesystem("sftp","host2","user","password","/") result = moveFile(srcfs,"/home/jdoe/install.bin",destfs, "/home/jdoe/install.bin")
Save to a file.
Property | Value | Description |
---|---|---|
filesystem | expression, variable | the filesystem definition to use (default: dss server managed files) |
path* | text, expression, variable | the path of the file |
value* | text, expression, variable | value to save to the file |
encoding | text, expression, variable | the character encoding of the file (default: UTF8 for XML, ISO-8859-1 for string)(ignored if value is a byte array) |
returnVariable | expression, variable | name of the variable to be assigned to the return value |
Example
saveToFile("temp/hello.txt","hello")
Set Access Control Entry (ACE) to a file/directory on an SMB/CIFS file system, replacing any existing ACE for the given principal.
Property | Value | Description |
---|---|---|
smbFilesystem* | expression, variable | the filesystem definition to use (must be SMB/CIFS filesystem) |
path* | text, expression, variable | the path of the target file or directory |
principal* | text, expression, variable | the User or Group to which the ACE applies |
type* | choice (ALLOW, DENY), text, expression, variable | the ACE type |
mask* | choice (NONE, READ_ONLY, READ_EXECUTE, CHANGE, FULL), text, expression, variable | the permissions mask |
containerInherit* | boolean, expression, variable | the ACE will be inherited by directories |
objectInherit* | boolean, expression, variable | the ACE will be inherited by files |
inheritOnly* | boolean, expression, variable | the ACE does not apply to the current file/directory |
noPropagateInherit* | boolean, expression, variable | the ACE does not propagate inheritance |
returnVariable | expression, variable | name of the variable to be assigned to the return value |
Example
smbFS = defineRemoteFilesystem("smb", "smbtestserver", "/testdir") result = setSMBFileACE(smbFS, "/testdir", "testuser", "ALLOW", "CHANGE", true, true, false, false)
Extract the contents of a ZIP archive.
Property | Value | Description |
---|---|---|
zipFilesystem | expression, variable | the filesystem definition to use for the destination zip file (default: dss server managed files) |
zipPath* | text, expression, variable | the path of the zip file |
destFilesystem | expression, variable | the destination filesystem definition to use (default: dss server managed files) |
destDir* | text, expression, variable | the path of the directory to receive the extracted files |
returnVariable | expression, variable | name of the variable to be assigned to the return value |
Example
result = unzipFile("log/jobs/test.zip", "log/jobs/test/")
Create a ZIP archive from a file or directory.
Property | Value | Description |
---|---|---|
srcFilesystem | expression, variable | the source filesystem definition to use (default: dss server managed files) |
srcPath* | text, expression, variable | the path or array of paths to the files or directories to add the the ZIP file |
zipFilesystem | expression, variable | the filesystem definition to use for the destination zip file (default: dss server managed files) |
zipPath* | text, expression, variable | the path of the zip file |
compressionLevel | expression, variable | the level of compression to use (0-9) |
returnVariable | expression, variable | name of the variable to be assigned to the return value |
Example
# Add an item to the directories array for each directory relative to the root / var / opt / idauto / dss / files / to process directories = createArray() appendArrayItem(directories, "log/jobs/") appendArrayItem(directories, "log/run/") # Set deleteFiles to true if the log files should be deleted after archival deleteFiles = true # Set deleteArchivesAfter to the number of days you want to retain log files for.Set it to 0 to keep all Archives. deleteArchivesAfter = 30 # Set myActionName to the scheduled job name of this action to avoid archiving it. myActionName = "archiveLogs" # Set deleteMyLogs to true if the logs for this job should be deleted after running deleteMyLogs = true # Begin code currentTime = now() parseDate = splitString(currentTime, " ") currentDate = parseDate[2] + "-" + parseDate[1] + "-" + parseDate[3] forEach(directory, directories) { dir = listFiles(directory) forEach(entry, dir) { # Process directories isDir = isDirectory(entry) if (isDir && (entry != directory + myActionName)) { parsePath = splitString(entry, "/") path = directory + parsePath[2] files = listFiles(entry) # Find unique filename for archive archiveFile = path + "-" + currentDate + ".zip" fileExists = isFile(archiveFile) counter = 0 while (fileExists) { archiveFile = path + "-" + currentDate + "-" + counter + ".zip" fileExists = isFile(archiveFile) counter = counter + 1 } log("Creating archive: " + archiveFile) retVal = zipFile(files, archiveFile) if (retVal && deleteFiles) { log("Deleting log files from " + path) deleteFile(path) } else { } } else { } # Process archives for deletion isAFile = isFile(entry) isArchive = stringEndsWith(entry, ".zip", true) if (isAFile && (deleteArchivesAfter != 0) && isArchive) { datetime = getFileTimestamp(entry) parseDate2 = splitString(datetime, " ") fileDate = parseDate2[2] + "-" + parseDate2[1] + "-" + parseDate2[3] dateFormat = new java.text.SimpleDateFormat("dd-MMM-yyyy") difference = Math.round((dateFormat.parse(currentDate).getTime() - dateFormat.parse(fileDate).getTime()) / (3600000 * 24)) # log("File: " + entry + " - " + difference) if ((difference > deleteArchivesAfter)) { log("Deleting archive " + entry) deleteFile(entry) } else { } } else { } } logDirExists = isDirectory(directory + myActionName) if (deleteMyLogs && logDirExists) { log("Deleting my log files from " + directory + myActionName) deleteFile(directory + myActionName) } else {} }