Browse Source

Removed Windows specific code

tags/release-5.1.0
Kevin Froman 1 month ago
parent
commit
272d7d7f74
11 changed files with 37 additions and 70 deletions
  1. +0
    -1
      .dockerignore
  2. +1
    -1
      README.md
  3. +1
    -1
      docs/usage/install.md
  4. +3
    -13
      src/bigbrother/ministry/ofexec.py
  5. +4
    -7
      src/etc/onionrvalues.py
  6. +27
    -10
      src/httpapi/miscclientapi/staticfiles.py
  7. +0
    -5
      src/onionrcommands/restartonionr.py
  8. +1
    -3
      src/onionrstatistics/serializeddata.py
  9. +0
    -2
      src/utils/identifyhome.py
  10. +0
    -1
      static-data/www/private/index.html
  11. +0
    -26
      static-data/www/private/js/windows.js

+ 0
- 1
.dockerignore View File

@@ -1,4 +1,3 @@
onionr/data/**/*
onionr/data
RUN-WINDOWS.bat
MY-RUN.sh

+ 1
- 1
README.md View File

@@ -132,7 +132,7 @@ Everyone is welcome to contribute. Help is wanted for the following:
* Development (Get in touch first)
* Creation of a shared lib for use from other languages and faster proof-of-work
* Android and IOS development
* Windows and Mac support (already partially supported, testers needed)
* Mac support (already partially supported, testers needed)
* Bug fixes and development of new features
* Testing
* Translations/localizations


+ 1
- 1
docs/usage/install.md View File

@@ -1,6 +1,6 @@
# Onionr Installation

The following steps work broadly speaking for Windows, Mac, and Linux.
The following steps work broadly speaking for WSL, Mac, and Linux.

1. Verify python3.7+ is installed: if not, see https://www.python.org/downloads/



+ 3
- 13
src/bigbrother/ministry/ofexec.py View File

@@ -26,19 +26,9 @@ from onionrexceptions import ArbitraryCodeExec

def block_system(cmd):
"""Prevent os.system except for whitelisted commands+contexts."""
allowed = 'taskkill /PID '
is_ok = False
if platform.system() == 'Windows':
if cmd.startswith(allowed):
for c in cmd.split(allowed)[1]:
if not c.isalnum() or c not in ('/', 'F', ' '):
break
else:
is_ok = True
if not is_ok:
logger.warn('POSSIBLE EXPLOIT DETECTED, SEE LOGS', terminal=True)
logger.warn(f'POSSIBLE EXPLOIT: shell command not in whitelist: {cmd}')
raise ArbitraryCodeExec('os.system command not in whitelist')
logger.warn('POSSIBLE EXPLOIT DETECTED, SEE LOGS', terminal=True)
logger.warn(f'POSSIBLE EXPLOIT: shell command not in whitelist: {cmd}')
raise ArbitraryCodeExec('os.system command not in whitelist')


def block_exec(event, info):


+ 4
- 7
src/etc/onionrvalues.py View File

@@ -67,13 +67,10 @@ MOTD_SIGN_KEY = "TRH763JURNY47QPBTTQ4LLPYCYQK6Q5YA33R6GANKZK5C5DKCIGQ"
"""Public key that signs update notifications."""
UPDATE_SIGN_KEY = "TRH763JURNY47QPBTTQ4LLPYCYQK6Q5YA33R6GANKZK5C5DKCIGQ"

pf = platform.system()
if pf == 'Windows':
SCRIPT_NAME = 'run-windows.bat'
if os.path.exists(filepaths.daemon_mark_file):
SCRIPT_NAME = 'start-daemon.sh'
else:
if os.path.exists(filepaths.daemon_mark_file):
SCRIPT_NAME = 'start-daemon.sh'
else:
SCRIPT_NAME = 'onionr.sh'
SCRIPT_NAME = 'onionr.sh'
if 'qubes' in platform.release().lower():
IS_QUBES = True

+ 27
- 10
src/httpapi/miscclientapi/staticfiles.py View File

