Commit Graph

226 Commits (b4773c15afe4fcd227ad88aa9d5686beb6b0a6cd)

Author SHA1 Message Date
Tim Raymond d17507a8cd Rename JWTMux to CookieMux
JWTMux was a disingenuous name because while JWTs are a very good choice
for a cookie encoding, they were not strictly required for use with this
mux. To better indicate the responsibilities of this mux, it's been
renamed "CookieMux," since its responsibilities end with persisting the
oauth2.Authenticator's encoded state in the browser. It is up to the
oauth2.Authenticator to choose the encoding.
2017-02-17 12:57:08 -05:00
Tim Raymond 0ebe675f6e Configure Mux to use Heroku OAuth2 provider
If a --token-secret, --heroku-client-id, and --heroku-secret are
provided to Chronograf, it will add Heroku as an OAuth2 provider. These
tokens can be obtained (as of this writing) by visiting your "manage
account" page, navigating to "Applications," and then clicking "Register
New API Client" under the "API Clients" section.
2017-02-16 12:56:59 -05:00
Chris Goller 2017944b68 Add unified OAuth2 logout route redirecting to provider logout
Signed-off-by: Tim Raymond <tim@timraymond.com>
2017-02-15 16:29:13 -06:00
Chris Goller 7e28642e8c Add routes for oauth providers 2017-02-15 14:07:33 -06:00
Hunter Trujillo 6d601d527f Add frontend support for OAuth changes. 2017-02-15 11:57:52 -07:00
Chris Goller 7b4a649130 Add --public-url CLI option to support google oauth redirect uri 2017-02-14 23:34:15 -06:00
Chris Goller b9b37f3b90 Add google oauth provider. Need redirect_uri 2017-02-14 23:11:11 -06:00
Chris Goller 3eb39d85a8 Remove unneeded authenticator from github 2017-02-14 23:09:34 -06:00
Tim Raymond d07c7ca1d6 Reorganize OAuth2 Logic
Created an oauth2 package which encapsulates all oauth2 providers,
utility functions, types, and interfaces. Previously some methods of the
Github provider were used as http.HandlerFuncs. These have now been
pulled into a concrete type called a JWTMux to implement other Oauth2
providers.

JWTMux has all of the functionality required to take a token from any
provider and store it as a JWT in a browser, and that is the extent of
its responsibilities. It implements the oauth2.Mux interface which would
potentially allow other strategies of oauth2 credential storage.
2017-02-14 16:18:41 -05:00
Chris Goller f1e7ae30c3 WIP 2017-02-13 18:02:43 -06:00
Chris Goller eb173a879c WIP 2017-02-13 08:45:37 -06:00
Chris Goller 442b892bc3 Fix go vet commiting of NewListener 2017-02-12 21:48:12 -06:00
Chris Goller 44c40d4c7b Add TLS w/ env vars TLS_CERTIFICATE/TLS_PRIVATE_KEY 2017-02-12 21:33:27 -06:00
Chris Goller 7c81fca497 Add HSTS handler to add headers for upcoming TLS support 2017-02-12 18:21:49 -06:00
Chris Goller 0b7e3b8fe1 Update chronograf sources response 2017-02-12 16:38:05 -06:00
Chris Goller c125c48efc Fix swagger JSON formatting 2017-02-10 13:57:12 -06:00
Chris Goller 1d9bb70414 Add disable and enable to kapacitor alerts 2017-02-10 13:48:42 -06:00
Chris Goller 13d7b8ff90 Merge pull request #859 from influxdata/feature/server-gzip
Add gzip compression to all of our server responses and caching for assets
2017-02-10 10:27:21 -06:00
Jade McGough 8cc684588e add metaURL to source 2017-02-09 23:14:04 -06:00
Jade McGough 4074698814 add metaUrl to swagger 2017-02-09 23:11:51 -06:00
Chris Goller f37bed5403 Fix url_prefixer to write asset headers 2017-02-09 17:13:34 -06:00
Chris Goller 0b8c334c9d Add gzip compression to all of our server respones 2017-02-09 14:35:38 -06:00
Chris Goller 1402a4916d Update swagger spec to include alertNodes for kapacitor 2017-02-09 00:50:59 -06:00
Chris Goller aa4b6fb689 Add kapacitor alert node structs 2017-02-08 22:18:23 -06:00
Chris Goller 7deaf845a7 Merge pull request #852 from influxdata/feature/kapacitor-detail-field
Update kapacitor alert rule to have detail field
2017-02-08 20:50:48 -06:00
Chris Goller 98198dbf5b Update kapacitor alert rule to have detail field 2017-02-07 17:09:14 -06:00
Chris Goller 1522dc6e4e Remove explorations from backend server 2017-02-01 15:09:02 -06:00
Chris Goller cfc3bf357f Add BASE_PATH env var to -basepath cli option 2017-01-28 10:47:30 -06:00
Chris Goller 456b02a7b3 Update dashboard swagger definition to use LayoutQuery instead of a string 2017-01-27 19:08:40 -06:00
Tim Raymond ee8b9345e9 Fix typo
Spelling is hard.
2017-01-27 19:31:57 -05:00
Tim Raymond 594c1fc587 Merge branch 'master' into feature/tr-host-under-path
Conflicts:
  - CHANGELOG.md
