Posts

Showing posts with the label multicast

Multicasting chat with encryption (ECDH P-256 + AES-256-CBC)

Few years ago I published simple Python sample code for the multicasting chat, and this article is a long overdue follow-up that takes that sample to a completely new level. Current IT industry is unimaginable without cybersecurity features, and trends like "zero-trust" rely on complicated crypto algorithms which could be quite overwhelming for beginners. The example C++ code I’ve published could help you to get the ideas and code snippets for your own projects. The full source code is available on Gitlab . DISCLAIMER The code is provided as is, and has issues (including code duplication) as it mostly serves as an education project, not the production-ready code that could benefit from the proper class hierarchies, edge cases handling and better code coverage. First, let’s review the main phases of the application: Parse command line options ( -v - verbose output, -e - apply encryption) Generate EC (elliptic curve, NIST P-256 in the code) k...

Creating video conference application with GStreamer

Image
GStreamer is a library for constructing graphs of media-handling components. The applications it supports range from simple Ogg/Vorbis playback, audio/video streaming to complex audio (mixing) and video (non-linear editing) processing. GStreamer is released under the LGPL, so it can be used in commercial applications. The power of GStreamer is in its module infrastructure - you're working with certain "blocks", combine it with "pipes" and got results without any coding (via gst-launch utility). Of course, after playing with gst-launch you can write an application in any language you prefer (GStreamer supports various bindings and due to fact that GStreamer is written in C, I do not see any problems to bind it with an application that is developed in any serious programming language). I do not want to explain GStream basics, but move forward to the blog topic - creating videoconference application. If you want certain tutorial, please take a look to the P...

Static code analysis tools (with multicasting chat sample)

In the modern world with the fast cycles of software development it is critical to develop applications with high quality but without long periods of testing and bug fixing. One of the key points for gaining such performance is using static code analysis tools. Let me provide some samples of such tools which can be useful for software development: Clang Static Analyzer - open source source code analysis tool that finds bugs in C, C++, and Objective-C programs; PyLint - a static code analyser for Python; Perl-Critic - a static code analysis tool for Perl; FxCop - static analysis for Microsoft .NET programs. There are many other tools, a list of which you can find in wikipedia . Let's do static code analysis of a simple multicasting chat application: Run PyLint for this script. See results below: <skipped> C: 1, 0: Missing module docstring (missing-docstring) C: 9, 0: Invalid constant name "is_listening" (invalid-name) W: 12,20: Redefining name '...