diff --git a/WSSSnoop.html b/WSSSnoop.html new file mode 100755 index 0000000..620fe15 --- /dev/null +++ b/WSSSnoop.html @@ -0,0 +1,165 @@ +<html> +<head> + <title>WSSSnoop</title> + <style type="text/css"> + body{ + background-color: #333; + color:#bbb; + margin:0; + + } + .topBar { + background-color: #444; + position:fixed; + top:0; + width:100%; + z-index:100; + padding: 10px; + } + .topTitle{ + position:absolute; + top:10px; + left:10px; + color:#7fffd4; + } + .topcorner{ + position:absolute; + top:10px; + right:30px; + } + #cswsh-output{ + margin-top: 50px !important; + font-family: 'Source Code Pro', + sans-serif;font-size: 0.7em; + padding-bottom: 50px; + padding-left: 10px; + } + .bottomBar { + background-color: #444; + position:fixed; + bottom:0; + width:100%; + z-index:100; + padding: 10px; + height: 20px; + } + .bottomClear{ + position:absolute; + bottom:10px; + right:30px; + } + a:link,a:visited { + color: #00ccff; + text-decoration: none; + } + /* mouse over link */ + a:hover, a:active { + color: #99ebff; + text-decoration: none; + } + </style> + <link href='http://fonts.googleapis.com/css?family=Source+Code+Pro' rel='stylesheet' type='text/css'> +</head> +<body> + <div class="topBar"> + <div class="topTitle"> + WSSSnoop + </div> + <center> + <input type="text" name="cswshURL" id="cswshURL" value="" placeholder="wss://snoop.me"> + <input type="button" id="startSnoop" value="start snooping" onclick="checkCSWSH()"/> + <input type="button" id="stopSnoop" value="stop snooping" style="display:none" onclick="stopSnooping()"/> + <br /> + <div class="topcorner"> + Status: <div id="status" style="display:inline-block; color:red"/>Offline</div> + </div> + </center> + </div> + + <div id="cswsh-output" ></div> + + <div class="bottomBar"> + By <a href="https://rossmarks.uk" target="_new">Ross Marks</a> + <div class="bottomClear"> + <input type="button" id="clearPage" value="clear page" onclick="clearPage();"/> + </div> + </div> + + <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> + <script> + + function clearPage(){ + $('#cswsh-output').empty(); + $('html, body').scrollTop($(document).height()); + } + + function stopSnooping(){ + $('#startSnoop').show(); + $('#stopSnoop').hide(); + websocket.close(); + } + + function checkCSWSH(){ + var wsUri = $("#cswshURL").val(); + $('#startSnoop').hide(); + $('#stopSnoop').show(); + statusWaiting(); + websocket = new WebSocket(wsUri); + websocket.onopen = function(evt) { onOpen(evt) }; + websocket.onclose = function(evt) { onClose(evt) }; + websocket.onmessage = function(evt) { onMessage(evt) }; + websocket.onerror = function(evt) { onError(evt) }; + } + + function onOpen(evt){ + writeToScreen("CONNECTED"); + statusConnected() + doSend("origin policy unchecked!"); + } + + function onClose(evt){ + writeToScreen("DISCONNECTED"); + statusOffline() + if( $('#stopSnoop').css('display') != 'none' ){ + checkCSWSH() + } + } + + function onMessage(evt){ + writeToScreen('<span style="color: #A7E734;">RESPONSE: ' + evt.data+'</span>'); + //websocket.close(); + } + + function onError(evt){ + writeToScreen('<span style="color: red;">ERROR:</span> ' + evt.data); + } + + function doSend(message){ + writeToScreen("SENT: " + message); + websocket.send(message); + } + + function writeToScreen(message){ + output = document.getElementById("cswsh-output"); + var pre = document.createElement("div"); + pre.style.wordWrap = "break-word"; + pre.innerHTML = message; + output.appendChild(pre); + $('html, body').scrollTop($(document).height()); + } + + function statusConnected(){ + $('#status').html("Connected"); + $('#status').css("color","lightgreen"); + } + function statusOffline(){ + $('#status').html("Offline"); + $('#status').css("color","red"); + } + function statusWaiting(){ + $('#status').html("Waiting..."); + $('#status').css("color","yellow"); + } + </script> +</body> +</html> \ No newline at end of file diff --git a/WSSSnoop.html b/WSSSnoop.html new file mode 100755 index 0000000..620fe15 --- /dev/null +++ b/WSSSnoop.html @@ -0,0 +1,165 @@ +<html> +<head> + <title>WSSSnoop</title> + <style type="text/css"> + body{ + background-color: #333; + color:#bbb; + margin:0; + + } + .topBar { + background-color: #444; + position:fixed; + top:0; + width:100%; + z-index:100; + padding: 10px; + } + .topTitle{ + position:absolute; + top:10px; + left:10px; + color:#7fffd4; + } + .topcorner{ + position:absolute; + top:10px; + right:30px; + } + #cswsh-output{ + margin-top: 50px !important; + font-family: 'Source Code Pro', + sans-serif;font-size: 0.7em; + padding-bottom: 50px; + padding-left: 10px; + } + .bottomBar { + background-color: #444; + position:fixed; + bottom:0; + width:100%; + z-index:100; + padding: 10px; + height: 20px; + } + .bottomClear{ + position:absolute; + bottom:10px; + right:30px; + } + a:link,a:visited { + color: #00ccff; + text-decoration: none; + } + /* mouse over link */ + a:hover, a:active { + color: #99ebff; + text-decoration: none; + } + </style> + <link href='http://fonts.googleapis.com/css?family=Source+Code+Pro' rel='stylesheet' type='text/css'> +</head> +<body> + <div class="topBar"> + <div class="topTitle"> + WSSSnoop + </div> + <center> + <input type="text" name="cswshURL" id="cswshURL" value="" placeholder="wss://snoop.me"> + <input type="button" id="startSnoop" value="start snooping" onclick="checkCSWSH()"/> + <input type="button" id="stopSnoop" value="stop snooping" style="display:none" onclick="stopSnooping()"/> + <br /> + <div class="topcorner"> + Status: <div id="status" style="display:inline-block; color:red"/>Offline</div> + </div> + </center> + </div> + + <div id="cswsh-output" ></div> + + <div class="bottomBar"> + By <a href="https://rossmarks.uk" target="_new">Ross Marks</a> + <div class="bottomClear"> + <input type="button" id="clearPage" value="clear page" onclick="clearPage();"/> + </div> + </div> + + <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> + <script> + + function clearPage(){ + $('#cswsh-output').empty(); + $('html, body').scrollTop($(document).height()); + } + + function stopSnooping(){ + $('#startSnoop').show(); + $('#stopSnoop').hide(); + websocket.close(); + } + + function checkCSWSH(){ + var wsUri = $("#cswshURL").val(); + $('#startSnoop').hide(); + $('#stopSnoop').show(); + statusWaiting(); + websocket = new WebSocket(wsUri); + websocket.onopen = function(evt) { onOpen(evt) }; + websocket.onclose = function(evt) { onClose(evt) }; + websocket.onmessage = function(evt) { onMessage(evt) }; + websocket.onerror = function(evt) { onError(evt) }; + } + + function onOpen(evt){ + writeToScreen("CONNECTED"); + statusConnected() + doSend("origin policy unchecked!"); + } + + function onClose(evt){ + writeToScreen("DISCONNECTED"); + statusOffline() + if( $('#stopSnoop').css('display') != 'none' ){ + checkCSWSH() + } + } + + function onMessage(evt){ + writeToScreen('<span style="color: #A7E734;">RESPONSE: ' + evt.data+'</span>'); + //websocket.close(); + } + + function onError(evt){ + writeToScreen('<span style="color: red;">ERROR:</span> ' + evt.data); + } + + function doSend(message){ + writeToScreen("SENT: " + message); + websocket.send(message); + } + + function writeToScreen(message){ + output = document.getElementById("cswsh-output"); + var pre = document.createElement("div"); + pre.style.wordWrap = "break-word"; + pre.innerHTML = message; + output.appendChild(pre); + $('html, body').scrollTop($(document).height()); + } + + function statusConnected(){ + $('#status').html("Connected"); + $('#status').css("color","lightgreen"); + } + function statusOffline(){ + $('#status').html("Offline"); + $('#status').css("color","red"); + } + function statusWaiting(){ + $('#status').html("Waiting..."); + $('#status').css("color","yellow"); + } + </script> +</body> +</html> \ No newline at end of file diff --git a/WSSSnoop.png b/WSSSnoop.png new file mode 100755 index 0000000..2181614 --- /dev/null +++ b/WSSSnoop.png Binary files differ