doc: added some comments to explain the code organization
Only done for about half of the document.
This commit is contained in:
parent
4e7a83dc2c
commit
59728e5459
83
dev/app.js
83
dev/app.js
@ -1,16 +1,16 @@
|
|||||||
//----------Constant Values and Objects---------
|
//----------Constant Values and Objects---------
|
||||||
let targetIpAddress = '';
|
let targetIpAddress = ''; // left empty, is assigned later.
|
||||||
const lockoutMax = 12;
|
const lockoutMax = 12; //How many chances the user gets
|
||||||
let lockoutHits = 0;
|
let lockoutHits = 0;
|
||||||
const amountOfIps = 20;
|
const amountOfIps = 20; //amount of entries to chohose from
|
||||||
let ipAttempts = [];
|
let ipAttempts = [];
|
||||||
let time = 460000;
|
let time = 460000; //Games time limit
|
||||||
let lose = false;
|
let lose = false;
|
||||||
let win = false;
|
let win = false;
|
||||||
let timerElement = document.getElementById('timer');
|
let timerElement = document.getElementById('timer'); //The HTML element that renders the time left
|
||||||
let timeInterval = {};
|
let timeInterval = {}; //Empty object that will be turned into a timeInterval that will control the game timer.
|
||||||
let score = 0;
|
let score = 0;
|
||||||
let winScore = 3;
|
let winScore = 3; //How many rounds the game has
|
||||||
|
|
||||||
const systemTypes = ["HIDDEN", "KALILINUX", "WINDOWSXP", "WINDOWS2000",
|
const systemTypes = ["HIDDEN", "KALILINUX", "WINDOWSXP", "WINDOWS2000",
|
||||||
"WINDOWS10", "REDHAT", "ANDROID4.4", "NETHUNTER"];
|
"WINDOWS10", "REDHAT", "ANDROID4.4", "NETHUNTER"];
|
||||||
@ -31,7 +31,11 @@ const Entry = function(){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
//-----------Helper Functions-----------
|
//---------------------Helper Functions---------------------
|
||||||
|
/*These are pure functions. They do not change the state of the
|
||||||
|
application so I keep these seperated from teh business logic
|
||||||
|
funcitons that alter the view and take in input*/
|
||||||
|
|
||||||
function createIP() {
|
function createIP() {
|
||||||
let text = "";
|
let text = "";
|
||||||
let possible = "0123456789";
|
let possible = "0123456789";
|
||||||
@ -54,13 +58,34 @@ function formatIP(ip){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*This function is used several time to get random numbers that are used
|
||||||
|
to get the random Longitude and Lattiudes, to select one of the IP addresses
|
||||||
|
as the target, etc.*/
|
||||||
function randomInRange(min, max, fixed){
|
function randomInRange(min, max, fixed){
|
||||||
return (Math.random() * (max - min) + min).toFixed(fixed) * 1;
|
return (Math.random() * (max - min) + min).toFixed(fixed) * 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*This function is used to return a randon alphanumeric sting that is added to
|
||||||
|
a new Entry() object to give its 'systemName' a unique value.*/
|
||||||
|
function createRandomName(){
|
||||||
|
let text = "";
|
||||||
|
let possible = "0123456789QWERTYUIOP_-ASDFGHJKLZXCVBNM";
|
||||||
|
|
||||||
|
for (var i = 0; i < 10; i++)
|
||||||
|
text += possible.charAt(Math.floor(Math.random() * possible.length));
|
||||||
|
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*This takes in the entry object that was instantiated by 'new Entry()'
|
||||||
|
We return the HTML element in the form of a string. This will later be
|
||||||
|
put into the Array htmlArray that is declared later on above the 'Business
|
||||||
|
Logic Section'*/
|
||||||
function createEntryHTML(entry){
|
function createEntryHTML(entry){
|
||||||
|
|
||||||
|
//ES6 object destructuring
|
||||||
let {value, status, machineType, hostName, lastResponse, systemLocation} = entry;
|
let {value, status, machineType, hostName, lastResponse, systemLocation} = entry;
|
||||||
let ipAddress = formatIP(value);
|
let ipAddress = formatIP(value);
|
||||||
let htmlString = "<tbody>\
|
let htmlString = "<tbody>\
|
||||||
@ -79,6 +104,10 @@ function createEntryHTML(entry){
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*This returns the array of HTML Element strings. This array is later
|
||||||
|
iterated through in a function to concatinate the strings together in
|
||||||
|
'concatEntryHTMLArray().' That concatenated value is then used to render
|
||||||
|
the entries */
|
||||||
function createEntryHTMLArray(entries){
|
function createEntryHTMLArray(entries){
|
||||||
|
|
||||||
let htmlStrings = [];
|
let htmlStrings = [];
|
||||||
@ -91,17 +120,9 @@ function createEntryHTMLArray(entries){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function createRandomName(){
|
|
||||||
let text = "";
|
|
||||||
let possible = "0123456789QWERTYUIOP_-ASDFGHJKLZXCVBNM";
|
|
||||||
|
|
||||||
for (var i = 0; i < 10; i++)
|
|
||||||
text += possible.charAt(Math.floor(Math.random() * possible.length));
|
|
||||||
|
|
||||||
return text;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
/*This funciton creates an array of Entry objects that will later be iterated
|
||||||
|
though to render to the view. */
|
||||||
function createEntryArray(){
|
function createEntryArray(){
|
||||||
|
|
||||||
let entries = [];
|
let entries = [];
|
||||||
@ -114,6 +135,8 @@ function createEntryArray(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*This function iterates thou the array of HTML Entry Element strings to turn them
|
||||||
|
into one big string that will be used to render to the view. */
|
||||||
function concatEntryHTMLArray(entries){
|
function concatEntryHTMLArray(entries){
|
||||||
|
|
||||||
let htmlString = "";
|
let htmlString = "";
|
||||||
@ -125,24 +148,26 @@ function concatEntryHTMLArray(entries){
|
|||||||
return htmlString;
|
return htmlString;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*This function is used to extract and return the data-ip-address value from the literal
|
||||||
function renderEntries(htmlString){
|
html element that is passed into it. We need to extract this data when we click on the
|
||||||
document.getElementById('entry_table').innerHTML = htmlString;
|
entries in the view. to perform certain tasks.*/
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function extractIpAddressFromElement(element){
|
function extractIpAddressFromElement(element){
|
||||||
ipAddress = element.getAttribute('data-ip-value');
|
ipAddress = element.getAttribute('data-ip-value');
|
||||||
return ipAddress;
|
return ipAddress;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*This function finds a value among the entires that have already been genrated and returns
|
||||||
|
that value. That value will later be assigned to a global aiable */
|
||||||
function selectTargetIpAddress(entries){
|
function selectTargetIpAddress(entries){
|
||||||
let value = entries[randomInRange(0, entries.length - 1, 0)].value;
|
let value = entries[randomInRange(0, entries.length - 1, 0)].value;
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*This function finds the similarity between the selected entriy and the target entry
|
||||||
|
and returns a number that tells how similar they were. It uses the Levenstien method
|
||||||
|
that is provided in a different file. */
|
||||||
function compareIpAddress(value){
|
function compareIpAddress(value){
|
||||||
let levDis = new Levenshtein(value, targetIpAddress);
|
let levDis = new Levenshtein(value, targetIpAddress);
|
||||||
let similarCount = 10 - levDis.distance;
|
let similarCount = 10 - levDis.distance;
|
||||||
@ -151,8 +176,9 @@ function compareIpAddress(value){
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
//----------Business Logic--------
|
//--------------------Business Logic------------------
|
||||||
|
|
||||||
|
//Begins the game/round... Obvi
|
||||||
function beginRound(){
|
function beginRound(){
|
||||||
document.getElementById('entry_table').innerHTML = "";
|
document.getElementById('entry_table').innerHTML = "";
|
||||||
ipAttempts = [];
|
ipAttempts = [];
|
||||||
@ -232,6 +258,11 @@ function wrongEntrySelected(entry, similarity){
|
|||||||
console.log(similarity + " characters were correct. Try Again!")
|
console.log(similarity + " characters were correct. Try Again!")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function renderEntries(htmlString){
|
||||||
|
document.getElementById('entry_table').innerHTML = htmlString;
|
||||||
|
}
|
||||||
|
|
||||||
function renderSuccessPrecentage(percentage){
|
function renderSuccessPrecentage(percentage){
|
||||||
let successPercentage = document.getElementById('precentage');
|
let successPercentage = document.getElementById('precentage');
|
||||||
successPercentage.innerHTML = Math.floor(percentage) + "%";
|
successPercentage.innerHTML = Math.floor(percentage) + "%";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user