2019-11-17 00:19:44 +08:00
import subprocess
import ctypes
2019-11-23 17:55:24 +08:00
from os import system , getuid , path
2019-11-16 16:51:49 +08:00
from time import sleep
2019-11-23 17:55:24 +08:00
import requests
2018-10-28 10:42:24 +08:00
from platform import system as systemos , architecture
2019-11-17 00:19:44 +08:00
from subprocess import check_output
2018-11-20 01:49:09 +08:00
from Defs . Languages import *
2018-12-06 09:06:41 +08:00
2018-10-28 10:42:24 +08:00
RED , GREEN , DEFAULT = ' \033 [91m ' , ' \033 [1;32m ' , ' \033 [0m '
2018-11-30 07:20:52 +08:00
installGetText ( )
2018-11-29 04:56:33 +08:00
languageSelector ( )
2019-11-17 00:19:44 +08:00
def checkConnection ( host = ' https://google.com ' ) : # Connection check
2019-04-21 18:15:55 +08:00
system ( ' clear ' )
2018-10-28 10:42:24 +08:00
try :
2019-11-23 17:55:24 +08:00
req = requests . get ( host , timeout = 10 )
if req . status_code == 200 :
print ( " {0} HURRAY!! Internet is available.. We can Continue {1} " . format (
GREEN , DEFAULT ) )
print ( " \n \n {0} Wait! Checking for Neccesary Packages {1} ... \n " . format (
GREEN , DEFAULT ) )
return True
2018-10-28 10:42:24 +08:00
except :
return False
2018-10-30 22:05:25 +08:00
2019-11-17 00:19:44 +08:00
2018-10-30 19:31:22 +08:00
if checkConnection ( ) == False :
2019-11-17 00:19:44 +08:00
print ( ''' {1}
2018-10-30 05:25:28 +08:00
_ _ . ___ ___ ___ _ _ { 0 } ___ _ _ ___ { 1 }
| __ | | ] | ] | | __ | \ | { 0 } | __ \__ / | __ { 1 }
| | | ] __ | ] __ | | __ | \| { 0 } | __ | | | __ { 1 }
2019-04-21 18:15:55 +08:00
{ 0 } [ { 1 } ! { 0 } ] { 1 } ^ Network error ^ . Verify your Internet connection . \n
2019-11-17 00:19:44 +08:00
''' .format(RED, DEFAULT))
exit ( )
2020-01-08 09:18:21 +08:00
def checkPHP ( ) : # PHP installation Check
if 256 != system ( ' which php > /dev/null ' ) : # Checking if user have PHP
print ( " {2} * {0} PHP INSTALLATION FOUND " . format ( MAIN2 , MAIN4 , MAIN0 ) )
else :
print ( " {0} ** {2} PHP NOT FOUND \n {0} ** {2} Installing PHP... " . format ( MAIN2 , MAIN4 , MAIN0 ) )
system ( ' apt-get install php > /dev/null ' )
2019-11-17 00:19:44 +08:00
def checkNgrok ( ) : # Ngrok check
if path . isfile ( ' Server/ngrok ' ) == False : # Is Ngrok downloaded?
print ( ' [*] Ngrok Not Found !! ' )
print ( ' [*] Downloading Ngrok... ' )
2019-05-03 09:05:12 +08:00
if ' Android ' in str ( check_output ( ( ' uname ' , ' -a ' ) ) ) or ' arm ' in str ( check_output ( ( ' uname ' , ' -a ' ) ) ) :
2018-10-28 10:42:24 +08:00
filename = ' ngrok-stable-linux-arm.zip '
else :
ostype = systemos ( ) . lower ( )
if architecture ( ) [ 0 ] == ' 64bit ' :
filename = ' ngrok-stable- {0} -amd64.zip ' . format ( ostype )
else :
filename = ' ngrok-stable- {0} -386.zip ' . format ( ostype )
url = ' https://bin.equinox.io/c/4VmDzA7iaHb/ ' + filename
2019-11-23 17:55:24 +08:00
req = requests . get ( url )
with open ( filename , " wb " ) as file_obj :
file_obj . write ( req . content )
2018-10-28 10:42:24 +08:00
system ( ' unzip ' + filename )
system ( ' mv ngrok Server/ngrok ' )
2019-11-17 00:19:44 +08:00
system ( ' rm ' + filename )
2018-10-28 10:42:24 +08:00
system ( ' clear ' )
2018-12-06 09:06:41 +08:00
2020-01-08 09:18:21 +08:00
def checkOpenport ( ) : # Openport Check
if 256 == system ( ' which openport > /dev/null ' ) :
print ( ' [*] Openport not Installed !! ' )
print ( " [*] Installing Openport... " )
if ' Android ' in str ( check_output ( ( ' uname ' , ' -a ' ) ) ) or ' arm ' in str ( check_output ( ( ' uname ' , ' -a ' ) ) ) :
filename = ' arm/latest.deb '
else :
ostype = systemos ( ) . lower ( )
if architecture ( ) [ 0 ] == ' 64bit ' :
filename = ' debian64/latest.deb ' . format ( ostype )
else :
filename = ' debian32/latest.deb ' . format ( ostype )
url = ' https://openport.io/download/ ' + filename
req = requests . get ( url )
filename2 = ' openport.deb '
with open ( filename2 , " wb " ) as file_obj :
file_obj . write ( req . content )
system ( ' chmod 777 openport* && dpkg -i openport* > /dev/null && rm openport.deb && clear ' )
checkOpenportinstall ( )
def checkOpenportinstall ( ) : # Check If installed properly
if 256 == system ( ' which openport > /dev/null ' ) :
print ( ' [*] Openport not Installed correctly, Try installing it manually !! ' )
print ( ' [*] Check Here ... https://openport.io/download ' )
input ( ' /n Press Enter To Continue ' )
else :
print ( ' [*] Openport Installation Success !! ' )
sleep ( 1 )
def checkPagekite ( ) : # Check Pagekite
if path . isfile ( ' Server/pagekite.py ' ) == False :
print ( ' [*] Pagekite Not Found !! ' )
print ( ' [*] Downloading Pagekite... ' )
url = ' https://pagekite.net/pk/pagekite.py '
req = requests . get ( url )
filename = ' pagekite.py '
with open ( filename , " wb " ) as file_obj :
file_obj . write ( req . content )
system ( ' chmod 777 pagekite.py && mv pagekite.py Server/pagekite.py ' )
print ( ' \n [*] Pagekite install Success !! ' )
print ( ' \n [!] Remember: Pagekite Supports only Python2, Not Supports Python3 ' )
print ( ' [!] So Make Sure You Have installed Python2 as well, if Wants To use Pagekite Tunnel. ' )
system ( ' cd Server && chmod 777 * -R ' )
input ( ' \n Press Enter To Continue ' )
2019-11-17 00:19:44 +08:00
def checkLocalxpose ( ) : # Localxpose check
if path . isfile ( ' Server/loclx ' ) == False : # Is Localxpose downloaded?
print ( ' [*] Localxpose Not Found !! ' )
print ( ' [*] Downloading Localxpose... ' )
2019-10-27 16:51:30 +08:00
if ' Android ' in str ( check_output ( ( ' uname ' , ' -a ' ) ) ) or ' arm ' in str ( check_output ( ( ' uname ' , ' -a ' ) ) ) :
filename = ' loclx-linux-arm.zip '
else :
ostype = systemos ( ) . lower ( )
if architecture ( ) [ 0 ] == ' 64bit ' :
filename = ' loclx-linux-amd64.zip ' . format ( ostype )
else :
filename = ' loclx-linux-386.zip ' . format ( ostype )
url = ' https://lxpdownloads.sgp1.digitaloceanspaces.com/cli/ ' + filename
2019-11-23 17:55:24 +08:00
req = requests . get ( url )
with open ( " loclx-linux-download.zip " , " wb " ) as file_obj :
file_obj . write ( req . content )
2019-11-17 00:19:44 +08:00
system ( ' unzip loclx-linux-download.zip && rm loclx-linux-download.zip ' )
system ( ' mv loclx-linux-* loclx && mv loclx Server/ ' )
2019-10-27 16:51:30 +08:00
system ( ' clear ' )
2019-11-16 16:51:49 +08:00
2019-11-17 00:19:44 +08:00
def checkbinaryLT ( ) : # LocalTunnel Binary File check.
if path . isfile ( ' Server/lt ' ) == False : # Is LocalTunnel downloaded?
print ( ' [*] LocalTunnel Binary File Not Found !! ' )
print ( ' [*] Downloading LocalTunnel... ' )
url = " https://www.wa4e.com/downloads/lt-linux.zip "
2019-11-23 17:55:24 +08:00
req = requests . get ( url )
with open ( " lt-linux.zip " , " wb " ) as file_obj :
file_obj . write ( req . content )
2019-11-17 00:19:44 +08:00
system ( " unzip lt-linux.zip && rm lt-linux.zip " )
system ( " mv lt* lt && mv lt Server/lt " )
2019-11-16 16:51:49 +08:00
system ( ' clear ' )
2019-11-17 00:19:44 +08:00
def checkLT ( ) : # Ask to install npm,node.js,localtunnel(packages).
2019-11-16 16:51:49 +08:00
if 256 == system ( ' which lt > /dev/null ' ) :
2019-11-17 00:19:44 +08:00
system ( ' clear ' )
print ( " {0} [ {1} ? {0} ] Do You Want To Install LOCALTUNNEL(Tunneling Service) Packages. \n {0} [ {1} * {0} ] {1} May take time , Skip if not wants to use LocalTunnel(Package Version). " . format ( RED , GREEN , DEFAULT ) )
choice = input (
" \n ( {1} Y {2} / {2} (N)>> {2} " . format ( RED , GREEN , DEFAULT ) ) . upper ( )
if choice == ' Y ' :
system ( ' clear ' )
installLT ( )
elif choice == ' N ' :
print ( " \n {0} [ {1} ! {0} ] {0} You can not use LocalTunnel(Package Version). \n {0} [ {1} ! {0} ] {0} But still You Can Use LocalTunnel(Binary Version). \n \n \n " . format (
RED , GREEN , DEFAULT ) )
input ( ' Press Enter To Continue ' )
system ( ' clear ' )
2019-11-16 16:51:49 +08:00
else :
2019-11-17 00:19:44 +08:00
return checkLT ( )
else :
print ( " [*] LocalTunnel Packages Found !! " )
sleep ( 2 )
system ( ' clear ' )
def installLT ( ) : # Localtunnel check
print ( ' [*] Installing LocalTunnel... ' )
if ' Android ' in str ( check_output ( ( ' uname ' , ' -a ' ) ) ) or ' arm ' in str ( check_output ( ( ' uname ' , ' -a ' ) ) ) :
system ( " apt-get -y update;apt -y install nodejs npm;npm cache clean -f;npm i -g n;n stable;npm i -g localtunnel-termux;clear " )
checkagainLT ( )
else :
system ( " apt-get -y update;apt -y install nodejs npm;npm cache clean -f;npm i -g n;n stable;npm i -g localtunnel;clear " )
checkagainLT ( )
2019-11-16 16:51:49 +08:00
2019-11-17 00:19:44 +08:00
def checkagainLT ( ) : # Check if Localtunnel installed correctly or not.
2019-11-16 16:51:49 +08:00
if 256 == system ( ' which lt > /dev/null ' ) :
system ( ' clear ' )
2019-11-17 00:19:44 +08:00
print ( ' {1} [ERROR]: LocalTunnel packages haven \' t been installed correctly... {0} ' . format (
DEFAULT , RED ) )
2019-11-16 16:51:49 +08:00
print ( ' ' )
input ( ' [^] Press Enter To Go Back To installation.. ' )
checkLT ( )
else :
2019-11-17 00:19:44 +08:00
print ( ' {1} [SUCCESS] LocalTunnel Installed. {0} ' . format ( DEFAULT , GREEN ) )
2019-11-16 16:51:49 +08:00
sleep ( 2 )
2019-11-17 00:19:44 +08:00
2018-12-06 09:06:41 +08:00
def checkPermissions ( ) :
2019-11-17 00:19:44 +08:00
if systemos ( ) != " Windows " :
if getuid ( ) == 0 :
print ( " {0} Permissions granted! " . format ( GREEN ) )
2018-12-06 09:06:41 +08:00
else :
2019-11-17 00:19:44 +08:00
print (
" {0} Permissions denied! Please run as ' {1} sudo {0} ' " . format ( RED , GREEN ) )
exit ( )
else :
print ( " {0} Windows system not yet compatible. Make sure you ' re using a *Unix OS. {1} " . format ( RED , DEFAULT ) )
exit ( )