#!/bin/bash
set -e
 
OUTPUT_DIR="cilium-cluster-certs"
rm -rf "$OUTPUT_DIR"
mkdir -p "$OUTPUT_DIR"
 
echo "### Генерация корневого CA"
openssl genrsa -out "$OUTPUT_DIR/ca.key" 4096
openssl req -x509 -new -sha512 -noenc \
-key "$OUTPUT_DIR/ca.key" -days 3653 \
-config cilium-ca.conf \
-out "$OUTPUT_DIR/ca.crt"
 
echo "### Генерация server admin client"
certs=(
    "clustermesh-server" "clustermesh-admin" "clustermesh-client"
)
 
for i in ${certs[*]}; do
  openssl genrsa -out "$OUTPUT_DIR/${i}.key" 4096
 
  openssl req -new -key "$OUTPUT_DIR/${i}.key" -sha256 \
    -config "cilium-ca.conf" -section ${i} \
    -out "$OUTPUT_DIR/${i}.csr"
   
  openssl x509 -req -days 3653 -in "$OUTPUT_DIR/${i}.csr" \
    -copy_extensions copyall \
    -sha256 -CA "$OUTPUT_DIR/ca.crt" \
    -CAkey "$OUTPUT_DIR/ca.key" \
    -CAcreateserial \
    -out "$OUTPUT_DIR/${i}.crt"
   cat "$OUTPUT_DIR/${i}.crt" | base64 | tr -d '\n' > "$OUTPUT_DIR/${i}.crt.b64"
   cat "$OUTPUT_DIR/${i}.key" | base64 | tr -d '\n' > "$OUTPUT_DIR/${i}.key.b64"
   
done
 
# --- Сохраняем корневой ca.crt тоже в base64 ---
cat "$OUTPUT_DIR/ca.crt" | base64 | tr -d '\n' > "$OUTPUT_DIR/ca.crt.b64"
cat "$OUTPUT_DIR/ca.key" | base64 | tr -d '\n' > "$OUTPUT_DIR/ca.key.b64"
 
# --- Сохраняем все данные в values.yaml ---
cat > "values.yaml" <<EOF
tls:
  ca:
    cert: $(cat "$OUTPUT_DIR/ca.crt.b64")
    key: $(cat "$OUTPUT_DIR/ca.key.b64")
clustermesh:
  useAPIServer: true
  apiserver:
    tls:
      auto:
        enabled: false
      server:
        cert: $(cat "$OUTPUT_DIR/clustermesh-server.crt.b64")
        key: $(cat "$OUTPUT_DIR/clustermesh-server.key.b64")
      admin:
        cert: $(cat "$OUTPUT_DIR/clustermesh-admin.crt.b64")
        key: $(cat "$OUTPUT_DIR/clustermesh-admin.key.b64")
      client:
        cert: $(cat "$OUTPUT_DIR/clustermesh-client.crt.b64")
        key: $(cat "$OUTPUT_DIR/clustermesh-client.key.b64")
      remote:
        cert: $(cat "$OUTPUT_DIR/clustermesh-client.crt.b64")
        key: $(cat "$OUTPUT_DIR/clustermesh-client.key.b64")
EOF
 
echo "✅ Все сертификаты готовы в папке: $OUTPUT_DIR"
echo "👉 Используйте содержимое файла: ./values.yaml"
