add regex to match ipv6 adresses

This commit is contained in:
rloukil 2018-12-26 22:32:39 +01:00
parent a7e0a3f19b
commit 36e560da3c
4 changed files with 113 additions and 98 deletions

View file

@ -1,66 +1,60 @@
[ [
{ {
"ip": "94.198.99.82" , "ip": "18:36:F3:98:4F:9A" ,
"date": "2018-12-25" "date": "2018-12-25"
}, },
{ {
"ip":"123.125.67.160" , "ip": "2a0a:e5c0:0:2:400:b3ff:fe39:7959" ,
"date": "2018-12-25"
},
{
"ip":"2a0a:e5c0:2:2:400:c8ff:fe68:bed1" ,
"date":"2018-12-26" "date":"2018-12-26"
}, },
{ {
"ip":"123.125.67.165", "ip": "18:36:F3:98:4F:9A" ,
"date": "2018-12-25"
},
{
"ip":"2a0a:e5c0:2:5:3106:3977:2f62:5c3c",
"date":"2018-12-27" "date":"2018-12-27"
}, },
{ {
"ip":"123.125.67.121", "ip":"2a0a:e5c0:0:2:400:b3ff:fe39:7959",
"date":"2018-12-28" "date":"2018-12-28"
}, },
{ {
"ip": "94.198.99.82" , "ip": "18:36:F3:98:4F:9A" ,
"date": "2018-12-29" "date": "2018-12-25"
}, },
{ {
"ip":"123.125.67.160" , "ip":"2001:0db8:85a3:0000:0000:8a2e:0370:7334",
"date":"2018-12-30"
},
{
"ip":"123.125.67.165",
"date":"2018-12-31"
},
{
"ip":"123.125.67.121",
"date":"2018-01-01" "date":"2018-01-01"
}, },
{ {
"ip": "94.198.99.82" , "ip": "2a0a:e5c0:2:2:400:c8ff:fe68:bed1" ,
"date": "2018-12-29"
},
{
"ip":"2a0a:e5c0:2:2:400:c8ff:fe68:bed1" ,
"date":"2018-12-30"
},
{
"ip": "18:36:F3:98:4F:9A" ,
"date": "2018-12-25"
},
{
"ip":"2a0a:e5c0:0:2:400:b3ff:fe39:7959",
"date":"2018-12-31"
},
{
"ip":"2a0a:e5c0:2:2:400:c8ff:fe68:bed1",
"date":"2018-01-01"
},
{
"ip": "2a0a:e5c0:0:2:400:b3ff:fe39:7959" ,
"date": "2018-01-01" "date": "2018-01-01"
},
{
"ip":"123.125.67.160" ,
"date":"2018-01-02"
},
{
"ip":"123.125.67.165",
"date":"2018-01-03"
},
{
"ip":"123.125.67.121",
"date":"2018-01-04"
},{
"ip": "94.198.99.82" ,
"date": "2018-12-16"
},
{
"ip":"123.125.67.160" ,
"date":"2018-12-18"
},
{
"ip":"123.125.67.165",
"date":"2018-12-01"
},
{
"ip":"123.125.67.121",
"date":"2018-12-02"
} }
] ]

120
app.js
View file

