Commit Graph

9714 Commits

Author SHA1 Message Date
Mike Arpaia
1f6c8a82de Updating the docker image to go 1.7 (#104) 2016-09-04 11:55:26 -04:00
Mike Arpaia
53a1fe8d84 queries and packs services via go-kit (#102)
* osquery services via go-kit

* Visual Studio Code configurations

* create query and pack endpoints

* organizing files more scalably

* modify query and pack endpoints

* delete query and pack endpoints

* get query and pack endpoints

* get all queries and packs endpoints

* add and remove queries from packs

* test stubs

* removing some indirection

* query service tests

* service pack tests

* transport tests

* adding config file flag back

* organizing package kolide

* get queries in pack endpoint

* run tests on 1.7?

* no 1.7 image :(

* typo in circle.yml
2016-09-04 01:13:42 -04:00
Mike Arpaia
5b78c0a7cc Organizing cobra commands (#100) 2016-09-03 13:25:16 -04:00
Victor Vrantchan
9ab09f122a update user service (#101)
- Added all required methods for a UserService
- Added authentication handlers `/api/login` and `/api/logout`
- Added authMiddleware for authentication for `/api/v1/kolide` path
- Added authorization middleware for each endoint
- Added validation middleware for validating API inputs
- Began work on logging middleware
2016-09-01 00:51:38 -04:00
Victor Vrantchan
b08d5cfb54 add more user auth methods 2016-08-29 13:04:07 -04:00
Victor Vrantchan
0bb0ce8888 update glide 2016-08-29 09:10:09 -04:00
Victor Vrantchan
c04e4f82dd add setpassword to service 2016-08-29 09:07:23 -04:00
Victor Vrantchan
739bd2924c add tests for set password 2016-08-28 20:29:56 -04:00
Victor Vrantchan
d611dc7786 add WriteActions context 2016-08-28 11:12:04 -04:00
Victor Vrantchan
a07e9c7d77 go-kit server layout 2016-08-27 23:59:17 -04:00
Victor Vrantchan
2946eeabfc add Dockerfile (#94)
* add Dockerfile to build
2016-08-25 09:25:02 -04:00
Zachary Wasserman
41fe404ef1 HTTP Controller updates for label queries (#96)
Add controller methods for:

* Retrieving label queries
* Storing results of label queries
2016-08-24 16:50:28 -07:00
Mike Arpaia
3f81dda638 Query management backend (#95)
* initial data model modifications

* stubbing out http api endpoints

* becoming more restful

* GetAllQueries

* GetAllPacks

* GetQuery

* GetPack

* fixing datastore tests

* CreateQuery

* CreatePack

* ModifyQuery

* ModifyPack

* DeleteQuery

* DeletePack

* AddQueryToPack

* DeleteQueryFromPack

* todo change route URI

* fixing go vet

* comments

* universal url id parsing api
2016-08-23 19:30:55 -07:00
Zachary Wasserman
202319e83a Add method for recording label query results (#92)
* New datastore method for recording label query results
* Add to label query test
2016-08-22 08:46:18 -07:00
Mike Arpaia
b8d4c78f62 Integration tests (#90)
* tests for auth endpoints

* create user test and fatals instead of panics

* more tests

* remove init viper config setting

* stubbing

* more tests

* more tests

* organizing auth and users files

* rest of auth tests

* password reset tests
2016-08-19 23:56:49 -07:00
Mike Arpaia
06402eefe9 Removing bindata.go 2016-08-19 18:39:31 -07:00
Victor Vrantchan
578b81558c add build container for testing in ci (#89)
build fails if container exit code fails. 
One step closer to #71
2016-08-19 20:05:24 -04:00
Zachary Wasserman
7ec484633a Add GetLabelQueriesForHost (#86)
* Add/update models for label queries
* Write functions to determine which label queries should run for a given host
* Tests
2016-08-19 11:24:59 -07:00
Victor Vrantchan
1062f0c912 add datastore tests (#87)
import original mysql drivers instead of the gorm dialect
comment blank imports for db drivers, but leave in datastore rather than main
2016-08-19 00:57:00 -04:00
Mike Arpaia
26e2a7c025 Isolate gorm to the plugin and add back sqlite3 (#85) 2016-08-18 18:20:33 -07:00
Mike Arpaia
46a35d49b4 Updating prepare connection syntax to be the same as serve 2016-08-18 17:55:25 -07:00
Mike Arpaia
d92992b3dd Session shuffle and rename app to server (#84)
* renaming campaign to email

* moving session management code to the new kolide/datastore pattern

* removing global configuration variables in favor of config

* moving email operations to package kolide

* moving app to server

* using http.ListenAndServeTLS instead of a method on *gin.Engine

* remove the kolide.go dependency on gin
2016-08-18 17:45:39 -07:00
Victor Vrantchan
5d8ca61472 Domain Types (#83)
* create datastore package with New func to create a db connection

* separate creating a user object from saving to db
temporarily pass db around through gin context to compile app
main should create the datastore and pass it in to http handler explicitly instead

* create datastore from config params

* move gorm specific code to gorm.go

* re-export app.NewUser

* test new user

* add User() method for getting a user
temporary, the API will improve once I add filters

refactor test func to use sqlite by default and mysql if available

* add save user

* move some users tests to datastore, temporarily remove user tests from app

* add EnrollHost and test

* move enrollhost to datastore

* all enrollment tests now in datastore

* add datastore_test for re-enroll

* it compiles now...

* move other interfaces to models

* start wrapping errors in database error

* add tests for campaign

* move users to package kolide

* move hosts and passwordrequests

* package kolide

* moving all types to package kolide

* making new osquery endpoints use groob's new pattern
2016-08-18 14:16:44 -07:00
Mike Arpaia
9f8706bb43 Organizing the README a wee bit (#82) 2016-08-18 11:04:56 -07:00
Zachary Wasserman
49fe2ed595 Add osquery log file paths to list of env variables (#81) 2016-08-17 17:31:37 -07:00
Mike Arpaia
8ca6504688 New flag to disable banner: --disable-banner (#80)
* New flag to disable banner: --disable-banner

* Move globals into configuration

* Changing tool category name to logging
2016-08-17 16:53:28 -07:00
Zachary Wasserman
503ae54f46 Ingest status and result logs (#77)
* Implement log endpoint for status/result log ingestion
* Define interface for log handlers: OsqueryResultHandler and OsqueryStatusHandler
* Initial implementation of file logger handlers
* Unit + integration tests

Closes #7
2016-08-17 12:45:29 -07:00
Victor Vrantchan
0c51890b30 replace godep in favor of glide and using vendor directory
update make deps step in Makefile
update workflow for managing third party dependencies in README
closes #24, #47
2016-08-15 09:44:10 -04:00
Mike Arpaia
736bce5033 Email-based password reset (#54)
* No more hard deletes

* scaffolding for password reset endpoint

* Ensure password reset state is accounted for in VC checks

* password reset endpoints and data structures

* ability to change password with reset token

* smtp server connection pool management

* stubbing out the sending of the email

* adding mailhog via docker

* HTML emails with confgurable host name

* fixing typo in the comments

* Fixing merge which undid DatabaseError replacement

* documentation in the readme

* webpack shortcut for components

* removing a sneaky merge line that snuck in

* temporary email content api

* tests for password reset flow

* fixing go vet

* comments and making all db use `&value` rather than `reference`

* more correct usage of the errors library and moving email sending to it's own method

* using the wrong error

* fixing email mock object error

* less incorrect error usage

* rebasing and merging

* http constants for status code

* using ParseAndValidateJSON instead of BindJSON

* validate instead of binding in struct tags

* NewFromError instead of New
2016-08-12 12:20:29 -07:00
Mike Arpaia
ce9b7b9f91 removing the old config library from the test runner 2016-08-12 11:46:15 -07:00
Mike Arpaia
49d43522a3 fixing the build 2016-08-12 11:31:27 -07:00
Mike Arpaia
45dbac4354 Using viper and cobra for config/commands (#67) 2016-08-12 11:05:48 -07:00
Zachary Wasserman
809a010a1d Initial implementation of osqueryd enrollment + tests (#36)
*EnrollHost now generates a node key and stores host information into the DB
* Unit and integration tests

Closes #6
2016-08-11 13:50:03 -07:00
Zachary Wasserman
4db4e95b38 Add *.test to .gitignore (#64) 2016-08-11 09:44:00 -07:00
Mike Arpaia
64d16b8a16 README and workflow updates (#62) 2016-08-10 08:31:27 -07:00
Mike Arpaia
b13f99ac37 README and Makefile typo fixes 2016-08-09 22:23:04 -07:00
Mike Arpaia
3a9381c5b3 React Base (#61)
* Add sensible React base to the app for frontend

This PR attempts to "reactify" Kolide and provide a sane development environment
that a front-end engineer would probably expect.

This PR accomplishes by doing the following:

1. Reorganizes the app into a `server/` and `client/` folders to keep golang
logic separated from react logic.

2. Adds an "asset pipeline" via webpack which knows how to build a js
and css bundle.

3. Packages up all static assets in a go-bindata file so that the binary
remains portable without external file dependencies.

1. Add a Makefile with several targets that will be common in everyday
development. For example, we have `serve` target which spins up a nodejs
reverse proxy on port 8081 which then watches for changed files, automatically
rebuilds the app, and hot loads the new JS/CSS in.

 **Note:** Please use `make` to build the app, not `go build` as there are
now several things that need to be orchestrated beyond the go code to build the app.

* Create build if it doesn't exist, and use `go get`

* Improve README to reflect new dev workflow

* Document css vars and funcs and use alias paths

* makefile and structure modifications
2016-08-09 22:15:44 -07:00
Mike Arpaia
b6ac5b1bdb Updating README and documentation to reflect local building and testing (#58) 2016-08-09 19:17:07 -07:00
Zachary Wasserman
604e3e4fb0 Improve error handling throughout backend (#50)
* New function `errors.ReturnError` for writing errors into the HTTP response
* New type `KolideError` that includes additional error context
* Validation and application errors are reported in a consistent JSON format
* Add 404 handler
* Refactored error handling throughout codebase to use new error patterns
2016-08-09 19:04:28 -07:00
Zachary Wasserman
2c15647b6e Fix certificate path in development config (#55)
Also adds error checking to `RunTLS`
2016-08-09 16:18:03 -07:00
Mike Arpaia
2ee93d4724 Documenting HTTP handlers using Swagger format (#43)
More tooling for using Swagger will come soon. For now, use whatever you'd
like.
2016-08-09 10:48:53 -07:00
Mike Arpaia
2d2d667f4a Attempt to clean the codebase (#53) 2016-08-09 10:24:29 -07:00
Mike Arpaia
9181ae9c3d Adding a circle config file (#52) 2016-08-08 20:42:24 -07:00
Mike Arpaia
be6ac06be6 Updating README with CircleCI badge (#51) 2016-08-08 19:50:38 -07:00
Mike Arpaia
bc8ea99924 fixing typo in travis config 2016-08-08 17:37:35 -07:00
Mike Arpaia
37eea61821 removing tip from go builds because it takes too long 2016-08-08 09:55:37 -07:00
Mike Arpaia
0a0bf41b16 slack configurations for travis ci 2016-08-08 09:54:15 -07:00
Mike Arpaia
404406b821 TravisCI configurations (#46) 2016-08-08 09:50:54 -07:00
Mike Arpaia
fe2bf7eb2b Moving sessions code into sub-package (#42)
Since the sessions code mostly stands on it's own, I wanted to break the
dependencies apart from it and move it into it's own package.
2016-08-05 10:47:41 -07:00
Zachary Wasserman
cd8057e860 Turn down logging in tests except after failure (#41)
When tests succeed, there is now no logging of DB queries or HTTP
requests. If a test fails, the logs will be output.
2016-08-04 21:10:23 -07:00