Skip to main content
5-Regular Member
June 1, 2016

Axeda Groovy Script: List of User Logins/Logouts from Audit

  • June 1, 2016
  • 0 replies
  • 2166 views

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()]