Help
RSS
API
Feed
Maltego
Contact
Domain > frostypaw.org
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2016-07-07
91.238.164.2
(
ClassC
)
2024-11-04
91.238.160.172
(
ClassC
)
Port 80
HTTP/1.1 200 OKConnection: Keep-AliveKeep-Alive: timeout5, max100content-type: text/html; charsetUTF-8transfer-encoding: chunkeddate: Mon, 04 Nov 2024 12:23:00 GMTserver: LiteSpeed !DOCTYPE HTML>html> head> style> body { margin: 0px; padding: 0px; background: #000000; } .centered { position: absolute; top: 50%; left: 50%; margin-right: -50%; transform: translate(-50%, -50%) } /style> /head> body onresizeinitSize();forceRedraw();> canvas idmyCanvas width100% height100% classcentered onClickchangeColours();>/canvas> /body> script typetext/javascript srcsuncalc-master/suncalc.js>/script> script typetext/javascript> // use suncalc to do an initial sunrise/set calculation var latitude -0.5704; var longitude 51.2362; var times SunCalc.getTimes(new Date(), longitude, latitude); function recalculateSunrise() { times SunCalc.getTimes(new Date(), longitude, latitude); } // recalculate once a day setInterval(recalculateSunrise,86400000); // do some basic setup grabbing the canvas var canvas document.getElementById(myCanvas); var ctx canvas.getContext(2d); function initSize() { canvas.width window.innerWidth || document.body.clientWidth, canvas.height window.innerHeight || document.body.clientHeight; } initSize(); // debug functionality function beep() { var snd new Audio(data:audio/wav;base64,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qJrx4KOQjahZxWbcZgztj2c49nKmkId44S71j0c8eV9yDK6uPRzx5X18eDvjvQ6yKo9ZSS6l//8elePK/Lf//IInrOF/FvDoADYAGBMGb7FtErm5MXMlmPAJQVgWta7Zx2go+8xJ0UiCb8LHHdftWyLJE0QIAIsI+UbXu67dZMjmgDGCGl1H+vpF4NSDckSIkk7Vd+sxEhBQMRU8j/12UIRhzSaUdQ+rQU5kGeFxm+hb1oh6pWWmv3uvmReDl0UnvtapVaIzo1jZbf/pD6ElLqSX+rUmOQNpJFa/r+sa4e/pBlAABoAAAAA3CUgShLdGIxsY7AUABPRrgCABdDuQ5GC7DqPQCgbbJUAoRSUj+NIEig0YfyWUho1VBBBA//uQZB4ABZx5zfMakeAAAAmwAAAAF5F3P0w9GtAAACfAAAAAwLhMDmAYWMgVEG1U0FIGCBgXBXAtfMH10000EEEEEECUBYln03TTTdNBDZopopYvrTTdNa325mImNg3TTPV9q3pmY0xoO6bv3r00y+IDGid/9aaaZTGMuj9mpu9Mpio1dXrr5HERTZSmqU36A3CumzN/9Robv/Xx4v9ijkSRSNLQhAWumap82WRSBUqXStV/YcS+XVLnSS+WLDroqArFkMEsAS+eWmrUzrO0oEmE40RlMZ5+ODIkAyKAGUwZ3mVKmcamcJnMW26MRPgUw6j+LkhyHGVGYjSUUKNpuJUQoOIAyDvEyG8S5yfK6dhZc0Tx1KI/gviKL6qvvFs1+bWtaz58uUNnryq6kt5RzOCkPWlVqVX2a/EEBUdU1KrXLf40GoiiFXK///qpoiDXrOgqDR38JB0bw7SoL+ZB9o1RCkQjQ2CBYZKd/+VJxZRRZlqSkKiws0WFxUyCwsKiMy7hUVFhIaCrNQsKkTIsLivwKKigsj8XYlwt/WKi2N4d//uQRCSAAjURNIHpMZBGYiaQPSYyAAABLAAAAAAAACWAAAAApUF/Mg+0aohSIRobBAsMlO//Kk4soosy1JSFRYWaLC4qZBYWFRGZdwqKiwkNBVmoWFSJkWFxX4FFRQWR+LsS4W/rFRb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VEFHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU291bmRib3kuZGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjAwNGh0dHA6Ly93d3cuc291bmRib3kuZGUAAAAAAAAAACU); snd.play(); } // alter the HSL values in HSL move function changeHueSatLumHSL(hsl, degree, satAmount, lumAmount) { hsl.h + degree; if (hsl.h > 360) { hsl.h - 360; } else if (hsl.h 0) { hsl.h + 360; } hsl.s + satAmount; if (hsl.s > 1) { hsl.s 1; } else if (hsl.s 0) { hsl.s 0; } hsl.l + lumAmount; if (hsl.l > 1) { hsl.l 1; } else if (hsl.l 0) { hsl.l 0; } return hsl; } // expects a string and returns an object function rgbToHSL(rgb) { var r parseInt(rgb.substr(1, 2), 16) / 255, g parseInt(rgb.substr(3, 2), 16) / 255, b parseInt(rgb.substr(5, 2), 16) / 255, cMax Math.max(r, g, b), cMin Math.min(r, g, b), delta cMax - cMin, l (cMax + cMin) / 2, h 0, s 0; if (delta 0) { h Math.floor(Math.random() * 360); } else if (cMax r) { h 60 * (((g - b) / delta) % 6); } else if (cMax g) { h 60 * (((b - r) / delta) + 2); } else { h 60 * (((r - g) / delta) + 4); } if (delta 0) { s 0; } else { s (delta/(1-Math.abs(2*l - 1))) } return { h: h, s: s, l: l } } // expects an object and returns a string function hslToRGB(hsl) { var h hsl.h, s hsl.s, l hsl.l, c (1 - Math.abs(2*l - 1)) * s, x c * ( 1 - Math.abs((h / 60 ) % 2 - 1 )), m l - c/ 2, r, g, b; if (h 60) { r c; g x; b 0; } else if (h 120) { r x; g c; b 0; } else if (h 180) { r 0; g c; b x; } else if (h 240) { r 0; g x; b c; } else if (h 300) { r x; g 0; b c; } else { r c; g 0; b x; } r normalize_rgb_value(r, m); g normalize_rgb_value(g, m); b normalize_rgb_value(b, m); return rgbToHex(r,g,b); } function normalize_rgb_value(colour, m) { colour Math.floor((colour + m) * 255); if (colour 0) { colour 0; } return colour; } function rgbToHex(r, g, b) { return # + ((1 24) + (r 16) + (g 8) + b).toString(16).slice(1); } // check function needed to place petals alternately function isEven(n) { return n parseFloat(n)? !(n%2) : void 0; } // petal object/draw function function petal(innerRadius,size,position,totalPetals,offset) { // generate geometry values on init // x cx + r * cos(a) // y cy + r * sin(a) this.x (canvas.width/2) + innerRadius * Math.cos((position+offset)*2*Math.PI/totalPetals); this.y (canvas.height/2) + innerRadius * Math.sin((position+offset)*2*Math.PI/totalPetals); this.xEnd (canvas.width/2) + (innerRadius + size) * Math.cos((position+offset)*2*Math.PI/totalPetals); this.yEnd (canvas.height/2) + (innerRadius + size) * Math.sin((position+offset)*2*Math.PI/totalPetals); this.xFocus1 (canvas.width/2) + (innerRadius + (size*petalProportionY)) * Math.cos(((position+offset)-petalProportionX)*2*Math.PI/totalPetals); this.yFocus1 (canvas.height/2) + (innerRadius + (size*petalProportionY)) * Math.sin(((position+offset)-petalProportionX)*2*Math.PI/totalPetals); this.xFocus2 (canvas.width/2) + (innerRadius + (size*petalProportionY)) * Math.cos(((position+offset)+petalProportionX)*2*Math.PI/totalPetals); this.yFocus2 (canvas.height/2) + (innerRadius + (size*petalProportionY)) * Math.sin(((position+offset)+petalProportionX)*2*Math.PI/totalPetals); this.draw function(fillColour){ ctx.beginPath(); ctx.moveTo(this.x, this.y); ctx.quadraticCurveTo(this.xFocus1, this.yFocus1, this.xEnd, this.yEnd); ctx.quadraticCurveTo(this.xFocus2, this.yFocus2, this.x, this.y); ctx.fillStyle fillColour; ctx.fill(); ctx.closePath(); } } // flower setup var noRings 4; var noPetals 24; var flower new Array(noRings); for(var i 0; i noRings; i++) { floweri new Array(noPetals); } var petalSize canvas.height/15; var petalProportionX 0.65; var petalProportionY 0.6; var petalRatio .85; var radius 10; // 3 colour arrays - current, initial, end var flowerColour new Array(noRings); for(var i 0; i noRings; i++) { flowerColouri new Array(noPetals); } var flowerColour1 new Array(noRings); for(var i 0; i noRings; i++) { flowerColour1i new Array(noPetals); } var flowerColour2 new Array(noRings); for(var i 0; i noRings; i++) { flowerColour2i new Array(noPetals); } // draw the arrays of petals function drawFlower() { if (flower00null) { // flower not yet created -> build flower object var radiusTemp radius; var petalSizeTemp petalSize; for(var i 0; i noRings; i++) { for(var j 0; j noPetals; j++) { if (isEven(i)) { var offset .5; } else { var offset 0; } flowerij new petal(radiusTemp,petalSizeTemp,j,noPetals,offset); } radiusTemp radiusTemp + petalSizeTemp*petalProportionY*petalRatio; petalSizeTemp petalSizeTemp * 2; } } else { // flower exists just redraw petals dont recalculate for(var i 0; i noRings; i++) { for(var j 0; j noPetals; j++) { flowerij.draw(hslToRGB(flowerColourij)); } } } } // allow a forced replot of the flower in case the window is resized function forceRedraw() { flower00null; drawFlower; } // initial colour setup to fade from black to colour targets based on the root colours function setColoursInit() { for(var i 0; i noRings; i++) { for(var j 0; j noPetals; j++) { flowerColourij rgbToHSL(#000000); flowerColour1ij rgbToHSL(#000000); flowerColour2ij changeHueSatLumHSL(rgbToHSL(coloursi),((Math.random()-.5)*60),((Math.random()-.5)*.3),((Math.random()-.5)*.3)); } } } // pick a new set of colour targets per petal based on the root colours function nextColours() { for(var i 0; i noRings; i++) { for(var j 0; j noPetals; j++) { flowerColour1ij flowerColour2ij; flowerColour2ij changeHueSatLumHSL(rgbToHSL(coloursi),((Math.random()-.5)*60),((Math.random()-.5)*.3),((Math.random()-.5)*.2)); } } } // initial greyscale colourset var colours #ffffff,#aaaaaa,#444444,#111111; // let the flowering commence setColoursInit(colours); drawFlower(); // setup running loop variables var step 1; var steps 256; // iterate the grand loop function iterateFlower() { for(var i 0; i noRings; i++) { for(var j 0; j noPetals; j++) { var hueChange flowerColour2ij.h-flowerColour1ij.h; if (hueChange > 180) { // check for wrong-direction hue shifts and reverse as needed hueChange - 360 ; } else if (hueChange -180) { hueChange + 360 ; } var newColour { // iterate colour change h: flowerColour1ij.h + step*(hueChange/steps), s: flowerColour1ij.s + step*((flowerColour2ij.s-flowerColour1ij.s)/steps), l: flowerColour1ij.l + step*((flowerColour2ij.l-flowerColour1ij.l)/steps), } if (newColour.h > 360) { // double check done nothing stupid - redundant now? newColour.h - 360; } else if (newColour.h 0) { newColour.h + 360; } flowerColourij newColour // done } } ctx.clearRect(0,0,canvas.width,canvas.height); // clear canvas to avoid aliased edges drawFlower(); step++; if (step > steps) { step1; nextColours(); } // reached the end of the grand loop, pick new colour targets } // colourset arrays var dayColours #eeeeee,#ffaaaa,#ffff00,#00ff00, #6666ff,#ddddff,#ffff00,#ffffdd, #ff0000,#ff8800,#ffff00,#00ff00, #ffff00,#ffdd00,#ffff00,#cc00cc, #0000FF,#ff00FF,#006600,#00ff00, #eeeeee,#ff0000,#c30007,#0018ff, #00fcff,#e7e7e7,#0006ff,#10ae00, #ff00ae,#0cff00,#f0f0f0,#f6ff00, #fc00ff,#900047,#f40000,#91ff8c, #fff000,#c000ff,#670029,#ff0000, #00ff06,#fd7575,#ffea00,#96ff00, #ff0000,#db00d3,#0018ff,#f6f6f6, #ff9600,#fff600,#eeeeee,#009607, #ffa902,#0000ff,#eeeeee,#d900e1, #f4f4f4,#7800ff,#0084ff,#66ff00, #ff0060,#ff0000,#037300,#f0ff00 // end of day var nightColours #0000ff,#9999ff,#555311,#13000f, #ffff00,#000099,#110033,#001100, #ff0000,#cc9900,#555500,#000011, #00ff00,#ccff00,#550030,#110000, #ff00ff,#007722,#003333,#131200, #ffa200,#466e00,#0f5b00,#000112, #0030ff,#61018d,#030041,#09120a, #9600ff,#bf3a00,#27003f,#110000, #fffc00,#c7008c,#022b52,#000112, #ff6000,#5e9a00,#4d3600,#001200, #84ff00,#a715c6,#032700,#120c00, #ff00a8,#004eff,#484900,#001200, #c600ff,#d00000,#490202,#121100, #6b2aff,#e8e500,#570202,#12000a, #e4ff00,#ad7200,#032700,#000112, #ff0000,#7300cc,#484900,#00120a // setup colour changing system - start at random poiunt in array var mySwitch Math.floor(Math.random() * (dayColours.length)); // pick a new array of colours from the colourset - currently incremental - and set the current function changeColours() { // test time of day var now new Date(); if ( (now.getHours() > times.sunrise.getHours()) && (now.getHours() times.sunset.getHours()) ) { // daytime colours dayColoursmySwitch; } else if ( (now.getHours() times.sunrise.getHours()) && (now.getMinutes() > times.sunrise.getMinutes()) ) { // daytime colours dayColoursmySwitch; } else if ( (now.getHours() times.sunset.getHours()) && (now.getMinutes() times.sunset.getMinutes()) ) { // daytime colours dayColoursmySwitch; } else { // nightime colours nightColoursmySwitch; } // increment mySwitch by an even number + 1 to allow for guaranteed alternating effects mySwitch + 1 + (2 * Math.floor(Math.random() * (dayColours.length / 2))); if (mySwitch > dayColours.length) { mySwitch - dayColours.length; } // loop around if we have reached the end // set the target colour equal to the current colour per petal so nextColours() produces the correct fade for(var i 0; i noRings; i++) { for(var j 0; j noPetals; j++) { flowerColour2ij flowerColourij; } } step1; nextColours(); // start the grand loop afresh to produce a smooth fade and force new colour targets } // start the grand loop setInterval(iterateFlower,25); // start the automatic colourset changer setInterval(changeColours,300000); /script>/html>
Port 443
HTTP/1.1 200 OKConnection: Keep-AliveKeep-Alive: timeout5, max100content-type: text/html; charsetUTF-8content-length: 17079date: Mon, 04 Nov 2024 12:23:00 GMTserver: LiteSpeed !DOCTYPE HTML>html> head> style> body { margin: 0px; padding: 0px; background: #000000; } .centered { position: absolute; top: 50%; left: 50%; margin-right: -50%; transform: translate(-50%, -50%) } /style> /head> body onresizeinitSize();forceRedraw();> canvas idmyCanvas width100% height100% classcentered onClickchangeColours();>/canvas> /body> script typetext/javascript srcsuncalc-master/suncalc.js>/script> script typetext/javascript> // use suncalc to do an initial sunrise/set calculation var latitude -0.5704; var longitude 51.2362; var times SunCalc.getTimes(new Date(), longitude, latitude); function recalculateSunrise() { times SunCalc.getTimes(new Date(), longitude, latitude); } // recalculate once a day setInterval(recalculateSunrise,86400000); // do some basic setup grabbing the canvas var canvas document.getElementById(myCanvas); var ctx canvas.getContext(2d); function initSize() { canvas.width window.innerWidth || document.body.clientWidth, canvas.height window.innerHeight || document.body.clientHeight; } initSize(); // debug functionality function beep() { var snd new Audio(data:audio/wav;base64,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qJrx4KOQjahZxWbcZgztj2c49nKmkId44S71j0c8eV9yDK6uPRzx5X18eDvjvQ6yKo9ZSS6l//8elePK/Lf//IInrOF/FvDoADYAGBMGb7FtErm5MXMlmPAJQVgWta7Zx2go+8xJ0UiCb8LHHdftWyLJE0QIAIsI+UbXu67dZMjmgDGCGl1H+vpF4NSDckSIkk7Vd+sxEhBQMRU8j/12UIRhzSaUdQ+rQU5kGeFxm+hb1oh6pWWmv3uvmReDl0UnvtapVaIzo1jZbf/pD6ElLqSX+rUmOQNpJFa/r+sa4e/pBlAABoAAAAA3CUgShLdGIxsY7AUABPRrgCABdDuQ5GC7DqPQCgbbJUAoRSUj+NIEig0YfyWUho1VBBBA//uQZB4ABZx5zfMakeAAAAmwAAAAF5F3P0w9GtAAACfAAAAAwLhMDmAYWMgVEG1U0FIGCBgXBXAtfMH10000EEEEEECUBYln03TTTdNBDZopopYvrTTdNa325mImNg3TTPV9q3pmY0xoO6bv3r00y+IDGid/9aaaZTGMuj9mpu9Mpio1dXrr5HERTZSmqU36A3CumzN/9Robv/Xx4v9ijkSRSNLQhAWumap82WRSBUqXStV/YcS+XVLnSS+WLDroqArFkMEsAS+eWmrUzrO0oEmE40RlMZ5+ODIkAyKAGUwZ3mVKmcamcJnMW26MRPgUw6j+LkhyHGVGYjSUUKNpuJUQoOIAyDvEyG8S5yfK6dhZc0Tx1KI/gviKL6qvvFs1+bWtaz58uUNnryq6kt5RzOCkPWlVqVX2a/EEBUdU1KrXLf40GoiiFXK///qpoiDXrOgqDR38JB0bw7SoL+ZB9o1RCkQjQ2CBYZKd/+VJxZRRZlqSkKiws0WFxUyCwsKiMy7hUVFhIaCrNQsKkTIsLivwKKigsj8XYlwt/WKi2N4d//uQRCSAAjURNIHpMZBGYiaQPSYyAAABLAAAAAAAACWAAAAApUF/Mg+0aohSIRobBAsMlO//Kk4soosy1JSFRYWaLC4qZBYWFRGZdwqKiwkNBVmoWFSJkWFxX4FFRQWR+LsS4W/rFRb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VEFHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU291bmRib3kuZGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjAwNGh0dHA6Ly93d3cuc291bmRib3kuZGUAAAAAAAAAACU); snd.play(); } // alter the HSL values in HSL move function changeHueSatLumHSL(hsl, degree, satAmount, lumAmount) { hsl.h + degree; if (hsl.h > 360) { hsl.h - 360; } else if (hsl.h 0) { hsl.h + 360; } hsl.s + satAmount; if (hsl.s > 1) { hsl.s 1; } else if (hsl.s 0) { hsl.s 0; } hsl.l + lumAmount; if (hsl.l > 1) { hsl.l 1; } else if (hsl.l 0) { hsl.l 0; } return hsl; } // expects a string and returns an object function rgbToHSL(rgb) { var r parseInt(rgb.substr(1, 2), 16) / 255, g parseInt(rgb.substr(3, 2), 16) / 255, b parseInt(rgb.substr(5, 2), 16) / 255, cMax Math.max(r, g, b), cMin Math.min(r, g, b), delta cMax - cMin, l (cMax + cMin) / 2, h 0, s 0; if (delta 0) { h Math.floor(Math.random() * 360); } else if (cMax r) { h 60 * (((g - b) / delta) % 6); } else if (cMax g) { h 60 * (((b - r) / delta) + 2); } else { h 60 * (((r - g) / delta) + 4); } if (delta 0) { s 0; } else { s (delta/(1-Math.abs(2*l - 1))) } return { h: h, s: s, l: l } } // expects an object and returns a string function hslToRGB(hsl) { var h hsl.h, s hsl.s, l hsl.l, c (1 - Math.abs(2*l - 1)) * s, x c * ( 1 - Math.abs((h / 60 ) % 2 - 1 )), m l - c/ 2, r, g, b; if (h 60) { r c; g x; b 0; } else if (h 120) { r x; g c; b 0; } else if (h 180) { r 0; g c; b x; } else if (h 240) { r 0; g x; b c; } else if (h 300) { r x; g 0; b c; } else { r c; g 0; b x; } r normalize_rgb_value(r, m); g normalize_rgb_value(g, m); b normalize_rgb_value(b, m); return rgbToHex(r,g,b); } function normalize_rgb_value(colour, m) { colour Math.floor((colour + m) * 255); if (colour 0) { colour 0; } return colour; } function rgbToHex(r, g, b) { return # + ((1 24) + (r 16) + (g 8) + b).toString(16).slice(1); } // check function needed to place petals alternately function isEven(n) { return n parseFloat(n)? !(n%2) : void 0; } // petal object/draw function function petal(innerRadius,size,position,totalPetals,offset) { // generate geometry values on init // x cx + r * cos(a) // y cy + r * sin(a) this.x (canvas.width/2) + innerRadius * Math.cos((position+offset)*2*Math.PI/totalPetals); this.y (canvas.height/2) + innerRadius * Math.sin((position+offset)*2*Math.PI/totalPetals); this.xEnd (canvas.width/2) + (innerRadius + size) * Math.cos((position+offset)*2*Math.PI/totalPetals); this.yEnd (canvas.height/2) + (innerRadius + size) * Math.sin((position+offset)*2*Math.PI/totalPetals); this.xFocus1 (canvas.width/2) + (innerRadius + (size*petalProportionY)) * Math.cos(((position+offset)-petalProportionX)*2*Math.PI/totalPetals); this.yFocus1 (canvas.height/2) + (innerRadius + (size*petalProportionY)) * Math.sin(((position+offset)-petalProportionX)*2*Math.PI/totalPetals); this.xFocus2 (canvas.width/2) + (innerRadius + (size*petalProportionY)) * Math.cos(((position+offset)+petalProportionX)*2*Math.PI/totalPetals); this.yFocus2 (canvas.height/2) + (innerRadius + (size*petalProportionY)) * Math.sin(((position+offset)+petalProportionX)*2*Math.PI/totalPetals); this.draw function(fillColour){ ctx.beginPath(); ctx.moveTo(this.x, this.y); ctx.quadraticCurveTo(this.xFocus1, this.yFocus1, this.xEnd, this.yEnd); ctx.quadraticCurveTo(this.xFocus2, this.yFocus2, this.x, this.y); ctx.fillStyle fillColour; ctx.fill(); ctx.closePath(); } } // flower setup var noRings 4; var noPetals 24; var flower new Array(noRings); for(var i 0; i noRings; i++) { floweri new Array(noPetals); } var petalSize canvas.height/15; var petalProportionX 0.65; var petalProportionY 0.6; var petalRatio .85; var radius 10; // 3 colour arrays - current, initial, end var flowerColour new Array(noRings); for(var i 0; i noRings; i++) { flowerColouri new Array(noPetals); } var flowerColour1 new Array(noRings); for(var i 0; i noRings; i++) { flowerColour1i new Array(noPetals); } var flowerColour2 new Array(noRings); for(var i 0; i noRings; i++) { flowerColour2i new Array(noPetals); } // draw the arrays of petals function drawFlower() { if (flower00null) { // flower not yet created -> build flower object var radiusTemp radius; var petalSizeTemp petalSize; for(var i 0; i noRings; i++) { for(var j 0; j noPetals; j++) { if (isEven(i)) { var offset .5; } else { var offset 0; } flowerij new petal(radiusTemp,petalSizeTemp,j,noPetals,offset); } radiusTemp radiusTemp + petalSizeTemp*petalProportionY*petalRatio; petalSizeTemp petalSizeTemp * 2; } } else { // flower exists just redraw petals dont recalculate for(var i 0; i noRings; i++) { for(var j 0; j noPetals; j++) { flowerij.draw(hslToRGB(flowerColourij)); } } } } // allow a forced replot of the flower in case the window is resized function forceRedraw() { flower00null; drawFlower; } // initial colour setup to fade from black to colour targets based on the root colours function setColoursInit() { for(var i 0; i noRings; i++) { for(var j 0; j noPetals; j++) { flowerColourij rgbToHSL(#000000); flowerColour1ij rgbToHSL(#000000); flowerColour2ij changeHueSatLumHSL(rgbToHSL(coloursi),((Math.random()-.5)*60),((Math.random()-.5)*.3),((Math.random()-.5)*.3)); } } } // pick a new set of colour targets per petal based on the root colours function nextColours() { for(var i 0; i noRings; i++) { for(var j 0; j noPetals; j++) { flowerColour1ij flowerColour2ij; flowerColour2ij changeHueSatLumHSL(rgbToHSL(coloursi),((Math.random()-.5)*60),((Math.random()-.5)*.3),((Math.random()-.5)*.2)); } } } // initial greyscale colourset var colours #ffffff,#aaaaaa,#444444,#111111; // let the flowering commence setColoursInit(colours); drawFlower(); // setup running loop variables var step 1; var steps 256; // iterate the grand loop function iterateFlower() { for(var i 0; i noRings; i++) { for(var j 0; j noPetals; j++) { var hueChange flowerColour2ij.h-flowerColour1ij.h; if (hueChange > 180) { // check for wrong-direction hue shifts and reverse as needed hueChange - 360 ; } else if (hueChange -180) { hueChange + 360 ; } var newColour { // iterate colour change h: flowerColour1ij.h + step*(hueChange/steps), s: flowerColour1ij.s + step*((flowerColour2ij.s-flowerColour1ij.s)/steps), l: flowerColour1ij.l + step*((flowerColour2ij.l-flowerColour1ij.l)/steps), } if (newColour.h > 360) { // double check done nothing stupid - redundant now? newColour.h - 360; } else if (newColour.h 0) { newColour.h + 360; } flowerColourij newColour // done } } ctx.clearRect(0,0,canvas.width,canvas.height); // clear canvas to avoid aliased edges drawFlower(); step++; if (step > steps) { step1; nextColours(); } // reached the end of the grand loop, pick new colour targets } // colourset arrays var dayColours #eeeeee,#ffaaaa,#ffff00,#00ff00, #6666ff,#ddddff,#ffff00,#ffffdd, #ff0000,#ff8800,#ffff00,#00ff00, #ffff00,#ffdd00,#ffff00,#cc00cc, #0000FF,#ff00FF,#006600,#00ff00, #eeeeee,#ff0000,#c30007,#0018ff, #00fcff,#e7e7e7,#0006ff,#10ae00, #ff00ae,#0cff00,#f0f0f0,#f6ff00, #fc00ff,#900047,#f40000,#91ff8c, #fff000,#c000ff,#670029,#ff0000, #00ff06,#fd7575,#ffea00,#96ff00, #ff0000,#db00d3,#0018ff,#f6f6f6, #ff9600,#fff600,#eeeeee,#009607, #ffa902,#0000ff,#eeeeee,#d900e1, #f4f4f4,#7800ff,#0084ff,#66ff00, #ff0060,#ff0000,#037300,#f0ff00 // end of day var nightColours #0000ff,#9999ff,#555311,#13000f, #ffff00,#000099,#110033,#001100, #ff0000,#cc9900,#555500,#000011, #00ff00,#ccff00,#550030,#110000, #ff00ff,#007722,#003333,#131200, #ffa200,#466e00,#0f5b00,#000112, #0030ff,#61018d,#030041,#09120a, #9600ff,#bf3a00,#27003f,#110000, #fffc00,#c7008c,#022b52,#000112, #ff6000,#5e9a00,#4d3600,#001200, #84ff00,#a715c6,#032700,#120c00, #ff00a8,#004eff,#484900,#001200, #c600ff,#d00000,#490202,#121100, #6b2aff,#e8e500,#570202,#12000a, #e4ff00,#ad7200,#032700,#000112, #ff0000,#7300cc,#484900,#00120a // setup colour changing system - start at random poiunt in array var mySwitch Math.floor(Math.random() * (dayColours.length)); // pick a new array of colours from the colourset - currently incremental - and set the current function changeColours() { // test time of day var now new Date(); if ( (now.getHours() > times.sunrise.getHours()) && (now.getHours() times.sunset.getHours()) ) { // daytime colours dayColoursmySwitch; } else if ( (now.getHours() times.sunrise.getHours()) && (now.getMinutes() > times.sunrise.getMinutes()) ) { // daytime colours dayColoursmySwitch; } else if ( (now.getHours() times.sunset.getHours()) && (now.getMinutes() times.sunset.getMinutes()) ) { // daytime colours dayColoursmySwitch; } else { // nightime colours nightColoursmySwitch; } // increment mySwitch by an even number + 1 to allow for guaranteed alternating effects mySwitch + 1 + (2 * Math.floor(Math.random() * (dayColours.length / 2))); if (mySwitch > dayColours.length) { mySwitch - dayColours.length; } // loop around if we have reached the end // set the target colour equal to the current colour per petal so nextColours() produces the correct fade for(var i 0; i noRings; i++) { for(var j 0; j noPetals; j++) { flowerColour2ij flowerColourij; } } step1; nextColours(); // start the grand loop afresh to produce a smooth fade and force new colour targets } // start the grand loop setInterval(iterateFlower,25); // start the automatic colourset changer setInterval(changeColours,300000); /script>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]