@@ -17,6 +17,7 @@ import { V1ResourceRequirements, V1Deployment } from "@kubernetes/client-node";
1717import { amqpwrapper } from "../amqpwrapper" ;
1818import { WebSocketServerClient } from "../WebSocketServerClient" ;
1919import { DBHelper } from "../DBHelper" ;
20+ import { WebSocketServer } from "../WebSocketServer" ;
2021var request = require ( "request" ) ;
2122var got = require ( "got" ) ;
2223
@@ -175,6 +176,12 @@ export class Message {
175176 case "stripemessage" :
176177 this . StripeMessage ( cli ) ;
177178 break ;
179+ case "dumpclients" :
180+ this . DumpClients ( cli ) ;
181+ break ;
182+ case "dumprabbitmq" :
183+ this . DumpRabbitmq ( cli ) ;
184+ break ;
178185 default :
179186 this . UnknownCommand ( cli ) ;
180187 break ;
@@ -2162,7 +2169,84 @@ export class Message {
21622169 }
21632170 this . Send ( cli ) ;
21642171 }
2165-
2172+ async DumpClients ( cli : WebSocketServerClient ) {
2173+ this . Reply ( ) ;
2174+ try {
2175+ const jwt = Crypt . rootToken ( ) ;
2176+ const known = await Config . db . query ( { _type : "socketclient" } , null , 5000 , 0 , null , "configclients" , jwt ) ;
2177+ for ( let i = 0 ; i < WebSocketServer . _clients . length ; i ++ ) {
2178+ let client = WebSocketServer . _clients [ i ] ;
2179+ let id = client . id ;
2180+ let exists = known . filter ( ( x : any ) => x . id == id ) ;
2181+ let item : any = {
2182+ id : client . id , user : client . user , clientagent : client . clientagent , clientversion : client . clientversion
2183+ , lastheartbeat : client . lastheartbeat , _type : "socketclient" , name : client . id
2184+ } ;
2185+ if ( client . user != null ) { item . name = client . user . name + "/" + client . clientagent + "/" + client . id ; }
2186+ if ( exists . length == 0 ) {
2187+ await Config . db . InsertOne ( item , "configclients" , 1 , false , jwt ) ;
2188+ } else {
2189+ item . _id = exists [ i ] . _id ;
2190+ await Config . db . _UpdateOne ( null , item , "configclients" , 1 , false , jwt ) ;
2191+ }
2192+ }
2193+ for ( let i = 0 ; i < known . length ; i ++ ) {
2194+ let client : any = known [ i ] ;
2195+ let id = client . id ;
2196+ let exists = WebSocketServer . _clients . filter ( ( x : any ) => x . id == id ) ;
2197+ if ( exists . length == 0 ) {
2198+ await Config . db . DeleteOne ( client . _id , "configclients" , jwt ) ;
2199+ }
2200+ }
2201+ } catch ( error ) {
2202+ this . data = "" ;
2203+ cli . _logger . error ( error ) ;
2204+ }
2205+ this . Send ( cli ) ;
2206+ }
2207+ async DumpRabbitmq ( cli : WebSocketServerClient ) {
2208+ this . Reply ( ) ;
2209+ try {
2210+ const jwt = Crypt . rootToken ( ) ;
2211+ const known = await Config . db . query ( { _type : "queue" } , null , 5000 , 0 , null , "configclients" , jwt ) ;
2212+ const queues = await amqpwrapper . getqueues ( Config . amqp_url , '/' ) ;
2213+ for ( let i = 0 ; i < queues . length ; i ++ ) {
2214+ let queue = queues [ i ] ;
2215+ let exists = known . filter ( ( x : any ) => x . queuename == queue . name ) ;
2216+ let item : any = {
2217+ name : queue . id , consumers : queue . consumers , consumer_details : queue . consumer_details , _type : "queue"
2218+ } ;
2219+ var consumers : number = 0 ;
2220+ if ( queue . consumers > 0 ) { consumers = queue . consumers ; }
2221+ if ( consumers == 0 ) {
2222+ if ( queue . consumer_details != null && queue . consumer_details . length > 0 ) {
2223+ consumers = queue . consumer_details . length ;
2224+ }
2225+ }
2226+ item . queuename = queue . name ;
2227+ item . consumers = consumers ;
2228+ item . name = queue . name + "(" + consumers + ")" ;
2229+ if ( exists . length == 0 ) {
2230+ await Config . db . InsertOne ( item , "configclients" , 1 , false , jwt ) ;
2231+ } else {
2232+ item . _id = exists [ i ] . _id ;
2233+ await Config . db . _UpdateOne ( null , item , "configclients" , 1 , false , jwt ) ;
2234+ }
2235+ }
2236+ for ( let i = 0 ; i < known . length ; i ++ ) {
2237+ let queue : any = known [ i ] ;
2238+ let id = queue . id ;
2239+ let exists = queues . filter ( ( x : any ) => x . queuename == queue . name ) ;
2240+ if ( exists . length == 0 ) {
2241+ await Config . db . DeleteOne ( queue . _id , "configclients" , jwt ) ;
2242+ }
2243+ }
2244+ } catch ( error ) {
2245+ this . data = "" ;
2246+ cli . _logger . error ( error ) ;
2247+ }
2248+ this . Send ( cli ) ;
2249+ }
21662250}
21672251
21682252export class JSONfn {
0 commit comments