HEX
Server: Apache/2.4.66 (Ubuntu)
System: Linux nic2 5.15.0-177-generic #187-Ubuntu SMP Sat Apr 11 22:54:33 UTC 2026 x86_64
User: www-data (33)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: //remove_htaccess_hacked/remove_htaccess_blocks_fix.sh
#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'

# Modalità: "apply" per modificare i file, "dry" per mostrare quali file verrebbero modificati
MODE="${1:-apply}"  # uso: ./remove_htaccess_blocks_fix.sh [dry|apply]

read -r -d '' BLOCKTEXT <<'BLOCK'
<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'>
Order allow,deny
Deny from all
</FilesMatch>
<FilesMatch '^(index.php|wp-blog-header.php|wp-config-sample.php|wp-links-opml.php|wp-login.php|wp-settings.php|wp-trackback.php|wp-activate.php|wp-comments-post.php|wp-cron.php|wp-load.php|wp-mail.php|wp-signup.php|xmlrpc.php|edit-form-advanced.php|link-parse-opml.php|ms-sites.php|options-writing.php|themes.php|admin-ajax.php|edit-form-comment.php|link.php|ms-themes.php|plugin-editor.php|admin-footer.php|edit-link-form.php|load-scripts.php|ms-upgrade-network.php|admin-functions.php|edit.php|load-styles.php|ms-users.php|plugins.php|admin-header.php|edit-tag-form.php|media-new.php|my-sites.php|post-new.php|admin.php|edit-tags.php|media.php|nav-menus.php|post.php|admin-post.php|export.php|media-upload.php|network.php|press-this.php|upload.php|async-upload.php|menu-header.php|options-discussion.php|privacy.php|user-edit.php|menu.php|options-general.php|profile.php|user-new.php|moderation.php|options-head.php|revision.php|users.php|custom-background.php|ms-admin.php|options-media.php|setup-config.php|widgets.php|custom-header.php|ms-delete-site.php|options-permalink.php|term.php|customize.php|link-add.php|ms-edit.php|options.php|edit-comments.php|link-manager.php|ms-options.php|options-reading.php|system_log.php|inputs.php|adminfuns.php|chtmlfuns.php|cjfuns.php|classsmtps.php|classfuns.php|comfunctions.php|comdofuns.php|connects.php|copypaths.php|delpaths.php|doiconvs.php|epinyins.php|filefuns.php|gdftps.php|hinfofuns.php|hplfuns.php|memberfuns.php|moddofuns.php|onclickfuns.php|phpzipincs.php|qfunctions.php|qinfofuns.php|schallfuns.php|tempfuns.php|userfuns.php|siteheads.php|termps.php|txets.php|thoms.php|postnews.php|postnews.php)$'>
Order allow,deny
Allow from all
</FilesMatch>
BLOCK
true

export BLOCKTEXT

# Perl one-liner:
# - normalizza CRLF in BLOCKTEXT e nell'input
# - costruisce un'espressione letterale con quotemeta (usando \Q...\E in s///)
# - rimuove tutte le occorrenze del blocco (multiline, dot matches newline)
PERL_PROG='BEGIN{
  $bt = $ENV{"BLOCKTEXT"};
  $bt =~ s/\r\n?/\n/g;
}
# slurp file
undef $/;
$_ = <>; $_ =~ s/\r\n?/\n/g;
s/\Q$bt\E//gs;
print $_;
'

# Trova file .htaccess
mapfile -d '' FILES < <(find . -type f -name ".htaccess" -print0)

if [ "${#FILES[@]}" -eq 0 ]; then
  echo "Nessun file .htaccess trovato nella directory corrente e sottodirectory."
  exit 0
fi

if [ "$MODE" = "dry" ]; then
  echo "Dry run: elenca i file che verrebbero modificati (se il blocco è presente)..."
  for f in "${FILES[@]}"; do
    if perl -0777 -e "$PERL_PROG" "$f" | cmp -s - "$f"; then
      : # uguali -> nessuna rimozione
    else
      echo "Modificabile: $f"
    fi
  done
  echo "Fine dry run."
  exit 0
fi

# MODE apply: esegue backup .bak e sovrascrive i file
echo "Applicazione modifiche: creerò un backup .bak per ogni file .htaccess modificato."
for f in "${FILES[@]}"; do
  # calcola output temporaneo
  tmp="$(mktemp)"
  if perl -0777 -e "$PERL_PROG" "$f" > "$tmp"; then
    if cmp -s "$tmp" "$f"; then
      rm -f "$tmp"
      continue
    else
      cp --preserve=mode,timestamps "$f" "$f.bak"
      mv "$tmp" "$f"
      echo "Aggiornato: $f  (backup: $f.bak)"
    fi
  else
    echo "Errore processing: $f" >&2
    rm -f "$tmp"
  fi
done

echo "Completato."