123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- #!/usr/bin/python3
- #
- # Copyright (c) 2017 milisarge Mps Web Arayüzü için websocket aracı sunucusu
- #
- # Permission is hereby granted, free of charge, to any person obtaining a copy
- # of this software and associated documentation files (the "Software"), to
- # deal in the Software without restriction, including without limitation the
- # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- # sell copies of the Software, and to permit persons to whom the Software is
- # furnished to do so, subject to the following conditions:
- #
- # The above copyright notice and this permission notice shall be included in
- # all copies or substantial portions of the Software.
- #
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- # IN THE SOFTWARE.
- from websocket_server import WebsocketServer
- import os
- import json
- from mps import MpsIslev
- import subprocess
- kamusal_soket="https://localhost:16060/pub/mps?"
- sertifika='/etc/nginx/ssl/mpsweb.crt'
- bilgi_gonder='curl --cacert %s --request POST -H "Accept: text/json" ' % sertifika
- genel_kanal="genel_komut"
- indirme_kanal="genel_komut_indirme"
- iletim_betik="/opt/mpsweb/iletim.sh"
- mps=MpsIslev()
- def tr_cevir(mesaj):
- return mesaj.encode('iso-8859-1').decode('utf-8')
- def genel_iletim(kanal,komut):
- os.system(iletim_betik+" "+kanal+" "+komut+" &")
- def dosya_iletim(kanal,dosya):
- os.system(bilgi_gonder+kamusal_soket+'id='+kanal+' -d @'+dosya)
- # Her elsıkışmadan(handshake) sonra çağrılacak yordam
- def yeni_istemci(istemci, sunucu):
- print("Yeni istemci bağlandı ve verilen id: %d" % istemci['id'])
- sunucu.send_message_to_all("yeni istemci katıldı")
- # İstemci bağlantıyı kestikten sonra çağrılacak yordam
- def istemci_cikis(istemci, sunucu):
- print("İstemci(%d) ayrıldı" % istemci['id'])
- # ws_araci / istemci
- # İstemci bir mesaj gönderdiğinde çağrılacak yordam
- def gelen_mesaj(istemci, sunucu, mesaj):
- if len(mesaj) > 200:
- mesaj = mesaj[:200]+'..'
- print("İstemci(%d) gönderdi: %s" % (istemci['id'], mesaj))
- mps_param=["@-kl","@kur","@odkp","@-dly"]
- if mesaj == "ping_dur":
- komut="killall -9 ping"
- genel_iletim(genel_kanal,komut)
- if mesaj == "ping":
- komut="ping 127.0.0.1"
- genel_iletim(genel_kanal,komut)
- if mesaj == "islem":
- os.system("./borulama "+indirme_kanal+" ./paketvt.sh")
- #os.system("./borulama ./paketvt.sh &")
- if "kamusal_mesaj=" in mesaj :
- icerik=mesaj.split("=")[1]
- sunucu.send_message_to_all(icerik)
- if any(x in mesaj for x in mps_param):
- genel_iletim(genel_kanal,mesaj)
- if "pkbilgi=" in mesaj :
- paket=mesaj.split("=")[1]
- mps.bilgi(paket)
- mps.kos()
- dosya_iletim("paket_bilgi","/tmp/mps_paket_bilgi_"+paket+".html")
- if "sistem_yukselt" in mesaj :
- genel_iletim(genel_kanal,mps.yukselt())
- if "pktalimat=" in mesaj :
- paket=mesaj.split("=")[1]
- genel_iletim(genel_kanal,mps.talimat(paket))
- if "pkkur=" in mesaj :
- paket=mesaj.split("=")[1]
- komut="mps kur "+paket+" --normal"
- genel_iletim(indirme_kanal,komut)
- if "pksil=" in mesaj :
- paket=mesaj.split("=")[1]
- komut="mps sil "+paket+" evet --normal"
- genel_iletim(genel_kanal,komut)
- if "pkkdl=" in mesaj :
- paket=mesaj.split("=")[1]
- komut="mps -kdl "+paket+" --normal"
- genel_iletim(genel_kanal,komut)
- if mesaj == "pkliste":
- #os.system("mps paketler --json")
- subprocess.call(['mps','paketler', '--json'])
- dosya_iletim("paket_liste","/tmp/mps_paketler_listesi")
- if mesaj == "pkgrupliste":
- mps.gruplar()
- mps.kos()
- dosya_iletim("paket_grup_liste","/tmp/mps_paket_grup_listesi")
- if "grup_paketler=" in mesaj :
- grup=mesaj.split("=")[1]
- grup=tr_cevir(grup)
- mps.grup_paketler(grup)
- mps.kos()
- dosya_iletim("grup_paketler_liste","/tmp/mps_grup_paketler_listesi")
- if mesaj == "sistem":
- komut="./sistem_bilgi.sh"
- #genel_iletim(genel_kanal,komut)
- #os.system('curl --request POST -H "Accept: text/json" http://127.0.0.1:36060 --data `./sistem_bilgi.sh`')
- sunucu.send_message(istemci,"sistem bilgisi gönderildi")
- if mesaj == "pingo":
- os.system("killall borulama")
- PORT=36060
- sunucu = WebsocketServer(PORT)
- sunucu.set_fn_new_client(yeni_istemci)
- sunucu.set_fn_client_left(istemci_cikis)
- sunucu.set_fn_message_received(gelen_mesaj)
- print ("%s portunda mps websocket aracı sunucusu çalışıyor" % PORT)
- sunucu.run_forever()
|