Sync PHP backend feature parity: IP detection, database backends, API endpoints, and frontend

- IP detection: Cloudflare IPv6, ULA IPv6, proxy header chain, offline GeoIP DB
- Database: add SQLite (pure Go, no CGo) and MSSQL backends
- API: add JSON result sharing endpoint and ID obfuscation
- Frontend: add modern CSS design, design switcher, favicon
- Compatibility: ?cors parameter support, human-friendly distance rounding
- Update Go to 1.21, add modernc.org/sqlite and maxminddb deps
This commit is contained in:
Maddie Zhan
2026-04-30 13:53:52 +08:00
parent 603cbdeec5
commit cd20f44d20
39 changed files with 3005 additions and 851 deletions
+6
View File
@@ -4,10 +4,12 @@ import (
"github.com/librespeed/speedtest-go/config"
"github.com/librespeed/speedtest-go/database/bolt"
"github.com/librespeed/speedtest-go/database/memory"
"github.com/librespeed/speedtest-go/database/mssql"
"github.com/librespeed/speedtest-go/database/mysql"
"github.com/librespeed/speedtest-go/database/none"
"github.com/librespeed/speedtest-go/database/postgresql"
"github.com/librespeed/speedtest-go/database/schema"
"github.com/librespeed/speedtest-go/database/sqlite"
log "github.com/sirupsen/logrus"
)
@@ -30,6 +32,10 @@ func SetDBInfo(conf *config.Config) {
DB = mysql.Open(conf.DatabaseHostname, conf.DatabaseUsername, conf.DatabasePassword, conf.DatabaseName)
case "bolt":
DB = bolt.Open(conf.DatabaseFile)
case "sqlite":
DB = sqlite.Open(conf.DatabaseFile)
case "mssql":
DB = mssql.Open(conf.DatabaseHostname, conf.DatabaseUsername, conf.DatabasePassword, conf.DatabaseName, conf.DatabasePort)
case "memory":
DB = memory.Open("")
case "none":