Compare commits
21 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c726a91fc2 | |||
|
|
abb6b7f06d | ||
|
|
bca0037807 | ||
| 8cfe964c89 | |||
| de3085f043 | |||
| 89a828c3fc | |||
| 7048d35b8b | |||
|
|
b7ed1b6a94 | ||
|
|
9ee7ea7847 | ||
|
|
39768fda38 | ||
| fcf58646ec | |||
| 472eff7962 | |||
|
|
58fa2072a4 | ||
|
|
d2daab9650 | ||
|
|
27d94f1199 | ||
| 7e0804f272 | |||
|
|
59d747188f | ||
| 43092ad1f4 | |||
|
|
4c173756a0 | ||
| 556af1f1a7 | |||
| fd8c226de9 |
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
.vscode
|
||||||
|
src/test.cpp
|
||||||
|
test
|
||||||
|
DosAtk
|
||||||
21
.vscode/c_cpp_properties.json
vendored
21
.vscode/c_cpp_properties.json
vendored
@@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"configurations": [
|
|
||||||
{
|
|
||||||
"name": "Win32",
|
|
||||||
"includePath": [
|
|
||||||
"${workspaceFolder}/**"
|
|
||||||
],
|
|
||||||
"defines": [
|
|
||||||
"_DEBUG",
|
|
||||||
"UNICODE",
|
|
||||||
"_UNICODE"
|
|
||||||
],
|
|
||||||
"windowsSdkVersion": "10.0.19041.0",
|
|
||||||
"compilerPath": "cl.exe",
|
|
||||||
"cStandard": "c17",
|
|
||||||
"cppStandard": "c++17",
|
|
||||||
"intelliSenseMode": "windows-msvc-x64"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"version": 4
|
|
||||||
}
|
|
||||||
31
README.md
31
README.md
@@ -1,10 +1,37 @@
|
|||||||
# Как жить?
|
# Как жить?
|
||||||
|
|
||||||
|
Регаемся на данном сайте, форкаем либу, пушим в свой форк и создаём merge request.
|
||||||
|
Либо просим у Серафима контрибьютора и сразу делаем ветку где надо (так даже лучше, не придётся мучаться с мержем из форка)
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone https://gitea.serafimdev.com/serafim/dos # Клонируем репозиторий
|
git clone https://gitea.serafimdev.com/serafim/dos # Клонируем репозиторий (замените на свой форк!)
|
||||||
git checkout -b my_dns # Создаём ветку для реализации модуля my_dns
|
git checkout -b my_dns # Создаём ветку для реализации модуля my_dns
|
||||||
git add * # Добавляем написанный код в комит
|
git add * # Добавляем написанный код в комит
|
||||||
git commit -m 'Написал код' # Комитим в локальную ветку
|
git commit -m 'Написал код' # Комитим в локальную ветку
|
||||||
git push origin my_dns # Пушим свою ветку в репозиторий
|
git push origin my_dns # Пушим свою ветку в репозиторий
|
||||||
# Теперь в интерфейсе https://gitea.serafimdev.com/serafim/dos создаём пул реквест и пишем мне в тг
|
# Теперь в интерфейсе https://gitea.serafimdev.com/serafim/dos создаём пул реквест и пишем мне в тг
|
||||||
```
|
```
|
||||||
|
|
||||||
|
# Компиляция
|
||||||
|
|
||||||
|
Для компиляции: `./build.py` (после компиляции запускает файл), либо ручками: `g++ src/DosAtk.cpp -o DosAtk -lcurl -lssl -lcrypto`
|
||||||
|
Если ошибка отсутствия заголовочных файлов, то нужно установить:
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo apt-get install libcurl4-openssl-dev
|
||||||
|
sudo apt-get install libssl-dev
|
||||||
|
sudo apt-get install python3
|
||||||
|
sudo apt-get install nlohmann-json3-dev
|
||||||
|
```
|
||||||
|
|
||||||
|
# Запуск
|
||||||
|
|
||||||
|
Пример запуска:
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo ./DosAtk -a flood -i 127.0.0.1 -p 800 # запуск заранее скомпилированной программы
|
||||||
|
sudo ./build.py -a flood -i 127.0.0.1 -p 800 # скомипилирует и запустит программу
|
||||||
|
```
|
||||||
|
|
||||||
|
Запускается только на Линухе!
|
||||||
|
|
||||||
|
|||||||
21
build.py
Executable file
21
build.py
Executable file
@@ -0,0 +1,21 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
log_path = "/var/log/DosAtk"
|
||||||
|
if not os.path.exists(log_path):
|
||||||
|
if os.getuid() == 0: # Если уже root
|
||||||
|
os.system("mkdir -p /var/log && touch /var/log/DosAtk")
|
||||||
|
os.system("chmod 666 /var/log/DosAtk")
|
||||||
|
else:
|
||||||
|
os.system("sudo mkdir -p /var/log && sudo touch /var/log/DosAtk 2>/dev/null || true")
|
||||||
|
os.system("sudo chmod 666 /var/log/DosAtk 2>/dev/null || true")
|
||||||
|
|
||||||
|
# Компиляция
|
||||||
|
if subprocess.call(["g++", "src/DosAtk.cpp", "-o", "DosAtk", "-lcurl", "-lssl", "-lcrypto"]) != 0:
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
# Запуск с аргументами
|
||||||
|
if len(sys.argv[1:]) > 0:
|
||||||
|
os.execvp("./DosAtk", ["./DosAtk"] + sys.argv[1:])
|
||||||
4
build.sh
Executable file
4
build.sh
Executable file
@@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e # if compilation fail next command will not be executed, so older version of programm will not be launched
|
||||||
|
g++ src/DosAtk.cpp -o DosAtk -lcurl -lssl -lcrypto
|
||||||
|
./DosAtk "$@"
|
||||||
58
my_msg.cpp
58
my_msg.cpp
@@ -1,58 +0,0 @@
|
|||||||
#include <iostream>
|
|
||||||
#include <string>
|
|
||||||
#include <curl/curl.h>
|
|
||||||
#include <cctype>
|
|
||||||
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
string telegram_id;
|
|
||||||
string bot_token;
|
|
||||||
|
|
||||||
int my_msg(const string& msg) {
|
|
||||||
cout << msg << endl;
|
|
||||||
|
|
||||||
CURL* curl = curl_easy_init();
|
|
||||||
if (!curl) return 6;
|
|
||||||
|
|
||||||
string escaped_msg = escape_json(msg);
|
|
||||||
|
|
||||||
string chat_id_field;
|
|
||||||
if (is_numeric(telegram_id)) {
|
|
||||||
chat_id_field = "\"chat_id\": " + telegram_id;
|
|
||||||
} else {
|
|
||||||
chat_id_field = "\"chat_id\": \"" + telegram_id + "\"";
|
|
||||||
}
|
|
||||||
|
|
||||||
string json_data = "{" + chat_id_field + ", \"text\": \"" + escaped_msg + "\"}";
|
|
||||||
|
|
||||||
struct curl_slist* headers = nullptr;
|
|
||||||
headers = curl_slist_append(headers, "Content-Type: application/json");
|
|
||||||
|
|
||||||
curl_easy_setopt(curl, CURLOPT_URL, ("https://api.telegram.org/bot" + bot_token + "/sendMessage").c_str());
|
|
||||||
curl_easy_setopt(curl, CURLOPT_POST, 1L);
|
|
||||||
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, json_data.c_str());
|
|
||||||
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
|
|
||||||
curl_easy_setopt(curl, CURLOPT_USERAGENT, "libcurl/7.68.0");
|
|
||||||
|
|
||||||
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, [](void*, size_t size, size_t nmemb, void*) -> size_t {
|
|
||||||
return size * nmemb;
|
|
||||||
});
|
|
||||||
|
|
||||||
CURLcode res = curl_easy_perform(curl);
|
|
||||||
long http_code = 0;
|
|
||||||
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &http_code);
|
|
||||||
|
|
||||||
curl_slist_free_all(headers);
|
|
||||||
curl_easy_cleanup(curl);
|
|
||||||
|
|
||||||
if (res != CURLE_OK) return 5;
|
|
||||||
|
|
||||||
switch (http_code) {
|
|
||||||
case 200: return 0; // Успех
|
|
||||||
case 401: return 1; // Неверный токен
|
|
||||||
case 400: return 2; // Неверный chat_id
|
|
||||||
case 404: return 3; // Неверный URL (бот не найден)
|
|
||||||
default:
|
|
||||||
return 4; // Ошибка сервера (500)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
1117
src/DosAtk.cpp
Normal file
1117
src/DosAtk.cpp
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user