+ Work on boards

* Handle ctrl-c better in main loop
This commit is contained in:
Kevin Froman 2019-04-20 17:55:54 -05:00
parent 705359d3a6
commit 2219be9ae3
No known key found for this signature in database
GPG Key ID: 0D414D0FE405B63B
6 changed files with 44 additions and 10 deletions

View File

@ -497,6 +497,11 @@ class API:
encrypt = False encrypt = False
bData = request.get_json(force=True) bData = request.get_json(force=True)
message = bData['message'] message = bData['message']
# Detect if message (block body) is not specified
if type(message) is None:
return 'failure', 406
subject = 'temp' subject = 'temp'
encryptType = '' encryptType = ''
sign = True sign = True

View File

@ -148,7 +148,7 @@ class OnionrCommunicatorDaemon:
self.shutdown = True self.shutdown = True
pass pass
logger.info('Goodbye.') logger.info('Goodbye. (Onionr is cleaning up, and will exit)')
try: try:
self.service_greenlets self.service_greenlets
except AttributeError: except AttributeError:

View File

@ -686,9 +686,13 @@ class Core:
return False return False
retData = False retData = False
if type(data) is None:
raise ValueError('Data cannot be none')
createTime = self._utils.getRoundedEpoch() createTime = self._utils.getRoundedEpoch()
# check nonce # check nonce
print(data)
dataNonce = self._utils.bytesToStr(self._crypto.sha3Hash(data)) dataNonce = self._utils.bytesToStr(self._crypto.sha3Hash(data))
try: try:
with open(self.dataNonceFile, 'r') as nonces: with open(self.dataNonceFile, 'r') as nonces:

View File

@ -18,7 +18,7 @@
along with this program. If not, see <https://www.gnu.org/licenses/>. along with this program. If not, see <https://www.gnu.org/licenses/>.
''' '''
import os, time, sys, platform, sqlite3 import os, time, sys, platform, sqlite3, signal
from threading import Thread from threading import Thread
import onionr, api, logger, communicator import onionr, api, logger, communicator
import onionrevents as events import onionrevents as events
@ -84,9 +84,12 @@ def daemon(o_inst):
logger.debug('Started communicator.') logger.debug('Started communicator.')
events.event('daemon_start', onionr = o_inst) events.event('daemon_start', onionr = o_inst)
try: while True:
while True: try:
time.sleep(3) time.sleep(3)
except KeyboardInterrupt:
o_inst.communicatorInst.shutdown = True
finally:
# Debug to print out used FDs (regular and net) # Debug to print out used FDs (regular and net)
#proc = psutil.Process() #proc = psutil.Process()
#print('api-files:',proc.open_files(), len(psutil.net_connections())) #print('api-files:',proc.open_files(), len(psutil.net_connections()))
@ -95,16 +98,19 @@ def daemon(o_inst):
break break
if o_inst.killed: if o_inst.killed:
break # Break out if sigterm for clean exit break # Break out if sigterm for clean exit
except KeyboardInterrupt:
pass signal.signal(signal.SIGINT, _ignore_sigint)
finally: o_inst.onionrCore.daemonQueueAdd('shutdown')
o_inst.onionrCore.daemonQueueAdd('shutdown') o_inst.onionrUtils.localCommand('shutdown')
o_inst.onionrUtils.localCommand('shutdown')
net.killTor() net.killTor()
time.sleep(3) time.sleep(3)
o_inst.deleteRunFiles() o_inst.deleteRunFiles()
return return
def _ignore_sigint(sig, frame):
return
def kill_daemon(o_inst): def kill_daemon(o_inst):
''' '''
Shutdown the Onionr daemon Shutdown the Onionr daemon

View File

@ -6,6 +6,9 @@ newPostForm = document.getElementById('addMsg')
function appendMessages(msg){ function appendMessages(msg){
var humanDate = new Date(0) var humanDate = new Date(0)
if (msg.length == 0){
return
}
var msg = JSON.parse(msg) var msg = JSON.parse(msg)
var dateEl = document.createElement('span') var dateEl = document.createElement('span')
var el = document.createElement('div') var el = document.createElement('div')
@ -46,5 +49,21 @@ document.getElementById('refreshFeed').onclick = function(){
} }
newPostForm.onsubmit = function(){ newPostForm.onsubmit = function(){
var message = document.getElementById('newMsgText').value
var postData = {'message': message, 'type': 'txt', 'encrypt': false}
postData = JSON.stringify(postData)
newPostForm.style.display = 'none'
fetch('/insertblock', {
method: 'POST',
body: postData,
headers: {
"content-type": "application/json",
"token": webpass
}})
.then((resp) => resp.text()) // Transform the data into json
.then(function(data) {
newPostForm.style.display = 'block'
alert('Queued for submission!')
})
return false return false
} }

View File

@ -16,7 +16,7 @@
Anonymous message board Anonymous message board
</p> </p>
<form method='POST' action='/' id='addMsg'> <form method='POST' action='/' id='addMsg'>
<textarea name='newMsgText' rows=10 cols=50 required minlength="2"></textarea> <textarea id='newMsgText' name='newMsgText' rows=10 cols=50 required minlength="2"></textarea>
<br><br> <br><br>
<input class='btn successBtn' value='Post' type='submit'> <input class='btn successBtn' value='Post' type='submit'>
</form> </form>