Axeda Groovy Script: List of User Logins/Logouts from Audit
This groovy script creates an xml output of the audit log filtered by the User Access category, so dates of when users logged in or logged out.
Parameter:
days - number of days to search
import com.axeda.drm.sdk.device.ModelFinder
import com.axeda.drm.sdk.Context
import com.axeda.common.sdk.id.Identifier
import com.axeda.drm.sdk.device.Model
import com.axeda.drm.sdk.device.DeviceFinder
import com.axeda.drm.sdk.device.Device
import com.axeda.drm.sdk.audit.AuditCategoryList
import com.axeda.drm.sdk.audit.AuditCategory
import com.axeda.drm.sdk.audit.AuditEntryFinder
import com.axeda.drm.sdk.audit.SortType
import com.axeda.drm.sdk.audit.AuditEntry
import groovy.xml.MarkupBuilder
/*
* AuditEntryList.groovy
*
* Creates an xml output of the audit log filtered by the User Access category, so dates of when users logged in or logged out.
*
* @param days - (REQ):Str number of days to search.
*
* @author Sara Streeter <sstreeter@axeda.com>
*/
def writer = new StringWriter()
def xml = new MarkupBuilder(writer)
try {
def ctx = Context.getUserContext()
ModelFinder modelFinder = new ModelFinder(ctx, new Identifier(1))
Model model = modelFinder.find()
DeviceFinder deviceFinder = new DeviceFinder(ctx, new Identifier(1))
Device device = deviceFinder.find()
AuditCategoryList acl = new AuditCategoryList()
acl.add(AuditCategory.USER_ACCESS)
long now = System.currentTimeMillis()
Date today = new Date(now)
def paramdays = parameters.days ? parameters.days: 5
long days = 1000 * 60 * 60 * 24 * Integer.valueOf(paramdays)
AuditEntryFinder aef = new AuditEntryFinder(ctx)
aef.setCategories(acl)
aef.setToDate(today)
aef.setFromDate(new Date(now - (days)))
aef.setSortType(SortType.DATE)
aef.sortDescending()
List<AuditEntry> audits = aef.findAll()
// assemble the response
xml.Response() {
audits.each { AuditEntry audit ->
Audit() {
id(audit?.id.value)
user(audit?.user?.username)
date(audit?.date)
category(audit?.category?.bundleKey)
message(audit?.message)
}
}
}
} catch (def ex) {
xml.Response() {
Fault {
Code('Groovy Exception')
Message(ex.getMessage())
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
ex.printStackTrace(pw);
Detail(sw.toString())
}
}
}
return ['Content-Type': 'text/xml', 'Content': writer.toString()]

