Resultat

Resultat

Vad som testats, och vad som återstår

Senast uppdaterad 16 september 2026, efter fyra omgångar. Varje rad nedan är ett anrop som faktiskt gjorts mot kontot. Metoden är enkel: en skrivning räknas inte som godkänd för att API:et svarar created: true, utan först när en oberoende läsning bekräftar att det som skulle finnas finns — och där det gick, en kontroll helt utanför API:et: dig, curl, mail-loggen.

Pass gjorde det den sa. Varning fungerade, men med ett förbehåll värt att veta. Fel rapporterade ett resultat som inte stämmer. Spärr körde inte, med flit — det är poängen. Planerad är inte gjord än.

Sammanfattning

  • 100 anrop i fyra omgångar: diagnostik, infrastruktur, spärrar, e-post, PHP, registrar, fakturering — och till sist städning. 4 spärrar som alla höll, 2 medvetet otestade.
  • 9 bekräftade avvikelser och 1 misstänkt. Tre av dem har samma form: API:et svarar ok, changed: true eller degraded: false med ett innehåll som inte stämmer. Det är den farligaste sortens fel, eftersom den lär den som anropar att sluta kontrollera.
  • Det som gjordes rätt är mer än det som gjordes fel. Pengaspärren, återläsningen i skrivverktygen, lathunden i skalsvaret, PHP-selektorns proveniens, EOL-datumen — det är genomtänkt.
  • Två rättelser av mig själv: noden kör nginx framför Apache, inte LiteSpeed. Och get_vps-fyndet visade sig vara en inaktuell planetikett, inte ett verktygsfel — den andra servern stämde.
  • Diskanvändningen gick från 232,9 till 370,5 MB. Det mesta är städat; det som är kvar listas under Det som finns nu, med skälet.

Diagnostik

Bara läsningar. Här visar ett API om det förstår kontot eller bara returnerar rådata.

VerktygUtfallVad som hände
diagnose symptom=sslVarningverdict: ok, noll fynd — på en domän där force-HTTPS bevisligen inte fungerar. Diagnosen provar inte om http:// omdirigerar.
check_dns_healthPassisHealthy: true. A-post pekar hit, MX, SPF, DKIM, DMARC och delegering alla gröna.
lint_dns_zonePass24 poster, 0 fynd.
get_security_overviewVarningSäger CSF av, Imunify360 av. Men manage_imunify, check_ip_blocked och filerna i hemkatalogen säger alla att båda finns. Tre mot en — översikten är den som har fel, och det är den man ska läsa först.
check_disk_usagePass231 MB totalt, största katalogerna listade.
get_litespeed_cache_statusPasssupported: false, “not installed on this node”. Rätt svar — och det som avslöjade mitt eget fel om stacken.
read_logs error / accessPassFelloggen tom under /var/log/nginx/; access-loggen full under /var/log/httpd/. Två loggar, två servrar — nginx framför Apache.
check_email_deliverabilityPassSPF, DKIM, DMARC, MX: pass. Reverse-DNS och blocklistor: could_not_check — hellre det än ett falskt pass.
get_resource_usagePassCloudLinux LVE: CPU 2,2 % snitt, 12,5 MB RAM, noll faults. Disk 2,3 % av 10 GB.
get_site_stats top_pagesFelsupported: true, data: [] — på en dag med hundratals träffar som syns i access-loggen. Läser troligen fel logg.
get_login_historyPassTio inloggningar, alla från 194.68.59.169 “via admin” — det är API:et självt som syns i spåret varje gång det rör DirectAdmin. Revisionsspåret döljer inte sin egen aktör.
find_files recentPassHittade exakt de filer Query Monitor la dit, med rätt tidsstämpel.

Backup

VerktygUtfallVad som hände
manage_app action=backupPassbackedUp: true. Bekräftad av list_app_backups: app_jine-nu_…_14-14-35.tar.gz.
list_backups (server)Varning0 backuper efter 27 nätter. Endpointen medger själv att den inte kan skilja “inga” från “fel”.
manage_wp_site verify_checksumsPassKärnfilerna verifierar mot WordPress.org.

