milis/bin/mas

142 lines
3.1 KiB
Plaintext
Raw Normal View History

2017-06-28 22:19:20 +02:00
#! /bin/bash
# milisia ağ sistemi (mas) bash tabanlı konsol uygulaması.
# milisarge <milisarge@gmail.com> 2017
surum="0.0.1"
surumbilgi=" <milisarge@gmail.com> 2017"
anayer="/opt/milisia"
servis="cjdroute"
servisk="cjdns"
pingkontrol="fcf4:e309:14b5:5498:cafd:4f59:4b9c:7f84" # hia.cjdns.ca
ayardosya="ayarlar/milisia_genel.conf"
noktadepo="noktalar"
nokta_adres="https://github.com/milisarge/$noktadepo"
[ ! -d $anayer ] && mkdir -p $anayer
[ ! -d $anayer/ayarlar ] && mkdir -p $anayer/ayarlar
[ ! -c /dev/net/tun ] && aygit_ekle
[ ! -f /usr/bin/$servis ] && mps kur $servisk
[ ! -f /usr/bin/json ] && json_kur
aygit_ekle(){
mkdir -p /dev/net &&
mknod /dev/net/tun c 10 200 &&
chmod 0666 /dev/net/tun
}
json_kur(){
curl -L https://github.com/trentm/json/raw/master/lib/json.js > /usr/bin/json && chmod +x /usr/bin/json
}
baslat(){
cjdroute < $anayer/$ayardosya
}
durdur(){
echo "servis durduruluyor"
killall -9 cjdroute
echo "servis durduruldu"
}
olustur(){
if [ ! -f $anayer/$ayardosya ]; then
cjdroute --genconf | cjdroute --cleanconf > $anayer/$ayardosya
echo "ayar dosyası oluşturuldu"
else
echo "zaten ayar dosyası mevcut!"
echo "yeniden oluşturmak için --zo kullanın"
fi
}
yeniden_olustur(){
mv $anayer/$ayardosya $anayer/$ayardosya-"`date +%m-%d-%y.%H%M%S`"
cjdroute --genconf | cjdroute --cleanconf > $anayer/$ayardosya
echo "ayar dosyası oluşturuldu"
}
genel_kimlik(){
cat $anayer/$ayardosya | egrep -m 1 '"publicKey"' | awk -F '"' '{ print $4 }'
}
ozel_kimlik(){
cat $anayer/$ayardosya | egrep -m 1 '"privateKey"' | awk -F '"' '{ print $4 }'
}
ipv6_al(){
#grep -Eo '"ipv6" :.*?[^\\]",' $ayardosya | awk '{print $3}' ;;
#cat $ayardosya | json.js ipv6
cat $anayer/$ayardosya | egrep -m 1 '"ipv6"' | awk -F '"' '{ print $4 }'
}
nokta_ekle(){
if [ ! -f $anayer/$ayardosya ]; then
olustur
fi
ipadres="`json -f $1 -Ma key | sed -n 1p`"
icerik="`json -f $1 -Ma value`"
json -I -f $anayer/$ayardosya -e 'this.interfaces.UDPInterface[0]["connectTo"]["'$ipadres'"]='"$icerik"' '
}
depo_guncelle(){
if [ ! -d $anayer/$noktadepo ];then
git clone $nokta_adres $anayer/$noktadepo
else
cd $anayer/$noktadepo
git pull
cd -
fi
}
rpc_sifre(){
cat $anayer/$ayardosya | json admin.password
#cat $ayardosya | egrep -m 3 '"password"' | awk -F '"' '{ print $4 }' | sed -n 1p
}
menu() {
while [ "$1" ]; do
case $1 in
yeni|--o)
olustur ;;
zyeni|--zo)
yeniden_olustur ;;
basla|--b)
baslat ;;
yebas|--b)
durdur && baslat ;;
ping|--p)
ping6 $pingkontrol ;;
guncelle|--g)
depo_guncelle ;;
kimlik|--k)
genel_kimlik ;;
okimlik|--ok)
ozel_kimlik ;;
ip|--i)
ipv6_al ;;
ekle|--e)
if [ ! "$2" ]; then
echo "nokta ayar dosyası belirtin!"
exit 1
fi
nokta_ekle $anayer/$noktadepo/$2 ;;
sil|--s)
if [ ! "$2" ]; then
echo "nokta ayar dosyası belirtin!"
exit 1
fi
nokta_sil $anayer/$noktadepo/$2 ;;
rpcs|--rs)
rpc_sifre ;;
dur|--d)
durdur ;;
ekle|--e)
peer_ekle "$2" ;;
surum|--s)
echo "$surum $surumbilgi" ;;
esac
shift
done
}
menu "$@"