2017-01-27 19:30:43 -05:00
Tim Raymond 3752affedf Remove extraneous lines
One of these was from experimental work during working on this feature.
The other is just... well, extra.
2017-01-27 19:27:59 -05:00
Tim Raymond 31621b460d Make URLPrefixer use the chronograf.Logger
We have a unified structured logging package in Chronograf, and this
should use it.
2017-01-27 19:24:51 -05:00
Tim Raymond a0ba920046 Move Basepath prop to better match style
Since this is a flag that is being accepted by the application, it makes
sense to group it with the other flags. Also, the `json` struct tag was
a remnant from an earlier attempt at implementing this feature, and is
no longer necessary.
2017-01-27 19:15:56 -05:00
Tim Raymond e3186479cd Move URLPrefixer setup to mux, add default
URLPrefixer had nothing to do with assets, so it actually belongs up in
the mux, where we're assembling handlers together across the
application.

Also, the setup was painful to look at, and others will probably use the
same `Attrs`, so a `NewDefaultURLPrefixer` was added to spawn a prefixer
with only a prefix and a next handler.
2017-01-27 19:14:21 -05:00
Jade McGough e85fed1ddd Merge pull request #808 from influxdata/feature/614-dashboard-view
Feature/614 dashboard view
2017-01-27 15:49:14 -08:00
Tim Raymond 609b7a1d1a Setup front-end to work with a basepath
React-router and also the client that we use in the frontend need to be
informed on how to access the Chronograf backend when it's being hosted
on a route other than /. To accomplish this, a data attribute is written
into the `<div>` which serves as our React root. We then make the React
router aware of this if it's set and also pass the prefix to axios (our
front end HTTP client) by way of window.

Originally, it was desired to have the basepath accessible via an API,
but this proved to be impossible because to access that API, the front
end would already need to know the basepath. The technique we went with
was arrived at independently, but is also used by Jupityr notebooks
which encountered the same problem.
2017-01-27 17:00:08 -05:00
Tim Raymond cf243794af Improve docs on URL Prefixer
These were a little too brief. Hopefully these make it clearer to others
2017-01-27 17:00:08 -05:00
Tim Raymond e6a4635266 Make basepath configureable
/chronograf was hard-coded for developing this feature. This adds a
--basepath flag that lets users configure what the basepath will
actually be
2017-01-27 17:00:08 -05:00
Tim Raymond 9d2e9111ef Make prefixer support multiple tags, chunked enc
The prefixer needs to not only replace `src="` attributes as it
currently does because that is not the only place a relative URL can
appear. It needs to also prefix URLs found in CSS which can also come
from the downstream http.ResponseWriter.

This adds support for an arbitrary list of patterns that will cause the
prefixer to insert its configured prefix. This is currently set to look
for `src`, `href`, and `url()` attributes.

