From 0e6ab04996a6fe9e555e0be1ad5162731e545639 Mon Sep 17 00:00:00 2001 From: Kevin Froman Date: Mon, 14 Jan 2019 00:14:02 -0600 Subject: [PATCH] more work on serialization and communication, misc work on web, run files --- onionr.sh | 4 + onionr/proofofmemory.py | 29 ++++ onionr/serializeddata.py | 42 ++++++ onionr/static-data/www/private/index.html | 24 ++++ onionr/static-data/www/shared/main/stats.js | 30 +++++ onionr/static-data/www/shared/main/style.css | 126 ++++++++++++++++++ onionr/static-data/www/shared/misc.js | 12 ++ onionr/static-data/www/shared/onionr-icon.png | Bin 0 -> 5176 bytes onionr/static-data/www/shared/onionrblocks.js | 7 + start-daemon.sh | 5 + 10 files changed, 279 insertions(+) create mode 100755 onionr.sh create mode 100644 onionr/proofofmemory.py create mode 100644 onionr/serializeddata.py create mode 100644 onionr/static-data/www/private/index.html create mode 100644 onionr/static-data/www/shared/main/stats.js create mode 100644 onionr/static-data/www/shared/main/style.css create mode 100644 onionr/static-data/www/shared/misc.js create mode 100644 onionr/static-data/www/shared/onionr-icon.png create mode 100644 onionr/static-data/www/shared/onionrblocks.js create mode 100755 start-daemon.sh diff --git a/onionr.sh b/onionr.sh new file mode 100755 index 00000000..286a0f7f --- /dev/null +++ b/onionr.sh @@ -0,0 +1,4 @@ +#!/bin/sh +cd "$(dirname "$0")" +cd onionr/ +./onionr.py "$@" diff --git a/onionr/proofofmemory.py b/onionr/proofofmemory.py new file mode 100644 index 00000000..4b0b0fa7 --- /dev/null +++ b/onionr/proofofmemory.py @@ -0,0 +1,29 @@ +''' + Onionr - P2P Anonymous Storage Network + + This file handles proof of memory functionality +''' +''' + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +''' + +class ProofOfMemory: + def __init__(self, commInst): + self.communicator = commInst + return + + def checkRandomPeer(self): + return + def checkPeer(self, peer): + return \ No newline at end of file diff --git a/onionr/serializeddata.py b/onionr/serializeddata.py new file mode 100644 index 00000000..a7ff2e80 --- /dev/null +++ b/onionr/serializeddata.py @@ -0,0 +1,42 @@ +''' + Onionr - P2P Anonymous Storage Network + + This module serializes various data pieces for use in other modules, in particular the web api +''' +''' + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +''' + +import core, api, uuid, json + +class SerializedData: + def __init__(self, coreInst): + ''' + Serialized data is in JSON format: + { + 'success': bool, + 'foo': 'bar', + etc + } + ''' + assert isinstance(coreInst, core.Core) + self._core = coreInst + + def getStats(self): + '''Return statistics about our node''' + stats = {} + stats['uptime'] = self._core._utils.localCommand('getuptime') + stats['connectedNodes'] = self._core.daemonQueueSimple('connectedPeers') + stats['blockCount'] = len(self._core.getBlockList()) + return json.dumps(stats) diff --git a/onionr/static-data/www/private/index.html b/onionr/static-data/www/private/index.html new file mode 100644 index 00000000..58c14e3f --- /dev/null +++ b/onionr/static-data/www/private/index.html @@ -0,0 +1,24 @@ + + + + + + Onionr + + + + + + Onionr Web Control Panel +
+ Shutdown node +

Stats

+

Uptime:

+

Stored Blocks:

+

Connected nodes:

+

