aidevops 2.52.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent/AGENTS.md +614 -0
- package/.agent/accounts.md +65 -0
- package/.agent/aidevops/add-new-mcp-to-aidevops.md +456 -0
- package/.agent/aidevops/api-integrations.md +335 -0
- package/.agent/aidevops/architecture.md +510 -0
- package/.agent/aidevops/configs.md +274 -0
- package/.agent/aidevops/docs.md +244 -0
- package/.agent/aidevops/extension.md +311 -0
- package/.agent/aidevops/mcp-integrations.md +340 -0
- package/.agent/aidevops/mcp-troubleshooting.md +162 -0
- package/.agent/aidevops/memory-patterns.md +172 -0
- package/.agent/aidevops/providers.md +217 -0
- package/.agent/aidevops/recommendations.md +321 -0
- package/.agent/aidevops/requirements.md +301 -0
- package/.agent/aidevops/resources.md +214 -0
- package/.agent/aidevops/security-requirements.md +174 -0
- package/.agent/aidevops/security.md +350 -0
- package/.agent/aidevops/service-links.md +400 -0
- package/.agent/aidevops/services.md +357 -0
- package/.agent/aidevops/setup.md +153 -0
- package/.agent/aidevops/troubleshooting.md +389 -0
- package/.agent/aidevops.md +124 -0
- package/.agent/build-plus.md +244 -0
- package/.agent/content/guidelines.md +109 -0
- package/.agent/content.md +87 -0
- package/.agent/health.md +59 -0
- package/.agent/legal.md +59 -0
- package/.agent/loop-state/full-loop.local.md +16 -0
- package/.agent/loop-state/ralph-loop.local.md +10 -0
- package/.agent/marketing.md +440 -0
- package/.agent/memory/README.md +260 -0
- package/.agent/onboarding.md +796 -0
- package/.agent/plan-plus.md +245 -0
- package/.agent/research.md +100 -0
- package/.agent/sales.md +333 -0
- package/.agent/scripts/101domains-helper.sh +701 -0
- package/.agent/scripts/add-missing-returns.sh +140 -0
- package/.agent/scripts/agent-browser-helper.sh +311 -0
- package/.agent/scripts/agno-setup.sh +712 -0
- package/.agent/scripts/ahrefs-mcp-wrapper.js +168 -0
- package/.agent/scripts/aidevops-update-check.sh +71 -0
- package/.agent/scripts/ampcode-cli.sh +522 -0
- package/.agent/scripts/auto-version-bump.sh +156 -0
- package/.agent/scripts/autogen-helper.sh +512 -0
- package/.agent/scripts/beads-sync-helper.sh +596 -0
- package/.agent/scripts/closte-helper.sh +5 -0
- package/.agent/scripts/cloudron-helper.sh +321 -0
- package/.agent/scripts/codacy-cli-chunked.sh +581 -0
- package/.agent/scripts/codacy-cli.sh +442 -0
- package/.agent/scripts/code-audit-helper.sh +5 -0
- package/.agent/scripts/coderabbit-cli.sh +417 -0
- package/.agent/scripts/coderabbit-pro-analysis.sh +238 -0
- package/.agent/scripts/commands/code-simplifier.md +86 -0
- package/.agent/scripts/commands/full-loop.md +246 -0
- package/.agent/scripts/commands/postflight-loop.md +103 -0
- package/.agent/scripts/commands/recall.md +182 -0
- package/.agent/scripts/commands/remember.md +132 -0
- package/.agent/scripts/commands/save-todo.md +175 -0
- package/.agent/scripts/commands/session-review.md +154 -0
- package/.agent/scripts/comprehensive-quality-fix.sh +106 -0
- package/.agent/scripts/context-builder-helper.sh +522 -0
- package/.agent/scripts/coolify-cli-helper.sh +674 -0
- package/.agent/scripts/coolify-helper.sh +380 -0
- package/.agent/scripts/crawl4ai-examples.sh +401 -0
- package/.agent/scripts/crawl4ai-helper.sh +1078 -0
- package/.agent/scripts/crewai-helper.sh +681 -0
- package/.agent/scripts/dev-browser-helper.sh +513 -0
- package/.agent/scripts/dns-helper.sh +396 -0
- package/.agent/scripts/domain-research-helper.sh +917 -0
- package/.agent/scripts/dspy-helper.sh +285 -0
- package/.agent/scripts/dspyground-helper.sh +291 -0
- package/.agent/scripts/eeat-score-helper.sh +1242 -0
- package/.agent/scripts/efficient-return-fix.sh +92 -0
- package/.agent/scripts/extract-opencode-prompts.sh +128 -0
- package/.agent/scripts/find-missing-returns.sh +113 -0
- package/.agent/scripts/fix-auth-headers.sh +104 -0
- package/.agent/scripts/fix-common-strings.sh +254 -0
- package/.agent/scripts/fix-content-type.sh +100 -0
- package/.agent/scripts/fix-error-messages.sh +130 -0
- package/.agent/scripts/fix-misplaced-returns.sh +74 -0
- package/.agent/scripts/fix-remaining-literals.sh +152 -0
- package/.agent/scripts/fix-return-statements.sh +41 -0
- package/.agent/scripts/fix-s131-default-cases.sh +249 -0
- package/.agent/scripts/fix-sc2155-simple.sh +102 -0
- package/.agent/scripts/fix-shellcheck-critical.sh +187 -0
- package/.agent/scripts/fix-string-literals.sh +273 -0
- package/.agent/scripts/full-loop-helper.sh +773 -0
- package/.agent/scripts/generate-opencode-agents.sh +497 -0
- package/.agent/scripts/generate-opencode-commands.sh +1629 -0
- package/.agent/scripts/generate-skills.sh +366 -0
- package/.agent/scripts/git-platforms-helper.sh +640 -0
- package/.agent/scripts/gitea-cli-helper.sh +743 -0
- package/.agent/scripts/github-cli-helper.sh +702 -0
- package/.agent/scripts/gitlab-cli-helper.sh +682 -0
- package/.agent/scripts/gsc-add-user-helper.sh +325 -0
- package/.agent/scripts/gsc-sitemap-helper.sh +678 -0
- package/.agent/scripts/hetzner-helper.sh +485 -0
- package/.agent/scripts/hostinger-helper.sh +229 -0
- package/.agent/scripts/keyword-research-helper.sh +1815 -0
- package/.agent/scripts/langflow-helper.sh +544 -0
- package/.agent/scripts/linkedin-automation.py +241 -0
- package/.agent/scripts/linter-manager.sh +599 -0
- package/.agent/scripts/linters-local.sh +434 -0
- package/.agent/scripts/list-keys-helper.sh +488 -0
- package/.agent/scripts/local-browser-automation.py +339 -0
- package/.agent/scripts/localhost-helper.sh +744 -0
- package/.agent/scripts/loop-common.sh +806 -0
- package/.agent/scripts/mainwp-helper.sh +728 -0
- package/.agent/scripts/markdown-formatter.sh +338 -0
- package/.agent/scripts/markdown-lint-fix.sh +311 -0
- package/.agent/scripts/mass-fix-returns.sh +58 -0
- package/.agent/scripts/mcp-diagnose.sh +167 -0
- package/.agent/scripts/mcp-inspector-helper.sh +449 -0
- package/.agent/scripts/memory-helper.sh +650 -0
- package/.agent/scripts/monitor-code-review.sh +255 -0
- package/.agent/scripts/onboarding-helper.sh +706 -0
- package/.agent/scripts/opencode-github-setup-helper.sh +797 -0
- package/.agent/scripts/opencode-test-helper.sh +213 -0
- package/.agent/scripts/pagespeed-helper.sh +464 -0
- package/.agent/scripts/pandoc-helper.sh +362 -0
- package/.agent/scripts/postflight-check.sh +555 -0
- package/.agent/scripts/pre-commit-hook.sh +259 -0
- package/.agent/scripts/pre-edit-check.sh +169 -0
- package/.agent/scripts/qlty-cli.sh +356 -0
- package/.agent/scripts/quality-cli-manager.sh +525 -0
- package/.agent/scripts/quality-feedback-helper.sh +462 -0
- package/.agent/scripts/quality-fix.sh +263 -0
- package/.agent/scripts/quality-loop-helper.sh +1108 -0
- package/.agent/scripts/ralph-loop-helper.sh +836 -0
- package/.agent/scripts/ralph-upstream-check.sh +341 -0
- package/.agent/scripts/secretlint-helper.sh +847 -0
- package/.agent/scripts/servers-helper.sh +241 -0
- package/.agent/scripts/ses-helper.sh +619 -0
- package/.agent/scripts/session-review-helper.sh +404 -0
- package/.agent/scripts/setup-linters-wizard.sh +379 -0
- package/.agent/scripts/setup-local-api-keys.sh +330 -0
- package/.agent/scripts/setup-mcp-integrations.sh +472 -0
- package/.agent/scripts/shared-constants.sh +246 -0
- package/.agent/scripts/site-crawler-helper.sh +1487 -0
- package/.agent/scripts/snyk-helper.sh +940 -0
- package/.agent/scripts/sonarcloud-autofix.sh +193 -0
- package/.agent/scripts/sonarcloud-cli.sh +191 -0
- package/.agent/scripts/sonarscanner-cli.sh +455 -0
- package/.agent/scripts/spaceship-helper.sh +747 -0
- package/.agent/scripts/stagehand-helper.sh +321 -0
- package/.agent/scripts/stagehand-python-helper.sh +321 -0
- package/.agent/scripts/stagehand-python-setup.sh +441 -0
- package/.agent/scripts/stagehand-setup.sh +439 -0
- package/.agent/scripts/system-cleanup.sh +340 -0
- package/.agent/scripts/terminal-title-helper.sh +388 -0
- package/.agent/scripts/terminal-title-setup.sh +549 -0
- package/.agent/scripts/test-stagehand-both-integration.sh +317 -0
- package/.agent/scripts/test-stagehand-integration.sh +309 -0
- package/.agent/scripts/test-stagehand-python-integration.sh +341 -0
- package/.agent/scripts/todo-ready.sh +263 -0
- package/.agent/scripts/tool-version-check.sh +362 -0
- package/.agent/scripts/toon-helper.sh +469 -0
- package/.agent/scripts/twilio-helper.sh +917 -0
- package/.agent/scripts/updown-helper.sh +279 -0
- package/.agent/scripts/validate-mcp-integrations.sh +250 -0
- package/.agent/scripts/validate-version-consistency.sh +131 -0
- package/.agent/scripts/vaultwarden-helper.sh +597 -0
- package/.agent/scripts/vercel-cli-helper.sh +816 -0
- package/.agent/scripts/verify-mirrors.sh +169 -0
- package/.agent/scripts/version-manager.sh +831 -0
- package/.agent/scripts/webhosting-helper.sh +471 -0
- package/.agent/scripts/webhosting-verify.sh +238 -0
- package/.agent/scripts/wordpress-mcp-helper.sh +508 -0
- package/.agent/scripts/worktree-helper.sh +595 -0
- package/.agent/scripts/worktree-sessions.sh +577 -0
- package/.agent/seo/dataforseo.md +215 -0
- package/.agent/seo/domain-research.md +532 -0
- package/.agent/seo/eeat-score.md +659 -0
- package/.agent/seo/google-search-console.md +366 -0
- package/.agent/seo/gsc-sitemaps.md +282 -0
- package/.agent/seo/keyword-research.md +521 -0
- package/.agent/seo/serper.md +278 -0
- package/.agent/seo/site-crawler.md +387 -0
- package/.agent/seo.md +236 -0
- package/.agent/services/accounting/quickfile.md +159 -0
- package/.agent/services/communications/telfon.md +470 -0
- package/.agent/services/communications/twilio.md +569 -0
- package/.agent/services/crm/fluentcrm.md +449 -0
- package/.agent/services/email/ses.md +399 -0
- package/.agent/services/hosting/101domains.md +378 -0
- package/.agent/services/hosting/closte.md +177 -0
- package/.agent/services/hosting/cloudflare.md +251 -0
- package/.agent/services/hosting/cloudron.md +478 -0
- package/.agent/services/hosting/dns-providers.md +335 -0
- package/.agent/services/hosting/domain-purchasing.md +344 -0
- package/.agent/services/hosting/hetzner.md +327 -0
- package/.agent/services/hosting/hostinger.md +287 -0
- package/.agent/services/hosting/localhost.md +419 -0
- package/.agent/services/hosting/spaceship.md +353 -0
- package/.agent/services/hosting/webhosting.md +330 -0
- package/.agent/social-media.md +69 -0
- package/.agent/templates/plans-template.md +114 -0
- package/.agent/templates/prd-template.md +129 -0
- package/.agent/templates/tasks-template.md +108 -0
- package/.agent/templates/todo-template.md +89 -0
- package/.agent/tools/ai-assistants/agno.md +471 -0
- package/.agent/tools/ai-assistants/capsolver.md +326 -0
- package/.agent/tools/ai-assistants/configuration.md +221 -0
- package/.agent/tools/ai-assistants/overview.md +209 -0
- package/.agent/tools/ai-assistants/status.md +171 -0
- package/.agent/tools/ai-assistants/windsurf.md +193 -0
- package/.agent/tools/ai-orchestration/autogen.md +406 -0
- package/.agent/tools/ai-orchestration/crewai.md +445 -0
- package/.agent/tools/ai-orchestration/langflow.md +405 -0
- package/.agent/tools/ai-orchestration/openprose.md +487 -0
- package/.agent/tools/ai-orchestration/overview.md +362 -0
- package/.agent/tools/ai-orchestration/packaging.md +647 -0
- package/.agent/tools/browser/agent-browser.md +464 -0
- package/.agent/tools/browser/browser-automation.md +400 -0
- package/.agent/tools/browser/chrome-devtools.md +282 -0
- package/.agent/tools/browser/crawl4ai-integration.md +422 -0
- package/.agent/tools/browser/crawl4ai-resources.md +277 -0
- package/.agent/tools/browser/crawl4ai-usage.md +416 -0
- package/.agent/tools/browser/crawl4ai.md +585 -0
- package/.agent/tools/browser/dev-browser.md +341 -0
- package/.agent/tools/browser/pagespeed.md +260 -0
- package/.agent/tools/browser/playwright.md +266 -0
- package/.agent/tools/browser/playwriter.md +310 -0
- package/.agent/tools/browser/stagehand-examples.md +456 -0
- package/.agent/tools/browser/stagehand-python.md +483 -0
- package/.agent/tools/browser/stagehand.md +421 -0
- package/.agent/tools/build-agent/agent-review.md +224 -0
- package/.agent/tools/build-agent/build-agent.md +784 -0
- package/.agent/tools/build-mcp/aidevops-plugin.md +476 -0
- package/.agent/tools/build-mcp/api-wrapper.md +445 -0
- package/.agent/tools/build-mcp/build-mcp.md +240 -0
- package/.agent/tools/build-mcp/deployment.md +401 -0
- package/.agent/tools/build-mcp/server-patterns.md +632 -0
- package/.agent/tools/build-mcp/transports.md +366 -0
- package/.agent/tools/code-review/auditing.md +383 -0
- package/.agent/tools/code-review/automation.md +219 -0
- package/.agent/tools/code-review/best-practices.md +203 -0
- package/.agent/tools/code-review/codacy.md +151 -0
- package/.agent/tools/code-review/code-simplifier.md +174 -0
- package/.agent/tools/code-review/code-standards.md +309 -0
- package/.agent/tools/code-review/coderabbit.md +101 -0
- package/.agent/tools/code-review/management.md +155 -0
- package/.agent/tools/code-review/qlty.md +248 -0
- package/.agent/tools/code-review/secretlint.md +565 -0
- package/.agent/tools/code-review/setup.md +250 -0
- package/.agent/tools/code-review/snyk.md +563 -0
- package/.agent/tools/code-review/tools.md +230 -0
- package/.agent/tools/content/summarize.md +353 -0
- package/.agent/tools/context/augment-context-engine.md +468 -0
- package/.agent/tools/context/context-builder-agent.md +76 -0
- package/.agent/tools/context/context-builder.md +375 -0
- package/.agent/tools/context/context7.md +371 -0
- package/.agent/tools/context/dspy.md +302 -0
- package/.agent/tools/context/dspyground.md +374 -0
- package/.agent/tools/context/llm-tldr.md +219 -0
- package/.agent/tools/context/osgrep.md +488 -0
- package/.agent/tools/context/prompt-optimization.md +338 -0
- package/.agent/tools/context/toon.md +292 -0
- package/.agent/tools/conversion/pandoc.md +304 -0
- package/.agent/tools/credentials/api-key-management.md +154 -0
- package/.agent/tools/credentials/api-key-setup.md +224 -0
- package/.agent/tools/credentials/environment-variables.md +180 -0
- package/.agent/tools/credentials/vaultwarden.md +382 -0
- package/.agent/tools/data-extraction/outscraper.md +974 -0
- package/.agent/tools/deployment/coolify-cli.md +388 -0
- package/.agent/tools/deployment/coolify-setup.md +353 -0
- package/.agent/tools/deployment/coolify.md +345 -0
- package/.agent/tools/deployment/vercel.md +390 -0
- package/.agent/tools/git/authentication.md +132 -0
- package/.agent/tools/git/gitea-cli.md +193 -0
- package/.agent/tools/git/github-actions.md +207 -0
- package/.agent/tools/git/github-cli.md +223 -0
- package/.agent/tools/git/gitlab-cli.md +190 -0
- package/.agent/tools/git/opencode-github-security.md +350 -0
- package/.agent/tools/git/opencode-github.md +328 -0
- package/.agent/tools/git/opencode-gitlab.md +252 -0
- package/.agent/tools/git/security.md +196 -0
- package/.agent/tools/git.md +207 -0
- package/.agent/tools/opencode/oh-my-opencode.md +375 -0
- package/.agent/tools/opencode/opencode-anthropic-auth.md +446 -0
- package/.agent/tools/opencode/opencode.md +651 -0
- package/.agent/tools/social-media/bird.md +437 -0
- package/.agent/tools/task-management/beads.md +336 -0
- package/.agent/tools/terminal/terminal-title.md +251 -0
- package/.agent/tools/ui/shadcn.md +196 -0
- package/.agent/tools/ui/ui-skills.md +115 -0
- package/.agent/tools/wordpress/localwp.md +311 -0
- package/.agent/tools/wordpress/mainwp.md +391 -0
- package/.agent/tools/wordpress/scf.md +527 -0
- package/.agent/tools/wordpress/wp-admin.md +729 -0
- package/.agent/tools/wordpress/wp-dev.md +940 -0
- package/.agent/tools/wordpress/wp-preferred.md +398 -0
- package/.agent/tools/wordpress.md +95 -0
- package/.agent/workflows/branch/bugfix.md +63 -0
- package/.agent/workflows/branch/chore.md +95 -0
- package/.agent/workflows/branch/experiment.md +115 -0
- package/.agent/workflows/branch/feature.md +59 -0
- package/.agent/workflows/branch/hotfix.md +98 -0
- package/.agent/workflows/branch/refactor.md +92 -0
- package/.agent/workflows/branch/release.md +96 -0
- package/.agent/workflows/branch.md +347 -0
- package/.agent/workflows/bug-fixing.md +267 -0
- package/.agent/workflows/changelog.md +129 -0
- package/.agent/workflows/code-audit-remote.md +279 -0
- package/.agent/workflows/conversation-starter.md +69 -0
- package/.agent/workflows/error-feedback.md +578 -0
- package/.agent/workflows/feature-development.md +355 -0
- package/.agent/workflows/git-workflow.md +702 -0
- package/.agent/workflows/multi-repo-workspace.md +268 -0
- package/.agent/workflows/plans.md +709 -0
- package/.agent/workflows/postflight.md +604 -0
- package/.agent/workflows/pr.md +571 -0
- package/.agent/workflows/preflight.md +278 -0
- package/.agent/workflows/ralph-loop.md +773 -0
- package/.agent/workflows/release.md +498 -0
- package/.agent/workflows/session-manager.md +254 -0
- package/.agent/workflows/session-review.md +311 -0
- package/.agent/workflows/sql-migrations.md +631 -0
- package/.agent/workflows/version-bump.md +283 -0
- package/.agent/workflows/wiki-update.md +333 -0
- package/.agent/workflows/worktree.md +477 -0
- package/LICENSE +21 -0
- package/README.md +1446 -0
- package/VERSION +1 -0
- package/aidevops.sh +1746 -0
- package/bin/aidevops +21 -0
- package/package.json +75 -0
- package/scripts/npm-postinstall.js +60 -0
- package/setup.sh +2366 -0
|
@@ -0,0 +1,701 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# shellcheck disable=SC2034,SC2155,SC2317,SC2329,SC2016,SC2181,SC1091,SC2154,SC2015,SC2086,SC2129,SC2030,SC2031,SC2119,SC2120,SC2001,SC2162,SC2088,SC2089,SC2090,SC2029,SC2006,SC2153
|
|
3
|
+
|
|
4
|
+
# 101domains Registrar Helper Script
|
|
5
|
+
# Comprehensive domain and DNS management for AI assistants
|
|
6
|
+
|
|
7
|
+
# Colors for output
|
|
8
|
+
# String literal constants
|
|
9
|
+
readonly ERROR_DOMAIN_NAME_REQUIRED="Domain name is required"
|
|
10
|
+
|
|
11
|
+
GREEN='\033[0;32m'
|
|
12
|
+
BLUE='\033[0;34m'
|
|
13
|
+
YELLOW='\033[1;33m'
|
|
14
|
+
RED='\033[0;31m'
|
|
15
|
+
NC='\033[0m' # No Color
|
|
16
|
+
|
|
17
|
+
# Common message constants
|
|
18
|
+
readonly HELP_SHOW_MESSAGE="Show this help"
|
|
19
|
+
readonly USAGE_COMMAND_OPTIONS="Usage: $0 <command> [options]"
|
|
20
|
+
|
|
21
|
+
# Common constants
|
|
22
|
+
readonly CONTENT_TYPE_JSON="$CONTENT_TYPE_JSON"
|
|
23
|
+
|
|
24
|
+
print_info() {
|
|
25
|
+
local msg="$1"
|
|
26
|
+
echo -e "${BLUE}[INFO]${NC} $msg"
|
|
27
|
+
return 0
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
print_success() {
|
|
31
|
+
local msg="$1"
|
|
32
|
+
echo -e "${GREEN}[SUCCESS]${NC} $msg"
|
|
33
|
+
return 0
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
print_warning() {
|
|
37
|
+
local msg="$1"
|
|
38
|
+
echo -e "${YELLOW}[WARNING]${NC} $msg"
|
|
39
|
+
return 0
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
print_error() {
|
|
43
|
+
local msg="$1"
|
|
44
|
+
echo -e "${RED}[ERROR]${NC} $msg" >&2
|
|
45
|
+
return 0
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
CONFIG_FILE="../configs/101domains-config.json"
|
|
49
|
+
API_BASE_URL="https://api.101domain.com/v4"
|
|
50
|
+
|
|
51
|
+
# Check dependencies
|
|
52
|
+
check_dependencies() {
|
|
53
|
+
if ! command -v curl &> /dev/null; then
|
|
54
|
+
print_error "$ERROR_CURL_REQUIRED"
|
|
55
|
+
exit 1
|
|
56
|
+
fi
|
|
57
|
+
|
|
58
|
+
if ! command -v jq &> /dev/null; then
|
|
59
|
+
print_error "$ERROR_JQ_REQUIRED"
|
|
60
|
+
echo "$INFO_JQ_INSTALL_MACOS" >&2
|
|
61
|
+
echo "$INFO_JQ_INSTALL_UBUNTU" >&2
|
|
62
|
+
exit 1
|
|
63
|
+
fi
|
|
64
|
+
|
|
65
|
+
return 0
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
# Load configuration
|
|
69
|
+
load_config() {
|
|
70
|
+
if [[ ! -f "$CONFIG_FILE" ]]; then
|
|
71
|
+
print_error "$ERROR_CONFIG_NOT_FOUND"
|
|
72
|
+
print_info "Copy and customize: cp ../configs/101domains-config.json.txt $CONFIG_FILE"
|
|
73
|
+
exit 1
|
|
74
|
+
fi
|
|
75
|
+
return 0
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
# Get account configuration
|
|
79
|
+
get_account_config() {
|
|
80
|
+
local account_name="$command"
|
|
81
|
+
|
|
82
|
+
if [[ -z "$account_name" ]]; then
|
|
83
|
+
print_error "$ERROR_ACCOUNT_REQUIRED"
|
|
84
|
+
list_accounts
|
|
85
|
+
exit 1
|
|
86
|
+
fi
|
|
87
|
+
|
|
88
|
+
local account_config
|
|
89
|
+
account_config=$(jq -r ".accounts.\"$account_name\"" "$CONFIG_FILE")
|
|
90
|
+
if [[ "$account_config" == "null" ]]; then
|
|
91
|
+
print_error "Account '$account_name' not found in configuration"
|
|
92
|
+
list_accounts
|
|
93
|
+
exit 1
|
|
94
|
+
fi
|
|
95
|
+
|
|
96
|
+
echo "$account_config"
|
|
97
|
+
return 0
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
# Make API request
|
|
101
|
+
api_request() {
|
|
102
|
+
local account_name="$command"
|
|
103
|
+
local method="$account_name"
|
|
104
|
+
local endpoint="$target"
|
|
105
|
+
local data="$options"
|
|
106
|
+
|
|
107
|
+
local config
|
|
108
|
+
config=$(get_account_config "$account_name")
|
|
109
|
+
local api_key
|
|
110
|
+
local username
|
|
111
|
+
api_key=$(echo "$config" | jq -r '.api_key')
|
|
112
|
+
username=$(echo "$config" | jq -r '.username')
|
|
113
|
+
|
|
114
|
+
if [[ "$api_key" == "null" || "$username" == "null" ]]; then
|
|
115
|
+
print_error "Invalid API credentials for account '$account_name'"
|
|
116
|
+
exit 1
|
|
117
|
+
fi
|
|
118
|
+
|
|
119
|
+
local auth_header
|
|
120
|
+
auth_header="Authorization: Basic $(echo -n "$username:$api_key" | base64)"
|
|
121
|
+
local url="$API_BASE_URL/$endpoint"
|
|
122
|
+
|
|
123
|
+
if [[ "$method" == "GET" ]]; then
|
|
124
|
+
curl -s -H "$auth_header" -H "$CONTENT_TYPE_JSON" "$url"
|
|
125
|
+
elif [[ "$method" == "POST" ]]; then
|
|
126
|
+
curl -s -X POST -H "$auth_header" -H "$CONTENT_TYPE_JSON" -d "$data" "$url"
|
|
127
|
+
elif [[ "$method" == "PUT" ]]; then
|
|
128
|
+
curl -s -X PUT -H "$auth_header" -H "$CONTENT_TYPE_JSON" -d "$data" "$url"
|
|
129
|
+
elif [[ "$method" == "DELETE" ]]; then
|
|
130
|
+
curl -s -X DELETE -H "$auth_header" -H "$CONTENT_TYPE_JSON" "$url"
|
|
131
|
+
fi
|
|
132
|
+
|
|
133
|
+
return 0
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
# List all configured accounts
|
|
137
|
+
list_accounts() {
|
|
138
|
+
load_config
|
|
139
|
+
print_info "Available 101domains accounts:"
|
|
140
|
+
jq -r '.accounts | keys[]' "$CONFIG_FILE" | while read -r account; do
|
|
141
|
+
local description
|
|
142
|
+
description=$(jq -r ".accounts.\"$account\".description" "$CONFIG_FILE")
|
|
143
|
+
local username
|
|
144
|
+
username=$(jq -r ".accounts.\"$account\".username" "$CONFIG_FILE")
|
|
145
|
+
echo " - $account ($username) - $description"
|
|
146
|
+
done
|
|
147
|
+
return 0
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
# List domains
|
|
151
|
+
list_domains() {
|
|
152
|
+
local account_name="$command"
|
|
153
|
+
|
|
154
|
+
print_info "Listing domains for account: $account_name"
|
|
155
|
+
local response
|
|
156
|
+
if response=$(api_request "$account_name" "GET" "domain/list"); then
|
|
157
|
+
echo "$response" | jq -r '.result.domains[]? | "\(.domain) - Status: \(.status) - Expires: \(.expiry_date)"'
|
|
158
|
+
else
|
|
159
|
+
print_error "Failed to retrieve domains"
|
|
160
|
+
echo "$response"
|
|
161
|
+
fi
|
|
162
|
+
return 0
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
# Get domain details
|
|
166
|
+
get_domain_details() {
|
|
167
|
+
local account_name="$command"
|
|
168
|
+
local domain="$account_name"
|
|
169
|
+
|
|
170
|
+
if [[ -z "$domain" ]]; then
|
|
171
|
+
print_error "$ERROR_DOMAIN_NAME_REQUIRED"
|
|
172
|
+
exit 1
|
|
173
|
+
fi
|
|
174
|
+
|
|
175
|
+
print_info "Getting details for domain: $domain"
|
|
176
|
+
local response
|
|
177
|
+
if response=$(api_request "$account_name" "GET" "domain/info?domain=$domain"); then
|
|
178
|
+
echo "$response" | jq '.'
|
|
179
|
+
else
|
|
180
|
+
print_error "Failed to get domain details"
|
|
181
|
+
echo "$response"
|
|
182
|
+
fi
|
|
183
|
+
return 0
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
# List DNS records
|
|
187
|
+
list_dns_records() {
|
|
188
|
+
local account_name="$command"
|
|
189
|
+
local domain="$account_name"
|
|
190
|
+
|
|
191
|
+
if [[ -z "$domain" ]]; then
|
|
192
|
+
print_error "$ERROR_DOMAIN_NAME_REQUIRED"
|
|
193
|
+
exit 1
|
|
194
|
+
fi
|
|
195
|
+
|
|
196
|
+
print_info "Listing DNS records for domain: $domain"
|
|
197
|
+
local response
|
|
198
|
+
if response=$(api_request "$account_name" "GET" "dns/list?domain=$domain"); then
|
|
199
|
+
echo "$response" | jq -r '.result.records[]? | "\(.name) \(.type) \(.content) (TTL: \(.ttl))"'
|
|
200
|
+
else
|
|
201
|
+
print_error "Failed to retrieve DNS records"
|
|
202
|
+
echo "$response"
|
|
203
|
+
fi
|
|
204
|
+
return 0
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
# Add DNS record
|
|
208
|
+
add_dns_record() {
|
|
209
|
+
local account_name="$command"
|
|
210
|
+
local domain="$account_name"
|
|
211
|
+
local name="$target"
|
|
212
|
+
local type="$options"
|
|
213
|
+
local content="$5"
|
|
214
|
+
local ttl="${6:-3600}"
|
|
215
|
+
|
|
216
|
+
if [[ -z "$domain" || -z "$name" || -z "$type" || -z "$content" ]]; then
|
|
217
|
+
print_error "Domain, name, type, and content are required"
|
|
218
|
+
exit 1
|
|
219
|
+
fi
|
|
220
|
+
|
|
221
|
+
local data
|
|
222
|
+
data=$(jq -n \
|
|
223
|
+
--arg domain "$domain" \
|
|
224
|
+
--arg name "$name" \
|
|
225
|
+
--arg type "$type" \
|
|
226
|
+
--arg content "$content" \
|
|
227
|
+
--arg ttl "$ttl" \
|
|
228
|
+
'{domain: $domain, name: $name, type: $type, content: $content, ttl: ($ttl | tonumber)}')
|
|
229
|
+
|
|
230
|
+
print_info "Adding DNS record: $name $type $content"
|
|
231
|
+
local response
|
|
232
|
+
if response=$(api_request "$account_name" "POST" "dns/add" "$data"); then
|
|
233
|
+
print_success "DNS record added successfully"
|
|
234
|
+
echo "$response" | jq '.'
|
|
235
|
+
else
|
|
236
|
+
print_error "Failed to add DNS record"
|
|
237
|
+
echo "$response"
|
|
238
|
+
fi
|
|
239
|
+
return 0
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
# Update DNS record
|
|
243
|
+
update_dns_record() {
|
|
244
|
+
local account_name="$command"
|
|
245
|
+
local domain="$account_name"
|
|
246
|
+
local record_id="$target"
|
|
247
|
+
local name="$options"
|
|
248
|
+
local type="$5"
|
|
249
|
+
local content="$6"
|
|
250
|
+
local ttl="${7:-3600}"
|
|
251
|
+
|
|
252
|
+
if [[ -z "$domain" || -z "$record_id" || -z "$name" || -z "$type" || -z "$content" ]]; then
|
|
253
|
+
print_error "Domain, record ID, name, type, and content are required"
|
|
254
|
+
exit 1
|
|
255
|
+
fi
|
|
256
|
+
|
|
257
|
+
local data=$(jq -n \
|
|
258
|
+
--arg domain "$domain" \
|
|
259
|
+
--arg record_id "$record_id" \
|
|
260
|
+
--arg name "$name" \
|
|
261
|
+
--arg type "$type" \
|
|
262
|
+
--arg content "$content" \
|
|
263
|
+
--arg ttl "$ttl" \
|
|
264
|
+
'{domain: $domain, record_id: $record_id, name: $name, type: $type, content: $content, ttl: ($ttl | tonumber)}')
|
|
265
|
+
|
|
266
|
+
print_info "Updating DNS record: $record_id"
|
|
267
|
+
local response
|
|
268
|
+
if response=$(api_request "$account_name" "POST" "dns/update" "$data"); then
|
|
269
|
+
print_success "DNS record updated successfully"
|
|
270
|
+
echo "$response" | jq '.'
|
|
271
|
+
else
|
|
272
|
+
print_error "Failed to update DNS record"
|
|
273
|
+
echo "$response"
|
|
274
|
+
fi
|
|
275
|
+
return 0
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
# Delete DNS record
|
|
279
|
+
delete_dns_record() {
|
|
280
|
+
local account_name="$command"
|
|
281
|
+
local domain="$account_name"
|
|
282
|
+
local record_id="$target"
|
|
283
|
+
|
|
284
|
+
if [[ -z "$domain" || -z "$record_id" ]]; then
|
|
285
|
+
print_error "Domain and record ID are required"
|
|
286
|
+
exit 1
|
|
287
|
+
fi
|
|
288
|
+
|
|
289
|
+
local data=$(jq -n \
|
|
290
|
+
--arg domain "$domain" \
|
|
291
|
+
--arg record_id "$record_id" \
|
|
292
|
+
'{domain: $domain, record_id: $record_id}')
|
|
293
|
+
|
|
294
|
+
print_warning "Deleting DNS record: $record_id"
|
|
295
|
+
local response
|
|
296
|
+
if response=$(api_request "$account_name" "POST" "dns/delete" "$data"); then
|
|
297
|
+
print_success "DNS record deleted successfully"
|
|
298
|
+
echo "$response" | jq '.'
|
|
299
|
+
else
|
|
300
|
+
print_error "Failed to delete DNS record"
|
|
301
|
+
echo "$response"
|
|
302
|
+
fi
|
|
303
|
+
return 0
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
# Get domain nameservers
|
|
307
|
+
get_nameservers() {
|
|
308
|
+
local account_name="$command"
|
|
309
|
+
local domain="$account_name"
|
|
310
|
+
|
|
311
|
+
if [[ -z "$domain" ]]; then
|
|
312
|
+
print_error "$ERROR_DOMAIN_NAME_REQUIRED"
|
|
313
|
+
exit 1
|
|
314
|
+
fi
|
|
315
|
+
|
|
316
|
+
print_info "Getting nameservers for domain: $domain"
|
|
317
|
+
local response
|
|
318
|
+
if response=$(api_request "$account_name" "GET" "domain/nameservers?domain=$domain"); then
|
|
319
|
+
echo "$response" | jq -r '.result.nameservers[]?'
|
|
320
|
+
else
|
|
321
|
+
print_error "Failed to get nameservers"
|
|
322
|
+
echo "$response"
|
|
323
|
+
fi
|
|
324
|
+
return 0
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
# Update nameservers
|
|
328
|
+
update_nameservers() {
|
|
329
|
+
local account_name="$command"
|
|
330
|
+
local domain="$account_name"
|
|
331
|
+
shift 2
|
|
332
|
+
local nameservers=("$@")
|
|
333
|
+
|
|
334
|
+
if [[ -z "$domain" || ${#nameservers[@]} -eq 0 ]]; then
|
|
335
|
+
print_error "Domain and at least one nameserver are required"
|
|
336
|
+
exit 1
|
|
337
|
+
fi
|
|
338
|
+
|
|
339
|
+
local ns_json
|
|
340
|
+
ns_json=$(printf '%s\n' "${nameservers[@]}" | jq -R . | jq -s .)
|
|
341
|
+
local data
|
|
342
|
+
data=$(jq -n --arg domain "$domain" --argjson nameservers "$ns_json" '{domain: $domain, nameservers: $nameservers}')
|
|
343
|
+
|
|
344
|
+
print_info "Updating nameservers for domain: $domain"
|
|
345
|
+
local response
|
|
346
|
+
if response=$(api_request "$account_name" "POST" "domain/nameservers" "$data"); then
|
|
347
|
+
print_success "Nameservers updated successfully"
|
|
348
|
+
echo "$response" | jq '.'
|
|
349
|
+
else
|
|
350
|
+
print_error "Failed to update nameservers"
|
|
351
|
+
echo "$response"
|
|
352
|
+
fi
|
|
353
|
+
return 0
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
# Check domain availability
|
|
357
|
+
check_availability() {
|
|
358
|
+
local account_name="$command"
|
|
359
|
+
local domain="$account_name"
|
|
360
|
+
|
|
361
|
+
if [[ -z "$domain" ]]; then
|
|
362
|
+
print_error "$ERROR_DOMAIN_NAME_REQUIRED"
|
|
363
|
+
exit 1
|
|
364
|
+
fi
|
|
365
|
+
|
|
366
|
+
print_info "Checking availability for domain: $domain"
|
|
367
|
+
local response
|
|
368
|
+
if response=$(api_request "$account_name" "GET" "domain/check?domain=$domain"); then
|
|
369
|
+
local available
|
|
370
|
+
available=$(echo "$response" | jq -r '.result.available')
|
|
371
|
+
local price
|
|
372
|
+
price=$(echo "$response" | jq -r '.result.price // "N/A"')
|
|
373
|
+
|
|
374
|
+
if [[ "$available" == "true" ]]; then
|
|
375
|
+
print_success "Domain $domain is available for $price"
|
|
376
|
+
else
|
|
377
|
+
print_warning "Domain $domain is not available"
|
|
378
|
+
fi
|
|
379
|
+
echo "$response" | jq '.'
|
|
380
|
+
else
|
|
381
|
+
print_error "Failed to check domain availability"
|
|
382
|
+
echo "$response"
|
|
383
|
+
fi
|
|
384
|
+
return 0
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
# Get domain contacts
|
|
388
|
+
get_domain_contacts() {
|
|
389
|
+
local account_name="$command"
|
|
390
|
+
local domain="$account_name"
|
|
391
|
+
|
|
392
|
+
if [[ -z "$domain" ]]; then
|
|
393
|
+
print_error "$ERROR_DOMAIN_NAME_REQUIRED"
|
|
394
|
+
exit 1
|
|
395
|
+
fi
|
|
396
|
+
|
|
397
|
+
print_info "Getting contacts for domain: $domain"
|
|
398
|
+
local response
|
|
399
|
+
if response=$(api_request "$account_name" "GET" "domain/contacts?domain=$domain"); then
|
|
400
|
+
echo "$response" | jq '.'
|
|
401
|
+
else
|
|
402
|
+
print_error "Failed to get domain contacts"
|
|
403
|
+
echo "$response"
|
|
404
|
+
fi
|
|
405
|
+
return 0
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
# Enable/disable domain lock
|
|
409
|
+
toggle_domain_lock() {
|
|
410
|
+
local account_name="$command"
|
|
411
|
+
local domain="$account_name"
|
|
412
|
+
local action="$target" # "lock" or "unlock"
|
|
413
|
+
|
|
414
|
+
if [[ -z "$domain" || -z "$action" ]]; then
|
|
415
|
+
print_error "Domain and action (lock/unlock) are required"
|
|
416
|
+
exit 1
|
|
417
|
+
fi
|
|
418
|
+
|
|
419
|
+
local lock_status="1"
|
|
420
|
+
if [[ "$action" == "unlock" ]]; then
|
|
421
|
+
lock_status="0"
|
|
422
|
+
fi
|
|
423
|
+
|
|
424
|
+
local data
|
|
425
|
+
data=$(jq -n --arg domain "$domain" --arg lock "$lock_status" '{domain: $domain, lock: $lock}')
|
|
426
|
+
|
|
427
|
+
print_info "${action^}ing domain: $domain"
|
|
428
|
+
local response
|
|
429
|
+
if response=$(api_request "$account_name" "POST" "domain/lock" "$data"); then
|
|
430
|
+
print_success "Domain ${action}ed successfully"
|
|
431
|
+
echo "$response" | jq '.'
|
|
432
|
+
else
|
|
433
|
+
print_error "Failed to $action domain"
|
|
434
|
+
echo "$response"
|
|
435
|
+
fi
|
|
436
|
+
return 0
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
# Get domain transfer status
|
|
440
|
+
get_transfer_status() {
|
|
441
|
+
local account_name="$command"
|
|
442
|
+
local domain="$account_name"
|
|
443
|
+
|
|
444
|
+
if [[ -z "$domain" ]]; then
|
|
445
|
+
print_error "$ERROR_DOMAIN_NAME_REQUIRED"
|
|
446
|
+
exit 1
|
|
447
|
+
fi
|
|
448
|
+
|
|
449
|
+
print_info "Getting transfer status for domain: $domain"
|
|
450
|
+
local response
|
|
451
|
+
if response=$(api_request "$account_name" "GET" "domain/transfer/status?domain=$domain"); then
|
|
452
|
+
echo "$response" | jq '.'
|
|
453
|
+
else
|
|
454
|
+
print_error "Failed to get transfer status"
|
|
455
|
+
echo "$response"
|
|
456
|
+
fi
|
|
457
|
+
return 0
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
# Get domain privacy status
|
|
461
|
+
get_privacy_status() {
|
|
462
|
+
local account_name="$command"
|
|
463
|
+
local domain="$account_name"
|
|
464
|
+
|
|
465
|
+
if [[ -z "$domain" ]]; then
|
|
466
|
+
print_error "$ERROR_DOMAIN_NAME_REQUIRED"
|
|
467
|
+
exit 1
|
|
468
|
+
fi
|
|
469
|
+
|
|
470
|
+
print_info "Getting privacy status for domain: $domain"
|
|
471
|
+
local response
|
|
472
|
+
if response=$(api_request "$account_name" "GET" "domain/privacy?domain=$domain"); then
|
|
473
|
+
echo "$response" | jq '.'
|
|
474
|
+
else
|
|
475
|
+
print_error "Failed to get privacy status"
|
|
476
|
+
echo "$response"
|
|
477
|
+
fi
|
|
478
|
+
return 0
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
# Toggle domain privacy
|
|
482
|
+
toggle_domain_privacy() {
|
|
483
|
+
local account_name="$command"
|
|
484
|
+
local domain="$account_name"
|
|
485
|
+
local action="$target" # "enable" or "disable"
|
|
486
|
+
|
|
487
|
+
if [[ -z "$domain" || -z "$action" ]]; then
|
|
488
|
+
print_error "Domain and action (enable/disable) are required"
|
|
489
|
+
exit 1
|
|
490
|
+
fi
|
|
491
|
+
|
|
492
|
+
local privacy_status="1"
|
|
493
|
+
if [[ "$action" == "disable" ]]; then
|
|
494
|
+
privacy_status="0"
|
|
495
|
+
fi
|
|
496
|
+
|
|
497
|
+
local data
|
|
498
|
+
data=$(jq -n --arg domain "$domain" --arg privacy "$privacy_status" '{domain: $domain, privacy: $privacy}')
|
|
499
|
+
|
|
500
|
+
print_info "${action^}ing privacy for domain: $domain"
|
|
501
|
+
local response
|
|
502
|
+
if response=$(api_request "$account_name" "POST" "domain/privacy" "$data"); then
|
|
503
|
+
print_success "Domain privacy ${action}d successfully"
|
|
504
|
+
echo "$response" | jq '.'
|
|
505
|
+
else
|
|
506
|
+
print_error "Failed to $action domain privacy"
|
|
507
|
+
echo "$response"
|
|
508
|
+
fi
|
|
509
|
+
return 0
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
# Audit domain configuration
|
|
513
|
+
audit_domain() {
|
|
514
|
+
local account_name="$command"
|
|
515
|
+
local domain="$account_name"
|
|
516
|
+
|
|
517
|
+
if [[ -z "$domain" ]]; then
|
|
518
|
+
print_error "$ERROR_DOMAIN_NAME_REQUIRED"
|
|
519
|
+
exit 1
|
|
520
|
+
fi
|
|
521
|
+
|
|
522
|
+
print_info "Auditing domain configuration: $domain"
|
|
523
|
+
echo ""
|
|
524
|
+
|
|
525
|
+
print_info "=== DOMAIN DETAILS ==="
|
|
526
|
+
get_domain_details "$account_name" "$domain"
|
|
527
|
+
echo ""
|
|
528
|
+
|
|
529
|
+
print_info "=== NAMESERVERS ==="
|
|
530
|
+
get_nameservers "$account_name" "$domain"
|
|
531
|
+
echo ""
|
|
532
|
+
|
|
533
|
+
print_info "=== DNS RECORDS ==="
|
|
534
|
+
list_dns_records "$account_name" "$domain"
|
|
535
|
+
echo ""
|
|
536
|
+
|
|
537
|
+
print_info "=== DOMAIN CONTACTS ==="
|
|
538
|
+
get_domain_contacts "$account_name" "$domain"
|
|
539
|
+
echo ""
|
|
540
|
+
|
|
541
|
+
print_info "=== PRIVACY STATUS ==="
|
|
542
|
+
get_privacy_status "$account_name" "$domain"
|
|
543
|
+
return 0
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
# Monitor domain expiration
|
|
547
|
+
monitor_expiration() {
|
|
548
|
+
local account_name="$command"
|
|
549
|
+
local days_threshold="${2:-30}"
|
|
550
|
+
|
|
551
|
+
print_info "Monitoring domain expiration (threshold: $days_threshold days)"
|
|
552
|
+
local response
|
|
553
|
+
if response=$(api_request "$account_name" "GET" "domain/list"); then
|
|
554
|
+
echo "$response" | jq -r --arg threshold "$days_threshold" '
|
|
555
|
+
.result.domains[]? |
|
|
556
|
+
select(.expiry_date != null) |
|
|
557
|
+
select(((.expiry_date | strptime("%Y-%m-%d") | mktime) - now) / 86400 < ($threshold | tonumber)) |
|
|
558
|
+
"\(.domain) expires on \(.expiry_date) (\((((.expiry_date | strptime("%Y-%m-%d") | mktime) - now) / 86400 | floor)) days)"
|
|
559
|
+
'
|
|
560
|
+
else
|
|
561
|
+
print_error "Failed to retrieve domain expiration data"
|
|
562
|
+
echo "$response"
|
|
563
|
+
fi
|
|
564
|
+
return 0
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
# Show help
|
|
568
|
+
show_help() {
|
|
569
|
+
echo "101domains Registrar Helper Script"
|
|
570
|
+
echo "Usage: $0 [command] [account] [options]"
|
|
571
|
+
echo ""
|
|
572
|
+
echo "Commands:"
|
|
573
|
+
echo " accounts - List all configured accounts"
|
|
574
|
+
echo " domains [account] - List all domains"
|
|
575
|
+
echo " domain-details [account] [domain] - Get domain details"
|
|
576
|
+
echo " dns-records [account] [domain] - List DNS records"
|
|
577
|
+
echo " add-dns [account] [domain] [name] [type] [content] [ttl] - Add DNS record"
|
|
578
|
+
echo " update-dns [account] [domain] [id] [name] [type] [content] [ttl] - Update DNS record"
|
|
579
|
+
echo " delete-dns [account] [domain] [id] - Delete DNS record"
|
|
580
|
+
echo " nameservers [account] [domain] - Get nameservers"
|
|
581
|
+
echo " update-ns [account] [domain] [ns1] [ns2...] - Update nameservers"
|
|
582
|
+
echo " check-availability [account] [domain] - Check domain availability"
|
|
583
|
+
echo " contacts [account] [domain] - Get domain contacts"
|
|
584
|
+
echo " lock [account] [domain] - Lock domain"
|
|
585
|
+
echo " unlock [account] [domain] - Unlock domain"
|
|
586
|
+
echo " transfer-status [account] [domain] - Get transfer status"
|
|
587
|
+
echo " privacy-status [account] [domain] - Get privacy status"
|
|
588
|
+
echo " enable-privacy [account] [domain] - Enable domain privacy"
|
|
589
|
+
echo " disable-privacy [account] [domain] - Disable domain privacy"
|
|
590
|
+
echo " audit [account] [domain] - Audit domain configuration"
|
|
591
|
+
echo " monitor-expiration [account] [days] - Monitor domain expiration"
|
|
592
|
+
echo " help - $HELP_SHOW_MESSAGE"
|
|
593
|
+
echo ""
|
|
594
|
+
echo "Examples:"
|
|
595
|
+
echo " $0 accounts"
|
|
596
|
+
echo " $0 domains personal"
|
|
597
|
+
echo " $0 dns-records personal example.com"
|
|
598
|
+
echo " $0 add-dns personal example.com www A 192.168.1.100"
|
|
599
|
+
echo " $0 audit personal example.com"
|
|
600
|
+
echo " $0 monitor-expiration personal 30"
|
|
601
|
+
echo " $0 enable-privacy personal example.com"
|
|
602
|
+
return 0
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
# Main script logic
|
|
606
|
+
main() {
|
|
607
|
+
# Assign positional parameters to local variables
|
|
608
|
+
local command="${1:-help}"
|
|
609
|
+
local account_name="$account_name"
|
|
610
|
+
local target="$target"
|
|
611
|
+
local options="$options"
|
|
612
|
+
# Assign positional parameters to local variables
|
|
613
|
+
local command="${1:-help}"
|
|
614
|
+
local account_name="$account_name"
|
|
615
|
+
local target="$target"
|
|
616
|
+
local options="$options"
|
|
617
|
+
# Assign positional parameters to local variables
|
|
618
|
+
local command="${1:-help}"
|
|
619
|
+
local account_name="$account_name"
|
|
620
|
+
local target="$target"
|
|
621
|
+
local options="$options"
|
|
622
|
+
# Assign positional parameters to local variables
|
|
623
|
+
# Assign positional parameters to local variables for better maintainability
|
|
624
|
+
local domain="$target"
|
|
625
|
+
local record_name="$options"
|
|
626
|
+
local record_type="$5"
|
|
627
|
+
local record_content="$6"
|
|
628
|
+
local record_ttl="$7"
|
|
629
|
+
local record_id="$8"
|
|
630
|
+
|
|
631
|
+
check_dependencies
|
|
632
|
+
|
|
633
|
+
case "$command" in
|
|
634
|
+
"accounts")
|
|
635
|
+
list_accounts
|
|
636
|
+
;;
|
|
637
|
+
"domains")
|
|
638
|
+
list_domains "$account_name"
|
|
639
|
+
;;
|
|
640
|
+
"domain-details")
|
|
641
|
+
get_domain_details "$account_name" "$domain"
|
|
642
|
+
;;
|
|
643
|
+
"dns-records")
|
|
644
|
+
list_dns_records "$account_name" "$domain"
|
|
645
|
+
;;
|
|
646
|
+
"add-dns")
|
|
647
|
+
add_dns_record "$account_name" "$domain" "$record_name" "$record_type" "$record_content" "$record_ttl"
|
|
648
|
+
;;
|
|
649
|
+
"update-dns")
|
|
650
|
+
update_dns_record "$account_name" "$domain" "$record_name" "$record_type" "$record_content" "$record_ttl" "$record_id"
|
|
651
|
+
;;
|
|
652
|
+
"delete-dns")
|
|
653
|
+
delete_dns_record "$account_name" "$domain" "$record_name"
|
|
654
|
+
;;
|
|
655
|
+
"nameservers")
|
|
656
|
+
get_nameservers "$account_name" "$domain"
|
|
657
|
+
;;
|
|
658
|
+
"update-ns")
|
|
659
|
+
shift 3
|
|
660
|
+
update_nameservers "$account_name" "$domain" "$@"
|
|
661
|
+
;;
|
|
662
|
+
"check-availability")
|
|
663
|
+
check_availability "$account_name" "$domain"
|
|
664
|
+
;;
|
|
665
|
+
"contacts")
|
|
666
|
+
get_domain_contacts "$account_name" "$domain"
|
|
667
|
+
;;
|
|
668
|
+
"lock")
|
|
669
|
+
toggle_domain_lock "$account_name" "$domain" "lock"
|
|
670
|
+
;;
|
|
671
|
+
"unlock")
|
|
672
|
+
toggle_domain_lock "$account_name" "$domain" "unlock"
|
|
673
|
+
;;
|
|
674
|
+
"transfer-status")
|
|
675
|
+
get_transfer_status "$account_name" "$domain"
|
|
676
|
+
;;
|
|
677
|
+
"privacy-status")
|
|
678
|
+
get_privacy_status "$account_name" "$domain"
|
|
679
|
+
;;
|
|
680
|
+
"enable-privacy")
|
|
681
|
+
toggle_domain_privacy "$account_name" "$domain" "enable"
|
|
682
|
+
;;
|
|
683
|
+
"disable-privacy")
|
|
684
|
+
toggle_domain_privacy "$account_name" "$domain" "disable"
|
|
685
|
+
;;
|
|
686
|
+
"audit")
|
|
687
|
+
audit_domain "$account_name" "$domain"
|
|
688
|
+
;;
|
|
689
|
+
"monitor-expiration")
|
|
690
|
+
monitor_expiration "$account_name" "$domain"
|
|
691
|
+
;;
|
|
692
|
+
"help"|*)
|
|
693
|
+
show_help
|
|
694
|
+
;;
|
|
695
|
+
esac
|
|
696
|
+
return 0
|
|
697
|
+
}
|
|
698
|
+
|
|
699
|
+
main "$@"
|
|
700
|
+
|
|
701
|
+
return 0
|