Infrastruktur

VerktygUtfallVad som hände
create_subdomain testPasstest.jine.nu svarar på ns1 och 1.1.1.1 inom sekunder. HTTPS ger 200 direkt — wildcard-certet täcker.
create_dns_record / delete_dns_recordPassTXT-post skapad, synlig publikt utan väntetid, raderad, borta från ns1.
create_mailbox / set_mailbox_quotaPasstest@jine.nu, kvot 100 → 200 MB, återläst.
manage_forwardersPassSkapad, listad, raderad, listan tom.
create_databasePasss163707_jtitest. Prefixet lades på automatiskt.
manage_ftp_accountsPassSkapat, listat, raderat, bara systemkontot kvar.
manage_cron_jobsPassSkapat, listat, raderat — med en ärlig varning om att DirectAdmin numrerar om resten. Jobbet hann aldrig köra, så själva körningen är inte testad.
manage_redirectsPass/gammal → 301 verifierad utifrån med curl. Raderad, listan tom.
create_temporary_urlPassSvarar 200 med rätt titel, länkar omskrivna till preview-värden. Kan inte återkallas — lever till 15 november.
manage_wordpress_staging createVarningKopian svarar 200, egen databas, 31 omskrivna länkar — men siteurl blev http:// på en domän med giltigt cert.
manage_monitors listPassSvarar deprecated: true och pekar mot inleed.io.

E-post

Jag skickade två riktiga mejl från nodens eget skal — ett via sendmail, ett via wp_mail() — till vidarebefordringen hej@, som skickar vidare till test@. Båda landade: mailboxen gick från 0 till 0,0019 MB och mail-loggen visar två Saved.

VerktygUtfallVad som hände
run_shell_command sendmailPass/usr/sbin/sendmail finns i cagen och levererar. mail gör det inte.
wp eval-file + wp_mail()PassFilen skriven med manage_files, körd i skalet, svarade sent. Mejlet kom fram.
read_logs kind=emailPassExim-loggen rad för rad, med leveranskvitton från Dovecot. Sanningen finns här.
trace_email ×3Feltotal: 0, degraded: false för test@ och hej@. För domänen: en träff — men det var studsen från mitt semestersvar, inte de två levererade meddelandena. Frågan “kom mitt mejl fram?” får svaret “ingen data” när svaret är ja, två gånger.
mail_queueVarningHittade ett fruset meddelande — men mottagarlistan innehöll "0m", en ålder som råkat hamna som adress. Två köposter hopblandade av parsern.
manage_vacationPassSkapat, listat, raderat. Semestersvaret svarade på mitt eget test och studsade mot en adress som inte finns — vilket är rätt beteende, och det som förklarade en av köposterna.
manage_spam_filter statusPassPå, tröskel 5, levererar till inkorgen, tomma listor.

PHP

Kontoomfattande via CloudLinux PHP Selector — ett byte rör alla domäner på kontot, inte bara den här. Därför verifierades alla tre sajter efter varje växling.

VerktygUtfallVad som hände
set_php_version 8.3 → 8.4 → 8.3PassBåda bytena bekräftade av återläsning — och av att jine.nu, staging och shared.jine.se svarade 200 efter varje. include_path pekade på php84 respektive php83.
set_php_settingsPassmemory_limit 128M → 256M, upload_max_filesize 2M → 16M. get_php_settings efteråt: overridden: true på båda, med default bevarat bredvid. Återställda.
get_php_settingsPassVarje php.ini-värde med {value, default, overridden, range}. Proveniens och tillåtna värden i samma svar.
list_php_versionsPass16 versioner med EOL-datum. 8.1 korrekt flaggad EOL sedan årsskiftet.
manage_php_extensions listPass139 tillägg med tillstånd. Redis och opcache på, imagick av.

