#include <iostream>
#include <csignal>
#ifdef _WIN32
#include <Windows.h>
#else
#include <unistd.h>
#endif
using namespace std;
void signalHandler( int signum ) {
cout << "Interrupt signal (" << signum << ") received.\n";
// cleanup and close up stuff here
// terminate program
exit(signum);
}
int main () {
// register signal SIGINT and signal handler
signal(SIGINT, signalHandler);
while(1) {
cout << "Going to sleep...." << endl;
sleep(1);
}
return 0;
}
Tuesday, July 27, 2021
SIGINT handler in cxx
Sunday, April 25, 2021
Convert python dictionary to object
Consider having json response from REST service stored internally in dictionary object. Now, following code converts content of the dictionary to instace of class Test.
Keep in mind though it's just simple demonstration. Enhancement in form of data validation might be required!
from collections import namedtuple
class Test:
def __init__(self, name : str, description : str, float_number : float):
self.name, self.descrition, self.float_number = name, description, float_number
def __repr__(self) -> str:
return f"Test class data: name='{self.name}', description='{self.descrition}', number={self.float_number}"
paramDict = dict(name="Name Property Value", description="Description Property Value", float_number=102.0036)
tstInstance = Test(*(namedtuple('x', paramDict.keys())(*paramDict.values())))
print(repr(tstInstance))
Running the code above prints following representation of the object on the std output:
Test class data: name='Name Property Value', description='Description Property Value', number=102.0036
Saturday, March 6, 2021
Create trustore and keystore for local Kafka and Zookeeper on Windows
Scenario:
- Needed to use local Zookeeper and Kafka with existing CA certificate as well as existing consumer certificate.
- Hence needed to be able to use specific CN for 127.0.0.1, not a localhost
- Modification of windows hosts file not allowed
Used Git Bash i.e. cygwin for this exercise, hence winpty presence on line with openssl command.
keytool -genkeypair -keyalg RSA -keysize 2048 -alias projenvlocal -dname "CN=projenvlocal" -ext SAN=DNS:projenvlocal,DNS:localhost,IP:127.0.0.1 -validity 3650 -keystore server.keystore.jks -storepass pwd1234 -keypass pwd1234 -deststoretype pkcs12 keytool -keystore server.truststore.jks -alias CARoot -import -file projEnvCALocal.crt -storepass pwd1234 -noprompt keytool -keystore server.keystore.jks -alias projenvlocal -certreq -file localhost.csr -storepass pwd1234 winpty openssl x509 -req -CA projEnvCALocal.crt -CAkey projEnvCALocal.key -in localhost.csr -out localhost-signed.crt -days 3650 -CAcreateserial -extfile sign-cert.cnf -extensions server_cert -passin pass:keypwd keytool -keystore server.keystore.jks -alias CARoot -import -file projEnvCALocal.crt -storepass pwd1234 -noprompt keytool -keystore server.keystore.jks -alias projenvlocal -import -file localhost-signed.crt -storepass pwd1234
* passwords are just illustrative of full command line
This part below is the main thing for being able to use certificate's CN as user name for Kafka authentication on localhost/127.0.0.1
-dname "CN=projenvlocal" -ext SAN=DNS:projenvlocal,DNS:localhost,IP:127.0.0.1
Performing of script above create two files, server.trustore.jks and server.keystore.jks .These files need to be used in ssl section of Kafka's server.properties and Zookeeper's zoo.cfg (file names may differ though).