+        
+ + + + \ No newline at end of file diff --git a/onionr/static-data/www/shared/main/stats.js b/onionr/static-data/www/shared/main/stats.js new file mode 100644 index 00000000..4e856e5a --- /dev/null +++ b/onionr/static-data/www/shared/main/stats.js @@ -0,0 +1,30 @@ +/* + + Onionr - P2P Anonymous Storage Network + + This file loads stats to show on the main node web page + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see +*/ + +uptimeDisplay = document.getElementById('uptime') +connectedDisplay = document.getElementById('connectedNodes') +storedBlockDisplay = document.getElementById('storedBlocks') + +pass = window.location.hash.replace('#', '') + +stats = JSON.parse(httpGet('getstats', pass)) +uptimeDisplay.innerText = stats['uptime'] + ' seconds' +connectedDisplay.innerText = stats['connectedNodes'] +storedBlockDisplay.innerText = stats['blockCount'] \ No newline at end of file diff --git a/onionr/static-data/www/shared/main/style.css b/onionr/static-data/www/shared/main/style.css new file mode 100644 index 00000000..7b8f3c2e --- /dev/null +++ b/onionr/static-data/www/shared/main/style.css @@ -0,0 +1,126 @@ +body{ + background-color: #2c2b3f; + color: white; +} + +a, a:visited{ + color: white; +} +.center{ + text-align: center; +} +footer{ + margin-top: 2em; + margin-bottom: 0.5em; +} + +body{ + margin-left: 3em; + padding: 1em; +} +.onionrMenu{ + max-width: 25%; + margin-left: 2%; + margin-right: 10%; + font-family: sans-serif; +} +.onionrMenu li{ + list-style-type: none; + margin-top: 3px; + font-size: 125%; +} +.onionrMenu li:hover{ + color: red; +} +.box { + display: flex; + align-items:center; + } + .logo{ + max-width: 25%; + vertical-align: middle; + } + .logoText{ + font-family: sans-serif; + font-size: 2em; + margin-top: 1em; + margin-left: 1%; + } + .main{ + min-height: 500px; + } + +.content{ + margin-top: 3em; + margin-left: 0%; + margin-right: 40%; + background-color: white; + color: black; + padding-right: 5%; + padding-left: 3%; + padding-bottom: 2em; + padding-top: 0.5em; + border: 1px solid black; + border-radius: 10px; + min-height: 300px; +} +.content p{ + text-align: justify; +} +.content img{ + max-width: 35%; +} +.content a, .content a:visited{ + color: black; +} + +.stats{ + margin-top: 1em; + background-color: #0c1049; + padding: 5px; + margin-right: 45%; + font-family: sans-serif; +} +.statDesc{ + background-color: black; + padding: 5px; + margin-right: 1%; + margin-left: -5px; +} + +.stats noscript{ + color: blue; +} + +.statItem{ + padding-left: 10px; + float: right; + margin-right: 5px; +} + +.warn{ + color: orangered; +} + +@media only screen and (max-width: 640px) { + .onionrMenu{ + margin-left: 0%; + } + body{ + margin-left: 0em; + } + .content{ + margin-left: 1%; + margin-right: 2%; + } + .content img{ + max-width: 85%; + } + .stats{ + margin-right: 1%; + } + .statItem{ + float: initial; + display: block; + } +} diff --git a/onionr/static-data/www/shared/misc.js b/onionr/static-data/www/shared/misc.js new file mode 100644 index 00000000..1b7d6092 --- /dev/null +++ b/onionr/static-data/www/shared/misc.js @@ -0,0 +1,12 @@ +function httpGet(theUrl, webpass) { + var xmlHttp = new XMLHttpRequest() + xmlHttp.open( "GET", theUrl, false ) // false for synchronous request + xmlHttp.setRequestHeader('token', webpass) + xmlHttp.send( null ) + if (xmlHttp.status == 200){ + return xmlHttp.responseText + } + else{ + return ""; + } +} \ No newline at end of file diff --git a/onionr/static-data/www/shared/onionr-icon.png b/onionr/static-data/www/shared/onionr-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6662210da9ad16105c2c57a7662864fb9611fd09 GIT binary patch literal 5176 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 m9mFYB8@wGvU=V?#2>c&c /dev/null