Skip to content

Instantly share code, notes, and snippets.

View bric3's full-sized avatar
💭
🤨

Brice Dutheil bric3

💭
🤨
View GitHub Profile
@bric3
bric3 / pod-analysis.json
Last active February 18, 2021 16:00
Kubernetes JVM pod analysis using Micrometer, Istio, and Kube state metrics
{
"annotations": {
"list": [
{
"builtIn": 1,
"datasource": "-- Grafana --",
"enable": true,
"hide": true,
"iconColor": "rgba(0, 211, 255, 1)",
"limit": 100,
@bric3
bric3 / libsodium.gradle
Last active November 4, 2020 08:31
Gradle script that downloads prebuilt libsodium for macOS or Linux
apply plugin: 'de.undercouch.download'
OperatingSystem os = org.gradle.nativeplatform.platform.internal.DefaultNativePlatform.currentOperatingSystem;
if(os.isLinux()) {
ext {
debFileName = "libsodium-dev_1.0.17-1_amd64.deb"
debSha256 = "f72e5b1e3a716154c284d98969bb698701daa30b02d755a78d10d460c582d48b"
}
@bric3
bric3 / docker-tag-groups.sh
Last active July 9, 2021 13:22
Group all docker tags by image
#!/usr/bin/env bash
set -euo pipefail
#set -o xtrace
image=${1};
wanted_tag=${2:-""};
max_pages=10;
grouped_tags_tmp=$(mktemp);
@bric3
bric3 / CryptoHackerUsageTest.java
Last active March 9, 2021 15:06
Pre-JKD8u151 that allows to modify the AES key length
import org.junit.Test;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
@bric3
bric3 / PrivateConstructors.java
Created August 27, 2020 08:13
Uses MethodHandle to access private package
public abstract class PrivateConstructors {
// public class CustomIterable<V> implements Iterable<V> {
// CustomIterable() {}
// }
@SuppressWarnings("unchecked")
private static <I extends T, T> I newInstanceOf(Class<T> clazz) throws Throwable {
MethodHandles.Lookup lookup = MethodHandles.privateLookupIn(clazz, MethodHandles.lookup());
MethodHandle methodHandle = lookup.findConstructor(clazz, MethodType.methodType(void.class));
@bric3
bric3 / identities-only-with-teleport.adoc
Last active December 12, 2022 10:32
IdentitiesOnly with teleport configuration

If you use IdentitiesOnly yes in your SSH config, because you want to limit the key info you send to random SSH servers, it may not work for some teleport+ssh services like for git.domain.com One alternative is to have:

Host git.domain.com
    ProxyCommand ssh -A -p 3023 %r@teleport.domain.com -s proxy:%h:22
    IdentitiesOnly no
@bric3
bric3 / hacking_jvm_logging.java
Last active July 28, 2020 22:14
misappropriate Jfr to log your own logs with unified logging, limited to some tag set though
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
import java.util.Arrays;
import java.util.Set;
public class hacking_jvm_logging {
/**
* Logging Level
*
* public enum LogLevel {
@bric3
bric3 / TriggerGcLogsProgrammatically.java
Last active July 24, 2020 13:44
Trigger GC logs programmatically
import javax.management.InstanceNotFoundException;
import javax.management.IntrospectionException;
import javax.management.MBeanException;
import javax.management.MBeanInfo;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import javax.management.ReflectionException;
import java.lang.management.ManagementFactory;
public class TriggerGcLogsProgrammatically {
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.ObjectWriter;
import com.fasterxml.jackson.jaxrs.cfg.EndpointConfigBase;
import com.fasterxml.jackson.jaxrs.cfg.ObjectWriterInjector;
import com.fasterxml.jackson.jaxrs.cfg.ObjectWriterModifier;
import javax.ws.rs.container.ContainerRequestContext;
import javax.ws.rs.container.ContainerResponseContext;
import javax.ws.rs.container.ContainerResponseFilter;
import javax.ws.rs.core.MultivaluedMap;
@bric3
bric3 / CachingInputStream.java
Created July 22, 2020 11:46
Stupid cached inout stream, use with care
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
public class CachingInputStream extends BufferedInputStream {
public static final int DEFAULT_BUFFER_SIZE = 8192;
public static CachingInputStream cache(InputStream source) {
return cache(source, DEFAULT_BUFFER_SIZE);
}