You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

104 lines
3.6 KiB

  1. #!/bin/bash
  2. set -exuo pipefail
  3. # https://stackoverflow.com/a/2173421
  4. trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM EXIT
  5. if [ -z ${COUCHDB_URL+x} ]; then
  6. echo "Skipping couchdb init"
  7. else
  8. timeout 300 bash -c "while [[ \"\$(curl -s -o /dev/null -w ''%{http_code}'' ${COUCHDB_URL})\" != \"200\" ]]; do sleep 5; done" || false
  9. if [ -z ${COUCHDB_USER+x} ]; then
  10. export COUCHDB_CURL_ARGS=""
  11. else
  12. export COUCHDB_CURL_ARGS="-u \"$COUCHDB_USER:$COUCHDB_PASSWORD\""
  13. fi
  14. pushd "db/design_docs"
  15. curl -s $COUCHDB_CURL_ARGS -X PUT "$COUCHDB_URL/_users"
  16. curl -s $COUCHDB_CURL_ARGS -X PUT "$COUCHDB_URL/archivebot"
  17. curl -s $COUCHDB_CURL_ARGS -X PUT "$COUCHDB_URL/archivebot_logs"
  18. grep -v _rev archive_urls.json > /tmp/archive_urls.json
  19. grep -v _rev ignore_patterns.json > /tmp/ignore_patterns.json
  20. grep -v _rev jobs.json > /tmp/jobs.json
  21. grep -v _rev user_agents.json > /tmp/user_agents.json
  22. curl -s $COUCHDB_CURL_ARGS -X PUT "$COUCHDB_URL/archivebot/_design/archive_urls" -d @/tmp/archive_urls.json
  23. curl -s $COUCHDB_CURL_ARGS -X PUT "$COUCHDB_URL/archivebot/_design/ignore_patterns" -d @/tmp/ignore_patterns.json
  24. curl -s $COUCHDB_CURL_ARGS -X PUT "$COUCHDB_URL/archivebot/_design/jobs" -d @/tmp/jobs.json
  25. curl -s $COUCHDB_CURL_ARGS -X PUT "$COUCHDB_URL/archivebot/_design/user_agents" -d @/tmp/user_agents.json
  26. popd
  27. fi
  28. export SHARED_WARCS_DIR="${SHARED_WARCS_DIR:-/data/}"
  29. mkdir -pv "$SHARED_WARCS_DIR/upload-queue/"
  30. case "$1" in
  31. "bot")
  32. cd bot
  33. if [ -z ${COUCHDB_USER+x} ]; then
  34. export COUCHDB_ARGS=""
  35. else
  36. export COUCHDB_ARGS="--db-credentials \"$COUCHDB_USER:$COUCHDB_PASSWORD\""
  37. fi
  38. bundle exec ruby bot.rb \
  39. -s "$IRC_URL" \
  40. -r "$REDIS_URL" \
  41. -c "$IRC_CHANNEL" \
  42. -n "$IRC_NICK" \
  43. --db "$COUCHDB_URL/archivebot" $COUCHDB_ARGS
  44. ;;
  45. "cogs")
  46. if [ -z ${COUCHDB_USER+x} ]; then
  47. export COUCHDB_ARGS=""
  48. else
  49. export COUCHDB_ARGS="--db-credentials \"$COUCHDB_USER:$COUCHDB_PASSWORD\" --log-db-credentials \"$COUCHDB_USER:$COUCHDB_PASSWORD\""
  50. fi
  51. bundle exec ruby cogs/start.rb \
  52. -r "$REDIS_URL" \
  53. --db "$COUCHDB_URL/archivebot" \
  54. --log-db "$COUCHDB_URL/archivebot_logs" $COUCHDB_ARGS
  55. ;;
  56. "firehose")
  57. export UPDATES_CHANNEL=updates
  58. export FIREHOSE_SOCKET_URL=tcp://0.0.0.0:12345
  59. plumbing/updates-listener | plumbing/log-firehose
  60. ;;
  61. "dashboard")
  62. bundle exec ruby dashboard/app.rb -u http://0.0.0.0:8080 -r "$REDIS_URL"
  63. ;;
  64. "websocket")
  65. plumbing/firehose-client | python3 dashboard/websocket.py
  66. ;;
  67. "pipeline")
  68. cd pipeline
  69. export PIPELINE_NAME="${PIPELINE_NAME:-${PIPELINE_PREFIX}-$(hostname -s)}"
  70. export PIPELINE_NAME="${PIPELINE_NAME:0:30}"
  71. export NO_SCREEN=1
  72. export STAGING_WARCS_DIR="$(mktemp -p "$SHARED_WARCS_DIR" -d staging-XXXXXXXXXX)"
  73. export FINISHED_WARCS_DIR="/local-staging/"
  74. sudo /usr/sbin/tcp-closer -4 --dport 443 --idle_time 21601000 --last_recv_limit 43200000 --interval 300 &
  75. sudo /usr/sbin/tcp-closer -6 --dport 443 --idle_time 21601000 --last_recv_limit 43200000 --interval 300 &
  76. /stager.sh "$FINISHED_WARCS_DIR" "$STAGING_WARCS_DIR" "$SHARED_WARCS_DIR/upload-queue/" &
  77. run-pipeline3 pipeline.py --disable-web-server \
  78. --concurrent $PIPELINE_CONCURRENT $PIPELINE_NAME
  79. /wait-empty.sh "$FINISHED_WARCS_DIR"
  80. /wait-empty.sh "$STAGING_WARCS_DIR"
  81. rmdir "$STAGING_WARCS_DIR"
  82. ;;
  83. "uploader")
  84. python -u ./uploader/uploader.py "$SHARED_WARCS_DIR/upload-queue/"
  85. ;;
  86. "analyzer")
  87. export UPDATES_CHANNEL=updates
  88. cd plumbing
  89. ./analyzer
  90. ;;
  91. "trimmer")
  92. export UPDATES_CHANNEL=updates
  93. cd plumbing
  94. ./trimmer > /dev/null
  95. ;;
  96. esac