47 lines
990 B
Go
47 lines
990 B
Go
package main
|
|
|
|
import (
|
|
"database/sql"
|
|
"log"
|
|
"os"
|
|
|
|
"git.wntrmute.dev/kyle/mcias/api"
|
|
_ "github.com/mattn/go-sqlite3"
|
|
"github.com/spf13/cobra"
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
var serverCmd = &cobra.Command{
|
|
Use: "server",
|
|
Short: "Start the MCIAS server",
|
|
Long: `Start the MCIAS server which provides authentication services.
|
|
The server will listen on the specified address and connect to the
|
|
specified database.`,
|
|
Run: func(cmd *cobra.Command, args []string) {
|
|
runServer()
|
|
},
|
|
}
|
|
|
|
func init() {
|
|
rootCmd.AddCommand(serverCmd)
|
|
}
|
|
|
|
func runServer() {
|
|
dbPath := viper.GetString("db")
|
|
addr := viper.GetString("addr")
|
|
|
|
logger := log.New(os.Stdout, "MCIAS: ", log.LstdFlags)
|
|
|
|
db, err := sql.Open("sqlite3", dbPath)
|
|
if err != nil {
|
|
logger.Fatalf("Failed to open database: %v", err)
|
|
}
|
|
defer db.Close()
|
|
|
|
server := api.NewServer(db, logger)
|
|
logger.Printf("Starting MCIAS server on %s", addr)
|
|
if err := server.Start(addr); err != nil {
|
|
logger.Fatalf("Server error: %v", err)
|
|
}
|
|
}
|