Claude Code - vBulletin morto del 2016 riportato in vita

Volevo solo condividere un’esperienza per gli amministratori meno esperti e con meno conoscenze che stanno lottando con le cose. È iniziato con me che gli chiedevo di alcuni problemi persistenti. Mi stava dando comandi e mi guidava attraverso le cose. Ma la vera svolta è stata quando ho collegato Claude code direttamente tramite SFTP e SSH…

image

Una volta connesso, ha fatto cose incredibili! Il nostro Discourse è usato solo da un gruppo di amici, quindi non abbiamo molti budget per fare cose se qualcosa va storto. Recentemente Claude Code ha trovato tutti i tipi di piccole cose sbagliate nella mia configurazione.

  • Ha corretto la mia configurazione S3 su Spaces. Ero vicino, ma aveva ancora alcuni problemi con il caricamento corretto degli asset JS al momento della ricostruzione. Saga completa qui: Digital Ocean Spaces (S3) "unable to sign request without credentials set" - #20 by DavidO

    • L’ha messo a punto perfettamente
  • Ha risolto il caricamento di Discourse X.com JS invece di utilizzare una chiave API

  • Mi ha guidato attraverso la configurazione della CDN, le impostazioni DNS di Cloudflare e tutto il resto

    • Ha ricotto tutto
  • Ha trovato 4.000 immagini Tapatalk orfane dalla nostra vecchia migrazione phpBB e le ha collegate

  • Ha convertito un sacco di vecchi BBCode in HTML in modo che le immagini funzionassero

  • Ha scoperto che il mio Volume Digital Ocean era completamente vuoto e mi ha dato la sicurezza di premere DELETE e risparmiare $/mese. Avevo spostato tutto su S3, o almeno ne ero abbastanza sicuro, ma ero ancora troppo nervoso per eliminarlo. Imbarazzante in realtà, ma non volevo perdere nessuna foto.

Ma ciò che è stato ancora più divertente è che mi ha dato la fiducia per intraprendere un altro progetto, la resurrezione della nostra vecchia bacheca vBulletin che era stata attiva dal 2002 al 2016 per un club universitario. Era caduta in rovina e alla fine era stata ritirata dopo aver dato l’HIV a qualche telefono. È stato in grado di prendere un vecchio backup, spacchettarlo e ricostruirlo.

Ha fatto un lavoro impressionante:

  • Importati 12.394 argomenti e 282.096 post
    • Il database era così corrotto che abbiamo esportato pezzi di esso come tabella separata, o pezzi di tabelle, come CSV poiché non eseguiva il file SQL completo. Più di 25 file separati. L’ha ricomposto e poi ha creato il file di importazione di Discourse.
  • Migrati e ricollegati 9.504 immagini dal backup
    • Poi è entrato e ha recuperato alcune immagini mancanti da WayBackMachine e altre importazioni. Gli ho dato un backup di una phpGallery2 che usavamo allora e ha trovato altre 288 immagini e le ha collegate in 735 altri post.
    • Gli ho semplicemente lanciato directory e file di backup zip e lui ha esaminato e trovato tutti i tipi di cose e le ha collegate direttamente
    • Purtroppo non ha potuto fare molto per le oltre 7.000 che erano su Photobucket
    • Ha importato altre 780 immagini collegate (hotlinked)
  • Recuperati 143 di 159 nomi utente che erano stati precedentemente eliminati e venivano visualizzati solo come “system”
    • Ha anche trovato i loro avatar
    • Ha persino trovato il mio vecchio avatar, una foto del miglior bravo ragazzo di sempre!
  • Censurati oltre 5.000 parole “collegiali” affettuosamente conosciute come: IL RAPPORTO SLUR
  • Ha creato nuovi loghi basati su alcuni parziali che aveva dai file
  • Ha recuperato tutte le classiche emoji vbulletin e le ha collegate a tutti i post
    • Ha riportato che :flipoff2: era l’emoji più usata (19.191 istanze), seguita da :rolleyes : e :beer : (inseguitori distanti)
  • Ha permesso alcune ricerche e sostituzioni su nomi, numeri di telefono o email che erano pubblici.
  • Mi ha guidato attraverso il passaggio all’API Resend
  • Mi ha guidato attraverso la configurazione SSL
  • Mi ha guidato attraverso la configurazione CORS
  • Poi, prima che ci addentrassimo troppo, ha eseguito la scansione ClamAV su tutti i file

È stato in background in esecuzione per quasi una settimana, qua e là nel corso di più sessioni. È stata una finestra divertente sul passato mentre troviamo foto e dettagli su viaggi e progetti.

Sono anche molto impressionato che ci siano umani là fuori che sanno cosa sta facendo questo…

Permetti a Claude di eseguire cat << ‘RUBY’ > /tmp/tapatalk_analysis.rb
posts_with_tapatalk = Post.where(“raw LIKE ‘%uploads/tapatalk/%’”).where(deleted_at: nil)
dual_ref_count = 0
tapatalk_only_count = 0
tapatalk_only_files =
posts_with_both = 0
posts_tapatalk_only = 0
posts_with_tapatalk.find_each do |post|
raw = post.raw
tapatalk_urls = raw.scan(/uploads/tapatalk/[^\s"'<>]]+/)
has_upload_ref = raw.include?(“upload://”)
post_has_dual = false
post_has_only = false
tapatalk_urls.each do |url|
idx = raw.index(url)
next unless idx
start_pos = [idx - 200, 0].max
context = raw[start_pos..idx + 10]
if context && context.include?(“upload://”)
dual_ref_count += 1
post_has_dual = true
else
tapatalk_only_count += 1
post_has_only = true
tapatalk_only_files << url unless tapatalk_only_files.include?(url)
end
end
posts_with_both += 1 if post_has_dual
posts_tapatalk_only += 1 if post_has_only
end
puts “=== TAPATALK IMAGE ANALYSIS ===”
puts “Dual reference (upload:// + tapatalk): #{dual_ref_count} refs”
puts “Tapatalk only (no upload:// nearby): #{tapatalk_only_count} refs”
puts “Unique tapatalk-only files: #{tapatalk_only_files.length}”
puts “Posts with at least one dual ref: #{posts_with_both}”
puts “Posts with at least one tapatalk-only ref: #{posts_tapatalk_only}”
puts “—SAMPLE TAPATALK-ONLY FILES—”
tapatalk_only_files.first(15).each { |f| puts f }
RUBY
scp /tmp/tapatalk_analysis.rb root@23.21.11.54:/tmp/ 2>/dev/null && echo “Uploaded”?

Estremamente impressionante.

Comunque, volevo solo condividere nel caso in cui l’idea potesse aiutare a stimolare qualcosa di divertente per chiunque altro. Ottieni un buon backup e lascialo andare!

Buon Discourse’n. :victory_hand:

8 Mi Piace