@@ -1,9 +1,11 @@
'''
Onionr - Private P2P Communication
"""Onionr - Private P2P Communication

Register static file routes
'''
'''
Register static file routes
"""
import os
import mimetypes
from flask import Blueprint, send_from_directory
"""
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
@@ -16,10 +18,8 @@

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 os
import mimetypes
from flask import Blueprint, send_from_directory
"""


# Was having some mime type issues on windows, this appeared to fix it.
# we have no-sniff set, so if the mime types are invalid sripts can't load.
@@ -28,65 +28,82 @@ mimetypes.add_type('text/css', '.css')

static_files_bp = Blueprint('staticfiles', __name__)

root = os.path.dirname(os.path.realpath(__file__)) + '/../../../static-data/www/' # should be set to onionr install directory from onionr startup
# should be set to onionr install directory from onionr startup
root = os.path.dirname(os.path.realpath(__file__)) + \
'/../../../static-data/www/'


@static_files_bp.route('/onboarding/', endpoint='onboardingIndex')
def onboard():
return send_from_directory(f'{root}onboarding/', "index.html")


@static_files_bp.route('/onboarding/<path:path>', endpoint='onboarding')
def onboard_files(path):
return send_from_directory(f'{root}onboarding/', path)


@static_files_bp.route('/chat/', endpoint='chatIndex')
def chat_index():
return send_from_directory(root + 'chat/', "index.html")


@static_files_bp.route('/chat/<path:path>', endpoint='chat')
def load_chat(path):
return send_from_directory(root + 'chat/', path)


@static_files_bp.route('/board/', endpoint='board')
def loadBoard():
return send_from_directory(root + 'board/', "index.html")


@static_files_bp.route('/mail/<path:path>', endpoint='mail')
def loadMail(path):
return send_from_directory(root + 'mail/', path)


@static_files_bp.route('/mail/', endpoint='mailindex')
def loadMailIndex():
return send_from_directory(root + 'mail/', 'index.html')


@static_files_bp.route('/friends/<path:path>', endpoint='friends')
def loadContacts(path):
return send_from_directory(root + 'friends/', path)


@static_files_bp.route('/friends/', endpoint='friendsindex')
def loadContacts():
return send_from_directory(root + 'friends/', 'index.html')


@static_files_bp.route('/profiles/<path:path>', endpoint='profiles')
def loadContacts(path):
return send_from_directory(root + 'profiles/', path)


@static_files_bp.route('/profiles/', endpoint='profilesindex')
def loadContacts():
return send_from_directory(root + 'profiles/', 'index.html')


@static_files_bp.route('/board/<path:path>', endpoint='boardContent')
def boardContent(path):
return send_from_directory(root + 'board/', path)


@static_files_bp.route('/shared/<path:path>', endpoint='sharedContent')
def sharedContent(path):
return send_from_directory(root + 'shared/', path)


@static_files_bp.route('/', endpoint='onionrhome')
def hello():
# ui home
return send_from_directory(root + 'private/', 'index.html')


@static_files_bp.route('/private/<path:path>', endpoint='homedata')
def homedata(path):
return send_from_directory(root + 'private/', path)

+ 0
- 5
src/onionrcommands/restartonionr.py View File

@@ -5,7 +5,6 @@ Command to restart Onionr
import time
import os
import subprocess # nosec
import platform

from etc import onionrvalues
from etc import cleanup
@@ -36,10 +35,6 @@ SCRIPT_NAME = os.path.dirname(os.path.realpath(

def restart():
"""Tell the Onionr daemon to restart."""
if platform.system() == 'Windows':
logger.warn('Cannot restart Onionr on Windows. Run stop and manually restart.', terminal=True)
return

logger.info('Restarting Onionr', terminal=True)

# On platforms where we can, fork out to prevent locking


+ 1
- 3
src/onionrstatistics/serializeddata.py View File

@@ -6,7 +6,7 @@ from typing import TYPE_CHECKING

from gevent import sleep

from psutil import Process, WINDOWS
from psutil import Process
import ujson as json

from coredb import blockmetadb
@@ -49,8 +49,6 @@ class SerializedData:
proc = Process()

def get_open_files():
if WINDOWS:
return proc.num_handles()
return proc.num_fds()

try:


+ 0
- 2
src/utils/identifyhome.py View File

@@ -33,8 +33,6 @@ def identify_home() -> str:
system = platform.system()
if system == 'Linux':
path = os.path.expanduser('~') + '/.local/share/onionr/'
elif system == 'Windows':
path = os.path.expanduser('~') + '\\AppData\\Local\\onionr\\'
elif system == 'Darwin':
path = os.path.expanduser('~' +
'/Library/Application Support/onionr/')


+ 0
- 1
static-data/www/private/index.html View File

@@ -32,7 +32,6 @@
<script defer src="/private/js/console.js"></script>
<script defer src="/private/js/motd.js"></script>
<script defer src="/shared/navbar.js"></script>
<script defer src="/private/js/windows.js"></script>
<script defer src="/shared/sidebar/sidebar.js"></script>
<script defer src="/shared/main/loadTransport.js"></script>
<script>alert("Content security policy appears to not be working. Your browser security is weak!")</script>


+ 0
- 26
static-data/www/private/js/windows.js View File

@@ -1,26 +0,0 @@
/*
Onionr - Private P2P Communication

Hide restart button if node OS is windows
since restart is broken on windows

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/>.
*/
var hideRestartIfWindows = function(){
if (onionrNodeOS === 'windows'){
document.getElementById('restartNode').style.display = 'none'
}
}

setTimeout(function(){hideRestartIfWindows()}, 500)

Loading…
Cancel
Save