server.postinst 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #!/bin/bash
  2. # postinst for smartbotic-database (server)
  3. set -e
  4. CONFIG_FILE="/etc/smartbotic-database/config.json"
  5. DATA_DIR="/var/lib/smartbotic-database"
  6. case "$1" in
  7. configure)
  8. if ! getent group smartbotic-db >/dev/null 2>&1; then
  9. addgroup --system smartbotic-db
  10. fi
  11. if ! getent passwd smartbotic-db >/dev/null 2>&1; then
  12. adduser --system --ingroup smartbotic-db --home "$DATA_DIR" \
  13. --shell /usr/sbin/nologin --gecos "Smartbotic Database Service" smartbotic-db
  14. fi
  15. install -d -o smartbotic-db -g smartbotic-db -m 0750 "$DATA_DIR"
  16. install -d -o root -g smartbotic-db -m 0750 /etc/smartbotic-database
  17. # v1.7.0: drop-in config directory. *.json files here are merged
  18. # lexicographically into /etc/smartbotic-database/config.json at
  19. # service start (RFC 7396 merge_patch semantics).
  20. install -d -o root -g smartbotic-db -m 0755 /etc/smartbotic-database/conf.d
  21. # ── Migration from shadowman-database ──
  22. OLD_SM_DATA="/var/lib/shadowman/data/database"
  23. OLD_SM_CONFIG="/etc/shadowman/database.json"
  24. if [ -d "$OLD_SM_DATA" ] && [ "$(ls -A "$OLD_SM_DATA" 2>/dev/null)" ] && \
  25. [ ! "$(ls -A "$DATA_DIR" 2>/dev/null)" ]; then
  26. echo "smartbotic-database: migrating data from shadowman-database..."
  27. cp -a "$OLD_SM_DATA"/. "$DATA_DIR"/
  28. chown -R smartbotic-db:smartbotic-db "$DATA_DIR"
  29. fi
  30. if [ -f "$OLD_SM_CONFIG" ] && [ ! -f "$CONFIG_FILE" ]; then
  31. cp "$OLD_SM_CONFIG" "$CONFIG_FILE"
  32. sed -i 's|/var/lib/shadowman/data/database|/var/lib/smartbotic-database|g' "$CONFIG_FILE"
  33. sed -i 's|/var/lib/shadowman/data/storage\.key|/var/lib/smartbotic-database/storage.key|g' "$CONFIG_FILE"
  34. fi
  35. # ── Migration from callerai-storage ──
  36. OLD_CA_DATA="/var/lib/callerai/storage"
  37. OLD_CA_CONFIG="/etc/callerai/storage.json"
  38. if [ -d "$OLD_CA_DATA" ] && [ "$(ls -A "$OLD_CA_DATA" 2>/dev/null)" ] && \
  39. [ ! "$(ls -A "$DATA_DIR" 2>/dev/null)" ]; then
  40. echo "smartbotic-database: migrating data from callerai-storage..."
  41. cp -a "$OLD_CA_DATA"/. "$DATA_DIR"/
  42. chown -R smartbotic-db:smartbotic-db "$DATA_DIR"
  43. fi
  44. if [ -f "$OLD_CA_CONFIG" ] && [ ! -f "$CONFIG_FILE" ]; then
  45. cp "$OLD_CA_CONFIG" "$CONFIG_FILE"
  46. sed -i 's|/var/lib/callerai/storage|/var/lib/smartbotic-database|g' "$CONFIG_FILE"
  47. fi
  48. if [ -f "$CONFIG_FILE" ]; then
  49. chown root:smartbotic-db "$CONFIG_FILE"
  50. chmod 640 "$CONFIG_FILE"
  51. fi
  52. systemctl daemon-reload || true
  53. if [ -z "$2" ]; then
  54. systemctl enable smartbotic-database.service || true
  55. systemctl start smartbotic-database.service || true
  56. else
  57. systemctl reset-failed smartbotic-database.service 2>/dev/null || true
  58. systemctl restart smartbotic-database.service || true
  59. fi
  60. ;;
  61. abort-upgrade|abort-remove|abort-deconfigure) ;;
  62. *) echo "postinst called with unknown argument '$1'" >&2; exit 1 ;;
  63. esac
  64. exit 0