Packaging Sox inside electron / react app - reactjs

I have made an electron-app using react. The app uses the command line-utility Sound eXchange (Sox) to manipulate audio. It works in my local environment, but every time i try to run the application on another device, i get the error: "sox could not be found". Naturally this error derives from the fact, that Sox isn't installed on this device.
Have anyone got a clue on how I can make sure that Sox is passed along with my application? I have tried downloading Sox and putting it inside my application, but I think I have to setup some kind of "environment path" then? Presumably, in my package.json file or perhaps in the node-module itself (which is Sox-audio).
If anyone knows how to crack this mystery, please do not hesitate to respond - It is much appreciated! Thanks in advance!

Related

How to lock an exe file?

(Sorry in advance, if I have the wrong tags)
Hello!
So I am trying to work on a personal WPF project which would allow the client application exe to download another application exe (Unity Application) and open it within the client exe's Grid. Everything is working fine.
But, I am wondering if there's a way to "lock" the downloaded application in a way that only my client exe can open the downloaded exe?
Here's the only solution I have thought of but not sure with
Check for command line arguments within the Unity Applications
This works well but people who knows about the existence of decompiler might be able to decode that I am trying to check the arguments, and input relevant data there. :(. So, it won't help too much?
Thanks for any insights.
-Kevin
There is no non-hackable solution, you can only make it harder for crackers to break into the app by code obfuscation (hard to read the code) + adding integrity checks (make sure that your app is not modified).. There are commecial apps out there to do this (ex. PreEmptive), and their solutions differ from each other, nothing is ultimate.
Anyway, You might make Unity Application read some file or some registry value that Client application has updated just before launching the Unity Application, along with command line args method that you mentioned..

Mongo DB - bash: mongo: command not found

So I have been learning about databases and I'm new to it. In my udemy course the video was outdated for the installation of MngoDB version 6.0.1. The video instructor showed a way to install it using the vim editor. However it didn't work for me. Then I discovered that many people are going through the same problem and a guy told a solution to delete the file created with vim and instead use "system environment variable". I edited the path by adding a new one in which I did exactly as the guy mentioned to specify the 'bin' folder inside mongoDB in the Program files. And when I tried to run the 'mongod' command inside hyper I got this at the last line.
{"t":{"$date":"2022-09-09T10:05:27.885+05:30"},"s":"I", "c":"NETWORK", "id":23016,
"ctx":"listener","msg":"Waiting for connections","attr":{"port":27017,"ssl":"off"}}
The instructor did mention that I should see something like "Waiting for connections at port 27017". However the last line in hyper doesn't explicitly mention it in one line, but I think that's fine. Because the instructor was using a mac and I am using a Windows device. Now here comes the main error. When I open a new tab in Hyper and type 'mongo', I get this error
$ mongo
bash: mongo: command not found
I've researched a lot on stackoverflow but nothing helped me in the end. However I can provide with something that might help in figuring out the solution. Here's something unusual that I noticed. The 'bin' folder in C:/ProgramFiles/MongoDB/Server/6.0 seems to contain very few files. It has only 2 .exe applications namely - 'mongod.exe' & 'mongos.exe'. There is no 'mongo.exe' that my instructor has on her computer. I think this might be the root of the problem, however I'm not sure. also there are other files that seem to be missing. But I would like to mention that I've not tampered the files even once since I've installed them from the setup. I hope this is enough for you guys to solve this. Please help me.

WebkitGtk application is not loading file URL

I am building a kiosk application using webkitgtk on the raspberry pi 4.
This application will not be connected to the internet and all the html,css, javascript for the UI are all located on the local filesystem.
I am using buildroot to setup the Linux system, starting with the pi 4 defconfig provided in buildroot.
I have enabled all the packages needed to get webkitgtk running.
Also, the kiosk application has been tested on my desktop, using the same software stack and it works
However, when i try to launch the application on the raspberry pi, a blank page pops up. I have played around with the WebKitWebSettings object associated with my WebKitWebView by enabling local file access. It still shows up a blank screen.
Also included in my pi4 application bundle is a simple gtk3+ application. This launches successfully!
I will really appreciate some pointers as to why this is happening as i have sort of reached a dead end
UPDATE
I enabled the MiniBrowser app that comes with the Webkitgtk package.
Entering the local url, The page does not load. It only gives me a message at the top saying "Successfully downloaded".
It seems to be treating my input as a download
UPDATE 2
After some more experimenting, i was finally able to get webkitgtk working on the pi 4.
The problem seems to originate from using the webkit_web_view_load_uri() api.
It does not seem to recognize my html document as a web page.
I got around it using the webkit_web_view_load_html() call. This included some hacks by first reading in the contents of the html doc into a character buffer, and passing it to webkit_web_view_load_html().
You also have to provide a base path to this function call to be able to resolve all the urls (scripts, css, images etc) in your html document.
Another problem i haven't been able to work around is, SVG images are not loading in webkitgtk. I have used jpg formats and they work. I suspect this my be due to a configuration switch in building webkigtk
It's hard for me to figure out what might be happening without having access to your environment and settings. My gut feeling is that pages are showing blank because perhaps some shared libraries are missing. You can check that with:
$ ldd WebKitBuild/GTK/Release/bin/MiniBrowser
I am using buildroot to setup the Linux system, starting with the pi 4 defconfig provided in buildroot.
There's a buildroot repository for building WPE for RPi. WPE (WebPlatform for Embeded) is like WebKitGTK but doesn't depend on GTK toolkit. Another important difference is that WPE runs natively on Wayland.
If you're interested in having a webapp embedded in a browser running in a device with limited capabilities, WPE is a better choice than WebKitGTK. The buildroot repo for building WPE for RPi is here:
https://github.com/WebPlatformForEmbedded/buildroot
There's is also this very interesting step-by-step guide on how to build WPE for RPi3:
https://samdecrock.medium.com/building-wpe-webkit-for-raspberry-pi-3-cdbd7b5cb362
I'm not sure whether the buildroot recipe would work for RPi4. It seems to work for all previous versions, so you might be stepping in new land if you try to build WPE on RPi4.
If you have an RPi3 available I'd try to build WPE for RPi3 first, and make sure that works. Then try for RPi4.

Flash drive webserver

Hopefully someone here can help me out.
Currently I have a small AngularJS app. I want to put this on an USB drive and make it very easy to run. The idea is someone can just plug in the drive click a file and run the app. I've been thinking about using node for this and then make a little script that would start the server and app. So people can click the script and the app runs. The problem is however (afaik) you need to have node installed on the computer which can't be done.
The client hasn't got his webserver running and still want to run the app. So please don't tell me why would you make an angular app and wanna run it without webserver.
Hopefully anyone has any solution or idea to make this work.
So in short:
AngularJS Application on USB
Plug in the USB, click a file and run the app in the browser.
Thanks for reading and thinking with me.
Have you considered running a standard web server on the USB Stick?
I see that you have suggested Node, but another alternative could be to use XAMPP?
XAMPP is a completely free, easy to install Apache distribution containing MariaDB, PHP, and Perl. The XAMPP open source package has been set up to be incredibly easy to install and to use.

Make netbeans use virtual box guest installation of phpunit

We use netbean's phpunit / unit testing plugins for all our testing. We used to use xampp and point netbeans at our our .bat file from the xampp installation. We recently started using vagrant and are now running our dev environment in virtual box. I would like to make netbeans use the installation of phpunit within the virtual machine. This would save us from having to have both installed. Is this even possible? Netbeans seems to want a file location and I am stumped as to how I can go about doing this.
[EDIT] I've created a custom batch file that uses vbox guestconrols to forward the commands to the VMs installation of phpunit. I am going to then point netbeans at my custom .bat file. My problem is, now, that guestcontrols doesn't seem to be forwarding --bootstrap. It seems to be trying to take it and use it, rather than forward it along. The docs say that all the additional arguments will just be passed on, but that doesn't seem to be the case. Here is what I am using in my my_phpunit.bat :
[my_phpunit.bat]
#echo off
if "%VBoxManage%" == "" set VBoxManage=C:\Program Files\Oracle\VirtualBox\VBoxManage.exe
"%VBoxManage%" "--nologo" "guestcontrol" "<my_vm_name>" "execute" "--image" "/usr/bin/php5" "/usr/bin/phpunit" "--verbose" "--username" "<user>" "--password" "<pass>" "--wait-stdout" "--wait-stderr" "CustomNetbeansTestSuite" "<path/to/test/suite>" "--bootstrap" "<path/to/bootstrap>" %7
I am almost there, as running the bat file without the bootstrap option at the end takes me to the unit test. I am getting exceptions because of some autoloader issues(no bootstrap), but if I can figure out a better way to forward these command line arguments to
[EDIT 2]
I think I've finally solved this, but I need to get some issues with my guest OS in order. Once I've been able to test it a bit more, I'll post the final solution. I solved the Vbox guest control issue by adding "--" before I actually sent the parameters that should be forwarded. It said to do so in the docs, but it wasn't entirely clear to me at first.
I just wanted to update that I never actually got the .bat file to work. I think I got pretty close, but I was hung up on some linux CLI output that I couldn't suppress. The .bat file that I ended up with was:
# .bat example
https://pastebin.com/BX1xnL3q
I ended up moving to PhpStorm and everything worked out of the box. So, if you're still using netbeans, you can try and give that a shot. Maybe someone with more unix / linux experience can fix the issues I was having. I feel I was like 99% there with it.

Resources