All Downloads are FREE. Search and download functionalities are using the official Maven repository.

web-interface.assets.57e33c6c-59.11b9f72925818240e61d.js.map Maven / Gradle / Ivy

There is a newer version: 6.0.2
Show newest version
{"version":3,"sources":["webpack:///./src/util/EventHandlersThrottler.js","webpack:///./src/components/cluster/TrafficGraph.tsx","webpack:///./src/components/cluster/GraylogClusterOverview.jsx","webpack:///./src/components/enterprise/EnterpriseFreeLicenseForm.jsx","webpack:///./src/components/enterprise/PluginList.css?3346","webpack:///./src/components/enterprise/PluginList.jsx","webpack:///./src/pages/EnterprisePage.jsx","webpack:///./src/components/enterprise/PluginList.css"],"names":["EventHandlersThrottler","this","eventMutex","eventHandler","timeout","setTimeout","TrafficGraph","width","traffic","dailySums","crossfilter","_","map","value","key","ts","bytes","dimension","d","moment","format","group","reduceSum","t","mapKeys","all","entry","utc","toISOString","unixTraffic","mapValues","val","chartData","type","x","Object","keys","y","values","style","height","GenericPlot","layout","showlegend","margin","l","xaxis","title","text","yaxis","rangemode","hoverformat","tickformat","propTypes","PropTypes","object","isRequired","number","ClusterTrafficStore","StoreProvider","getStore","ClusterTrafficActions","ActionsProvider","getActions","NodesStore","GraylogClusterOverview","createReactClass","displayName","oneOf","children","node","mixins","Reflux","connect","getDefaultProps","getInitialState","graphWidth","componentDidMount","window","addEventListener","_onResize","_resizeGraphs","componentWillUnmount","removeEventListener","eventThrottler","throttle","domNode","ReactDOM","findDOMNode","_container","setState","clientWidth","renderClusterInfo","nodes","state","content","className","marginBottom","clusterId","nodeCount","renderTrafficGraph","sumOutput","trafficGraph","bytesOut","reduce","output","result","NumberUtils","formatBytes","from","to","ref","container","renderHeader","renderDefaultLayout","props","md","renderCompactLayout","render","FORM_FIELDS","PHONE_PATTERN","EnterpriseFreeLicenseForm","callback","clearedFields","acc","assign","formFields","isEmpty","replace","test","validator","event","errors","target","newFormFields","newErrors","errorMessage","isSubmitting","filter","trim","preventDefault","onSubmit","success","clearValues","firstName","lastName","email","phone","company","submitForm","id","label","required","onChange","handleInput","placeholder","help","validationMessage","bsStyle","validationState","validatePhone","sm","disabled","formIsInvalid","bsSize","onClick","resetForm","React","Component","func","options","locals","PluginList","ENTERPRISE_PLUGINS","_formatPlugin","pluginName","plugin","PluginStore","get","p","metadata","name","enterprisePluginList","enterprisePlugins","CombinedProvider","EnterpriseActions","EnterpriseStore","EnterpriseProductLink","href","rel","defaultProps","EnterpriseFeatureList","styled","ul","BiggerFontSize","div","theme","css","fonts","size","large","GraylogEnterpriseHeader","h2","EnterprisePage","getLicenseInfo","onFreeLicenseFormSubmit","requestFreeEnterpriseLicense","then","_isLoading","licenseStatus","renderLicenseFormContent","HideOnCloud","permissions","DocumentationLink","page","___CSS_LOADER_EXPORT___","push","module","i"],"mappings":"6hBAgBA,IA2BeA,E,WApBb,c,4FAAc,SACZC,KAAKC,WAAa,K,+CAOpB,SAASC,EAAcC,GAAS,WAC1BH,KAAKC,aAITD,KAAKC,WAAaG,YAAW,WAC3B,EAAKH,WAAa,KAClBC,MACCC,GAvBiB,W,kGCclBE,EAAe,SAAC,GAA8B,IAA5BC,EAA4B,EAA5BA,MAAOC,EAAqB,EAArBA,QAC7B,IAAKA,EACH,OAAO,kBAAC,KAAD,MAGT,IAGMC,EAHMC,IAAYC,IAAEC,IAAIJ,GAAS,SAACK,EAAOC,GAAR,MAAiB,CAAEC,GAAID,EAAKE,MAAOH,OACjDI,WAAU,SAACC,GAAD,OAAOC,IAAOD,EAAEH,IAAIK,OAAO,iBAE/BC,QAAQC,WAAU,SAACJ,GAAD,OAAOA,EAAEF,SACpDO,EAAIZ,IAAEa,QAAQf,EAAUgB,OAAO,SAACC,GAAD,OAAWP,IAAOQ,IAAID,EAAMZ,IAAK,cAAcc,iBAC9EC,EAAclB,IAAEmB,UAAUP,GAAG,SAACQ,GAAD,OAASA,EAAIlB,SAC1CmB,EAAY,CAAC,CACjBC,KAAM,MACNC,EAAGC,OAAOC,KAAKP,GACfQ,EAAGF,OAAOG,OAAOT,KAuBnB,OACE,yBAAKU,MAAO,CAAEC,OAAQ,QAASjC,MAAOA,IACpC,kBAACkC,EAAA,EAAD,CAAaT,UAAWA,EACXU,OAxBF,CACbC,YAAY,EACZC,OAAQ,CACNC,EAAG,IAELC,MAAO,CACLb,KAAM,OACNc,MAAO,CACLC,KAAM,SAGVC,MAAO,CACLF,MAAO,CACLC,KAAM,SAERE,UAAW,SACXC,YAAa,MACbC,WAAY,UAYlB9C,EAAa+C,UAAY,CACvB7C,QAAS8C,IAAUC,OAAOC,WAC1BjD,MAAO+C,IAAUG,OAAOD,YAGXlD,QC9CToD,EAAsBC,IAAcC,SAAS,kBAC7CC,EAAwBC,IAAgBC,WAAW,kBACnDC,EAAaL,IAAcC,SAAS,SAuJ3BK,EArJgBC,IAAiB,CAC9CC,YAAa,yBAEbd,UAAW,CACTX,OAAQY,IAAUc,MAAM,CAAC,UAAW,YACpCC,SAAUf,IAAUgB,MAGtBC,OAAQ,CAACC,IAAOC,QAAQT,EAAY,SAAUQ,IAAOC,QAAQf,EAAqB,YAElFgB,gBAV8C,WAW5C,MAAO,CACLhC,OAAQ,UACR2B,SAAU,OAIdM,gBAjB8C,WAkB5C,MAAO,CACLC,WAAY,MAIhBC,kBAvB8C,WAwB5ChB,EAAsBrD,UACtBsE,OAAOC,iBAAiB,SAAU9E,KAAK+E,WACvC/E,KAAKgF,iBAGPC,qBA7B8C,WA8B5CJ,OAAOK,oBAAoB,SAAUlF,KAAK+E,YAG5CI,eAAgB,IAAIpF,EAEpBgF,UAnC8C,WAmClC,WACV/E,KAAKmF,eAAeC,UAAS,kBAAM,EAAKJ,oBAG1CA,cAvC8C,WAwC5C,IAAMK,EAAUC,IAASC,YAAYvF,KAAKwF,YAE1CxF,KAAKyF,SAAS,CAAEd,WAAYU,EAAQK,eAGtCC,kBA7C8C,WA6C1B,IACVC,EAAU5F,KAAK6F,MAAfD,MAEJE,EAAU,kBAAC,KAAD,MAad,OAXIF,IACFE,EACE,wBAAIC,UAAU,YAAYzD,MAAO,CAAE0D,aAAc,IAC/C,2CACA,4BAAKJ,EAAMK,WAAa,iBACxB,gDACA,4BAAKL,EAAMM,aAKVJ,GAGTK,mBAhE8C,WAgEzB,aACanG,KAAK6F,MAA7BtF,EADW,EACXA,QAASoE,EADE,EACFA,WAEbyB,EAAY,KACZC,EAAe,kBAAC,KAAD,MAEnB,GAAI9F,EAAS,CACX,IAAM+F,EAAW5F,IAAE6F,OAAOhG,EAAQiG,QAAQ,SAACC,EAAQ7F,GAAT,OAAmB6F,EAAS7F,KAEtEwF,EAAY,gDAAsBM,IAAYC,YAAYL,IAE1DD,EACE,kBAAC,EAAD,CAAc9F,QAASA,EAAQiG,OACjBI,KAAMrG,EAAQqG,KACdC,GAAItG,EAAQsG,GACZvG,MAAOqE,IAIzB,OACE,oCACE,wBAAImC,IAAK,SAACC,GAAgB,EAAKvB,WAAauB,GAAczE,MAAO,CAAE0D,aAAc,KAAjF,oBAAyGI,GACxGC,IAKPW,aA3F8C,WA4F5C,OAAO,wBAAI1E,MAAO,CAAE0D,aAAc,KAA3B,oBAGTiB,oBA/F8C,WA+FxB,IACZ7C,EAAapE,KAAKkH,MAAlB9C,SAER,OACE,kBAAC,IAAD,CAAK2B,UAAU,WACb,kBAAC,IAAD,CAAKoB,GAAI,IACNnH,KAAKgH,eACLhH,KAAK2F,oBACN,6BACCvB,EACD,kBAAC,IAAD,KACE,kBAAC,IAAD,CAAK+C,GAAI,IACNnH,KAAKmG,0BAQlBiB,oBAnH8C,WAmHxB,IACZhD,EAAapE,KAAKkH,MAAlB9C,SAER,OACE,kBAAC,IAAD,CAAK2B,UAAU,WACb,kBAAC,IAAD,CAAKoB,GAAI,IACNnH,KAAKgH,eACN,kBAAC,IAAD,KACE,kBAAC,IAAD,CAAKG,GAAI,GACNnH,KAAK2F,oBACN,6BACCvB,GAEH,kBAAC,IAAD,CAAK+C,GAAI,GACNnH,KAAKmG,0BAQlBkB,OAzI8C,WA4I5C,OAFmBrH,KAAKkH,MAAhBzE,QAGN,IAAK,UACH,OAAOzC,KAAKoH,sBACd,QACE,OAAOpH,KAAKiH,2B,8yDC/JpB,IAAMK,EAAc,CAAC,YAAa,WAAY,QAAS,QAAS,WAE1DC,EAAgB,qBAEDC,E,sQAKnB,WAAYN,GAAO,a,4FAAA,aACjB,cAAMA,IADW,eAgBL,SAACO,GACb,IAAMC,EAAgBJ,EAAYf,QAAO,SAACoB,EAAK9G,GAAN,OAAcqB,OAAO0F,OAAOD,EAAd,KAAsB9G,EAAM,OAAO,IAE1F,EAAK4E,SAAS,CAAEoC,WAAYH,GAAiBD,MAnB5B,wBAsBH,SAAC5G,EAAKD,GACpB,OAAIkH,kBAAQlH,EAAMmH,QAAQ,IAAK,KACtB,mDAGFR,EAAcS,KAAKpH,GAAS,KAAO,0BA3BzB,sBA8BL,SAACC,EAAKoH,GAClB,OAAO,SAACC,GAAU,MACe,EAAKrC,MAA5BgC,EADQ,EACRA,WAAYM,EADJ,EACIA,OACdvH,EAAQsH,EAAME,OAAOxH,MAAMmH,QAAQ,WAAY,KAC/CM,EAAgBnG,OAAO0F,OAAOC,EAAd,KAA6BhH,EAAMD,IACnD0H,E,+VAAY,CAAH,GAAQH,GAEvB,GAAIF,GAAmC,mBAAdA,EAA2B,CAClD,IAAMM,EAAeN,EAAUpH,EAAKwH,EAAcxH,IAE9C0H,EACFD,EAAUzH,GAAO0H,SAEVD,EAAUzH,GAIrB,EAAK4E,SAAS,CAAEoC,WAAYQ,EAAeF,OAAQG,QA/CpC,0BAmDD,SAACzH,GAGjB,OAFmB,EAAKgF,MAAhBsC,OAEMtH,GAAO,QAAU,QAtDd,4BAyDC,SAACA,GAGnB,OAFmB,EAAKgF,MAAhBsC,OAEMtH,MA5DG,wBA+DH,WAAM,MACyB,EAAKgF,MAA1C2C,EADY,EACZA,aAAcX,EADF,EACEA,WAAYM,EADd,EACcA,OAElC,OAAOK,IAAiBV,kBAAQK,KAAYL,kBAAQR,EAAYmB,QAAO,SAAC5H,GAAD,OAASiH,kBAAQY,eAAKb,EAAWhH,YAlEvF,qBAqEN,SAACqH,GACZA,EAAMS,iBADgB,IAGdC,EAAa,EAAK1B,MAAlB0B,SACAf,EAAe,EAAKhC,MAApBgC,WAGR,EAAKpC,SAAS,CAAE+C,cAAc,IAAQ,WACpCI,EAASf,GAAY,SAACgB,GAChBA,EAEF,EAAKC,aAAY,WACf,EAAKrD,SAAS,CAAE+C,cAAc,OAGhC,EAAK/C,SAAS,CAAE+C,cAAc,aApFnB,oBA0FP,WACV,EAAKM,iBAxFL,EAAKjD,MAAQ,CACXgC,WAAY,CACVkB,UAAW,GACXC,SAAU,GACVC,MAAO,GACPC,MAAO,GACPC,QAAS,IAEXhB,OAAQ,GACRK,cAAc,GAZC,E,mCA8FnB,WAAS,MACgExI,KAAK6F,MAApEgC,WAAckB,EADf,EACeA,UAAWC,EAD1B,EAC0BA,SAAUG,EADpC,EACoCA,QAASF,EAD7C,EAC6CA,MAAOC,EADpD,EACoDA,MAE3D,OACE,0BAAMN,SAAU5I,KAAKoJ,YACnB,kBAAC,IAAD,KACE,kBAAC,IAAD,CAAKjC,GAAI,IACP,kBAAC,IAAD,CAAOnF,KAAK,OACLqH,GAAG,YACHC,MAAM,aACN1I,MAAOmI,EACPQ,UAAQ,EACRC,SAAUxJ,KAAKyJ,YAAY,eAClC,kBAAC,IAAD,CAAOzH,KAAK,OACLqH,GAAG,WACHC,MAAM,YACN1I,MAAOoI,EACPO,UAAQ,EACRC,SAAUxJ,KAAKyJ,YAAY,cAClC,kBAAC,IAAD,CAAOzH,KAAK,OACLqH,GAAG,UACHC,MAAM,UACN1I,MAAOuI,EACPI,UAAQ,EACRC,SAAUxJ,KAAKyJ,YAAY,aAClC,kBAAC,IAAD,CAAOzH,KAAK,QACLqH,GAAG,QACHC,MAAM,gBACN1I,MAAOqI,EACPS,YAAY,kEACZ5G,MAAM,kEACNyG,UAAQ,EACRC,SAAUxJ,KAAKyJ,YAAY,WAClC,kBAAC,IAAD,CAAOzH,KAAK,MACLqH,GAAG,QACHC,MAAM,eACN1I,MAAOsI,EACPQ,YAAY,mDACZ5G,MAAM,mDACN6G,KAAM3J,KAAK4J,kBAAkB,SAC7BC,QAAS7J,KAAK8J,gBAAgB,SAC9BP,UAAQ,EACRC,SAAUxJ,KAAKyJ,YAAY,QAASzJ,KAAK+J,mBAGpD,kBAAC,IAAD,KACE,kBAAC,IAAD,CAAKC,GAAI,IACP,kBAAC,IAAD,KACE,kBAAC,IAAD,CAAQX,GAAG,eACHY,SAAUjK,KAAKkK,gBACflI,KAAK,SACLmI,OAAO,QACPN,QAAQ,WAJhB,eAOA,kBAAC,IAAD,CAAQR,GAAG,cACHe,QAASpK,KAAKqK,UACdF,OAAO,SAFf,uB,8BA1JyCG,IAAMC,W,EAAxC/C,E,YACA,CACjBoB,SAAUvF,IAAUmH,KAAKjH,a,6DC1BzBkH,EAAU,CAEd,OAAiB,OACjB,WAAoB,GAML,GAJF,IAAI,IAASA,GAIX,IAAQC,QAAU,IC4ClBC,EAhCI1G,IAAiB,CAClCC,YAAa,aAEb0G,mBAAoB,CAClB,4BAA6B,6BAG/BC,cAPkC,SAOpBC,GACZ,IAAMC,EAASC,cAAYC,MAAMxC,QAAO,SAACyC,GAAD,OAAOA,EAAEC,SAASC,OAASN,KAAY,GAE/E,OACE,wBAAIjK,IAAKiK,EAAY/E,UAAWgF,EAAS,eAAiB,eACxD,kBAAC,IAAD,CAAMK,KAAML,EAAS,eAAiB,iBADxC,IAEG/K,KAAK4K,mBAAmBE,GAF3B,OAE4CC,EAAS,YAAc,kBAKvE1D,OAlBkC,WAkBzB,WACDgE,EAAuBnJ,OAAOC,KAAKnC,KAAK4K,oBAAoBjK,KAAI,SAACmK,GAAD,OAAgB,EAAKD,cAAcC,MAEzG,OACE,oCACE,gGACA,wBAAI/E,UAAWzD,EAAMgJ,mBAClBD,O,kCCjBoCE,IAAiBN,IAAI,cAA5DO,E,EAAAA,kBAAmBC,E,EAAAA,gBAErBC,EAAwB,SAAC,GAAiB,IAAftH,EAAe,EAAfA,SAC/B,OACE,uBAAGuH,KAAK,8CACLC,IAAI,sBACJxD,OAAO,UACPhE,IAKPsH,EAAsBtI,UAAY,CAChCgB,SAAUf,IAAUgB,MAGtBqH,EAAsBG,aAAe,CACnCzH,SAAU,MAGZ,IAAM0H,EAAwBC,UAAOC,GAAV,4FAAGD,CAAH,6CAKrBE,EAAiBF,UAAOG,IAAV,qFAAGH,EAAW,gBAAGI,EAAH,EAAGA,MAAH,OAAeC,cAAd,CAAD,kBACnBD,EAAME,MAAMC,KAAKC,UAG1BC,EAA0BT,UAAOU,GAAV,8FAAGV,CAAH,yBAIvBW,EAAiBzI,IAAiB,CACtCC,YAAa,iBACbI,OAAQ,CAACC,IAAOC,QAAQiH,IAExB7G,kBAJsC,WAKpC4G,EAAkBmB,kBAGpBC,wBARsC,SAQd/E,EAAYJ,GAClC+D,EAAkBqB,6BAA6BhF,GAC5CiF,MAAK,kBAAMrF,GAAS,MADvB,OAES,kBAAMA,GAAS,OAG1BsF,WAdsC,WAiBpC,OAF0B/M,KAAK6F,MAAvBmH,eAKVC,yBApBsC,SAoBbD,GAsBvB,OAnBIhN,KAAK+M,aACc,kBAAC,KAAD,CAAShK,KAAK,2BACR,cAAlBiK,EAEP,kBAAC,IAAD,CAAOnD,QAAQ,WAAf,oDAIyB,WAAlBmD,EAEP,kBAAC,IAAD,CAAOnD,QAAQ,WAAf,4JAMmB,kBAAC,EAAD,CAA2BjB,SAAU5I,KAAK4M,2BAMnEvF,OA7CsC,WA6C7B,IACC2F,EAAkBhN,KAAK6F,MAAvBmH,cAER,OACE,kBAAC,IAAD,CAAelK,MAAM,0BACnB,6BACE,kBAAC,IAAD,CAAYA,MAAM,0BACf,KAED,sKAEkC,kBAAC,EAAD,qBAFlC,MAMF,kBAAC,IAAD,CAAwBL,OAAO,WAC7B,kBAAC,EAAD,OAEF,kBAACyK,EAAA,EAAD,KACE,kBAAC,IAAD,CAAaC,YAAY,uBACvB,kBAAC,IAAD,CAAKpH,UAAU,WACb,kBAAC,IAAD,CAAKoB,GAAI,GACP,kBAACqF,EAAD,2BACA,kBAACP,EAAD,KACE,2BAAG,mIACH,4MAKA,2DAEA,kBAACH,EAAD,KACE,yCAAc,kBAACsB,EAAA,EAAD,CAAmBC,KAAK,iBAAiBtK,KAAM,+CAA7D,kBACA,4BAAI,kBAACqK,EAAA,EAAD,CAAmBC,KAAK,gBAAgBtK,KAAM,gDAAlD,6BACA,2CACc,kBAACqK,EAAA,EAAD,CAAmBC,KAAK,2DAA2DtK,KAAM,mDACpG,IAFH,OAEW,kBAACqK,EAAA,EAAD,CAAmBC,KAAK,cAActK,KAAM,wDAFvD,qFAKA,4CACe,kBAACqK,EAAA,EAAD,CAAmBC,KAAK,iBAAiBtK,KAAM,yDAD9D,iEAGA,4BAAI,kBAACqK,EAAA,EAAD,CAAmBC,KAAK,4BACLtK,KAAM,oEAD7B,4CAIA,4BAAI,kBAACqK,EAAA,EAAD,CAAmBC,KAAK,8BACLtK,KAAM,oDAD7B,2DAIA,8CAIN,kBAAC,IAAD,CAAKoE,GAAI,GACNnH,KAAKiN,yBAAyBD,YAWlCN,a,sCCjLf,6CAGIY,EAHJ,MAG8B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,EAAI,uEAAwE,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,wDAAwD,MAAQ,GAAG,SAAW,iCAAiC,eAAiB,CAAC,0EAA0E,WAAa,MAEpWH,EAAwB5C,OAAS,CAChC,kBAAqB,2BAEP","file":"57e33c6c-59.11b9f72925818240e61d.js","sourcesContent":["/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nconst DEFAULT_TIMEOUT = 1000 / 10; // 10 fps\n\n/**\n * Use when an event handler should be called after a timeout, instead of every time the event is triggered.\n * This is specially useful for handling window resize callbacks that may be expensive.\n */\nclass EventHandlersThrottler {\n  constructor() {\n    this.eventMutex = null;\n  }\n\n  /**\n   * @param eventHandler Callback actually handling the event\n   * @param timeout (optional) Time to wait before calling the callback\n   */\n  throttle(eventHandler, timeout) {\n    if (this.eventMutex) {\n      return;\n    }\n\n    this.eventMutex = setTimeout(() => {\n      this.eventMutex = null;\n      eventHandler();\n    }, timeout || DEFAULT_TIMEOUT);\n  }\n}\n\nexport default EventHandlersThrottler;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport _ from 'lodash';\nimport moment from 'moment';\nimport crossfilter from 'crossfilter';\n\nimport { Spinner } from 'components/common';\nimport GenericPlot from 'views/components/visualizations/GenericPlot';\n\ntype Props = {\n  traffic: { [key: string]: number },\n  width: number,\n};\n\nconst TrafficGraph = ({ width, traffic }: Props) => {\n  if (!traffic) {\n    return ;\n  }\n\n  const ndx = crossfilter(_.map(traffic, (value, key) => ({ ts: key, bytes: value })));\n  const dailyTraffic = ndx.dimension((d) => moment(d.ts).format('YYYY-MM-DD'));\n\n  const dailySums = dailyTraffic.group().reduceSum((d) => d.bytes);\n  const t = _.mapKeys(dailySums.all(), (entry) => moment.utc(entry.key, 'YYYY-MM-DD').toISOString());\n  const unixTraffic = _.mapValues(t, (val) => val.value);\n  const chartData = [{\n    type: 'bar',\n    x: Object.keys(unixTraffic),\n    y: Object.values(unixTraffic),\n  }];\n  const layout = {\n    showlegend: false,\n    margin: {\n      l: 60,\n    },\n    xaxis: {\n      type: 'date',\n      title: {\n        text: 'Time',\n      },\n    },\n    yaxis: {\n      title: {\n        text: 'Bytes',\n      },\n      rangemode: 'tozero',\n      hoverformat: '.4s',\n      tickformat: 's',\n    },\n  };\n\n  return (\n    
\n \n
\n );\n};\n\nTrafficGraph.propTypes = {\n traffic: PropTypes.object.isRequired, // traffic is: {\"2017-11-15T15:00:00.000Z\": 68287229, ...}\n width: PropTypes.number.isRequired,\n};\n\nexport default TrafficGraph;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\n/* eslint-disable react/no-find-dom-node */\n/* global window */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport createReactClass from 'create-react-class';\nimport ReactDOM from 'react-dom';\nimport Reflux from 'reflux';\nimport _ from 'lodash';\n\nimport { Col, Row } from 'components/graylog';\nimport { Spinner } from 'components/common';\nimport StoreProvider from 'injection/StoreProvider';\nimport ActionsProvider from 'injection/ActionsProvider';\nimport NumberUtils from 'util/NumberUtils';\nimport EventHandlersThrottler from 'util/EventHandlersThrottler';\n\nimport TrafficGraph from './TrafficGraph';\n\nconst ClusterTrafficStore = StoreProvider.getStore('ClusterTraffic');\nconst ClusterTrafficActions = ActionsProvider.getActions('ClusterTraffic');\nconst NodesStore = StoreProvider.getStore('Nodes');\n\nconst GraylogClusterOverview = createReactClass({\n displayName: 'GraylogClusterOverview',\n\n propTypes: {\n layout: PropTypes.oneOf(['default', 'compact']),\n children: PropTypes.node,\n },\n\n mixins: [Reflux.connect(NodesStore, 'nodes'), Reflux.connect(ClusterTrafficStore, 'traffic')],\n\n getDefaultProps() {\n return {\n layout: 'default',\n children: null,\n };\n },\n\n getInitialState() {\n return {\n graphWidth: 600,\n };\n },\n\n componentDidMount() {\n ClusterTrafficActions.traffic();\n window.addEventListener('resize', this._onResize);\n this._resizeGraphs();\n },\n\n componentWillUnmount() {\n window.removeEventListener('resize', this._onResize);\n },\n\n eventThrottler: new EventHandlersThrottler(),\n\n _onResize() {\n this.eventThrottler.throttle(() => this._resizeGraphs());\n },\n\n _resizeGraphs() {\n const domNode = ReactDOM.findDOMNode(this._container);\n\n this.setState({ graphWidth: domNode.clientWidth });\n },\n\n renderClusterInfo() {\n const { nodes } = this.state;\n\n let content = ;\n\n if (nodes) {\n content = (\n
\n
Cluster ID:
\n
{nodes.clusterId || 'Not available'}
\n
Number of nodes:
\n
{nodes.nodeCount}
\n
\n );\n }\n\n return content;\n },\n\n renderTrafficGraph() {\n const { traffic, graphWidth } = this.state;\n\n let sumOutput = null;\n let trafficGraph = ;\n\n if (traffic) {\n const bytesOut = _.reduce(traffic.output, (result, value) => result + value);\n\n sumOutput = Last 30 days: {NumberUtils.formatBytes(bytesOut)};\n\n trafficGraph = (\n \n );\n }\n\n return (\n <>\n

{ this._container = container; }} style={{ marginBottom: 10 }}>Outgoing traffic {sumOutput}

\n {trafficGraph}\n \n );\n },\n\n renderHeader() {\n return

Graylog cluster

;\n },\n\n renderDefaultLayout() {\n const { children } = this.props;\n\n return (\n \n \n {this.renderHeader()}\n {this.renderClusterInfo()}\n
\n {children}\n \n \n {this.renderTrafficGraph()}\n \n \n \n
\n );\n },\n\n renderCompactLayout() {\n const { children } = this.props;\n\n return (\n \n \n {this.renderHeader()}\n \n \n {this.renderClusterInfo()}\n
\n {children}\n \n \n {this.renderTrafficGraph()}\n \n
\n \n
\n );\n },\n\n render() {\n const { layout } = this.props;\n\n switch (layout) {\n case 'compact':\n return this.renderCompactLayout();\n default:\n return this.renderDefaultLayout();\n }\n },\n});\n\nexport default GraylogClusterOverview;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { isEmpty, trim } from 'lodash';\n\nimport { Button, ButtonToolbar, Col, Row } from 'components/graylog';\nimport { Input } from 'components/bootstrap';\n\nconst FORM_FIELDS = ['firstName', 'lastName', 'email', 'phone', 'company'];\n\nconst PHONE_PATTERN = /^[0-9\\-.()+ ]{5,}$/;\n\nexport default class EnterpriseFreeLicenseForm extends React.Component {\n static propTypes = {\n onSubmit: PropTypes.func.isRequired,\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n formFields: {\n firstName: '',\n lastName: '',\n email: '',\n phone: '',\n company: '',\n },\n errors: {},\n isSubmitting: false,\n };\n }\n\n clearValues = (callback) => {\n const clearedFields = FORM_FIELDS.reduce((acc, key) => Object.assign(acc, { [key]: '' }), {});\n\n this.setState({ formFields: clearedFields }, callback);\n };\n\n validatePhone = (key, value) => {\n if (isEmpty(value.replace(' ', ''))) {\n return 'Valid phone number w/ country code is required.';\n }\n\n return PHONE_PATTERN.test(value) ? null : 'Invalid phone number';\n };\n\n handleInput = (key, validator) => {\n return (event) => {\n const { formFields, errors } = this.state;\n const value = event.target.value.replace(/[\\s]{2,}/, ' '); // strip extraneous spaces\n const newFormFields = Object.assign(formFields, { [key]: value });\n const newErrors = { ...errors };\n\n if (validator && (typeof validator === 'function')) {\n const errorMessage = validator(key, newFormFields[key]);\n\n if (errorMessage) {\n newErrors[key] = errorMessage;\n } else {\n delete newErrors[key];\n }\n }\n\n this.setState({ formFields: newFormFields, errors: newErrors });\n };\n };\n\n validationState = (key) => {\n const { errors } = this.state;\n\n return errors[key] ? 'error' : null;\n };\n\n validationMessage = (key) => {\n const { errors } = this.state;\n\n return errors[key];\n };\n\n formIsInvalid = () => {\n const { isSubmitting, formFields, errors } = this.state;\n\n return isSubmitting || !isEmpty(errors) || !isEmpty(FORM_FIELDS.filter((key) => isEmpty(trim(formFields[key]))));\n };\n\n submitForm = (event) => {\n event.preventDefault();\n\n const { onSubmit } = this.props;\n const { formFields } = this.state;\n\n // First set \"submitting\" status to make sure we disable the submit button (avoid double-click)\n this.setState({ isSubmitting: true }, () => {\n onSubmit(formFields, (success) => {\n if (success) {\n // Clear form before unsetting \"submitting\" status, again, to avoid double-click\n this.clearValues(() => {\n this.setState({ isSubmitting: false });\n });\n } else {\n this.setState({ isSubmitting: false });\n }\n });\n });\n };\n\n resetForm = () => {\n this.clearValues();\n };\n\n render() {\n const { formFields: { firstName, lastName, company, email, phone } } = this.state;\n\n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n );\n }\n}\n","import api from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import content from \"!!../../../node_modules/css-loader/dist/cjs.js??ref--10-1!./PluginList.css\";\n\nvar options = {};\n\noptions.insert = \"head\";\noptions.singleton = false;\n\nvar update = api(content, options);\n\n\n\nexport default content.locals || {};","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport createReactClass from 'create-react-class';\nimport { PluginStore } from 'graylog-web-plugin/plugin';\n\nimport { Icon } from 'components/common';\n\nimport style from './PluginList.css';\n\nconst PluginList = createReactClass({\n displayName: 'PluginList',\n\n ENTERPRISE_PLUGINS: {\n 'graylog-plugin-enterprise': 'Graylog Plugin Enterprise',\n },\n\n _formatPlugin(pluginName) {\n const plugin = PluginStore.get().filter((p) => p.metadata.name === pluginName)[0];\n\n return (\n
  • \n  \n {this.ENTERPRISE_PLUGINS[pluginName]} is {plugin ? 'installed' : 'not installed'}\n
  • \n );\n },\n\n render() {\n const enterprisePluginList = Object.keys(this.ENTERPRISE_PLUGINS).map((pluginName) => this._formatPlugin(pluginName));\n\n return (\n <>\n

    This is the status of Graylog Enterprise modules in this cluster:

    \n
      \n {enterprisePluginList}\n
    \n \n );\n },\n});\n\nexport default PluginList;\n","/*\n * Copyright (C) 2020 Graylog, Inc.\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the Server Side Public License, version 1,\n * as published by MongoDB, Inc.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * Server Side Public License for more details.\n *\n * You should have received a copy of the Server Side Public License\n * along with this program. If not, see\n * .\n */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n// eslint-disable-next-line no-restricted-imports\nimport createReactClass from 'create-react-class';\nimport Reflux from 'reflux';\nimport styled, { css } from 'styled-components';\n\nimport { DocumentTitle, IfPermitted, PageHeader, Spinner } from 'components/common';\nimport { Alert, Col, Row } from 'components/graylog';\nimport { GraylogClusterOverview } from 'components/cluster';\nimport DocumentationLink from 'components/support/DocumentationLink';\nimport EnterpriseFreeLicenseForm from 'components/enterprise/EnterpriseFreeLicenseForm';\nimport PluginList from 'components/enterprise/PluginList';\nimport CombinedProvider from 'injection/CombinedProvider';\nimport HideOnCloud from 'util/conditional/HideOnCloud';\n\nconst { EnterpriseActions, EnterpriseStore } = CombinedProvider.get('Enterprise');\n\nconst EnterpriseProductLink = ({ children }) => {\n return (\n \n {children}\n \n );\n};\n\nEnterpriseProductLink.propTypes = {\n children: PropTypes.node,\n};\n\nEnterpriseProductLink.defaultProps = {\n children: null,\n};\n\nconst EnterpriseFeatureList = styled.ul`\n list-style-type: disc;\n padding-left: 20px;\n`;\n\nconst BiggerFontSize = styled.div(({ theme }) => css`\n font-size: ${theme.fonts.size.large};\n`);\n\nconst GraylogEnterpriseHeader = styled.h2`\n margin-bottom: 10px;\n`;\n\nconst EnterprisePage = createReactClass({\n displayName: 'EnterprisePage',\n mixins: [Reflux.connect(EnterpriseStore)],\n\n componentDidMount() {\n EnterpriseActions.getLicenseInfo();\n },\n\n onFreeLicenseFormSubmit(formFields, callback) {\n EnterpriseActions.requestFreeEnterpriseLicense(formFields)\n .then(() => callback(true))\n .catch(() => callback(false));\n },\n\n _isLoading() {\n const { licenseStatus } = this.state;\n\n return !licenseStatus;\n },\n\n renderLicenseFormContent(licenseStatus) {\n let licenseFormContent;\n\n if (this._isLoading()) {\n licenseFormContent = ;\n } else if (licenseStatus === 'installed') {\n licenseFormContent = (\n \n You have a Graylog Enterprise license installed.\n \n );\n } else if (licenseStatus === 'staged') {\n licenseFormContent = (\n \n You requested a free Graylog Enterprise license. It will be activated once you restart the Graylog\n server with the Graylog Enterprise plugins installed.\n \n );\n } else {\n licenseFormContent = ;\n }\n\n return licenseFormContent;\n },\n\n render() {\n const { licenseStatus } = this.state;\n\n return (\n \n
    \n \n {null}\n\n \n Graylog Enterprise adds commercial functionality to the Open Source Graylog core. You can learn more\n about Graylog Enterprise on the product page.\n \n \n\n \n \n \n \n \n \n \n Graylog Enterprise\n \n

    Extend Graylog’s Open Source capabilities with a free trial of Graylog Enterprise for 30 days.

    \n

    \n Graylog Enterprise introduces productivity and compliance features designed to help organizations\n reduce risk while encouraging collaboration across a large number of users.\n

    \n\n

    Graylog Enterprise includes:

    \n\n \n
  • Automated archiving} /> and retention
  • \n
  • Audit logs} /> of Graylog user activity
  • \n
  • \n Alerts with dynamic lists} />\n {' '}and correlation engine} /> for events\n to minimize the number of alerts that you need to create and maintain\n
  • \n
  • \n Customizable scheduled reporting} /> using dashboard widgets for sharing analysis outside Graylog\n
  • \n
  • Parameterized search templates} /> enable you to\n combine and reuse queries\n
  • \n
  • Data forwarder} /> to easily combine data from\n multiple Graylog instances\n
  • \n
  • And more...
  • \n
    \n
    \n \n \n {this.renderLicenseFormContent(licenseStatus)}\n \n
    \n
    \n
    \n
    \n
    \n );\n },\n});\n\nexport default EnterprisePage;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"._2Yy-JFptAfC5bv0hCc1VVg {\\n margin-left: 0;\\n padding-left: 0;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/components/enterprise/PluginList.css\"],\"names\":[],\"mappings\":\"AAAA;EACE,cAAc;EACd,eAAe;AACjB\",\"sourcesContent\":[\":local(.enterprisePlugins) {\\n margin-left: 0;\\n padding-left: 0;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"enterprisePlugins\": \"_2Yy-JFptAfC5bv0hCc1VVg\"\n};\nexport default ___CSS_LOADER_EXPORT___;\n"],"sourceRoot":""}




    © 2015 - 2024 Weber Informatics LLC | Privacy Policy