{"version":3,"sources":["App.js","serviceWorker.js","index.js"],"names":["COUNTRIES","window","location","DAILY","D4","MODALSTYLE","overlay","position","top","bottom","content","left","right","ReactModal","setAppElement","App","props","_onViewportChange","viewport","setState","state","_resize","width","innerWidth","height","innerHeight","longitude","latitude","zoom","maxZoom","points","showModalAbout","showModalControls","_getData","bind","_processData","handleOpenModalAbout","handleCloseModalAbout","handleOpenModalControls","handleCloseModalControls","loc","up","this","uri","protocol","host","pathname","ws","WebSocket","onopen","console","log","onmessage","ev","json","JSON","parse","data","hasOwnProperty","command","length","push","fetch","then","response","text","split","forEach","event","err","addEventListener","reduce","accu","curr","Number","geoip_lon","geoip_lat","removeEventListener","closeAllModals","style","zIndex","Navbar","collapseOnSelect","expand","bg","variant","fixed","Brand","href","Toggle","aria-controls","Collapse","id","Nav","className","Link","onClick","NavDropdown","title","Item","isOpen","contentLabel","onRequestClose","handleCloseModal","class","controller","type","MapController","scrollZoom","dragPan","dragRotate","doubleClickZoom","touchZoom","touchRotate","keyboard","initialViewState","stroked","filled","lineWidthMinPixels","opacity","getLineColor","getFillColor","getSourcePosition","f","getTargetPosition","getSourceColor","getTargetColor","getWidth","pickable","Component","Boolean","hostname","match","ReactDOM","render","StrictMode","document","getElementById","navigator","serviceWorker","ready","registration","unregister","catch","error","message"],"mappings":"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","file":"static/js/main.32ebe75f.chunk.js","sourcesContent":["/* global window */\nimport React, { Component } from 'react';\nimport DeckGL, { GeoJsonLayer, ArcLayer, MapController } from 'deck.gl';\nimport { Nav, Navbar, NavDropdown } from 'react-bootstrap';\nimport ReactModal from 'react-modal';\n\nconst COUNTRIES = window.location + 'map/ne_50m_admin_0_scale_rank.geojson';\nconst DAILY = window.location + \"daily.json\";\nconst D4 = [];\n\nconst MODALSTYLE = {\n overlay: {\n // backgroundColor: 'papayawhip'\n position: 'absolute',\n top: '56px',\n bottom: '40px'\n },\n content: {\n position: 'absolute',\n top: '40px',\n left: '40px',\n right: '40px',\n bottom: '40px'\n }\n};\n\nReactModal.setAppElement('#map');\n\nexport default class App extends Component {\n constructor(props) {\n super(props);\n this.state = {\n // deck.gl related\n viewport: {\n width: window.innerWidth,\n height: window.innerHeight,\n longitude: 6.1319346,\n latitude: 49.611621,\n zoom: 4,\n maxZoom: 12\n },\n points: [],\n // modal related\n showModalAbout: false,\n showModalControls: false\n };\n // deck.gl related\n this._getData = this._getData.bind(this);\n this._processData = this._processData.bind(this);\n // modal related\n this.handleOpenModalAbout = this.handleOpenModalAbout.bind(this);\n this.handleCloseModalAbout = this.handleCloseModalAbout.bind(this);\n this.handleOpenModalControls = this.handleOpenModalControls.bind(this);\n this.handleCloseModalControls = this.handleCloseModalControls.bind(this);\n }\n\n // deck.gl related\n\n _getData() {\n var loc = window.location;\n // js binding \n var up = this;\n var uri = 'ws:';\n\n if (loc.protocol === 'https:') {\n uri = 'wss:';\n }\n uri += '//' + loc.host;\n uri += loc.pathname + 'ws';\n\n var ws = new WebSocket(uri)\n\n ws.onopen = function () {\n console.log('Connected')\n }\n\n ws.onmessage = function (ev) {\n var json = JSON.parse(ev.data);\n if (json.hasOwnProperty('command')) {\n if (json.command == \"flush\") {\n // Flushing the data\n D4.length = 0;\n this.setState({\n points: []\n });\n }\n } else {\n D4.push(json[0]);\n up._processData();\n }\n }\n }\n\n componentDidMount() {\n // js binding \n var up = this;\n fetch(DAILY)\n .then(response => response.text())\n .then((data) => {\n if (data) {\n var events = data.split(/\\r\\n|\\r|\\n/g);\n events.forEach(function (event) {\n if (event) {\n var json = JSON.parse(event);\n D4.push(json[0]);\n }\n });\n up._processData();\n }\n }, (err) => {\n console.log('Could not fetch ' + DAILY + ' ' + err); // Erreur !\n });\n\n this._getData();\n this._processData();\n window.addEventListener('resize', this._resize);\n this._resize();\n }\n\n _processData() {\n if (D4) {\n const points = D4.reduce((accu, curr) => {\n accu.push({\n position: [Number(curr.geoip_lon), Number(curr.geoip_lat)],\n });\n return accu;\n }, []);\n // Add the point to the ARCS\n this.setState({\n points\n });\n }\n }\n\n componentWillUnmount() {\n window.removeEventListener('resize', this._resize);\n }\n\n _onViewportChange = (viewport) => {\n this.setState({\n viewport: { ...this.state.viewport, ...viewport }\n });\n }\n\n _resize = () => {\n this._onViewportChange({\n width: window.innerWidth,\n height: window.innerHeight\n });\n }\n\n // modal related\n handleOpenModalAbout() {\n this.closeAllModals()\n this.setState({ showModalAbout: true });\n }\n\n handleCloseModalAbout() {\n this.setState({ showModalAbout: false });\n }\n\n handleOpenModalControls() {\n this.closeAllModals()\n this.setState({ showModalControls: true });\n }\n\n handleCloseModalControls() {\n this.setState({ showModalControls: false });\n }\n\n closeAllModals() {\n this.setState({ showModalAbout: false });\n this.setState({ showModalControls: false });\n }\n\n render() {\n return (\n <>\n
This page displays realtime SSH bruteforce attacks registered against d4-project's main instance, hosted in Luxembourg.
\nThis page flushed every day at midnight.
\n\n \n