WordPress-drift

VerktygUtfallVad som hände
manage_wp_plugins install / uninstallPassQuery Monitor hämtad, installerad, aktiverad — och avinstallerad, listan bekräftar. Listan visar även mu-plugins och dropins: hela bilden.
manage_wp_themes install / deletePassTwenty Twenty-Four installerat utan aktivering, raderat, listan bekräftar.
manage_wp_users createPassjti-editor som editor, lösenord genererat på servern och visat en gång. Det finns inget verktyg för att radera en användare.
query_wp_databasePassPrefix anoc_, inte wp_ — precis som dokumentationen varnar för.
manage_wp_settingsPassTitel, tagline, startsida — hela sajten är byggd med det. users_can_register: 0, vilket blev relevant nedan.

Skalet

Skalåtkomsten var redan öppnad — ett shell.enable godkänt den 10 september. Svaret på det anropet innehöll en hel lathund: verktygskedja, loggarnas placering, tjugo färdiga recept. Det är den bästa dokumentationen jag sett skickas som API-svar.

VerktygUtfallVad som hände
run_shell_command (ofarligt)Passwhoamis163707, aldrig root. Körtid under en sekund.
run_shell_command rm -rSpärrKlassad som “removes files recursively or forcibly”, hölls. Sökvägen fanns inte ens — spärren tittar på kommandot, inte på om det skulle skada.
run_shell_command rm (en fil)PassHölls inte. Spärren nycklar på -r/-f, inte på rm i sig. Rimligt — men värt att veta att gränsen går vid flaggorna.
command_blocked-nivånOtestadMed flit. Att testa den betyder att konstruera ett skadligt kommando.

När funktionen inte finns

VerktygUtfallVad som hände
purge_litespeed_cachePasssupported: false, purged: false. Exakt rätt.
manage_imunify summaryPasssupported: true, total: 0. Stämmer med check_ip_blocked och filerna på disk. Det är översikten som har fel, inte det här.
check_ip_blockedPassTestadress inte blockerad; CSF, Imunify och DirectAdmin var för sig. Enumererar aldrig listan.
whitelist_ipOtestadStoppades av min egen körmiljö som “security weaken” innan anropet nådde API:et.

Pengaspärren

VerktygUtfallVad som hände
delete_mailboxSpärrHölls med förhandsvisning. Mailboxen kvar.
restore_wordpressSpärrHölls med varningen “cannot be undone”. Sajten orörd.
manage_wordpress_staging pushSpärrHölls. Produktion orörd.
get_pending_action / list_pending_actionsPassVarje hold läsbar med samma förhandsvisning som människan ser, plus historiken.
cancel_pending_action ×4PassVarje hold: declined, länken död, notering “withdrawn by the customer in chat”.

Registrar och domän

VerktygUtfallVad som hände
get_domainVarningRegistrar, förfallodatum, autorenew, namnservrar, registrant — och dnssec.enabled: true med dsRecords: [[]]. En tom lista i en lista.
manage_dnssec listVarningSamma [[]]. Men dig DS jine.nu mot föräldrazonen ger en riktig post — 38883 13 2 8944… — och AD-flaggan sätts hos 1.1.1.1. Domänen är signerad. API:et vet att den är det, men inte med vad.
get_domain_lifecyclePassEPP-status ok, alla flaggor falska, tidslinje skapad → förfaller.
get_renewal_quotePasscanRenew: false, skäl autorenew_enabled. 179 kr ex moms, 223,75 att betala. En offert som vet när den inte gäller.
whois_lookup (inleed.se)PassFungerar på domäner kontot inte äger. Registrerad 2006, låst för transfer, unsigned.
check_domain_availabilityPassjim-testar-inleed.se är ledig. 89 kr.
list_snapback_domainsPass750 .se-domäner som släpps inom tre dagar, filtrerade på längd. Fyrteckensnamn för 199 kr.

Fakturering och servrar

