Skip to content

"PerkinsWill Where In The World" - An asset-tracking dashboard for 1000+ devices across 20+ offices. Utilizes powershell scripts and MS Windows Rules to send location and OS data to secure database startup.

License

Notifications You must be signed in to change notification settings

Kiel-H-Byrne/pwitw

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

80 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Netlify Status WTFPL Node Version

GitHub repo size Github code size Github Languages Github Top Language

GitHub Issues GitHub contributors Github Last Commit

P+WITW (Where In The World?)

This is intended as an asset management dashboard, with a location-centric focus. When a computer signs onto any network and obtains an IP address, the public IP address is obtained, a geolocation calculated, and stored along with other machine information in a database.


How The Script Works:

  • The script is written in Powershell, this does the heavy lifting.
  • A Scheduled task will run the script when a network change is detected on the host.
  • The script is being deployed on host machines using the existing PW_Logon scripts--specifically the per-office scripts that map network drives.
  • An accompanying bash script ('installTask.bat) copies the necessary files to local folder 'C:\Temp\PWITW' and installs a scheduled task (an accompanying 'SubmitPCInfo.xml' file).
  • When a network change is detected, the local copy of the PS script is run. A copy of the information (formatted in JSON) is saved in the same folder before sending to the database. PCInfo.json.

How The Application Works:

  • The application repository is stored on github.com.
    • clone https://github.com/tdotholla/pwitw
  • The codebase is written primarily in Javascript/JSX (React) and Node.js with multiple useful NPM packages.
    • A node.js server can build and serve website using Yarn/NPM to install necessary packages. T
    • yarn | yarn start
  • A DC Server is currently hosting the application: 'WDCWK1700:3000'
  • The database is hosted on restdb.io
  • The IP Geolocation API uses ipstack.io (it was ipinfo.io but ran into rate limits)
  • The Maps API is Google Maps (would like to use Mapbox in future)

FEATURES:

  • A Map of Markers, grouped into clusters of two types:
    • LAN Clusters: Those workstations whose local IPs are within the PW Subnet of 10.[100-254].X.X
    • WAN Clusters: Those workstations whose local IPs are outside of the above scope, and known public subnets. (192.168.X.X, 10.10.X.X, etc.)
  • A Section of charts:
    • Network Graph - [Inner Pie] Percentage of devices within LAN. [Outer Pie] Counts grouped by network activity.
    • Build Graph - Count of devices on each build version.
  • A Table: Searchable pivot table
    • Fuzzy search using any text (computer name, build, application, etc...)
    • Sort by clicking the header of any column.
    • Download the filtered results as CSV file with the "Download" button.
    • Hide/Show columns with the "Columns" Button.

In Development:

  • Uptime Graph - Counts grouped by uptime duration. (undeveloped)

CAVEATS:

  • At this time, to preserve database size, we only want the last known location instead of a set of locations over time (can form a story of when/where a machine has been).
    • Information is pulled once per minute, so as not to go over rate limits.
  • We do not store usernames for GDPR Compliance.
  • Written in Powershell; for the windows environment.

About

"PerkinsWill Where In The World" - An asset-tracking dashboard for 1000+ devices across 20+ offices. Utilizes powershell scripts and MS Windows Rules to send location and OS data to secure database startup.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published