more work on serialization and communication, misc work on web, run files
This commit is contained in:
parent
22cece2b2c
commit
0e6ab04996
4
onionr.sh
Executable file
4
onionr.sh
Executable file
@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
cd "$(dirname "$0")"
|
||||
cd onionr/
|
||||
./onionr.py "$@"
|
29
onionr/proofofmemory.py
Normal file
29
onionr/proofofmemory.py
Normal file
@ -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 <https://www.gnu.org/licenses/>.
|
||||
'''
|
||||
|
||||
class ProofOfMemory:
|
||||
def __init__(self, commInst):
|
||||
self.communicator = commInst
|
||||
return
|
||||
|
||||
def checkRandomPeer(self):
|
||||
return
|
||||
def checkPeer(self, peer):
|
||||
return
|
42
onionr/serializeddata.py
Normal file
42
onionr/serializeddata.py
Normal file
@ -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 <https://www.gnu.org/licenses/>.
|
||||
'''
|
||||
|
||||
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)
|
24
onionr/static-data/www/private/index.html
Normal file
24
onionr/static-data/www/private/index.html
Normal file
@ -0,0 +1,24 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset='utf-8'>
|
||||
<title>
|
||||
Onionr
|
||||
</title>
|
||||
<link rel='stylesheet' href='/shared/main/style.css'>
|
||||
</head>
|
||||
<body>
|
||||
<img class='logo' src='/shared/onionr-icon.png' alt='onionr logo'>
|
||||
<span class='logoText'>Onionr Web Control Panel</span>
|
||||
<div class='content'>
|
||||
<a href='shutdown'>Shutdown node</a>
|
||||
<h2>Stats</h2>
|
||||
<p>Uptime: <span id='uptime'></span></p>
|
||||
<p>Stored Blocks: <span id='storedBlocks'></span></p>
|
||||
<p>Connected nodes:</p>
|
||||
<pre id='connectedNodes'></pre>
|
||||
</div>
|
||||
</body>
|
||||
<script src='/shared/misc.js'></script>
|
||||
<script src='/shared/main/stats.js'></script>
|
||||
</html>
|
30
onionr/static-data/www/shared/main/stats.js
Normal file
30
onionr/static-data/www/shared/main/stats.js
Normal file
@ -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 <https://www.gnu.org/licenses/>
|
||||
*/
|
||||
|
||||
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']
|
126
onionr/static-data/www/shared/main/style.css
Normal file
126
onionr/static-data/www/shared/main/style.css
Normal file
@ -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;
|
||||
}
|
||||
}
|
12
onionr/static-data/www/shared/misc.js
Normal file
12
onionr/static-data/www/shared/misc.js
Normal file
@ -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 "";
|
||||
}
|
||||
}
|
BIN
onionr/static-data/www/shared/onionr-icon.png
Normal file
BIN
onionr/static-data/www/shared/onionr-icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.1 KiB |
7
onionr/static-data/www/shared/onionrblocks.js
Normal file
7
onionr/static-data/www/shared/onionrblocks.js
Normal file
@ -0,0 +1,7 @@
|
||||
class Block {
|
||||
constructor(hash, raw) {
|
||||
this.hash = hash;
|
||||
this.raw = raw;
|
||||
}
|
||||
}
|
||||
|
5
start-daemon.sh
Executable file
5
start-daemon.sh
Executable file
@ -0,0 +1,5 @@
|
||||
#!/usr/bin/bash
|
||||
cd "$(dirname "$0")"
|
||||
echo "starting Onionr daemon..."
|
||||
echo "run onionr.sh stop to stop the daemon, or onionr.sh start to get output"
|
||||
nohup ./onionr.sh start & disown > /dev/null
|
Loading…
Reference in New Issue
Block a user