cd /sys/class/net
cp /tls/* /etc/ssl/certs/
for nic in *; do
    ip link set $nic up
done
mkdir -p /custom-installation
cp -a /opt/confluent /custom-installation
touch /custom-installation/confluent/confluent.info
while ! grep NODENAME /custom-installation/confluent/confluent.info; do
    if [ -e /dev/disk/by-label/CNFLNT_IDNT ]; then
        tmnt=/tmp/idntmnt
        mkdir -p /tmp/identdata/
        mkdir -p $tmnt
        tcfg=/tmp/idnttmp
        mount /dev/disk/by-label/CNFLNT_IDNT $tmnt
        cp -a $tmnt/* /tmp/identdata/
        cd $tmnt
        deploysrvs=$(sed -n '/^deploy_servers:/,/^[^-]/p' cnflnt.yml |grep ^-|sed -e 's/^- //'|grep -v :)
        sed -n '/^net_cfgs:/,/^[^- ]/{/^[^- ]/!p}' cnflnt.yml |sed -n '/^-/,/^-/{/^-/!p}'| sed -e 's/^[- ]*//'> $tcfg
        autoconfigmethod=$(grep ^ipv4_method: $tcfg)
        autoconfigmethod=${autoconfigmethod#ipv4_method: }
        . /scripts/functions
        if [ "$autoconfigmethod" = "static" ]; then
            MYIP=$(grep ^ipv4_address: $tcfg | awk '{print $2}'|sed -e s'!/.*!!')
            v4addr=$(grep ^ipv4_address: $tcfg|cut -d: -f 2|sed -e 's/ //')
            MYGW=$(grep ^ipv4_gateway: $tcfg | awk '{print $2}')
            if [ "$MYGW" = "null" ]; then
                MYGW=""
            fi
            MYNM=$(grep ^ipv4_netmask: $tcfg | awk '{print $2}')
            NIC=""
            while [ -z "$NIC" ]; do
                for NICGUESS in $(ip link|grep LOWER_UP|grep -v LOOPBACK|cut -d ' ' -f 2 | sed -e 's/:$//'); do
                    ip addr add dev $NICGUESS $v4addr
                    if [ ! -z "$MYGW" ]; then
                        ip route add default via $MYGW
                    fi
                    for dsrv in $deploysrvs; do
                        if openssl s_client -connect $dsrv:443 > /dev/null 2>&1; then
                            deploysrvs=$dsrv
                            NIC=$NICGUESS
                            break
                        fi
                    done
                    if [ -z "$NIC" ]; then
                        ip -4 a flush dev $NICGUESS
                    else
                        break
                    fi
                done
            done
            ipconfig -d $MYIP::$MYGW:$MYNM::$NIC
            echo $NIC > /tmp/autodetectnic
        else
            rmmod cdc_ether 2> /dev/null
            while [ ! -f /run/confirmednic ]; do
                ALLNETDEVS=$(ip a|grep LOWER_UP|grep MULTICAST|awk '{print $2}'|sed -e s/://)
                rm -rf /run/net* /run/dhcpcd /var/lib/dhcpcd
                for dev in $(ip a|grep MULTICAST|awk '{print $2}'|sed -e s/://); do
                   ip a flush $dev
                   echo 1 > /proc/sys/net/ipv6/conf/$dev/addr_gen_mode
                   echo 0 > /proc/sys/net/ipv6/conf/$dev/addr_gen_mode
                done
                unset DEVICE DEVICE6 IP IP6 dev
                [ -z "$1" ] || DEVICE=$1
                shift
                configure_networking
                echo $DEVICE > /tmp/autodetectnic
                for dsrv in $deploysrvs; do
                    (if openssl s_client -connect $dsrv:443 > /dev/null 2>&1; then
                        echo $dsrv > /run/confirmednic
                        break
                    fi) &
                    chkpid=$!
                    ( sleep 10 && kill $chkpid ) &
                    timeoutpid=$!
                    wait $chkpid
                    kill $timeoutpid 2> /dev/null
                    unset chkpid timeoutpid
                done
                if [ ! -f /run/confirmednic ]; then
                    echo "No connectivity to deployment servers, retrying..."
                    [ -z "$1" ] && set -- $ALLNETDEVS
                fi
            done
            deploysrvs=$(cat /run/confirmednic)
            rm /run/confirmednic

        fi
        MGR=$deploysrvs
        NODENAME=$(grep ^nodename: /tmp/idntmnt/cnflnt.yml | awk '{print $2}')
        echo "NODENAME: $NODENAME" >> /custom-installation/confluent/confluent.info
        echo "MANAGER: $MGR" >> /custom-installation/confluent/confluent.info
        echo "EXTMGRINFO: $MGR||1" >> /custom-installation/confluent/confluent.info
        hmackeyfile=/tmp/cnflnthmackeytmp
        echo -n $(grep ^apitoken: cnflnt.yml|awk '{print $2}') > $hmackeyfile
        cd -
        umount $tmnt
    else
        /opt/confluent/bin/copernicus -t > /custom-installation/confluent/confluent.info
    fi
done
if [ -z "$MGR" ]; then
    MGR="[$(grep MANAGER: /custom-installation/confluent/confluent.info | head -n 1 | awk '{print $2}')]"
fi
osprofile=$(sed -e 's/.*osprofile=//' -e 's/ .*//' /proc/cmdline)
cat /proc/cmdline > /custom-installation/confluent/cmdline.orig
if [ -f /custom-installation/autocons.info ]; then
    cons=$(cat /custom-installation/autocons.info)
fi
if [ ! -z "$cons" ]; then
    echo "Preparing to deploy $osprofile from $MGR" > ${cons%,*}
fi
echo "Preparing to deploy $osprofile from $MGR"
echo $osprofile > /custom-installation/confluent/osprofile
mv /usr/bin/openssl /usr/bin/ossl
cat > /usr/bin/openssl << 'EOF'
#!/bin/sh
AMENDARGS=0
nargs=""
for arg in $*; do
    if [ "$arg" == "-servername"  -o "$arg" == "-verify" ]; then
        AMENDARGS=1
    fi
    if [ "$AMENDARGS" == "1" ]; then
        arg=$(echo $arg|sed -e 's/:443$//' -e 's/\[//' -e 's/\]//' -e 's/%.*//')
    fi
    nargs="$nargs $arg"
done
exec /usr/bin/ossl $nargs
EOF
chmod +x /usr/bin/openssl
echo URL=https://${MGR}:443/confluent-public/os/$osprofile/distribution/install.iso >> /conf/param.conf
fcmdline="$(cat /custom-installation/confluent/cmdline.orig) url=https://${MGR}:443/confluent-public/os/$osprofile/distribution/install.iso"
if [ ! -z "$cons" ]; then
    fcmdline="$fcmdline console=${cons#/dev/}"
fi
echo $fcmdline > /custom-installation/confluent/fakecmdline
mount -o bind /custom-installation/confluent/fakecmdline /proc/cmdline


