Cluster Lock (cluck)

The cluck project is our an implementation of a cluster wide lock mechanism one can use to obtain a lock and run code synchronously in a whole cluster.

Git repository: https://github.com/m2osw/cluck

Communicator Daemon

The Communicator Daemon is a service used to communicate between any number of nodes in any number of clusters, local (same LAN) and remote. The network connection can be plain text (LAN, fast) or encrypted (remote, safe).

The Communicator service supports a text message which has its own compact format. You may also use JSON if it makes it easier with your systems (such as a browser).

The daemon supports a basic set of system messages such as QUIT and CONNECT. It comes with a library that other services are expected to use to connect and manage their connection with the Communicator ...

Some of our packages offer additional installation scripts, which, in general, you can use in your postinst or postrm scripts of your project.

For example, the snaplogger is used to manage the logs of other projects using services. When such other projects are created, they are expected to run as a user other than root. This means they will not have enough permissions to create log files or write to log files unless the logs are created with their user and/or group name. This is accomplished using a postinst script which makes sure that the location where logs are created is writable by the ...

I test load with various tools, but most will just send many requests all at once without much control over the rate at which the hits are being sent.

Today I was reading a web post about nginx mirroring and the author mentioned a tool named "hey". It is actually written in Go and can be found here:

https://github.com/rakyll/hey

This tool has options such as the -q to limit the number of requests per second. The -c is also important, it offers a way to define the number of concurrent requests. You can also use the -t option to define a timeout other than the default of 20 seconds ...

Lately, I have been reading about port knocking and saw many posts saying that it is not that safe and therefore rather useless since it adds the burden of knocking before you can connect with a tool such as ssh (for which port knocking is most often implemented).

The fact is that isn't true. It is perfectly safe if you use the proper tools to setup the port knocking and execute it. In fact, wikipedia talks about it and clearly tells you that port knocking with just 3 ports generates some 240+ trillion possibilities which pretty much no hacker can hope to ever break.

The snapwebsites ...

As I've been working on an MP3 decoder/encoder system capable of decoding and encoding MP3 data in parallel, I've had the chance of testing that system with a plethora of worker threads (my main server has 64 CPUs).

Smaller Files

Along the way, I've got many surprises.

First of all, some jobs, even though I have 64 CPUs, do not make use of much more than 8 CPUs. That is, whether I run with 64 or 8, the result is that I get the task done in about the same amount of time. However, when using just 8 CPUs, I can run the command 8 times in parallel and therefore process 8 files ...

Sitter

Sitter

Sitter -- tools to closely watch your serversThe sitter project is a daemon, plugins, and tools that can be used to watch a computer to make sure that it runs smoothly.

It has the ability to verify that a process is running. A service responds to a ping. That the memory is not maxed out. Ensure the disk drive is not close to being full. Etc.

 

Snap Builder

The snapbuilder project is used to build our projects on Launchpad (PPA).

This is a Qt application which lists our projects and allows us to do all the grueling maintenance to keep the packages built at their latest version.

IP Manager

IP Manager LogoThe IP Manager is a tool we created in order to manage our DNS zone files.

Working on those manually is time consuming and many of the parameters (most, actually!) are repeated between all the different files. Not only that, you are much more likely to have (many) mistakes.

Instead, the ipmgr command line tool reads configuration files and transforms them in Bind9 compatible zone files. It also takes care of restarting bind9 when something changed.

Ultimately, we would like to use the rndc and nsupdate tools to dynamically create zones and add sub-domains to them. However, our attempts at using those tools at the time we created ipmgr did not succeed. Setting up the permissions properly seems to require quite a bit of work. Note that although we do not use those tools, the ipmgr configuration files can be setup for dynamically updateable zones. This is important in various situations such as automatically setting up an SSL (TLS really now) certificate with letsencrypt.

snapdev

The snapdev project includes a set of base classes and functions that are header only (a.k.a. inline). A form of std library, if you you wish, but mostly geared toward helper functions we use all over the place.

The following are the features available at time of writing. It is not unlikely to grow every now and then.

as_root.h

If possible, change the current user to the root user. Once done, RAII kicks in and switches back to what was the current user earlier.

This class can also be used to switch to other users. It uses RAII so it is expected to be used within a block of code, not as ...

Snap! Websites
An Open Source CMS System in C++

Contact Us Directly