Also, because we are modifying the stream, we need to suppress the
Content-Length generated by any downstream http.Handlers and instead
enable Transfer-Encoding: chunked so that we can stream the modified
response (we don't know apriori how many times we'll perform a
prefixing, so we can't calculate a final Content-Length). This is
accomplished by duplicating the Headers in the wrapResponseWriter that
is handed to the `Next` handler. We also handle the chunking and
Flushing that needs to happen as a result of using chunked transfer
encoding.
2017-01-27 17:00:08 -05:00
Tim Raymond 33256914b3 Add URL Prefixer
In order to support hosting chronograf under an arbitrary path[1], we
need to be able to rewrite all the URLs that are served in HTML and CSS.
Take, for example, the scenario where Chronograf is to be hosted under
`/chronograf` using Caddy and this example Caddyfile:

```
localhost:2020
gzip
proxy /chronograf localhost:8888 {
  without /chronograf
}
```

Chronograf will not load properly when visiting
`http://localhost:2020/chronograf` because the requests for CSS, and
fonts will go to `http://localhost:2020/app-somegianthash.js` when they
should go to `http://localhost:2020/chronograf/app-somegianthash.js`.
This is the essence of issue #721.

To solve this, we add a URLPrefixer http.Handler, that acts as a
middleware. It inserts itself between any upstream handlers, and the
handler that was passed to it as its `Next` parameter and searches for
`src="` attributes. Upon discovering one of these attributes, it writes
the detected attribute and then the configured prefix. It then continues
writing the stream to the upstream http.ResponseWriter until
encountering another attribute until EOF.
2017-01-27 17:00:08 -05:00
Jade McGough 154f6f312c fix dashboards routes 2017-01-27 04:59:13 -08:00
Jade McGough fdb6de3503 fix bugs 2017-01-27 04:51:31 -08:00
gunnaraasen 58a2a82d52 Add X-Chronograf-Version header 2017-01-23 23:29:12 -08:00
Chris Goller a8729df725 Fix kapacitor auth with basic auth in header
Proxying the basic auth via URL path was not working, so, this
places it directly into the header.
2017-01-10 18:51:25 -06:00
Chris Goller a8252b5cda Merge pull request #738 from influxdata/feature/go-orphan-kapacitor
Update source remove to also remove kapacitor and rules resources
2017-01-09 15:49:05 -06:00
Chris Goller 3dc578aa59 Merge pull request #733 from influxdata/feature/go-oauth-gh-orgs
Add Github organization restriction to authentication
2017-01-06 13:27:25 -06:00
Hunter Trujillo 10a0ea1c14 Clarifying operator values. 2017-01-06 10:45:54 -07:00
Chris Goller bc3a0e1b3d Add Github organization restriction to authentication 2017-01-06 11:39:20 -06:00
Chris Goller c852618342 Merge pull request #728 from influxdata/feature/go-insecure-tls
Add insecureSkipVerify option to source to accept all influxdb certs
2017-01-05 16:08:58 -06:00
Chris Goller 18b7dd1932 Fix formatting of swagger.json 2017-01-05 15:59:46 -06:00
Chris Goller 291bab7f16 Update removal of sources to include removing kapacitor and rules resources 2017-01-05 14:47:44 -06:00
Chris Goller bf415e5eea Update kapacitor alert rules to accept inside and outside range 2017-01-04 22:20:12 -06:00
Chris Goller 439a4d32e8 Add insecureSkipVerify option to source to accept all influxdb certs
The insecureSkipVerify defaults to false, but when true, instructs
the server to accept any certificate coming from the InfluxDB server.
2017-01-04 19:35:07 -06:00
Mark Rushakoff 84d28e3aad Miscellaneous lint cleanup 2016-12-20 12:59:56 -08:00
Chris Goller ad2374fbb7 Merge pull request #700 from influxdata/jz-add-uptime
Add server uptime reporting
2016-12-19 16:10:14 -06:00
Jack Zampolin 9994097ebc Address PR comments 2016-12-19 13:29:33 -08:00
Jack Zampolin 3ab2c13364 Add server uptime reporting 2016-12-19 12:09:59 -08:00
Jade McGough 1be3eef2e2 Merge pull request #691 from influxdata/feature/dashboards
Feature/dashboards
2016-12-15 13:54:23 -08:00
Jade McGough 32f1097a7d fix json decoding 2016-12-15 13:53:43 -08:00
Jade McGough ffe9943212 clean up pointer usage 2016-12-15 13:37:11 -08:00
Jade McGough 7d275b9551 add dashboard validation 2016-12-15 13:22:32 -08:00
Jade McGough 00f66e7593 fix bugs 2016-12-15 11:27:06 -08:00
Jade McGough d3e77fd253 wording 2016-12-15 00:41:42 -08:00
Jade McGough eda132df08 add update function for dashboards api 2016-12-15 00:31:53 -08:00
Jade McGough 52e845844f formatting 2016-12-14 12:55:21 -08:00
Jade McGough e8d1094be9 add dashboard creation to API 2016-12-14 12:54:58 -08:00
Jade McGough 8bc8ba151e formatting 2016-12-14 12:12:20 -08:00
Jade McGough 7986ecce3f add dashboard GET and DELETE handlers 2016-12-14 09:37:47 -08:00
Jade McGough 8f939f8fbf omg it compiled 2016-12-13 23:56:26 -08:00
Jade McGough ccf93b4781 fix errors 2016-12-13 22:57:52 -08:00
Jade McGough 4cd1037ce0 update internal.pb.go 2016-12-13 03:07:24 -08:00
Jade McGough 70e64b6baf WIP 2016-12-08 19:28:40 -08:00
Chris Goller 34b79fd0eb Fix Content-Type of the index.html page to be text/html 2016-12-08 21:03:11 -06:00
Chris Goller a073f26078 Merge pull request #673 from influxdata/remove_endpoint
removing unimplemented endpoint from swagger
2016-12-08 17:23:38 -06:00
Jade McGough 7393e4b321 removing unimplemented endpoint from swagger 2016-12-08 15:12:39 -08:00
Jade McGough 7599369eed add dashboards interface/structs 2016-12-07 16:31:22 -08:00
Jade McGough 9a2e49b4d2 add routes and stubs for dashboard API endpoints 2016-12-07 15:18:04 -08:00
Jade McGough fa8edf94c5 add swagger documentation for dashboard routes 2016-12-07 15:17:42 -08:00
Jade McGough 37f7ba5c68 shorten TCPKeepAlive length 2016-12-07 15:17:27 -08:00
Chris Goller a6cb4a1935 Update teapot to be informational 2016-12-07 13:28:58 -06:00
Jade McGough ec52b8a813 update swagger 2016-12-05 22:07:11 -08:00
Chris Goller 66ac6af136 Update layout ylabel and yrange to be properties of the query. 2016-11-30 14:13:15 -08:00
Chris Goller 28bccfdcb2 Add ylabels and yranges to layouts 2016-11-30 14:04:32 -08:00
Will Piers bc9ee7eeea Rebase and add error logging for users endpoint 2016-11-21 14:24:01 -07:00
Will Piers f3cdf81ab5 Return 418 when auth is turned off 2016-11-21 14:20:33 -07:00
Will Piers d3da8998e8 Add users endpoints/storage plus me endpoint 2016-11-21 14:19:57 -07:00
Chris Goller b63047a402 Add server error logging 2016-11-19 11:41:06 -06:00
Chris Goller f002fd774a Update swagger to remove rp/db for layouts 2016-11-18 16:07:53 -06:00
Chris Goller 88d60c9807 Fix tab spacing in protobuf and swagger 2016-11-18 16:07:53 -06:00
Chris Goller 923a9d3c31 Update sources endpoint to take optional telegraf database name. 2016-11-18 16:07:53 -06:00
gunnaraasen 97a3e0e939 Update reporting tag to use chronograf-ng 2016-11-16 15:25:12 -08:00
Chris Goller 6a167f2a05 Fix layouts to enforce uniqueness 2016-11-14 22:25:38 -06:00
Chris Goller bfb5fcbe02 Revert bin layouts for now 2016-11-14 22:17:09 -06:00
Chris Goller b6a0d7c5cc Add layouts as bindata in case chronograf run as a single-file binary
Using my existing layout chaining, I added layouts wrapped in
go-bindata as the last option for loading layouts.  This means
that the data store is preferred over file system over bindata.

With this functionality, we can simply distribute the single-file
binary.
2016-11-14 19:07:38 -06:00
Chris Goller 07ffedc058 Fix logger panic and put logging of queries into debug 2016-11-12 17:48:49 -06:00
Chris Goller eb604317c7 Fix several handlers that were not returning after error 2016-11-11 12:52:34 -06:00
Chris Goller 2764db6cb1 Merge pull request #452 from influxdata/fix-kapacitor-update
Fix #442 ; update tickscript to be disabled during script update followed by enable
2016-11-10 13:13:03 -06:00
Chris Goller c48bfe21b9 Fix #442 ; update tickscript to be disabled during script update followed by enable 2016-11-10 12:56:34 -06:00
Chris Goller 312254667b Merge pull request #451 from influxdata/feature/ga-remove-pw-todos
Remove password in cleartext TODOs
2016-11-10 12:26:53 -06:00
gunnaraasen 950159ea47 Remove password in cleartext TODOs 2016-11-10 10:09:14 -08:00
Chris Goller ff3d319866 Update tickscript generation to use group by time as period.
Add httpOut node
Remove spurious variables
2016-11-10 11:35:26 -06:00
gunnaraasen 8d57cc92ec Add version option 2016-11-09 13:25:07 -08:00
Ross McDonald 483c999200 Minor changes to packaging:
* Change default host from localhost to 0.0.0.0.

* Modify default database name to `chronograf-v1.db`.

* Change default port from 10000 to 8888.
2016-11-08 08:34:03 -06:00
Chris Goller 93b249cc09 Update default cli options to be 0.0.0.0 and 8888 2016-11-07 20:50:06 -06:00
Chris Goller 3bdcb2c578 Merge pull request #387 from influxdata/remove-mrfusion
Remove mrfusion name from source
2016-11-07 11:33:23 -06:00
Chris Goller 16c14521df Merge pull request #386 from influxdata/update-cli-options
Update cli options
2016-11-07 11:29:05 -06:00
Chris Goller ee82586ded Remove mrfusion name from source 2016-11-07 11:22:23 -06:00
Chris Goller 680f3ef68c Update cli/env options to use port 10000 and remove TLS for now 2016-11-07 11:09:51 -06:00
Chris Goller 7096e2ee70 Update layouts to not use UUIDs in name and only use filesystem 2016-11-07 10:10:26 -06:00
Tim Raymond cb37de2d76 Make /mappings use App Name instead of ID
Due to developer confusion over nomenclature, the ID was used in lieu of
the Application property of `Layout`. `layout.Application` holds the
user-facing name for a particular layout, and is what should be paired
with a measurement name in the `/mappings` endpoint.

Before
------
```
% curl http://localhost:8888/chronograf/v1/mappings
{
   "mappings" : [
      {
         "name" : "18aed9a7-dc83-406e-a4dc-40d53049541a",
         "measurement" : "disk"
      }
   ]
}
```

After
-----
```
% curl http://localhost:8888/chronograf/v1/mappings
{
   "mappings" : [
      {
         "measurement" : "disk",
         "name" : "User Facing Application Name"
      }
   ]
}
```

Connect #326
2016-11-04 14:04:50 -04:00
Chris Goller 0ab6b8073f Update tasks to be called rules 2016-11-04 01:54:39 -05:00
Chris Goller c3bb854803 Fix bolt scoping and minor kapacitor tickscript updates 2016-11-03 22:25:41 -05:00
Chris Goller dd6da581df Update to store alert information in boltdb 2016-11-03 19:52:13 -05:00
Chris Goller fcbc84c929 Add ticker and id generator to creation of new kapa alert 2016-11-03 19:52:13 -05:00
Chris Goller fe5700709d Add tasks routes to swagger doc and run through linter. 2016-11-03 19:52:13 -05:00
Chris Goller 1ff551b03d Add basic kapacitor task routes. Still need schema and storage 2016-11-03 19:52:13 -05:00
Chris Goller b7437da989 Add kapacitor tickscript template generator for threshold, relative, deadman 2016-11-03 19:52:00 -05:00
nathan haugo 770bb0ef6e Revert unwanted changes from commit to new_apps.sh 2016-11-03 11:13:40 -07:00
nathan haugo a212660084 Add name and cell to new_app.sh 2016-11-03 11:03:26 -07:00
Chris Goller 9a64acc898 Merge pull request #313 from influxdata/feature/tr-wire-up-mappings
Wire up /mappings endpoint to layouts
2016-11-01 17:05:43 -05:00
Chris Goller dea713465c Fix kapacitor error message on POST with invalid data. 2016-11-01 16:45:31 -05:00
Tim Raymond f4682c51d6 Wire up /mappings endpoint to layouts
This populates the /mappings with data found in the LayoutStore. It uses
the ID for the layout as the mappings Name and pulls the Measurement
from there as well.
2016-11-01 15:49:10 -04:00
gunnaraasen 39d21014dc Add usage stats reporting 2016-10-28 14:34:55 -07:00
Chris Goller d6a067427b Fix mux paths to be hardcoded; clarify server start; fix golint 2016-10-28 11:27:06 -05:00
Chris Goller d1359c09b3 Refactor to remove autogenerated code. 2016-10-26 22:10:52 -05:00