@ -1,55 +1,77 @@
let addresses = [] const IPV4_EX = new RegExp("")
let date = [] const regex = RegExp("^((25[05]|2[04][09]|[01]?[09][09]?).(25[05]|2[04][09]|[01]?[09][09]?).(25[05]|2[04][09]|[01]?[09][09]?).(25[05]|2[04][09]|[01]?[09][09]?))|((([09A-Fa-f]{1,4}:){7}[09A-Fa-f]{1,4})|(([09A-Fa-f]{1,4}:){6}:[09A-Fa-f]{1,4})|(([09A-Fa-f]{1,4}:){5}:([09A-Fa-f]{1,4}:)?[09A-Fa-f]{1,4})|(([09A-Fa-f]{1,4}:){4}:([09A-Fa-f]{1,4}:){0,2}[09A-Fa-f]{1,4})|(([09A-Fa-f]{1,4}:){3}:([09A-Fa-f]{1,4}:){0,3}[09A-Fa-f]{1,4})|(([09A-Fa-f]{1,4}:){2}:([09A-Fa-f]{1,4}:){0,4}[09A-Fa-f]{1,4})|(([09A-Fa-f]{1,4}:){6}((b((25[05])|(1d{2})|(2[04]d)|(d{1,2}))b).){3}(b((25[05])|(1d{2})|(2[04]d)|(d{1,2}))b))|(([09A-Fa-f]{1,4}:){0,5}:((b((25[05])|(1d{2})|(2[04]d)|(d{1,2}))b).){3}(b((25[05])|(1d{2})|(2[04]d)|(d{1,2}))b))|(::([09A-Fa-f]{1,4}:){0,5}((b((25[05])|(1d{2})|(2[04]d)|(d{1,2}))b).){3}(b((25[05])|(1d{2})|(2[04]d)|(d{1,2}))b))|([09A-Fa-f]{1,4}::([09A-Fa-f]{1,4}:){0,5}[09A-Fa-f]{1,4})|(::([09A-Fa-f]{1,4}:){0,6}[09A-Fa-f]{1,4})|(([09A-Fa-f]{1,4}:){1,7}:))$")
let ipv4_v6 = []
//Fetch call to get data from addresses json file var addresses = []
fetch('./address.json').then(response => { var date = []
return response.json(); var ipv4_v6 = []
}).then(data => {
data.sort(function(a,b){ function Ip4OrIp6(ipAddress){
return new Date(a.date) - new Date(b.date); console.log(ipAddress)
}); console.log(regex.test(ipAddress));
}
// Refactor getStudents and getScores to return Promise for their response bodies
function getData(){
return fetch(`address.json`, {
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
}).then((response) => response.json())
};
getData().then((data)=>{
data.forEach(element => { data.forEach(element => {
date.push(element.date) date.push(element.date)
}) });
}).catch(err => {
console.log(err);
});
console.log(date);
var ctx = document.getElementById("myChart").getContext('2d'); console.log(date);
var myChart = new Chart(ctx, {
type: 'bar', data.forEach(element => {
data: { Ip4OrIp6(element.ip)
labels:date, })
datasets: [{ console.log(ipv4_v6)
label: 'Ipv4 and Ipv6 routin protocols used ', var ctx = document.getElementById("myChart").getContext('2d');
data: [1 , -1 ,1 , -1 ,1 , -1 ,1 , -1 ,1 , -1 ,1 , -1 ,1 , -1 ,1 ,1], var chart = new Chart(ctx, {
borderWidth: 1 type: 'line',
}] data: {
}, labels:date ,
options: { datasets: [{
label: "Statistics for IPV4 and IPV6",
scales: { data: ipv4_v6,
}
yAxes: [{ ]
ticks: { },
beginAtZero:true options: {
} legend: { display: false },
}] title: {
display: true,
text: 'Statistics for IPV4 and IPV6'
} }
},
plugins: [{
beforeInit: function(chart) {
var time = chart.options.scales.xAxes[0].time, // 'time' object reference
// difference (in days) between min and max date
timeDiff = moment(time.max).diff(moment(time.min), 'd');
// populate 'labels' array
// (create a date string for each date between min and max, inclusive)
for (i = 0; i <= timeDiff; i++) {
var _label = moment(time.min).add(i, 'd').format('YYYY-MM-DD HH:mm:ss');
chart.data.labels.push(_label);
}
} }
}] })
}); })
//Fetch call to get data from addresses json file
// async function retrieveIpAdresses(){
// await fetch('./address.json').then(response => {
// response.json();
// }).then(data => {
// data.forEach(element=>{
// console.log(element)
// date.push(element.date)
// })
// }).catch(err => {
// err = err
// });
// }

View file

@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge"> <meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
<link rel="stylesheet" href="style/style.css">
<title>Test</title> <title>Test</title>
</head> </head>
<body> <body>
@ -13,14 +13,10 @@
<canvas id="myChart" width="400" height="400"></canvas> <canvas id="myChart" width="400" height="400"></canvas>
<script src="lodash.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.4.0/Chart.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.4.0/Chart.min.js"></script>
<script src="app.js">
<script src="app.js">
</script> </script>
</div> </div>

View file

@ -0,0 +1,3 @@
#myChart {
height: 85vh!important;
}