diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c index 746092885a2f54767fb3aca8ddabd0f242ed3cf8..754050900a85f3eafffa4d9ab85d32e5d0b18ed3 100644 --- a/src/sbbs3/services.c +++ b/src/sbbs3/services.c @@ -462,11 +462,20 @@ js_ErrorReporter(JSContext *cx, const char *message, JSErrorReport *report) lprintf("%04d %s !JavaScript %s%s%s: %s",sock,prot,warning,file,line,message); } +static JSClass js_server_class = { + "Server",0, + JS_PropertyStub,JS_PropertyStub,JS_PropertyStub,JS_PropertyStub, + JS_EnumerateStub,JS_ResolveStub,JS_ConvertStub,JS_FinalizeStub +}; + static JSContext* js_initcx(JSRuntime* js_runtime, SOCKET sock, service_client_t* service_client, JSObject** glob) { + char ver[256]; JSContext* js_cx; JSObject* js_glob; + JSObject* server; + jsval val; BOOL success=FALSE; // lprintf("%04d JavaScript: Initializing context",sock); @@ -517,6 +526,20 @@ js_initcx(JSRuntime* js_runtime, SOCKET sock, service_client_t* service_client, // lprintf("%04d JavaScript: Initializing System object",sock); if(js_CreateSystemObject(js_cx, js_glob, &scfg, uptime)==NULL) break; + + /* server object */ + if((server=JS_DefineObject(js_cx, js_glob, "server", &js_server_class + ,NULL,0))==NULL) + break; + + sprintf(ver,"Synchronet Services v%s",SERVICES_VERSION); + val = STRING_TO_JSVAL(JS_NewStringCopyZ(js_cx, ver)); + if(!JS_SetProperty(js_cx, server, "version", &val)) + break; + + val = STRING_TO_JSVAL(JS_NewStringCopyZ(js_cx, services_ver())); + if(!JS_SetProperty(js_cx, server, "version_detail", &val)) + break; if(glob!=NULL) *glob=js_glob;