From 80d9cd35f3f45cbeb20bacc32fca838411c1e4a8 Mon Sep 17 00:00:00 2001 From: Voomra Date: Thu, 24 Jul 2025 22:27:05 +0300 Subject: [PATCH] =?UTF-8?q?remove:=20=D1=81=D1=82=D0=B0=D1=80=D0=B0=D1=8F?= =?UTF-8?q?=20=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ihc-dns.sh | 298 ----------------------------------------------------- 1 file changed, 298 deletions(-) delete mode 100644 ihc-dns.sh diff --git a/ihc-dns.sh b/ihc-dns.sh deleted file mode 100644 index 8b34327..0000000 --- a/ihc-dns.sh +++ /dev/null @@ -1,298 +0,0 @@ -#!/bin/bash - -COOKIE_JAR=/tmp/ihc-cookie.txt -DNS_PAGE=/tmp/ihc-dns.html -V_USER= -V_PASSWORD= -V_ACTION= -V_DOMAIN= -V_NAME= -V_TYPE= -V_CONTENT= -V_RECORD= - -################################################################################ - -function auth() { - # Авторизация - - local __login=$1 - local __password=$2 - - local __result=$(curl -s -X POST 'https://my.ihc.ru/j_spring_security_check?ajax=true' \ - --cookie-jar $COOKIE_JAR \ - -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' \ - -H 'Referer: https://my.ihc.ru/login/auth' \ - --data-raw "j_username=${__login}&j_password=${__password}&recaptcha=&ihccaptcha=" \ - | jq -r '.alert.type') - - if [[ $__result != 'none' ]]; then - echo 'ERROR AUTH' - exit 1 - fi -} - -function get_domains() { - # Получить список доступных доменов - # RETURN - # { - # "id": 1234567, - # "domain": "example.com" - # } - - curl -s -X GET 'https://my.ihc.ru/dnsZone/list' \ - --cookie $COOKIE_JAR \ - --cookie-jar $COOKIE_JAR \ - > $DNS_PAGE - - xmllint --html --xpath '//li[@class="zoneList__zone "]/*/a' $DNS_PAGE 2>/dev/null \ - | perl -ne 'chop($_); m#href="/dnsZone/index/(.+?)">(.+?)#; print "{\"id\": $1, \"domain\": \"$2\"}\n"' \ - | jq -} - -function get_domain() { - # RETURN - # { - # "id": 1234567, - # "domain": "example.com" - # } - - local __domain=$1 - - get_domains | jq '. | select(.domain == "'$__domain'")' -} - -function get_domain_records() { - local __domain_id=$1 - - curl -s -X POST \ - --cookie $COOKIE_JAR \ - --cookie-jar $COOKIE_JAR \ - -H 'Accept: application/json, text/javascript, */*; q=0.01' \ - -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' \ - -H 'Referer: https://my.ihc.ru/dnsZone/index/'$__domain_id \ - --data-raw 'id='$__domain_id \ - 'https://my.ihc.ru/dnsZone/records' \ - | jq '.data.records[]' -} - -function create_record() { - local __domain_id=$1 - local __type=$2 - local __content=$3 - local __name=$4 - - curl -s -X POST \ - --cookie $COOKIE_JAR \ - --cookie-jar $COOKIE_JAR \ - -H 'Accept: application/json, text/javascript, */*; q=0.01' \ - -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' \ - -H 'Referer: https://my.ihc.ru/dnsZone/index/'$__domain_id \ - -H 'X-Requested-With: XMLHttpRequest' \ - --data-raw 'name='$__name'&type='$__type'&content='$__content'&id='$__domain_id \ - 'https://my.ihc.ru/dnsZone/createRecord' -} - -function edit_record() { - local __domain_id=$1 - local __record_id=$2 - local __type=$3 - local __content=$4 - local __name=$5 - - curl -s -X POST \ - --cookie $COOKIE_JAR \ - --cookie-jar $COOKIE_JAR \ - -H 'Accept: application/json, text/javascript, */*; q=0.01' \ - -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' \ - -H 'Referer: https://my.ihc.ru/dnsZone/index/'$__domain_id \ - -H 'X-Requested-With: XMLHttpRequest' \ - --data-raw 'name='$__name'&content='$__content'&id='$__domain_id'&recordId='$__record_id'&type='$__type \ - 'https://my.ihc.ru/dnsZone/updateRecord' -} - -function delete_record() { - local __domain_id=$1 - local __record_id=$2 - - curl -s -X POST \ - --cookie $COOKIE_JAR \ - --cookie-jar $COOKIE_JAR \ - -H 'Accept: application/json, text/javascript, */*; q=0.01' \ - -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' \ - -H 'Referer: https://my.ihc.ru/dnsZone/index/'$__domain_id \ - -H 'X-Requested-With: XMLHttpRequest' \ - --data-raw 'id='$__domain_id'&recordId='$__record_id \ - 'https://my.ihc.ru/dnsZone/deleteRecord' -} - -function clean() { - rm $COOKIE_JAR - rm $DNS_PAGE -} - -################################################################################ - -function action_list() { - if [[ -z "$V_DOMAIN" ]]; then - auth "$V_USER" "$V_PASSWORD" - get_domains - clean - else - auth "$V_USER" "$V_PASSWORD" - get_domain_records $(get_domains | jq -r '. | select(.domain == "'$V_DOMAIN'") | .id') - clean - fi -} - -function action_add() { - if [[ -z "$V_DOMAIN" ]]; then - echo "Требуется указать домен" - exit 2 - fi - - if [[ -z "$V_TYPE" ]]; then - echo "Требуется указать тип контента" - exit 2 - fi - - if [[ -z "$V_CONTENT" ]]; then - echo "Требуется указать контент" - exit 2 - fi - - auth "$V_USER" "$V_PASSWORD" - local __domain_id=$(get_domains | jq -r '. | select(.domain == "'$V_DOMAIN'") | .id') - create_record $__domain_id "$V_TYPE" "$V_CONTENT" "$V_NAME" | jq - clean -} - -function action_delete() { - if [[ -z "$V_DOMAIN" ]]; then - echo "Требуется указать домен" - exit 3 - fi - - if [[ -z "$V_RECORD" ]]; then - echo "Требуется указать ID записи" - exit 3 - fi - - auth "$V_USER" "$V_PASSWORD" - local __domain_id=$(get_domains | jq -r '. | select(.domain == "'$V_DOMAIN'") | .id') - delete_record $__domain_id $V_RECORD | jq - clean -} - -function action_edit() { - if [[ -z "$V_DOMAIN" ]]; then - echo "Требуется указать домен" - exit 4 - fi - - if [[ -z "$V_RECORD" ]]; then - echo "Требуется указать ID записи" - exit 4 - fi - - if [[ -z "$V_TYPE" ]]; then - echo "Требуется указать тип контента" - exit 4 - fi - - if [[ -z "$V_CONTENT" ]]; then - echo "Требуется указать контент" - exit 4 - fi - - auth "$V_USER" "$V_PASSWORD" - local __domain_id=$(get_domains | jq -r '. | select(.domain == "'$V_DOMAIN'") | .id') - edit_record $__domain_id $V_RECORD "$V_TYPE" "$V_CONTENT" "$V_NAME" | jq - clean -} - -function entry_point() { - if [[ -z "$V_USER" ]] || [[ -z "$V_PASSWORD" ]]; then - echo "Требуется указать логин и пароль" - exit 1 - fi - - if [[ -z "$V_ACTION" ]]; then - echo "Треуется действие" - exit 1 - fi - - case "$V_ACTION" in - "list") action_list ;; - "add") action_add ;; - "edit") action_edit ;; - "delete") action_delete ;; - esac -} - -################################################################################ - -# https://www.baeldung.com/linux/bash-parse-command-line-arguments - -VALID_ARGS=$(getopt -o '' --long user:,password:,domain:,list,add,edit,name:,type:,content:,delete,record: -- "$@") -if [[ $? -ne 0 ]]; then - exit 1; -fi - -eval set -- "$VALID_ARGS" - -while [ : ]; do - case "$1" in - --user) - V_USER=$2 - shift 2 - ;; - --password) - V_PASSWORD=$2 - shift 2 - ;; - --domain) - V_DOMAIN=$2 - shift 2 - ;; - --list) - V_ACTION="list" - shift - ;; - --add) - V_ACTION="add" - shift - ;; - --edit) - V_ACTION="edit" - shift - ;; - --name) - V_NAME=$2 - shift 2 - ;; - --type) - V_TYPE=$2 - shift 2 - ;; - --content) - V_CONTENT=$2 - shift 2 - ;; - --delete) - V_ACTION="delete" - shift - ;; - --record) - V_RECORD=$2 - shift 2 - ;; - --) - shift - break - ;; - esac -done - -entry_point -