2025-03-15 11:12:50 -06:00
2025-03-11 22:41:01 -06:00
2025-03-15 11:12:50 -06:00
2025-03-11 22:41:01 -06:00

poomer-zmq-client_server

c++ cross platform prototype zmq rep-req client and server with encryption

ZeroMQ messaging library

server starts in pubkey server mode, allowing one client to grab the pubkey

  • keypairs are generated on every start creating a purely encrypted connection.
  • Host verification and Trust on First Usage security design pattern are not incorporated. (ie .ssh/know_hosts)
  • used tcp ports 5555, 5556, 5557
  • [TODO] backport bellatui Args, requires making bella_scene_sdk a dependency

Usage

  • [TODO] Fill in

Build

workdir/
├── libzmq/
├── cppzmq/
├── poomer-zmq-client_server/

( additional Windows package manager dependency )
├── vcpkg/

( additional MacOS package manager dependency )
└── homebrew/

Linux

//apt install -y libzmq-dev
//ldconfig
apt install -y libtool
apt install -y libsodium-dev
apt install -y cmake
mkdir workdir
cd workdir
apt install libgnutls28-dev 
apt install pkg-config 
git clone https://github.com/zeromq/libzmq
cd libzmq
mkdir build
cd build
cmake .. -DENABLE_CURVE=ON -DWITH_LIBSODIUM=/usr/include/sodium
cd ../..
git https://github.com/zeromq/cppzmq
cd cppzmq
mkdir build
cd build
cmake .. 
g++ server.cpp -o server -lzmq -Wl,-rpath,.
g++ client.cpp -o client -lzmq -Wl,-rpath,.
  • [TODO] wrap in a makefile, see bellatui
  • [TODO] put in bin/Linux
  • [TODO] get rid of package manager

MacOS

Install Cmake to /Applications

curl -LO https://github.com/Kitware/CMake/releases/download/v3.31.6/cmake-3.31.6-macos-universal.dmg
open cmake-3.31.6-macos-universal.dmg 

Install Xcode

mkdir -p workdir/homebrew
cd workdir
curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip-components 1 -C homebrew
eval "$(homebrew/bin/brew shellenv)"
brew update --force --quiet
//chmod -R go-w "$(brew --prefix)/share/zsh"
brew install libsodium
//brew install gnutls
brew install pkg-config
git clone https://github.com/zeromq/libzmq
cd libzmq
mkdir build
cd build
/Applications/CMake.app/Contents/bin/cmake .. -DENABLE_CURVE=ON -DWITH_LIBSODIUM=../../homebrew/Cellar/libsodium/1.0.20/include/sodium -DSODIUM_INCLUDE_DIRS=../../homebrew/Cellar/libsodium/1.0.20/include -DSODIUM_LIBRARIES=../../homebrew/Cellar/libsodium/1.0.20/lib/libsodium.a
make -j4
cd ../..
git clone https://github.com/zeromq/cppzmq
git clone https://github.com/oomer/poomer-zmq-client_server.git
cd poomer-zmq-client_server
g++ -std=c++11 server.cpp -o server -I../libzmq/include -I../cppzmq -L../libzmq/build/lib -lzmq -Wl,-rpath,. 
g++ -std=c++11 client.cpp -o client -I../libzmq/include -I../cppzmq -L../libzmq/build/lib -lzmq -Wl,-rpath,. 
cp ../libzmq/build/lib/libzmq.5.dylib .
  • [TODO] wrap in a makefile, see bellatui
  • [TODO] put in bin/Darwin
  • [TODO] clears compile time warnings
  • [TODO] get rid of package manager

Windows

Install Visual Studio Community with Desktop C++ open a x64 Developer Shell

mkdir workdir
cd workdir
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg; .\bootstrap-vcpkg.bat
.\vcpkg.exe install boost:x64-windows zeromq[sodium]:x64-windows
.\vcpkg.exe install cppzmq:x64-windows
.\vcpkg integrate install
cd ..
git clone https://github.com/oomer/bellatui.git
cd bellatui
cl /std:c++17 client.cpp -Fe:client.exe -Ic:..\vcpkg\installed\x64-windows\include\ /link ..\vcpkg\installed\x64-windows\lib\libzmq-mt-4_3_5.lib
cl /std:c++17 server.cpp -Fe:server.exe -Ic:..\vcpkg\installed\x64-windows\include\ /link ..\vcpkg\installed\x64-windows\lib\libzmq-mt-4_3_5.lib
  • [TODO] create a .vcxproj, see bellatui
  • [TODO] get rid of package manager
Description
Prototype cross platform zmq req-rep client and server
Readme MIT 55 KiB
Languages
C++ 100%