diff --git a/src/freedombone-app-pleroma b/src/freedombone-app-pleroma index 922ee423126121c00c995cd0298a18e888bb2f1f..762c511f663ec2452d463fcc2540ba1f143b89a1 100755 --- a/src/freedombone-app-pleroma +++ b/src/freedombone-app-pleroma @@ -1299,6 +1299,8 @@ function pleroma_create_signing_salt { } function upgrade_pleroma { + update_user_agent + pleroma_installing= read_config_param PLEROMA_DOMAIN_NAME @@ -1816,6 +1818,10 @@ function install_pleroma { echo ' gzip_http_version 1.1;'; echo ' gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript application/activity+json application/atom+xml;'; echo ''; + echo " if (\$http_user_agent ~* (.*archivebot.*|.*archiveteam.*)) {"; + echo ' return 403;'; + echo ' }'; + echo ''; echo ' location / {'; echo ' client_max_body_size 15m;'; echo ' client_body_buffer_size 15m;'; @@ -1872,6 +1878,10 @@ function install_pleroma { echo ' gzip_http_version 1.1;'; echo ' gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript application/activity+json application/atom+xml;'; echo ''; + echo " if (\$http_user_agent ~* (.*archivebot.*|.*archiveteam.*)) {"; + echo ' return 403;'; + echo ' }'; + echo ''; echo ' location / {'; echo ' client_max_body_size 15m;'; echo ' client_body_buffer_size 15m;'; diff --git a/src/freedombone-utils-web b/src/freedombone-utils-web index 07425af33a06887a1503a80d6f68e8371c4abbc0..17bf71c84be11f539f6e5d9fa5d8aff0fe8c8d06 100755 --- a/src/freedombone-utils-web +++ b/src/freedombone-utils-web @@ -1376,4 +1376,23 @@ function jquery_download { fi } +function update_user_agent { + domain="$1" + if [ ! -f "/etc/nginx/sites-available/$domain" ]; then + return + fi + + if ! grep -q 'http_user_agent' "/etc/nginx/sites-available/$domain"; then + + sed -i '/server_name/a }' "/etc/nginx/sites-available/$domain" + sed -i '/server_name/a return 403;' "/etc/nginx/sites-available/$domain" + sed -i "/server_name/a if (\$http_user_agent ~\* (\.\*archivebot\.\*|\.\*archiveteam\.\*)) {" "/etc/nginx/sites-available/$domain" + systemctl restart nginx + return + fi + + sed -i "s|if (\$http_user_agent.*|if (\$http_user_agent ~\* (\.\*archivebot\.\*|\.\*archiveteam\.\*)) {|g" "/etc/nginx/sites-available/$domain" + systemctl restart nginx +} + # NOTE: deliberately no exit 0