Difference between revisions of "TruxtonObject"

From truxwiki.com
Jump to navigation Jump to search
Line 6: Line 6:
 
==<code>etlid</code>==
 
==<code>etlid</code>==
 
==<code>machineid</code>==
 
==<code>machineid</code>==
==<code>etlid</code>==
+
==<code>version</code>==
  
 
+
==<code>createtag(name, description)</code>==
==<code>atype</code>==
 
The type of the thing that <code>a</code> represents.
 
This corresponds to the <code>A_ObjectTypeID</code> column of the [[Relation Table | <code>Relation</code>]] table.
 
It should contain a value in the <code>ID</code> column of the <code>ObjectType</code> table or you can use a [[Object Types | defined constant.]]
 
 
 
==<code>b</code>==
 
This is the [https://en.wikipedia.org/wiki/Universally_unique_identifier GUID] of the object.
 
This corresponds to the <code>A_ID</code> column of the [[Relation Table | <code>Relation</code>]] table.
 
This combined with <code>btype</code> allows Truxton to retrieve the correct record from the database
 
This is also known as a [https://en.wikipedia.org/wiki/Vertex_(graph_theory) vertex] in a graph.
 
 
 
==<code>btype</code>==
 
The type of the thing that <code>b</code> represents.
 
This corresponds to the <code>B_ObjectTypeID</code> column of the [[Relation Table | <code>Relation</code>]] table.
 
It should contain a value in the <code>ID</code> column of the <code>ObjectType</code> table or you can use a [[Object Types | defined constant.]]
 
 
 
==<code>relation</code>==
 
This provides the reason why <code>a</code> and <code>b</code> are related.
 
This corresponds to the <code>RelationTypeID</code> column of the [[Relation Table | <code>Relation</code>]] table.
 
It should be a value in the <code>ID</code> column of the <code>RelationType</code> table or you can use a [[Relation Types | defined constant.]]
 
It is known as an [https://en.wikipedia.org/wiki/Vertex_(graph_theory) edge] in a graph.
 
 
 
==<code>source</code>==
 
This is the [https://en.wikipedia.org/wiki/Universally_unique_identifier GUID] of the object this relation came from.
 
This corresponds to the <code>SourceID</code> column of the [[Relation Table | <code>Relation</code>]] table.
 
This combined with <code>sourcetype</code> allows Truxton to retrieve the correct record from the database.
 
 
 
==<code>sourcetype</code>==
 
The type of the thing that <code>source</code> represents.
 
This corresponds to the <code>SourceObjectTypeID</code> column of the [[Relation Table | <code>Relation</code>]] table.
 
It should contain a value in the <code>ID</code> column of the <code>ObjectType</code> table or you can use a [[Object Types | defined constant.]]
 
 
 
==<code>save()</code>==
 
 
This will commit the information to the [[Relation Table | <code>Relation</code>]] table.
 
This will commit the information to the [[Relation Table | <code>Relation</code>]] table.
 
It will return [https://docs.python.org/3/library/constants.html#True True] if the record was saved to the database, [https://docs.python.org/3/library/constants.html#False False] if there was an error.
 
It will return [https://docs.python.org/3/library/constants.html#True True] if the record was saved to the database, [https://docs.python.org/3/library/constants.html#False False] if there was an error.

Revision as of 09:48, 29 May 2020

This class give you access to Truxton at a global level.

Attributes and Methods

closed

etlid

machineid

version

createtag(name, description)

This will commit the information to the Relation table. It will return True if the record was saved to the database, False if there was an error.

Remarks

When creating a relationship between objects in Truxton, the relationship should read "A is a XXX of B"

Sample

import truxton
import shutil

from datetime import datetime
from calendar import timegm
from pathlib import Path

EPOCH_AS_FILETIME = 116444736000000000
HUNDREDS_OF_NANOSECONDS = 10000000

def date_to_filetime(dt):
  return EPOCH_AS_FILETIME + (timegm(dt.timetuple()) * HUNDREDS_OF_NANOSECONDS)

def create_event_type(t, id, name):
  event_type = t.neweventtype()
  event_type.id = id
  event_type.name = name
  event_type.save()

def add_file(parent_truxton_file, filename):
  source_file = open(filename, "rb")
  child = parent_truxton_file.newchild()
  child.name = Path(filename).name
  shutil.copyfileobj(source_file, child)
  source_file.close()
  child.save()

  return child

def add_media(t):
  media = t.newmedia()
  media.name = "Public Documents"
  media.description = "Publicly available documents"
  media.case = "DC-SNAFU-2016.2020"
  media.evidencebag = "EV-0937459386623-a"
  media.originator = "Jeffrey Jensen"
  media.latitude = 38.897661
  media.longitude = -77.036458
  media.type = truxton.MEDIA_TYPE_LOGICAL_FILES
  media.save()

  return media

def add_ec(parent_file ):
  child_file = add_file(parent_file, "JW-v-DOJ-reply-02743.pdf")

  a = child_file.newartifact()
  a.type = truxton.ENTITY_TYPE_ACCOUNT
  a.value = "r0cker"
  a.datatype = truxton.DATA_TYPE_ASCII
  a.length = 6
  a.save()

  b = child_file.newartifact()
  b.type = truxton.ENTITY_TYPE_PERSON
  b.value = "Bob Smith"
  b.datatype = truxton.DATA_TYPE_ASCII
  b.length = 9
  b.save()

  relation = child_file.newrelation()
  relation.a = a.id
  relation.atype = truxton.OBJECT_TYPE_ENTITY
  relation.b = b.id
  relation.btype = truxton.OBJECT_TYPE_ENTITY
  relation.relation = truxton.RELATION_LOGON_ACCOUNT
  relation.save()

def main():
  t = truxton.create()

  media = add_media(t)

  root_file = media.addroot()
  root_file.save()

  add_ec(root_file)

if __name__ == "__main__":
  main()