show_banned.sh 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #!/bin/bash
  2. set -o errexit
  3. set -o nounset
  4. set -o pipefail
  5. show_usage() {
  6. echo "Usage: $0 <ccd_dir>"
  7. echo "Example: $0 /etc/openvpn/server/server/ccd"
  8. exit 1
  9. }
  10. # Проверка прав
  11. check_permissions() {
  12. if [[ $EUID -ne 0 ]]; then
  13. log "Error: This script must be run as root" >&2
  14. exit 1
  15. fi
  16. }
  17. # Проверка что CCD файл находится в правильном пути
  18. check_ccd_path() {
  19. local ccd_file=$1
  20. local expected_path="/etc/openvpn/server"
  21. # Проверяем что путь начинается с /etc/openvpn/server/
  22. if [[ ! "$ccd_file" =~ ^$expected_path/ ]]; then
  23. log "Error: CCD must be located under $expected_path/"
  24. log "Provided path: $ccd_file"
  25. exit 1
  26. fi
  27. # Дополнительная проверка: каталог должен существовать
  28. if [[ ! -d "$ccd_file" ]]; then
  29. log "Error: file does not exist: $ccd_file"
  30. exit 1
  31. fi
  32. }
  33. main() {
  34. # Проверка прав
  35. check_permissions
  36. # Обработка аргументов
  37. [[ $# -lt 1 ]] && show_usage
  38. local ccd_dir=$1
  39. # Проверка пути CCD файла
  40. check_ccd_path "$ccd_dir"
  41. #get banned
  42. egrep "^disable$" -R "${ccd_dir}"/* | sed 's#.*/##; s/:.*//'
  43. }
  44. main "$@"