v2ray+chk_FastlyCDN_U18


SUBMITTED BY: repremaq09

DATE: Aug. 23, 2023, 9:18 p.m.

UPDATED: Oct. 12, 2024, 2:53 p.m.

FORMAT: Text only

SIZE: 35.0 kB

HITS: 4761

  1. mediafire.com/file/pz93ofnhbw1c0gs/METODO_V2RAY_%2528FOGO_NO_PARQUINHO%2529.zip/file
  2. -Desligar CF dos dominios!
  3. -BACKUP ---> script->10->10->7 | /etc/v2ray/config.json | v2Back_n_IPTV (| ./v2.sh) ... So fazer a remocao dos user, de fato, depois de transferi o vps e pa
  4. -Se for venda de VPS, injetar 10 uuid Worms na maq do cli /etc/v2ray/config.json :)
  5. -Atentar ao fato de que a CDN queima IP, por isso a VPS tem que estar em uma plataforma, e prover servicos, que possam ter as VPS destruidas para renovacao de IP.
  6. -v2ray VPS need be install WO IPV6, with 1.1.1.1/32 CIDIR ip to invalid update on this. After this, change to MANUAL NETPLAN scheme. See FTP paste! This /32 install model, already will creat an default structures NETPLAN .yaml. Simply see Vultr 'our networking configuration tips' and paste this shit xD
  7. -CAUTION TO RESTART VPS! AWAYS stop script, stop v2ray(on v2ray cmd) and set again passwd! this shit is constantly fuckng root password(add this UNCHAGE to some script)! Remember to ban BTT on v2ray app!
  8. - To ANY IO error on app during conection. VeriFY CDN!
  9. -Rebooting this VPS can cause fuck(ATT ON PASSWD LOOP ALSO!) to networking. Cuz v2ray depends on DNS, n wrong restart this shit fuck the DNS sys on vps :P
  10. -/\So much accessess on same link can fuck this shit traffic out. /\
  11. BEGIN
  12. --------------------------------------
  13. Fastly so da 50usd free(+-250gb)... ai tem q ir fazendo conta
  14. https://manage.fastly.com/auth/sign-in
  15. -----------
  16. NOVO METODO NAO PRECISA DE DOMINIO!!
  17. -Poe um "dominio" fake la em "Domains" com extensao .com ou .xyz . no meu caso criei alexxx.xyz
  18. -no host poe apenas o ip da maquina e prossegue como antes normalmente ;)
  19. ---------
  20. ""Cria CNAME e aponta esse link j.sni.global.fastly.net ... depois que seta o script la e ta tudo SUCCESS, muda pra -> landing.filestack.com ... na CF""
  21. -Scriptage deve comecar apos a configuracao da distribuicao do CDN(ja na parte do "Check Cache")
  22. -Fazer o procedimento de ate a metade do video ;).
  23. CDN Lbspybot94))))0
  24. -------------------------------------- Lbspybot94))))0> sobralluiz3231@outlook.com infraestructure-leadership,,
  25. -Criacao de conta/distribuicao e Outlook deve ser feita em MAQUINA+MAC/BROWSER LIMPOS, em IP 3g ou diferenciado e com dominio/paísVPS novo(pode usar msm conjunto de dominios se mudar pais da VPS)! Esse dominio temque ter o CACHE PURGADO(la na CF)!
  26. Ou seja, antes de abrir o NAVEGADOR(Brave em experimento) LIMPO(dados de todo o tempo limpos):
  27. -Limpar maquina com Ccleaner PRO(depois Brave com crtl+del ALL), trabalhar mudanca de MAC com TMAC e Mudar IP/PAIS de VPS(destruir vps Vultr p muda ip/rede/pais da VPS)
  28. CF domínio tipo A com IP da vps
  29. Proxy das operadoras
  30. TIM EXPIRADO = js-agent.newrelic.com
  31. 151.101.2.133
  32. 151.101.66.133
  33. 151.101.130.133
  34. 151.101.194.133
  35. TIM -> SNI V2RAY PEGANDO
  36. *sni*: giphy.com
  37. *Tim saldo válida*
  38. *Sejam felizes*
  39. CLARO = westcoastkids.ca
  40. VIVO = 151.101.2.133
  41. landing.filestack.com
  42. 146.75.122.133
  43. 104.18.7.41
  44. 172.64.150.8 easy spotify
  45. SNI -> landing.filestack.com
  46. Vcl da cdn
  47. if (req.http.Upgrade) {
  48. return (upgrade);
  49. }
  50. SCRIPTING
  51. --------------------------------------
  52. -Por junto qualquer WebS/S80 que seja de payload versatil(aquelas que podem ser alteradas sem trocar IP c vendor). Ex.: TIM DAT.EXP. & VIVO WebSS80/80
  53. -Usar SCRIPT SOMENTE pra configurar[1][2][4], adicionar[5], eliminar(so o q esta listado no Kiritoº)[6] e consultar dias[7].
  54. -Consultar UUID[7] para apagar user através da chave no /etc/v2ray/config.json e dar restart v2ray(nao precisa apagar do script, pode por varios user igual la xD).
  55. - esse file tb faz o BACKUP dos user la do block /\
  56. - cheaterEmail.sh filtra log para que seja mostrado a "quantidade de IPs" conectadas à 1 'email'. e vai expor o primeiro 'email' que possui mais de um IP. e armazenar ele no file ./emailprefix
  57. - getUUID.sh imprime o id associado a esse email(do emailprefix), oriundos do /etc/v2ray/config.json. E, esse mesmo script tambem pode zerar e reiniciar o v2ray, caso altere algum UUID.
  58. A operacao do conjunto consiste em verificar o `mail` que tem mais de uma conexao simultanea(cheaterEmail.sh), injeta-la no ./emailprefix, e, depois que o email estiver formatado nesse ./emailprefix(1 mail so), lanca getUUID.sh pra pegar o UUID do email que ta la dento
  59. *Loop do script rodara de 1 em 1m. pois o resultado é o null do UUID, "bloqueando" o acesso do usuario.
  60. /var/log/v2ray/acesss.log shows live user logon by e-mail and (xxx).(xxx).(xxx).xxx set lines. ao qual qualque (xxx) é diferente na medida em que é outro device entra com mesmo e-mail user E em rede/antena mais distante, portanto se ler access.log e identificar entradas do mesmo e-mail mas com (xxx) diferente, significa que outro device esta logando com o mesmo e-mail/UUID.
  61. BACKUPING/Ciclo da CDN
  62. -------------------------------------------
  63. - Its made by Saving n transplanting the /etc/v2ray/config.json big user(only) block to the new generated config.json(new path and domain), n restart v2ray service. After that its necessary to instruct all clients(and revs) to change Path and Domain in their NapsternetV v2ray config ;)
  64. - ./v2Back_n_IPTV is the ethernal moving file xDDD dont erase it
  65. ---------------------------------
  66. CODE
  67. -----------------------
  68. ############# WPANEL _V2 USER LOOKUP/EXCLUSING ##############
  69. -Deixar criado um `./v2List.sh>./v2snap` em tempo de outrora. Pra em tempo presente criar o `./v2List.sh>./v2snap2` e usar ./v2SnapCheck.sh pra ver os q tinha em outrora q n tem mais xD
  70. -Os users novos, que aparecerão no snap atual(./v2List.sh), estaão posicionados abaixo do último user, não excluido, do snap anterior(./v2snap).
  71. -------------- LISTA '_V2'/'_V2' USERS IN WPANEL --------------
  72. cat v2List.sh
  73. #!/bin/bash
  74. # Defina o caminho para o arquivo /etc/passwd
  75. passwd_file="/etc/passwd"
  76. # Inicialize uma variável para contar os usuários
  77. count=0
  78. # Use um loop while para ler cada linha do arquivo /etc/passwd
  79. while IFS= read -r line; do
  80. username=$(echo "$line" | cut -d: -f1)
  81. if [[ "$username" == *_v2* || "$username" == *_V2* ]]; then
  82. echo "$username"
  83. chage -l "$username" | grep "Account expires" | cut -d: -f2- | sed 's/^[[:space:]]*//'
  84. ((count++))
  85. fi
  86. done < "$passwd_file"
  87. # Imprima o número total de usuários encontrados
  88. echo "Número total de usuários que terminam em '_v2' ou '_V2': $count"
  89. -------------- ANALIZA ./v2snap E ./v2snap2 PRA VER QUAIS ESTAO EM 1 E N EM 2 --------------
  90. ** Ou seja, os user que os rev apagaram desde a criacao do v2snap.
  91. ** Antes de executar tem que criar o v2snap2 ;)
  92. cat v2SnapCheck.sh
  93. #!/bin/bash
  94. # Define os caminhos dos arquivos v2snap e v2snap2
  95. file1="./v2snap"
  96. file2="./v2snap2"
  97. # Verifica se os arquivos existem
  98. if [ ! -e "$file1" ] || [ ! -e "$file2" ]; then
  99. echo "Um ou ambos os arquivos não existem."
  100. exit 1
  101. fi
  102. # Lê os usuários do arquivo v2snap e armazena em uma matriz
  103. mapfile -t users_file1 < "$file1"
  104. # Lê os usuários do arquivo v2snap2 e armazena em outra matriz
  105. mapfile -t users_file2 < "$file2"
  106. # Percorre a matriz de usuários do v2snap
  107. for user1 in "${users_file1[@]}"; do
  108. # Verifica se o usuário não está presente no v2snap2
  109. if ! [[ " ${users_file2[*]} " =~ " $user1 " ]]; then
  110. echo "Usuário exclusivo em $file1: $user1"
  111. fi
  112. done
  113. # Finaliza o script
  114. exit 0
  115. ############# VERIFICAR CONEXOES SIMULTANEAS SCRIPTING ##############
  116. Analisa as linhas de LOG e faz o procedimento para, dar como saida, as classes de ip(XXX.XXX.XXX.xxx) diferente, que o mesmo usuario acessou o server
  117. GERA FILE DE LINHAS do LOG -> 'tail -n 600 /var/log/v2ray/access.log > ./LINHAS'
  118. \/ linha abaixo que dev ser acompanhada
  119. echo $first_multiple_ips_group"@gmail.com" > ./emailprefix
  120. cat cheaterEmail.sh
  121. #!/bin/bash
  122. # Lê as linhas do arquivo "LINHAS" no mesmo diretório do script
  123. tail -n 600 /var/log/v2ray/access.log > ./LINHAS
  124. mapfile -t lines < "$(dirname "${BASH_SOURCE[0]}")/LINHAS"
  125. declare -A grouped_results
  126. first_multiple_ips_group=""
  127. for line in "${lines[@]}"; do
  128. # Extrair endereço IP da terceira coluna
  129. ip=$(echo $line | awk '{split($3, ip, ":"); print ip[1]}')
  130. # Verificar se o IP está no formato xxx.xxx.xxx.xxx
  131. if [[ $ip =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
  132. # Extrair as três partes do endereço IP e juntá-las
  133. ip_parts=$(echo $ip | awk -F "." '{print $1"."$2"."$3}')
  134. # Extrair parte antes do "@" do endereço de e-mail
  135. email_prefix=$(echo $line | awk -F "@" '{print $1}' | awk '{print $NF}')
  136. # Verificar se o email_prefix tem 10 caracteres e não contém caracteres especiais
  137. if [[ ${#email_prefix} -eq 10 && ! "$email_prefix" =~ [^a-zA-Z0-9] ]]; then
  138. # Agrupar resultados com base no email_prefix
  139. if [ -z "${grouped_results[$email_prefix]}" ]; then
  140. grouped_results["$email_prefix"]=$ip_parts
  141. else
  142. # Adicionar IP apenas se ainda não foi incluído
  143. if [[ ! "${grouped_results[$email_prefix]}" =~ "$ip_parts" ]]; then
  144. grouped_results["$email_prefix"]+=" $ip_parts"
  145. fi
  146. fi
  147. # Verificar se este grupo tem mais de 1 IP e guardar o prefixo do e-mail
  148. if [ $(echo "${grouped_results[$email_prefix]}" | wc -w) -gt 1 ]; then
  149. if [ -z "$first_multiple_ips_group" ]; then
  150. first_multiple_ips_group="$email_prefix"
  151. fi
  152. fi
  153. fi
  154. fi
  155. done
  156. # Exibir os resultados agrupados
  157. for email_prefix in "${!grouped_results[@]}"; do
  158. echo "Email Prefix: $email_prefix"
  159. echo "IPs: ${grouped_results[$email_prefix]}"
  160. echo "----------------------"
  161. done
  162. # Exibir o Email Prefix do primeiro grupo com mais de 1 IP
  163. if [ -n "$first_multiple_ips_group" ]; then
  164. echo "Primeiro grupo com mais de 1 IPs: $first_multiple_ips_group"
  165. echo $first_multiple_ips_group"@gmail.com" > ./emailprefix
  166. else
  167. echo "Nenhum grupo encontrado com mais de 1 IPs."
  168. echo "" > ./emailprefix
  169. fi
  170. -------------- PEGA UUID DO user contido em ./emailprefix SCRIPTING --------------
  171. cat getUUID.sh
  172. #!/bin/bash
  173. # Lê o conteúdo do arquivo de texto emailprefix
  174. email=$(cat ./emailprefix)
  175. # Localiza o "id" com base no email na seção "inbounds" do JSON
  176. id=$(jq -r --arg email "$email" '.inbounds[].settings.clients[] | select(.email == $email) | .id' /etc/v2ray/config.json)
  177. echo "O id correspondente ao email $email é: $id"
  178. ############ \/\/\/ SEGMENTO OPCIONAL PARA SUBSTITUICAO E RESTART \/\/\/ ##################
  179. # Substitui a ocorrência do ID pelo valor desejado no JSON
  180. jq --arg email "$email" --arg new_id "00000000-0000-0000-0000-000000000000" '
  181. .inbounds[].settings.clients |= map(if .email == $email then .id = $new_id else . end)
  182. ' /etc/v2ray/config.json > /etc/v2ray/config.json.tmp
  183. mv /etc/v2ray/config.json.tmp /etc/v2ray/config.json
  184. echo "ID substituído por 00000000-0000-0000-0000-000000000000 no JSON."
  185. systemctl restart v2ray
  186. else
  187. echo "Nenhum id encontrado para o email $email na seção 'inbounds'."
  188. fi
  189. ############# RECEPTOR SCRIPTING ##############
  190. passwd.sh
  191. #!/bin/bash
  192. sleep 2
  193. echo lbadwath
  194. sleep 2
  195. echo lbadwath
  196. scriptGet.sh
  197. #!/bin/bash
  198. while :
  199. do
  200. ./passwd.sh | passwd
  201. ./getVPSFile.sh | yafc ftpuser:lbadwath@192.99.252.3
  202. chmod 777 ./backup.vps
  203. ./restoremacro.sh | menu
  204. #./limiterOvpn.sh
  205. sync; echo 1 > /proc/sys/vm/drop_caches
  206. sleep 5
  207. sync; echo 2 > /proc/sys/vm/drop_caches
  208. done
  209. getVPSFile.sh
  210. #!/bin/bash
  211. sleep 1
  212. echo "ls"
  213. sleep 1
  214. echo "get backup.vps"
  215. sleep 1
  216. echo "y"
  217. sleep 1
  218. echo "exit"
  219. restoremacro.sh
  220. #!/bin/bash
  221. echo "15"
  222. echo "2"
  223. sleep 4
  224. echo -ne "\n"
  225. echo "0"
  226. echo "0"
  227. echo "0"
  228. ############# SUBTRATOR DE DIAS TXT(script) BACKUP / IPTV USERS ##############
  229. ########### ESSE SUBTRATOR IMPRIME A SUBTRACAO ############
  230. É usado por pipeamento: cat v2Back_n_IPTV | ./v2BackupPipeSubtrator.sh
  231. cat ./v2BackupPipeSubtrator.sh
  232. #!/bin/bash
  233. # Loop para processar cada linha da entrada
  234. while IFS= read -r linha; do
  235. valor_coluna1=$(echo "$linha" | awk '{print $1}')
  236. valor_colchetes=$(echo "$linha" | awk -F'[][]' '{print $2}')
  237. novo_valor_colchetes=$((valor_colchetes - 1))
  238. linha_modificada=$(echo "$linha" | sed "s/\[$valor_colchetes\]/\[$novo_valor_colchetes\]/")
  239. echo "$linha_modificada"
  240. done
  241. ########### ESSE SUBTRATOR MUDA O FILE ./v2Back_n_IPTV COM SUBTRACAO ############
  242. É usado por pipeamento: cat v2Back_n_IPTV | ./pipeSubtrator.sh
  243. cat pipeSubtrator.sh
  244. #!/bin/bash
  245. # Nome do arquivo de entrada
  246. arquivo_origem="./v2Back_n_IPTV"
  247. # Nome do arquivo temporário
  248. arquivo_temporario="temp.txt"
  249. # Loop para processar cada linha do arquivo de origem
  250. while IFS= read -r linha; do
  251. valor_coluna1=$(echo "$linha" | awk '{print $1}')
  252. valor_colchetes=$(echo "$linha" | awk -F'[][]' '{print $2}')
  253. novo_valor_colchetes=$((valor_colchetes - 1))
  254. linha_modificada=$(echo "$linha" | sed "s/\[$valor_colchetes\]/\[$novo_valor_colchetes\]/")
  255. echo "$linha_modificada"
  256. done < "$arquivo_origem" > "$arquivo_temporario"
  257. # Substituir o arquivo de origem pelo arquivo temporário
  258. mv "$arquivo_temporario" "$arquivo_origem"
  259. -------- REMOVE LINHAS EM BRANCO DO ./v2Back_n_IPTV ---------
  260. cat removeBlank.sh
  261. #!/bin/bash
  262. # Nome do arquivo de entrada
  263. arquivo_origem="./v2Back_n_IPTV"
  264. # Nome do arquivo temporário
  265. arquivo_temporario="temp.txt"
  266. # Remove linhas em branco do arquivo de origem
  267. grep -v '^$' "$arquivo_origem" > "$arquivo_temporario"
  268. # Substituir o arquivo de origem pelo arquivo temporário
  269. mv "$arquivo_temporario" "$arquivo_origem"
  270. # Mensagem de conclusão
  271. echo "Linhas em branco removidas com sucesso do arquivo $arquivo_origem."
  272. ########### RELOGIO QPRA O ./pipeSubtrator.sh + ./removeBlank.sh ############
  273. -crontab -e
  274. -add linha à seguir, que programa o bang pra 1:15AM todo dia \/
  275. 15 1 * * * /bin/cat v2Back_n_IPTV | ./pipeSubtrator.sh
  276. 16 1 * * * /bin/cat v2Back_n_IPTV | ./removeBlank.sh
  277. ########### EXTERNA LINHAS EXPIRADAS ############
  278. ./expirados.sh
  279. #!/bin/bash
  280. # Ler o conteúdo do arquivo v2Back_n_IPTV linha por linha
  281. while IFS= read -r line; do
  282. # Use um comando de expressão regular para extrair o valor entre colchetes
  283. value=$(echo "$line" | grep -oE '\[[0-9-]+\]' | tr -d '[]')
  284. # Verifique se o valor é menor ou igual a 0
  285. if [ "$value" -le 0 ]; then
  286. echo "$line"
  287. fi
  288. done < v2Back_n_IPTV
  289. ########### EXIBE LINHAS COM DIAS <= 0 DO ./v2Back_n_IPTV ############
  290. -É so usar ./exibeExp.sh no mesmo dir(sem pipeamento)
  291. cat exibeExp.sh
  292. #!/bin/bash
  293. # Nome do arquivo de entrada
  294. arquivo="./v2Back_n_IPTV"
  295. # Loop através das linhas do arquivo de entrada
  296. while IFS= read -r linha; do
  297. # Use um comando regex para encontrar os valores entre colchetes
  298. valores_entre_colchetes=$(echo "$linha" | grep -o '\[[^]]*\]')
  299. # Loop através dos valores encontrados
  300. while IFS= read -r valor; do
  301. # Remova colchetes e verifique se o valor é menor que ou igual a 0
  302. valor_sem_colchetes=$(echo "$valor" | tr -d '[]')
  303. if [ "$valor_sem_colchetes" -le 0 ]; then
  304. # Se for menor ou igual a 0, exiba essa linha
  305. echo "$linha"
  306. break
  307. fi
  308. done <<< "$valores_entre_colchetes"
  309. done < "$arquivo"
  310. ########### REMOVE LINHAS COM DIAS <= 0 DO ./v2Back_n_IPTV ############
  311. -É so usar ./deleteExp.sh no mesmo dir(sem pipeamento)
  312. cat deleteExp.sh
  313. #!/bin/bash
  314. # Nome do arquivo de entrada
  315. arquivo="./v2Back_n_IPTV"
  316. # Crie um arquivo temporário para armazenar as linhas válidas
  317. tempfile=$(mktemp)
  318. # Loop através das linhas do arquivo de entrada
  319. while IFS= read -r linha; do
  320. # Use um comando regex para encontrar os valores entre colchetes
  321. valores_entre_colchetes=$(echo "$linha" | grep -o '\[[^]]*\]')
  322. # Loop através dos valores encontrados
  323. while IFS= read -r valor; do
  324. # Remova colchetes e verifique se o valor é menor que 0
  325. valor_sem_colchetes=$(echo "$valor" | tr -d '[]')
  326. if [ "$valor_sem_colchetes" -le 0 ]; then
  327. # Se for menor que 0, não copie essa linha para o arquivo temporário
  328. continue 2
  329. fi
  330. done <<< "$valores_entre_colchetes"
  331. # Se chegou aqui, a linha é válida, copie-a para o arquivo temporário
  332. echo "$linha" >> "$tempfile"
  333. done < "$arquivo"
  334. # Substitua o arquivo original pelo arquivo temporário
  335. mv "$tempfile" "$arquivo"
  336. # Exibindo o arquivo modificado
  337. cat "$arquivo"
  338. ###########
  339. ########### Extrai IDs de ./v2Back_n_IPTV e config.json
  340. ############
  341. ###########
  342. printa uuids de ./bloco1.txt e ./bloco2.txt
  343. allUUID.sh ... | sort | uniq -c | awk '$1 == 1 {print $2}' <- printa somente as linhas únicas da saida do script ;)
  344. #!/bin/bash
  345. # Função para extrair e imprimir as strings do bloco1.txt
  346. extract_strings_from_bloco1() {
  347. while IFS="|" read -r uuid _; do
  348. # Remove espaços em branco no início e no fim da string
  349. uuid=$(echo "$uuid" | tr -d ' ')
  350. # Verifica se a string corresponde ao formato esperado
  351. if [[ $uuid =~ ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ ]]; then
  352. echo "$uuid"
  353. fi
  354. done < bloco1.txt
  355. }
  356. # Função para extrair e imprimir as strings do bloco2.txt
  357. extract_strings_from_bloco2() {
  358. # Use grep com uma expressão regular para extrair as UUIDs
  359. grep -oE '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}' bloco2.txt
  360. }
  361. # Chamando as funções para extrair e imprimir as strings
  362. echo "Strings do bloco1.txt:"
  363. extract_strings_from_bloco1
  364. echo "Strings do bloco2.txt:"
  365. extract_strings_from_bloco2
  366. ############ OU PELO CHATGPT ############
  367. -Identifique todos os padroes "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" do arquivo de texto à seguir, e informe quais desses padroes aparecem apenas 1 vez:
  368. ARQUIVO C /etc/v2ray/config(only users) /n v2Back_n_IPTV
  369. -Converta esse código Python para Shell Script
  370. ------------- MISC COMANDOS ---------------
  371. timedatectl list-timezones
  372. sudo timedatectl set-timezone your_time_zone
  373. ------------ \O/\O/\O/\O/\O/\O V2 MENU \O/\O/\O/\O/\O/ -------------
  374. ------------ \O/\O/\O/\O/\O/\O V2 MENU \O/\O/\O/\O/\O/ -------------
  375. ------------ \O/\O/\O/\O/\O/\O V2 MENU \O/\O/\O/\O/\O/ -------------
  376. ------------ \O/\O/\O/\O/\O/\O V2 MENU \O/\O/\O/\O/\O/ -------------
  377. #!/bin/bash
  378. # Função para exibir o menu
  379. exibir_menu() {
  380. echo -e "\e[1;33m===== MENU v2Back_n_IPTV =====\e[0m"
  381. echo -e "\e[1;36m1. EXIBE LINHAS COM DIAS <= 0 DO ./v2Back_n_IPTVi\e[0m"
  382. echo -e "\e[1;36m2. REMOVE LINHAS COM DIAS <= 0 DO ./v2Back_n_IPTVi\e[0m"
  383. echo -e "\e[1;36m3. REMOVE LINHAS EM BRANCO DO ./v2Back_n_IPTV\e[0m"
  384. echo -e
  385. echo -e "\e[1;36m4. EXECUTA SUBTRACAO EM ./v2Back_n_IPTV\e[0m"
  386. echo -e "\e[1;36m5. IMPRIME O FILE ./v2Back_n_IPTV\e[0m"
  387. echo -e
  388. echo -e "\e[1;36m6. RELOGIO QPRA O ./pipeSubtrator.sh + ./removeBlank.sh\e[0m"
  389. echo -e
  390. echo -e "\e[1;33m====== WPANEL _V2 USER LOOKUP/OP =====\e[0m"
  391. echo -e "\e[1;33m*Its need ./v2snap(carregado em outrora) n ./v2snap2(carregado no momento da OP) files for OPs\e[0m"
  392. echo -e "\e[1;36ma. Imprimir ./v2snap(outrora)\e[0m"
  393. echo -e "\e[1;36mc. Carrega ./v2snap com WPanel _v2 users\e[0m"
  394. echo -e "\e[1;36mb. Listar _v2 live users e carrega ./v2snap2 for OP. Also check new created user(since last ./v2snap load)\e[0m"
  395. echo -e "\e[1;36md. (OP) Quais _v2 users foram apagados desde ./v2snap?\e[0m"
  396. echo -e "\e[1;33m***** SYNC DE CONEXAO V2 *****\e[0m"
  397. echo -e "\e[1;33mg. Deploy sUUID.sh script to UUID extraction OP\e[0m"
  398. echo -e "\e[1;36m7. OP Extrai IDs de ./v2Back_n_IPTV e config.json\e[0m"
  399. echo -e
  400. echo -e "\e[1;33m===== ONLINE/MULTICONN DETECTOR =====\e[0m"
  401. echo -e "\e[1;36m8. VERIFICAR CONEXOES SIMULTANEAS SCRIPTING******\e[0m"
  402. echo -e
  403. echo -e "\e[1;33m===== FTP_RECEPTOR/SOURCE SCRIPTING INSTALL =====\e[0m"
  404. echo -e "\e[1;36m9. RECEPTOR Deploy scriptGet getVPSFile restoremacro onOffLimiter\e[0m"
  405. echo -e "\e[1;33m*install yafc n do manual exec to establish scriptting!*\e[0m"
  406. echo -e "\e[1;33m**Also deploy passwd.sh for script cycle passwd restart :P\e[0m"
  407. echo -e "\e[1;36m11. SOURCE Deploy scriptCreate createmacro onOffLimiter\e[0m"
  408. echo -e "\e[1;36m12. SOURCE Inject Wpanel code to block bad usernames*****\e[0m"
  409. echo -e "\e[1;33m**BITBIN->FTP_SYNC_Netplan_n_InfosMISC to stablish VSFTPD server\e[0m"
  410. echo -e
  411. echo -e "\e[1;33m13. Adjust /bin/limiter time 'sleep 5s'\e[0m"
  412. echo -e "\e[1;33m*Dont forget to check CHMOD777 all this shit*\e[0m"
  413. echo -e "\e[1;36m0. Sair\e[0m"
  414. echo -e "\e[1;33m================\e[0m"
  415. echo -n "Escolha uma opção: "
  416. }
  417. # Loop principal do menu
  418. while true; do
  419. exibir_menu
  420. read opcao
  421. case $opcao in
  422. 1)
  423. # Nome do arquivo de entrada
  424. arquivo="./v2Back_n_IPTV"
  425. # Loop através das linhas do arquivo de entrada
  426. while IFS= read -r linha; do
  427. # Use um comando regex para encontrar os valores entre colchetes
  428. valores_entre_colchetes=$(echo "$linha" | grep -o '\[[^]]*\]')
  429. # Loop através dos valores encontrados
  430. while IFS= read -r valor; do
  431. # Remova colchetes e verifique se o valor é menor que ou igual a 0
  432. valor_sem_colchetes=$(echo "$valor" | tr -d '[]')
  433. if [ "$valor_sem_colchetes" -le 0 ]; then
  434. # Se for menor ou igual a 0, exiba essa linha
  435. echo "$linha"
  436. break
  437. fi
  438. done <<< "$valores_entre_colchetes"
  439. done < "$arquivo"
  440. read
  441. ;;
  442. 2)
  443. # Nome do arquivo de entrada
  444. arquivo="./v2Back_n_IPTV"
  445. # Crie um arquivo temporário para armazenar as linhas válidas
  446. tempfile=$(mktemp)
  447. # Loop através das linhas do arquivo de entrada
  448. while IFS= read -r linha; do
  449. # Use um comando regex para encontrar os valores entre colchetes
  450. valores_entre_colchetes=$(echo "$linha" | grep -o '\[[^]]*\]')
  451. # Loop através dos valores encontrados
  452. while IFS= read -r valor; do
  453. # Remova colchetes e verifique se o valor é menor que 0
  454. valor_sem_colchetes=$(echo "$valor" | tr -d '[]')
  455. if [ "$valor_sem_colchetes" -le 0 ]; then
  456. # Se for menor que 0, não copie essa linha para o arquivo temporário
  457. continue 2
  458. fi
  459. done <<< "$valores_entre_colchetes"
  460. # Se chegou aqui, a linha é válida, copie-a para o arquivo temporário
  461. echo "$linha" >> "$tempfile"
  462. done < "$arquivo"
  463. # Substitua o arquivo original pelo arquivo temporário
  464. mv "$tempfile" "$arquivo"
  465. # Exibindo o arquivo modificado
  466. cat "$arquivo"
  467. read
  468. ;;
  469. 3)
  470. # Nome do arquivo de entrada
  471. arquivo_origem="./v2Back_n_IPTV"
  472. # Nome do arquivo temporário
  473. arquivo_temporario="temp.txt"
  474. # Remove linhas em branco do arquivo de origem
  475. grep -v '^$' "$arquivo_origem" > "$arquivo_temporario"
  476. # Substituir o arquivo de origem pelo arquivo temporário
  477. mv "$arquivo_temporario" "$arquivo_origem"
  478. # Mensagem de conclusão
  479. echo "Linhas em branco removidas com sucesso do arquivo $arquivo_origem."
  480. ;;
  481. 4)
  482. # Nome do arquivo de entrada
  483. arquivo_origem="./v2Back_n_IPTV"
  484. # Nome do arquivo temporário
  485. arquivo_temporario="temp.txt"
  486. # Loop para processar cada linha do arquivo de origem
  487. while IFS= read -r linha; do
  488. valor_coluna1=$(echo "$linha" | awk '{print $1}')
  489. valor_colchetes=$(echo "$linha" | awk -F'[][]' '{print $2}')
  490. novo_valor_colchetes=$((valor_colchetes - 1))
  491. linha_modificada=$(echo "$linha" | sed "s/\[$valor_colchetes\]/\[$novo_valor_colchetes\]/")
  492. echo "$linha_modificada"
  493. done < "$arquivo_origem" > "$arquivo_temporario"
  494. # Substituir o arquivo de origem pelo arquivo temporário
  495. mv "$arquivo_temporario" "$arquivo_origem"
  496. ;;
  497. 5)
  498. cat ./v2Back_n_IPTV
  499. read
  500. ;;
  501. 6)
  502. echo -e "\e[1;33mAdd linha à seguir, que programa o bang pra 1:15AM todo dia\e[0m"
  503. echo -e "\e[1;36m15 1 * * * /bin/cat v2Back_n_IPTV | ./pipeSubtrator.sh \e[0m"
  504. echo -e "\e[1;36m16 1 * * * ./removeBlank.sh\e[0m"
  505. echo -e "\nPressione qualquer tecla para executar CRONTAB -E..."
  506. echo -e " # Nome do arquivo de entrada
  507. arquivo_origem=\"./v2Back_n_IPTV\"
  508. # Nome do arquivo temporário
  509. arquivo_temporario=\"temp.txt\"
  510. # Remove linhas em branco do arquivo de origem
  511. grep -v '^$' \"\$arquivo_origem\" > \"\$arquivo_temporario\"
  512. # Substituir o arquivo de origem pelo arquivo temporário
  513. mv \"\$arquivo_temporario\" \"\$arquivo_origem\"
  514. # Mensagem de conclusão
  515. echo \"Linhas em branco removidas com sucesso do arquivo \$arquivo_origem.\"
  516. " > ./removeBlank.sh
  517. chmod 777 ./removeBlank.sh
  518. read
  519. crontab -e
  520. ;;
  521. g)
  522. echo -e "#!/bin/bash
  523. # Função para extrair e imprimir as strings do bloco1.txt
  524. extract_strings_from_bloco1() {
  525. while IFS=\"|\" read -r uuid _; do
  526. # Remove espaços em branco no início e no fim da string
  527. uuid=\$(echo \"\$uuid\" | tr -d ' ')
  528. # Verifica se a string corresponde ao formato esperado
  529. if [[ \$uuid =~ ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$ ]]; then
  530. echo \"\$uuid\"
  531. fi
  532. done < bloco1.txt
  533. }
  534. # Função para extrair e imprimir as strings do bloco2.txt
  535. extract_strings_from_bloco2() {
  536. # Use grep com uma expressão regular para extrair as UUIDs
  537. grep -oE '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}' bloco2.txt
  538. }
  539. # Chamando as funções para extrair e imprimir as strings
  540. echo \"Strings do v2Back_n_IPTV:\"
  541. extract_strings_from_bloco1
  542. echo \"Strings do config.json:\"
  543. extract_strings_from_bloco2" > ./sUUID.sh
  544. chmod 777 ./sUUID.sh
  545. ;;
  546. 7)
  547. cat /root/v2Back_n_IPTV > bloco1.txt
  548. cat /etc/v2ray/config.json > bloco2.txt
  549. ./sUUID.sh
  550. read
  551. echo -e "\e[1;33m===== Linhas que aparecem apenas 1 vez =====\e[0m"
  552. ./sUUID.sh | sort | uniq -c | awk '$1 == 1 {print $2}'
  553. read
  554. ;;
  555. 8)
  556. ./script2.sh # Substitua script2.sh pelo nome do seu segundo script
  557. ;;
  558. 9)
  559. echo " #!/bin/bash
  560. while :
  561. do
  562. ./getVPSFile.sh | yafc ftpuser:'~L8z65xL=8y]!rs'@192.99.252.3
  563. chmod 777 ./backup.vps
  564. ./restoremacro.sh | menu
  565. ./onOffLimiter.sh | menu
  566. ./passwd.sh | passwd
  567. sync; echo 1 > /proc/sys/vm/drop_caches
  568. sleep 8
  569. sync; echo 2 > /proc/sys/vm/drop_caches
  570. done
  571. " > ./scriptGet.sh
  572. echo -e " #!/bin/bash
  573. sleep 1
  574. echo \"ls\"
  575. sleep 1
  576. echo \"get backup.vps\"
  577. sleep 1
  578. echo \"y\"
  579. sleep 1
  580. echo \"exit\"
  581. " > ./getVPSFile.sh
  582. echo -e " #!/bin/bash
  583. echo \"15\"
  584. echo \"2\"
  585. sleep 4
  586. echo -ne \"\n\"
  587. echo \"0\"
  588. echo \"0\"
  589. echo \"0\"
  590. " > ./restoremacro.sh
  591. echo -e " #!/bin/bash
  592. echo \"17\"
  593. sleep 8
  594. echo \"17\"
  595. sleep 3
  596. echo \"0\"
  597. echo \"0\"
  598. echo \"0\"
  599. " > ./onOffLimiter.sh
  600. echo "#!/bin/bash
  601. echo 'lbadwath'
  602. sleep 1
  603. echo 'lbadwath'
  604. sleep 1
  605. " > ./passwd.sh
  606. chmod 777 *.sh
  607. ;;
  608. 11)
  609. echo "#!/bin/bash
  610. while :
  611. do
  612. ./createmacro.sh | menu
  613. cp -rf ./backup.vps /home/ftpuser/ftp/files/
  614. chown ftpuser:ftpuser /home/ftpuser/ftp/files/backup.vps
  615. chmod 777 /home/ftpuser/ftp/files/backup.vps
  616. #./limiterOvpn.sh
  617. ./onOffLimiter.sh | menu
  618. sync; echo 1 > /proc/sys/vm/drop_caches
  619. sleep 3
  620. sync; echo 2 > /proc/sys/vm/drop_caches
  621. done
  622. " > ./scriptCreate.sh
  623. echo -e "#!/bin/bash
  624. echo \"17\"
  625. sleep 8
  626. echo \"17\"
  627. sleep 3
  628. echo \"0\"
  629. echo \"0\"
  630. echo \"0\"
  631. " > ./onOffLimiter.sh
  632. echo -e "#!/bin/bash
  633. # Nome do arquivo onde o valor será armazenado
  634. arquivo='contador.txt'
  635. # Se o arquivo não existir, cria e inicializa com 0
  636. if [ ! -f \"\$arquivo\" ]; then
  637. echo 0 > \"\$arquivo\"
  638. fi
  639. # Lê o valor atual do arquivo
  640. valor=\$(<\"\$arquivo\")
  641. # Incrementa o valor
  642. echo \$(( \$(cat contador.txt) + 1 )) > contador.txt
  643. echo \"15\"
  644. sleep 1
  645. echo \"1\"
  646. sleep 3
  647. echo \"n\"
  648. # Verifica se o valor atingiu 30
  649. if [ \"\$valor\" -gt 30 ]; then
  650. echo \"Valor 30 atingido\"
  651. # Reseta o valor para 0
  652. echo \"0\" > contador.txt
  653. echo \"8\"
  654. sleep 6
  655. fi
  656. echo \"n\"
  657. echo \"0\"
  658. echo \"0\"
  659. echo \"0\"
  660. " > ./createmacro.sh
  661. ;;
  662. 12)
  663. echo -e "BITBIN -> BLOCK_User_bad_string_n_MySQL_Trhigger_String_n_SSHLimiter"
  664. read
  665. ;;
  666. 13)
  667. vim /bin/limiter
  668. ;;
  669. 0)
  670. echo "Saindo..."
  671. exit 0
  672. ;;
  673. a)
  674. cat ./v2snap
  675. read
  676. ;;
  677. b)
  678. # Defina o caminho para o arquivo /etc/passwd
  679. passwd_file="/etc/passwd"
  680. # Inicialize uma variável para contar os usuários
  681. count=0
  682. echo "" > ./v2snap2
  683. # Use um loop while para ler cada linha do arquivo /etc/passwd
  684. while IFS= read -r line; do
  685. username=$(echo "$line" | cut -d: -f1)
  686. if [[ "$username" == *_v2* || "$username" == *_V2* ]]; then
  687. echo "$username"
  688. echo "$username" >> ./v2snap2
  689. chage -l "$username" | grep "Account expires" | cut -d: -f2- | sed 's/^[[:space:]]*//'
  690. ((count++))
  691. fi
  692. done < "$passwd_file"
  693. # Imprima o número total de usuários encontrados
  694. echo "Número total de usuários que terminam em '_v2' ou '_V2': $count"
  695. read
  696. ;;
  697. c)
  698. # Defina o caminho para o arquivo /etc/passwd
  699. passwd_file="/etc/passwd"
  700. # Inicialize uma variável para contar os usuários
  701. count=0
  702. echo "" > ./v2snap
  703. # Use um loop while para ler cada linha do arquivo /etc/passwd
  704. while IFS= read -r line; do
  705. username=$(echo "$line" | cut -d: -f1)
  706. if [[ "$username" == *_v2* || "$username" == *_V2* ]]; then
  707. echo "$username"
  708. echo "$username" >> ./v2snap
  709. chage -l "$username" | grep "Account expires" | cut -d: -f2- | sed 's/^[[:space:]]*//'
  710. ((count++))
  711. fi
  712. done < "$passwd_file"
  713. # Imprima o número total de usuários encontrados
  714. echo "Número total de usuários que terminam em '_v2' ou '_V2': $count"
  715. read
  716. ;;
  717. d)
  718. file1="./v2snap"
  719. file2="./v2snap2"
  720. # Verifica se os arquivos existem
  721. if [ ! -e "$file1" ] || [ ! -e "$file2" ]; then
  722. echo "Um ou ambos os arquivos não existem."
  723. exit 1
  724. fi
  725. # Lê os usuários do arquivo v2snap e armazena em uma matriz
  726. mapfile -t users_file1 < "$file1"
  727. # Lê os usuários do arquivo v2snap2 e armazena em outra matriz
  728. mapfile -t users_file2 < "$file2"
  729. # Percorre a matriz de usuários do v2snap
  730. for user1 in "${users_file1[@]}"; do
  731. # Verifica se o usuário não está presente no v2snap2
  732. if ! [[ " ${users_file2[*]} " =~ " $user1 " ]]; then
  733. echo "Usuário exclusivo em $file1: $user1"
  734. fi
  735. done
  736. read
  737. ;;
  738. *)
  739. echo "Opção inválida! Pressione Enter para continuar..."
  740. read
  741. ;;
  742. esac
  743. done

comments powered by Disqus