Added hardware functions to main

This commit is contained in:
z0ccc 2021-08-24 15:17:42 -04:00
parent 90cad36930
commit 0c40d3fa01
4 changed files with 90 additions and 67 deletions

View file

@ -22,6 +22,9 @@ module.exports = {
'linebreak-style': 'off',
'react/jsx-filename-extension': [1, { extensions: ['.jsx', '.js'] }],
'jsx-a11y/label-has-associated-control': 'off',
'one-var': 'off',
'one-var-declaration-per-line': 'off',
'object-curly-newline': 'off',
'import/extensions': [
'error',
'ignorePackages',
@ -33,6 +36,6 @@ module.exports = {
'react/jsx-one-expression-per-line': 'off',
'react/prop-types': 'off',
'react/react-in-jsx-scope': 'off',
'no-bitwise': 'off'
'no-bitwise': 'off',
},
};

View file

@ -1,8 +1,8 @@
import md5 from 'crypto-js/md5';
import { useState, useEffect } from 'react';
import axios from 'axios';
import ScanBlock from './ScanBlock';
import Table from './Table';
import { getHash } from './main';
const FingerprintBlock = () => {
const [name, setName] = useState('');
@ -106,7 +106,7 @@ const FingerprintBlock = () => {
},
];
const hash = md5(JSON.stringify(fingerprintData)).toString();
const hash = getHash(fingerprintData);
const tableData = [
{

View file

@ -1,75 +1,18 @@
/* eslint-disable no-unused-vars */
import { useState, useEffect } from 'react';
import ScanBlock from './ScanBlock';
import Table from './Table';
import { getHardware, getWebGL, getBattery } from './main';
const HardwareBlock = () => {
const [batLevel, setBatLevel] = useState('');
const [batStatus, setBatStatus] = useState('');
const [data, setData] = useState([]);
useEffect(() => {
// waits for battery info to resolve and then updates
if ('getBattery' in navigator) {
navigator.getBattery().then((res) => {
setBatLevel(`${Math.round(res.level * 100)}%`);
setBatStatus(res.charging ? 'Charging' : 'Not charging');
getBattery().then((batteryInfo) => {
setData([...getHardware(), ...getWebGL(), ...batteryInfo]);
});
} else {
setBatLevel('N/A');
setBatStatus('N/A');
}
}, []);
const gl = document.createElement('canvas').getContext('webgl');
const ext = gl.getExtension('WEBGL_debug_renderer_info');
// Hardware table items
const data = [
{
key: 'screenResolution',
title: 'Screen resolution',
value: `${window.screen.width}x${window.screen.height}`,
},
{
key: 'colorResolution',
title: 'Color Resolution',
value: window.screen.colorDepth,
},
{
key: 'batteryLevel',
title: 'Battery level',
value: batLevel,
},
{
key: 'batteryStatus',
title: 'Battery status',
value: batStatus,
},
{
key: 'deviceMemory',
title: 'Device memory',
value: navigator.deviceMemory ? `${navigator.deviceMemory}GB` : 'N/A',
},
{
key: 'cpuCores',
title: '# of CPU cores',
value: navigator.hardwareConcurrency || 'N/A',
},
{
key: 'maxTouchpoints',
title: 'Max touchpoints',
value: navigator.maxTouchPoints || 0,
},
{
key: 'webGLVendor',
title: 'WebGL vendor',
value: gl.getParameter(ext.UNMASKED_VENDOR_WEBGL),
},
{
key: 'webglRenderer',
title: 'WebGL renderer',
value: gl.getParameter(ext.UNMASKED_RENDERER_WEBGL),
},
];
return (
<ScanBlock>
<h1>Hardware</h1>

View file

@ -1,5 +1,82 @@
/* eslint-disable import/prefer-default-export */
import md5 from 'crypto-js/md5';
const getHash = (data) => md5(JSON.stringify(data)).toString();
export { getHash as default };
// Hardware table items
const getHardware = () => {
const data = [
{
key: 'screenResolution',
title: 'Screen resolution',
value: `${window.screen.width}x${window.screen.height}`,
},
{
key: 'colorResolution',
title: 'Color Resolution',
value: window.screen.colorDepth,
},
{
key: 'deviceMemory',
title: 'Device memory',
value: navigator.deviceMemory ? `${navigator.deviceMemory}GB` : 'N/A',
},
{
key: 'cpuCores',
title: '# of CPU cores',
value: navigator.hardwareConcurrency || 'N/A',
},
{
key: 'maxTouchpoints',
title: 'Max touchpoints',
value: navigator.maxTouchPoints || 0,
},
];
return data;
};
const getBattery = async () => {
let level, status;
if ('getBattery' in navigator) {
await navigator.getBattery().then((res) => {
level = `${Math.round(res.level * 100)}%`;
status = res.charging ? 'Charging' : 'Not charging';
});
} else {
level = 'N/A';
status = 'N/A';
}
const data = [
{
key: 'batteryLevel',
title: 'Battery level',
value: level,
},
{
key: 'batteryStatus',
title: 'Battery status',
value: status,
},
];
return data;
};
const getWebGL = () => {
const gl = document.createElement('canvas').getContext('webgl');
const ext = gl.getExtension('WEBGL_debug_renderer_info');
const data = [
{
key: 'webGLVendor',
title: 'WebGL vendor',
value: gl.getParameter(ext.UNMASKED_VENDOR_WEBGL),
},
{
key: 'webglRenderer',
title: 'WebGL renderer',
value: gl.getParameter(ext.UNMASKED_RENDERER_WEBGL),
},
];
return data;
};
export { getHash, getHardware, getWebGL, getBattery };