Commit Graph

1048 Commits

Author SHA1 Message Date
RobertJoonas
0194d57b38
add upper bound to limit parameter (#2226)
* add upper bound to limit parameter

* add more strict validation for limit parameter + 2 tests

* update changelog
2022-09-16 10:21:44 +03:00
Vinicius Brasil
dcd1640b1b
Sort timezone list by current offset (#2229)
This commit fixes a bug where the timezone list was sorted by the
standard offset, not considering timezone changes. The list was working
properly, but sorting was wrong.
2022-09-16 10:20:32 +03:00
Vinicius Brasil
178e34b9e7
Fix timezone input (#2222)
* Update Timex version from 3.7.7 to 3.7.8

* Generate timezone list from Tzdata

This commit fixes a bug where timezone changes weren't updating the
timezone list displayed when editing or creating a site.

Timezones were being pulled from a static list. This commit changes it
to generate the list from Tzdata, that uses a timezone database with
updated information on time changes. Additionally it adds more timezones
with aliases and links to the list.

Closes #1340

* Use timezone name from browser to recommend timezone

This commit matches the timezone name instead of offset to recommend a
timezone when creating a new site. The JavaScript Intl.DateTimeFormat
API is widely supported according to the link. In any case, if the
timezone fails to match by name, it fallbacks to the offset strategy.

https://caniuse.com/mdn-javascript_builtins_intl_datetimeformat_resolvedoptions_computed_timezone

Closes #904
2022-09-14 09:58:42 -03:00
Vinicius Brasil
119640486e
Remove parallel requests to Google Analytics (#2219) 2022-09-13 17:20:38 +03:00
Adam Rutkowski
cc4d4bb8e0
Fixup error reporting (ref #2181) (#2204)
* Fixup error reporting (ref #2181)

Fixes two problems:

 - `extra` sent to Sentry is always expected to be a map
 - no `String.Chars` protocol is implemented for `Finch.Error` struct

* Use explicit paths in http client tests

* Make HTTP Client tests sync
2022-09-12 13:46:23 +03:00
Vinicius Brasil
d31db86b49
List all Google Analytics views during import (#2184)
* List all Google Analytics views during import

This commit fixes a bug where different Google Analytics views with the
same name and URI were not shown. This was caused because GA views were
stored as a map, that naturally doesn't support duplicate keys.

This change updates the GA views list to display view IDs, making it
clearer to know what is being imported. The dropdown is now grouped by
website URL.

* Put Google Analytics API URLs in app env

* Add controller test to GA view list
2022-09-08 21:02:17 +03:00
Adam Rutkowski
e2aa519c31
Test HTTPClient (#2185)
* Sort dependencies

* Add :bypass dependency

* Test HTTPClient

* Rename test module
2022-09-07 14:17:57 +02:00
Vinicius Brasil
263a359366
Add missing application/ to Content-Type match (#2183) 2022-09-07 07:47:19 +02:00
Adam Rutkowski
1a294854e3
Fix improper pattern matching on Finch responses (#2181) 2022-09-06 21:27:25 +02:00
Adam Rutkowski
2275cd8e22 Respond with 400 when no auth supplied to shared link request 2022-09-05 11:15:09 +02:00
Marko Saric
b9ae568bad
Fixing Innenstadt II/III to Frankfurt (#2162) 2022-09-01 17:34:56 +03:00
Vinicius Brasil
e417c82a26
Perform calculations in SQL instead of app when creating sites (#2156)
This commit removes some Enum calls to rely on the database for
aggregating data. This improves performance when creating new sites,
especially if the user has multiple sites.
2022-09-01 17:09:28 +03:00
Uku Taht
7683638b84
Embed improvements (#2148)
* Replace current tooltip with Popper.js

* Merge tooltip and title for top stats

* Format bounce rate and visit duration numbers in tooltip

* Add 'width=manual' mode for embed

* Add changelog entry

* Use helper function canMetricBeGraphed
2022-09-01 11:22:04 +03:00
Vinicius Brasil
f4a242ac71
Handle unexpected Google Analytics responses (#2158)
This commit handles unexpected Google Analytics responses while
importing, and logs to Sentry and Logger. This will improve
observability when things go wrong with GA imports.
2022-09-01 11:21:10 +03:00
Vinicius Brasil
bc68235d04
Add fallback for GA reports without rows (#2121) 2022-08-19 13:14:49 +03:00
Uku Taht
00d82fd5b1 Increase user_agents cache size to 10k 2022-08-18 12:35:14 +03:00
Uku Taht
f4db53109c Add guard to CRM subscription_plan function 2022-08-17 14:35:25 +03:00
Uku Taht
7bfd7cc219 Fix captcha HTTP request 2022-08-17 14:01:33 +03:00
Uku Taht
eb99133791 Fix favicon requests 2022-08-17 14:01:19 +03:00
RobertJoonas
4f4b05335e
link to contact page instead of mailto (#2108) 2022-08-16 16:57:02 +03:00
Vinicius Brasil
a10d44a0d7
Refactor event struct creation function (#2098)
* Replace Ingestion.Request headers with user_agent

* Replace generic Ingestion.Request params with specific fields

* Refactor event building function into small functions

* Move Plausible.Ingestion to Plausible.Ingestion.Event

* Add option to override event fields while building

* Rename Ingestion.Request meta to props

* Replace UTM-specific fields with generic query_params

* Remove Map.from_struct/1 call from ingestion pipeline

* Remove stash options from ingestion
2022-08-16 14:43:10 +03:00
Uku Taht
ad739f603b Fix compile error 2022-08-16 14:35:45 +03:00
Uku Taht
57c758cff9 Fix favicon HTTP response handling 2022-08-16 14:31:09 +03:00
Vinicius Brasil
4d20c7ce70
Catch Google Search Console grant error (#2101)
* Remove invalid Jason.decode argument

Co-authored-by: Robert Joonas <robertjoonas16@gmail.com>

* Add custom message to Google invalid grant error

Co-authored-by: Robert Joonas <robertjoonas16@gmail.com>

* Test invalid_grant while refreshing Google token

Co-authored-by: Robert Joonas <robertjoonas16@gmail.com>

Co-authored-by: Robert Joonas <robertjoonas16@gmail.com>
2022-08-16 10:55:46 +03:00
RobertJoonas
8595332717
Merge pull request #2105 from renbaoshuo/update-links-to-docs
Update links to documents
2022-08-16 07:57:57 +03:00
Manu S Ajith
777c69b1d6
Migrate HTTPoison to Finch (#2054)
Signed-off-by: Manu S Ajith <neo@codingarena.in>

Signed-off-by: Manu S Ajith <neo@codingarena.in>
2022-08-15 10:41:48 +03:00
Baoshuo
eac4660354
Update links to documents 2022-08-15 09:20:40 +08:00
Uku Taht
5c83ea77de Remove cache reporting to logs 2022-08-12 11:05:47 +03:00
Manu S Ajith
c7a9da75b4
Enable Cachex stats (#2100)
Signed-off-by: Manu S Ajith <neo@codingarena.in>

Signed-off-by: Manu S Ajith <neo@codingarena.in>
2022-08-12 11:04:56 +03:00
Manu S Ajith
c0c36646e2
Add Custom telemetry for Plausible.Event.WriteBuffer, Plausible.Event.WriteBuffer and Cachex (#2095)
* Add Custom telemetry for Plausible.Event.WriteBuffer, Plausible.Event.WriteBuffer and Cachex

Signed-off-by: Manu S Ajith <neo@codingarena.in>

* Rename telemetry.ex to avoid confusion with Phoenix Telemetry supervisor

Signed-off-by: Manu S Ajith <neo@codingarena.in>

* Remove duplicate event

Signed-off-by: Manu S Ajith <neo@codingarena.in>

Signed-off-by: Manu S Ajith <neo@codingarena.in>
2022-08-12 09:50:18 +03:00
Uku Taht
a5757bc61e Allow ownership transfers 2022-08-11 13:16:46 +03:00
Vinicius Brasil
6b8ed12567
Fix Google Search Console API call (#2090)
This commit fixes a bug where fetching Google Search Console keywords
raised a FunctionClauseError. This was introduced in #2046. This commit
also adds test coverage.
2022-08-11 11:03:06 +03:00
ruslandoga
ce461b5192 Auth updates 2022-08-10 10:37:37 +03:00
Vinicius Brasil
d41fd68e99
Create struct for event requests (#2084)
* Create struct for saving ingestion request

* Create separate function to buffer events
2022-08-10 10:36:40 +03:00
RobertJoonas
a058cf6240
added a test and changed hashmode condition (#2082) 2022-08-09 14:31:37 +03:00
Vinicius Brasil
4b9032d822
Google Analytics Import Refactor (#2046)
* Create separate module for GA HTTP requests

* Fetch GA data entirely instead of monthly

* Add buffering to GA imports

* Change positional args to maps when serializing from GA

* Create Google Analytics VCR tests
2022-08-03 12:25:50 +03:00
Vinicius Brasil
b415ebe776
Fix geolocation subdivision pattern matching (#2063)
* Fix geolocation subdivision pattern matching

This commit fixes a bug where regions were not being saved. This was
caused because Geolix response was returning an additional
`:geolocation` map key. It also adds a test case for this.

Closes #2033

* Add geolocation database to .gitignore
2022-07-28 15:59:39 +03:00
Manu S Ajith
ca15b605b7
Filter out noisy exception from Sentry (#2058)
Signed-off-by: Manu S Ajith <neo@codingarena.in>
2022-07-28 15:17:47 +03:00
Vinicius Brasil
b5ea6ae3dc
Keep user filter when listing cities, countries, and regions stats (#2030)
This commit fixes a bug where location filters were filtering stats but
not the locations list. This was caused by a `Map.put/3` call that
overrides the user filter. This commit rollbacks 5b57143273
changes and removes the `Map.put/3` call.

Closes #1982
2022-07-25 12:19:38 +03:00
Marko Saric
2eec492f45
Remove the note about hiring (#2020) 2022-07-18 10:14:04 +03:00
Uku Taht
4a33cd0a25 Delegate to default Sentry filter 2022-07-14 03:26:59 +03:00
Uku Taht
6fbb0a24a8 Do not log Sentry.CrashError to Sentry
Stops recursive error logging to sentry
2022-07-14 03:03:59 +03:00
Sasha Fonseca
db3a852f26
Fix missing 'pageviews' column from 'pages.csv' (#1988)
* Fix missing 'pageviews' column from 'pages.csv'

* Add CHANGELOG entry for Issue #1878 fix
2022-07-12 23:46:47 +03:00
Adam Rutkowski
3b82ba0e25
Upgrade to Geolix 2.0 (#1997)
* Upgrade geolix

* Remove geolix pool config

* Save unnecessary Task.async_stream roundtrip

Normally the Geolix API accepts `:where` keyword option that designates
the database to look up. In case no parameter is supplied, it'll spawn
a parallel map over all databases available. In this case we have only
one DB anyway, so there is no need for the extra instrumentation.

* Follow up on direct :geolocation lookups
2022-07-12 11:39:04 +03:00
Manu S Ajith
81f18ff0a5
Setup promex (#1999)
* Setup promex

Signed-off-by: Manu S Ajith <neo@codingarena.in>

* Cleanup promex config file

Signed-off-by: Manu S Ajith <neo@codingarena.in>
2022-07-11 15:00:04 +03:00
Uku Taht
2b8e3ea62a
Use finch in sentry client (#1996)
* Introduce Finch for Sentry integration

* Make sure the DummyAgent can be started

* No need to sanitize the dsn, finch takes care of that

* Simplify the dummy child spec

* Annotate redirects clause

* Make use of new `get_int_from_path_or_env`

* Actually use finch in Sentry config

* Configure `excluded_domains` correctly for Sentry

The way sentry is configured currently, when we get an HTTP error it
will be logged twice - once from Sentry.PlugCapture and once from
Sentry.LoggerBackend. The logger backend module does the right thing
by default but for some reason we've been overriding the config
parameter that by default stops double-counting errors. This commit
returns to the default configuration which is better.

* Default to 15s timeout

* Attempt to send twice at most

* Warn in sentry client

* Use warn level in sentry client

Co-authored-by: Adam Rutkowski <hq@mtod.org>
2022-07-08 11:14:52 +03:00
Uku Taht
0553fa041b Parse geolix pool config as integers 2022-07-07 11:38:18 +03:00
Uku Taht
1cdffb098e Revert "Temporarily return 404 for favicons"
This reverts commit 8d3bdd9816.
2022-07-06 17:46:05 +03:00
Uku Taht
8c94e52f0f Adds tracing attribute when event ingest is blocked 2022-07-06 12:54:51 +03:00
Uku Taht
292a419473
Add feature flag to block event ingest (#1991)
Event ingest can be blocked using the flag `block_event_ingest`
2022-07-06 12:25:40 +03:00
Uku Taht
8d3bdd9816 Temporarily return 404 for favicons 2022-07-05 19:52:15 +03:00
Uku Taht
9617bd41b3 Revert "Add task to remove a page from the database"
This reverts commit 566d1b917a.
2022-06-28 15:22:16 +03:00
Uku Taht
58cb2f19ae Add feature flag for google analytics imports 2022-06-28 15:16:54 +03:00
Uku Taht
566d1b917a Add task to remove a page from the database 2022-06-28 11:38:14 +03:00
Marko Saric
cd73df694c
We are looking for a Technical Customer Success Manager (#1977) 2022-06-27 10:41:32 +03:00
Uku Taht
de17154f58 Show custom event goal form by default 2022-06-21 11:34:01 +03:00
Marko Saric
e7dda24930
removing the note that we're hiring (#1958) 2022-06-16 10:11:59 +03:00
Marko Saric
2f9dbfc4a6
Changing sites into stats in this message as well (#1953)
just to make sure that it's the stats rather than actual sites that get locked
2022-06-13 12:06:37 +03:00
Uku Taht
3e5695408a
Use new Session.CacheStore in favour of Session.Store (#1934)
* Remove Session.Store in favour of Session.CacheStore

* Add CHANGELOG entry

* Use appropriate enum function
2022-06-06 10:44:33 +03:00
Kurt McAlpine
b92889aaf0
Add API to retrieve site by domain (#1942) 2022-06-03 10:37:14 +03:00
Uku Taht
30b3cc1ed6 Add error state when no data is returned from GA API 2022-06-02 14:40:52 +03:00
Uku Taht
102ff1885e Trim trailing whitespace from pathname 2022-06-02 11:34:10 +03:00
Marko Saric
2ebdf61c2b
Keep the public and in-app footers consistent (#1936)
i've tried to make the two footers consistent to include the different links we were missing in the in-app footer (terms, dpa...) but also to display the new job opening for those that are logged in. i don't have a way to test it so hopefully i didn't make any mistakes
2022-05-30 16:01:26 +03:00
Marko Saric
1e2e1d83fb
Update ownership_transfer_request.html.eex (#1929) 2022-05-30 09:18:35 +03:00
Uku Taht
76edeb8276 System route 2022-05-27 16:01:42 +03:00
Uku Taht
892133d036 Parse build information 2022-05-27 15:51:24 +03:00
Uku Taht
b667d65d52 Move ARG to running container instead of build container 2022-05-27 15:24:11 +03:00
RobertJoonas
225c1138b6
CRM improvements (#1903)
* lock/unlock sites, show user role, link to manage subscription

* merged remove gp and unlock sites into one single action + code style tweaks
2022-05-27 14:45:25 +03:00
Uku Taht
5b5c70b82d Add build metadata to build arg 2022-05-27 14:30:21 +03:00
Uku Taht
47fc09bacf Add version file directly to priv 2022-05-27 11:19:37 +03:00
Uku Taht
da93f2aa6e Remove dead code 2022-05-27 10:52:58 +03:00
Uku Taht
7ab9a43324 Remove version.json from static file list 2022-05-27 10:49:33 +03:00
Uku Taht
32116fe2c9 Show database library in info endpoint 2022-05-27 10:49:04 +03:00
RobertJoonas
11654ddc07
Script extension additions (#1915)
* added data-include attribute to plausible.exclusions.js

* reorder extensions in filename when serving the plausible script

* fix formatting

* tweaks after review

* changelog update
2022-05-27 10:11:40 +03:00
Uku Taht
cd8df23e5e Do not rely on insertion order in tests 2022-05-06 10:20:35 +03:00
Uku Taht
6f3399bb7c Fix annual notification loop 2022-05-03 17:00:19 +03:00
Uku Taht
d100f1400d Show version number 2022-05-03 12:14:38 +03:00
Uku Taht
e374c142f3 Fix shared link display 2022-05-03 10:49:39 +03:00
Vignesh Joglekar
b7b69c6f62
Adds "invite_only" disable_registration config option (#1841)
* Adds tri-state disable_registration config

* Formatting

* Changes variable back to atom

* Changelog

* Uses atoms correctly :/

* Swaps to a more fitting value

* Formatting
2022-05-03 10:44:17 +03:00
Uku Taht
eeaefc1ad0 Only show db-ip notice when relevant 2022-05-03 10:38:59 +03:00
Marko Saric
2a31f7911a
Fix Innenstadt I (#1877) 2022-05-02 11:36:54 +03:00
Uku Taht
66225a69e4 Set 30 minute session expiration 2022-05-01 23:38:48 +03:00
Uku Taht
02abbda06d Ignore nil custom prop as well 2022-04-29 11:50:31 +03:00
Uku Taht
c92c548ca8 Do not error on empty string custom prop value 2022-04-29 11:13:36 +03:00
Uku Taht
660e5d37c9 Remove unused import 2022-04-28 12:26:05 +03:00
Uku Taht
f18a211dcc
Ingest throughput improvement test setup (#1867)
* Add OTEL and test Cachex for sessions

* Move load test

* Start apps in the appropriate order
2022-04-28 12:24:29 +03:00
Uku Taht
26ff56d257 Use safe version for sending check stats email 2022-04-28 10:07:21 +03:00
Parker Selbert
a64cc84db2
Expand oban error tracking for plugins/notifiers (#1864)
* Plugin exceptions may be silently covering up database problems such
  as failed cron job inserts.
* The previously tracked `:circuit` event is no longer emitted.
2022-04-27 21:37:02 +03:00
Uku Taht
ce55dc4ae9
Retries Google Analytics API request if it returns empty rows (#1858)
* Retries Google Analytics API request if it returns empty rows

* Remove HTTPoison.Retry completely
2022-04-26 13:57:32 +03:00
RobertJoonas
199206babc
Dimensions continued (#1847)
* added the first version of dimensions extension

* finished dimensions script extension + updated tracking to use it

* script variants build
2022-04-25 10:56:11 +03:00
Uku Taht
5e415c2420 Add entry_props back in 2022-04-22 10:58:02 +03:00
Uku Taht
8fb4f3f886 Revert entry props 2022-04-21 19:22:38 +03:00
Uku Taht
428ee747c3 Hook up flags to the custom prop filter 2022-04-21 16:43:16 +03:00
RobertJoonas
40275b64d4
Pageview custom dimensions (#1816)
* added custom dimension filtering tests for pages

* first filter UI in place

* pages, entry pages and exit pages can be filtered by pageview props

* added tests for expected filtering behaviour

* fix dimension filter for sources + tests

* added is_not filtering functionality

* fixed formatting

* fixed admin_test

* added (none) as filter value + is_not filter type in UI

* added prefilling applied filter values and some UI tweaks

* added fetch options

* Make prop suggestions work with `props` filter

* Fix test

* Track login state internally

* Add CHANGELOG entry

Co-authored-by: Uku Taht <uku.taht@gmail.com>
2022-04-21 11:47:15 +03:00
Uku Taht
7c1d64458e Add fun with flags library 2022-04-21 10:54:08 +03:00
Marko Saric
13d8eecc91
add GA importer (#1840) 2022-04-19 14:47:06 +03:00
Uku Taht
9bb7f52887 Remove sensitive page from tracking 2022-04-19 11:00:12 +03:00
Uku Taht
66aceda9e9 Fix main graph selection with imported data 2022-04-19 10:50:50 +03:00
Uku Taht
05c210ad85 Enforce site limit 2022-04-18 14:47:30 +03:00
Uku Taht
3d231fc094 Redirect to correct change plan page for enterprise customers 2022-04-18 14:18:49 +03:00