added restart command

master
Kevin Froman 2019-09-20 11:25:12 -05:00
parent fbe1766aea
commit a7a5f88142
8 changed files with 64 additions and 8 deletions

View File

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

View File

@ -1,10 +1,12 @@
import os, filepaths import os, filepaths
def _safe_remove(path):
try:
os.remove(path)
except FileNotFoundError:
pass
def delete_run_files(): def delete_run_files():
try: _safe_remove(filepaths.public_API_host_file)
os.remove(filepaths.public_API_host_file) _safe_remove(filepaths.private_API_host_file)
except FileNotFoundError: _safe_remove(filepaths.daemon_mark_file)
pass
try:
os.remove(filepaths.private_API_host_file)
except FileNotFoundError:
pass

View File

@ -18,6 +18,10 @@
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 platform import platform
import os
import filepaths
DENIABLE_PEER_ADDRESS = "OVPCZLOXD6DC5JHX4EQ3PSOGAZ3T24F75HQLIUZSDSMYPEOXCPFA====" DENIABLE_PEER_ADDRESS = "OVPCZLOXD6DC5JHX4EQ3PSOGAZ3T24F75HQLIUZSDSMYPEOXCPFA===="
PASSWORD_LENGTH = 25 PASSWORD_LENGTH = 25
ONIONR_TAGLINE = 'Private P2P Communication - GPLv3 - https://Onionr.net' ONIONR_TAGLINE = 'Private P2P Communication - GPLv3 - https://Onionr.net'
@ -42,5 +46,8 @@ BLOCK_METADATA_LENGTHS = {'meta': 1000, 'sig': 200, 'signer': 200, 'time': 10, '
platform = platform.system() platform = platform.system()
if platform == 'Windows': if platform == 'Windows':
SCRIPT_NAME = 'run-windows.bat' SCRIPT_NAME = 'run-windows.bat'
else:
if os.path.exists(filepaths.daemon_mark_file):
SCRIPT_NAME = 'start-daemon.sh'
else: else:
SCRIPT_NAME = 'onionr.sh' SCRIPT_NAME = 'onionr.sh'

View File

@ -1,7 +1,9 @@
from utils import identifyhome from utils import identifyhome
import os
home = identifyhome.identify_home() home = identifyhome.identify_home()
if not home.endswith('/'): home += '/' if not home.endswith('/'): home += '/'
app_root = os.path.dirname(os.path.realpath(__file__)) + '/../../'
usage_file = home + 'disk-usage.txt' usage_file = home + 'disk-usage.txt'
block_data_location = home + 'blocks/' block_data_location = home + 'blocks/'
contacts_location = home + 'contacts/' contacts_location = home + 'contacts/'
@ -15,6 +17,7 @@ announce_cache = home + 'announcecache.dat'
export_location = home + 'block-export/' export_location = home + 'block-export/'
upload_list = home + 'upload-list.json' upload_list = home + 'upload-list.json'
config_file = home + 'config.json' config_file = home + 'config.json'
daemon_mark_file = app_root + '/daemon-true.txt'
tor_hs_address_file = home + 'hs/hostname' tor_hs_address_file = home + 'hs/hostname'

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

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'

View File

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

View File

@ -12,5 +12,7 @@ class TestFilePaths(unittest.TestCase):
def test_filepaths_main(self): def test_filepaths_main(self):
home = identifyhome.identify_home() home = identifyhome.identify_home()
self.assertTrue(filepaths.home.startswith(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() unittest.main()