فهرست منبع

colored messages

hmt 3 سال پیش
والد
کامیت
2478648688
3فایلهای تغییر یافته به همراه19 افزوده شده و 28 حذف شده
  1. 13 12
      app.ts
  2. 0 2
      bbb.ts
  3. 6 14
      deps.ts

+ 13 - 12
app.ts

@@ -1,6 +1,9 @@
-import { opine, ErrorRequestHandler, Router, createHash, server, createError } from "./deps.ts";
+import { opine, ErrorRequestHandler, Router, createHash, server, createError, Color } from "./deps.ts";
 import { BBB } from './bbb.ts';
 
+const date = () => new Date().toLocaleTimeString('de')
+const VERSION = 'v1.3.0'
+console.log(date() + Color.green(` Starting tinyscale ${VERSION}`))
 // give your tinyscale server a secret so it looks like a BBB server
 const secret = Deno.env.get("TINYSCALE_SECRET") || ""
 if (!secret) throw "No secret set for tinyscale"
@@ -10,7 +13,6 @@ const file: string = await Deno.readTextFile('servers.json')
 const servers: server[] = JSON.parse(file)
 // create an iterator so that we can treat all servers equally
 let iterator = servers[Symbol.iterator]();
-let current_server: server
 console.log(servers)
 console.log('Checking servers first …')
 // check servers for connectivity and if the secret is correct
@@ -23,15 +25,14 @@ servers.forEach(async s => {
     if (!res.ok) throw "Connection error. Please check your host configuration"
     const body = await res.text()
     const ok = body.includes('SUCCESS')
-    console.log(`${s.host} is ${ok ? 'ok' : 'misconfigured. Please check your secret in servers.json'}`)
+    console.log(`${s.host} is ${ok ? Color.green('ok') : Color.red('misconfigured. Please check your secret in servers.json')}`)
     if (!ok) throw "Configuration error. Exiting …"
   } catch (e) {
     // exit tinyscale if an error is encountered in servers.json
-    console.log(e)
+    console.log(Color.brightRed(e))
     Deno.exit(1);
   }
 })
-
 // pick the next server, using an iterator to cycle through all servers available
 function get_available_server(): server {
   let candidate = iterator.next()
@@ -39,16 +40,17 @@ function get_available_server(): server {
     iterator = servers[Symbol.iterator]()
     candidate = iterator.next()
   }
-  console.log(`Using next server ${candidate.value.host}`)
-  current_server = candidate.value
-  return current_server;
+  console.log(`Using next server ${Color.green(candidate.value.host)}`)
+  return candidate.value;
 }
 
 const router = Router()
 // the api itself answering to every call
 router.all("/:call", async (req, res, next) => {
   const handler = new BBB(req)
+  console.log(`${date()} New call to ${Color.green(handler.call)}`)
   if (!handler.authenticated(secret)) {
+    console.log(`${Color.red("Rejected incoming call to "+handler.call)}`)
     next(createError(401))
     return
   }
@@ -56,9 +58,8 @@ router.all("/:call", async (req, res, next) => {
   try {
     server = await handler.find_meeting_id(servers)
   } catch (e) {
-    console.log(`Found no server with Meeting ID ${handler.meeting_id}`)
-    if (handler.call === 'create') server = get_available_server()
-    else server = current_server
+    console.log(`Found no server with Meeting ID ${Color.yellow(handler.meeting_id)}`)
+    server = get_available_server()
   }
   console.log(`Redirecting to ${server.host}`)
   const redirect = handler.rewritten_query(server)
@@ -88,7 +89,7 @@ router.get("/", (req, res, next) => {
 const errorHandler: ErrorRequestHandler = (err, req, res, next) => {
   res.setStatus(err.status ?? 500);
   res.end();
-  console.log(res.status, req.originalUrl)
+  console.log(`${Color.red(`${res.status}`)} ${req.originalUrl}`)
 };
 
 const app = opine()

+ 0 - 2
bbb.ts

@@ -15,7 +15,6 @@ export class BBB {
     this.params = this.query.replace(/[?&]?checksum.*$/, '')
     this.meeting_id = req.query.meetingID
     this.url = req.originalUrl
-    console.log(`New call to ${this.call}`)
   }
   // generate a checksum for various calls
   generate_checksum = (secret: string, call: string = this.call, params: string = this.params) => {
@@ -37,7 +36,6 @@ export class BBB {
   authenticated = (secret: string) => {
     const checksum = this.generate_checksum(secret)
     const ok = checksum === this.checksum_incoming
-    if (!ok) console.log(`Rejected incoming call to ${this.call}`)
     return ok
   }
   find_meeting_id = (servers: server[]): Promise<server> => {

+ 6 - 14
deps.ts

@@ -1,15 +1,7 @@
-export {
-  join,
-} from "https://deno.land/std@0.95.0/path/mod.ts";
-export {
-  opine,
-  Router,
-} from "https://deno.land/x/opine@1.3.2/mod.ts";
-export type {
-  ErrorRequestHandler,
-  Request,
-  ParamsDictionary
- } from "https://deno.land/x/opine@1.3.2/mod.ts";
-export interface server { host: string; secret: string };
-export { createError } from "https://deno.land/x/http_errors@3.0.0/mod.ts";
+export { join, } from "https://deno.land/std@0.95.0/path/mod.ts";
 export { createHash } from "https://deno.land/std@0.95.0/hash/mod.ts";
+export * as Color from "https://deno.land/std@0.95.0/fmt/colors.ts";
+export { createError } from "https://deno.land/x/http_errors@3.0.0/mod.ts";
+export { opine, Router } from "https://deno.land/x/opine@1.3.2/mod.ts";
+export type { ErrorRequestHandler, Request, ParamsDictionary } from "https://deno.land/x/opine@1.3.2/mod.ts";
+export interface server { host: string; secret: string };