Skip to content

Commit

Permalink
Merge pull request #466 from cquiroz/SEQNG-514
Browse files Browse the repository at this point in the history
SEQNG-514: Add details to log
  • Loading branch information
cquiroz authored Feb 9, 2018
2 parents 0f255c6 + f9cb99c commit 2eb7192
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ package edu.gemini.seqexec.web.client

import edu.gemini.seqexec.web.client.components.{SeqexecStyles, SeqexecUI}
import edu.gemini.seqexec.web.client.services.log.{AjaxHandler, ConsoleHandler}
import edu.gemini.seqexec.web.client.services.SeqexecWebClient
import edu.gemini.seqexec.web.client.model.Pages
import edu.gemini.seqexec.web.client.actions.Initialize
import edu.gemini.seqexec.web.client.circuit.SeqexecCircuit
Expand Down Expand Up @@ -34,14 +35,15 @@ object SeqexecApp {
System.setProperty("java.util.logging.SimpleFormatter.format", defaultFmt)
}

@SuppressWarnings(Array("org.wartremover.warts.NonUnitStatements"))
def setupLogger: IO[Unit] = IO {
// Using the root logger setup the handlers
val rootLogger = Logger.getLogger("edu")
rootLogger.addHandler(new ConsoleHandler(Level.INFO))
rootLogger.addHandler(new AjaxHandler(Level.INFO))

val log = Logger.getLogger("edu.gemini.seqexec.web.client.SeqexecApp")
log.info(s"Starting Seqexec Web Client version: ${OcsBuildInfo.version}")
SeqexecWebClient.start()
()
}

def setupCss: IO[Unit] = IO {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -251,4 +251,12 @@ object SeqexecWebClient {
responseType = "arraybuffer",
data = Pickle.intoBytes(LogMessage.fromLogRecord(record))
).map(_.responseText)

/**
* Start client session, it is just informative
*/
def start(): Future[String] =
Ajax.post(
url = s"$baseUrl/start"
).map(_.responseText)
}
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ class SeqexecUIApiRoutes(auth: AuthenticationService, events: (server.EventQueue
case \/-(user) =>
// Log who logged in
// Note that the call to read a remoteAddr may do a DNS lookup
Task.delay(clientLog.info(s"User ${user.displayName} logged in from <${req.remoteHost.getOrElse("Unknown")}>")) *>
Task.delay(clientLog.info(s"${user.displayName} logged in from <${req.remoteHost.getOrElse("Unknown")}>")) *>
// if successful set a cookie
httpAuthentication.loginCookie(user) >>= { cookie => Ok(user).addCookie(cookie) }
case -\/(_) =>
Expand All @@ -81,16 +81,21 @@ class SeqexecUIApiRoutes(auth: AuthenticationService, events: (server.EventQueue

}}

// Don't gzip log responses
val logService: HttpService = HttpService {
case req @ POST -> Root / "seqexec" / "log" =>
req.decode[LogMessage] { msg =>
// Always return ok
Task.delay(clientLog.info(s"Client ${req.remoteAddr}: ${msg.msg}")) *> Ok()
}
}
val protectedServices: AuthedService[AuthResult] =
AuthedService {
case auth @ POST -> Root / "seqexec" / "log" as user =>
auth.req.decode[LogMessage] { msg =>
val userName = user.fold(_ => "Anonymous", _.displayName)
// Always return ok
// Use remoteAddr to avoid an expensive DNS lookup
Task.delay(clientLog.info(s"$userName on <${auth.req.remoteAddr.getOrElse("Unknown")}>: ${msg.msg}")) *> Ok()
}

case auth @ POST -> Root / "seqexec" / "start" as user =>
val userName = user.fold(_ => "Anonymous", _.displayName)
// Always return ok
Task.delay(clientLog.info(s"$userName connected from <${auth.req.remoteHost.getOrElse("Unknown")}>")) *> Ok()

case GET -> Root / "seqexec" / "events" as user =>
// Stream seqexec events to clients and a ping
def anonymize(e: SeqexecEvent) = {
Expand Down Expand Up @@ -126,5 +131,5 @@ class SeqexecUIApiRoutes(auth: AuthenticationService, events: (server.EventQueue
}
}

def service: Service[Request, MaybeResponse] = publicService |+| TokenRefresher(httpAuthentication, GZip(httpAuthentication.optAuth(protectedServices))) |+| logService
def service: Service[Request, MaybeResponse] = publicService |+| TokenRefresher(httpAuthentication, GZip(httpAuthentication.optAuth(protectedServices)))
}

0 comments on commit 2eb7192

Please sign in to comment.