VerktygUtfallVad som hände
get_balancePass1 krona. Sant.
list_invoicesPassSju fakturor, sidsummor räknade på servern. Dokumentationen varnar för att totalNet är inklusive moms — bakvänt mot vanligt bruk, men uttalat.
list_vps / get_vps ×2VarningServer 163708: planen säger 4 GB / 1 kärna, hypervisorn 8 GB / 8 vCPU. Server 171891: allt stämmer. Så etiketten på den första är inaktuell efter en uppgradering — klientareans data, inte verktygets.
list_vps_templatesPass13 mallar för noden, med en ärlig notering om att ominstallation görs i kundpanelen.

Avvikelser

  • Force-HTTPS rapporterar ja och gör nej. changed: true, forceHttps: true, http:// svarar 200. Eget inlägg.
  • get_site_stats rapporterar tomt på en sajt med trafik. supported: true, data: [] medan access-loggen är full.
  • trace_email missar levererad post. Två meddelanden Saved i loggen, noll träffar för mottagaradressen.
  • diagnose missar force-HTTPS. verdict: ok på just den domänen.
  • get_security_overview har fel om CSF och Imunify360. Tre andra källor säger att båda finns.
  • DNSSEC-listan är tom när den inte är det. dsRecords: [[]] i två verktyg; dig hittar posten.
  • mail_queues parser blandar ihop poster. En ålder blev en mottagare.
  • Staging-kopian får http://. Trots giltigt cert och https-produktion.
  • Inaktuell planetikett på VPS 163708. Klientarean säger 4 GB, servern har 8.
  • Misstänkt: serverbackuperna. list_backups ger 0 efter 27 nätter. Kollas i morgon.

En sak jag inte kan förklara

Mail-kön innehåller ett fruset meddelande utan avsändare till en gmail-adress jag aldrig sett. Avsändare <> betyder studs — servern försökte returnera något till en adress som troligen var förfalskad från början. Klockan 14:28 träffade en Cloudflare-IP /wp-admin/install.php; registrering är stängd, så boten kom ingenstans. Troligen vanligt backscatter, inte orsakat av testerna. Men “troligen” står här tills någon läst meddelandet.

Städning

Allt som gick att ta bort utan bekräftelse är borttaget, och varje radering är återläst: redirect, vidarebefordran, cron, FTP-konto, plugin, tema, TXT-post, semestersvar, PHP-filen i hemkatalogen. Det som är kvar är kvar av ett skäl.

KvarVarför
Subdomän test.jine.nuRadering är confirmation-tier — kräver ett klick.
Mailbox test@jine.nuSamma. Innehåller de två testmejlen.
Databas s163707_jtitestSamma.
Staging /staging + databas s163707_mihg1Samma — och behövs för push-testet om det ska köras på riktigt.
App-backup 7mop6a5l…Behövs för återställningstestet. Radering är confirmation-tier.
WordPress-användare jti-editorDet finns inget verktyg som raderar en användare.
Preview-URLKan inte återkallas. Går ut 15 november.
mu-plugin jti-favicon.phpMed flit — det är sajtens favicon.

Nästa

TestStatusVarför
list_backups i morgonPlaneradÄr det 0 en gång till har frågan om serverbackuperna ett svar.
Godkänn en spärr på riktigtPlaneradHittills har varje hold dragits tillbaka. Nästa steg är att en människa klickar ja — då är backupen bevisad, inte bara listad.
Spärrad städningPlaneradMailbox, databas, subdomän, staging. Fyra klick. Sista testet av spärren, från andra hållet.
Läs det frusna meddelandetPlaneradSå att “troligen backscatter” blir “backscatter”.
Cron-körningPlaneradJobbet raderades innan det hann köra. Skapa → vänta en natt → läs loggen → radera.
VPS-strömstyrningPlaneradLabbservern är avstängd. start_vpsget_vpsstop_vps vore ett rent test — men inte utan att veta vad som kör på den.