Peer-to-peer chat application for network communication with ability to setup data transmission limitations, separated groups and multiple-users-on-one-machine support.
Imagine, you have a single terminal server that you use to access some protected environment, for example, RDP-server. Also you have a lot of sensitive data under that protected environment. In common case limited access to that information is allowed and needed, but if a big bunch of data would be exported from protected environment it will be fatal.
RDP server allows you to setup data in- and out- transmission rules, but it has no flexibility in these settings. You can't allow send X bytes of data from RDP server, you may only block or allow it. And this behaviour does not match our requirements.
Skillaz Secure Chat (SSC) allows you to setup communication between RDP server and client machines through network with flexible limitations.
For now, SSC able to setup these limitations:
- Message length (symbols count)
- TBD...
- Download latest release installer for your operation system
- Install on machines you want to setup communication between (see installation sections for different operation systems below)
- Open specific TCP port on machine, where you want to access to (Default:
63211
). - Go to app installation folder and open
appsettings.yaml
, fill upKnownPeers
section with IP addresses of machines, you installed SSC into.- Also you may setup other parameters to fit into your requirements
- Launch SSC on both machines.
To setup communications between two machines you need to make security code that was randomly generated at the first application launch to match onto both applications you want to connect.
If you have 123456
secret code on the first machine, you should set equal secret code on the second machine. Then they will be connected and you could see it in list of connected users.
This allows to create groups of users that able to move from one group to another by changing their secret code if they are located in same network.
Application has built-in settings that could be override in config file appsettings.yaml
.
Note that you should create it and place in directory with application executable to apply settings override.
MaxChatMessageLength: 3000 # max chat message length available to transfer through chat
ListenerTcpPort: 63211 # server tcp/ip port to listen incoming connections
ClientTcpPort: 63211 # client tcp/ip port to connect to remote servers
LogLevel: Off # global log level for all application users (used if this level is higher than user-specific in usersettings.yaml)
KnownRemotePeers:
- 1.2.3.4:63211 # List of remote peers to connect
When user launch application for the first time file usersettings.yaml
generates automatically.
File creates in these folders:
Linux: /home/<username>/.local/share/ssc/usersettings.yaml
MacOS: /Users/<username>/.local/share/ssc/usersettings.yaml
Windows: C:\Users\<username>\AppData\Local\ssc\usersettings.yaml
With this content:
UserId: 00000000-0000-0000-0000-000000000000 # unique user identifier (GUID). Not recommended to change.
Name: "user_name" # username (default - your username providing by OS). Can be changed through GUI
SecretCode: 123456 # secret code. Can be changed through GUI
LogLevel: "Info" # log level
Default logs directories:
Linux: /home/<username>/.local/share/ssc/logs
MacOS: /Users/<username>/.local/share/ssc/logs
Windows: C:\Users\<username>\AppData\Local\ssc\logs
Available log levels (to setup in usersettings.yaml):
- Trace
- Debug
- Info
- Warning
- Error
- Fatal
- Launch .exe installer
- Go through installation wizard till the end
- Launch installed application
-
On target machine execute this:
sudo dpkg -i <path to .deb file on target machine>
-
To show this app into applications menu you need to execute:
sudo cp /usr/share/Skillaz.SecureChat/linux-installer/ssc.desktop /usr/share/applications/ssc.desktop
-
On target machine execute this:
sudo rpm -i <path to .rpm file on target machine>
-
To show this app into applications menu you need to execute:
sudo cp /usr/share/Skillaz.SecureChat/linux-installer/ssc.desktop /usr/share/applications/ssc.desktop
- Open .dmg package on target machine
- Move SSC app to Applications folder
- Because unsinged apps are blocked by macOS we should disable quarantine for downloaded app:
sudo xattr -d com.apple.quarantine "/Applications/SSC.app"
- Launch SSC
- Prepare binaries by this command:
dotnet publish -c Release -r win-x64 --self-contained
- Launch Inno Script Studio
- Compile windows-installer/installer.iss to produce installer .exe file
- Send .exe file to target machine
- dotnet deb
dotnet tool install --global dotnet-deb dotnet deb install
-
Go to sources folder
cd src
-
Execute this to create deb package:
dotnet deb -r ubuntu-x64 -c Release
-
Next move this package to target machine:
scp -i <path to pkey file for ssh authorization> <path to .deb> <remote login>@<target machine remote address>:<target file path .deb file>
- dotnet rpm
dotnet tool install --global dotnet-rpm dotnet rpm install
-
Go to sources folder
cd src
-
Execute this to create rpm package:
dotnet rpm -r fedora-x64 -c Release
-
Next move this package to target machine:
scp -i <path to pkey file for ssh authorization> <path to .rpm> <remote login>@<target machine remote address>:<target file path .rpm file>
- Macbook (or other OSX machine)
- create-dmg utility
-
Firstly, prepare binaries for publishing on target machine:
dotnet publish -c Release -r osx-x64 --self-contained
-
Next move content of generated
osx-x64
folder toosx-installer/SSC.app/Contents/MacOS/osx-x64
folder. -
If you created the .app on Windows, make sure to run
chmod +x osx-installer/SSC.app/Contents/MacOS/Skillaz.SecureChat
from a Unix machine. Otherwise, the app will not start on macOS. -
Create dmg package this way:
create-dmg \ --volname "Skillaz Secure Chat" \ --volicon "src/osx-installer/SSC.app/Contents/Resources/logo.icns" \ --icon "SSC.app" 30 60 \ --hide-extension "SSC.app" \ --app-drop-link 280 60 \ --no-internet-enable \ "Skillaz.SecureChat.osx-x64.dmg" \ "src/osx-installer/SSC.app"
-
Next, launch this command to setup external volume icon:
src/osx-installer/set-ex-icon src/osx-installer/SSC.app/Contents/Resources/logo.icns Skillaz.SecureChat.osx-x64.dmg
-
Distribute this dmg package to target users
You may also check official instruction how to build and distribute .app packages by Avalonia: link