Rename project and fix bugs

This commit is contained in:
jacob.eva 2024-09-16 15:41:37 +01:00
parent f580ab0c6d
commit a1bbb1ae14
No known key found for this signature in database
GPG Key ID: 0B92E083BBCCAA1E
24 changed files with 139 additions and 134 deletions

View File

@ -6,7 +6,7 @@ apk:
mkdir -p ./dist
fetchapk:
cp ./sbapp/bin/sideband-*-release-unsigned.apk ./dist/
cp ./sbapp/bin/occ-*-release-unsigned.apk ./dist/
install:
make -C sbapp install
@ -51,8 +51,8 @@ sign_release:
@read VOID
if [ ! -f "./key.keystore" ]; then keytool -genkey -v -keystore key.keystore -keyalg RSA -keysize 4096 -validity 10000 -alias app; fi
VERSION=$(shell ls ./dist/*.apk | cut -d\- -f 2 | head -n 1); \
zipalign -p 4 ./dist/sideband-*-release-unsigned.apk ./dist/sideband-$$VERSION-release.apk; \
apksigner sign --ks-key-alias app --ks key.keystore ./dist/sideband-$$VERSION-release.apk; \
zipalign -p 4 ./dist/occ-*-release-unsigned.apk ./dist/occ-$$VERSION-release.apk; \
apksigner sign --ks-key-alias app --ks key.keystore ./dist/occ-$$VERSION-release.apk; \
upload:
@echo Ready to publish release, hit enter to continue

View File

@ -20,33 +20,33 @@ pacthfiles: patchsdl injectxml patchpycodec2
patchsdl:
# Pach USB HID behaviour
cp patches/HIDDeviceUSB.java .buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/bootstrap_builds/sdl2/jni/SDL/android-project/app/src/main/java/org/libsdl/app/HIDDeviceUSB.java
cp patches/HIDDeviceUSB.java .buildozer/android/platform/build-arm64-v8a_armeabi-v7a/dists/sideband/src/main/java/org/libsdl/app/HIDDeviceUSB.java
cp patches/HIDDeviceUSB.java .buildozer/android/platform/build-arm64-v8a_armeabi-v7a/dists/sideband/jni/SDL/android-project/app/src/main/java/org/libsdl/app/HIDDeviceUSB.java
cp patches/HIDDeviceUSB.java .buildozer/android/platform/build-arm64-v8a_armeabi-v7a/dists/occ/src/main/java/org/libsdl/app/HIDDeviceUSB.java
cp patches/HIDDeviceUSB.java .buildozer/android/platform/build-arm64-v8a_armeabi-v7a/dists/occ/jni/SDL/android-project/app/src/main/java/org/libsdl/app/HIDDeviceUSB.java
# Pach service loader
cp patches/PythonService.java .buildozer/android/platform/python-for-android/pythonforandroid/bootstraps/common/build/src/main/java/org/kivy/android/PythonService.java
cp patches/PythonService.java .buildozer/android/platform/build-arm64-v8a_armeabi-v7a/build/bootstrap_builds/sdl2/src/main/java/org/kivy/android/PythonService.java
cp patches/PythonService.java .buildozer/android/platform/build-arm64-v8a_armeabi-v7a/dists/sideband/src/main/java/org/kivy/android/PythonService.java
cp patches/PythonService.java .buildozer/android/platform/build-arm64-v8a_armeabi-v7a/dists/occ/src/main/java/org/kivy/android/PythonService.java
patchpycodec2:
patchelf --replace-needed libcodec2.so.1.2 libcodec2.so .buildozer/android/platform/build-arm64-v8a_armeabi-v7a/dists/sideband/_python_bundle__arm64-v8a/_python_bundle/site-packages/pycodec2/pycodec2.so
patchelf --replace-needed libcodec2.so.1.2 libcodec2.so .buildozer/android/platform/build-arm64-v8a_armeabi-v7a/dists/sideband/_python_bundle__armeabi-v7a/_python_bundle/site-packages/pycodec2/pycodec2.so
patchelf --replace-needed libcodec2.so.1.2 libcodec2.so .buildozer/android/platform/build-arm64-v8a_armeabi-v7a/dists/occ/_python_bundle__arm64-v8a/_python_bundle/site-packages/pycodec2/pycodec2.so
patchelf --replace-needed libcodec2.so.1.2 libcodec2.so .buildozer/android/platform/build-arm64-v8a_armeabi-v7a/dists/occ/_python_bundle__armeabi-v7a/_python_bundle/site-packages/pycodec2/pycodec2.so
injectxml:
# mkdir /home/markqvist/.local/lib/python3.11/site-packages/pythonforandroid/bootstraps/sdl2/build/src/main/xml
# Inject XML on arm64-v8a
mkdir -p .buildozer/android/platform/build-arm64-v8a_armeabi-v7a/dists/sideband/src/main/res/xml
mkdir -p .buildozer/android/platform/build-arm64-v8a_armeabi-v7a/dists/sideband/templates
cp patches/device_filter.xml .buildozer/android/platform/build-arm64-v8a_armeabi-v7a/dists/sideband/src/main/res/xml/
cp patches/file_paths.xml .buildozer/android/platform/build-arm64-v8a_armeabi-v7a/dists/sideband/src/main/res/xml/
cp patches/AndroidManifest.tmpl.xml .buildozer/android/platform/build-arm64-v8a_armeabi-v7a/dists/sideband/templates/
cp patches/p4a_build.py .buildozer/android/platform/build-arm64-v8a_armeabi-v7a/dists/sideband/build.py
mkdir -p .buildozer/android/platform/build-arm64-v8a_armeabi-v7a/dists/occ/src/main/res/xml
mkdir -p .buildozer/android/platform/build-arm64-v8a_armeabi-v7a/dists/occ/templates
cp patches/device_filter.xml .buildozer/android/platform/build-arm64-v8a_armeabi-v7a/dists/occ/src/main/res/xml/
cp patches/file_paths.xml .buildozer/android/platform/build-arm64-v8a_armeabi-v7a/dists/occ/src/main/res/xml/
cp patches/AndroidManifest.tmpl.xml .buildozer/android/platform/build-arm64-v8a_armeabi-v7a/dists/occ/templates/
cp patches/p4a_build.py .buildozer/android/platform/build-arm64-v8a_armeabi-v7a/dists/occ/build.py
debug:
. venv/bin/activate; buildozer android debug
prebake:
ifneq (,$(wildcard .buildozer/android/platform/build-arm64-v8a_armeabi-v7a/dists/sideband/src/main/res/xml/device_filter.xml))
ifneq (,$(wildcard .buildozer/android/platform/build-arm64-v8a_armeabi-v7a/dists/occ/src/main/res/xml/device_filter.xml))
@echo Device filter XML exists, skipping prebake
else
@(echo Prebaking build before patching files...)
@ -88,10 +88,10 @@ version:
@(echo $$(python ./gv.py))
install:
adb install bin/sideband-$$(python ./gv.py)-arm64-v8a_armeabi-v7a-release.apk
adb install bin/occ-$$(python ./gv.py)-arm64-v8a_armeabi-v7a-release.apk
console:
(adb logcat | grep "python\|sidebandservice")
(adb logcat | grep "python\|occservice")
getrns:
(cp -rv ../../Reticulum/RNS ./)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 755 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 905 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -3,14 +3,14 @@
Comment[en_US]=Messaging, telemetry and remote control over LXMF
Comment=Messaging, telemetry and remote control over LXMF
Encoding=UTF-8
Exec=sideband
Exec=opencom_companion
GenericName[en_US]=LXMF client
GenericName=LXMF client
Icon=io.unsigned.sideband.png
Icon=uk.co.liberatedsystems.opencom_companion.png
Categories=Utility
MimeType=
Name[en_US]=Sideband
Name=Sideband
Name[en_US]=openCom Companion
Name=openCom Companion
Path=
StartupNotify=true
Terminal=false

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -1,7 +1,7 @@
[app]
title = Sideband
package.name = sideband
package.domain = io.unsigned
title = OCC
package.name = occ
package.domain = uk.co.liberatedsystems
source.dir = .
source.include_exts = py,png,jpg,jpeg,webp,ttf,kv,pyi,typed,so,0,1,2,3,atlas,frag,html,css,js,whl,zip,gz,woff2,pdf,epub,pgm

View File

@ -60,13 +60,13 @@ package_data = {
]
}
print("Freezing Sideband "+__version__+" "+__variant__)
print("Freezing openCom Companion "+__version__+" "+__variant__)
if build_appimage:
global_excludes = [".buildozer", "build", "dist"]
# Dependencies are automatically detected, but they might need fine-tuning.
appimage_options = {
"target_name": "Sideband",
"target_name": "openCom Companion",
"target_version": __version__+" "+__variant__,
"include_files": [],
"excludes": [],
@ -76,19 +76,19 @@ if build_appimage:
}
cx_Freeze.setup(
name="Sideband",
name="openCom Companion",
version=__version__,
author="Mark Qvist",
author_email="mark@unsigned.io",
url="https://unsigned.io/sideband",
author="Liberated Embedded Systems",
author_email="contact@liberatedsystems.co.uk",
url="https://git.liberatedsystems.co.uk/jacob.eva/openCom-Companion",
executables=[
cx_Freeze.Executable(
script="main.py",
base="console",
target_name="Sideband",
shortcut_name="Sideband",
target_name="openCom Companion",
shortcut_name="openCom Companion",
icon="assets/icon.png",
copyright="Copyright (c) 2024 Mark Qvist",
copyright="Copyright (c) 2024 Liberated Embedded Systems",
),
],
options={"build_appimage": appimage_options},

View File

@ -5,7 +5,7 @@ __variant__ = "beta"
import sys
import argparse
parser = argparse.ArgumentParser(description="Sideband LXMF Client")
parser = argparse.ArgumentParser(description="openCom Companion LXMF Client")
parser.add_argument("-v", "--verbose", action='store_true', default=False, help="increase logging verbosity")
parser.add_argument("-c", "--config", action='store', default=None, help="specify path of config directory")
parser.add_argument("-d", "--daemon", action='store_true', default=False, help="run as a daemon, without user interface")
@ -243,7 +243,7 @@ class SidebandApp(MDApp):
PAUSED = 0x02
STOPPING = 0x03
PKGNAME = "io.unsigned.sideband"
PKGNAME = "uk.co.liberatedsystems.occ"
SERVICE_TIMEOUT = 30
@ -252,7 +252,7 @@ class SidebandApp(MDApp):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.title = "Sideband"
self.title = "openCom Companion"
self.app_state = SidebandApp.STARTING
self.android_service = None
self.app_dir = plyer.storagepath.get_application_dir()
@ -372,7 +372,7 @@ class SidebandApp(MDApp):
RNS.log("Launching platform-specific service for RNS and LXMF")
if RNS.vendor.platformutils.get_platform() == "android":
self.android_service = autoclass('io.unsigned.sideband.ServiceSidebandservice')
self.android_service = autoclass('uk.co.liberatedsystems.occ.ServiceSidebandservice')
mActivity = autoclass('org.kivy.android.PythonActivity').mActivity
argument = self.app_dir
self.android_service.start(mActivity, argument)
@ -629,7 +629,7 @@ class SidebandApp(MDApp):
image.save(file_path)
i_file = File(file_path)
image_uri = FileProvider.getUriForFile(mActivity, "io.unsigned.sideband.provider", i_file)
image_uri = FileProvider.getUriForFile(mActivity, "uk.co.liberatedsystems.occ.provider", i_file)
shareIntent = Intent()
shareIntent.setAction(Intent.ACTION_SEND)
@ -767,7 +767,7 @@ class SidebandApp(MDApp):
ok_button = MDRectangleFlatButton(text="OK",font_size=dp(18))
dialog = MDDialog(
title="Storage Permission",
text="Sideband needs external storage permission to read offline map files.\n\nOn this Android version, the Manage All Files permission is needed, since normal external storage permission is no longer supported.\n\nSideband will only ever read and write to files you select, and does not read any other data from your system.",
text="openCom Companion needs external storage permission to read offline map files.\n\nOn this Android version, the Manage All Files permission is needed, since normal external storage permission is no longer supported.\n\nopenCom Companion will only ever read and write to files you select, and does not read any other data from your system.",
buttons=[ ok_button ],
)
def dl_ok(s):
@ -867,7 +867,7 @@ class SidebandApp(MDApp):
if RNS.vendor.platformutils.is_android() and not self.sideband.service_available():
if time.time() - self.service_last_available > SidebandApp.SERVICE_TIMEOUT:
if self.app_state == SidebandApp.ACTIVE:
info_text = "The Reticulum and LXMF service seem to have disappeared, and Sideband is no longer connected. This should not happen, and probably indicates a bug in the background service. Please restart Sideband to regain connectivity."
info_text = "The Reticulum and LXMF service seem to have disappeared, and openCom Companion is no longer connected. This should not happen, and probably indicates a bug in the background service. Please restart openCom Companion to regain connectivity."
ok_button = MDRectangleFlatButton(text="OK",font_size=dp(18))
dialog = MDDialog(
title="Error",
@ -1004,7 +1004,7 @@ class SidebandApp(MDApp):
variant_str = ""
self.root.ids.screen_manager.app = self
self.root.ids.app_version_info.text = "Sideband v"+__version__+variant_str
self.root.ids.app_version_info.text = "openCom Companion v"+__version__+variant_str
self.root.ids.nav_scrollview.effect_cls = ScrollEffect
Clock.schedule_once(self.start_core, 0.25)
@ -1657,7 +1657,7 @@ class SidebandApp(MDApp):
self.compat_error_dialog.dismiss()
self.compat_error_dialog = MDDialog(
title="Could not load Codec2",
text="The Codec2 library could not be loaded. This likely means that you do not have the [b]codec2[/b] package or shared library installed on your system.\n\nThis library is normally installed automatically when Sideband is installed, but on some systems, this is not possible.\n\nTry installing it with a command such as [b]pamac install codec2[/b] or [b]apt install codec2[/b], or by compiling it from source for this system.",
text="The Codec2 library could not be loaded. This likely means that you do not have the [b]codec2[/b] package or shared library installed on your system.\n\nThis library is normally installed automatically when openCom Companion is installed, but on some systems, this is not possible.\n\nTry installing it with a command such as [b]pamac install codec2[/b] or [b]apt install codec2[/b], or by compiling it from source for this system.",
buttons=[
MDRectangleFlatButton(
text="OK",
@ -2213,9 +2213,9 @@ class SidebandApp(MDApp):
else:
if self.sideband.reticulum.is_connected_to_shared_instance:
connectivity_status = "Sideband is connected via a shared Reticulum instance running on this system. Use the [b]rnstatus[/b] utility to obtain full connectivity info."
connectivity_status = "openCom Companion is connected via a shared Reticulum instance running on this system. Use the [b]rnstatus[/b] utility to obtain full connectivity info."
else:
connectivity_status = "Sideband is currently running a standalone or master Reticulum instance on this system. Use the [b]rnstatus[/b] utility to obtain full connectivity info."
connectivity_status = "openCom Companion is currently running a standalone or master Reticulum instance on this system. Use the [b]rnstatus[/b] utility to obtain full connectivity info."
return connectivity_status
except Exception as e:
@ -2463,8 +2463,8 @@ class SidebandApp(MDApp):
str_comps += "\n - [b]Kivy[/b] (MIT License)\n - [b]Codec2[/b] (LGPL License)\n - [b]PyCodec2[/b] (BSD-3 License)"
str_comps += "\n - [b]PyDub[/b] (MIT License)\n - [b]PyOgg[/b] (Public Domain)"
str_comps += "\n - [b]GeoidHeight[/b] (LGPL License)\n - [b]Python[/b] (PSF License)"
str_comps += "\n\nGo to [u][ref=link]https://unsigned.io/donate[/ref][/u] to support the project.\n\nThe Sideband app is Copyright (c) 2024 Mark Qvist / unsigned.io\n\nPermission is granted to freely share and distribute binary copies of Sideband v"+__version__+" "+__variant__+", so long as no payment or compensation is charged for said distribution or sharing.\n\nIf you were charged or paid anything for this copy of Sideband, please report it to [b]license@unsigned.io[/b].\n\nTHIS IS EXPERIMENTAL SOFTWARE - SIDEBAND COMES WITH ABSOLUTELY NO WARRANTY - USE AT YOUR OWN RISK AND RESPONSIBILITY"
info = "This is "+self.root.ids.app_version_info.text+", on RNS v"+RNS.__version__+" and LXMF v"+LXMF.__version__+".\n\nHumbly build using the following open components:\n\n"+str_comps
str_comps += "\n\nGo to [u][ref=link]https://unsigned.io/donate[/ref][/u] to support the upstream Sideband project.\n\nThe openCom Companion app is Copyright (c) 2024 Liberated Embedded Systems.\n\nPermission is granted to freely share and distribute binary copies of openCom Companion v"+__version__+" "+__variant__+", so long as no payment or compensation is charged for said distribution or sharing.\n\nIf you were charged or paid anything for this copy of openCom Companion, please report it to [b]contact@liberatedsystems.co.uk[/b].\n\nTHIS IS EXPERIMENTAL SOFTWARE - OPENCOM COMPANION COMES WITH ABSOLUTELY NO WARRANTY - USE AT YOUR OWN RISK AND RESPONSIBILITY"
info = "This is "+self.root.ids.app_version_info.text+", on RNS v"+RNS.__version__+" and LXMF v"+LXMF.__version__+".\n\nHumbly built using the following open components:\n\n"+str_comps
self.information_screen.ids.information_info.text = info
self.information_screen.ids.information_info.bind(on_ref_press=link_exec)
@ -2558,7 +2558,7 @@ class SidebandApp(MDApp):
info1_text = "\nYou can set your [b]Display Name[/b] to a custom value, or leave it as the default unspecified value. "
info1_text += "This name will be included in any announces you send, and will be visible to others on the network. "
info1_text += "\n\nYou can manually specify which [b]Propagation Node[/b] to use, but if none is specified, Sideband will "
info1_text += "\n\nYou can manually specify which [b]Propagation Node[/b] to use, but if none is specified, openCom Companion will "
info1_text += "automatically select one nearby."
if RNS.vendor.platformutils.is_android():
info1_text += "\n\nDouble-tap any field to copy its value, and double-tap an empty field to paste into it."
@ -3133,13 +3133,13 @@ class SidebandApp(MDApp):
if RNS.vendor.platformutils.get_platform() == "android":
if not self.sideband.getpersistent("service.is_controlling_connectivity"):
info = "Sideband is connected via a shared Reticulum instance running on this system.\n\n"
info = "openCom Companion is connected via a shared Reticulum instance running on this system.\n\n"
info += "To configure connectivity, edit the relevant configuration file for the instance."
self.connectivity_screen.ids.connectivity_info.text = info
con_hide_settings()
else:
info = "By default, Sideband will try to discover and connect to any available Reticulum networks via active WiFi and/or Ethernet interfaces. If any Reticulum Transport Instances are found, Sideband will use these to connect to wider Reticulum networks. You can disable this behaviour if you don't want it.\n\n"
info = "By default, openCom Companion will try to discover and connect to any available Reticulum networks via active WiFi and/or Ethernet interfaces. If any Reticulum Transport Instances are found, openCom Companion will use these to connect to wider Reticulum networks. You can disable this behaviour if you don't want it.\n\n"
info += "You can also connect to a network via a remote or local Reticulum instance using TCP or I2P. [b]Please Note![/b] Connecting via I2P requires that you already have I2P running on your device, and that the SAM API is enabled.\n\n"
info += "For changes to connectivity to take effect, you must shut down and restart Sideband.\n"
self.connectivity_screen.ids.connectivity_info.text = info
@ -3227,12 +3227,12 @@ class SidebandApp(MDApp):
info = ""
if self.sideband.reticulum.is_connected_to_shared_instance:
info = "Sideband is connected via a shared Reticulum instance running on this system.\n\n"
info = "openCom Companion is connected via a shared Reticulum instance running on this system.\n\n"
info += "To get connectivity status, use the [b]rnstatus[/b] utility.\n\n"
info += "To configure connectivity, edit the configuration file located at:\n\n"
info += str(RNS.Reticulum.configpath)
else:
info = "Sideband is currently running a standalone or master Reticulum instance on this system.\n\n"
info = "openCom Companion is currently running a standalone or master Reticulum instance on this system.\n\n"
info += "To get connectivity status, use the [b]rnstatus[/b] utility.\n\n"
info += "To configure connectivity, edit the configuration file located at:\n\n"
info += str(RNS.Reticulum.configpath)
@ -3305,8 +3305,8 @@ class SidebandApp(MDApp):
threading.Thread(target=lj, daemon=True).start()
def repository_update_info(self, sender=None):
info = "Sideband includes a small repository of useful software and guides related to the Sideband and Reticulum ecosystem. You can start this repository to allow other people on your local network to download software and information directly from this device, without needing an Internet connection.\n\n"
info += "If you want to share the Sideband application itself via the repository server, you must first download it into the local repository, using the \"Update Content\" button below.\n\n"
info = "openCom Companion includes a small repository of useful software and guides related to the openCom Companion and Reticulum ecosystem. You can start this repository to allow other people on your local network to download software and information directly from this device, without needing an Internet connection.\n\n"
info += "If you want to share the openCom Companion application itself via the repository server, you must first download it into the local repository, using the \"Update Content\" button below.\n\n"
info += "To make the repository available on your local network, simply start it below, and it will become browsable on a local IP address for anyone connected to the same WiFi or wired network.\n\n"
if self.sideband.webshare_server != None:
if RNS.vendor.platformutils.is_android():
@ -3485,14 +3485,14 @@ class SidebandApp(MDApp):
if RNS.vendor.platformutils.get_platform() == "android":
if not self.sideband.getpersistent("service.is_controlling_connectivity"):
info = "Sideband is connected via a shared Reticulum instance running on this system.\n\n"
info = "openCom Companion is connected via a shared Reticulum instance running on this system.\n\n"
info += "To configure hardware parameters, edit the relevant configuration file for the instance."
self.hardware_screen.ids.hardware_info.text = info
con_hide_settings()
else:
info = "When using external hardware for communicating, you may configure various parameters, such as channel settings, modulation schemes, interface speeds and access parameters. You can set up these parameters per device type, and Sideband will apply the configuration when opening a device of that type.\n\n"
info += "Hardware configurations can also be exported or imported as [i]config motes[/i], which are self-contained plaintext strings that are easy to share with others. When importing a config mote, Sideband will automatically set all relevant parameters as specified within it.\n\n"
info = "When using external hardware for communicating, you may configure various parameters, such as channel settings, modulation schemes, interface speeds and access parameters. You can set up these parameters per device type, and openCom Companion will apply the configuration when opening a device of that type.\n\n"
info += "Hardware configurations can also be exported or imported as [i]config motes[/i], which are self-contained plaintext strings that are easy to share with others. When importing a config mote, openCom Companion will automatically set all relevant parameters as specified within it.\n\n"
info += "For changes to hardware parameters to take effect, you must shut down and restart Sideband.\n"
self.hardware_screen.ids.hardware_info.text = info
@ -3500,11 +3500,11 @@ class SidebandApp(MDApp):
info = ""
if self.sideband.reticulum.is_connected_to_shared_instance:
info = "Sideband is connected via a shared Reticulum instance running on this system.\n\n"
info = "openCom Companion is connected via a shared Reticulum instance running on this system.\n\n"
info += "To configure hardware parameters, edit the configuration file located at:\n\n"
info += str(RNS.Reticulum.configpath)
else:
info = "Sideband is currently running a standalone or master Reticulum instance on this system.\n\n"
info = "openCom Companion is currently running a standalone or master Reticulum instance on this system.\n\n"
info += "To configure hardware parameters, edit the configuration file located at:\n\n"
info += str(RNS.Reticulum.configpath)
@ -4855,7 +4855,7 @@ class SidebandApp(MDApp):
self.bind_clipboard_actions(self.keys_screen.ids)
self.keys_screen.ids.keys_scrollview.effect_cls = ScrollEffect
info = "Your primary encryption keys are stored in a Reticulum Identity within the Sideband app. If you want to backup this Identity for later use on this or another device, you can export it as a plain text blob, with the key data encoded in Base32 format. This will allow you to restore your address in Sideband or other LXMF clients at a later point.\n\n[b]Warning![/b] Anyone that gets access to the key data will be able to control your LXMF address, impersonate you, and read your messages. In is [b]extremely important[/b] that you keep the Identity data secure if you export it.\n\nBefore displaying or exporting your Identity data, make sure that no machine or person in your vicinity is able to see, copy or record your device screen or similar."
info = "Your primary encryption keys are stored in a Reticulum Identity within the openCom Companion app. If you want to backup this Identity for later use on this or another device, you can export it as a plain text blob, with the key data encoded in Base32 format. This will allow you to restore your address in openCom Companion or other LXMF clients at a later point.\n\n[b]Warning![/b] Anyone that gets access to the key data will be able to control your LXMF address, impersonate you, and read your messages. In is [b]extremely important[/b] that you keep the Identity data secure if you export it.\n\nBefore displaying or exporting your Identity data, make sure that no machine or person in your vicinity is able to see, copy or record your device screen or similar."
if not RNS.vendor.platformutils.get_platform() == "android":
self.widget_hide(self.keys_screen.ids.keys_share)
@ -4938,7 +4938,7 @@ class SidebandApp(MDApp):
new_id.to_file(self.sideband.identity_path)
yes_button = MDRectangleFlatButton(text="OK",font_size=dp(18))
dialog = MDDialog(text="[b]The provided Identity key data was imported[/b]\n\nThe app will now exit. Please restart Sideband to use the new Identity.", buttons=[ yes_button ])
dialog = MDDialog(text="[b]The provided Identity key data was imported[/b]\n\nThe app will now exit. Please restart openCom Companion to use the new Identity.", buttons=[ yes_button ])
def dl_yes(s):
dialog.dismiss()
self.quit_action(sender=self)
@ -4982,12 +4982,12 @@ class SidebandApp(MDApp):
self.bind_clipboard_actions(self.plugins_screen.ids)
self.plugins_screen.ids.plugins_scrollview.effect_cls = ScrollEffect
info1 = "You can extend Sideband functionality with command and service plugins. This lets you to add your own custom functionality, or add community-developed features.\n"
info2 = "[b]Take extreme caution![/b]\nIf you add a plugin that you did not write yourself, make [b]absolutely[/b] sure you know what it is doing! Loaded plugins have full access to your Sideband application, and should only be added if you are completely certain they are trustworthy.\n\n"
info1 = "You can extend openCom Companion functionality with command and service plugins. This lets you to add your own custom functionality, or add community-developed features.\n"
info2 = "[b]Take extreme caution![/b]\nIf you add a plugin that you did not write yourself, make [b]absolutely[/b] sure you know what it is doing! Loaded plugins have full access to your openCom Companion application, and should only be added if you are completely certain they are trustworthy.\n\n"
info2 += "[i]Command Plugins[/i] allow you to define custom commands that can be carried out in response to LXMF command messages, and they can respond with any kind of information or data to the requestor (or to any LXMF address).\n\n"
info2 += "By using [i]Service Plugins[/i], you can start additional services or programs within the Sideband application context, that other plugins (or Sideband itself) can interact with.\n\n"
info2 += "With [i]Telemetry Plugins[/i], you can add custom telemetry from external devices and services to the Sideband telemetry system.\n\n"
info2 += "Restart Sideband for changes to these settings to take effect."
info2 += "By using [i]Service Plugins[/i], you can start additional services or programs within the openCom Companion application context, that other plugins (or openCom Companion itself) can interact with.\n\n"
info2 += "With [i]Telemetry Plugins[/i], you can add custom telemetry from external devices and services to the openCom Companion telemetry system.\n\n"
info2 += "Restart openCom Companion for changes to these settings to take effect."
self.plugins_screen.ids.plugins_info1.text = info1
self.plugins_screen.ids.plugins_info2.text = info2
@ -5611,7 +5611,7 @@ class SidebandApp(MDApp):
self.map_settings_screen = Builder.load_string(layout_map_settings_screen)
self.map_settings_screen.app = self
self.root.ids.screen_manager.add_widget(self.map_settings_screen)
self.map_settings_screen.ids.map_config_info.text = "\n\nSideband can use map sources from the Internet, or a map source stored locally on this device in MBTiles format."
self.map_settings_screen.ids.map_config_info.text = "\n\nopenCom Companion can use map sources from the Internet, or a map source stored locally on this device in MBTiles format."
self.map_settings_screen.ids.map_settings_scrollview.effect_cls = ScrollEffect
self.map_settings_init()
@ -5984,19 +5984,19 @@ class SidebandApp(MDApp):
threading.Thread(target=lj, daemon=True).start()
guide_text1 = """
[size=18dp][b]Introduction[/b][/size][size=5dp]\n \n[/size]Welcome to [i]Sideband[/i], an LXMF client for Android, Linux and macOS. With Sideband, you can communicate with other people or LXMF-compatible systems over Reticulum networks using LoRa, Packet Radio, WiFi, I2P, or anything else Reticulum supports.
[size=18dp][b]Introduction[/b][/size][size=5dp]\n \n[/size]Welcome to [i]openCom Companion[/i], an LXMF client for Android, Linux and macOS. With openCom Companion, you can communicate with other people or LXMF-compatible systems over Reticulum networks using LoRa, Packet Radio, WiFi, I2P, or anything else Reticulum supports.
This short guide will give you a basic introduction to the concepts that underpin Sideband and LXMF (which is the protocol that Sideband uses to communicate). If you are not already familiar with LXMF and Reticulum, it is probably a good idea to read this guide, since Sideband is very different from other messaging apps."""
This short guide will give you a basic introduction to the concepts that underpin openCom Companion and LXMF (which is the protocol that openCom Companion uses to communicate). If you are not already familiar with LXMF and Reticulum, it is probably a good idea to read this guide, since openCom Companion is very different from other messaging apps."""
guide_text2 = """
[size=18dp][b]Communication Without Subjection[/b][/size][size=5dp]\n \n[/size]Sideband is completely free, permission-less, anonymous and infrastructure-less. Sideband uses the peer-to-peer and distributed messaging system LXMF. There is no sign-up, no service providers, no "end-user license agreements", no data theft and no surveillance. You own the system.
[size=18dp][b]Communication Without Subjection[/b][/size][size=5dp]\n \n[/size]openCom Companion is completely free, permission-less, anonymous and infrastructure-less. openCom Companion uses the peer-to-peer and distributed messaging system LXMF. There is no sign-up, no service providers, no "end-user license agreements", no data theft and no surveillance. You own the system.
This also means that Sideband operates differently than what you might be used to. It does not need a connection to a server on the Internet to function, and you do not have an account anywhere."""
This also means that openCom Companion operates differently than what you might be used to. It does not need a connection to a server on the Internet to function, and you do not have an account anywhere."""
guide_text3 = """
[size=18dp][b]Operating Principles[/b][/size][size=5dp]\n \n[/size]When Sideband is started on your device for the first time, it randomly generates a set of cryptographic keys. These keys are then used to create an LXMF address for your use. Any other endpoint in [i]any[/i] Reticulum network will be able to send data to this address, as long as there is [i]some sort of physical connection[/i] between your device and the remote endpoint. You can also move around to other Reticulum networks with this address, even ones that were never connected to the network the address was created on, or that didn't exist when the address was created. The address is yours to keep and control for as long (or short) a time you need it, and you can always delete it and create a new one."""
[size=18dp][b]Operating Principles[/b][/size][size=5dp]\n \n[/size]When openCom Companion is started on your device for the first time, it randomly generates a set of cryptographic keys. These keys are then used to create an LXMF address for your use. Any other endpoint in [i]any[/i] Reticulum network will be able to send data to this address, as long as there is [i]some sort of physical connection[/i] between your device and the remote endpoint. You can also move around to other Reticulum networks with this address, even ones that were never connected to the network the address was created on, or that didn't exist when the address was created. The address is yours to keep and control for as long (or short) a time you need it, and you can always delete it and create a new one."""
guide_text4 = """
[size=18dp][b]Becoming Reachable[/b][/size][size=5dp]\n \n[/size]To establish reachability for any Reticulum address on a network, an [i]announce[/i] must be sent. Sideband does not do this automatically by default, but can be configured to do so every time the program starts. To send an announce manually, press the [i]Announce[/i] button in the [i]Conversations[/i] section of the program. When you send an announce, you make your LXMF address reachable for real-time messaging to the entire network you are connected to. Even in very large networks, you can expect global reachability for your address to be established in under a minute.
[size=18dp][b]Becoming Reachable[/b][/size][size=5dp]\n \n[/size]To establish reachability for any Reticulum address on a network, an [i]announce[/i] must be sent. openCom Companion does not do this automatically by default, but can be configured to do so every time the program starts. To send an announce manually, press the [i]Announce[/i] button in the [i]Conversations[/i] section of the program. When you send an announce, you make your LXMF address reachable for real-time messaging to the entire network you are connected to. Even in very large networks, you can expect global reachability for your address to be established in under a minute.
If you don't move to other places in the network, and keep connected through the same hubs or gateways, it is generally not necessary to send an announce more often than once every week. If you change your entry point to the network, you may want to send an announce, or you may just want to stay quiet."""
@ -6009,12 +6009,12 @@ The Propagation Nodes also distribute copies of messages between each other, suc
[size=18dp][b]Packets Find A Way[/b][/size][size=5dp]\n \n[/size]Connections in Reticulum networks can be wired or wireless, span many intermediary hops, run over fast links or ultra-low bandwidth radio, tunnel over the Invisible Internet (I2P), private networks, satellite connections, serial lines or anything else that Reticulum can carry data over. In most cases it will not be possible to know what path data takes in a Reticulum network, and no transmitted packets carries any identifying characteristics, apart from a destination address. There is no source addresses in Reticulum. As long as you do not reveal any connecting details between your person and your LXMF address, you can remain anonymous. Sending messages to others does not reveal [i]your[/i] address to anyone else than the intended recipient."""
guide_text7 = """
[size=18dp][b]Be Yourself, Be Unknown, Stay Free[/b][/size][size=5dp]\n \n[/size]Even with the above characteristics in mind, you [b]must remember[/b] that LXMF and Reticulum is not a technology that can guarantee anonymising connections that are already de-anonymised! If you use Sideband to connect to TCP Reticulum hubs over the clear Internet, from a network that can be tied to your personal identity, an adversary may learn that you are generating LXMF traffic. If you want to avoid this, it is recommended to use I2P to connect to Reticulum hubs on the Internet. Or only connecting from within pure Reticulum networks, that take one or more hops to reach connections that span the Internet. This is a complex topic, with many more nuances than can be covered here. You are encouraged to ask on the various Reticulum discussion forums if you are in doubt.
[size=18dp][b]Be Yourself, Be Unknown, Stay Free[/b][/size][size=5dp]\n \n[/size]Even with the above characteristics in mind, you [b]must remember[/b] that LXMF and Reticulum is not a technology that can guarantee anonymising connections that are already de-anonymised! If you use openCom Companion to connect to TCP Reticulum hubs over the clear Internet, from a network that can be tied to your personal identity, an adversary may learn that you are generating LXMF traffic. If you want to avoid this, it is recommended to use I2P to connect to Reticulum hubs on the Internet. Or only connecting from within pure Reticulum networks, that take one or more hops to reach connections that span the Internet. This is a complex topic, with many more nuances than can be covered here. You are encouraged to ask on the various Reticulum discussion forums if you are in doubt.
If you use Reticulum and LXMF on hardware that does not carry any identifiers tied to you, it is possible to establish a completely free and anonymous communication system with Reticulum and LXMF clients."""
guide_text8 = """
[size=18dp][b]Keyboard Shortcuts[/b][/size][size=5dp]\n \n[/size]To ease navigation and operation of the program, Sideband has keyboard shortcuts mapped to the most common actions. A reference is included below.
[size=18dp][b]Keyboard Shortcuts[/b][/size][size=5dp]\n \n[/size]To ease navigation and operation of the program, openCom Companion has keyboard shortcuts mapped to the most common actions. A reference is included below.
[b]Quick Actions[/b]
- [b]Ctrl-W[/b] Go back
@ -6054,7 +6054,7 @@ If you use Reticulum and LXMF on hardware that does not carry any identifiers ti
- Hold [b]Alt[/b] to navigate more finely"""
guide_text9 = """
[size=18dp][b]Please Support This Project[/b][/size][size=5dp]\n \n[/size]It took me more than seven years to design and built the entire ecosystem of software and hardware that makes this possible. If this project is valuable to you, please go to [u][ref=link]https://unsigned.io/donate[/ref][/u] to support the project with a donation. Every donation directly makes the entire Reticulum project possible.
[size=18dp][b]Please Support The Upstream Project[/b][/size][size=5dp]\n \n[/size]It took Mark Qvist more than seven years to design and built the entire ecosystem of software and hardware that supports openCom Companion and the openCom line of RNodes. If this project is valuable to you, please go to [u][ref=link]https://unsigned.io/donate[/ref][/u] to support his project with a donation. Every donation directly makes the entire Reticulum project possible.
Thank you very much for using Free Communications Systems.
"""
@ -6113,7 +6113,7 @@ Thank you very much for using Free Communications Systems.
self.root.ids.screen_manager.transition = self.slide_transition
self.root.ids.screen_manager.transition.direction = direction
info = "The [b]Local Broadcasts[/b] feature will allow you to send and listen for local broadcast transmissions on connected radio, LoRa and WiFi interfaces.\n\n[b]Local Broadcasts[/b] makes it easy to establish public information exchange with anyone in direct radio range, or even with large areas far away using the [i]Remote Broadcast Repeater[/i] feature.\n\nThese features are not yet implemented in Sideband.\n\nWant it faster? Go to [u][ref=link]https://unsigned.io/donate[/ref][/u] to support the project."
info = "The [b]Local Broadcasts[/b] feature will allow you to send and listen for local broadcast transmissions on connected radio, LoRa and WiFi interfaces.\n\n[b]Local Broadcasts[/b] makes it easy to establish public information exchange with anyone in direct radio range, or even with large areas far away using the [i]Remote Broadcast Repeater[/i] feature.\n\nThese features are not yet implemented in openCom Companion.\n\nWant it faster? Go to [u][ref=link]https://unsigned.io/donate[/ref][/u] to support the project."
if self.theme_cls.theme_style == "Dark":
info = "[color=#"+dark_theme_text_color+"]"+info+"[/color]"
self.broadcasts_screen.ids.broadcasts_info.text = info
@ -6165,7 +6165,7 @@ if not args.daemon:
def run():
if args.daemon:
RNS.log("Starting Sideband in daemon mode")
RNS.log("Starting openCom Companion in daemon mode")
sideband = SidebandCore(
None,
config_path=args.config,

View File

@ -139,7 +139,7 @@
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="io.unsigned.sideband.provider"
android:authorities="uk.co.liberatedsystems.occ.provider"
android:exported="false"
android:grantUriPermissions="true">
<!-- ressource file to create -->

View File

@ -130,7 +130,7 @@ public class PythonService extends Service implements Runnable {
} else {
// for android 8+ we need to create our own channel
// https://stackoverflow.com/questions/47531742/startforeground-fail-after-upgrade-to-android-8-1
String NOTIFICATION_CHANNEL_ID = "io.unsigned.sideband.reticulum";
String NOTIFICATION_CHANNEL_ID = "uk.co.liberatedsystems.occ.reticulum";
String channelName = "Background Service";
NotificationChannel chan = new NotificationChannel(NOTIFICATION_CHANNEL_ID, channelName,
NotificationManager.IMPORTANCE_NONE);
@ -142,7 +142,7 @@ public class PythonService extends Service implements Runnable {
manager.createNotificationChannel(chan);
Notification.Builder builder = new Notification.Builder(context, NOTIFICATION_CHANNEL_ID);
builder.setContentTitle("Sideband Active");
builder.setContentTitle("openCom Companion Active");
// builder.setContentText("Reticulum Active");
builder.setContentIntent(pIntent);
// builder.setOngoing(true);

View File

@ -66,7 +66,7 @@ class SidebandService():
if android_api_version < 26:
return
else:
package_name = "io.unsigned.sideband"
package_name = "uk.co.liberatedsystems.occ"
if not self.notification_service:
self.notification_service = cast(NotificationManager, self.app_context.getSystemService(
@ -83,7 +83,7 @@ class SidebandService():
group_id += "."+str(context_id)
if not title or title == "":
channel_name = "Sideband"
channel_name = "openCom Companion"
else:
channel_name = title
@ -344,10 +344,12 @@ class SidebandService():
if self.sideband.interface_rnode != None:
if self.sideband.interface_rnode.online:
if self.sideband.interface_rnode is RNS.Interfaces.Android.RNodeMultiInterface.RNodeMultiInterface:
if type(self.sideband.interface_rnode) is RNS.Interfaces.Android.RNodeMultiInterface.RNodeMultiInterface:
rs = ""
for subinterface in self.sideband.interface_rnode.subinterfaces:
if subinterface is not int:
rs += "On-air at "+str(subinterface.bitrate_kbps)+" Kbps \n" # \todo does this work?
RNS.log("On-air iteration!", RNS.LOG_DEBUG) # debug
else:
rs = "On-air at "+str(self.sideband.interface_rnode.bitrate_kbps)+" Kbps"
else:

View File

@ -4,7 +4,7 @@
<link rel="stylesheet" href="css/water.css">
<link rel="shortcut icon" type="image/x-icon" href="gfx/icon.png">
<meta charset="utf-8"/>
<title>Sideband Repository</title>
<title>openCom Companion Repository</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>

View File

@ -5,17 +5,17 @@
<link rel="stylesheet" href="css/water.css">
<link rel="shortcut icon" type="image/x-icon" href="gfx/icon.png">
<meta charset="utf-8"/>
<title>Sideband Repository</title>
<title>openCom Companion Repository</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<span class="logo">Sideband Repo</span>
<span class="logo">openCom Companion Repo</span>
<p><center><span class="menu"><a href="index.html">Start</a> | <a href="pkgs.html">Software</a> | <a href="guides.html">Guides</a></span></center></p><hr><h2>Hello!</h2>
<table style="margin-bottom: 1.5em;">
<tbody>
<tr>
<td style="vertical-align:middle;padding-left: 0;">
You have connected to the <b>Sideband Repository</b>.<br/>
You have connected to the <b>openCom Companion Repository</b>.<br/>
<br/>
Feel free to download any information and resources from here. Select a section to browse and download packages and information.<br/>
</td>

View File

@ -4,7 +4,7 @@
<link rel="stylesheet" href="css/water.css">
<link rel="shortcut icon" type="image/x-icon" href="gfx/icon.png">
<meta charset="utf-8"/>
<title>Sideband Repository</title>
<title>openCom Companion Repository</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>

View File

@ -13,6 +13,8 @@ import RNS.Interfaces.Interface as Interface
import multiprocessing.connection
import traceback #debug
from copy import deepcopy
from threading import Lock
from .res import sideband_fb_data
@ -157,7 +159,7 @@ class SidebandCore():
self.version_str = ""
if config_path == None:
self.app_dir = plyer.storagepath.get_home_dir()+"/.config/sideband"
self.app_dir = plyer.storagepath.get_home_dir()+"/.config/occ"
if self.app_dir.startswith("file://"):
self.app_dir = self.app_dir.replace("file://", "")
else:
@ -167,19 +169,19 @@ class SidebandCore():
self.rns_configdir = None
if RNS.vendor.platformutils.is_android():
self.app_dir = android_app_dir+"/io.unsigned.sideband/files/"
self.app_dir = android_app_dir+"/uk.co.liberatedsystems.occ/files/"
self.cache_dir = self.app_dir+"/cache"
self.rns_configdir = self.app_dir+"/app_storage/reticulum"
self.asset_dir = self.app_dir+"/app/assets"
elif RNS.vendor.platformutils.is_darwin():
core_path = os.path.abspath(__file__)
self.asset_dir = core_path.replace("/sideband/core.py", "/assets")
self.asset_dir = core_path.replace("/occ/core.py", "/assets")
elif RNS.vendor.platformutils.get_platform() == "linux":
core_path = os.path.abspath(__file__)
self.asset_dir = core_path.replace("/sideband/core.py", "/assets")
self.asset_dir = core_path.replace("/occ/core.py", "/assets")
elif RNS.vendor.platformutils.is_windows():
core_path = os.path.abspath(__file__)
self.asset_dir = core_path.replace("\\sideband\\core.py", "\\assets")
self.asset_dir = core_path.replace("\\occ\\core.py", "\\assets")
else:
self.asset_dir = plyer.storagepath.get_application_dir()+"/sbapp/assets"
@ -202,9 +204,9 @@ class SidebandCore():
if not os.path.isdir(self.app_dir+"/app_storage"):
os.makedirs(self.app_dir+"/app_storage")
self.config_path = self.app_dir+"/app_storage/sideband_config"
self.config_path = self.app_dir+"/app_storage/occ_config"
self.identity_path = self.app_dir+"/app_storage/primary_identity"
self.db_path = self.app_dir+"/app_storage/sideband.db"
self.db_path = self.app_dir+"/app_storage/occ.db"
self.lxmf_storage = self.app_dir+"/app_storage/"
self.log_dir = self.app_dir+"/app_storage/"
self.tmp_dir = self.app_dir+"/app_storage/tmp"
@ -242,7 +244,8 @@ class SidebandCore():
self.clear_exports_dir()
except Exception as e:
RNS.log("Error while configuring Sideband: "+str(e), RNS.LOG_ERROR)
RNS.log("Error while configuring openCom Companion: "+str(e), RNS.LOG_ERROR)
RNS.log(traceback.format_exc())# debug
if load_config_only:
return
@ -297,11 +300,11 @@ class SidebandCore():
local_share_dir = os.path.expanduser("~/.local/share")
app_entry_dir = os.path.expanduser("~/.local/share/applications")
icon_dir = os.path.expanduser("~/.local/share/icons/hicolor/512x512/apps")
de_filename = "io.unsigned.sideband.desktop"
de_filename = "uk.co.liberatedsystems.occ.desktop"
de_source = self.asset_dir+"/"+de_filename
de_target = app_entry_dir+"/"+de_filename
icn_source = self.asset_dir+"/icon.png"
icn_target = icon_dir+"/io.unsigned.sideband.png"
icn_target = icon_dir+"/uk.co.liberatedsystems.occ.png"
if os.path.isdir(local_share_dir):
if not os.path.exists(app_entry_dir):
os.makedirs(app_entry_dir)
@ -355,7 +358,7 @@ class SidebandCore():
os.unlink(fpath)
def __init_config(self):
RNS.log("Creating new Sideband configuration...")
RNS.log("Creating new openCom Companion configuration...")
if os.path.isfile(self.identity_path):
self.identity = RNS.Identity.from_file(self.identity_path)
else:
@ -433,12 +436,12 @@ class SidebandCore():
channel_keys = sorted(self.config["hw_rnode_channels"].keys())
self.config["hw_rnode_channel_index"] = 0
self.config["hw_rnode_channel"] = channel_keys[0]
self.config["hw_rnode_frequency"] = None
self.config["hw_rnode_frequency"] = self.config["hw_rnode_channels"]["Channel 1"] * 1000000
self.config["hw_rnode_modulation"] = "LoRa"
self.config["hw_rnode_preset_index"] = 0
self.config["hw_rnode_bandwidth"] = 62500
self.config["hw_rnode_spreading_factor"] = 8
self.config["hw_rnode_coding_rate"] = 6
self.config["hw_rnode_bandwidth"] = self.config["hw_rnode_presets_cfg"][0][0]
self.config["hw_rnode_spreading_factor"] = self.config["hw_rnode_presets_cfg"][0][1]
self.config["hw_rnode_coding_rate"] = self.config["hw_rnode_presets_cfg"][0][2]
self.config["hw_rnode_tx_power"] = 22
self.config["hw_rnode_secondary_modem"] = False
self.config["hw_rnode_sec_presets_cfg"] = [[1625000, 5, 5, 100, 100], [1625000, 7, 6, 100, 100], [1625000, 9, 7, 100, 100], [1625000, 12, 8, 100, 100]]
@ -453,12 +456,12 @@ class SidebandCore():
channel_keys = sorted(self.config["hw_rnode_sec_channels"].keys())
self.config["hw_rnode_sec_channel_index"] = 0
self.config["hw_rnode_sec_channel"] = channel_keys[0]
self.config["hw_rnode_sec_frequency"] = None
self.config["hw_rnode_sec_frequency"] = self.config["hw_rnode_sec_channels"]["Channel 1"] * 1000000
self.config["hw_rnode_sec_modulation"] = "LoRa"
self.config["hw_rnode_sec_preset_index"] = 0
self.config["hw_rnode_sec_bandwidth"] = 62500
self.config["hw_rnode_sec_spreading_factor"] = 8
self.config["hw_rnode_sec_coding_rate"] = 6
self.config["hw_rnode_sec_bandwidth"] = self.config["hw_rnode_presets_cfg"][0][0]
self.config["hw_rnode_sec_spreading_factor"] = self.config["hw_rnode_presets_cfg"][0][1]
self.config["hw_rnode_sec_coding_rate"] = self.config["hw_rnode_presets_cfg"][0][2]
self.config["hw_rnode_tx_power"] = 5
self.config["hw_rnode_beaconinterval"] = None
self.config["hw_rnode_beacondata"] = None
@ -515,13 +518,13 @@ class SidebandCore():
self.save_configuration()
def __load_config(self):
RNS.log("Loading Sideband identity...", RNS.LOG_DEBUG)
RNS.log("Loading openCom Companion identity...", RNS.LOG_DEBUG)
self.identity = RNS.Identity.from_file(self.identity_path)
self.rpc_addr = ("127.0.0.1", 48165)
self.rpc_key = RNS.Identity.full_hash(self.identity.get_private_key())
RNS.log("Loading Sideband configuration... "+str(self.config_path), RNS.LOG_DEBUG)
RNS.log("Loading openCom Companion configuration... "+str(self.config_path), RNS.LOG_DEBUG)
config_file = open(self.config_path, "rb")
self.config = msgpack.unpackb(config_file.read())
config_file.close()
@ -790,7 +793,7 @@ class SidebandCore():
self.__db_indices()
def __reload_config(self):
RNS.log("Reloading Sideband configuration... ", RNS.LOG_DEBUG)
RNS.log("Reloading openCom Companion configuration... ", RNS.LOG_DEBUG)
with open(self.config_path, "rb") as config_file:
config_data = config_file.read()
@ -804,7 +807,7 @@ class SidebandCore():
RNS.log("Error while reloading configuration: "+str(e), RNS.LOG_ERROR)
def __save_config(self):
RNS.log("Saving Sideband configuration...", RNS.LOG_DEBUG)
RNS.log("Saving openCom Companion configuration...", RNS.LOG_DEBUG)
def save_function():
while self.saving_configuration:
time.sleep(0.15)
@ -816,7 +819,7 @@ class SidebandCore():
self.saving_configuration = False
except Exception as e:
self.saving_configuration = False
RNS.log("Error while saving Sideband configuration: "+str(e), RNS.LOG_ERROR)
RNS.log("Error while saving openCom Companion configuration: "+str(e), RNS.LOG_ERROR)
threading.Thread(target=save_function, daemon=True).start()
@ -831,7 +834,7 @@ class SidebandCore():
if plugins_enabled:
if plugins_path != None:
RNS.log("Loading Sideband plugins...", RNS.LOG_DEBUG)
RNS.log("Loading openCom Companion plugins...", RNS.LOG_DEBUG)
if os.path.isdir(plugins_path):
for file in os.listdir(plugins_path):
if file.lower().endswith(".py"):
@ -3131,7 +3134,7 @@ class SidebandCore():
target_port = self.owner_app.usb_devices[0]["port"]
RNS.Interfaces.Android.RNodeInterface.RNodeInterface.bluetooth_control(port=target_port, pairing_mode = True)
except Exception as e:
self.setstate("hardware_operation.error", "An error occurred while trying to communicate with the device. Please make sure that Sideband has been granted permissions to access the device.\n\nThe reported error was:\n\n[i]"+str(e)+"[/i]")
self.setstate("hardware_operation.error", "An error occurred while trying to communicate with the device. Please make sure that openCom Companion has been granted permissions to access the device.\n\nThe reported error was:\n\n[i]"+str(e)+"[/i]")
else:
RNS.log("Could not execute RNode Bluetooth control command, no USB devices available", RNS.LOG_ERROR)
self.setstate("executing.bt_pair", False)
@ -3786,7 +3789,7 @@ class SidebandCore():
self.message_router.ignore_stamps()
# TODO: Update to announce call in LXMF when full 0.5.0 support is added (get app data from LXMRouter instead)
# Currently overrides the LXMF routers auto-generated announce data so that Sideband will announce old-format
# Currently overrides the LXMF routers auto-generated announce data so that openCom Companion will announce old-format
# LXMF announces if require_stamps is disabled.
# if not self.config["lxmf_require_stamps"]:
# self.lxmf_destination.set_default_app_data(self.get_display_name_bytes)
@ -4255,7 +4258,7 @@ class SidebandCore():
thread.start()
self.setstate("core.started", True)
RNS.log("Sideband Core "+str(self)+" version "+str(self.version_str)+" started")
RNS.log("openCom Companion Core "+str(self)+" version "+str(self.version_str)+" started")
def stop_webshare(self):
if self.webshare_server != None:

View File

@ -86,17 +86,17 @@ class Telemetry():
self.screen.ids.telemetry_scrollview.effect_cls = ScrollEffect
info = "\nSideband allows you to securely share telemetry, such as location and sensor data, with people, custom programs, "
info = "\nopenCom Companion allows you to securely share telemetry, such as location and sensor data, with people, custom programs, "
info += "machines or other systems over LXMF. You have complete control over what kind of telemetry to send, and who you share "
info += "it with.\n\nTelemetry data is never sent to, via or processed by any external services or servers, but is carried "
info += "exclusively within encrypted LXMF messages over Reticulum, and only to the destinations you define.\n\nWhen telemetry "
info += "is enabled, it is possible to embed telemetry data in normal messages on a per-peer basis. You can control this from "
info += "the [b]Conversations[/b] list, by selecting the [b]Edit[/b] option for the relevant peer.\n\nYou can also define a "
info += "[b]Telemetry Collector[/b], that Sideband can automatically send telemetry to on a periodic basis. By default, only "
info += "[b]Telemetry Collector[/b], that openCom Companion can automatically send telemetry to on a periodic basis. By default, only "
info += "your own telemetry will be sent to the collector, but by enabling the [b]Send all known to collector[/b] option, you "
info += "can forward all known telemetry to the collector. This can also be used to aggregate telemetry from multiple different "
info += "collectors, or create chains of transmission.\n\nBy activating the [b]Enable collector[/b] option, this instance of "
info += "Sideband will become a Telemetry Collector, and other authorized peers will be able to query its collected data.\n"
info += "openCom Companion will become a Telemetry Collector, and other authorized peers will be able to query its collected data.\n"
if self.app.theme_cls.theme_style == "Dark":
info = "[color=#"+self.app.dark_theme_text_color+"]"+info+"[/color]"
@ -327,7 +327,7 @@ class Telemetry():
self.app.root.ids.screen_manager.add_widget(self.sensors_screen)
self.app.bind_clipboard_actions(self.sensors_screen.ids)
info3 = "\nTo include a specific type of telemetry data while sending, it must be enabled below. Please note that some sensor types are not supported on all devices. Sideband will only be able to read a specific type of sensor if your device actually includes hardware for it.\n"
info3 = "\nTo include a specific type of telemetry data while sending, it must be enabled below. Please note that some sensor types are not supported on all devices. openCom Companion will only be able to read a specific type of sensor if your device actually includes hardware for it.\n"
if self.app.theme_cls.theme_style == "Dark":
info3 = "[color=#"+self.app.dark_theme_text_color+"]"+info3+"[/color]"
self.sensors_screen.ids.telemetry_info3.text = info3
@ -887,7 +887,7 @@ MDScreen:
MDLabel:
id: telemetry_info5
markup: True
text: "\\n[i]Read this section before enabling any advanced configuration options[/i]\\n\\nBy using the following options in combination with the basic settings above, it is possible to achieve a broad variety of telemetry collection, sharing and distribution systems. Both distributed, centralised, private and public configurations are possible. This section briefly explains the available options. For more details, refer to the full manual.\\n\\nIf the [b]Embed telemetry to all trusted[/b] option is enabled, Sideband will automatically embed telemetry data in outgoing messages to all peers marked as trusted.\\n\\nWith the [b]Sync all known telemetry to collector[/b] option enabled, Sideband will send not only its own, but all collected telemetry data to the specified collector address. This can be useful for aggregating data from many different areas onto collectors, and for distributed configurations.\\n\\nIf the [b]Always use propagation for telemetry[/b] option is enabled, Sideband will never attempt to directly delivery outbound telemetry, but will always send it via the active propagation node.\\n\\nThe [b]Try propagation if direct delivery fails[/b] option will make Sideband attempt to send outbound telemetry via the active propagation node, if direct delivery to the recipient fails.\\n\\nIf [b]Allow requests from all trusted[/b] is enabled, any peer marked as trusted will be able to perform requests on this Sideband instance.\\n\\n[b]Warning![/b] If the option [b]Allow requests from anyone[/b] is enabled, [i]any peer[/i], on [i]all reachable reticules[/i] will be able to query and access telemetry data stored on this instance. This can be very useful for emergency situations, rescue operations and public coordination, but should be used with [b]extreme caution[/b].\\n\\n[b]Requests[/b] enables remote peers to query telemetry data collected by this instance, and to run available statistics commands. Available commands are currently [b]ping[/b], which requests a small response message, [b]echo[/b] which requests an echo reply of the specified text, and [b]sig[/b] which requests a sigal report, if available.\\n"
text: "\\n[i]Read this section before enabling any advanced configuration options[/i]\\n\\nBy using the following options in combination with the basic settings above, it is possible to achieve a broad variety of telemetry collection, sharing and distribution systems. Both distributed, centralised, private and public configurations are possible. This section briefly explains the available options. For more details, refer to the full manual.\\n\\nIf the [b]Embed telemetry to all trusted[/b] option is enabled, openCom Companion will automatically embed telemetry data in outgoing messages to all peers marked as trusted.\\n\\nWith the [b]Sync all known telemetry to collector[/b] option enabled, openCom Companion will send not only its own, but all collected telemetry data to the specified collector address. This can be useful for aggregating data from many different areas onto collectors, and for distributed configurations.\\n\\nIf the [b]Always use propagation for telemetry[/b] option is enabled, openCom Companion will never attempt to directly delivery outbound telemetry, but will always send it via the active propagation node.\\n\\nThe [b]Try propagation if direct delivery fails[/b] option will make openCom Companion attempt to send outbound telemetry via the active propagation node, if direct delivery to the recipient fails.\\n\\nIf [b]Allow requests from all trusted[/b] is enabled, any peer marked as trusted will be able to perform requests on this openCom Companion instance.\\n\\n[b]Warning![/b] If the option [b]Allow requests from anyone[/b] is enabled, [i]any peer[/i], on [i]all reachable reticules[/i] will be able to query and access telemetry data stored on this instance. This can be very useful for emergency situations, rescue operations and public coordination, but should be used with [b]extreme caution[/b].\\n\\n[b]Requests[/b] enables remote peers to query telemetry data collected by this instance, and to run available statistics commands. Available commands are currently [b]ping[/b], which requests a small response message, [b]echo[/b] which requests an echo reply of the specified text, and [b]sig[/b] which requests a sigal report, if available.\\n"
size_hint_y: None
text_size: self.width, None
height: self.texture_size[1]

View File

@ -67,17 +67,17 @@ package_data = {
]
}
print("Packaging Sideband "+__version__+" "+__variant__)
print("Packaging openCom Companion "+__version__+" "+__variant__)
setuptools.setup(
name="sbapp",
name="occ",
version=__version__,
author="Mark Qvist",
author_email="mark@unsigned.io",
author="Liberated Embedded Systems",
author_email="contact@liberatedsystems.co.uk",
description="LXMF client for Android, Linux and macOS allowing you to communicate with people or LXMF-compatible systems over Reticulum networks using LoRa, Packet Radio, WiFi, I2P, or anything else Reticulum supports.",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://unsigned.io/sideband",
url="https://git.liberatedsystems.co.uk/jacob.eva/opencom_companion",
packages=packages,
package_data=package_data,
include_package_data=True,
@ -87,8 +87,8 @@ setuptools.setup(
"Operating System :: OS Independent",
],
data_files = [
('share/applications', ['sbapp/assets/io.unsigned.sideband.desktop']),
('share/icons/hicolor/512x512/apps', ['sbapp/assets/io.unsigned.sideband.png']),
('share/applications', ['sbapp/assets/uk.co.liberatedsystems.occ.desktop']),
('share/icons/hicolor/512x512/apps', ['sbapp/assets/uk.co.liberatedsystems.occ.png']),
],
entry_points= {
'console_scripts': [