From 2b94b64ea2f6255a61689ab8824e0402cc3eb7c6 Mon Sep 17 00:00:00 2001 From: ShiKhu Date: Thu, 6 May 2021 21:28:46 +0200 Subject: [PATCH 1/6] fix (tracker): projectKey type correction --- tracker/tracker/package.json | 2 +- tracker/tracker/src/main/index.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tracker/tracker/package.json b/tracker/tracker/package.json index 6bf8d481a..1ea5ac2bb 100644 --- a/tracker/tracker/package.json +++ b/tracker/tracker/package.json @@ -1,7 +1,7 @@ { "name": "@openreplay/tracker", "description": "The OpenReplay tracker main package", - "version": "3.0.1", + "version": "3.0.2", "keywords": [ "logging", "replay" diff --git a/tracker/tracker/src/main/index.ts b/tracker/tracker/src/main/index.ts index ceea1f035..def27c55a 100644 --- a/tracker/tracker/src/main/index.ts +++ b/tracker/tracker/src/main/index.ts @@ -53,7 +53,7 @@ function processOptions(obj: any): obj is Options { } } else { console.warn("OpenReplay: projectKey is expected to have a string type.") - obj.projectKey = obj.projectID.toString() + obj.projectKey = obj.projectKey.toString() } } if (typeof obj.sessionToken !== 'string' && obj.sessionToken != null) { From f4c70c8cfd1ecd77654d778c10ed83be70861d15 Mon Sep 17 00:00:00 2001 From: ShiKhu Date: Thu, 6 May 2021 21:44:56 +0200 Subject: [PATCH 2/6] feat (backend-assets): ASSETS_SIZE_LIMIT env var --- backend/Dockerfile | 1 + backend/pkg/env/vars.go | 4 ++++ backend/services/assets/cacher/cacher.go | 13 +++++++------ backend/services/assets/main.go | 1 + 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/backend/Dockerfile b/backend/Dockerfile index 085e15544..af8d4ff71 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -39,6 +39,7 @@ ENV TZ=UTC \ AWS_REGION_WEB=eu-central-1 \ AWS_REGION_IOS=eu-west-1 \ AWS_REGION_ASSETS=eu-central-1 \ + ASSETS_SIZE_LIMIT=6291456 ARG SERVICE_NAME diff --git a/backend/pkg/env/vars.go b/backend/pkg/env/vars.go index e6541d002..64e586cc3 100644 --- a/backend/pkg/env/vars.go +++ b/backend/pkg/env/vars.go @@ -36,6 +36,10 @@ func Uint64(key string) uint64 { return n } +func Int(key string) int { + return int(Uint64(key)) +} + func Bool(key string) bool { v := String(key) if v != "true" && v != "false" { diff --git a/backend/services/assets/cacher/cacher.go b/backend/services/assets/cacher/cacher.go index d9f39aa77..85a8a9d61 100644 --- a/backend/services/assets/cacher/cacher.go +++ b/backend/services/assets/cacher/cacher.go @@ -17,7 +17,6 @@ import ( "openreplay/backend/pkg/storage" ) -const BODY_LIMIT = 6 * (1 << 20) // 6 Mb const MAX_CACHE_DEPTH = 5 type cacher struct { @@ -26,9 +25,10 @@ type cacher struct { httpClient *http.Client // Docs: "Clients are safe for concurrent use by multiple goroutines." rewriter *assets.Rewriter // Read only Errors chan error + sizeLimit int } -func NewCacher(region string, bucket string, origin string) *cacher { +func NewCacher(region string, bucket string, origin string, sizeLimit int) *cacher { rewriter := assets.NewRewriter(origin) return &cacher{ timeoutMap: newTimeoutMap(), @@ -39,8 +39,9 @@ func NewCacher(region string, bucket string, origin string) *cacher { TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, }, }, - rewriter: rewriter, - Errors: make(chan error), + rewriter: rewriter, + Errors: make(chan error), + sizeLimit: sizeLimit, } } @@ -72,12 +73,12 @@ func (c *cacher) cacheURL(requestURL string, sessionID uint64, depth byte, conte c.Errors <- errors.Wrap(fmt.Errorf("Status code is %v, ", res.StatusCode), context) return } - data, err := ioutil.ReadAll(io.LimitReader(res.Body, BODY_LIMIT+1)) + data, err := ioutil.ReadAll(io.LimitReader(res.Body, int64(c.sizeLimit+1))) if err != nil { c.Errors <- errors.Wrap(err, context) return } - if len(data) > BODY_LIMIT { + if len(data) > c.sizeLimit { c.Errors <- errors.Wrap(errors.New("Maximum size exceeded"), context) return } diff --git a/backend/services/assets/main.go b/backend/services/assets/main.go index e62c277de..0193be7bb 100644 --- a/backend/services/assets/main.go +++ b/backend/services/assets/main.go @@ -26,6 +26,7 @@ func main() { env.String("AWS_REGION"), env.String("S3_BUCKET_ASSETS"), env.String("ASSETS_ORIGIN"), + env.Int("ASSETS_SIZE_LIMIT"), ) consumer := queue.NewMessageConsumer( From aae4044bacf136ea4edbc940e6b2074246b9152c Mon Sep 17 00:00:00 2001 From: Shekar Siri Date: Mon, 10 May 2021 12:46:22 +0530 Subject: [PATCH 3/6] bug: misc fixes --- .../SessionCaptureRate/SessionCaptureRate.js | 11 +++++++---- .../RehydrateSlidePanel/RehydrateSlidePanel.js | 2 ++ frontend/app/components/Header/SiteDropdown.js | 13 ++++++++++--- .../Session_/EventsBlock/EventSearch/EventSearch.js | 1 + 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/frontend/app/components/BugFinder/SessionCaptureRate/SessionCaptureRate.js b/frontend/app/components/BugFinder/SessionCaptureRate/SessionCaptureRate.js index 12fff4610..66b710229 100644 --- a/frontend/app/components/BugFinder/SessionCaptureRate/SessionCaptureRate.js +++ b/frontend/app/components/BugFinder/SessionCaptureRate/SessionCaptureRate.js @@ -1,4 +1,4 @@ -import React from 'react' +import React, { useState } from 'react' import { Input, Slider, Button, Popup, CircularLoader } from 'UI'; import { saveCaptureRate, editCaptureRate } from 'Duck/watchdogs'; import { connect } from 'react-redux'; @@ -12,8 +12,11 @@ function isPercent(val) { const SessionCaptureRate = props => { const { captureRate, saveCaptureRate, editCaptureRate, loading, onClose } = props; - const sampleRate = captureRate.get('rate'); - if (sampleRate == null) return null; + const _sampleRate = captureRate.get('rate'); + if (_sampleRate == null) return null; + console.log(_sampleRate) + + const [sampleRate, setSampleRate] = useState(_sampleRate) const captureAll = captureRate.get('captureAll'); @@ -46,7 +49,7 @@ const SessionCaptureRate = props => { name="sampleRate" disabled={ captureAll } value={ captureAll ? '100' : sampleRate } - onChange={ ({ target: { value }}) => isPercent(value) && editCaptureRate(+value) } + onChange={ ({ target: { value }}) => isPercent(value) && setSampleRate(+value) } size="small" className={stl.inputField} /> diff --git a/frontend/app/components/BugFinder/WatchDogs/components/RehydrateSlidePanel/RehydrateSlidePanel.js b/frontend/app/components/BugFinder/WatchDogs/components/RehydrateSlidePanel/RehydrateSlidePanel.js index 754bdc0e9..50360b7d8 100644 --- a/frontend/app/components/BugFinder/WatchDogs/components/RehydrateSlidePanel/RehydrateSlidePanel.js +++ b/frontend/app/components/BugFinder/WatchDogs/components/RehydrateSlidePanel/RehydrateSlidePanel.js @@ -26,6 +26,7 @@ const RehydrateSlidePanel = props => { onClose={ onClose } size="small" content={ + isModalDisplayed && (

@@ -33,6 +34,7 @@ const RehydrateSlidePanel = props => {
+ ) } /> ); diff --git a/frontend/app/components/Header/SiteDropdown.js b/frontend/app/components/Header/SiteDropdown.js index db66db530..bb8e1a29a 100644 --- a/frontend/app/components/Header/SiteDropdown.js +++ b/frontend/app/components/Header/SiteDropdown.js @@ -5,6 +5,7 @@ import { hasSiteId, siteChangeAvaliable } from 'App/routes'; import { STATUS_COLOR_MAP, GREEN } from 'Types/site'; import { Icon, SlideModal } from 'UI'; import { pushNewSite } from 'Duck/user' +import { init } from 'Duck/site'; import styles from './siteDropdown.css'; import cn from 'classnames'; import NewSiteForm from '../Client/Sites/NewSiteForm'; @@ -15,7 +16,8 @@ import NewSiteForm from '../Client/Sites/NewSiteForm'; siteId: state.getIn([ 'user', 'siteId' ]), }), { setSiteId, - pushNewSite + pushNewSite, + init }) export default class SiteDropdown extends React.PureComponent { state = { showProductModal: false } @@ -28,6 +30,11 @@ export default class SiteDropdown extends React.PureComponent { } }; + newSite = () => { + this.props.init({}) + this.setState({showProductModal: true}) + } + render() { const { sites, siteId, location: { pathname } } = this.props; const { showProductModal } = this.state; @@ -62,7 +69,7 @@ export default class SiteDropdown extends React.PureComponent {
this.setState({showProductModal: true})} + onClick={this.newSite} > } + content={ showProductModal && } onClose={ this.closeModal } />
diff --git a/frontend/app/components/Session_/EventsBlock/EventSearch/EventSearch.js b/frontend/app/components/Session_/EventsBlock/EventSearch/EventSearch.js index af08ad24a..9f51bb891 100644 --- a/frontend/app/components/Session_/EventsBlock/EventSearch/EventSearch.js +++ b/frontend/app/components/Session_/EventsBlock/EventSearch/EventSearch.js @@ -18,6 +18,7 @@ export default function EventSearch(props) { value={value} onChange={onChange} style={{ height: '32px' }} + autocomplete="off" />
{ setShowSearch(!showSearch); clearSearch() }} From 6848710e21dbd20b6e44edc926906347c24d8b91 Mon Sep 17 00:00:00 2001 From: Shekar Siri Date: Mon, 10 May 2021 12:54:17 +0530 Subject: [PATCH 4/6] change: removed logs --- .../BugFinder/SessionCaptureRate/SessionCaptureRate.js | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/app/components/BugFinder/SessionCaptureRate/SessionCaptureRate.js b/frontend/app/components/BugFinder/SessionCaptureRate/SessionCaptureRate.js index 66b710229..4c2b41218 100644 --- a/frontend/app/components/BugFinder/SessionCaptureRate/SessionCaptureRate.js +++ b/frontend/app/components/BugFinder/SessionCaptureRate/SessionCaptureRate.js @@ -14,7 +14,6 @@ const SessionCaptureRate = props => { const { captureRate, saveCaptureRate, editCaptureRate, loading, onClose } = props; const _sampleRate = captureRate.get('rate'); if (_sampleRate == null) return null; - console.log(_sampleRate) const [sampleRate, setSampleRate] = useState(_sampleRate) From a50c172deb20d9f302e1213375dbd19cd0e07223 Mon Sep 17 00:00:00 2001 From: Shekar Siri Date: Mon, 10 May 2021 14:39:18 +0530 Subject: [PATCH 5/6] fix: fixed project id in snippet --- .../shared/TrackingCodeModal/InstallDocs/InstallDocs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/app/components/shared/TrackingCodeModal/InstallDocs/InstallDocs.js b/frontend/app/components/shared/TrackingCodeModal/InstallDocs/InstallDocs.js index cfedaed07..32e94aa1e 100644 --- a/frontend/app/components/shared/TrackingCodeModal/InstallDocs/InstallDocs.js +++ b/frontend/app/components/shared/TrackingCodeModal/InstallDocs/InstallDocs.js @@ -12,7 +12,7 @@ const tracker = new Tracker({ tracker.start();` function InstallDocs({ site }) { - const _usageCode = usageCode.replace('PROJECT_ID', site.projectKeKey) + const _usageCode = usageCode.replace('PROJECT_ID', site.projectKey) return (
From fc22c5e2c8088635c837a8b328602785d72939be Mon Sep 17 00:00:00 2001 From: Shekar Siri Date: Mon, 10 May 2021 15:48:57 +0530 Subject: [PATCH 6/6] change: Site lable renamed to OpenReplay Project --- frontend/app/components/Client/Integrations/IntegrationForm.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/app/components/Client/Integrations/IntegrationForm.js b/frontend/app/components/Client/Integrations/IntegrationForm.js index 8057021c8..3481068de 100644 --- a/frontend/app/components/Client/Integrations/IntegrationForm.js +++ b/frontend/app/components/Client/Integrations/IntegrationForm.js @@ -75,7 +75,7 @@ export default class IntegrationForm extends React.PureComponent {
{!ignoreProject && - +