2019-11-17 00:19:44 +08:00
import subprocess
import ctypes
2019-11-23 17:20:25 +08:00
from os import *
2019-11-16 16:51:49 +08:00
from time import sleep
2019-11-23 17:20:25 +08:00
from urllib . request import urlopen , urlretrieve
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:20:25 +08:00
urlopen ( host , timeout = 10 )
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 ( )
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:20:25 +08:00
urlretrieve ( url , filename )
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
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:20:25 +08:00
urlretrieve ( url , " loclx-linux-download.zip " )
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:20:25 +08:00
urlretrieve ( url , " lt-linux.zip " )
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 ( )