Browse Source

added restart command

merge-requests/25/head
Kevin Froman 9 months ago
parent
commit
a7a5f88142
8 changed files with 64 additions and 8 deletions
  1. +0
    -1
      onionr.sh
  2. +8
    -6
      onionr/etc/cleanup/__init__.py
  3. +8
    -1
      onionr/etc/onionrvalues.py
  4. +3
    -0
      onionr/filepaths/__init__.py
  5. +2
    -0
      onionr/onionrcommands/parser/arguments.py
  6. +40
    -0
      onionr/onionrcommands/restartonionr.py
  7. +1
    -0
      start-daemon.sh
  8. +2
    -0
      tests/test_filepaths.py

+ 0
- 1
onionr.sh View File

@@ -1,6 +1,5 @@
#!/bin/sh
ORIG_ONIONR_RUN_DIR=`pwd`
export ORIG_ONIONR_RUN_DIR
cd "$(dirname "$0")"
cd onionr/
./__init__.py "$@"

+ 8
- 6
onionr/etc/cleanup/__init__.py View File

@@ -1,10 +1,12 @@
import os, filepaths
def delete_run_files():

def _safe_remove(path):
try:
os.remove(filepaths.public_API_host_file)
os.remove(path)
except FileNotFoundError:
pass
try:
os.remove(filepaths.private_API_host_file)
except FileNotFoundError:
pass

def delete_run_files():
_safe_remove(filepaths.public_API_host_file)
_safe_remove(filepaths.private_API_host_file)
_safe_remove(filepaths.daemon_mark_file)

+ 8
- 1
onionr/etc/onionrvalues.py View File

@@ -18,6 +18,10 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
'''
import platform
import os

import filepaths

DENIABLE_PEER_ADDRESS = "OVPCZLOXD6DC5JHX4EQ3PSOGAZ3T24F75HQLIUZSDSMYPEOXCPFA===="
PASSWORD_LENGTH = 25
ONIONR_TAGLINE = 'Private P2P Communication - GPLv3 - https://Onionr.net'
@@ -43,4 +47,7 @@ platform = platform.system()
if platform == 'Windows':
SCRIPT_NAME = 'run-windows.bat'
else:
SCRIPT_NAME = 'onionr.sh'
if os.path.exists(filepaths.daemon_mark_file):
SCRIPT_NAME = 'start-daemon.sh'
else:
SCRIPT_NAME = 'onionr.sh'

+ 3
- 0
onionr/filepaths/__init__.py View File

@@ -1,7 +1,9 @@
from utils import identifyhome
import os
home = identifyhome.identify_home()
if not home.endswith('/'): home += '/'

app_root = os.path.dirname(os.path.realpath(__file__)) + '/../../'
usage_file = home + 'disk-usage.txt'
block_data_location = home + 'blocks/'
contacts_location = home + 'contacts/'
@@ -15,6 +17,7 @@ announce_cache = home + 'announcecache.dat'
export_location = home + 'block-export/'
upload_list = home + 'upload-list.json'
config_file = home + 'config.json'
daemon_mark_file = app_root + '/daemon-true.txt'

tor_hs_address_file = home + 'hs/hostname'



+ 2
- 0
onionr/onionrcommands/parser/arguments.py View File

@@ -26,6 +26,7 @@ from .. import pubkeymanager # commands to add or change id
from .. import resettor # commands to reset the tor data directory or transport keypair
from .. import resetplugins # command to reinstall default plugins
from .. import softreset # command to delete onionr blocks
from .. import restartonionr # command to restart Onionr
import onionrexceptions
from onionrutils import importnewblocks # func to import new blocks
import onionrevents as events
@@ -38,6 +39,7 @@ def get_arguments()->dict:
('version',): version.version,
('start', 'daemon'): daemonlaunch.start,
('stop', 'kill'): daemonlaunch.kill_daemon,
('restart',): restartonionr.restart,
('add-address', 'addaddress', 'addadder'): keyadders.add_address,
('openhome', 'gui', 'openweb', 'open-home', 'open-web'): openwebinterface.open_home,
('add-site', 'addsite', 'addhtml', 'add-html'): filecommands.add_html,


+ 40
- 0
onionr/onionrcommands/restartonionr.py View File

@@ -0,0 +1,40 @@
"""
Onionr - Private P2P Communication

Command to restart Onionr
"""
"""
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 time
import os
import subprocess
import platform

from etc import onionrvalues
from onionrutils import localcommand
import logger

from . import daemonlaunch

SCRIPT_NAME = os.path.dirname(os.path.realpath(__file__)) + f'/../../{onionrvalues.SCRIPT_NAME}'

def restart():
logger.info('Restarting Onionr', terminal=True)
daemonlaunch.kill_daemon()
while localcommand.local_command('ping', maxWait=8) == 'pong!':
time.sleep(0.3)
subprocess.Popen([SCRIPT_NAME, 'start'])

restart.onionr_help = 'Gracefully restart Onionr'

+ 1
- 0
start-daemon.sh View File

@@ -2,4 +2,5 @@
cd "$(dirname "$0")"
echo "starting Onionr daemon..."
echo "run onionr.sh stop to stop the daemon"
touch daemon-true.txt
exec nohup ./onionr.sh start > /dev/null 2>&1 & disown

+ 2
- 0
tests/test_filepaths.py View File

@@ -12,5 +12,7 @@ class TestFilePaths(unittest.TestCase):
def test_filepaths_main(self):
home = identifyhome.identify_home()
self.assertTrue(filepaths.home.startswith(home))
def test_app_root_path(self):
self.assertTrue(os.path.exists(filepaths.app_root + '/onionr.sh'))

unittest.main()

Loading…
Cancel
Save