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,619 @@
|
|
|
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
|
+
# Amazon SES Helper Script
|
|
5
|
+
# Comprehensive SES management for AI assistants
|
|
6
|
+
|
|
7
|
+
# Colors for output
|
|
8
|
+
|
|
9
|
+
GREEN='\033[0;32m'
|
|
10
|
+
BLUE='\033[0;34m'
|
|
11
|
+
YELLOW='\033[1;33m'
|
|
12
|
+
RED='\033[0;31m'
|
|
13
|
+
NC='\033[0m' # No Color
|
|
14
|
+
|
|
15
|
+
# Common message constants
|
|
16
|
+
readonly HELP_SHOW_MESSAGE="Show this help"
|
|
17
|
+
readonly USAGE_COMMAND_OPTIONS="Usage: $0 <command> [options]"
|
|
18
|
+
|
|
19
|
+
print_info() {
|
|
20
|
+
local msg="$1"
|
|
21
|
+
echo -e "${BLUE}[INFO]${NC} $msg"
|
|
22
|
+
return 0
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
print_success() {
|
|
26
|
+
local msg="$1"
|
|
27
|
+
echo -e "${GREEN}[SUCCESS]${NC} $msg"
|
|
28
|
+
return 0
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
print_warning() {
|
|
32
|
+
local msg="$1"
|
|
33
|
+
echo -e "${YELLOW}[WARNING]${NC} $msg"
|
|
34
|
+
return 0
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
print_error() {
|
|
38
|
+
local msg="$1"
|
|
39
|
+
echo -e "${RED}[ERROR]${NC} $msg" >&2
|
|
40
|
+
return 0
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
CONFIG_FILE="../configs/ses-config.json"
|
|
44
|
+
|
|
45
|
+
# Constants for repeated strings
|
|
46
|
+
readonly ERROR_IDENTITY_REQUIRED="Identity (email or domain) is required"
|
|
47
|
+
|
|
48
|
+
# Check if AWS CLI is installed
|
|
49
|
+
check_aws_cli() {
|
|
50
|
+
if ! command -v aws &> /dev/null; then
|
|
51
|
+
print_error "AWS CLI is not installed. Please install it first:"
|
|
52
|
+
echo " macOS: brew install awscli" >&2
|
|
53
|
+
echo " Ubuntu: sudo apt-get install awscli" >&2
|
|
54
|
+
echo " Or: pip install awscli" >&2
|
|
55
|
+
exit 1
|
|
56
|
+
fi
|
|
57
|
+
|
|
58
|
+
return 0
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
# Load SES configuration
|
|
62
|
+
load_config() {
|
|
63
|
+
if [[ ! -f "$CONFIG_FILE" ]]; then
|
|
64
|
+
print_error "Configuration file not found: $CONFIG_FILE"
|
|
65
|
+
print_info "Copy and customize: cp ../configs/ses-config.json.txt $CONFIG_FILE"
|
|
66
|
+
exit 1
|
|
67
|
+
fi
|
|
68
|
+
|
|
69
|
+
if ! command -v jq &> /dev/null; then
|
|
70
|
+
print_error "jq is required but not installed"
|
|
71
|
+
print_info "Install on macOS: brew install jq"
|
|
72
|
+
print_info "Install on Ubuntu: sudo apt-get install jq"
|
|
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 "Account name is 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
|
+
# Set AWS credentials for account
|
|
101
|
+
set_aws_credentials() {
|
|
102
|
+
local account_name="$command"
|
|
103
|
+
local config
|
|
104
|
+
config=$(get_account_config "$account_name")
|
|
105
|
+
|
|
106
|
+
export AWS_ACCESS_KEY_ID=$(echo "$config" | jq -r '.aws_access_key_id')
|
|
107
|
+
export AWS_SECRET_ACCESS_KEY=$(echo "$config" | jq -r '.aws_secret_access_key')
|
|
108
|
+
|
|
109
|
+
if [[ "$AWS_ACCESS_KEY_ID" == "null" || "$AWS_SECRET_ACCESS_KEY" == "null" ]]; then
|
|
110
|
+
print_error "Invalid AWS credentials for account '$account_name'"
|
|
111
|
+
exit 1
|
|
112
|
+
fi
|
|
113
|
+
return 0
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
# List all configured accounts
|
|
117
|
+
list_accounts() {
|
|
118
|
+
load_config
|
|
119
|
+
print_info "Available SES accounts:"
|
|
120
|
+
jq -r '.accounts | keys[]' "$CONFIG_FILE" | while read account; do
|
|
121
|
+
local description
|
|
122
|
+
description=$(jq -r ".accounts.\"$account\".description" "$CONFIG_FILE")
|
|
123
|
+
local region
|
|
124
|
+
region=$(jq -r ".accounts.\"$account\".region" "$CONFIG_FILE")
|
|
125
|
+
echo " - $account ($region) - $description"
|
|
126
|
+
done
|
|
127
|
+
return 0
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
# Get sending quota
|
|
131
|
+
get_sending_quota() {
|
|
132
|
+
local account_name="$command"
|
|
133
|
+
set_aws_credentials "$account_name"
|
|
134
|
+
|
|
135
|
+
print_info "Getting sending quota for account: $account_name"
|
|
136
|
+
aws ses get-send-quota --output table
|
|
137
|
+
return 0
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
# Get sending statistics
|
|
141
|
+
get_sending_statistics() {
|
|
142
|
+
local account_name="$command"
|
|
143
|
+
set_aws_credentials "$account_name"
|
|
144
|
+
|
|
145
|
+
print_info "Getting sending statistics for account: $account_name"
|
|
146
|
+
aws ses get-send-statistics --output table
|
|
147
|
+
return 0
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
# List verified email addresses
|
|
151
|
+
list_verified_emails() {
|
|
152
|
+
local account_name="$command"
|
|
153
|
+
set_aws_credentials "$account_name"
|
|
154
|
+
|
|
155
|
+
print_info "Verified email addresses for account: $account_name"
|
|
156
|
+
aws ses list-verified-email-addresses --output table
|
|
157
|
+
return 0
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
# List verified domains
|
|
161
|
+
list_verified_domains() {
|
|
162
|
+
local account_name="$command"
|
|
163
|
+
set_aws_credentials "$account_name"
|
|
164
|
+
|
|
165
|
+
print_info "Verified domains for account: $account_name"
|
|
166
|
+
aws ses list-identities --identity-type Domain --output table
|
|
167
|
+
return 0
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
# Get identity verification attributes
|
|
171
|
+
get_identity_verification() {
|
|
172
|
+
local account_name="$command"
|
|
173
|
+
local identity="$account_name"
|
|
174
|
+
set_aws_credentials "$account_name"
|
|
175
|
+
|
|
176
|
+
if [[ -z "$identity" ]]; then
|
|
177
|
+
print_error "$ERROR_IDENTITY_REQUIRED"
|
|
178
|
+
exit 1
|
|
179
|
+
fi
|
|
180
|
+
|
|
181
|
+
print_info "Getting verification attributes for: $identity"
|
|
182
|
+
aws ses get-identity-verification-attributes --identities "$identity" --output table
|
|
183
|
+
return 0
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
# Get reputation
|
|
187
|
+
get_reputation() {
|
|
188
|
+
local account_name="$command"
|
|
189
|
+
set_aws_credentials "$account_name"
|
|
190
|
+
|
|
191
|
+
print_info "Getting account reputation for: $account_name"
|
|
192
|
+
aws ses get-account-sending-enabled --output table
|
|
193
|
+
echo ""
|
|
194
|
+
print_info "Reputation tracking:"
|
|
195
|
+
aws ses describe-reputation-tracking --output table
|
|
196
|
+
return 0
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
# List suppressed destinations (bounces/complaints)
|
|
200
|
+
list_suppressed_destinations() {
|
|
201
|
+
local account_name="$command"
|
|
202
|
+
set_aws_credentials "$account_name"
|
|
203
|
+
|
|
204
|
+
print_info "Suppressed destinations (bounces/complaints) for account: $account_name"
|
|
205
|
+
aws sesv2 list-suppressed-destinations --output table
|
|
206
|
+
return 0
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
# Get suppression list details
|
|
210
|
+
get_suppression_details() {
|
|
211
|
+
local account_name="$command"
|
|
212
|
+
local email="$account_name"
|
|
213
|
+
set_aws_credentials "$account_name"
|
|
214
|
+
|
|
215
|
+
if [[ -z "$email" ]]; then
|
|
216
|
+
print_error "Email address is required"
|
|
217
|
+
exit 1
|
|
218
|
+
fi
|
|
219
|
+
|
|
220
|
+
print_info "Getting suppression details for: $email"
|
|
221
|
+
aws sesv2 get-suppressed-destination --email-address "$email" --output table
|
|
222
|
+
return 0
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
# Remove from suppression list
|
|
226
|
+
remove_from_suppression() {
|
|
227
|
+
local account_name="$command"
|
|
228
|
+
local email="$account_name"
|
|
229
|
+
set_aws_credentials "$account_name"
|
|
230
|
+
|
|
231
|
+
if [[ -z "$email" ]]; then
|
|
232
|
+
print_error "Email address is required"
|
|
233
|
+
exit 1
|
|
234
|
+
fi
|
|
235
|
+
|
|
236
|
+
print_warning "Removing $email from suppression list..."
|
|
237
|
+
aws sesv2 delete-suppressed-destination --email-address "$email"
|
|
238
|
+
if [[ $? -eq 0 ]]; then
|
|
239
|
+
print_success "Successfully removed $email from suppression list"
|
|
240
|
+
return 0
|
|
241
|
+
else
|
|
242
|
+
print_error "Failed to remove $email from suppression list"
|
|
243
|
+
return 1
|
|
244
|
+
fi
|
|
245
|
+
return 0
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
# Send test email
|
|
249
|
+
send_test_email() {
|
|
250
|
+
local account_name="$command"
|
|
251
|
+
local from_email="$account_name"
|
|
252
|
+
local to_email="$target"
|
|
253
|
+
local subject="$options"
|
|
254
|
+
local body="$param5"
|
|
255
|
+
set_aws_credentials "$account_name"
|
|
256
|
+
|
|
257
|
+
if [[ -z "$from_email" || -z "$to_email" ]]; then
|
|
258
|
+
print_error "From and to email addresses are required"
|
|
259
|
+
exit 1
|
|
260
|
+
fi
|
|
261
|
+
|
|
262
|
+
subject="${subject:-SES Test Email}"
|
|
263
|
+
body="${body:-This is a test email sent via AWS SES.}"
|
|
264
|
+
|
|
265
|
+
print_info "Sending test email from $from_email to $to_email"
|
|
266
|
+
|
|
267
|
+
local message_id=$(aws ses send-email \
|
|
268
|
+
--source "$from_email" \
|
|
269
|
+
--destination "ToAddresses=$to_email" \
|
|
270
|
+
--message "Subject={Data='$subject'},Body={Text={Data='$body'}}" \
|
|
271
|
+
--query 'MessageId' --output text)
|
|
272
|
+
|
|
273
|
+
if [[ $? -eq 0 ]]; then
|
|
274
|
+
print_success "Test email sent successfully. Message ID: $message_id"
|
|
275
|
+
return 0
|
|
276
|
+
else
|
|
277
|
+
print_error "Failed to send test email"
|
|
278
|
+
return 1
|
|
279
|
+
fi
|
|
280
|
+
return 0
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
# Get configuration sets
|
|
284
|
+
list_configuration_sets() {
|
|
285
|
+
local account_name="$command"
|
|
286
|
+
set_aws_credentials "$account_name"
|
|
287
|
+
|
|
288
|
+
print_info "Configuration sets for account: $account_name"
|
|
289
|
+
aws ses list-configuration-sets --output table
|
|
290
|
+
return 0
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
# Get bounce and complaint notifications
|
|
294
|
+
get_bounce_complaint_notifications() {
|
|
295
|
+
local account_name="$command"
|
|
296
|
+
local identity="$account_name"
|
|
297
|
+
set_aws_credentials "$account_name"
|
|
298
|
+
|
|
299
|
+
if [[ -z "$identity" ]]; then
|
|
300
|
+
print_error "$ERROR_IDENTITY_REQUIRED"
|
|
301
|
+
exit 1
|
|
302
|
+
fi
|
|
303
|
+
|
|
304
|
+
print_info "Bounce and complaint notifications for: $identity"
|
|
305
|
+
aws ses get-identity-notification-attributes --identities "$identity" --output table
|
|
306
|
+
return 0
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
# Verify email address
|
|
310
|
+
verify_email() {
|
|
311
|
+
local account_name="$command"
|
|
312
|
+
local email="$account_name"
|
|
313
|
+
set_aws_credentials "$account_name"
|
|
314
|
+
|
|
315
|
+
if [[ -z "$email" ]]; then
|
|
316
|
+
print_error "Email address is required"
|
|
317
|
+
exit 1
|
|
318
|
+
fi
|
|
319
|
+
|
|
320
|
+
print_info "Sending verification email to: $email"
|
|
321
|
+
aws ses verify-email-identity --email-address "$email"
|
|
322
|
+
if [[ $? -eq 0 ]]; then
|
|
323
|
+
print_success "Verification email sent to $email"
|
|
324
|
+
print_info "Check the inbox and click the verification link"
|
|
325
|
+
else
|
|
326
|
+
print_error "Failed to send verification email"
|
|
327
|
+
fi
|
|
328
|
+
return 0
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
# Verify domain
|
|
332
|
+
verify_domain() {
|
|
333
|
+
local account_name="$command"
|
|
334
|
+
local domain="$account_name"
|
|
335
|
+
set_aws_credentials "$account_name"
|
|
336
|
+
|
|
337
|
+
if [[ -z "$domain" ]]; then
|
|
338
|
+
print_error "Domain is required"
|
|
339
|
+
exit 1
|
|
340
|
+
fi
|
|
341
|
+
|
|
342
|
+
print_info "Starting domain verification for: $domain"
|
|
343
|
+
local verification_token
|
|
344
|
+
verification_token=$(aws ses verify-domain-identity --domain "$domain" --query 'VerificationToken' --output text)
|
|
345
|
+
|
|
346
|
+
if [[ $? -eq 0 ]]; then
|
|
347
|
+
print_success "Domain verification initiated for $domain"
|
|
348
|
+
print_info "Add this TXT record to your DNS:"
|
|
349
|
+
echo " Name: _amazonses.$domain"
|
|
350
|
+
echo " Value: $verification_token"
|
|
351
|
+
else
|
|
352
|
+
print_error "Failed to initiate domain verification"
|
|
353
|
+
fi
|
|
354
|
+
return 0
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
# Get DKIM attributes
|
|
358
|
+
get_dkim_attributes() {
|
|
359
|
+
local account_name="$command"
|
|
360
|
+
local identity="$account_name"
|
|
361
|
+
set_aws_credentials "$account_name"
|
|
362
|
+
|
|
363
|
+
if [[ -z "$identity" ]]; then
|
|
364
|
+
print_error "$ERROR_IDENTITY_REQUIRED"
|
|
365
|
+
exit 1
|
|
366
|
+
fi
|
|
367
|
+
|
|
368
|
+
print_info "DKIM attributes for: $identity"
|
|
369
|
+
aws ses get-identity-dkim-attributes --identities "$identity" --output table
|
|
370
|
+
return 0
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
# Enable DKIM
|
|
374
|
+
enable_dkim() {
|
|
375
|
+
local account_name="$command"
|
|
376
|
+
local identity="$account_name"
|
|
377
|
+
set_aws_credentials "$account_name"
|
|
378
|
+
|
|
379
|
+
if [[ -z "$identity" ]]; then
|
|
380
|
+
print_error "$ERROR_IDENTITY_REQUIRED"
|
|
381
|
+
exit 1
|
|
382
|
+
fi
|
|
383
|
+
|
|
384
|
+
print_info "Enabling DKIM for: $identity"
|
|
385
|
+
aws ses put-identity-dkim-attributes --identity "$identity" --dkim-enabled
|
|
386
|
+
if [[ $? -eq 0 ]]; then
|
|
387
|
+
print_success "DKIM enabled for $identity"
|
|
388
|
+
get_dkim_attributes "$account_name" "$identity"
|
|
389
|
+
else
|
|
390
|
+
print_error "Failed to enable DKIM"
|
|
391
|
+
return 0
|
|
392
|
+
fi
|
|
393
|
+
return 0
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
# Monitor email delivery
|
|
397
|
+
monitor_delivery() {
|
|
398
|
+
local account_name="$command"
|
|
399
|
+
set_aws_credentials "$account_name"
|
|
400
|
+
|
|
401
|
+
print_info "Email delivery monitoring for account: $account_name"
|
|
402
|
+
echo ""
|
|
403
|
+
|
|
404
|
+
print_info "=== SENDING QUOTA ==="
|
|
405
|
+
get_sending_quota "$account_name"
|
|
406
|
+
echo ""
|
|
407
|
+
|
|
408
|
+
print_info "=== SENDING STATISTICS (Last 24 hours) ==="
|
|
409
|
+
get_sending_statistics "$account_name"
|
|
410
|
+
echo ""
|
|
411
|
+
|
|
412
|
+
print_info "=== REPUTATION STATUS ==="
|
|
413
|
+
get_reputation "$account_name"
|
|
414
|
+
echo ""
|
|
415
|
+
|
|
416
|
+
return 0
|
|
417
|
+
print_info "=== SUPPRESSED DESTINATIONS ==="
|
|
418
|
+
list_suppressed_destinations "$account_name"
|
|
419
|
+
return 0
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
# Audit SES configuration
|
|
423
|
+
audit_configuration() {
|
|
424
|
+
local account_name="$command"
|
|
425
|
+
set_aws_credentials "$account_name"
|
|
426
|
+
|
|
427
|
+
print_info "SES Configuration Audit for account: $account_name"
|
|
428
|
+
echo ""
|
|
429
|
+
|
|
430
|
+
print_info "=== VERIFIED IDENTITIES ==="
|
|
431
|
+
print_info "Verified Email Addresses:"
|
|
432
|
+
list_verified_emails "$account_name"
|
|
433
|
+
echo ""
|
|
434
|
+
|
|
435
|
+
print_info "Verified Domains:"
|
|
436
|
+
list_verified_domains "$account_name"
|
|
437
|
+
echo ""
|
|
438
|
+
|
|
439
|
+
print_info "=== CONFIGURATION SETS ==="
|
|
440
|
+
list_configuration_sets "$account_name"
|
|
441
|
+
echo ""
|
|
442
|
+
return 0
|
|
443
|
+
|
|
444
|
+
print_info "=== ACCOUNT STATUS ==="
|
|
445
|
+
get_reputation "$account_name"
|
|
446
|
+
return 0
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
# Debug delivery issues
|
|
450
|
+
debug_delivery() {
|
|
451
|
+
local account_name="$command"
|
|
452
|
+
local email="$account_name"
|
|
453
|
+
set_aws_credentials "$account_name"
|
|
454
|
+
|
|
455
|
+
if [[ -z "$email" ]]; then
|
|
456
|
+
print_error "Email address is required for debugging"
|
|
457
|
+
exit 1
|
|
458
|
+
fi
|
|
459
|
+
|
|
460
|
+
print_info "Debugging delivery issues for: $email"
|
|
461
|
+
echo ""
|
|
462
|
+
|
|
463
|
+
print_info "=== SUPPRESSION STATUS ==="
|
|
464
|
+
if aws sesv2 get-suppressed-destination --email-address "$email" &>/dev/null; then
|
|
465
|
+
print_warning "$email is in the suppression list"
|
|
466
|
+
get_suppression_details "$account_name" "$email"
|
|
467
|
+
echo ""
|
|
468
|
+
print_info "To remove from suppression list, run:"
|
|
469
|
+
echo " $0 remove-suppression $account_name $email"
|
|
470
|
+
else
|
|
471
|
+
print_success "$email is not in the suppression list"
|
|
472
|
+
fi
|
|
473
|
+
echo ""
|
|
474
|
+
|
|
475
|
+
print_info "=== RECENT SENDING STATISTICS ==="
|
|
476
|
+
get_sending_statistics "$account_name"
|
|
477
|
+
return 0
|
|
478
|
+
echo ""
|
|
479
|
+
|
|
480
|
+
print_info "=== ACCOUNT REPUTATION ==="
|
|
481
|
+
get_reputation "$account_name"
|
|
482
|
+
return 0
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
# Show help
|
|
486
|
+
show_help() {
|
|
487
|
+
echo "Amazon SES Helper Script"
|
|
488
|
+
echo "Usage: $0 [command] [account] [options]"
|
|
489
|
+
echo ""
|
|
490
|
+
echo "Commands:"
|
|
491
|
+
echo " accounts - List all configured accounts"
|
|
492
|
+
echo " quota [account] - Get sending quota"
|
|
493
|
+
echo " stats [account] - Get sending statistics"
|
|
494
|
+
echo " verified-emails [account] - List verified email addresses"
|
|
495
|
+
echo " verified-domains [account] - List verified domains"
|
|
496
|
+
echo " verify-identity [account] [identity] - Get identity verification status"
|
|
497
|
+
echo " reputation [account] - Get account reputation"
|
|
498
|
+
echo " suppressed [account] - List suppressed destinations"
|
|
499
|
+
echo " suppression-details [account] [email] - Get suppression details"
|
|
500
|
+
echo " remove-suppression [account] [email] - Remove email from suppression list"
|
|
501
|
+
echo " send-test [account] [from] [to] [subject] [body] - Send test email"
|
|
502
|
+
echo " config-sets [account] - List configuration sets"
|
|
503
|
+
echo " notifications [account] [identity] - Get bounce/complaint notifications"
|
|
504
|
+
echo " verify-email [account] [email] - Verify email address"
|
|
505
|
+
echo " verify-domain [account] [domain] - Verify domain"
|
|
506
|
+
echo " dkim [account] [identity] - Get DKIM attributes"
|
|
507
|
+
echo " enable-dkim [account] [identity] - Enable DKIM"
|
|
508
|
+
echo " monitor [account] - Monitor email delivery"
|
|
509
|
+
echo " audit [account] - Audit SES configuration"
|
|
510
|
+
echo " debug [account] [email] - Debug delivery issues"
|
|
511
|
+
echo " help - $HELP_SHOW_MESSAGE"
|
|
512
|
+
echo ""
|
|
513
|
+
echo "Examples:"
|
|
514
|
+
echo " $0 accounts"
|
|
515
|
+
echo " $0 quota production"
|
|
516
|
+
echo " $0 monitor production"
|
|
517
|
+
echo " $0 debug production user@example.com"
|
|
518
|
+
echo " $0 send-test production noreply@yourdomain.com test@example.com"
|
|
519
|
+
echo " $0 verify-domain production yourdomain.com"
|
|
520
|
+
return 0
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
# Main script logic
|
|
524
|
+
main() {
|
|
525
|
+
# Assign positional parameters to local variables
|
|
526
|
+
local command="${1:-help}"
|
|
527
|
+
local account_name="$account_name"
|
|
528
|
+
local target="$target"
|
|
529
|
+
local options="$options"
|
|
530
|
+
# Assign positional parameters to local variables
|
|
531
|
+
local command="${1:-help}"
|
|
532
|
+
local account_name="$account_name"
|
|
533
|
+
local target="$target"
|
|
534
|
+
local options="$options"
|
|
535
|
+
# Assign positional parameters to local variables
|
|
536
|
+
local command="${1:-help}"
|
|
537
|
+
local account_name="$account_name"
|
|
538
|
+
local target="$target"
|
|
539
|
+
local options="$options"
|
|
540
|
+
# Assign positional parameters to local variables
|
|
541
|
+
# Assign positional parameters to local variables
|
|
542
|
+
local identity="$target"
|
|
543
|
+
local destination="$options"
|
|
544
|
+
local subject="$param5"
|
|
545
|
+
local body="$param6"
|
|
546
|
+
|
|
547
|
+
check_aws_cli
|
|
548
|
+
|
|
549
|
+
case "$command" in
|
|
550
|
+
"accounts")
|
|
551
|
+
list_accounts
|
|
552
|
+
;;
|
|
553
|
+
"quota")
|
|
554
|
+
get_sending_quota "$account_name"
|
|
555
|
+
;;
|
|
556
|
+
"stats")
|
|
557
|
+
get_sending_statistics "$account_name"
|
|
558
|
+
;;
|
|
559
|
+
"verified-emails")
|
|
560
|
+
list_verified_emails "$account_name"
|
|
561
|
+
;;
|
|
562
|
+
"verified-domains")
|
|
563
|
+
list_verified_domains "$account_name"
|
|
564
|
+
;;
|
|
565
|
+
"verify-identity")
|
|
566
|
+
get_identity_verification "$account_name" "$identity"
|
|
567
|
+
;;
|
|
568
|
+
"reputation")
|
|
569
|
+
get_reputation "$account_name"
|
|
570
|
+
;;
|
|
571
|
+
"suppressed")
|
|
572
|
+
list_suppressed_destinations "$account_name"
|
|
573
|
+
;;
|
|
574
|
+
"suppression-details")
|
|
575
|
+
get_suppression_details "$account_name" "$identity"
|
|
576
|
+
;;
|
|
577
|
+
"remove-suppression")
|
|
578
|
+
remove_from_suppression "$account_name" "$identity"
|
|
579
|
+
;;
|
|
580
|
+
"send-test")
|
|
581
|
+
send_test_email "$account_name" "$identity" "$destination" "$subject" "$body"
|
|
582
|
+
;;
|
|
583
|
+
"config-sets")
|
|
584
|
+
list_configuration_sets "$account_name"
|
|
585
|
+
;;
|
|
586
|
+
"notifications")
|
|
587
|
+
get_bounce_complaint_notifications "$account_name" "$identity"
|
|
588
|
+
;;
|
|
589
|
+
"verify-email")
|
|
590
|
+
verify_email "$account_name" "$identity"
|
|
591
|
+
;;
|
|
592
|
+
"verify-domain")
|
|
593
|
+
verify_domain "$account_name" "$identity"
|
|
594
|
+
;;
|
|
595
|
+
"dkim")
|
|
596
|
+
get_dkim_attributes "$account_name" "$identity"
|
|
597
|
+
;;
|
|
598
|
+
"enable-dkim")
|
|
599
|
+
enable_dkim "$account_name" "$identity"
|
|
600
|
+
;;
|
|
601
|
+
"monitor")
|
|
602
|
+
monitor_delivery "$account_name"
|
|
603
|
+
;;
|
|
604
|
+
"audit")
|
|
605
|
+
audit_configuration "$account_name"
|
|
606
|
+
;;
|
|
607
|
+
"debug")
|
|
608
|
+
debug_delivery "$account_name" "$identity"
|
|
609
|
+
;;
|
|
610
|
+
"help"|*)
|
|
611
|
+
show_help
|
|
612
|
+
;;
|
|
613
|
+
esac
|
|
614
|
+
return 0
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
main "$@"
|
|
618
|
+
|
|
619
|
+
return 0
|