provisioning tool for building opinionated architecture

64 lines
1.3 KiB

10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
  1. #!/bin/bash
  2. function usage {
  3. echo 'usage: <SERVER> [USERNAME PASSWORD]'
  4. exit 1
  5. }
  6. function connect_server {
  7. timeout 2 openssl s_client -starttls smtp -connect "$server:587" -ign_eof 2>/dev/null <<EOF
  8. quit
  9. EOF
  10. }
  11. function auth_server {
  12. base64=$(echo -ne "\0$username\0$password" | base64)
  13. openssl s_client -starttls smtp -connect "$server:587" -ign_eof 2>/dev/null <<EOF
  14. ehlo .
  15. auth plain $base64
  16. quit
  17. EOF
  18. }
  19. function check_smtp_connection {
  20. echo -n "check smtp server <$server> port 587 ... "
  21. set +e
  22. if connect_server | grep -q CONNECTED; then
  23. echo SUCCESSFUL CONNECTION
  24. else
  25. echo wrong server connection! && exit 1
  26. fi
  27. }
  28. function check_smtp_auth {
  29. echo -n "check smtp authentication <$server> port 587 username=<$username> ... "
  30. set +e
  31. output=$(auth_server)
  32. if echo "$output" | grep -q CONNECTED; then
  33. if echo "$output" | grep -q "Authentication successful"; then
  34. echo SUCCESSFUL AUTHENTICATION
  35. else
  36. echo wrong username or password! && exit 2
  37. fi
  38. else
  39. echo wrong server connection! && exit 1
  40. fi
  41. set -e
  42. }
  43. ### MAIN
  44. set -Eeuo pipefail
  45. server=${1:-}
  46. username=${2:-}
  47. password=${3:-}
  48. [[ -z "$server" ]] && usage
  49. if [[ -z "$username" ]]; then
  50. check_smtp_connection
  51. else
  52. [[ -z "$password" ]] && usage
  53. check_smtp_auth
  54. fi