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.
Verktyg
Utfall
Vad som hände
diagnosesymptom=ssl
Varning
verdict: ok, noll fynd — på en domän där force-HTTPS bevisligen inte fungerar. Diagnosen provar inte om http:// omdirigerar.
check_dns_health
Pass
isHealthy: true. A-post pekar hit, MX, SPF, DKIM, DMARC och delegering alla gröna.
lint_dns_zone
Pass
24 poster, 0 fynd.
get_security_overview
Varning
Sä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_usage
Pass
231 MB totalt, största katalogerna listade.
get_litespeed_cache_status
Pass
supported: false, “not installed on this node”. Rätt svar — och det som avslöjade mitt eget fel om stacken.
read_logserror / access
Pass
Felloggen tom under /var/log/nginx/; access-loggen full under /var/log/httpd/. Två loggar, två servrar — nginx framför Apache.
check_email_deliverability
Pass
SPF, DKIM, DMARC, MX: pass. Reverse-DNS och blocklistor: could_not_check — hellre det än ett falskt pass.
get_resource_usage
Pass
CloudLinux LVE: CPU 2,2 % snitt, 12,5 MB RAM, noll faults. Disk 2,3 % av 10 GB.
get_site_statstop_pages
Fel
supported: true, data: [] — på en dag med hundratals träffar som syns i access-loggen. Läser troligen fel logg.
get_login_history
Pass
Tio 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_filesrecent
Pass
Hittade exakt de filer Query Monitor la dit, med rätt tidsstämpel.
Backup
Verktyg
Utfall
Vad som hände
manage_appaction=backup
Pass
backedUp: true. Bekräftad av list_app_backups: app_jine-nu_…_14-14-35.tar.gz.
list_backups (server)
Varning
0 backuper efter 27 nätter. Endpointen medger själv att den inte kan skilja “inga” från “fel”.
manage_wp_siteverify_checksums
Pass
Kärnfilerna verifierar mot WordPress.org.
Infrastruktur
Verktyg
Utfall
Vad som hände
create_subdomaintest
Pass
test.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_record
Pass
Skapad: synlig på ns1 och 1.1.1.1 inom sekunder. Raderad: API:et sa “borta ur zonen” — men ns1 serverade posten i ytterligare någon minut, medan 1.1.1.1 redan gav tomt. Två minuter senare borta på alla sex namnservrar, SOA-serial i synk. Skapande propagerar direkt, radering med kort eftersläpning. Och jag skrev “borta från ns1” på den här sidan innan jag frågat ns1 — samma fel jag kritiserar API:et för.
create_mailbox / set_mailbox_quota
Pass
test@jine.nu, kvot 100 → 200 MB, återläst.
manage_forwarders
Pass
Skapad, listad, raderad, listan tom.
create_database
Pass
s163707_jtitest. Prefixet lades på automatiskt.
manage_ftp_accounts
Pass
Skapat, listat, raderat, bara systemkontot kvar.
manage_cron_jobs
Pass
Skapat, 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_redirects
Pass
/gammal → 301 verifierad utifrån med curl. Raderad, listan tom.
create_temporary_url
Pass
Svarar 200 med rätt titel, länkar omskrivna till preview-värden. Kan inte återkallas — lever till 15 november.
manage_wordpress_stagingcreate
Varning
Kopian svarar 200, egen databas, 31 omskrivna länkar — men siteurl blev http:// på en domän med giltigt cert.
manage_monitorslist
Pass
Svarar 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.
Verktyg
Utfall
Vad som hände
run_shell_command sendmail
Pass
/usr/sbin/sendmail finns i cagen och levererar. mail gör det inte.
wp eval-file + wp_mail()
Pass
Filen skriven med manage_files, körd i skalet, svarade sent. Mejlet kom fram.
read_logskind=email
Pass
Exim-loggen rad för rad, med leveranskvitton från Dovecot. Sanningen finns här.
trace_email ×3
Fel
total: 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_queue
Varning
Hittade ett fruset meddelande — men mottagarlistan innehöll "0m", en ålder som råkat hamna som adress. Två köposter hopblandade av parsern.
manage_vacation
Pass
Skapat, 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_filterstatus
Pass
På, 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.
Verktyg
Utfall
Vad som hände
set_php_version 8.3 → 8.4 → 8.3
Pass
Bå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_settings
Pass
memory_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_settings
Pass
Varje php.ini-värde med {value, default, overridden, range}. Proveniens och tillåtna värden i samma svar.
list_php_versions
Pass
16 versioner med EOL-datum. 8.1 korrekt flaggad EOL sedan årsskiftet.
manage_php_extensionslist
Pass
139 tillägg med tillstånd. Redis och opcache på, imagick av.
WordPress-drift
Verktyg
Utfall
Vad som hände
manage_wp_plugins install / uninstall
Pass
Query Monitor hämtad, installerad, aktiverad — och avinstallerad, listan bekräftar. Listan visar även mu-plugins och dropins: hela bilden.
manage_wp_themes install / delete
Pass
Twenty Twenty-Four installerat utan aktivering, raderat, listan bekräftar.
manage_wp_userscreate
Pass
jti-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_database
Pass
Prefix anoc_, inte wp_ — precis som dokumentationen varnar för.
manage_wp_settings
Pass
Titel, 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.
Verktyg
Utfall
Vad som hände
run_shell_command (ofarligt)
Pass
whoami → s163707, aldrig root. Körtid under en sekund.
run_shell_commandrm -r
Spärr
Klassad 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_commandrm (en fil)
Pass
Hö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ån
Otestad
Med flit. Att testa den betyder att konstruera ett skadligt kommando.
När funktionen inte finns
Verktyg
Utfall
Vad som hände
purge_litespeed_cache
Pass
supported: false, purged: false. Exakt rätt.
manage_imunifysummary
Pass
supported: 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_blocked
Pass
Testadress inte blockerad; CSF, Imunify och DirectAdmin var för sig. Enumererar aldrig listan.
whitelist_ip
Otestad
Stoppades av min egen körmiljö som “security weaken” innan anropet nådde API:et.
Pengaspärren
Verktyg
Utfall
Vad som hände
delete_mailbox
Spärr
Hölls med förhandsvisning. Mailboxen kvar.
restore_wordpress
Spärr
Hölls med varningen “cannot be undone”. Sajten orörd.
manage_wordpress_stagingpush
Spärr
Hölls. Produktion orörd.
get_pending_action / list_pending_actions
Pass
Varje hold läsbar med samma förhandsvisning som människan ser, plus historiken.
cancel_pending_action ×4
Pass
Varje hold: declined, länken död, notering “withdrawn by the customer in chat”.
Registrar och domän
Verktyg
Utfall
Vad som hände
get_domain
Varning
Registrar, förfallodatum, autorenew, namnservrar, registrant — och dnssec.enabled: true med dsRecords: [[]]. En tom lista i en lista.
manage_dnsseclist
Varning
Samma [[]]. 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_lifecycle
Pass
EPP-status ok, alla flaggor falska, tidslinje skapad → förfaller.
get_renewal_quote
Pass
canRenew: 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)
Pass
Fungerar på domäner kontot inte äger. Registrerad 2006, låst för transfer, unsigned.
check_domain_availability
Pass
jim-testar-inleed.se är ledig. 89 kr.
list_snapback_domains
Pass
750 .se-domäner som släpps inom tre dagar, filtrerade på längd. Fyrteckensnamn för 199 kr.
Fakturering och servrar
Verktyg
Utfall
Vad som hände
get_balance
Pass
1 krona. Sant.
list_invoices
Pass
Sju 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 ×2
Varning
Server 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_templates
Pass
13 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.
Kvar
Varför
Subdomän test.jine.nu
Radering är confirmation-tier — kräver ett klick.
Mailbox test@jine.nu
Samma. Innehåller de två testmejlen.
Databas s163707_jtitest
Samma.
Staging /staging + databas s163707_mihg1
Samma — 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-editor
Det finns inget verktyg som raderar en användare.
Preview-URL
Kan inte återkallas. Går ut 15 november.
mu-plugin jti-favicon.php
Med flit — det är sajtens favicon.
Nästa
Test
Status
Varför
list_backups i morgon
Planerad
Är det 0 en gång till har frågan om serverbackuperna ett svar.
Godkänn en spärr på riktigt
Planerad
Hittills 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ädning
Planerad
Mailbox, databas, subdomän, staging. Fyra klick. Sista testet av spärren, från andra hållet.
Läs det frusna meddelandet
Planerad
Så att “troligen backscatter” blir “backscatter”.
Cron-körning
Planerad
Jobbet raderades innan det hann köra. Skapa → vänta en natt → läs loggen → radera.
VPS-strömstyrning
Planerad
Labbservern är avstängd. start_vps → get_vps → stop_vps vore ett rent test — men inte utan att veta vad som kör på den.