Initial commit

This commit is contained in:
Blake Ridgway
2026-03-21 18:00:16 -05:00
commit 952257f1f7
2 changed files with 95 additions and 0 deletions

50
todo.md Normal file
View File

@@ -0,0 +1,50 @@
# arcline-migrate — Shared Hosting Migration Tool
Connects to a cPanel/Plesk server via SSH, exports files + DB dump + DNS zone
into a structured tarball ready to import on Arcline. Lowers migration friction.
## Stack
- Language: Go
- Distribution: single static binary
- Requires: SSH access to source server, mysqldump on remote
## Supported Sources
- cPanel (primary target)
- Plesk (stretch goal)
- Generic LAMP/LEMP via SSH (fallback mode)
## Export bundle structure
```
arcline-export-example.com-20260303/
├── files/ # public_html contents (rsync over SSH)
├── databases/
│ └── db_name.sql # mysqldump output
├── dns/
│ └── example.com.zone # BIND zone file (from cPanel API or manual)
├── config/
│ └── php.ini # detected PHP version + key settings
└── manifest.json # metadata: domain, PHP version, MySQL version, export date
```
## CLI interface
```
arcline-migrate export --host example.com --user myuser --domain example.com
arcline-migrate export --host example.com --user myuser --domain example.com --out ./export
arcline-migrate verify ./arcline-export-example.com-20260303/ # validate bundle
arcline-migrate import --bundle ./arcline-export-*.tar.gz # future: direct import
```
## Tasks
- [ ] Project scaffold
- [ ] SSH connection handler (password + key auth)
- [ ] File export: rsync-style copy over SSH (public_html)
- [ ] Database export: run mysqldump remotely, stream result
- [ ] cPanel API integration: fetch DB list, DNS zone, PHP version
- [ ] Generic mode: prompt user for DB name/user/pass if no cPanel API
- [ ] DNS zone export (cPanel API → BIND format)
- [ ] manifest.json writer
- [ ] Bundle: tar.gz output
- [ ] verify subcommand: check bundle integrity + manifest
- [ ] Progress display (files copied, DB size, elapsed)
- [ ] README with step-by-step migration walkthrough
- [ ] Cross-compile Makefile