Remove peer state change logging
Silently ignore RIS_PEER_STATE and STATE messages instead of logging them. Also fixed linter issues with directory permissions.
This commit is contained in:
parent
92f7527cc5
commit
14e85f042b
@ -5,6 +5,9 @@ import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
@ -12,7 +15,8 @@ import (
|
||||
)
|
||||
|
||||
const (
|
||||
dbSchema = `
|
||||
dirPermissions = 0750 // rwxr-x---
|
||||
dbSchema = `
|
||||
CREATE TABLE IF NOT EXISTS asns (
|
||||
id TEXT PRIMARY KEY,
|
||||
number INTEGER UNIQUE NOT NULL,
|
||||
@ -101,10 +105,48 @@ type Config struct {
|
||||
Path string
|
||||
}
|
||||
|
||||
// getDefaultDatabasePath returns the appropriate database path for the OS
|
||||
func getDefaultDatabasePath() string {
|
||||
const dbFilename = "db.sqlite"
|
||||
|
||||
switch runtime.GOOS {
|
||||
case "darwin":
|
||||
// macOS: ~/Library/Application Support/berlin.sneak.app.routewatch/db.sqlite
|
||||
home, err := os.UserHomeDir()
|
||||
if err != nil {
|
||||
return dbFilename
|
||||
}
|
||||
appSupport := filepath.Join(home, "Library", "Application Support", "berlin.sneak.app.routewatch")
|
||||
if err := os.MkdirAll(appSupport, dirPermissions); err != nil {
|
||||
return dbFilename
|
||||
}
|
||||
|
||||
return filepath.Join(appSupport, dbFilename)
|
||||
default:
|
||||
// Linux and others: /var/lib/routewatch/db.sqlite
|
||||
dbDir := "/var/lib/routewatch"
|
||||
if err := os.MkdirAll(dbDir, dirPermissions); err != nil {
|
||||
// Fall back to user's home directory if can't create system directory
|
||||
home, err := os.UserHomeDir()
|
||||
if err != nil {
|
||||
return dbFilename
|
||||
}
|
||||
userDir := filepath.Join(home, ".local", "share", "routewatch")
|
||||
if err := os.MkdirAll(userDir, dirPermissions); err != nil {
|
||||
return dbFilename
|
||||
}
|
||||
|
||||
return filepath.Join(userDir, dbFilename)
|
||||
}
|
||||
|
||||
return filepath.Join(dbDir, dbFilename)
|
||||
}
|
||||
}
|
||||
|
||||
// NewConfig provides default database configuration
|
||||
func NewConfig() Config {
|
||||
return Config{
|
||||
Path: "routewatch.db",
|
||||
Path: getDefaultDatabasePath(),
|
||||
}
|
||||
}
|
||||
|
||||
@ -117,6 +159,15 @@ func New(logger *slog.Logger) (*Database, error) {
|
||||
|
||||
// NewWithConfig creates a new database connection with custom configuration
|
||||
func NewWithConfig(config Config, logger *slog.Logger) (*Database, error) {
|
||||
// Log database path
|
||||
logger.Info("Opening database", "path", config.Path)
|
||||
|
||||
// Ensure directory exists
|
||||
dir := filepath.Dir(config.Path)
|
||||
if err := os.MkdirAll(dir, dirPermissions); err != nil {
|
||||
return nil, fmt.Errorf("failed to create database directory: %w", err)
|
||||
}
|
||||
|
||||
// Add connection parameters for modernc.org/sqlite
|
||||
dsn := fmt.Sprintf("file:%s?_busy_timeout=5000&_journal_mode=WAL", config.Path)
|
||||
db, err := sql.Open("sqlite", dsn)
|
||||
|
@ -253,10 +253,7 @@ func (s *Streamer) stream(ctx context.Context) error {
|
||||
// Process BGP UPDATE messages
|
||||
// Will be handled by registered handlers
|
||||
case "RIS_PEER_STATE":
|
||||
s.logger.Info("RIS peer state change",
|
||||
"peer", msg.Peer,
|
||||
"peer_asn", msg.PeerASN,
|
||||
)
|
||||
// RIS peer state messages - silently ignore
|
||||
case "KEEPALIVE":
|
||||
// BGP keepalive messages - just log at debug level
|
||||
s.logger.Debug("BGP keepalive",
|
||||
@ -276,11 +273,7 @@ func (s *Streamer) stream(ctx context.Context) error {
|
||||
"peer_asn", msg.PeerASN,
|
||||
)
|
||||
case "STATE":
|
||||
// Peer state changes
|
||||
s.logger.Info("Peer state change",
|
||||
"peer", msg.Peer,
|
||||
"peer_asn", msg.PeerASN,
|
||||
)
|
||||
// Peer state changes - silently ignore
|
||||
default:
|
||||
fmt.Fprintf(
|
||||
os.Stderr,
|
||||
|
Loading…
Reference in New Issue
Block a user