|
|
@@ -44,6 +44,7 @@ var (
|
|
|
|
|
|
// switch on ws event cases
|
|
|
func WsHandler(w http.ResponseWriter, r *http.Request) {
|
|
|
+ conf := config.Conf()
|
|
|
conn, err := upgrader.Upgrade(w, r, nil)
|
|
|
if err != nil {
|
|
|
config.Logger.Error(fmt.Sprintf("Couldn't upgrade websocket connection: %v", err))
|
|
|
@@ -105,38 +106,50 @@ func WsHandler(w http.ResponseWriter, r *http.Request) {
|
|
|
continue
|
|
|
}
|
|
|
payload.Payload = structs.WsLoginPayload{}
|
|
|
- switch payload.Type {
|
|
|
- case "login":
|
|
|
- if err = loginHandler(conn, msg, payload); err != nil {
|
|
|
- config.Logger.Error(fmt.Sprintf("%v", err))
|
|
|
- }
|
|
|
- case "setup":
|
|
|
- config.Logger.Info("Setup")
|
|
|
- // setup.Setup(payload)
|
|
|
- case "new_ship":
|
|
|
- config.Logger.Info("New ship")
|
|
|
- case "pier_upload":
|
|
|
- config.Logger.Info("Pier upload")
|
|
|
- case "password":
|
|
|
- config.Logger.Info("Password")
|
|
|
- case "system":
|
|
|
- config.Logger.Info("System")
|
|
|
- case "startram":
|
|
|
- config.Logger.Info("StarTram")
|
|
|
- case "urbit":
|
|
|
- config.Logger.Info("Urbit")
|
|
|
- case "support":
|
|
|
- if err = supportHandler(msg, payload, r, conn); err != nil {
|
|
|
- config.Logger.Error(fmt.Sprintf("%v", err))
|
|
|
+ token := map[string]string{
|
|
|
+ "id": payload.Token.ID,
|
|
|
+ "token": payload.Token.Token,
|
|
|
+ }
|
|
|
+ if auth.CheckToken(token, conn, r, conf.FirstBoot) {
|
|
|
+ switch payload.Type {
|
|
|
+ case "new_ship":
|
|
|
+ config.Logger.Info("New ship")
|
|
|
+ case "pier_upload":
|
|
|
+ config.Logger.Info("Pier upload")
|
|
|
+ case "password":
|
|
|
+ config.Logger.Info("Password")
|
|
|
+ case "system":
|
|
|
+ config.Logger.Info("System")
|
|
|
+ case "startram":
|
|
|
+ config.Logger.Info("StarTram")
|
|
|
+ case "urbit":
|
|
|
+ config.Logger.Info("Urbit")
|
|
|
+ case "support":
|
|
|
+ if err = supportHandler(msg, payload, r, conn); err != nil {
|
|
|
+ config.Logger.Error(fmt.Sprintf("%v", err))
|
|
|
+ }
|
|
|
+ case "broadcast":
|
|
|
+ if err := broadcast.BroadcastToClients(); err != nil {
|
|
|
+ errmsg := fmt.Sprintf("Unable to broadcast to peer(s): %v", err)
|
|
|
+ config.Logger.Error(errmsg)
|
|
|
+ }
|
|
|
+ default:
|
|
|
+ errmsg := fmt.Sprintf("Unknown request type: %s", payload.Type)
|
|
|
+ config.Logger.Warn(errmsg)
|
|
|
}
|
|
|
- case "broadcast":
|
|
|
- if err := broadcast.BroadcastToClients(); err != nil {
|
|
|
- errmsg := fmt.Sprintf("Unable to broadcast to peer(s): %v", err)
|
|
|
- config.Logger.Error(errmsg)
|
|
|
+ } else {
|
|
|
+ switch payload.Type {
|
|
|
+ case "login":
|
|
|
+ if err = loginHandler(conn, msg, payload); err != nil {
|
|
|
+ config.Logger.Error(fmt.Sprintf("%v", err))
|
|
|
+ }
|
|
|
+ case "setup":
|
|
|
+ config.Logger.Info("Setup")
|
|
|
+ // setup.Setup(payload)
|
|
|
+ default:
|
|
|
+ errmsg := fmt.Sprintf("Unknown request type: %s", payload.Type)
|
|
|
+ config.Logger.Warn(errmsg)
|
|
|
}
|
|
|
- default:
|
|
|
- errmsg := fmt.Sprintf("Unknown request type: %s", payload.Type)
|
|
|
- config.Logger.Warn(errmsg)
|
|
|
}
|
|
|
}
|
|
|
// default to unauth
|
|
|
@@ -172,18 +185,17 @@ func loginHandler(conn *websocket.Conn, msg []byte, payload structs.WsPayload) e
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
-
|
|
|
// broadcast the unauth payload
|
|
|
func unauthHandler(conn *websocket.Conn, r *http.Request) {
|
|
|
blob := structs.UnauthBroadcast{
|
|
|
- Type: "structure",
|
|
|
- AuthLevel: "unauthorized",
|
|
|
- Login: struct {
|
|
|
- Remainder int `json:"remainder"`
|
|
|
- }{
|
|
|
- Remainder: 0,
|
|
|
- },
|
|
|
- }
|
|
|
+ Type: "structure",
|
|
|
+ AuthLevel: "unauthorized",
|
|
|
+ Login: struct {
|
|
|
+ Remainder int `json:"remainder"`
|
|
|
+ }{
|
|
|
+ Remainder: 0,
|
|
|
+ },
|
|
|
+ }
|
|
|
resp, err := json.Marshal(blob)
|
|
|
if err != nil {
|
|
|
config.Logger.Error(fmt.Sprintf("Error unmarshalling message: %v", err))
|