Skip to content

Commit

Permalink
feat(release): publish 3.4.1 (#1)
Browse files Browse the repository at this point in the history
  • Loading branch information
mnrdrata committed Jun 16, 2023
1 parent 5b81942 commit ddbe6f2
Show file tree
Hide file tree
Showing 129 changed files with 12,532 additions and 1 deletion.
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright [yyyy] [name of copyright owner]
Copyright 2023 Drata, Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
53 changes: 53 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Drata Agent

The Drata Agent is a lightweight application that lives in your computer's toolbar. This application is granted READ ONLY access to your system preferences to help ensure proper security configurations are set - such as screensaver locking, password manager, antivirus software and automatic updates are enabled. These security configurations are required for SOC 2 compliance.

## See also

- [Drata Help](https://help.drata.com/)
- [Automatic Upgrades Channel Repository](https://github.com/drata/agent-releases)
- [Electron](https://www.electronjs.org/)
- [Electron Builder](https://www.electron.build/)

# Run or Build Drata Agent on Mac

## Caveats

- The Drata Agent requires an active production account to register successfully.
- Support is not provided for building, running, or installing unofficial packages.
- The build process outlined does not include secure code signing.
- IMPORTANT: Component Library Package is NOT provided. At this time, certain front end components will need replaced to build.

## Prerequisites

1. XCode (command line tools)
1. NodeJS

## Run Local

```bash
# Run on local in dev mode
yarn start
```

## Build Package

The following commands will bundle and build a installation package into the local ./dist folder.

```bash
# Bundle
node_modules/.bin/webpack --mode=production --env targetEnv=PROD

# Build with profile - see package.json for configured profiles
node_modules/.bin/electron-builder --mac -c.mac.identity=null
```

## Install and register agent from local build

1. Switch/checkout this repository
1. Build desired package
1. Execute dmg disk image (dist folder) and copy Drata Agent to `Applications`
1. Run Drata Agent from `Applications`
1. Click Agent -> Settings Icon -> you can view which version of the agent is running, it should say `[LOCAL] Agent Version`
1. Log into Drata -> MyDrata -> Install the Drata Agent -> click Register Drata Agent. This will send a magic-link.
1. From the magic-link email, copy the token portion of the magic-link URL and paste it into your local Agent -> Click Register.
10 changes: 10 additions & 0 deletions build/entitlements.mac.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
<key>com.apple.security.cs.allow-jit</key>
<true/>
</dict>
</plist>
Binary file added build/icon.icns
Binary file not shown.
Binary file added build/icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions build/resources/conclusion.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
The Drata Agent has been successfully installed!

Please open the application and then enter the Account Key and your Email into the form to register your computer.

Thank you for installing the Drata Agent!
© 2023 Drata Inc. <[email protected]> (https://drata.com)
5 changes: 5 additions & 0 deletions build/resources/welcome.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
This will install the Drata Agent.

The Drata Agent is a light-weight tray-application that runs in the background, reporting important read-only data to Drata about your machine's state for compliance tracking.

© 2023 Drata Inc. <[email protected]> (https://drata.com)
Binary file added lib/linux/bin/osqueryi
Binary file not shown.
Binary file added lib/macos/bin/arm64/osqueryi
Binary file not shown.
Binary file added lib/macos/bin/x64/osqueryi
Binary file not shown.
Binary file added lib/windows/bin/osqueryi.exe
Binary file not shown.
5 changes: 5 additions & 0 deletions nodemon.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"watch": ["src/main/*", "src/bridge/*", "src/index.js"],
"exec": "webpack --config ./webpack.electron.js --mode=development && electron ./dist/main.js",
"ext": "ts"
}
216 changes: 216 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,216 @@
{
"name": "drata-agent",
"version": "3.4.1",
"description": "The Drata Agent is a light-weight tray-application that runs in the background, reporting important read-only data to Drata about your machine's state for compliance tracking.",
"author": "Drata Inc. <[email protected]> (https://drata.com)",
"private": true,
"license": "Apache-2.0",
"main": "dist/main.js",
"scripts": {
"prebuild": "rimraf dist",
"build": "webpack --mode=production --env targetEnv=LOCAL",
"react:dev": "webpack serve --mode=development",
"electron:dev": "nodemon",
"start": "concurrently --kill-others --names \"REND,MAIN\" \"yarn react:dev\" \"yarn electron:dev\"",
"prebuilder": "rimraf dist"
},
"build": {
"appId": "com.drata.agent",
"productName": "Drata Agent",
"copyright": "© 2023 Drata Inc. All rights reserved.",
"publish": [
{
"provider": "github",
"owner": "drata",
"repo": "agent-releases"
}
],
"protocols": {
"name": "auth-drata-agent-protocol",
"schemes": [
"auth-drata-agent"
]
},
"files": [
"./build/**/*",
"./dist/preload.js",
"./dist/renderer.js",
"./dist/renderer.js.map",
"./dist/index.html",
"./dist/main.js",
"./src/assets/**/*",
"!.env",
"!scripts/notarize.js",
"!.vscode/**/*",
"!.github/**/*",
"!builder.cli.js",
"!nodemon.json",
"!.prettierrc",
"!.eslintrc.json",
"!**/node_modules/*/{CHANGELOG.md,README.md,README,readme.md,readme}",
"!**/node_modules/*/{test,__tests__,tests,powered-test,example,examples}",
"!**/node_modules/*.d.ts",
"!**/node_modules/.bin",
"!**/*.{iml,o,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,xproj}",
"!.editorconfig",
"!**/._*",
"!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,.gitignore,.gitattributes}",
"!**/{__pycache__,thumbs.db,.flowconfig,.idea,.vs,.nyc_output}",
"!**/{appveyor.yml,.travis.yml,circle.yml}",
"!**/{npm-debug.log,yarn.lock,.yarn-integrity,.yarn-metadata.json}"
],
"dmg": {
"sign": false
},
"pkg": {
"installLocation": "/Applications",
"allowAnywhere": true,
"allowCurrentUserHome": true,
"welcome": "build/resources/welcome.txt",
"conclusion": "build/resources/conclusion.txt"
},
"mac": {
"extendInfo": {
"LSUIElement": "true"
},
"hardenedRuntime": true,
"gatekeeperAssess": false,
"entitlements": "build/entitlements.mac.plist",
"entitlementsInherit": "build/entitlements.mac.plist",
"mergeASARs": true,
"extraResources": [
{
"from": "lib/macos/bin/${arch}/osqueryi",
"to": "lib/macos/bin/osqueryi"
}
],
"target": [
{
"target": "pkg",
"arch": [
"universal"
]
},
{
"target": "dmg",
"arch": [
"universal"
]
},
{
"target": "zip",
"arch": [
"universal"
]
}
]
},
"win": {
"extraResources": "lib/windows/bin/osqueryi.exe",
"target": [
{
"target": "nsis",
"arch": [
"x64"
]
}
],
"icon": "build/icon.png"
},
"linux": {
"extraResources": "lib/linux/bin/osqueryi",
"target": [
{
"target": "deb",
"arch": [
"x64"
]
}
],
"icon": "./build/icon.icns",
"category": "Office"
}
},
"engines": {
"node": "^16.16.0"
},
"devDependencies": {
"@drata/component-library": "^0.4.112",
"@electron/notarize": "^1.2.3",
"@formatjs/intl": "^1.13.4",
"@openfonts/montserrat_all": "^1.44.2",
"@reduxjs/toolkit": "^1.6.1",
"@sentry/electron": "^4.2.0",
"@types/auto-launch": "^5.0.2",
"@types/cli-spinner": "^0.2.1",
"@types/color-convert": "^2.0.0",
"@types/inquirer": "^7.3.3",
"@types/lodash": "^4.14.170",
"@types/node": "^16.11.26",
"@types/node-schedule": "^1.3.2",
"@types/qs": "^6.9.6",
"@types/react": "^17.0.1",
"@types/react-dom": "^17.0.0",
"@types/react-router-dom": "^5.1.8",
"@types/styled-components": "^5.1.11",
"@typescript-eslint/eslint-plugin": "^4.29.1",
"@typescript-eslint/parser": "^4.29.1",
"auto-launch": "^5.0.5",
"axios": "^0.21.3",
"chalk": "^4.1.1",
"cli-spinner": "^0.2.10",
"color-convert": "^2.0.1",
"concurrently": "^6.0.0",
"css-loader": "^6.7.2",
"electron": "24.1.1",
"electron-builder": "^23.6.0",
"electron-devtools-installer": "^3.2.0",
"electron-log": "^4.3.5",
"electron-updater": "^6.0.3",
"eslint": "^7.32.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-jsx-a11y": "^6.4.1",
"eslint-plugin-react": "^7.24.0",
"eslint-plugin-react-hooks": "^4.2.0",
"fast-safe-stringify": "^2.1.1",
"file-loader": "^6.2.0",
"html-webpack-plugin": "^5.0.0",
"inquirer": "^8.1.1",
"lodash": "^4.17.21",
"menubar": "^9.2.3",
"moment": "^2.29.4",
"node-schedule": "^2.0.0",
"nodemon": "^2.0.20",
"qs": "6.11.0",
"react": "^17.0.1",
"react-dom": "^17.0.1",
"react-feather": "^2.0.9",
"react-intl": "^5.20.4",
"react-is": "^18.2.0",
"react-redux": "^7.2.4",
"react-router-dom": "^5.2.0",
"reactstrap": "^8.9.0",
"redux": "^4.1.0",
"redux-devtools-extension": "^2.13.9",
"redux-thunk": "^2.3.0",
"sass": "^1.32.8",
"sass-loader": "^11.0.1",
"style-loader": "^3.3.1",
"styled-components": "5.3.3",
"terser-webpack-plugin": "^5.3.7",
"ts-loader": "^9.4.2",
"ts-node": "^10.9.1",
"typescript": "^4.4.3",
"url-loader": "^4.1.1",
"webpack": "^5.75.0",
"webpack-cli": "^4.5.0",
"webpack-dev-server": "^4.11.1"
},
"dependencies": {},
"resolutions": {
"minimatch": "^5.1.1",
"json5": "^2.2.3",
"jszip": "^3.10.1",
"http-cache-semantics": "^4.1.1"
}
}
80 changes: 80 additions & 0 deletions src/assets/data/locales/en.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
{
"Drata Agent successfully registered": "Drata Agent successfully registered",
"Unable to login at this time. Please contact your system administrator.": "Unable to login at this time. Please contact your system administrator.",
"The authorization has expired.": "The authorization has expired.",
"Unable to update your system information at this moment. Please contact your system administrator.": "Unable to update your system information at this moment. Please contact your system administrator.",
"You must first register your workstation before sending data. You must first register your workstation before sending data. Go to My Drata, open the \"Install the Drata Agent\" section and click the \"Register Drata Agent\" button.": "You must first register your workstation before sending data. You must first register your workstation before sending data. Go to My Drata, open the \"Install the Drata Agent\" section and click the \"Register Drata Agent\" button.",
"Your system information has been updated.": "Your system information has been updated.",
"Open Drata Agent": "Open Drata Agent",
"Quit Drata": "Quit Drata",
"Drata Agent": "Drata Agent",
"Way to go! The Drata Agent has been installed.": "Way to go! The Drata Agent has been installed.",
"Check your Email": "Check your Email",
"If you've already received an email, please follow the instructions to register the agent.": "If you've already received an email, please follow the instructions to register the agent.",
"Register your Workstation": "Register your Workstation",
"Otherwise, go to the \"Install the Drata Agent\" section of your My Drata page, and click on the \"Register Drata Agent\" button.": "Otherwise, go to the \"Install the Drata Agent\" section of your My Drata page, and click on the \"Register Drata Agent\" button.",
"Go to My Drata": "Go to My Drata",
"My Drata": "My Drata",
"Agent Version {version}": "Agent Version {version}",
"Quit Agent": "Quit Agent",
"Help": "Help",
"Sync Now": "Sync Now",
"Last synced: {syncedAt}": "Last synced: {syncedAt}",
"Configure your computer": "Configure your computer",
"Incomplete": "Incomplete",
"Completed": "Completed",
"Tasks completed": "Tasks completed",
"{passed} out of {total} tasks completed.": "{passed} out of {total} tasks completed.",
"The following tasks are not compliant and need attention": "The following tasks are not compliant and need attention",
"The following tasks are completed and compliant": "The following tasks are completed and compliant",
"Navigate back": "Navigate back",
"Install the Company's Approved Password Manager": "Install the Company's Approved Password Manager",
"Download and install a password manager on your computer. This is the application you will use to generate, store, and share all passwords, MFA codes, as well as secure notes.": "Download and install a password manager on your computer. This is the application you will use to generate, store, and share all passwords, MFA codes, as well as secure notes.",
"You are using an approved password manager": "You are using an approved password manager",
"How to download and install a password manager": "How to download and install a password manager",
"Hard-Disk Encrypted": "Hard-Disk Encrypted",
"You'll need to encrypt your computers hard drive.": "You'll need to encrypt your computers hard drive.",
"Your computer's hard drive is encrypted.": "Your computer's hard drive is encrypted.",
"How to encrypt your hard drive": "How to encrypt your hard drive",
"Automatic Updates Enabled": "Automatic Updates Enabled",
"You'll need to turn on auto-updates.": "You'll need to turn on auto-updates.",
"Your computer will automatically update.": "Your computer will automatically update.",
"How to turn on auto-updates": "How to turn on auto-updates",
"Install Anti-Virus/Malware Software": "Install Anti-Virus/Malware Software",
"You'll need to download and install anti-virus software.": "You'll need to download and install anti-virus software.",
"You are using anti-virus software.": "You are using anti-virus software.",
"How to download and install anti-virus software": "How to download and install anti-virus software",
"Screen Saver Lock": "Screen Saver Lock",
"You'll need to configure your security settings to require your login password within a specific timeframe after your computer goes to sleep or the screen saver begins. Review the help article and check with your IT and compliance teams for specific guidelines.": "You'll need to configure your security settings to require your login password within a specific timeframe after your computer goes to sleep or the screen saver begins. Review the help article and check with your IT and compliance teams for specific guidelines.",
"Once your computer goes to sleep or the screen saver begins, your computer will lock within 60 seconds.": "Once your computer goes to sleep or the screen saver begins, your computer will lock within 60 seconds.",
"How to enable screen saver lock timing": "How to enable screen saver lock timing",
"Help article:": "Help article:",
"Drata Shield Logo": "Drata Shield Logo",
"Device compliance complete.": "Device compliance complete.",
"No action needed at this time": "No action needed at this time",
"Syncing your data!": "Syncing your data!",
"Please wait": "Please wait",
"Waiting for the first Sync": "Waiting for the first Sync",
"Please click the \"Sync Now\" button bellow": "Please click the \"Sync Now\" button bellow",
"Sync Successful": "Sync Successful",
"Fetching initialization data.": "Fetching initialization data.",
"Initialization data successfully fetched.": "Initialization data successfully fetched.",
"You've already registered the Drata Agent.": "You've already registered the Drata Agent.",
"No further action required.": "No further action required.",
"You need to register the Drata Agent.": "You need to register the Drata Agent.",
"Go to My Drata, open the \"Install the Drata Agent\" section and click the \"Register Drata Agent\" button.": "Go to My Drata, open the \"Install the Drata Agent\" section and click the \"Register Drata Agent\" button.",
"Take me to My Drata": "Take me to My Drata",
"Okay": "Okay",
"The authorization didn't work": "The authorization didn't work",
"Your company's account is disabled.": "Your company's account is disabled.",
"If you believe this is an error, please contact your system administrator.": "If you believe this is an error, please contact your system administrator.",
"The Drata Agent is not authorized.": "The Drata Agent is not authorized.",
"You are not registered.": "You are not registered.",
"We are completing your account configuration.": "We are completing your account configuration.",
"Please try again in a few minutes.": "Please try again in a few minutes.",
"We are making Drata even better than before.": "We are making Drata even better than before.",
"Hide Agent": "Hide Agent",
"Register": "Register",
"Save Diagnostics": "Save Diagnostics",
"Dev Tools": "Dev Tools"
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit ddbe6f2

Please sign in to comment.